Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

usb: xhci: add comments explaining specific interrupt behaviour

HCD does not allocate or request interrupt for the xhci driver, but HCD
does free and sync xhci interrupts in some cases. Add comment detailing
in which cases HCD will free/sync xhci interrupts.

Signed-off-by: Niklas Neronin <niklas.neronin@linux.intel.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20240905143300.1959279-9-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Niklas Neronin and committed by
Greg Kroah-Hartman
77d871ae 811cd6ed

+5 -2
+5 -2
drivers/usb/host/xhci-pci.c
··· 93 93 .update_hub_device = xhci_pci_update_hub_device, 94 94 }; 95 95 96 + /* 97 + * Primary Legacy and MSI IRQ are synced in suspend_common(). 98 + * All MSI-X IRQs and secondary MSI IRQs should be synced here. 99 + */ 96 100 static void xhci_msix_sync_irqs(struct xhci_hcd *xhci) 97 101 { 98 102 struct usb_hcd *hcd = xhci_to_hcd(xhci); ··· 109 105 } 110 106 } 111 107 112 - /* Free any IRQs and disable MSI-X */ 108 + /* Legacy IRQ is freed by usb_remove_hcd() or usb_hcd_pci_shutdown() */ 113 109 static void xhci_cleanup_msix(struct xhci_hcd *xhci) 114 110 { 115 111 struct usb_hcd *hcd = xhci_to_hcd(xhci); 116 112 struct pci_dev *pdev = to_pci_dev(hcd->self.controller); 117 113 118 - /* return if using legacy interrupt */ 119 114 if (hcd->irq > 0) 120 115 return; 121 116