Hi,
+ if (s->sg_third_party) { + /* We've already parsed the guest RAM PRDT. + * This is essential for AHCI, where the PRDT is in a different + * format than in IDE BMDMA. + */ + memcpy((uint8_t *)&prd, s->sg.sg, sizeof(prd)); + s->sg.sg++; + } else { + cpu_physical_memory_read(bm->cur_addr, (uint8_t *)&prd, 8); + bm->cur_addr += 8; + prd.addr = le32_to_cpu(prd.addr); + prd.size = le32_to_cpu(prd.size); + }
Does it make sense to handle this via IDEBusOps too? cheers, Gerd