From nobody Wed Jul 23 15:51:18 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4bnJX633R2z62TVq; Wed, 23 Jul 2025 15:51:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bnJX61vp2z3LJh; Wed, 23 Jul 2025 15:51:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753285878; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yj5pLe5AsHah4I9Bx+1A+pDaIvMRsOvuyJosOi2YlPk=; b=X2LT5+/q1cxMJSBPqq6PxkeOExlbUPcuv4gg+3+v3yDE07hXEJmKhwuc9xmlHt9ut9jpiT pZKX3D+u3YX5CK+0MAh+rzK8X4/c7KohKlxikzKYgTg6woUNTKdROjqOOWYJ8/wwc71ybV +TadBro+AXGJ5OqwWp7c1P1QCWB+g6LlUJ7MF7Dts5NbRqlrZylt34p9HAhqPm4Wm6RK7J QUpCg8tbOitNVLFIyAtUau7AtbjYENlyw0IQ2aWRxWsFnKeQLmXwbCKIcNviewdmb3WXkD ws55V6ZzvHnpLRObNsODa4TTxMBQk3t8N+whuVURVyZSUXSQZpmPIlqaEN+DUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753285878; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yj5pLe5AsHah4I9Bx+1A+pDaIvMRsOvuyJosOi2YlPk=; b=hf+KpK6NpqoVHGBs2mQ0BntIbg3tpJwVavVs/+E5wD1CB06eeRNQQNefTtDNv4CaKsAxgv C8mfdz//plq68KI2+zyyX6gohY0TMS+XEfCgM4oTHSzbIYNgDhGV18RGiuvduZty8YI5+a Cb3rzX/IVF6eKhL5AQhJlTzybph1Jxgiaqh5BxAeKN8krQHSPCO127v6c6WJYoEkRWt3nP f0vqVY6P7a/tObZ/i5Ux0GQ2BmWB9YuTgZxhVVmTlo10ii8IoJa9VPEJJIEJ0/1x1CUHQQ dc68dyZgHqxoV0ax0Xcm/5jKsmqLo6lIflhZcUK5mbFftcUbZ8A6EJtGwrX+Cw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1753285878; a=rsa-sha256; cv=none; b=m8yHKEU5XLX7DWSEtN+oMXXgDPeJwDAIugXjDnkwYUBOwDzDifRCINglzf9n/hlSN4JPj9 TxTWifJ1mUhCdqznaKzkvvDLNze6bz6zFZ2wrWbeoKwd6wdjzlFYS0R6QOaAcyXdF6wPce 50HxEcAUsqyKal42cQgcjLS0jijGPR3zhL8qKtk5SRMhuHyVIJJqZZD/OX9h0l9G6pMGsw LN7r+Jg77Kg4Ynyaqv/Df7cAFAQvZ6IscVjfQAUqAfO+Mv35dS5Z134yHm+D4zeyOIIAle 3Lj+oCHi0Is9cCYyS+FsX/7uzyx4x+rHXwR8Z/zB7Lgh+qsEO0YwMOztVnGvSA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bnJX61Fv4z3tN; Wed, 23 Jul 2025 15:51:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 56NFpIWW097518; Wed, 23 Jul 2025 15:51:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 56NFpIra097515; Wed, 23 Jul 2025 15:51:18 GMT (envelope-from git) Date: Wed, 23 Jul 2025 15:51:18 GMT Message-Id: <202507231551.56NFpIra097515@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: 48266828f5bb - main - bhyve: use speed in hci to allow backend modify it. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: aokblast X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 48266828f5bb2cd9f0f7b69ce8eb5568e75a8b22 Auto-Submitted: auto-generated The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=48266828f5bb2cd9f0f7b69ce8eb5568e75a8b22 commit 48266828f5bb2cd9f0f7b69ce8eb5568e75a8b22 Author: ShengYi Hung AuthorDate: 2025-07-18 14:26:37 +0000 Commit: ShengYi Hung CommitDate: 2025-07-23 15:50:59 +0000 bhyve: use speed in hci to allow backend modify it. The speed of a USB device may be determined dynamically by the backend. For example, USB device passthrough depends on the internal device reporting its speed accurately. To accommodate this, we now obtain the speed from the USB HCI rather than initializing it statically from the UE structure. If the backend does not provide a speed, we fall back to the value in the UE structure. Reviewed by: emaste Approved by: markj (mentor), lwhsu (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51411 --- usr.sbin/bhyve/pci_xhci.c | 11 +++++++---- usr.sbin/bhyve/usb_emul.h | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/usr.sbin/bhyve/pci_xhci.c b/usr.sbin/bhyve/pci_xhci.c index 5b21361f2823..29001755cbbf 100644 --- a/usr.sbin/bhyve/pci_xhci.c +++ b/usr.sbin/bhyve/pci_xhci.c @@ -2588,7 +2588,7 @@ pci_xhci_reset_port(struct pci_xhci_softc *sc, int portn, int warm) if (dev) { port->portsc &= ~(XHCI_PS_PLS_MASK | XHCI_PS_PR | XHCI_PS_PRC); port->portsc |= XHCI_PS_PED | - XHCI_PS_SPEED_SET(dev->dev_ue->ue_usbspeed); + XHCI_PS_SPEED_SET(dev->hci.hci_speed); if (warm && dev->dev_ue->ue_usbver == 3) { port->portsc |= XHCI_PS_WRC; @@ -2622,11 +2622,11 @@ pci_xhci_init_port(struct pci_xhci_softc *sc, int portn) if (dev->dev_ue->ue_usbver == 2) { port->portsc |= XHCI_PS_PLS_SET(UPS_PORT_LS_POLL) | - XHCI_PS_SPEED_SET(dev->dev_ue->ue_usbspeed); + XHCI_PS_SPEED_SET(dev->hci.hci_speed); } else { port->portsc |= XHCI_PS_PLS_SET(UPS_PORT_LS_U0) | - XHCI_PS_PED | /* enabled */ - XHCI_PS_SPEED_SET(dev->dev_ue->ue_usbspeed); + XHCI_PS_PED | /* enabled */ + XHCI_PS_SPEED_SET(dev->hci.hci_speed); } DPRINTF(("Init port %d 0x%x", portn, port->portsc)); @@ -2833,6 +2833,7 @@ pci_xhci_parse_devices(struct pci_xhci_softc *sc, nvlist_t *nvl) dev->hci.hci_sc = dev; dev->hci.hci_intr = pci_xhci_dev_intr; dev->hci.hci_event = pci_xhci_dev_event; + dev->hci.hci_speed = USB_SPEED_MAX; if (ue->ue_usbver == 2) { if (usb2_port == sc->usb2_port_start + @@ -2863,6 +2864,8 @@ pci_xhci_parse_devices(struct pci_xhci_softc *sc, nvlist_t *nvl) dev->dev_ue = ue; dev->dev_sc = devsc; + if (dev->hci.hci_speed == USB_SPEED_MAX) + dev->hci.hci_speed = ue->ue_usbspeed; XHCI_SLOTDEV_PTR(sc, slot) = dev; ndevices++; diff --git a/usr.sbin/bhyve/usb_emul.h b/usr.sbin/bhyve/usb_emul.h index 8e0afcb2878b..85dedfeacd3b 100644 --- a/usr.sbin/bhyve/usb_emul.h +++ b/usr.sbin/bhyve/usb_emul.h @@ -85,6 +85,7 @@ struct usb_hci { /* controller managed fields */ int hci_address; int hci_port; + int hci_speed; }; /*