Linus,

Please pull the latest x86-apic-for-linus git tree from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-apic-for-linus

   # HEAD: 543113d2f4b5dd40d46a95502effe86b845dfe34 x86/apic: Fix a typo in a 
comment line

The main changes in this cycle were:

 - Re-activate the hw IRQ resend mechanism that was downgraded to a sw-resend 
   unintentionally. (Ruslan Ruslichenko)

 - Avoid sporadic spurious hrtimer interrupts (Frederic Weisbecker)

 Thanks,

        Ingo

------------------>
Dou Liyang (2):
      x86/apic: Fix typos in comments
      x86/apic: Fix a typo in a comment line

Frederic Weisbecker (1):
      x86/apic: Implement set_state_oneshot_stopped() callback

Ruslan Ruslichenko (1):
      x86/ioapic: Restore IO-APIC irq_chip retrigger callback


 arch/x86/kernel/apic/apic.c    | 33 +++++++++++++++++----------------
 arch/x86/kernel/apic/io_apic.c |  2 ++
 2 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index 5b7e43eff139..8567c851172c 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -529,18 +529,19 @@ static void lapic_timer_broadcast(const struct cpumask 
*mask)
  * The local apic timer can be used for any function which is CPU local.
  */
 static struct clock_event_device lapic_clockevent = {
-       .name                   = "lapic",
-       .features               = CLOCK_EVT_FEAT_PERIODIC |
-                                 CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_C3STOP
-                                 | CLOCK_EVT_FEAT_DUMMY,
-       .shift                  = 32,
-       .set_state_shutdown     = lapic_timer_shutdown,
-       .set_state_periodic     = lapic_timer_set_periodic,
-       .set_state_oneshot      = lapic_timer_set_oneshot,
-       .set_next_event         = lapic_next_event,
-       .broadcast              = lapic_timer_broadcast,
-       .rating                 = 100,
-       .irq                    = -1,
+       .name                           = "lapic",
+       .features                       = CLOCK_EVT_FEAT_PERIODIC |
+                                         CLOCK_EVT_FEAT_ONESHOT | 
CLOCK_EVT_FEAT_C3STOP
+                                         | CLOCK_EVT_FEAT_DUMMY,
+       .shift                          = 32,
+       .set_state_shutdown             = lapic_timer_shutdown,
+       .set_state_periodic             = lapic_timer_set_periodic,
+       .set_state_oneshot              = lapic_timer_set_oneshot,
+       .set_state_oneshot_stopped      = lapic_timer_shutdown,
+       .set_next_event                 = lapic_next_event,
+       .broadcast                      = lapic_timer_broadcast,
+       .rating                         = 100,
+       .irq                            = -1,
 };
 static DEFINE_PER_CPU(struct clock_event_device, lapic_events);
 
@@ -1245,7 +1246,7 @@ static void lapic_setup_esr(void)
 /**
  * setup_local_APIC - setup the local APIC
  *
- * Used to setup local APIC while initializing BSP or bringin up APs.
+ * Used to setup local APIC while initializing BSP or bringing up APs.
  * Always called with preemption disabled.
  */
 void setup_local_APIC(void)
@@ -2028,8 +2029,8 @@ void disconnect_bsp_APIC(int virt_wire_setup)
 /*
  * The number of allocated logical CPU IDs. Since logical CPU IDs are allocated
  * contiguously, it equals to current allocated max logical CPU ID plus 1.
- * All allocated CPU ID should be in [0, nr_logical_cpuidi), so the maximum of
- * nr_logical_cpuids is nr_cpu_ids.
+ * All allocated CPU IDs should be in the [0, nr_logical_cpuids) range,
+ * so the maximum of nr_logical_cpuids is nr_cpu_ids.
  *
  * NOTE: Reserve 0 for BSP.
  */
@@ -2094,7 +2095,7 @@ int __generic_processor_info(int apicid, int version, 
bool enabled)
         * Since fixing handling of boot_cpu_physical_apicid requires
         * another discussion and tests on each platform, we leave it
         * for now and here we use read_apic_id() directly in this
-        * function, generic_processor_info().
+        * function, __generic_processor_info().
         */
        if (disabled_cpu_apicid != BAD_APICID &&
            disabled_cpu_apicid != read_apic_id() &&
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 945e512a112a..1e35dd06b090 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -1875,6 +1875,7 @@ static struct irq_chip ioapic_chip __read_mostly = {
        .irq_ack                = irq_chip_ack_parent,
        .irq_eoi                = ioapic_ack_level,
        .irq_set_affinity       = ioapic_set_affinity,
+       .irq_retrigger          = irq_chip_retrigger_hierarchy,
        .flags                  = IRQCHIP_SKIP_SET_WAKE,
 };
 
@@ -1886,6 +1887,7 @@ static struct irq_chip ioapic_ir_chip __read_mostly = {
        .irq_ack                = irq_chip_ack_parent,
        .irq_eoi                = ioapic_ir_ack_level,
        .irq_set_affinity       = ioapic_set_affinity,
+       .irq_retrigger          = irq_chip_retrigger_hierarchy,
        .flags                  = IRQCHIP_SKIP_SET_WAKE,
 };
 

Reply via email to