On 09/07/2015 12:37 PM, Paolo Bonzini wrote: > > > On 26/08/2015 01:45, John Snow wrote: >> IDEState's io_buffer_offset was originally added to keep track of offsets >> in AHCI rather exclusively, but it was added to IDEState instead of an >> AHCI-specific structure. > > Interesting to see something weird turn into feature. :) >
There's lots of stuff in places where it doesn't really belong in the IDE universe, so it takes a while to sift through all the usages and start to straighten it all out. > Reviewed-by: Paolo Bonzini <pbonz...@redhat.com> > Grazie. >> AHCI fakes all PIO transfers using DMA and a scatter-gather list. When >> the core or atapi layers invoke HBA-specific mechanisms for transfers, >> they do not always know that it is being backed by DMA or a sglist, so >> this offset is not always updated by the HBA code everywhere. >> >> If we modify it in dma_buf_commit, however, any HBA that needs to use >> this offset to manage operating on only part of a sglist will have >> access to it. >> >> This will fix ATAPI PIO transfers performed through the AHCI HBA, >> which were previously not modifying this value appropriately. >> >> This will fix ATAPI PIO transfers larger than one sector. > Thanks, applied to my IDE tree: https://github.com/jnsnow/qemu/commits/ide https://github.com/jnsnow/qemu.git --js