From: Andrew Morton ia64: arch/i386/kernel/dmi_scan.c:9:21: asm/dmi.h: No such file or directory Cc: Andi Kleen Signed-off-by: Andrew Morton --- dev/null | 38 ---------------------------------- arch/i386/kernel/dmi_scan.c | 1 arch/x86_64/kernel/setup.c | 16 ++++++-------- arch/x86_64/mm/init.c | 27 ------------------------ include/asm-x86_64/io.h | 8 ++++--- 5 files changed, 12 insertions(+), 78 deletions(-) diff -puN arch/i386/kernel/dmi_scan.c~revert-x86_64-mm-dmi-early arch/i386/kernel/dmi_scan.c --- 25/arch/i386/kernel/dmi_scan.c~revert-x86_64-mm-dmi-early Tue Feb 28 17:43:19 2006 +++ 25-akpm/arch/i386/kernel/dmi_scan.c Tue Feb 28 17:43:19 2006 @@ -5,7 +5,6 @@ #include #include #include -#include static char * __init dmi_string(struct dmi_header *dm, u8 s) { diff -puN arch/x86_64/kernel/setup.c~revert-x86_64-mm-dmi-early arch/x86_64/kernel/setup.c --- 25/arch/x86_64/kernel/setup.c~revert-x86_64-mm-dmi-early Tue Feb 28 17:43:19 2006 +++ 25-akpm/arch/x86_64/kernel/setup.c Tue Feb 28 17:43:19 2006 @@ -68,7 +68,6 @@ #include #include #include -#include /* * Machine setup.. @@ -93,12 +92,6 @@ int bootloader_type; unsigned long saved_video_mode; -/* - * Early DMI memory - */ -int dmi_alloc_index; -char dmi_alloc_data[DMI_MAX_DATA]; - /* * Setup options */ @@ -627,8 +620,6 @@ void __init setup_arch(char **cmdline_p) init_memory_mapping(0, (end_pfn_map << PAGE_SHIFT)); - dmi_scan_machine(); - zap_low_mappings(0); #ifdef CONFIG_ACPI @@ -1421,3 +1412,10 @@ struct seq_operations cpuinfo_op = { .show = show_cpuinfo, }; +static int __init run_dmi_scan(void) +{ + dmi_scan_machine(); + return 0; +} +core_initcall(run_dmi_scan); + diff -puN arch/x86_64/mm/init.c~revert-x86_64-mm-dmi-early arch/x86_64/mm/init.c --- 25/arch/x86_64/mm/init.c~revert-x86_64-mm-dmi-early Tue Feb 28 17:43:19 2006 +++ 25-akpm/arch/x86_64/mm/init.c Tue Feb 28 17:43:19 2006 @@ -226,33 +226,6 @@ static __meminit void unmap_low_page(int ti->allocated = 0; } -/* Must run before zap_low_mappings */ -__init void *early_ioremap(unsigned long addr, unsigned long size) -{ - unsigned long map = round_down(addr, LARGE_PAGE_SIZE); - - /* actually usually some more */ - if (size >= LARGE_PAGE_SIZE) { - printk("SMBIOS area too long %lu\n", size); - return NULL; - } - set_pmd(temp_mappings[0].pmd, __pmd(map | _KERNPG_TABLE | _PAGE_PSE)); - map += LARGE_PAGE_SIZE; - set_pmd(temp_mappings[1].pmd, __pmd(map | _KERNPG_TABLE | _PAGE_PSE)); - __flush_tlb(); - return temp_mappings[0].address + (addr & (LARGE_PAGE_SIZE-1)); -} - -/* To avoid virtual aliases later */ -__init void early_iounmap(void *addr, unsigned long size) -{ - if ((void *)round_down((unsigned long)addr, LARGE_PAGE_SIZE) != temp_mappings[0].address) - printk("early_iounmap: bad address %p\n", addr); - set_pmd(temp_mappings[0].pmd, __pmd(0)); - set_pmd(temp_mappings[1].pmd, __pmd(0)); - __flush_tlb(); -} - static void __meminit phys_pmd_init(pmd_t *pmd, unsigned long address, unsigned long end) { diff -L include/asm-i386/dmi.h -puN include/asm-i386/dmi.h~revert-x86_64-mm-dmi-early /dev/null --- 25/include/asm-i386/dmi.h +++ /dev/null Mon May 20 21:11:23 2002 @@ -1,11 +0,0 @@ -#ifndef _ASM_DMI_H -#define _ASM_DMI_H 1 - -#include - -/* Use early IO mappings for DMI because it's initialized early */ -#define dmi_ioremap bt_ioremap -#define dmi_iounmap bt_iounmap -#define dmi_alloc alloc_bootmem - -#endif diff -L include/asm-x86_64/dmi.h -puN include/asm-x86_64/dmi.h~revert-x86_64-mm-dmi-early /dev/null --- 25/include/asm-x86_64/dmi.h +++ /dev/null Mon May 20 21:11:23 2002 @@ -1,27 +0,0 @@ -#ifndef _ASM_DMI_H -#define _ASM_DMI_H 1 - -#include - -extern void *dmi_ioremap(unsigned long addr, unsigned long size); -extern void dmi_iounmap(void *addr, unsigned long size); - -#define DMI_MAX_DATA 2048 - -extern int dmi_alloc_index; -extern char dmi_alloc_data[DMI_MAX_DATA]; - -/* This is so early that there is no good way to allocate dynamic memory. - Allocate data in an BSS array. */ -static inline void *dmi_alloc(unsigned len) -{ - int idx = dmi_alloc_index; - if ((dmi_alloc_index += len) > DMI_MAX_DATA) - return NULL; - return dmi_alloc_data + idx; -} - -#define dmi_ioremap early_ioremap -#define dmi_iounmap early_iounmap - -#endif diff -puN include/asm-x86_64/io.h~revert-x86_64-mm-dmi-early include/asm-x86_64/io.h --- 25/include/asm-x86_64/io.h~revert-x86_64-mm-dmi-early Tue Feb 28 17:43:19 2006 +++ 25-akpm/include/asm-x86_64/io.h Tue Feb 28 17:43:19 2006 @@ -135,9 +135,6 @@ static inline void __iomem * ioremap (un return __ioremap(offset, size, 0); } -extern void *early_ioremap(unsigned long addr, unsigned long size); -extern void early_iounmap(void *addr, unsigned long size); - /* * This one maps high address device memory and turns off caching for that area. * it's useful if some control registers are in such an area and write combining @@ -146,6 +143,11 @@ extern void early_iounmap(void *addr, un extern void __iomem * ioremap_nocache (unsigned long offset, unsigned long size); extern void iounmap(volatile void __iomem *addr); +/* Use normal IO mappings for DMI */ +#define dmi_ioremap ioremap +#define dmi_iounmap(x,l) iounmap(x) +#define dmi_alloc(l) kmalloc(l, GFP_ATOMIC) + /* * ISA I/O bus memory addresses are 1:1 with the physical address. */ _