On 07/25/2011 09:02 AM, Avi Kivity wrote:
The I/O port space is byte addressable, even for word and long accesses. An example is the VMware svga card, which has long ports on offsets 0, 1, and 2. Signed-off-by: Avi Kivity<avi@xxxxxxxxxx>
I've always thought this was odd but didn't know of a specific circumstance where it broke a device.
This was a big problem with the old API. Devices don't register their interest in specific sizes. They may ignore certain size accesses but that's a device specific behavior.
Reviewed-by: Anthony Liguori <aliguori@xxxxxxxxxx> Regards, Anthony Liguori
--- ioport.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ioport.c b/ioport.c index 0d2611d..a32483b 100644 --- a/ioport.c +++ b/ioport.c @@ -146,7 +146,7 @@ int register_ioport_read(pio_addr_t start, int length, int size, hw_error("register_ioport_read: invalid size"); return -1; } - for(i = start; i< start + length; i += size) { + for(i = start; i< start + length; ++i) { ioport_read_table[bsize][i] = func; if (ioport_opaque[i] != NULL&& ioport_opaque[i] != opaque) hw_error("register_ioport_read: invalid opaque for address 0x%x", @@ -166,7 +166,7 @@ int register_ioport_write(pio_addr_t start, int length, int size, hw_error("register_ioport_write: invalid size"); return -1; } - for(i = start; i< start + length; i += size) { + for(i = start; i< start + length; ++i) { ioport_write_table[bsize][i] = func; if (ioport_opaque[i] != NULL&& ioport_opaque[i] != opaque) hw_error("register_ioport_write: invalid opaque for address 0x%x",
-- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html