Message ID | alpine.DEB.2.20.1712281820040.1899@nanos (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, 2017-12-28 at 18:21 +0100, Thomas Gleixner wrote: > On Thu, 28 Dec 2017, Shevchenko, Andriy wrote: > > > Hi! > > > > Experimenting with AtomISP (yes, code is ugly and MSI handling > > rather > > hackish, though...). > > > > So, with v4.14 base: > > > > [ 33.639224] atomisp-isp2 0000:00:03.0: Start stream on pad 1 for > > asd0 > > [ 33.652355] atomisp-isp2 0000:00:03.0: irq:0x20 > > [ 33.662456] atomisp-isp2 0000:00:03.0: irq:0x20 > > [ 33.698064] atomisp-isp2 0000:00:03.0: stream[0] started. > > > > Ctrl+C > > > > [ 48.185643] atomisp-isp2 0000:00:03.0: <atomisp_dqbuf: -512 > > [ 48.204641] atomisp-isp2 0000:00:03.0: release device ATOMISP ISP > > CAPTURE output > > ... > > > > and machine still alive. > > > > > > With v4.15-rc1 base (basically your branch + some my hack patches) > > the > > IR > > Q behaviour changed, i.e. I have got: > > > > > > [ 85.167061] spurious APIC interrupt through vector ff on CPU#0, > > should never happen. > > [ 85.199886] atomisp-isp2 0000:00:03.0: stream[0] started. > > > > and Ctrl+C does NOT work. Machine just hangs. > > > > It might be related to this: > > https://lkml.org/lkml/2017/12/22/697 > > I don't think so. > > Does the patch below cure it? Unfortunately, no. Same behaviour. Tell me if I need to provide some debug before it hangs. For now I have apic=debug (AFAIR it doesn't affect this). > > Thanks, > > tglx > 8<----------------- > arch/x86/kernel/apic/apic_flat_64.c | 2 +- > arch/x86/kernel/apic/probe_32.c | 2 +- > arch/x86/kernel/apic/x2apic_cluster.c | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > --- 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, > >
--- 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,