CVS commit: src/sys/dev
"Jason R Thorpe" <[email protected]> Sun, 26 Jul 2026 23:43:27 +0000
| Newsgroups | gmane.os.netbsd.devel.cvs |
|---|---|
| Message-ID | <[email protected]> |
Module Name: src Committed By: thorpej Date: Sun Jul 26 23:43:27 UTC 2026 Modified Files: src/sys/dev/ic: isp_netbsd.h src/sys/dev/pci: isp_pci.c Log Message: It has been observed in the wild that some individual instances of ISP10[24]0 controllers don't seem to like getting a 64-bit DMA address from our driver (at least, there seems to be some sort of incorrect handling vis a vis the RQSTYPE_A64 message in isp_intr()). Upon inspection, it was noted that in isp_pci_dmasetup(), the decision to use RQSTYPE_T3RQS vs RQSTYPE_T2RQS was conditional on sizeof(bus_addr_t) being larger than sizeof(uint32_t). However, this isn't the correct predicate; instead, the choice should be dependent on what the largest value that bus_addr_t will have. As it happans, the PCI layer makes a distinction between 32-bit and 64-bit DMA windows, and isp_pci's use of the regular "pa->pa_dmat" would ensure that the DMA address always fits within 32-bits. Therefore, there was never a reason to use RQSTYPE_T3RQS, regardless of the size of bus_addr_t. As such, we tweak the code to depend explicitly on a new isp_use_dma64 flag, which is initialized by the bus front-end according to the DMA window selection that's been made. Along those lines, add code to correctly determine if a 64-bit DMA window should be used, but leave it disabled for now, until we can sort out the issue with RQSTYPE_A64. To generate a diff of this commit: cvs rdiff -u -r1.76 -r1.77 src/sys/dev/ic/isp_netbsd.h cvs rdiff -u -r1.122 -r1.123 src/sys/dev/pci/isp_pci.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.