Pull EFI fixes from Thomas Gleixner: "Two fixes for EFI/PAT: - a 32bit overflow bug in the PAT code which was unearthed by the large EFI mappings - prevent a boot hang on large systems when EFI mixed mode is enabled but not used" * 'efi-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/efi: Only map RAM into EFI page tables if in mixed-mode x86/mm/pat: Prevent hang during boot when mapping pages
Unified · Split
| @@ -917,11 +917,11 @@ static void populate_pte(struct cpa_data *cpa, · 916 unmodified lines | ||
| 917 | 917 | } |
| 918 | 918 | } |
| 919 | 919 | |
| 920 | −static int populate_pmd(struct cpa_data *cpa, | |
| 921 | − unsigned long start, unsigned long end, | |
| 922 | − unsigned num_pages, pud_t *pud, pgprot_t pgprot) | |
| 920 | +static long populate_pmd(struct cpa_data *cpa, | |
| 921 | + unsigned long start, unsigned long end, | |
| 922 | + unsigned num_pages, pud_t *pud, pgprot_t pgprot) | |
| 923 | 923 | { |
| 924 | − unsigned int cur_pages = 0; | |
| 924 | + long cur_pages = 0; | |
| 925 | 925 | pmd_t *pmd; |
| 926 | 926 | pgprot_t pmd_pgprot; |
| 927 | 927 | |
| @@ -991,12 +991,12 @@ static int populate_pmd(struct cpa_data *cpa, · 63 unmodified lines | ||
| 991 | 991 | return num_pages; |
| 992 | 992 | } |
| 993 | 993 | |
| 994 | −static int populate_pud(struct cpa_data *cpa, unsigned long start, pgd_t *pgd, | |
| 995 | − pgprot_t pgprot) | |
| 994 | +static long populate_pud(struct cpa_data *cpa, unsigned long start, pgd_t *pgd, | |
| 995 | + pgprot_t pgprot) | |
| 996 | 996 | { |
| 997 | 997 | pud_t *pud; |
| 998 | 998 | unsigned long end; |
| 999 | − int cur_pages = 0; | |
| 999 | + long cur_pages = 0; | |
| 1000 | 1000 | pgprot_t pud_pgprot; |
| 1001 | 1001 | |
| 1002 | 1002 | end = start + (cpa->numpages << PAGE_SHIFT); |
| @@ -1052,7 +1052,7 @@ static int populate_pud(struct cpa_data *cpa, unsigned long start, pgd_t *pgd, · 49 unmodified lines | ||
| 1052 | 1052 | |
| 1053 | 1053 | /* Map trailing leftover */ |
| 1054 | 1054 | if (start < end) { |
| 1055 | − int tmp; | |
| 1055 | + long tmp; | |
| 1056 | 1056 | |
| 1057 | 1057 | pud = pud_offset(pgd, start); |
| 1058 | 1058 | if (pud_none(*pud)) |
| @@ -1078,7 +1078,7 @@ static int populate_pgd(struct cpa_data *cpa, unsigned long addr) · 19 unmodified lines | ||
| 1078 | 1078 | pgprot_t pgprot = __pgprot(_KERNPG_TABLE); |
| 1079 | 1079 | pud_t *pud = NULL; /* shut up gcc */ |
| 1080 | 1080 | pgd_t *pgd_entry; |
| 1081 | − int ret; | |
| 1081 | + long ret; | |
| 1082 | 1082 | |
| 1083 | 1083 | pgd_entry = cpa->pgd + pgd_index(addr); |
| 1084 | 1084 | |
| @@ -1327,7 +1327,8 @@ static int cpa_process_alias(struct cpa_data *cpa) · 242 unmodified lines | ||
| 1327 | 1327 | |
| 1328 | 1328 | static int __change_page_attr_set_clr(struct cpa_data *cpa, int checkalias) |
| 1329 | 1329 | { |
| 1330 | − int ret, numpages = cpa->numpages; | |
| 1330 | + unsigned long numpages = cpa->numpages; | |
| 1331 | + int ret; | |
| 1331 | 1332 | |
| 1332 | 1333 | while (numpages) { |
| 1333 | 1334 | /* |
| @@ -245,7 +245,7 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages) · 244 unmodified lines | ||
| 245 | 245 | * text and allocate a new stack because we can't rely on the |
| 246 | 246 | * stack pointer being < 4GB. |
| 247 | 247 | */ |
| 248 | − if (!IS_ENABLED(CONFIG_EFI_MIXED)) | |
| 248 | + if (!IS_ENABLED(CONFIG_EFI_MIXED) || efi_is_native()) | |
| 249 | 249 | return 0; |
| 250 | 250 | |
| 251 | 251 | /* |