Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Jul 2016 20:34:46 +0000 (UTC)
From:      Peter Grehan <grehan@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r302972 - head/usr.sbin/bhyve
Message-ID:  <201607172034.u6HKYkOr078379@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: grehan
Date: Sun Jul 17 20:34:46 2016
New Revision: 302972
URL: https://svnweb.freebsd.org/changeset/base/302972

Log:
  Disallow interrupt requests on disabled endpoints.
  
  Submitted by:	Leon Dang
  MFC after:	3 days

Modified:
  head/usr.sbin/bhyve/pci_xhci.c

Modified: head/usr.sbin/bhyve/pci_xhci.c
==============================================================================
--- head/usr.sbin/bhyve/pci_xhci.c	Sun Jul 17 19:24:28 2016	(r302971)
+++ head/usr.sbin/bhyve/pci_xhci.c	Sun Jul 17 20:34:46 2016	(r302972)
@@ -2537,9 +2537,11 @@ static int
 pci_xhci_dev_intr(struct usb_hci *hci, int epctx)
 {
 	struct pci_xhci_dev_emu *dev;
+	struct xhci_dev_ctx	*dev_ctx;
 	struct xhci_trb		evtrb;
 	struct pci_xhci_softc	*sc;
 	struct pci_xhci_portregs *p;
+	struct xhci_endp_ctx	*ep_ctx;
 	int	error;
 	int	dir_in;
 	int	epid;
@@ -2578,6 +2580,14 @@ pci_xhci_dev_intr(struct usb_hci *hci, i
 			goto done;
 	}
 
+	dev_ctx = dev->dev_ctx;
+	ep_ctx = &dev_ctx->ctx_ep[epid];
+	if ((ep_ctx->dwEpCtx0 & 0x7) == XHCI_ST_EPCTX_DISABLED) {
+		DPRINTF(("xhci device interrupt on disabled endpoint %d\r\n",
+		         epid));
+		return (0);
+	}
+
 	DPRINTF(("xhci device interrupt on endpoint %d\r\n", epid));
 
 	pci_xhci_device_doorbell(sc, hci->hci_port, epid, 0);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201607172034.u6HKYkOr078379>