changeset 11630:716218a57237

6763817 ddi_dma_addr_bind_handle() failed with status DDI_DMA_NOMAPPING
author andrew.rutz@sun.com
date Fri, 05 Feb 2010 18:09:46 -0500
parents b9938be70bc0
children 4ab78f416756
files usr/src/uts/sun4v/io/px/px_lib4v.c
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/sun4v/io/px/px_lib4v.c	Fri Feb 05 15:01:43 2010 -0800
+++ b/usr/src/uts/sun4v/io/px/px_lib4v.c	Fri Feb 05 18:09:46 2010 -0500
@@ -571,6 +571,13 @@
 
 	DBG(DBG_LIB_DMA, dip, "px_lib_iommu_getbypass: dip 0x%p ra 0x%llx "
 	    "attr 0x%llx\n", dip, ra, attr);
+	/*
+	 * If HV VPCI version is 1.1 and higher, pass BDF, phantom function,
+	 * and relaxed ordering attributes. Otherwise, pass only read or write
+	 * attribute.
+	 */
+	if (px_vpci_min_ver == PX_HSVC_MINOR_VER_0)
+		attr &= PCI_MAP_ATTR_READ | PCI_MAP_ATTR_WRITE;
 
 	if ((ret = hvio_iommu_getbypass(DIP_TO_HANDLE(dip), ra,
 	    attr, io_addr_p)) != H_EOK) {