[PATCH v2 0/4] Support xen-driven USB3 debug capability

From: Connor Davis
Date: Thu May 13 2021 - 20:57:40 EST


Hi all,

This goal of this series is to allow the USB3 debug capability (DbC) to be
safely used by xen while linux runs as dom0.

The first patch prevents the early DbC driver from using an
already-running DbC.

The second exports xen_dbgp_reset_prep and xen_dbgp_external_startup
functions when CONFIG_XEN_DOM0 is enabled so they may be used by the
xHCI driver.

The third ensures that xen_dbgp_reset_prep/xen_dbgp_external_startup
return consistent values in failure cases. This inconsistency illustrated
another issue: dbgp_reset_prep returned the value of xen_dbgp_reset_prep
if it was nonzero, but callers of dbgp_reset_prep interpret nonzero
as "keep using the debug port" and would eventually (needlessly) call
dbgp_external_startup. Patch three _should_ fix this issue, but
I don't have any EHCI hardware available to test unfortunately.

The last uses the xen_dbgp_* functions to notify xen of unsafe periods
(e.g. reset and D3hot transition).

Thanks,
Connor

--
Changes since v1:
- Added patch for dbgp return value fixes
- Return -EPERM when !xen_initial_domain() in xen_dbgp_op
- Moved #ifdef-ary out of xhci.c into xhci-dbgcap.h

--
Connor Davis (4):
usb: early: Avoid using DbC if already enabled
xen: Export dbgp functions when CONFIG_XEN_DOM0 is enabled
usb: dbgp: Fix return values for reset prep and startup
usb: xhci: Notify xen when DbC is unsafe to use

drivers/usb/early/ehci-dbgp.c | 9 ++++---
drivers/usb/early/xhci-dbc.c | 10 ++++++++
drivers/usb/host/xhci-dbgcap.h | 19 ++++++++++++++
drivers/usb/host/xhci.c | 47 ++++++++++++++++++++++++++++++++++
drivers/usb/host/xhci.h | 1 +
drivers/xen/dbgp.c | 4 +--
include/linux/usb/ehci-dbgp.h | 14 ++++++----
7 files changed, 94 insertions(+), 10 deletions(-)


base-commit: 88b06399c9c766c283e070b022b5ceafa4f63f19
--
2.31.1