• J
    ide: unify io_buffer_offset increments · aaeda4a3
    John Snow 提交于
    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.
    
    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.
    Reported-by: NHannes Reinecke <hare@suse.de>
    Signed-off-by: NJohn Snow <jsnow@redhat.com>
    Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
    Tested-by: NLaszlo Ersek <lersek@redhat.com>
    Message-id: 1440546331-29087-2-git-send-email-jsnow@redhat.com
    CC: qemu-stable@nongnu.org
    aaeda4a3
internal.h 20.9 KB