Commit 7597cdc0 authored by Ingo Molnar's avatar Ingo Molnar

Merge tag 'efi-urgent' of...

Merge tag 'efi-urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi into efi/urgent

Pull EFI fixes from Matt Fleming:

 * Fix a boot hang on large memory machines (multiple terabyte) caused
   by type conversion errors in the x86 PAT code (Matt Fleming)
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parents d2ffb010 12976670
...@@ -917,11 +917,11 @@ static void populate_pte(struct cpa_data *cpa, ...@@ -917,11 +917,11 @@ static void populate_pte(struct cpa_data *cpa,
} }
} }
static int populate_pmd(struct cpa_data *cpa, static long populate_pmd(struct cpa_data *cpa,
unsigned long start, unsigned long end, unsigned long start, unsigned long end,
unsigned num_pages, pud_t *pud, pgprot_t pgprot) unsigned num_pages, pud_t *pud, pgprot_t pgprot)
{ {
unsigned int cur_pages = 0; long cur_pages = 0;
pmd_t *pmd; pmd_t *pmd;
pgprot_t pmd_pgprot; pgprot_t pmd_pgprot;
...@@ -991,12 +991,12 @@ static int populate_pmd(struct cpa_data *cpa, ...@@ -991,12 +991,12 @@ static int populate_pmd(struct cpa_data *cpa,
return num_pages; return num_pages;
} }
static int populate_pud(struct cpa_data *cpa, unsigned long start, pgd_t *pgd, static long populate_pud(struct cpa_data *cpa, unsigned long start, pgd_t *pgd,
pgprot_t pgprot) pgprot_t pgprot)
{ {
pud_t *pud; pud_t *pud;
unsigned long end; unsigned long end;
int cur_pages = 0; long cur_pages = 0;
pgprot_t pud_pgprot; pgprot_t pud_pgprot;
end = start + (cpa->numpages << PAGE_SHIFT); end = start + (cpa->numpages << PAGE_SHIFT);
...@@ -1052,7 +1052,7 @@ static int populate_pud(struct cpa_data *cpa, unsigned long start, pgd_t *pgd, ...@@ -1052,7 +1052,7 @@ static int populate_pud(struct cpa_data *cpa, unsigned long start, pgd_t *pgd,
/* Map trailing leftover */ /* Map trailing leftover */
if (start < end) { if (start < end) {
int tmp; long tmp;
pud = pud_offset(pgd, start); pud = pud_offset(pgd, start);
if (pud_none(*pud)) if (pud_none(*pud))
...@@ -1078,7 +1078,7 @@ static int populate_pgd(struct cpa_data *cpa, unsigned long addr) ...@@ -1078,7 +1078,7 @@ static int populate_pgd(struct cpa_data *cpa, unsigned long addr)
pgprot_t pgprot = __pgprot(_KERNPG_TABLE); pgprot_t pgprot = __pgprot(_KERNPG_TABLE);
pud_t *pud = NULL; /* shut up gcc */ pud_t *pud = NULL; /* shut up gcc */
pgd_t *pgd_entry; pgd_t *pgd_entry;
int ret; long ret;
pgd_entry = cpa->pgd + pgd_index(addr); pgd_entry = cpa->pgd + pgd_index(addr);
...@@ -1327,7 +1327,8 @@ static int cpa_process_alias(struct cpa_data *cpa) ...@@ -1327,7 +1327,8 @@ static int cpa_process_alias(struct cpa_data *cpa)
static int __change_page_attr_set_clr(struct cpa_data *cpa, int checkalias) static int __change_page_attr_set_clr(struct cpa_data *cpa, int checkalias)
{ {
int ret, numpages = cpa->numpages; unsigned long numpages = cpa->numpages;
int ret;
while (numpages) { while (numpages) {
/* /*
......
...@@ -245,7 +245,7 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages) ...@@ -245,7 +245,7 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
* text and allocate a new stack because we can't rely on the * text and allocate a new stack because we can't rely on the
* stack pointer being < 4GB. * stack pointer being < 4GB.
*/ */
if (!IS_ENABLED(CONFIG_EFI_MIXED)) if (!IS_ENABLED(CONFIG_EFI_MIXED) || efi_is_native())
return 0; return 0;
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment