* [PULL 0/5] Misc patches before the v11.2 softfreeze
@ 2026-11-02 16:30 Thomas Huth
2026-11-02 16:30 ` [PULL 1/5] tests: Add a target to run all tests in thorough mode Thomas Huth
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Thomas Huth @ 2026-11-02 16:30 UTC (permalink / raw)
To: qemu-devel, Richard Henderson; +Cc: Junjie Cao, Peter Maydell
Hi Richard!
The following changes since commit 56afd82bd4db9688f1c1c9d0e2ea163b8cde3283:
Merge tag 'qemu-sparc-20261101' of https://github.com/mcayland/qemu into staging (2026-11-01 08:37:48 -0800)
are available in the Git repository at:
https://gitlab.com/thuth/qemu.git tags/pull-request-2026-11-02
for you to fetch changes up to 213c716c58738be9d39488e56e6d6ed25dacd14e:
tests/qtest/usb-hcd-xhci: test Address Device with an unreadable DCBAA (2026-11-02 15:34:15 +0100)
----------------------------------------------------------------
* Add a "check-thorough" test target
* Make sure that the next-cube machine shows a deprecation note
* Reset the open retry count after a successful open in the usb-host code
* Make sure that XHCI code does not ignore failure when reading the DCBAA
Note: I really don't have time to look for USB patches anymore, so after
this pull request, I'll stop helping out here. We really need a
dedicated person acting as a maintainer for the USB code...
----------------------------------------------------------------
Junjie Cao (3):
usb-host: reset the open retry count after a successful open
hw/usb/hcd-xhci: fail Address Device when the DCBAA entry is unreadable
tests/qtest/usb-hcd-xhci: test Address Device with an unreadable DCBAA
Peter Maydell (1):
hw/m68k/next-cube: Show deprecation notice to users
Thomas Huth (1):
tests: Add a target to run all tests in thorough mode
hw/m68k/next-cube.c | 1 +
hw/usb/hcd-xhci.c | 41 ++++++++++++-------
hw/usb/host-libusb.c | 1 +
tests/qtest/usb-hcd-xhci-test.c | 87 +++++++++++++++++++++++++++++++++++------
tests/Makefile.include | 13 ++++--
5 files changed, 114 insertions(+), 29 deletions(-)
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PULL 1/5] tests: Add a target to run all tests in thorough mode
2026-11-02 16:30 [PULL 0/5] Misc patches before the v11.2 softfreeze Thomas Huth
@ 2026-11-02 16:30 ` Thomas Huth
2026-11-02 16:30 ` [PULL 2/5] hw/m68k/next-cube: Show deprecation notice to users Thomas Huth
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Thomas Huth @ 2026-11-02 16:30 UTC (permalink / raw)
To: qemu-devel, Richard Henderson; +Cc: Junjie Cao, Peter Maydell
"make check SPEED=thorough" is a little bit clunky to type and many
people are not aware of this nice possibility to run almost all test
in parallel this way. So add a "check-thorough" target that makes this
way of running the tests a little bit more accessible.
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20261026093034.516604-1-thuth@redhat.com>
---
tests/Makefile.include | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 9f82552ab54..a1f60802b9b 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -4,6 +4,7 @@
check-help:
@echo "Regression testing targets:"
@echo " $(MAKE) check Run block, qapi-schema, unit, softfloat, qtest and decodetree tests"
+ @echo " $(MAKE) check-thorough Download assets and run almost all non-flaky tests"
@echo " $(MAKE) bench Run speed tests"
@echo
@echo "Individual test suites:"
@@ -46,10 +47,13 @@ FUNCTIONAL_TARGETS=$(patsubst %-softmmu,check-functional-%, $(filter %-softmmu,$
$(FUNCTIONAL_TARGETS):
@$(MAKE) SPEED=thorough $(subst -functional,-func,$@)
-.PHONY: check-functional
-check-functional:
+.PHONY: check-functional-precache
+check-functional-precache:
@$(NINJA) precache-functional
@$(PYTHON) $(SRC_PATH)/scripts/clean_functional_cache.py
+
+.PHONY: check-functional
+check-functional: check-functional-precache
@QEMU_TEST_NO_DOWNLOAD=1 $(MAKE) SPEED=thorough check-func check-func-quick
.PHONY: check-func check-func-quick
@@ -57,9 +61,12 @@ check-func check-func-quick:
# Consolidated targets
-.PHONY: check check-clean
+.PHONY: check check-thorough check-clean
check:
+check-thorough: check-functional-precache
+ $(MAKE) check SPEED=thorough QEMU_TEST_NO_DOWNLOAD=1
+
check-build: run-ninja
check-clean:
--
2.56.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PULL 2/5] hw/m68k/next-cube: Show deprecation notice to users
2026-11-02 16:30 [PULL 0/5] Misc patches before the v11.2 softfreeze Thomas Huth
2026-11-02 16:30 ` [PULL 1/5] tests: Add a target to run all tests in thorough mode Thomas Huth
@ 2026-11-02 16:30 ` Thomas Huth
2026-11-02 16:30 ` [PULL 3/5] usb-host: reset the open retry count after a successful open Thomas Huth
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Thomas Huth @ 2026-11-02 16:30 UTC (permalink / raw)
To: qemu-devel, Richard Henderson; +Cc: Junjie Cao, Peter Maydell
From: Peter Maydell <peter.maydell@linaro.org>
In commit 5d3333e12a034 we deprecated the next-cube machine, but
forgot to set its MachineClass::deprecation_reason. Add that, so
that anybody running the machine is shown the warning that it's
now deprecated.
Fixes: 5d3333e12a034 ("docs/about: Deprecate the 'next-cube' m68k machine")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20261030100659.781819-1-peter.maydell@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
hw/m68k/next-cube.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c
index d8cb4a8c23d..0d927c7b485 100644
--- a/hw/m68k/next-cube.c
+++ b/hw/m68k/next-cube.c
@@ -1370,6 +1370,7 @@ static void next_machine_class_init(ObjectClass *oc, const void *data)
mc->default_ram_id = "next.ram";
mc->default_cpu_type = M68K_CPU_TYPE_NAME("m68040");
mc->no_cdrom = true;
+ mc->deprecation_reason = "machine is incomplete and cannot boot a kernel";
}
static const TypeInfo next_typeinfo = {
--
2.56.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PULL 3/5] usb-host: reset the open retry count after a successful open
2026-11-02 16:30 [PULL 0/5] Misc patches before the v11.2 softfreeze Thomas Huth
2026-11-02 16:30 ` [PULL 1/5] tests: Add a target to run all tests in thorough mode Thomas Huth
2026-11-02 16:30 ` [PULL 2/5] hw/m68k/next-cube: Show deprecation notice to users Thomas Huth
@ 2026-11-02 16:30 ` Thomas Huth
2026-11-02 16:30 ` [PULL 4/5] hw/usb/hcd-xhci: fail Address Device when the DCBAA entry is unreadable Thomas Huth
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Thomas Huth @ 2026-11-02 16:30 UTC (permalink / raw)
To: qemu-devel, Richard Henderson; +Cc: Junjie Cao, Peter Maydell
From: Junjie Cao <junjie.cao@linux.dev>
usb_host_auto_check() gives up on a matching device once three opens
have failed, and clears the failure count only when a scan finds no
matching device at all. A device that re-enumerates, e.g. after a
firmware reboot, is closed on NO_DEVICE and usb_host_close() rescans at
once, while libusb still lists the old address: that open fails and
counts, the next 2 s scan opens the new address, and nothing clears the
count. After the third such cycle the device is skipped until a scan
finds it absent or the usb-host device is re-added.
Clear the count once an open succeeds. A device that cannot be opened at
all still stops after three attempts.
The source-level fixture attached to #4673 reproduces the same sequence;
its remaining cases expect a failure budget per enumerated device, which
this change does not add.
Fixes: 3ee886c5ba77 ("usb-host: limit open retries")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/4631
Buglink: https://gitlab.com/qemu-project/qemu/-/issues/4673
Cc: qemu-stable@nongnu.org
Reported-by: Farid <fa1rid@live.com>
Reported-by: Prateek Rungta <https://gitlab.com/prateek2>
Suggested-by: Farid <fa1rid@live.com>
Signed-off-by: Junjie Cao <junjie.cao@linux.dev>
Message-ID: <20261028160727.780978-1-junjie.cao@linux.dev>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
hw/usb/host-libusb.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c
index 8f7ced95cfe..5a369e2ebf5 100644
--- a/hw/usb/host-libusb.c
+++ b/hw/usb/host-libusb.c
@@ -1924,6 +1924,7 @@ static void usb_host_auto_check(void *unused)
s->errcount++;
continue;
}
+ s->errcount = 0;
break;
}
}
--
2.56.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PULL 4/5] hw/usb/hcd-xhci: fail Address Device when the DCBAA entry is unreadable
2026-11-02 16:30 [PULL 0/5] Misc patches before the v11.2 softfreeze Thomas Huth
` (2 preceding siblings ...)
2026-11-02 16:30 ` [PULL 3/5] usb-host: reset the open retry count after a successful open Thomas Huth
@ 2026-11-02 16:30 ` Thomas Huth
2026-11-02 16:30 ` [PULL 5/5] tests/qtest/usb-hcd-xhci: test Address Device with an unreadable DCBAA Thomas Huth
2026-11-03 15:24 ` [PULL 0/5] Misc patches before the v11.2 softfreeze Richard Henderson
5 siblings, 0 replies; 7+ messages in thread
From: Thomas Huth @ 2026-11-02 16:30 UTC (permalink / raw)
To: qemu-devel, Richard Henderson; +Cc: Junjie Cao, Peter Maydell
From: Junjie Cao <junjie.cao@linux.dev>
xhci_address_slot() ignores the result of reading the slot's DCBAA
entry. When that read fails the output context pointer is whatever the
failed read left behind, zero for unassigned memory, so the slot and
ep0 contexts land at guest address 0 and the command completes with
Success.
Log the failed read and raise HCE, as the context DMA helpers do, and
return TRB Error, as Address Device already does for an unreadable
input control context. xhci_die() only flags HCE and leaves the
controller running; the HSE and halt of xHCI 1.2 section 4.10.2.6 are
not added here.
usb_xhci_post_load() reads the same entry; a failure there now disables
the slot, as an unresolvable slot context already does.
Fixes: 62c6ae04cf43 ("xhci: Initial xHCI implementation")
Fixes: 37352df30fbc ("xhci: add live migration support")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/4706
Cc: qemu-stable@nongnu.org
Signed-off-by: Junjie Cao <junjie.cao@linux.dev>
Message-ID: <20261031033725.1275414-2-junjie.cao@linux.dev>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
hw/usb/hcd-xhci.c | 41 +++++++++++++++++++++++++++--------------
1 file changed, 27 insertions(+), 14 deletions(-)
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 5d7a77b8bcf..b5cc1ad2ff5 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -534,6 +534,23 @@ static inline void xhci_dma_write_u32s(XHCIState *xhci, dma_addr_t addr,
}
}
+static bool xhci_read_dcbaa(XHCIState *xhci, unsigned int slotid,
+ dma_addr_t *octx)
+{
+ dma_addr_t dcbaap = xhci_addr64(xhci->dcbaap_low, xhci->dcbaap_high);
+ uint64_t poctx;
+
+ if (ldq_le_dma(xhci->as, dcbaap + 8 * slotid, &poctx,
+ MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) {
+ qemu_log_mask(LOG_GUEST_ERROR, "%s: DMA memory access failed!\n",
+ __func__);
+ xhci_die(xhci);
+ return false;
+ }
+ *octx = xhci_mask64(poctx);
+ return true;
+}
+
static XHCIPort *xhci_lookup_port(XHCIState *xhci, struct USBPort *uport)
{
int index;
@@ -2103,8 +2120,7 @@ static TRBCCode xhci_address_slot(XHCIState *xhci, unsigned int slotid,
XHCISlot *slot;
USBPort *uport;
USBDevice *dev;
- dma_addr_t ictx, octx, dcbaap;
- uint64_t poctx;
+ dma_addr_t ictx, octx;
uint32_t ictl_ctx[2];
uint32_t slot_ctx[4];
uint32_t ep0_ctx[5];
@@ -2113,10 +2129,10 @@ static TRBCCode xhci_address_slot(XHCIState *xhci, unsigned int slotid,
assert(slotid >= 1 && slotid <= xhci->numslots);
- dcbaap = xhci_addr64(xhci->dcbaap_low, xhci->dcbaap_high);
- ldq_le_dma(xhci->as, dcbaap + 8 * slotid, &poctx, MEMTXATTRS_UNSPECIFIED);
+ if (!xhci_read_dcbaa(xhci, slotid, &octx)) {
+ return CC_TRB_ERROR;
+ }
ictx = xhci_mask64(pictx);
- octx = xhci_mask64(poctx);
DPRINTF("xhci: input context at "DMA_ADDR_FMT"\n", ictx);
DPRINTF("xhci: output context at "DMA_ADDR_FMT"\n", octx);
@@ -3522,24 +3538,21 @@ static int usb_xhci_post_load(void *opaque, int version_id)
XHCIState *xhci = opaque;
XHCISlot *slot;
XHCIEPContext *epctx;
- dma_addr_t dcbaap, pctx;
+ dma_addr_t pctx;
uint32_t slot_ctx[4];
uint32_t ep_ctx[5];
int slotid, epid, state;
- uint64_t addr;
-
- dcbaap = xhci_addr64(xhci->dcbaap_low, xhci->dcbaap_high);
for (slotid = 1; slotid <= xhci->numslots; slotid++) {
slot = &xhci->slots[slotid-1];
if (!slot->addressed) {
continue;
}
- ldq_le_dma(xhci->as, dcbaap + 8 * slotid, &addr, MEMTXATTRS_UNSPECIFIED);
- slot->ctx = xhci_mask64(addr);
-
- xhci_dma_read_u32s(xhci, slot->ctx, slot_ctx, sizeof(slot_ctx));
- slot->uport = xhci_lookup_uport(xhci, slot_ctx);
+ slot->uport = NULL;
+ if (xhci_read_dcbaa(xhci, slotid, &slot->ctx)) {
+ xhci_dma_read_u32s(xhci, slot->ctx, slot_ctx, sizeof(slot_ctx));
+ slot->uport = xhci_lookup_uport(xhci, slot_ctx);
+ }
if (!slot->uport) {
/* should not happen, but may trigger on guest bugs */
slot->enabled = 0;
--
2.56.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PULL 5/5] tests/qtest/usb-hcd-xhci: test Address Device with an unreadable DCBAA
2026-11-02 16:30 [PULL 0/5] Misc patches before the v11.2 softfreeze Thomas Huth
` (3 preceding siblings ...)
2026-11-02 16:30 ` [PULL 4/5] hw/usb/hcd-xhci: fail Address Device when the DCBAA entry is unreadable Thomas Huth
@ 2026-11-02 16:30 ` Thomas Huth
2026-11-03 15:24 ` [PULL 0/5] Misc patches before the v11.2 softfreeze Richard Henderson
5 siblings, 0 replies; 7+ messages in thread
From: Thomas Huth @ 2026-11-02 16:30 UTC (permalink / raw)
To: qemu-devel, Richard Henderson; +Cc: Junjie Cao, Peter Maydell
From: Junjie Cao <junjie.cao@linux.dev>
Point DCBAAP at unassigned memory before Address Device. The fixed
controller completes it with TRB Error and raises HCE; check that, and
that the 64 bytes at guest address 0, where the contexts used to be
written, stay intact. With DCBAAP restored the command then succeeds
on retry.
Signed-off-by: Junjie Cao <junjie.cao@linux.dev>
Message-ID: <20261031033725.1275414-3-junjie.cao@linux.dev>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/qtest/usb-hcd-xhci-test.c | 87 ++++++++++++++++++++++++++++-----
1 file changed, 75 insertions(+), 12 deletions(-)
diff --git a/tests/qtest/usb-hcd-xhci-test.c b/tests/qtest/usb-hcd-xhci-test.c
index add2290bffa..be09b838c5d 100644
--- a/tests/qtest/usb-hcd-xhci-test.c
+++ b/tests/qtest/usb-hcd-xhci-test.c
@@ -56,6 +56,7 @@
#define ER_TRANSFER 32
#define ER_COMMAND_COMPLETE 33
#define CC_SUCCESS 1
+#define CC_TRB_ERROR 5
#define EP_TYPE_ISOCH_OUT 1
#define EP_TYPE_CONTROL 4
@@ -64,6 +65,8 @@
#define XHCI_RING_TRBS 64
#define XHCI_MICROFRAME_NS 125000
+/* in the PCI hole of the pc machine, nothing is mapped there */
+#define XHCI_UNASSIGNED_ADDR 0xf0000000
typedef struct XHCITest {
QTestState *qts;
@@ -71,7 +74,7 @@ typedef struct XHCITest {
QPCIBus *bus;
struct qhc hc;
uint32_t oper, runtime, doorbell;
- uint64_t cmd_ring, event_ring, input_ctx;
+ uint64_t dcbaa, cmd_ring, event_ring, input_ctx;
unsigned int cmd_idx, event_idx;
unsigned int port, slot;
} XHCITest;
@@ -226,8 +229,9 @@ static bool xhci_next_event(XHCITest *x, uint32_t *status, uint32_t *control)
return true;
}
-static unsigned int xhci_command(XHCITest *x, uint64_t parameter,
- uint32_t control)
+/* Submit a command and return its completion code. */
+static unsigned int xhci_submit_command(XHCITest *x, uint64_t parameter,
+ uint32_t control, unsigned int *slot)
{
uint32_t status;
@@ -238,17 +242,30 @@ static unsigned int xhci_command(XHCITest *x, uint64_t parameter,
g_assert_true(xhci_next_event(x, &status, &control));
g_assert_cmpuint(TRB_GET_TYPE(control), ==, ER_COMMAND_COMPLETE);
- g_assert_cmpuint(TRB_GET_CCODE(status), ==, CC_SUCCESS);
- return TRB_GET_SLOT(control);
+ if (slot) {
+ *slot = TRB_GET_SLOT(control);
+ }
+ return TRB_GET_CCODE(status);
+}
+
+/* Submit a command that has to succeed and return the slot ID. */
+static unsigned int xhci_command(XHCITest *x, uint64_t parameter,
+ uint32_t control)
+{
+ unsigned int slot;
+
+ g_assert_cmpuint(xhci_submit_command(x, parameter, control, &slot), ==,
+ CC_SUCCESS);
+ return slot;
}
/*
- * Start qemu-xhci with one USB device, run the controller and bring the
- * device to the Addressed state.
+ * Start qemu-xhci with one USB device, run the controller, enable a slot
+ * for the device and fill in the input context for Address Device.
*/
-static void xhci_test_start(XHCITest *x, const char *usb_device)
+static void xhci_test_init(XHCITest *x, const char *usb_device)
{
- uint64_t dcbaa, erst, ep0_ring;
+ uint64_t erst, ep0_ring;
unsigned int maxports;
memset(x, 0, sizeof(*x));
@@ -267,14 +284,14 @@ static void xhci_test_start(XHCITest *x, const char *usb_device)
xhci_writel(x, x->oper + XHCI_USBCMD, USBCMD_HCRST);
g_assert_false(xhci_readl(x, x->oper + XHCI_USBCMD) & USBCMD_HCRST);
- dcbaa = xhci_alloc_page(x);
+ x->dcbaa = xhci_alloc_page(x);
erst = xhci_alloc_page(x);
x->cmd_ring = xhci_alloc_page(x);
x->event_ring = xhci_alloc_page(x);
x->input_ctx = xhci_alloc_page(x);
xhci_writel(x, x->oper + XHCI_CONFIG, 1);
- xhci_writeq(x, x->oper + XHCI_DCBAAP, dcbaa);
+ xhci_writeq(x, x->oper + XHCI_DCBAAP, x->dcbaa);
qtest_writeq(x->qts, erst, x->event_ring);
qtest_writel(x->qts, erst + 8, XHCI_RING_TRBS);
xhci_writel(x, x->runtime + XHCI_ERSTSZ, 1);
@@ -296,7 +313,7 @@ static void xhci_test_start(XHCITest *x, const char *usb_device)
}
x->slot = xhci_command(x, 0, TRB_TYPE(CR_ENABLE_SLOT));
- qtest_writeq(x->qts, dcbaa + 8 * x->slot, xhci_alloc_page(x));
+ qtest_writeq(x->qts, x->dcbaa + 8 * x->slot, xhci_alloc_page(x));
/* input control context: add slot and ep0 */
qtest_writel(x->qts, x->input_ctx + 0x04, 0x3);
@@ -308,6 +325,12 @@ static void xhci_test_start(XHCITest *x, const char *usb_device)
qtest_writel(x->qts, x->input_ctx + 0x44,
(64 << 16) | (EP_TYPE_CONTROL << 3));
qtest_writeq(x->qts, x->input_ctx + 0x48, ep0_ring | 1);
+}
+
+/* xhci_test_init(), then bring the device to the Addressed state. */
+static void xhci_test_start(XHCITest *x, const char *usb_device)
+{
+ xhci_test_init(x, usb_device);
xhci_command(x, x->input_ctx,
TRB_TYPE(CR_ADDRESS_DEVICE) | (x->slot << 24));
}
@@ -355,6 +378,44 @@ static bool xhci_test_supported(const char *usb_device)
return true;
}
+/*
+ * Address Device reads the output context pointer from the DCBAA. Point
+ * DCBAAP at unassigned memory: the command has to fail instead of carrying
+ * on with the zero the failed read leaves behind, which used to put the
+ * contexts at guest address 0 and still report Success.
+ */
+static void test_xhci_address_device_dcbaa_read_error(void)
+{
+ uint8_t fill[64], low_mem[sizeof(fill)];
+ unsigned int ccode;
+ XHCITest x;
+
+ if (!xhci_test_supported("usb-kbd")) {
+ return;
+ }
+
+ xhci_test_init(&x, "-device usb-kbd");
+ memset(fill, 0xaa, sizeof(fill));
+ qtest_memwrite(x.qts, 0, fill, sizeof(fill));
+ xhci_writeq(&x, x.oper + XHCI_DCBAAP, XHCI_UNASSIGNED_ADDR);
+
+ ccode = xhci_submit_command(&x, x.input_ctx,
+ TRB_TYPE(CR_ADDRESS_DEVICE) | (x.slot << 24),
+ NULL);
+ g_assert_cmpuint(ccode, ==, CC_TRB_ERROR);
+ g_assert_cmphex(xhci_readl(&x, x.oper + XHCI_USBSTS) & USBSTS_HCE, ==,
+ USBSTS_HCE);
+ qtest_memread(x.qts, 0, low_mem, sizeof(low_mem));
+ g_assert_cmpmem(low_mem, sizeof(low_mem), fill, sizeof(fill));
+
+ /* The failed command left the slot usable. */
+ xhci_writeq(&x, x.oper + XHCI_DCBAAP, x.dcbaa);
+ xhci_command(&x, x.input_ctx,
+ TRB_TYPE(CR_ADDRESS_DEVICE) | (x.slot << 24));
+
+ xhci_test_end(&x);
+}
+
/*
* An isoch TD with SIA set is run at the next interval boundary. That has to
* hold once the microframe index no longer fits in 32 bits as well.
@@ -481,6 +542,8 @@ int main(int argc, char **argv)
if (qtest_has_device("usb-ccid")) {
qtest_add_func("/xhci/pci/hotplug/usb-ccid", test_usb_ccid_hotplug);
}
+ qtest_add_func("/xhci/pci/address-device/dcbaa-read-error",
+ test_xhci_address_device_dcbaa_read_error);
qtest_add_func("/xhci/pci/isoch/mfindex-32bit",
test_xhci_isoch_mfindex_32bit);
qtest_add_func("/xhci/pci/intr/mfindex-32bit",
--
2.56.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PULL 0/5] Misc patches before the v11.2 softfreeze
2026-11-02 16:30 [PULL 0/5] Misc patches before the v11.2 softfreeze Thomas Huth
` (4 preceding siblings ...)
2026-11-02 16:30 ` [PULL 5/5] tests/qtest/usb-hcd-xhci: test Address Device with an unreadable DCBAA Thomas Huth
@ 2026-11-03 15:24 ` Richard Henderson
5 siblings, 0 replies; 7+ messages in thread
From: Richard Henderson @ 2026-11-03 15:24 UTC (permalink / raw)
To: Thomas Huth, qemu-devel; +Cc: Junjie Cao, Peter Maydell
On 11/2/26 08:30, Thomas Huth wrote:
> Hi Richard!
>
> The following changes since commit 56afd82bd4db9688f1c1c9d0e2ea163b8cde3283:
>
> Merge tag 'qemu-sparc-20261101' ofhttps://github.com/mcayland/qemu into staging (2026-11-01 08:37:48 -0800)
>
> are available in the Git repository at:
>
> https://gitlab.com/thuth/qemu.git tags/pull-request-2026-11-02
>
> for you to fetch changes up to 213c716c58738be9d39488e56e6d6ed25dacd14e:
>
> tests/qtest/usb-hcd-xhci: test Address Device with an unreadable DCBAA (2026-11-02 15:34:15 +0100)
>
> ----------------------------------------------------------------
> * Add a "check-thorough" test target
> * Make sure that the next-cube machine shows a deprecation note
> * Reset the open retry count after a successful open in the usb-host code
> * Make sure that XHCI code does not ignore failure when reading the DCBAA
>
> Note: I really don't have time to look for USB patches anymore, so after
> this pull request, I'll stop helping out here. We really need a
> dedicated person acting as a maintainer for the USB code..
Applied, thanks.
r~
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-11-03 15:25 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-02 16:30 [PULL 0/5] Misc patches before the v11.2 softfreeze Thomas Huth
2026-11-02 16:30 ` [PULL 1/5] tests: Add a target to run all tests in thorough mode Thomas Huth
2026-11-02 16:30 ` [PULL 2/5] hw/m68k/next-cube: Show deprecation notice to users Thomas Huth
2026-11-02 16:30 ` [PULL 3/5] usb-host: reset the open retry count after a successful open Thomas Huth
2026-11-02 16:30 ` [PULL 4/5] hw/usb/hcd-xhci: fail Address Device when the DCBAA entry is unreadable Thomas Huth
2026-11-02 16:30 ` [PULL 5/5] tests/qtest/usb-hcd-xhci: test Address Device with an unreadable DCBAA Thomas Huth
2026-11-03 15:24 ` [PULL 0/5] Misc patches before the v11.2 softfreeze Richard Henderson
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.