Thread (5 messages) 5 messages, 2 authors, 2016-03-23

Re: [PATCH 1/2] cxlflash: Fix regression issue with re-ordering patch

From: Matthew R. Ochs <hidden>
Date: 2016-03-23 21:19:17
Also in: linux-scsi

On Mar 23, 2016, at 2:50 PM, Uma Krishnan [off-list ref] =
wrote:
=20
From: "Manoj N. Kumar" <redacted>
=20
While running 'sg_reset -H' back to back the following exception was =
seen:
=20
[  735.115695] Faulting instruction address: 0xd0000000098c0864
cpu 0x0: Vector: 300 (Data Access) at [c000000ffffafa80]
   pc: d0000000098c0864: cxlflash_async_err_irq+0x84/0x5c0 [cxlflash]
   lr: c00000000013aed0: handle_irq_event_percpu+0xa0/0x310
   sp: c000000ffffafd00
  msr: 9000000000009033
  dar: 2010000
dsisr: 40000000
 current =3D 0xc000000001510880
 paca    =3D 0xc00000000fb80000   softe: 0        irq_happened: 0x01
   pid   =3D 0, comm =3D swapper/0
=20
Linux version 4.5.0-491-26f710d+
=20
enter ? for help
[c000000ffffafe10] c00000000013aed0 handle_irq_event_percpu+0xa0/0x310
[c000000ffffafed0] c00000000013b1a8 handle_irq_event+0x68/0xc0
[c000000ffffaff00] c0000000001404ec handle_fasteoi_irq+0xec/0x2a0
[c000000ffffaff30] c00000000013a084 generic_handle_irq+0x54/0x80
[c000000ffffaff60] c000000000011130 __do_irq+0x80/0x1d0
[c000000ffffaff90] c000000000024d40 call_do_irq+0x14/0x24
[c000000001573a20] c000000000011318 do_IRQ+0x98/0x140
[c000000001573a70] c000000000002594 =
hardware_interrupt_common+0x114/0x180
=20
This exception is being hit because the async_err interrupt path =
performs
an MMIO to read the interrupt status register. The MMIO region in this
case is not available.
=20
Commit 6ded8b3cbd9a ("cxlflash: Unmap problem state area before =
detaching
master context") re-ordered the sequence in which term_mc() and =
stop_afu()
are called. This introduces a window for interrupts to come in with =
the
problem space area unmapped, that did not exist previously.
=20
The fix is to separate the disabling of all AFU interrupts to a =
distinct
function, term_intr() so that it is the first thing that is done in =
the
tear down process.
=20
To keep the initialization process symmetric, separate the AFU =
interrupt
setup also to a distinct function: init_intr().
=20
Fixes: 6ded8b3cbd9a ("cxlflash: Unmap problem state area before =
detaching master context")
Signed-off-by: Manoj N. Kumar <redacted>
Looks good, thanks for the quick turnaround!

Acked-by: Matthew R. Ochs <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help