diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-07-13 22:52:27 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-13 22:52:27 +0200 |
commit | dbbcfb2211761fa69e831a78119c9288fb87eb9d (patch) | |
tree | b40b103ed250e287bf3d4790f1c87001cf7cf52f /arch/x86 | |
parent | b0356cd0e7497252a2c45ecb07b79d931390c8b2 (diff) | |
parent | 9df2fe986770bc4c76e8fe72c20b71268eec39a7 (diff) | |
download | linux-dbbcfb2211761fa69e831a78119c9288fb87eb9d.tar.gz linux-dbbcfb2211761fa69e831a78119c9288fb87eb9d.tar.bz2 linux-dbbcfb2211761fa69e831a78119c9288fb87eb9d.zip |
Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks
Conflicts:
arch/x86/mm/ioremap.c
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/kernel/.gitignore | 1 | ||||
-rw-r--r-- | arch/x86/mm/ioremap.c | 25 | ||||
-rw-r--r-- | arch/x86/pci/common.c | 8 |
3 files changed, 29 insertions, 5 deletions
diff --git a/arch/x86/kernel/.gitignore b/arch/x86/kernel/.gitignore index 4ea38a39aed4..08f4fd731469 100644 --- a/arch/x86/kernel/.gitignore +++ b/arch/x86/kernel/.gitignore @@ -1,2 +1,3 @@ vsyscall.lds vsyscall_32.lds +vmlinux.lds diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index 45e546c4ba78..115f13ee40c9 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c @@ -300,6 +300,29 @@ void __iomem *ioremap_cache(resource_size_t phys_addr, unsigned long size) } EXPORT_SYMBOL(ioremap_cache); +static void __iomem *ioremap_default(resource_size_t phys_addr, + unsigned long size) +{ + unsigned long flags; + void *ret; + int err; + + /* + * - WB for WB-able memory and no other conflicting mappings + * - UC_MINUS for non-WB-able memory with no other conflicting mappings + * - Inherit from confliting mappings otherwise + */ + err = reserve_memtype(phys_addr, phys_addr + size, -1, &flags); + if (err < 0) + return NULL; + + ret = (void *) __ioremap_caller(phys_addr, size, flags, + __builtin_return_address(0)); + + free_memtype(phys_addr, phys_addr + size); + return (void __iomem *)ret; +} + /** * iounmap - Free a IO remapping * @addr: virtual address from ioremap_* @@ -365,7 +388,7 @@ void *xlate_dev_mem_ptr(unsigned long phys) if (page_is_ram(start >> PAGE_SHIFT)) return __va(phys); - addr = (void __force *)ioremap(start, PAGE_SIZE); + addr = (void __force *)ioremap_default(start, PAGE_SIZE); if (addr) addr = (void *)((unsigned long)addr | (phys & ~PAGE_MASK)); diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index 0a9eaa736d94..00a319cd5be3 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c @@ -330,18 +330,18 @@ static struct dmi_system_id __devinitdata pciprobe_dmi_table[] = { #endif { .callback = set_bf_sort, - .ident = "HP ProLiant DL360", + .ident = "HP ProLiant DL385 G2", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "HP"), - DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL360"), + DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL385 G2"), }, }, { .callback = set_bf_sort, - .ident = "HP ProLiant DL380", + .ident = "HP ProLiant DL585 G2", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "HP"), - DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL380"), + DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL585 G2"), }, }, {} |