diff options
| -rw-r--r-- | arch/x86/include/asm/io.h | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 3 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 3 | ||||
| -rw-r--r-- | arch/x86/mm/ioremap.c | 14 | ||||
| -rw-r--r-- | arch/x86/mm/pgtable_32.c | 2 |
5 files changed, 22 insertions, 1 deletions
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h index a1dcfa3ab17d..30a3e9776123 100644 --- a/arch/x86/include/asm/io.h +++ b/arch/x86/include/asm/io.h | |||
| @@ -347,6 +347,7 @@ extern void __iomem *early_ioremap(resource_size_t phys_addr, | |||
| 347 | extern void __iomem *early_memremap(resource_size_t phys_addr, | 347 | extern void __iomem *early_memremap(resource_size_t phys_addr, |
| 348 | unsigned long size); | 348 | unsigned long size); |
| 349 | extern void early_iounmap(void __iomem *addr, unsigned long size); | 349 | extern void early_iounmap(void __iomem *addr, unsigned long size); |
| 350 | extern void fixup_early_ioremap(void); | ||
| 350 | 351 | ||
| 351 | #define IO_SPACE_LIMIT 0xffff | 352 | #define IO_SPACE_LIMIT 0xffff |
| 352 | 353 | ||
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index 127b8718abfb..eb2789c3f721 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c | |||
| @@ -2545,6 +2545,9 @@ void irq_force_complete_move(int irq) | |||
| 2545 | struct irq_desc *desc = irq_to_desc(irq); | 2545 | struct irq_desc *desc = irq_to_desc(irq); |
| 2546 | struct irq_cfg *cfg = desc->chip_data; | 2546 | struct irq_cfg *cfg = desc->chip_data; |
| 2547 | 2547 | ||
| 2548 | if (!cfg) | ||
| 2549 | return; | ||
| 2550 | |||
| 2548 | __irq_complete_move(&desc, cfg->vector); | 2551 | __irq_complete_move(&desc, cfg->vector); |
| 2549 | } | 2552 | } |
| 2550 | #else | 2553 | #else |
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c index d360b56e9825..b6215b9798e2 100644 --- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c +++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c | |||
| @@ -929,7 +929,8 @@ static int fill_powernow_table_pstate(struct powernow_k8_data *data, | |||
| 929 | powernow_table[i].index = index; | 929 | powernow_table[i].index = index; |
| 930 | 930 | ||
| 931 | /* Frequency may be rounded for these */ | 931 | /* Frequency may be rounded for these */ |
| 932 | if (boot_cpu_data.x86 == 0x10 || boot_cpu_data.x86 == 0x11) { | 932 | if ((boot_cpu_data.x86 == 0x10 && boot_cpu_data.x86_model < 10) |
| 933 | || boot_cpu_data.x86 == 0x11) { | ||
| 933 | powernow_table[i].frequency = | 934 | powernow_table[i].frequency = |
| 934 | freq_from_fid_did(lo & 0x3f, (lo >> 6) & 7); | 935 | freq_from_fid_did(lo & 0x3f, (lo >> 6) & 7); |
| 935 | } else | 936 | } else |
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index 5eb1ba74a3a9..12e4d2d3c110 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c | |||
| @@ -448,6 +448,20 @@ static inline void __init early_clear_fixmap(enum fixed_addresses idx) | |||
| 448 | static void __iomem *prev_map[FIX_BTMAPS_SLOTS] __initdata; | 448 | static void __iomem *prev_map[FIX_BTMAPS_SLOTS] __initdata; |
| 449 | static unsigned long prev_size[FIX_BTMAPS_SLOTS] __initdata; | 449 | static unsigned long prev_size[FIX_BTMAPS_SLOTS] __initdata; |
| 450 | 450 | ||
| 451 | void __init fixup_early_ioremap(void) | ||
| 452 | { | ||
| 453 | int i; | ||
| 454 | |||
| 455 | for (i = 0; i < FIX_BTMAPS_SLOTS; i++) { | ||
| 456 | if (prev_map[i]) { | ||
| 457 | WARN_ON(1); | ||
| 458 | break; | ||
| 459 | } | ||
| 460 | } | ||
| 461 | |||
| 462 | early_ioremap_init(); | ||
| 463 | } | ||
| 464 | |||
| 451 | static int __init check_early_ioremap_leak(void) | 465 | static int __init check_early_ioremap_leak(void) |
| 452 | { | 466 | { |
| 453 | int count = 0; | 467 | int count = 0; |
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c index 1a8faf09afed..792854003ed3 100644 --- a/arch/x86/mm/pgtable_32.c +++ b/arch/x86/mm/pgtable_32.c | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include <asm/e820.h> | 18 | #include <asm/e820.h> |
| 19 | #include <asm/tlb.h> | 19 | #include <asm/tlb.h> |
| 20 | #include <asm/tlbflush.h> | 20 | #include <asm/tlbflush.h> |
| 21 | #include <asm/io.h> | ||
| 21 | 22 | ||
| 22 | unsigned int __VMALLOC_RESERVE = 128 << 20; | 23 | unsigned int __VMALLOC_RESERVE = 128 << 20; |
| 23 | 24 | ||
| @@ -128,6 +129,7 @@ static int __init parse_reservetop(char *arg) | |||
| 128 | 129 | ||
| 129 | address = memparse(arg, &arg); | 130 | address = memparse(arg, &arg); |
| 130 | reserve_top_address(address); | 131 | reserve_top_address(address); |
| 132 | fixup_early_ioremap(); | ||
| 131 | return 0; | 133 | return 0; |
| 132 | } | 134 | } |
| 133 | early_param("reservetop", parse_reservetop); | 135 | early_param("reservetop", parse_reservetop); |
