Majun, On Tue, 13 Oct 2015, majun (F) wrote: > 在 2015/10/12 0:45, Thomas Gleixner 写道: > > So now in the mbigen case this looks like this: > > > > [MSI-BUS] ----- [MBIGEN]<-------------------[Device interrupt] > > > > Again, you have a 'wire' from the device to the MSI unit (MBIGEN) and > > we do not care about that 'wire' either. What we care about is how we > > find the MSI (mbigen) configuration registers for a particular > > device. So we need a DT/ACPI entry which describes those configuration > > registers and whatever supplementary information is required. That > > will make the mbigen driver extremly simple. > > > > According to your suggestions, I tried to make the hardware structure likes > below: > > device(8250 uart) -> mbigne -> ITS-pMSI --> ITS --> GIC
I'm not sure whether mbigen should be connected to ITS-pMSI (I assume you mean ITS-PCI-MSI). mbigen is a seperate MSI domain, so it should connect to ITS, but I leave that to Marc. > And 8250 uart dts node is: > > 8250_uart { > compatible = "xxx"; > msi-parent = < &mbigen>; > config_addr = <xxxxx> ; /* configuration register */ > interrupts = <x>; > interrupt-parent = ? > } > > My question is what's the interrupt-parent should be? There is no interrupt parent for 8250_uart. Why would you want that? I'm really not a DT expert, but I think you want something like this: 8250_uart { compatible = "xxx"; msi-parent = < &mbigen_node5>; interrupt-map = <&mbigen5 0>; }; and then have mbigen_node5 { ... reg = <....>; }; So the other devices which are connected to mbigen_node5 have the same msi-parent. But then again, please discuss that with Marc and the DT wizards. Thanks, tglx