On Tue, Oct 24, 2023, at 18:18, Lizhi Hou wrote: > On 10/24/23 06:27, Arnd Bergmann wrote: >> On Mon, Oct 23, 2023, at 18:05, Arnd Bergmann wrote: >> >> aarch64-linux-ld: drivers/media/pci/mgb4/mgb4_core.o: in function `init_i2c': mgb4_core.c:(.text+0x3ec): undefined reference to `xdma_get_user_irq' >> aarch64-linux-ld: mgb4_core.c:(.text+0x404): undefined reference to `xdma_enable_user_irq' >> >> I couldn't easily figure out what a 'user_irq' is here, >> but I wonder if this is the expected way to use the DMA engine >> layer. Maybe this should have been a nested irqchip instead, >> or it should be encoded in the DMA request specifier? > > Hi Arnd, > > Here is a brief description of 'user_irq' and 'xdma_enable_user_irq' > > The XDMA subsystem is used in conjunction with the PCIe IP block. Please > see https://lwn.net/Articles/911496/ for the overall information. > > XDMA can forward PCIe msi-x interrupt to/from user logic hardware (e.g. > Digiteq device) which is connected to its user irq pin. And XDMA has a > register to enable/disabe interrupt forwarding for a specific user irq pin. > > 'xdma_enable_user_irq' and 'xdma_disable_user_irq' are provided for > hardware driver which is designed to use XDMA to enable/disable its > interrupt. And based on the previous discussion with Mark, Digiteq > device does not use its own register to enable/disable interrupt but > relies on XDMA. Please see > https://lore.kernel.org/lkml/daccee4a-ac3c-bfc1-4876-24e6ecf5bcf1@xxxxxxxxxx/ Ok, in this case, I would suggest using 'depends on XILINX_XDMA' instead of the 'select' statement. I'll send a v2. Arnd