svn commit: r362027 - head/sys/dev/pci

Chuck Tuffli chuck at FreeBSD.org
Wed Jun 10 20:12:46 UTC 2020


Author: chuck
Date: Wed Jun 10 20:12:45 2020
New Revision: 362027
URL: https://svnweb.freebsd.org/changeset/base/362027

Log:
  pci: loosen PCIe hot-plug requirements
  
  The original PCIe hot-plug code required a couple of things which cause
  PCI probing errors on the QEMU Q35 system and possibly physical systems
  (Dell R6515).
  
  Allocate the hot-plug interrupt as shared to support INTx interrupts.
  The hot-plug interrupt mechanism should normally be MSI as PCIe mandates
  MSI support, but QEMU's Q35 bridge only provides INTx interrupts.
  
  Second, the code required the Electromechanical Interlock (Slot Status
  EIS) to be engaged if present (Slot Capability EIP). Some platforms
  including QEMU Q35 set EIP but not EIS. Fix by deleting the check.
  
  Reviewed by: imp, mav, jhb
  MFC after:	2 weeks
  Differential Revision: https://reviews.freebsd.org/D24877

Modified:
  head/sys/dev/pci/pci_pci.c

Modified: head/sys/dev/pci/pci_pci.c
==============================================================================
--- head/sys/dev/pci/pci_pci.c	Wed Jun 10 20:05:53 2020	(r362026)
+++ head/sys/dev/pci/pci_pci.c	Wed Jun 10 20:12:45 2020	(r362027)
@@ -1073,14 +1073,6 @@ pcib_hotplug_present(struct pcib_softc *sc)
 	if (!pcib_hotplug_inserted(sc))
 		return (0);
 
-	/*
-	 * Require the Electromechanical Interlock to be engaged if
-	 * present.
-	 */
-	if (sc->pcie_slot_cap & PCIEM_SLOT_CAP_EIP &&
-	    (sc->pcie_slot_sta & PCIEM_SLOT_STA_EIS) == 0)
-		return (0);
-
 	/* Require the Data Link Layer to be active. */
 	if (!(sc->pcie_link_sta & PCIEM_LINK_STA_DL_ACTIVE))
 		return (0);
@@ -1338,7 +1330,7 @@ pcib_alloc_pcie_irq(struct pcib_softc *sc)
 		rid = 0;
 
 	sc->pcie_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
-	    RF_ACTIVE);
+	    RF_ACTIVE | RF_SHAREABLE);
 	if (sc->pcie_irq == NULL) {
 		device_printf(dev,
 		    "Failed to allocate interrupt for PCI-e events\n");


More information about the svn-src-head mailing list