diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-02-20 14:01:21 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-02-20 14:01:21 -0800 | 
| commit | 4cee9fe53e4d181b608c7758090ed492b45d6801 (patch) | |
| tree | 17e52e823ee0c903583cd32913bd4b21c9bf90a5 | |
| parent | 42e1b14b6e1455ece2ccbe474c25388d0230a590 (diff) | |
| parent | 543113d2f4b5dd40d46a95502effe86b845dfe34 (diff) | |
Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 apic changes from Ingo Molnar:
 "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)"
[ Let's see if the io_apic retrigger ends up surviving this release, it
  got reverted last time because it found problems elsewhere  - Linus ]
* 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/apic: Fix a typo in a comment line
  x86/ioapic: Restore IO-APIC irq_chip retrigger callback
  x86/apic: Implement set_state_oneshot_stopped() callback
  x86/apic: Fix typos in comments
| -rw-r--r-- | arch/x86/kernel/apic/apic.c | 33 | ||||
| -rw-r--r-- | 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 bd6b8c270c24..52f352b063fd 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,  };  | 
