Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: xen: fix address truncation in pte mfn<->pfn conversion arch/x86/mm/init_64.c: early_memtest(): fix types x86: fix Intel Mac booting with EFI
This commit is contained in:
commit
b8a0b6ccf2
|
@ -49,13 +49,13 @@ void efi_call_phys_prelog(void)
|
||||||
local_irq_save(efi_rt_eflags);
|
local_irq_save(efi_rt_eflags);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If I don't have PSE, I should just duplicate two entries in page
|
* If I don't have PAE, I should just duplicate two entries in page
|
||||||
* directory. If I have PSE, I just need to duplicate one entry in
|
* directory. If I have PAE, I just need to duplicate one entry in
|
||||||
* page directory.
|
* page directory.
|
||||||
*/
|
*/
|
||||||
cr4 = read_cr4();
|
cr4 = read_cr4();
|
||||||
|
|
||||||
if (cr4 & X86_CR4_PSE) {
|
if (cr4 & X86_CR4_PAE) {
|
||||||
efi_bak_pg_dir_pointer[0].pgd =
|
efi_bak_pg_dir_pointer[0].pgd =
|
||||||
swapper_pg_dir[pgd_index(0)].pgd;
|
swapper_pg_dir[pgd_index(0)].pgd;
|
||||||
swapper_pg_dir[0].pgd =
|
swapper_pg_dir[0].pgd =
|
||||||
|
@ -93,7 +93,7 @@ void efi_call_phys_epilog(void)
|
||||||
|
|
||||||
cr4 = read_cr4();
|
cr4 = read_cr4();
|
||||||
|
|
||||||
if (cr4 & X86_CR4_PSE) {
|
if (cr4 & X86_CR4_PAE) {
|
||||||
swapper_pg_dir[pgd_index(0)].pgd =
|
swapper_pg_dir[pgd_index(0)].pgd =
|
||||||
efi_bak_pg_dir_pointer[0].pgd;
|
efi_bak_pg_dir_pointer[0].pgd;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -506,7 +506,7 @@ early_param("memtest", parse_memtest);
|
||||||
|
|
||||||
static void __init early_memtest(unsigned long start, unsigned long end)
|
static void __init early_memtest(unsigned long start, unsigned long end)
|
||||||
{
|
{
|
||||||
unsigned long t_start, t_size;
|
u64 t_start, t_size;
|
||||||
unsigned pattern;
|
unsigned pattern;
|
||||||
|
|
||||||
if (!memtest_pattern)
|
if (!memtest_pattern)
|
||||||
|
@ -525,8 +525,9 @@ static void __init early_memtest(unsigned long start, unsigned long end)
|
||||||
if (t_start + t_size > end)
|
if (t_start + t_size > end)
|
||||||
t_size = end - t_start;
|
t_size = end - t_start;
|
||||||
|
|
||||||
printk(KERN_CONT "\n %016lx - %016lx pattern %d",
|
printk(KERN_CONT "\n %016llx - %016llx pattern %d",
|
||||||
t_start, t_start + t_size, pattern);
|
(unsigned long long)t_start,
|
||||||
|
(unsigned long long)t_start + t_size, pattern);
|
||||||
|
|
||||||
memtest(t_start, t_size, pattern);
|
memtest(t_start, t_size, pattern);
|
||||||
|
|
||||||
|
|
|
@ -185,7 +185,7 @@ static pteval_t pte_mfn_to_pfn(pteval_t val)
|
||||||
if (val & _PAGE_PRESENT) {
|
if (val & _PAGE_PRESENT) {
|
||||||
unsigned long mfn = (val & PTE_MASK) >> PAGE_SHIFT;
|
unsigned long mfn = (val & PTE_MASK) >> PAGE_SHIFT;
|
||||||
pteval_t flags = val & ~PTE_MASK;
|
pteval_t flags = val & ~PTE_MASK;
|
||||||
val = (mfn_to_pfn(mfn) << PAGE_SHIFT) | flags;
|
val = ((pteval_t)mfn_to_pfn(mfn) << PAGE_SHIFT) | flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
|
@ -196,7 +196,7 @@ static pteval_t pte_pfn_to_mfn(pteval_t val)
|
||||||
if (val & _PAGE_PRESENT) {
|
if (val & _PAGE_PRESENT) {
|
||||||
unsigned long pfn = (val & PTE_MASK) >> PAGE_SHIFT;
|
unsigned long pfn = (val & PTE_MASK) >> PAGE_SHIFT;
|
||||||
pteval_t flags = val & ~PTE_MASK;
|
pteval_t flags = val & ~PTE_MASK;
|
||||||
val = (pfn_to_mfn(pfn) << PAGE_SHIFT) | flags;
|
val = ((pteval_t)pfn_to_mfn(pfn) << PAGE_SHIFT) | flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
|
|
Loading…
Reference in New Issue