Module Name: src Committed By: thorpej Date: Mon Nov 20 21:59:38 UTC 2023
Modified Files: src/sys/dev/pci: pciide_common.c Log Message: pciide_dma_dmamap_setup(): If we end up with a DMA segment with an odd length or odd starting address, unload the map and return EINVAL. Some controllers get really upset if a DMA segment has an odd address or length. This can happen if a physio user performs a virtually-contiguous I/O that starts at an odd address and spans a page boundary where the resulting physical pages are discontiguous. The EINVAL return will cause the upper layers in the ATA code to re-try the I/O using PIO, which should (will in all of my tests) succeed. PR port-alpha/56434 To generate a diff of this commit: cvs rdiff -u -r1.69 -r1.70 src/sys/dev/pci/pciide_common.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.