On Thu, Dec 28, 2017 at 11:41:45AM +0100, Thomas Gleixner wrote: > On Sun, 24 Dec 2017, vcap...@pengaru.com wrote: > > On Sat, Dec 23, 2017 at 09:33:37PM +0100, Thomas Gleixner wrote: > > > > It seems like the affinity changes are assuming a strict adherence to > > > > the CPU mask when the underlying hardware is treating it more as a hint. > > > > Perhaps handlers still need to be maintained on all CPUs in a given apic > > > > domain, regardless of what the masks are configured as, to cover these > > > > situations. > > > > > > That's odd. I'll have a look after the holidays. > > > > > > > Ok, just FYI I've reproduced it on rc5 as well. > > > > I may be offline a bit at the start of the new year, in case you've got > > something for me to test and I'm unresponsive. > > Can you try the patch below? >
Looks fixed so far, I'll try living in 4.15-rc5 now and will report back if anything goes sideways. Thanks Thomas! > Thanks, > > tglx > > 8<--------------- > --- a/arch/x86/kernel/apic/apic_flat_64.c > +++ b/arch/x86/kernel/apic/apic_flat_64.c > @@ -151,7 +151,7 @@ static struct apic apic_flat __ro_after_ > .apic_id_valid = default_apic_id_valid, > .apic_id_registered = flat_apic_id_registered, > > - .irq_delivery_mode = dest_LowestPrio, > + .irq_delivery_mode = dest_Fixed, > .irq_dest_mode = 1, /* logical */ > > .disable_esr = 0, > --- a/arch/x86/kernel/apic/probe_32.c > +++ b/arch/x86/kernel/apic/probe_32.c > @@ -105,7 +105,7 @@ static struct apic apic_default __ro_aft > .apic_id_valid = default_apic_id_valid, > .apic_id_registered = default_apic_id_registered, > > - .irq_delivery_mode = dest_LowestPrio, > + .irq_delivery_mode = dest_Fixed, > /* logical delivery broadcast to all CPUs: */ > .irq_dest_mode = 1, > > --- a/arch/x86/kernel/apic/x2apic_cluster.c > +++ b/arch/x86/kernel/apic/x2apic_cluster.c > @@ -184,7 +184,7 @@ static struct apic apic_x2apic_cluster _ > .apic_id_valid = x2apic_apic_id_valid, > .apic_id_registered = x2apic_apic_id_registered, > > - .irq_delivery_mode = dest_LowestPrio, > + .irq_delivery_mode = dest_Fixed, > .irq_dest_mode = 1, /* logical */ > > .disable_esr = 0,