On Wed, 2007-10-31 at 21:59 +0000, Keir Fraser wrote:
> 511 entries? 511*8 + 8 bytes for the read/write pointers == 4096?
>
> -- Keir
>
> On 31/10/07 20:28, "Ben Guthro" <bguthro@xxxxxxxxxxxxxxx> wrote:
>
> Corrected a bug in the stdvga code where it did not
> properly handle 32 bit operations.
> The buf_ioreq_t can now store 32 bits of data.
> Because this increases its size to 8 bytes,
> only 510 elements fit in the buffered_iopage
> (down from 672 elements).
Aren't we relying on some compiler dependent packing to get this to 8
bytes? I think it'd be best if we were more explicit in the definition.
Thanks,
Alex
Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>
---
diff -r 4255ca79f9d9 xen/include/public/hvm/ioreq.h
--- a/xen/include/public/hvm/ioreq.h Thu Nov 01 09:07:16 2007 -0600
+++ b/xen/include/public/hvm/ioreq.h Thu Nov 01 09:45:47 2007 -0600
@@ -78,10 +78,10 @@ typedef struct shared_iopage shared_iopa
typedef struct shared_iopage shared_iopage_t;
struct buf_ioreq {
- uint8_t type; /* I/O type */
- uint8_t dir:1; /* 1=read, 0=write */
- uint8_t size:2; /* 0=>1, 1=>2, 2=>4, 3=>8. If 8, use two buf_ioreqs */
uint32_t addr:20;/* physical address */
+ uint32_t type:8; /* I/O type */
+ uint32_t dir:1; /* 1=read, 0=write */
+ uint32_t size:2; /* 0=>1, 1=>2, 2=>4, 3=>8. If 8, use two buf_ioreqs */
uint32_t data; /* data */
};
typedef struct buf_ioreq buf_ioreq_t;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|