ivshmem: Fix 64 bit memory bar configuration
commitb2b79a696052040389e0f9980801a880ce5a6ae3
authorZhuang Yanying <ann.zhuangyanying@huawei.com>
Thu, 17 Nov 2016 14:37:17 +0000 (17 18:37 +0400)
committerMarc-André Lureau <marcandre.lureau@redhat.com>
Thu, 17 Nov 2016 14:39:59 +0000 (17 18:39 +0400)
tree0648c4087c9e3a121ce256cdc8c2a7cbee353478
parentb0bcc86d2a87456f5a276f941dc775b265b309cf
ivshmem: Fix 64 bit memory bar configuration

Device ivshmem property use64=0 is designed to make the device
expose a 32 bit shared memory BAR instead of 64 bit one.  The
default is a 64 bit BAR, except pc-1.2 and older retain a 32 bit
BAR.  A 32 bit BAR can support only up to 1 GiB of shared memory.

This worked as designed until commit 5400c02 accidentally flipped
its sense: since then, we misinterpret use64=0 as use64=1 and vice
versa.  Worse, the default got flipped as well.  Devices
ivshmem-plain and ivshmem-doorbell are not affected.

Fix by restoring the test of IVShmemState member not_legacy_32bit
that got messed up in commit 5400c02.  Also update its
initialization for devices ivhsmem-plain and ivshmem-doorbell.
Without that, they'd regress to 32 bit BARs.

Signed-off-by: Zhuang Yanying <ann.zhuangyanying@huawei.com>
Reviewed-by: Gonglei <arei.gonglei@huawei.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <1479385863-7648-1-git-send-email-ann.zhuangyanying@huawei.com>
hw/misc/ivshmem.c