[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH-for-8.0 00/10] hw/virtio: Build most objects as target indepe
From: |
Philippe Mathieu-Daudé |
Subject: |
[RFC PATCH-for-8.0 00/10] hw/virtio: Build most objects as target independent units |
Date: |
Tue, 13 Dec 2022 00:05:07 +0100 |
Currently the inlined virtio_access_is_big_endian() function
"hw/virtio/virtio-access.h" which is used by all I/O accesses
force any virtio device to be built as target-dependent object.
This series isolates the few VirtIO target specific bits, trying
to not impact the performance (a function is un-inlined once
not in the hot path).
At the end only 6 files remain in the target specific source set,
all other files are built once.
On a Linux/x86_64 host when building QEMU configured with
--disable-user, before this series a "make clean all" builds
7713 objects, after it only build 6831... I don't think my maths
are correct, because that would save building a few hundreds objects.
RFC because only build-tested.
Regards,
Phil.
Philippe Mathieu-Daudé (10):
hw/virtio: Add missing "hw/core/cpu.h" include
hw/virtio: Rename virtio_ss[] -> specific_virtio_ss[]
hw/virtio: Constify qmp_virtio_feature_map_t[]
hw/virtio: Extract config read/write accessors to virtio-config.c
hw/virtio: Extract QMP related code virtio-qmp.c
hw/virtio: Cache access_is_big_endian value in VirtIODevice state
hw/virtio: Directly access cached VirtIODevice::access_is_big_endian
hw/virtio: Un-inline virtio_access_is_big_endian()
hw/virtio: Extract vhost_user_ram_slots_max() to vhost-user-target.c
hw/virtio: Make most of virtio devices target-independent
hw/9pfs/meson.build | 2 +-
hw/block/dataplane/meson.build | 2 +-
hw/block/meson.build | 4 +-
hw/char/meson.build | 2 +-
hw/net/meson.build | 2 +-
hw/virtio/meson.build | 45 +-
hw/virtio/vhost-user-target.c | 29 ++
hw/virtio/vhost-user.c | 26 +-
hw/virtio/virtio-config.c | 224 +++++++++
hw/virtio/virtio-qmp.c | 631 +++++++++++++++++++++++
hw/virtio/virtio-qmp.h | 20 +
hw/virtio/virtio.c | 799 +-----------------------------
include/hw/virtio/vhost-user.h | 7 +
include/hw/virtio/virtio-access.h | 63 +--
include/hw/virtio/virtio.h | 1 +
15 files changed, 974 insertions(+), 883 deletions(-)
create mode 100644 hw/virtio/vhost-user-target.c
create mode 100644 hw/virtio/virtio-config.c
create mode 100644 hw/virtio/virtio-qmp.c
create mode 100644 hw/virtio/virtio-qmp.h
--
2.38.1
- [RFC PATCH-for-8.0 00/10] hw/virtio: Build most objects as target independent units,
Philippe Mathieu-Daudé <=
- [PATCH-for-8.0 01/10] hw/virtio: Add missing "hw/core/cpu.h" include, Philippe Mathieu-Daudé, 2022/12/12
- [PATCH-for-8.0 02/10] hw/virtio: Rename virtio_ss[] -> specific_virtio_ss[], Philippe Mathieu-Daudé, 2022/12/12
- [PATCH-for-8.0 03/10] hw/virtio: Constify qmp_virtio_feature_map_t[], Philippe Mathieu-Daudé, 2022/12/12
- [PATCH-for-8.0 04/10] hw/virtio: Extract config read/write accessors to virtio-config.c, Philippe Mathieu-Daudé, 2022/12/12
- [PATCH-for-8.0 05/10] hw/virtio: Extract QMP related code virtio-qmp.c, Philippe Mathieu-Daudé, 2022/12/12
- [RFC PATCH-for-8.0 06/10] hw/virtio: Cache access_is_big_endian value in VirtIODevice state, Philippe Mathieu-Daudé, 2022/12/12