well, checked it again, creating an generic xhci may take much efforts and it is far beyond than my main task of creating an arm server platform, so I'll create a generic system ehci, it satisfies our requirements very well, will send it out separately.
On Wed, 21 Nov 2018 at 16:35, Hongbo Zhang <hongbo.zh...@linaro.org> wrote: > > Well, considering all the comments/suggestions I received, I'd like to > try to create a generic sysbus xhci. > This would take some time for me, so my plan is to send out a new v5 > iteration of this sbsa-ref patch with updates according to Peter's > comments, but without any xhci feature this time, and later I'll > create the sysbus xhci with another patch set, including adding this > new xhci to the sbsa-ref platform. > Advantage of doing so: this won't make the sbsa-ref patch too > complicated to review, and the xhci work won't block the process of > sbsa-ref work. > > On Tue, 20 Nov 2018 at 17:40, Ard Biesheuvel <ard.biesheu...@linaro.org> > wrote: > > > > On Tue, 20 Nov 2018 at 09:49, Hongbo Zhang <hongbo.zh...@linaro.org> wrote: > > > > > > On Tue, 20 Nov 2018 at 16:16, Gerd Hoffmann <kra...@redhat.com> wrote: > > > > > > > > Hi, > > > > > > > > > > But I assume you specifically want things that do a lot of DMA, so I > > > > > > couldn't get away with asking for keeping it to the SBSA UART(s)? :) > > > > > > > > > > Ideally, it would be something that supports platform MSIs as well, > > > > > but that is unlikely to be a priority for anyone (and i would be very > > > > > surprised if any of QEMU's sysbus host controllers implement that at > > > > > the moment) > > > > > > > > > > I can live with just sysbus AHCI, though, if EHCI/XHCI are too > > > > > cumbersome. > > > > > > > > Generic sysbus ehci should not be difficuilt, 10 lines patch or so. > > > > > > > > Gives you only usb2 though. usb1 devices are handled either via ohci > > > > companion controller (should be doable), or via integrated usb2 hub > > > > (more common on recent hardware, but qemu usb-hub is usb1 only). > > > > > > > > Generic sysbus xhci would be more work. But you'll get usb 1+2+3 > > > > support. And wiring up platform MSIs should be possible too. > > > > > > > In kernel, these drivers are enabled by default: > > > CONFIG_USB_XHCI_PLATFORM=y > > > CONFIG_USB_EHCI_HCD_PLATFORM=y > > > CONFIG_USB_OHCI_HCD_PLATFORM=y > > > > > > If we do generic EHCI or XHCI in qemu, can the driver in kernel work > > > with it? (I guess yes?) > > > My thought is if the available kernel driver will work without any > > > change, then we can create it in qemu. > > > > > > > Yes that should work. Our MacchiatoBin DSDT has the following for its > > XHCI controllers: > > > > Device (XHC0) > > { > > Name (_HID, "PNP0D10") // _HID: Hardware ID > > Name (_UID, 0x00) // _UID: Unique ID > > Name (_CCA, 0x01) // _CCA: Cache Coherency Attribute > > > > Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings > > { > > Memory32Fixed (ReadWrite, > > 0xF2500000, // Address Base (MMIO) > > 0x00004000, // Address Length > > ) > > Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, ) > > { > > CP_GIC_SPI_CP0_USB_H0 > > } > > }) > > } > > > > and this gets picked up by the kernel without problems. > > > > Wiring up platform MSIs would involve modifying the IORT as well, > > which is one of the reasons I'd prefer to make these fixed devices: we > > cannot rely on qemu_fw_cfg to generate it for us, and adding a lot of > > new code to generate this on the fly is simply not worth the effort.