Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Feb 2012 20:18:01 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 207047 for review
Message-ID:  <201202282018.q1SKI1Q8070381@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@207047?ac=10

Change 207047 by jhb@jhb_jhbbsd on 2012/02/28 20:17:48

	Don't create DMA tags on PCI busses behind a PCI-PCI bridge.

Affected files ...

.. //depot/projects/pci/sys/dev/pci/pci.c#28 edit

Differences ...

==== //depot/projects/pci/sys/dev/pci/pci.c#28 (text+ko) ====

@@ -3175,15 +3175,18 @@
 	if (bootverbose)
 		device_printf(dev, "domain=%d, physical bus=%d\n",
 		    domain, busno);
-	error = bus_dma_tag_create(bus_get_dma_tag(dev), 1, PCI_DMA_BOUNDARY,
-	    BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL, BUS_SPACE_MAXSIZE,
-	    BUS_SPACE_UNRESTRICTED, BUS_SPACE_MAXSIZE, 0, NULL, NULL,
-	    &sc->sc_dma_tag);
-	if (error)
-		device_printf(dev, "Failed to create DMA tag: %d\n", error);
-	else
-		sc->sc_dma_tag_valid = 1;
-
+	if (device_get_devclass(device_get_parent(device_get_parent(dev))) !=
+	    devclass_find("pci")) {
+		error = bus_dma_tag_create(bus_get_dma_tag(dev), 1,
+		    PCI_DMA_BOUNDARY, BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR,
+		    NULL, NULL, BUS_SPACE_MAXSIZE, BUS_SPACE_UNRESTRICTED,
+		    BUS_SPACE_MAXSIZE, 0, NULL, NULL, &sc->sc_dma_tag);
+		if (error)
+			device_printf(dev, "Failed to create DMA tag: %d\n",
+			    error);
+		else
+			sc->sc_dma_tag_valid = 1;
+	}
 	return (0);
 }
 



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