virtio, vhost, pc: fixes

Minor fixes since 2.8.0-rc2.
 
 Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
 -----BEGIN PGP SIGNATURE-----
 
 iQEcBAABAgAGBQJYPjiIAAoJECgfDbjSjVRpjccH/iHLhzRLi2+1dag7SG5SGlST
 MCNh2zOK5Snhjb+/NymLIs8f/arVQoQE+qHy+qAXp2gP+lRIhZRB8JRZ5IJ8DhUp
 wpsVpTpVxmPoE3/BCd9RlrSLDabhoTv7DrLC2RMCeE1ScnDJ7U2X7/wcYSSReM/A
 FIAI/AZCKv39afkicXpqlNpFaLspqgPrhXmkMaaw5AbSWBtb6RsixhcqmpX7blFN
 agbdQZFi408dLRpuu5MmNKVA10A/sFl0PtMUBn6yS1b9L98Lkz8qgpDkl5AoKrZV
 WgTsg4S0XMNKTZmsBERJTeUTr2UA4sGqpodNzDsmMIqc1UKQABB+pgSD7B/TMwE=
 =pHnr
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'mst/tags/for_upstream' into staging

virtio, vhost, pc: fixes

Minor fixes since 2.8.0-rc2.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

# gpg: Signature made Wed 30 Nov 2016 02:25:12 AM GMT
# gpg:                using RSA key 0x281F0DB8D28D5469
# gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>"
# gpg:                 aka "Michael S. Tsirkin <mst@redhat.com>"
# Primary key fingerprint: 0270 606B 6F3C DF3D 0B17  0970 C350 3912 AFBE 8E67
#      Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA  8A0D 281F 0DB8 D28D 5469

* mst/tags/for_upstream:
  virtio-crypto: fix uninitialized variables
  loader: fix undefined behavior in rom_order_compare()
  loader: fix handling of custom address spaces when adding ROM blobs
  intel_iommu: fix incorrect device invalidate
  spec/vhost-user: fix the VHOST_USER prefix

Message-id: 1480564455-23933-1-git-send-email-mst@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2016-12-01 13:38:36 +00:00
commit 2cfe5d7bc2
8 changed files with 22 additions and 19 deletions

View File

@ -123,22 +123,22 @@ The communication consists of master sending message requests and slave sending
message replies. Most of the requests don't require replies. Here is a list of message replies. Most of the requests don't require replies. Here is a list of
the ones that do: the ones that do:
* VHOST_GET_FEATURES * VHOST_USER_GET_FEATURES
* VHOST_GET_PROTOCOL_FEATURES * VHOST_USER_GET_PROTOCOL_FEATURES
* VHOST_GET_VRING_BASE * VHOST_USER_GET_VRING_BASE
* VHOST_SET_LOG_BASE (if VHOST_USER_PROTOCOL_F_LOG_SHMFD) * VHOST_USER_SET_LOG_BASE (if VHOST_USER_PROTOCOL_F_LOG_SHMFD)
[ Also see the section on REPLY_ACK protocol extension. ] [ Also see the section on REPLY_ACK protocol extension. ]
There are several messages that the master sends with file descriptors passed There are several messages that the master sends with file descriptors passed
in the ancillary data: in the ancillary data:
* VHOST_SET_MEM_TABLE * VHOST_USER_SET_MEM_TABLE
* VHOST_SET_LOG_BASE (if VHOST_USER_PROTOCOL_F_LOG_SHMFD) * VHOST_USER_SET_LOG_BASE (if VHOST_USER_PROTOCOL_F_LOG_SHMFD)
* VHOST_SET_LOG_FD * VHOST_USER_SET_LOG_FD
* VHOST_SET_VRING_KICK * VHOST_USER_SET_VRING_KICK
* VHOST_SET_VRING_CALL * VHOST_USER_SET_VRING_CALL
* VHOST_SET_VRING_ERR * VHOST_USER_SET_VRING_ERR
If Master is unable to send the full message or receives a wrong reply it will If Master is unable to send the full message or receives a wrong reply it will
close the connection. An optional reconnection mechanism can be implemented. close the connection. An optional reconnection mechanism can be implemented.

View File

@ -809,7 +809,7 @@ static MemoryRegion *acpi_add_rom_blob(AcpiBuildState *build_state,
uint64_t max_size) uint64_t max_size)
{ {
return rom_add_blob(name, blob->data, acpi_data_len(blob), max_size, -1, return rom_add_blob(name, blob->data, acpi_data_len(blob), max_size, -1,
name, virt_acpi_build_update, build_state); name, virt_acpi_build_update, build_state, NULL);
} }
static const VMStateDescription vmstate_virt_acpi_build = { static const VMStateDescription vmstate_virt_acpi_build = {

View File

@ -818,7 +818,7 @@ static QTAILQ_HEAD(, Rom) roms = QTAILQ_HEAD_INITIALIZER(roms);
static inline bool rom_order_compare(Rom *rom, Rom *item) static inline bool rom_order_compare(Rom *rom, Rom *item)
{ {
return (rom->as > item->as) || return ((uintptr_t)(void *)rom->as > (uintptr_t)(void *)item->as) ||
(rom->as == item->as && rom->addr >= item->addr); (rom->as == item->as && rom->addr >= item->addr);
} }
@ -978,7 +978,8 @@ err:
MemoryRegion *rom_add_blob(const char *name, const void *blob, size_t len, MemoryRegion *rom_add_blob(const char *name, const void *blob, size_t len,
size_t max_len, hwaddr addr, const char *fw_file_name, size_t max_len, hwaddr addr, const char *fw_file_name,
FWCfgReadCallback fw_callback, void *callback_opaque) FWCfgReadCallback fw_callback, void *callback_opaque,
AddressSpace *as)
{ {
MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine()); MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine());
Rom *rom; Rom *rom;
@ -986,6 +987,7 @@ MemoryRegion *rom_add_blob(const char *name, const void *blob, size_t len,
rom = g_malloc0(sizeof(*rom)); rom = g_malloc0(sizeof(*rom));
rom->name = g_strdup(name); rom->name = g_strdup(name);
rom->as = as;
rom->addr = addr; rom->addr = addr;
rom->romsize = max_len ? max_len : len; rom->romsize = max_len ? max_len : len;
rom->datasize = len; rom->datasize = len;

View File

@ -2936,7 +2936,7 @@ static MemoryRegion *acpi_add_rom_blob(AcpiBuildState *build_state,
uint64_t max_size) uint64_t max_size)
{ {
return rom_add_blob(name, blob->data, acpi_data_len(blob), max_size, -1, return rom_add_blob(name, blob->data, acpi_data_len(blob), max_size, -1,
name, acpi_build_update, build_state); name, acpi_build_update, build_state, NULL);
} }
static const VMStateDescription vmstate_acpi_build = { static const VMStateDescription vmstate_acpi_build = {

View File

@ -988,6 +988,7 @@ static void vtd_context_device_invalidate(IntelIOMMUState *s,
mask = 7; /* Mask bit 2:0 in the SID field */ mask = 7; /* Mask bit 2:0 in the SID field */
break; break;
} }
mask = ~mask;
VTD_DPRINTF(INV, "device-selective invalidation source 0x%"PRIx16 VTD_DPRINTF(INV, "device-selective invalidation source 0x%"PRIx16
" mask %"PRIu16, source_id, mask); " mask %"PRIu16, source_id, mask);
vtd_bus = vtd_find_as_from_bus_num(s, VTD_SID_TO_BUS(source_id)); vtd_bus = vtd_find_as_from_bus_num(s, VTD_SID_TO_BUS(source_id));

View File

@ -75,7 +75,7 @@ static inline void hwsetup_create_rom(HWSetup *hw,
hwaddr base) hwaddr base)
{ {
rom_add_blob("hwsetup", hw->data, TARGET_PAGE_SIZE, rom_add_blob("hwsetup", hw->data, TARGET_PAGE_SIZE,
TARGET_PAGE_SIZE, base, NULL, NULL, NULL); TARGET_PAGE_SIZE, base, NULL, NULL, NULL, NULL);
} }
static inline void hwsetup_add_u8(HWSetup *hw, uint8_t u) static inline void hwsetup_add_u8(HWSetup *hw, uint8_t u)

View File

@ -838,7 +838,7 @@ static Property virtio_crypto_properties[] = {
static void virtio_crypto_get_config(VirtIODevice *vdev, uint8_t *config) static void virtio_crypto_get_config(VirtIODevice *vdev, uint8_t *config)
{ {
VirtIOCrypto *c = VIRTIO_CRYPTO(vdev); VirtIOCrypto *c = VIRTIO_CRYPTO(vdev);
struct virtio_crypto_config crypto_cfg; struct virtio_crypto_config crypto_cfg = {};
/* /*
* Virtio-crypto device conforms to VIRTIO 1.0 which is always LE, * Virtio-crypto device conforms to VIRTIO 1.0 which is always LE,

View File

@ -180,7 +180,7 @@ MemoryRegion *rom_add_blob(const char *name, const void *blob, size_t len,
size_t max_len, hwaddr addr, size_t max_len, hwaddr addr,
const char *fw_file_name, const char *fw_file_name,
FWCfgReadCallback fw_callback, FWCfgReadCallback fw_callback,
void *callback_opaque); void *callback_opaque, AddressSpace *as);
int rom_add_elf_program(const char *name, void *data, size_t datasize, int rom_add_elf_program(const char *name, void *data, size_t datasize,
size_t romsize, hwaddr addr, AddressSpace *as); size_t romsize, hwaddr addr, AddressSpace *as);
int rom_check_and_register_reset(void); int rom_check_and_register_reset(void);
@ -194,7 +194,7 @@ void hmp_info_roms(Monitor *mon, const QDict *qdict);
#define rom_add_file_fixed(_f, _a, _i) \ #define rom_add_file_fixed(_f, _a, _i) \
rom_add_file(_f, NULL, _a, _i, false, NULL, NULL) rom_add_file(_f, NULL, _a, _i, false, NULL, NULL)
#define rom_add_blob_fixed(_f, _b, _l, _a) \ #define rom_add_blob_fixed(_f, _b, _l, _a) \
rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, NULL) rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, NULL, NULL)
#define rom_add_file_mr(_f, _mr, _i) \ #define rom_add_file_mr(_f, _mr, _i) \
rom_add_file(_f, NULL, 0, _i, false, _mr, NULL) rom_add_file(_f, NULL, 0, _i, false, _mr, NULL)
#define rom_add_file_as(_f, _as, _i) \ #define rom_add_file_as(_f, _as, _i) \
@ -202,7 +202,7 @@ void hmp_info_roms(Monitor *mon, const QDict *qdict);
#define rom_add_file_fixed_as(_f, _a, _i, _as) \ #define rom_add_file_fixed_as(_f, _a, _i, _as) \
rom_add_file(_f, NULL, _a, _i, false, NULL, _as) rom_add_file(_f, NULL, _a, _i, false, NULL, _as)
#define rom_add_blob_fixed_as(_f, _b, _l, _a, _as) \ #define rom_add_blob_fixed_as(_f, _b, _l, _a, _as) \
rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, _as) rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, NULL, _as)
#define PC_ROM_MIN_VGA 0xc0000 #define PC_ROM_MIN_VGA 0xc0000
#define PC_ROM_MIN_OPTION 0xc8000 #define PC_ROM_MIN_OPTION 0xc8000