Hi, guys! I am diving into the DMA part of QEMU and I have been confused by the ATA Bus Master DMA specification. We all know that before starting the DMA transfer, we must specify a PRD table in memory. Then we send command to the IO port of the drive to setup the sector_num and number of sectors. Then we issue a DMA_READ command (0xC8) to the drive.
My question is that does each entry in the PRD table needs to separately be told the sector_num and the DMA_READ command? Or we just need to setup the sector_num, number of sectors and issue the DMA_READ command once to consume all the entries in the PRD table?
If I haven't make the question clear, I want to know if the sentence below is right.
For ATA, for each PRD entry in the PRDT, the driver must issue a Read/Write DMA command to the disk; specifying a StartLBA and a sector count.
Thanks very much! Any help is appreciated very much!