]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commit - drivers/bus/omap_l3_noc.c
bus: omap_l3_noc: ignore masked out unclearable targets
authorAfzal Mohammed <afzal@ti.com>
Fri, 25 Apr 2014 22:38:11 +0000 (17:38 -0500)
committerNishanth Menon <nm@ti.com>
Mon, 5 May 2014 19:34:03 +0000 (14:34 -0500)
commit2100b595b756db29a0b71de49c3bf73ae76c679b
treeb32849d21bbb6f5f8d4997457b8a1109387d0b04
parente4be3f3a040432398225d3634d44fc21f4807b7a
bus: omap_l3_noc: ignore masked out unclearable targets

Errors that cannot be cleared (determined by reading REGERR register)
are currently handled by masking it. Documentation states that REGERR
"Checks which application/debug error sources are active" - it does not
indicate that this is "interrupt status" - masked out status represented
eventually in the irq line to MPU.
For example:

Lets say module 0 bit 8(0x100) was unclearable, we do the mask it from
generating further errors. However in the following cases:
a) bit 9 of Module 0
OR
b) any bit of Module 1+
occur, the interrupt handler wrongly assumes that the raw interrupt
status of module 0 bit 8 is the root cause of the interrupt, and
returns. This causes unhandled interrupt and resultant infinite
interrupts.

Fix this scenario by storing the events we masked out and masking raw
status with masked ones before identifying and handling the error.

Reported-by: Vaibhav Hiremath <hvaibhav@ti.com>
Signed-off-by: Afzal Mohammed <afzal@ti.com>
Tested-by: Vaibhav Hiremath <hvaibhav@gmail.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Tested-by: Sekhar Nori <nsekhar@ti.com>
drivers/bus/omap_l3_noc.c
drivers/bus/omap_l3_noc.h