Re: powerpc/vio: dispose of virq mapping on vdevice unregister

2017-11-07 Thread Michael Ellerman
On Fri, 2017-09-29 at 00:19:20 UTC, Tyrel Datwyler wrote:
> When a vdevice is DLPAR removed from the system the vio subsystem doesn't
> bother unmapping the virq from the irq_domain. As a result we have a virq
> mapped to a hardware irq that is no longer valid for the irq_domain. A side
> effect is that we are left with /proc/irq/ affinity entries, and
> attempts to modify the smp_affinity of the irq will fail.
> 
> In the following observed example the kernel log is spammed by
> ics_rtas_set_affinity errors after the removal of a VSCSI adapter. This is a
> result of irqbalance trying to adjust the affinity every 10 seconds.
> 
> rpadlpar_io: slot U8408.E8E.10A7ACV-V5-C25 removed
> ics_rtas_set_affinity: ibm,set-xive irq=655385 returns -3
> ics_rtas_set_affinity: ibm,set-xive irq=655385 returns -3
> 
> This patch fixes the issue by calling irq_dispose_mapping() on the virq of the
> viodev on unregister.
> 
> Signed-off-by: Tyrel Datwyler 

Applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/b8f89fea599d91e674497aad572613

cheers


Re: [PATCH] powerpc/vio: dispose of virq mapping on vdevice unregister

2017-10-25 Thread Michael Ellerman
Tyrel Datwyler  writes:

> Ping...
>
> Anybody, see any issues with this patch?

No it looks OK to me.

I'll put it in next. I'm going to drop the stable tag for now, I'd like
it to get some more testing. We can request a backport later.

cheers


Re: [PATCH] powerpc/vio: dispose of virq mapping on vdevice unregister

2017-10-19 Thread Tyrel Datwyler

Ping...

Anybody, see any issues with this patch?

-Tyrel

On 09/28/2017 05:19 PM, Tyrel Datwyler wrote:

When a vdevice is DLPAR removed from the system the vio subsystem doesn't
bother unmapping the virq from the irq_domain. As a result we have a virq
mapped to a hardware irq that is no longer valid for the irq_domain. A side
effect is that we are left with /proc/irq/ affinity entries, and
attempts to modify the smp_affinity of the irq will fail.

In the following observed example the kernel log is spammed by
ics_rtas_set_affinity errors after the removal of a VSCSI adapter. This is a
result of irqbalance trying to adjust the affinity every 10 seconds.

rpadlpar_io: slot U8408.E8E.10A7ACV-V5-C25 removed
ics_rtas_set_affinity: ibm,set-xive irq=655385 returns -3
ics_rtas_set_affinity: ibm,set-xive irq=655385 returns -3

This patch fixes the issue by calling irq_dispose_mapping() on the virq of the
viodev on unregister.

Cc: sta...@vger.kernel.org
Signed-off-by: Tyrel Datwyler 
---
  arch/powerpc/kernel/vio.c | 2 ++
  1 file changed, 2 insertions(+)

diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c
index 5f8dcda..a3228d6 100644
--- a/arch/powerpc/kernel/vio.c
+++ b/arch/powerpc/kernel/vio.c
@@ -1577,6 +1577,8 @@ static struct device_attribute vio_dev_attrs[] = {
  void vio_unregister_device(struct vio_dev *viodev)
  {
device_unregister(>dev);
+   if (viodev->family == VDEVICE)
+   irq_dispose_mapping(viodev->irq);
  }
  EXPORT_SYMBOL(vio_unregister_device);





[PATCH] powerpc/vio: dispose of virq mapping on vdevice unregister

2017-09-28 Thread Tyrel Datwyler
When a vdevice is DLPAR removed from the system the vio subsystem doesn't
bother unmapping the virq from the irq_domain. As a result we have a virq
mapped to a hardware irq that is no longer valid for the irq_domain. A side
effect is that we are left with /proc/irq/ affinity entries, and
attempts to modify the smp_affinity of the irq will fail.

In the following observed example the kernel log is spammed by
ics_rtas_set_affinity errors after the removal of a VSCSI adapter. This is a
result of irqbalance trying to adjust the affinity every 10 seconds.

rpadlpar_io: slot U8408.E8E.10A7ACV-V5-C25 removed
ics_rtas_set_affinity: ibm,set-xive irq=655385 returns -3
ics_rtas_set_affinity: ibm,set-xive irq=655385 returns -3

This patch fixes the issue by calling irq_dispose_mapping() on the virq of the
viodev on unregister.

Cc: sta...@vger.kernel.org
Signed-off-by: Tyrel Datwyler 
---
 arch/powerpc/kernel/vio.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c
index 5f8dcda..a3228d6 100644
--- a/arch/powerpc/kernel/vio.c
+++ b/arch/powerpc/kernel/vio.c
@@ -1577,6 +1577,8 @@ static struct device_attribute vio_dev_attrs[] = {
 void vio_unregister_device(struct vio_dev *viodev)
 {
device_unregister(>dev);
+   if (viodev->family == VDEVICE)
+   irq_dispose_mapping(viodev->irq);
 }
 EXPORT_SYMBOL(vio_unregister_device);
 
-- 
1.7.12.4