Index: ata_kauai.c =================================================================== --- ata_kauai.c (revision 190194) +++ ata_kauai.c (working copy) @@ -365,6 +365,9 @@ struct ata_device *atadev = device_get_softc(request->dev); struct ata_kauai_softc *sc = device_get_softc(request->parent); + if (request->flags & ATA_R_ATAPI && request->bytecount % 16 != 0) + request->flags &= ~ATA_R_DMA; + bus_write_4(sc->sc_memr, UDMA_CONFIG_REG, sc->udmaconf[atadev->unit]); bus_write_4(sc->sc_memr, PIO_CONFIG_REG, sc->wdmaconf[atadev->unit] | sc->pioconf[atadev->unit]); Index: ata_macio.c =================================================================== --- ata_macio.c (revision 190194) +++ ata_macio.c (working copy) @@ -332,6 +332,9 @@ struct ata_device *atadev = device_get_softc(request->dev); struct ata_macio_softc *sc = device_get_softc(request->parent); + if (request->flags & ATA_R_ATAPI && request->bytecount % 16 != 0) + request->flags &= ~ATA_R_DMA; + bus_write_4(sc->sc_mem, ATA_MACIO_TIMINGREG, sc->udmaconf[atadev->unit] | sc->wdmaconf[atadev->unit] | sc->pioconf[atadev->unit]);