On Fri, Apr 14, 2023 at 03:16:14PM +0900, Yoshihiro Shimoda wrote: > Add support for triggering legacy IRQs by using outbound iATU. > Outbound iATU is utilized to send assert and de-assert INTx TLPs. > The message is generated based on the payloadless Msg TLP with type > 0x14, where 0x4 is the routing code implying the terminated at > Receiver message. The message code is specified as b1000xx for > the INTx assertion and b1001xx for the INTx de-assertion. s/terminated at Receiver/Terminate at Receiver/, since I assume this refers to the Message Routing mechanisms in Table 2-20 in sec 2.2.8. I have a slight preference for using "INTx" instead of "legacy IRQ" in subject, commit log, function names, etc because it's more specific. "Legacy" is clear now, but tends to become obscure over time as more and more features are added. Eventually it just means "something old that we don't like anymore." > +static int __dw_pcie_ep_raise_legacy_irq(struct dw_pcie_ep *ep, u8 func_no, > + int intx) > +{ > + int ret; > + > + ret = dw_pcie_ep_send_msg(ep, func_no, PCI_CODE_ASSERT_INTA + intx, > + PCI_MSG_ROUTING_LOCAL); > + if (ret) > + return ret; > + > + usleep_range(1000, 2000); Where do these values (1000, 2000) come from? Spec reference would be good if there is one. Bjorn