From 6100dda70d84be83d131c3b35cb9c00f7b07db15 Mon Sep 17 00:00:00 2001 From: Alexey Kardashevskiy Date: Mon, 11 Sep 2017 16:56:06 +1000 Subject: [PATCH 1/4] xhci: Avoid DMA when ERSTBA is set to zero The existing XHCI code reads the Event Ring Segment Table Base Address Register (ERSTBA) every time when it is changed. However zero is its default state so one would think that zero there means it is not in use. This adds a check for ERSTBA in addition to the existing check for the Event Ring Segment Table Size Register (ERSTSZ). Signed-off-by: Alexey Kardashevskiy Message-id: 20170911065606.40600-1-aik@ozlabs.ru Signed-off-by: Gerd Hoffmann --- hw/usb/hcd-xhci.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c index 204ea69d3f..d75c085d94 100644 --- a/hw/usb/hcd-xhci.c +++ b/hw/usb/hcd-xhci.c @@ -811,8 +811,9 @@ static void xhci_er_reset(XHCIState *xhci, int v) { XHCIInterrupter *intr = &xhci->intr[v]; XHCIEvRingSeg seg; + dma_addr_t erstba = xhci_addr64(intr->erstba_low, intr->erstba_high); - if (intr->erstsz == 0) { + if (intr->erstsz == 0 || erstba == 0) { /* disabled */ intr->er_start = 0; intr->er_size = 0; @@ -824,7 +825,6 @@ static void xhci_er_reset(XHCIState *xhci, int v) xhci_die(xhci); return; } - dma_addr_t erstba = xhci_addr64(intr->erstba_low, intr->erstba_high); pci_dma_read(PCI_DEVICE(xhci), erstba, &seg, sizeof(seg)); le32_to_cpus(&seg.addr_low); le32_to_cpus(&seg.addr_high); From 104ebc5f2ce4edb575e3532ab93f75acf47feda8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Fri, 8 Sep 2017 14:36:24 -0300 Subject: [PATCH 2/4] MAINTAINERS: add missing USB entry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Thomas Huth Signed-off-by: Gerd Hoffmann --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 36eeb42d19..2c333aba21 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -999,6 +999,7 @@ F: docs/usb2.txt F: docs/usb-storage.txt F: include/hw/usb.h F: include/hw/usb/ +F: default-configs/usb.mak USB (serial adapter) M: Gerd Hoffmann From 4e5ee5b21c84fe3023a64b5cc2e12a52ab0597c1 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 8 Sep 2017 13:12:16 +0200 Subject: [PATCH 3/4] usb: drop HOST_USB Nowdays we use libusb for usb-host, so we don't have different code for linux vs. bsd any more. So there is little reason to have the HOST_USB variable, we can just write things directly into the Makefile and avoid a pointless indirection. Signed-off-by: Gerd Hoffmann Reviewed-by: Fam Zheng Reviewed-by: Thomas Huth Message-id: 20170908111217.21985-2-kraxel@redhat.com --- configure | 7 ------- hw/usb/Makefile.objs | 6 +++++- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/configure b/configure index fd7e3a5e81..5367260c80 100755 --- a/configure +++ b/configure @@ -5967,13 +5967,6 @@ if test "$live_block_migration" = "yes" ; then echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak fi -# USB host support -if test "$libusb" = "yes"; then - echo "HOST_USB=libusb legacy" >> $config_host_mak -else - echo "HOST_USB=stub" >> $config_host_mak -fi - # TPM passthrough support? if test "$tpm" = "yes"; then echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak diff --git a/hw/usb/Makefile.objs b/hw/usb/Makefile.objs index 97f1c4561a..a43ebbc17f 100644 --- a/hw/usb/Makefile.objs +++ b/hw/usb/Makefile.objs @@ -38,7 +38,11 @@ endif common-obj-$(CONFIG_USB_REDIR) += redirect.o quirks.o # usb pass-through -common-obj-y += $(patsubst %,host-%.o,$(HOST_USB)) +ifeq ($(CONFIG_LIBUSB),y) +common-obj-y += host-libusb.o host-legacy.o +else +common-obj-y += host-stub.o +endif ifeq ($(CONFIG_USB_LIBUSB),y) common-obj-$(CONFIG_XEN) += xen-usb.o From 2041649f0b04f61869589571ddf5ecd4f0695ea2 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 8 Sep 2017 13:12:17 +0200 Subject: [PATCH 4/4] usb: only build usb-host with CONFIG_USB=y Signed-off-by: Gerd Hoffmann Reviewed-by: Fam Zheng Reviewed-by: Thomas Huth Tested-by: Thomas Huth Message-id: 20170908111217.21985-3-kraxel@redhat.com --- hw/usb/Makefile.objs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/usb/Makefile.objs b/hw/usb/Makefile.objs index a43ebbc17f..757e365562 100644 --- a/hw/usb/Makefile.objs +++ b/hw/usb/Makefile.objs @@ -38,7 +38,7 @@ endif common-obj-$(CONFIG_USB_REDIR) += redirect.o quirks.o # usb pass-through -ifeq ($(CONFIG_LIBUSB),y) +ifeq ($(CONFIG_LIBUSB)$(CONFIG_USB),yy) common-obj-y += host-libusb.o host-legacy.o else common-obj-y += host-stub.o