Re: [EXTERNAL] [tip: x86/apic] x86/io_apic: Cleanup trigger/polarity helpers

From: Suravee Suthikulpanit
Date: Wed Nov 18 2020 - 11:51:57 EST


Tglx,

On 11/18/20 9:06 PM, Thomas Gleixner wrote:
Suravee,

On Wed, Nov 18 2020 at 17:29, Suravee Suthikulpanit wrote:
On 11/17/20 9:00 AM, Suravee Suthikulpanit wrote:

I might need your help debugging this issue. I'm seeing the following error:

[ 14.005937] irq 29, desc: 00000000d200500b, depth: 0, count: 0, unhandled: 0
[ 14.006234] ->handle_irq(): 00000000eab4b6eb, handle_bad_irq+0x0/0x230
[ 14.006234] ->irq_data.chip(): 000000001cce6d6b, intcapxt_controller+0x0/0x120
[ 14.006234] ->action(): 0000000083bfd734
[ 14.006234] ->action->handler(): 0000000094806345, amd_iommu_int_handler+0x0/0x10
[ 14.006234] unexpected IRQ trap at vector 1d

Do you have any idea what might have gone wrong here?

Yes. This lacks setting up the low level flow handler. Delta patch
below.

Thanks,

tglx
---
--- a/drivers/iommu/amd/init.c
+++ b/drivers/iommu/amd/init.c
@@ -2033,6 +2033,7 @@ static int intcapxt_irqdomain_alloc(stru
irqd->chip = &intcapxt_controller;
irqd->chip_data = info->data;
+ __irq_set_handler(i, handle_edge_irq, 0, "edge");
}
return ret;


Yes, this fixes the issue. Now I can receive the IOMMU event log interrupts for IO_PAGE_FAULT event, which is triggered using the injection interface via debugfs.

Thanks,
Suravee