Merge branch 'x86/urgent' into x86/core
Conflicts: arch/x86/include/asm/fixmap_64.h Semantic merge: arch/x86/include/asm/fixmap.h Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
@@ -469,7 +469,7 @@ void __init efi_enter_virtual_mode(void)
|
||||
efi_memory_desc_t *md;
|
||||
efi_status_t status;
|
||||
unsigned long size;
|
||||
u64 end, systab, addr, npages;
|
||||
u64 end, systab, addr, npages, end_pfn;
|
||||
void *p, *va;
|
||||
|
||||
efi.systab = NULL;
|
||||
@@ -481,7 +481,10 @@ void __init efi_enter_virtual_mode(void)
|
||||
size = md->num_pages << EFI_PAGE_SHIFT;
|
||||
end = md->phys_addr + size;
|
||||
|
||||
if (PFN_UP(end) <= max_low_pfn_mapped)
|
||||
end_pfn = PFN_UP(end);
|
||||
if (end_pfn <= max_low_pfn_mapped
|
||||
|| (end_pfn > (1UL << (32 - PAGE_SHIFT))
|
||||
&& end_pfn <= max_pfn_mapped))
|
||||
va = __va(md->phys_addr);
|
||||
else
|
||||
va = efi_ioremap(md->phys_addr, size);
|
||||
|
@@ -100,24 +100,11 @@ void __init efi_call_phys_epilog(void)
|
||||
|
||||
void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size)
|
||||
{
|
||||
static unsigned pages_mapped __initdata;
|
||||
unsigned i, pages;
|
||||
unsigned long offset;
|
||||
unsigned long last_map_pfn;
|
||||
|
||||
pages = PFN_UP(phys_addr + size) - PFN_DOWN(phys_addr);
|
||||
offset = phys_addr & ~PAGE_MASK;
|
||||
phys_addr &= PAGE_MASK;
|
||||
|
||||
if (pages_mapped + pages > MAX_EFI_IO_PAGES)
|
||||
last_map_pfn = init_memory_mapping(phys_addr, phys_addr + size);
|
||||
if ((last_map_pfn << PAGE_SHIFT) < phys_addr + size)
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < pages; i++) {
|
||||
__set_fixmap(FIX_EFI_IO_MAP_FIRST_PAGE - pages_mapped,
|
||||
phys_addr, PAGE_KERNEL);
|
||||
phys_addr += PAGE_SIZE;
|
||||
pages_mapped++;
|
||||
}
|
||||
|
||||
return (void __iomem *)__fix_to_virt(FIX_EFI_IO_MAP_FIRST_PAGE - \
|
||||
(pages_mapped - pages)) + offset;
|
||||
return (void __iomem *)__va(phys_addr);
|
||||
}
|
||||
|
@@ -136,7 +136,7 @@ int init_fpu(struct task_struct *tsk)
|
||||
#ifdef CONFIG_X86_32
|
||||
if (!HAVE_HWFP) {
|
||||
memset(tsk->thread.xstate, 0, xstate_size);
|
||||
finit();
|
||||
finit_task(tsk);
|
||||
set_stopped_child_used_math(tsk);
|
||||
return 0;
|
||||
}
|
||||
|
@@ -216,6 +216,14 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq"),
|
||||
},
|
||||
},
|
||||
{ /* Handle problems with rebooting on Dell XPS710 */
|
||||
.callback = set_bios_reboot,
|
||||
.ident = "Dell XPS710",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710"),
|
||||
},
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
|
@@ -770,6 +770,9 @@ void __init setup_arch(char **cmdline_p)
|
||||
|
||||
finish_e820_parsing();
|
||||
|
||||
if (efi_enabled)
|
||||
efi_init();
|
||||
|
||||
dmi_scan_machine();
|
||||
|
||||
dmi_check_system(bad_bios_dmi_table);
|
||||
@@ -789,8 +792,6 @@ void __init setup_arch(char **cmdline_p)
|
||||
insert_resource(&iomem_resource, &data_resource);
|
||||
insert_resource(&iomem_resource, &bss_resource);
|
||||
|
||||
if (efi_enabled)
|
||||
efi_init();
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
if (ppro_with_ram_bug()) {
|
||||
|
Reference in New Issue
Block a user