On Wed, Nov 18, 2020 at 05:04:36PM +0800, liulongfang wrote: > On 2020/11/18 15:02, Greg KH Wrote: > > On Wed, Nov 18, 2020 at 11:36:13AM +0800, Longfang Liu wrote: > >> The HCE(Host Controller Error) event has been defined in > >> the XHCI driver but has not been used. If we want to use > >> the HCE event to reset the controller, can we implement > >> it in the interrupt function as follows: > >> > >> xhci_irq() > >> |----xhci_halt() > >> |----xhci_shutdown() > >> |----xhci_start() > >> |----xhci_run() > >> > >> Signed-off-by: Longfang Liu <liulongfang@xxxxxxxxxx> > >> --- > >> drivers/usb/host/xhci-ring.c | 10 ++++++++++ > >> 1 file changed, 10 insertions(+) > > > > $ ./scripts/get_maintainer.pl --file drivers/usb/host/xhci-ring.c > > Mathias Nyman <mathias.nyman@xxxxxxxxx> (supporter:USB XHCI DRIVER) > > Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> (supporter:USB SUBSYSTEM) > > linux-usb@xxxxxxxxxxxxxxx (open list:USB XHCI DRIVER) > > linux-kernel@xxxxxxxxxxxxxxx (open list) > > > > Any reason to not include the maintainer of the xhci driver here? > OK, I will include the maintainer in the next patch. > > > >> diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c > >> index 2c255d0..87b3a40 100644 > >> --- a/drivers/usb/host/xhci-ring.c > >> +++ b/drivers/usb/host/xhci-ring.c > >> @@ -2857,6 +2857,16 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) > >> goto out; > >> } > >> > >> + if (status & STS_HCE) { > >> + xhci_warn(xhci, "WARNING: Host Controller Error\n"); > >> + xhci_halt(xhci); > >> + xhci_shutdown(hcd); > >> + xhci_start(xhci); > >> + xhci_run(hcd); > >> + ret = IRQ_HANDLED; > >> + goto out; > >> + } > >> + > > > > Does this fix a real problem for you? Are you sure we will not suddenly > > start resetting devices that were working properly and sending this > > error incorrectly? How did you test this? > > > > thanks, > > > > greg k-h > > . > > > Yes, we want to add a RAS feature to the USB, What is "RAS"? > Use the HCE event to trigger the reset operation of the USB controller. Is that allowed by the XHCI specification? > By searching for the current xhci driver, the driver did not handle HCE event. > In fact, I am not sure if other operations will cause HCE, The HCE event is > used to reset the USB controller according to the definition of the event. What generates that event? Do existing controllers do that today? What causes it? > I test this reset operation through the Sysfs file, but have not tested all usage scenarios. What sysfs file? thanks, greg k-h