]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branch 'linus' into x86/irq
authorIngo Molnar <mingo@elte.hu>
Mon, 16 Jun 2008 09:27:45 +0000 (11:27 +0200)
committerIngo Molnar <mingo@elte.hu>
Mon, 16 Jun 2008 09:27:45 +0000 (11:27 +0200)
1  2 
arch/x86/kernel/acpi/boot.c
arch/x86/kernel/entry_32.S
arch/x86/kernel/io_apic_32.c

index 671591fcc61d9918206721545f21588846ab6688,33c5216fd3e1f5137b0b8c52fa8178ac328d630a..ff1a7b49a460860b5ec08d74a79de6a824cbd539
@@@ -242,12 -242,19 +242,19 @@@ static int __init acpi_parse_madt(struc
  
  static void __cpuinit acpi_register_lapic(int id, u8 enabled)
  {
+       unsigned int ver = 0;
        if (!enabled) {
                ++disabled_cpus;
                return;
        }
  
-       generic_processor_info(id, 0);
+ #ifdef CONFIG_X86_32
+       if (boot_cpu_physical_apicid != -1U)
+               ver = apic_version[boot_cpu_physical_apicid];
+ #endif
+       generic_processor_info(id, ver);
  }
  
  static int __init
@@@ -507,6 -514,8 +514,6 @@@ int acpi_register_gsi(u32 gsi, int trig
         * Make sure all (legacy) PCI IRQs are set as level-triggered.
         */
        if (acpi_irq_model == ACPI_IRQ_MODEL_PIC) {
 -              extern void eisa_set_level_irq(unsigned int irq);
 -
                if (triggering == ACPI_LEVEL_SENSITIVE)
                        eisa_set_level_irq(gsi);
        }
@@@ -765,8 -774,13 +772,13 @@@ static void __init acpi_register_lapic_
        mp_lapic_addr = address;
  
        set_fixmap_nocache(FIX_APIC_BASE, address);
-       if (boot_cpu_physical_apicid == -1U)
+       if (boot_cpu_physical_apicid == -1U) {
                boot_cpu_physical_apicid  = GET_APIC_ID(read_apic_id());
+ #ifdef CONFIG_X86_32
+               apic_version[boot_cpu_physical_apicid] =
+                        GET_APIC_VERSION(apic_read(APIC_LVR));
+ #endif
+       }
  }
  
  static int __init early_acpi_parse_madt_lapic_addr_ovr(void)
index 0c7f64b99e17224da71791f1fd019569892d170f,c778e4fa55a2eacc79d34954c2fdcef1367d5732..159a1c76d2bdde81a2b055462af1fe0396d27f46
@@@ -51,7 -51,7 +51,7 @@@
  #include <asm/percpu.h>
  #include <asm/dwarf2.h>
  #include <asm/processor-flags.h>
 -#include "irq_vectors.h"
 +#include <asm/irq_vectors.h>
  
  /*
   * We use macros for low-level operations which need to be overridden
@@@ -248,6 -248,7 +248,7 @@@ ENTRY(resume_userspace
        DISABLE_INTERRUPTS(CLBR_ANY)    # make sure we don't miss an interrupt
                                        # setting need_resched or sigpending
                                        # between sampling and the iret
+       TRACE_IRQS_OFF
        movl TI_flags(%ebp), %ecx
        andl $_TIF_WORK_MASK, %ecx      # is there any work to be done on
                                        # int/exception return?
index 76769ccb1425f5e17ad97473208de6b4c1322eb6,4dc8600d9d2072ed5ed79ee3884f70afd2281636..0774b231a28be66d589c198349ce3b0f97009122
@@@ -1176,7 -1176,7 +1176,7 @@@ static int __assign_irq_vector(int irq
        offset = current_offset;
  next:
        vector += 8;
 -      if (vector >= FIRST_SYSTEM_VECTOR) {
 +      if (vector >= first_system_vector) {
                offset = (offset + 1) % 8;
                vector = FIRST_DEVICE_VECTOR + offset;
        }
@@@ -2130,14 -2130,10 +2130,10 @@@ static inline void __init check_timer(v
  {
        int apic1, pin1, apic2, pin2;
        int vector;
-       unsigned int ver;
        unsigned long flags;
  
        local_irq_save(flags);
  
-       ver = apic_read(APIC_LVR);
-       ver = GET_APIC_VERSION(ver);
        /*
         * get/set the timer IRQ vector:
         */
         * mode for the 8259A whenever interrupts are routed
         * through I/O APICs.  Also IRQ0 has to be enabled in
         * the 8259A which implies the virtual wire has to be
-        * disabled in the local APIC.  Finally timer interrupts
-        * need to be acknowledged manually in the 8259A for
-        * timer_interrupt() and for the i82489DX when using
-        * the NMI watchdog.
+        * disabled in the local APIC.
         */
        apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT);
        init_8259A(1);
-       timer_ack = !cpu_has_tsc;
-       timer_ack |= (nmi_watchdog == NMI_IO_APIC && !APIC_INTEGRATED(ver));
+       timer_ack = 1;
        if (timer_over_8254 > 0)
                enable_8259A_irq(0);
  
@@@ -2269,7 -2261,7 +2261,7 @@@ void __init setup_IO_APIC(void
        int i;
  
        /* Reserve all the system vectors. */
 -      for (i = FIRST_SYSTEM_VECTOR; i < NR_VECTORS; i++)
 +      for (i = first_system_vector; i < NR_VECTORS; i++)
                set_bit(i, used_vectors);
  
        enable_IO_APIC();