|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1 03/10] xue: add support for selecting specific xhci
On 07.06.2022 16:30, Marek Marczykowski-Górecki wrote:
> --- a/docs/misc/xen-command-line.pandoc
> +++ b/docs/misc/xen-command-line.pandoc
> @@ -721,10 +721,15 @@ Available alternatives, with their meaning, are:
>
> ### dbgp
> > `= ehci[ <integer> | @pci<bus>:<slot>.<func> ]`
> +> `= xue[ <integer> | @pci<bus>:<slot>.<func> ]`
>
> Specify the USB controller to use, either by instance number (when going
> over the PCI busses sequentially) or by PCI device (must be on segment 0).
>
> +Use `ehci` for EHCI debug port, use `xue` for XHCI debug capability.
Ah, this answers one of my questions on patch 1. But I still think
the option should appear here in patch 1, with this patch extending
it (and its doc).
> --- a/xen/drivers/char/xue.c
> +++ b/xen/drivers/char/xue.c
> @@ -204,6 +204,7 @@ struct xue {
> void *xhc_mmio;
>
> int open;
> + int xhc_num; /* look for n-th xhc */
unsigned int?
> @@ -252,24 +253,34 @@ static int xue_init_xhc(struct xue *xue)
> uint64_t bar1;
> uint64_t devfn;
>
> - /*
> - * Search PCI bus 0 for the xHC. All the host controllers supported so
> far
> - * are part of the chipset and are on bus 0.
> - */
> - for ( devfn = 0; devfn < 256; devfn++ ) {
> - uint32_t dev = (devfn & 0xF8) >> 3;
> - uint32_t fun = devfn & 0x07;
> - pci_sbdf_t sbdf = PCI_SBDF(0, dev, fun);
> - uint32_t hdr = pci_conf_read8(sbdf, PCI_HEADER_TYPE);
> -
> - if ( hdr == 0 || hdr == 0x80 )
> + if ( xue->sbdf.sbdf == 0 )
> + {
> + /*
> + * Search PCI bus 0 for the xHC. All the host controllers supported
> so far
> + * are part of the chipset and are on bus 0.
> + */
> + for ( devfn = 0; devfn < 256; devfn++ )
> {
> - if ( (pci_conf_read32(sbdf, PCI_CLASS_REVISION) >> 8) ==
> XUE_XHC_CLASSC )
> + uint32_t dev = (devfn & 0xF8) >> 3;
> + uint32_t fun = devfn & 0x07;
> + pci_sbdf_t sbdf = PCI_SBDF(0, dev, fun);
> + uint32_t hdr = pci_conf_read8(sbdf, PCI_HEADER_TYPE);
> +
> + if ( hdr == 0 || hdr == 0x80 )
> {
> - xue->sbdf = sbdf;
> - break;
> + if ( (pci_conf_read32(sbdf, PCI_CLASS_REVISION) >> 8) ==
> XUE_XHC_CLASSC )
> + {
> + if ( xue->xhc_num-- )
> + continue;
> + xue->sbdf = sbdf;
> + break;
> + }
> }
> }
> + } else {
Nit:
}
else
{
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |