Thread (7 messages) 7 messages, 2 authors, 2013-08-30

Re: [PATCH] fix might sleep oops in irq affinity callback hook

From: Joe Korty <hidden>
Date: 2013-08-22 19:01:17

On Wed, Aug 21, 2013 at 05:09:28PM -0400, Joe Korty wrote:
On Wed, Aug 21, 2013 at 11:53:47AM -0400, Sebastian Andrzej Siewior wrote:
quoted
Joe could you please test this one? In 3.10 we have one user of
__irq_set_affinity_locked() and we might get more.
Hi Sebastian,
I backported the patch to 3.6.11.6-rt38 and added a few printk's so that
when daemon started I would see that and when each affinity hook was
executed I would see that too.

The system came up and the printk for daemon start showed up near where
the sfc driver started, but no affinity action printk appeared.  Thus
the patch as written does not seem to work.

Hi Sebastian,
Today I intrumented both the nort and rt paths through the
affinity hook logic, and built and booted both nort and
rt kernels.  Here is what I found:

For the nort kernel, each time I change the affinity of
one of the SFC driver IRQs listed in /proc/interrupts,
I get a notice in dmesg that the SFC callback was invoked.

For the rt kernel, I get the message only for the first
time the affinity for some SFC IRQ is changed.  Subsequent
changes of the _same_ IRQ do not have the callback invoked.
If I go and change some other SFC IRQ that will also invoke
the callback the first time only.

   finny# echo 1 >/proc/irq/46/smp_affinity; dmesg | fgrep genirq
   genirq: set_affinity_thread STARTED
   genirq: NOTIFIER CALLED ...
   finny# echo 1 >/proc/irq/46/smp_affinity; dmesg | fgrep genirq
   genirq: set_affinity_thread STARTED
   genirq: NOTIFIER CALLED ...
   finny# echo 1 >/proc/irq/46/smp_affinity; dmesg | fgrep genirq
   genirq: set_affinity_thread STARTED
   genirq: NOTIFIER CALLED ...
   finny# echo 2 >/proc/irq/46/smp_affinity; dmesg | fgrep genirq
   genirq: set_affinity_thread STARTED
   genirq: NOTIFIER CALLED ...
   finny# echo 2 >/proc/irq/47/smp_affinity; dmesg | fgrep genirq
   genirq: set_affinity_thread STARTED
   genirq: NOTIFIER CALLED ...
   genirq: NOTIFIER CALLED ...
   finny# echo 2 >/proc/irq/47/smp_affinity; dmesg | fgrep genirq
   genirq: set_affinity_thread STARTED
   genirq: NOTIFIER CALLED ...
   genirq: NOTIFIER CALLED ...
   finny# echo 1 >/proc/irq/47/smp_affinity; dmesg | fgrep genirq
   genirq: set_affinity_thread STARTED
   genirq: NOTIFIER CALLED ...
   genirq: NOTIFIER CALLED ...


Regards,
Joe
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help