I tried to bind an buffer with len of 62268 to a dma handle, but unfortunately failed. ddi_dma_addr_bind_handle returns value: DDI_DMA_TOOBIG. The solaris is snv_93 x86.
status = ddi_dma_addr_bind_handle(tcb->tx_dma_handle, NULL,(caddr_t)mp->b_rptr, len, DDI_DMA_WRITE | DDI_DMA_STREAMING, DDI_DMA_DONTWAIT, 0, &dma_cookie, &ncookies); tx_dma_handle is allocated using the following attr. 90 DMA_ATTR_V0, /* version number */ 91 0x0000000000000000ull, /* low address */ 92 0xFFFFFFFFFFFFFFFFull, /* high address */ 93 0x00000000FFFFFFFFull, /* dma counter max */ 94 1, /* alignment */ 95 0x00000FFF, /* burst sizes */ 96 0x00000001, /* minimum transfer size */ 97 0x00000000FFFFFFFFull, /* maximum transfer size */ 98 0xFFFFFFFFFFFFFFFFull, /* maximum segment size */ 99 16, /* scatter/gather list length */ 100 0x00000001, /* granularity */ 101 DDI_DMA_FLAGERR /* DMA flags */ 60+ kB is not a large buffer, and sgl 16 is not small, I do not know why ddi_dma_addr_bind_handle still fails with DDI_DMA_TOOBIG? Anyone knows why? console output: coding error detected, the driver is using ddi_dma_attr(9S) incorrectly. There is a small risk of data corruption in particular with large I/Os. The driver should be replaced with a corrected version for proper system operation. To disable this warning, add 'set rootnex:rootnex_bind_warn=0' to /etc/system(4). The related stack: 0 22495 rootnex_bind_slowpath:entry rootnex`rootnex_dma_bindhdl+0x29c genunix`ddi_dma_addr_bind_handle+0x83 Thanks in advance. _______________________________________________ driver-discuss mailing list [email protected] http://mail.opensolaris.org/mailman/listinfo/driver-discuss
