vhost-user-test: support VHOST_USER_PROTOCOL_F_CROSS_ENDIAN
This will be useful to run the qtest for ppc64 targets on (for example) x86_64 hosts. Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-Id: <1543851204-41186-10-git-send-email-pbonzini@redhat.com>
This commit is contained in:
parent
acca950ccd
commit
5a583cc555
@ -51,6 +51,7 @@
|
|||||||
#define VHOST_USER_F_PROTOCOL_FEATURES 30
|
#define VHOST_USER_F_PROTOCOL_FEATURES 30
|
||||||
#define VHOST_USER_PROTOCOL_F_MQ 0
|
#define VHOST_USER_PROTOCOL_F_MQ 0
|
||||||
#define VHOST_USER_PROTOCOL_F_LOG_SHMFD 1
|
#define VHOST_USER_PROTOCOL_F_LOG_SHMFD 1
|
||||||
|
#define VHOST_USER_PROTOCOL_F_CROSS_ENDIAN 6
|
||||||
|
|
||||||
#define VHOST_LOG_PAGE 0x1000
|
#define VHOST_LOG_PAGE 0x1000
|
||||||
|
|
||||||
@ -251,7 +252,7 @@ static void wait_for_fds(TestServer *s)
|
|||||||
|
|
||||||
static void read_guest_mem_server(TestServer *s)
|
static void read_guest_mem_server(TestServer *s)
|
||||||
{
|
{
|
||||||
uint32_t *guest_mem;
|
uint8_t *guest_mem;
|
||||||
int i, j;
|
int i, j;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
@ -278,8 +279,8 @@ static void read_guest_mem_server(TestServer *s)
|
|||||||
g_assert(guest_mem != MAP_FAILED);
|
g_assert(guest_mem != MAP_FAILED);
|
||||||
guest_mem += (s->memory.regions[i].mmap_offset / sizeof(*guest_mem));
|
guest_mem += (s->memory.regions[i].mmap_offset / sizeof(*guest_mem));
|
||||||
|
|
||||||
for (j = 0; j < 256; j++) {
|
for (j = 0; j < 1024; j++) {
|
||||||
uint32_t a = readl(s->memory.regions[i].guest_phys_addr + j*4);
|
uint32_t a = readb(s->memory.regions[i].guest_phys_addr + j);
|
||||||
uint32_t b = guest_mem[j];
|
uint32_t b = guest_mem[j];
|
||||||
|
|
||||||
g_assert_cmpint(a, ==, b);
|
g_assert_cmpint(a, ==, b);
|
||||||
@ -367,6 +368,7 @@ static void chr_read(void *opaque, const uint8_t *buf, int size)
|
|||||||
msg.flags |= VHOST_USER_REPLY_MASK;
|
msg.flags |= VHOST_USER_REPLY_MASK;
|
||||||
msg.size = sizeof(m.payload.u64);
|
msg.size = sizeof(m.payload.u64);
|
||||||
msg.payload.u64 = 1 << VHOST_USER_PROTOCOL_F_LOG_SHMFD;
|
msg.payload.u64 = 1 << VHOST_USER_PROTOCOL_F_LOG_SHMFD;
|
||||||
|
msg.payload.u64 |= 1 << VHOST_USER_PROTOCOL_F_CROSS_ENDIAN;
|
||||||
if (s->queues > 1) {
|
if (s->queues > 1) {
|
||||||
msg.payload.u64 |= 1 << VHOST_USER_PROTOCOL_F_MQ;
|
msg.payload.u64 |= 1 << VHOST_USER_PROTOCOL_F_MQ;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user