x86 fixes
Linus,
Please pull the latest x86-fixes-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git x86-fixes-for-linus
out-of-topic modifications in x86-fixes-for-linus:
--------------------------------------------------drivers/acpi/numa.c # 9378b63: x86, ia64, acpi: Clean up x86-ism
Thanks,
Ingo
------------------>
H. Peter Anvin (1):
x86, olpc: Add missing Kconfig dependencies
Jacob Pan (1):
x86, mrst: Set correct APB timer IRQ affinity for secondary cpu
John Stultz (1):
x86: tsc: Fix calibration refinement conditionals to avoid divide by zero
Tony Luck (1):
x86, ia64, acpi: Clean up x86-ism in drivers/acpi/numa.c
arch/x86/Kconfig | 1 + arch/x86/kernel/apb_timer.c | 14 ++++++++------ arch/x86/kernel/tsc.c | 4 ++-- drivers/acpi/numa.c | 8 ++------ 4 files changed, 13 insertions(+), 14 deletions(-)
arch/x86/Kconfig +1 -0
@@ -2064,6 +2064,7 @@ config OLPC bool "One Laptop Per Child support" select GPIOLIB select OLPC_OPENFIRMWARE + depends on !X86_64 && !X86_PAE ---help--- Add support for detecting the unique features of the OLPC XO hardware.
arch/x86/kernel/apb_timer.c +8 -6
@@ -313,14 +313,16 @@ static void apbt_setup_irq(struct apbt_dev *adev)if (adev->irq ==0 )return ; +irq_modify_status (adev->irq,0 ,IRQ_MOVE_PCNTXT ); +irq_set_affinity (adev->irq,cpumask_of (adev->cpu)); +/* APB timer irqs are set up as mp_irqs, timer is edge type */ +__set_irq_handler (adev->irq, handle_edge_irq,0 ,"edge" ); +if (system_state ==SYSTEM_BOOTING ) { -irq_modify_status (adev->irq,0 ,IRQ_MOVE_PCNTXT ); -irq_set_affinity (adev->irq,cpumask_of (adev->cpu)); -/* APB timer irqs are set up as mp_irqs, timer is edge type */ -__set_irq_handler (adev->irq, handle_edge_irq,0 ,"edge" );if (request_irq (adev->irq, apbt_interrupt_handler, -IRQF_TIMER |IRQF_DISABLED |IRQF_NOBALANCING , - adev->name, adev)) { +IRQF_TIMER |IRQF_DISABLED | +IRQF_NOBALANCING , + adev->name, adev)) {printk (KERN_ERR "Failed request IRQ for APBT%d\n" , adev->num); }
arch/x86/kernel/tsc.c +2 -2
@@ -464,7 +464,7 @@ unsigned long native_calibrate_tsc(void) tsc_pit_min =min (tsc_pit_min, tsc_pit_khz);/* hpet or pmtimer available ? */ -if (!hpet && !ref1 && !ref2) +if (ref1 == ref2)continue ;/* Check, whether the sampling was disturbed by an SMI */
@@ -935,7 +935,7 @@ static void tsc_refine_calibration_work(struct work_struct *work) tsc_stop =tsc_read_refs (&ref_stop, hpet);/* hpet or pmtimer available ? */ -if (!hpet && !ref_start && !ref_stop) +if (ref_start == ref_stop) goto out;/* Check, whether the sampling was disturbed by an SMI */
drivers/acpi/numa.c +2 -6
@@ -275,23 +275,19 @@ acpi_table_parse_srat(enum acpi_srat_type id,int __init acpi_numa_init (void ) {int ret =0 ; -int nr_cpu_entries = nr_cpu_ids; -#ifdef CONFIG_X86 /* * Should not limit number with cpu num that is from NR_CPUS or nr_cpus= * SRAT cpu entries could have different order with that in MADT. * So go over all cpu entries in SRAT to get apicid to node mapping. */ - nr_cpu_entries =MAX_LOCAL_APIC ; -#endif /* SRAT: Static Resource Affinity Table */ if (!acpi_table_parse (ACPI_SIG_SRAT , acpi_parse_srat)) {acpi_table_parse_srat (ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY , - acpi_parse_x2apic_affinity, nr_cpu_entries); + acpi_parse_x2apic_affinity,0 );acpi_table_parse_srat (ACPI_SRAT_TYPE_CPU_AFFINITY , - acpi_parse_processor_affinity, nr_cpu_entries); + acpi_parse_processor_affinity,0 ); ret =acpi_table_parse_srat (ACPI_SRAT_TYPE_MEMORY_AFFINITY , acpi_parse_memory_affinity,NR_NODE_MEMBLKS );