Use MSI(LPIs) in Linux kernel 6.12.y

Hello, I have resolved the issues regarding interrupt and DeviceID assignment

However, I still have some questions regarding how the EventID is implemented and allocated.

Looking at the ITS driver (drivers/irqchip/irq-gic-v3-its.c), I noticed the following:

Fullscreen
1
2
3
4
5
static inline u32 its_get_event_id(struct irq_data *d)
{
struct its_device *its_dev = irq_data_get_irq_chip_data(d);
return d->hwirq - its_dev->event_map.lpi_base;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

It appears that the EventID is set as the difference between the hwirq information in the irq data and the lpi base (8192).

How should the hwirq information be passed to the driver?

My device tree binding information is as follows:

Fullscreen
1
2
3
4
5
6
7
/ {
dummy: dummy@1a00a0000 {
compatible = "dummy,dev";
reg = <0x1 0xa00a0000 0x0 0x1000>;
msi-parent = <&its0 0x1>;
};
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Alternatively, is my understanding incorrect?

Thank you.
0