| .. | .. | 
|---|
| 40 | 40 |  #ifdef CONFIG_X86_64 | 
|---|
| 41 | 41 |  # define BOOT_STACK_SIZE	0x4000 | 
|---|
| 42 | 42 |   | 
|---|
| 43 |  | -# define BOOT_INIT_PGT_SIZE	(6*4096)  | 
|---|
| 44 |  | -# ifdef CONFIG_RANDOMIZE_BASE  | 
|---|
| 45 | 43 |  /* | 
|---|
| 46 |  | - * Assuming all cross the 512GB boundary:  | 
|---|
| 47 |  | - * 1 page for level4  | 
|---|
| 48 |  | - * (2+2)*4 pages for kernel, param, cmd_line, and randomized kernel  | 
|---|
| 49 |  | - * 2 pages for first 2M (video RAM: CONFIG_X86_VERBOSE_BOOTUP).  | 
|---|
| 50 |  | - * Total is 19 pages.  | 
|---|
 | 44 | + * Used by decompressor's startup_32() to allocate page tables for identity  | 
|---|
 | 45 | + * mapping of the 4G of RAM in 4-level paging mode:  | 
|---|
 | 46 | + * - 1 level4 table;  | 
|---|
 | 47 | + * - 1 level3 table;  | 
|---|
 | 48 | + * - 4 level2 table that maps everything with 2M pages;  | 
|---|
 | 49 | + *  | 
|---|
 | 50 | + * The additional level5 table needed for 5-level paging is allocated from  | 
|---|
 | 51 | + * trampoline_32bit memory.  | 
|---|
| 51 | 52 |   */ | 
|---|
| 52 |  | -#  ifdef CONFIG_X86_VERBOSE_BOOTUP  | 
|---|
| 53 |  | -#   define BOOT_PGT_SIZE	(19*4096)  | 
|---|
| 54 |  | -#  else /* !CONFIG_X86_VERBOSE_BOOTUP */  | 
|---|
| 55 |  | -#   define BOOT_PGT_SIZE	(17*4096)  | 
|---|
| 56 |  | -#  endif  | 
|---|
| 57 |  | -# else /* !CONFIG_RANDOMIZE_BASE */  | 
|---|
| 58 |  | -#  define BOOT_PGT_SIZE		BOOT_INIT_PGT_SIZE  | 
|---|
| 59 |  | -# endif  | 
|---|
 | 53 | +# define BOOT_INIT_PGT_SIZE	(6*4096)  | 
|---|
 | 54 | +  | 
|---|
 | 55 | +/*  | 
|---|
 | 56 | + * Total number of page tables kernel_add_identity_map() can allocate,  | 
|---|
 | 57 | + * including page tables consumed by startup_32().  | 
|---|
 | 58 | + *  | 
|---|
 | 59 | + * Worst-case scenario:  | 
|---|
 | 60 | + *  - 5-level paging needs 1 level5 table;  | 
|---|
 | 61 | + *  - KASLR needs to map kernel, boot_params, cmdline and randomized kernel,  | 
|---|
 | 62 | + *    assuming all of them cross 256T boundary:  | 
|---|
 | 63 | + *    + 4*2 level4 table;  | 
|---|
 | 64 | + *    + 4*2 level3 table;  | 
|---|
 | 65 | + *    + 4*2 level2 table;  | 
|---|
 | 66 | + *  - X86_VERBOSE_BOOTUP needs to map the first 2M (video RAM):  | 
|---|
 | 67 | + *    + 1 level4 table;  | 
|---|
 | 68 | + *    + 1 level3 table;  | 
|---|
 | 69 | + *    + 1 level2 table;  | 
|---|
 | 70 | + * Total: 28 tables  | 
|---|
 | 71 | + *  | 
|---|
 | 72 | + * Add 4 spare table in case decompressor touches anything beyond what is  | 
|---|
 | 73 | + * accounted above. Warn if it happens.  | 
|---|
 | 74 | + */  | 
|---|
 | 75 | +# define BOOT_PGT_SIZE_WARN	(28*4096)  | 
|---|
 | 76 | +# define BOOT_PGT_SIZE		(32*4096)  | 
|---|
| 60 | 77 |   | 
|---|
| 61 | 78 |  #else /* !CONFIG_X86_64 */ | 
|---|
| 62 | 79 |  # define BOOT_STACK_SIZE	0x1000 | 
|---|