Message ID | 20250307191003.248950-6-pierrick.bouvier@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | hw/hyperv: remove duplication compilation units | expand |
On 3/7/25 11:10, Pierrick Bouvier wrote: > Replace TARGET_PAGE.* by runtime calls The description needs updating for MSG_BUFSZ. > @@ -374,6 +376,8 @@ static const Property hv_syndbg_properties[] = { > > static void hv_syndbg_class_init(ObjectClass *klass, void *data) > { > + g_assert(MSG_BUFSZ > qemu_target_page_size()); >= Otherwise, Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On 3/7/25 11:10, Pierrick Bouvier wrote: > Replace TARGET_PAGE.* by runtime calls > > Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> > --- > hw/hyperv/syndbg.c | 10 +++++++--- > hw/hyperv/meson.build | 2 +- > 2 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/hw/hyperv/syndbg.c b/hw/hyperv/syndbg.c > index d3e39170772..ee91266c070 100644 > --- a/hw/hyperv/syndbg.c > +++ b/hw/hyperv/syndbg.c > @@ -14,7 +14,7 @@ > #include "migration/vmstate.h" > #include "hw/qdev-properties.h" > #include "hw/loader.h" > -#include "cpu.h" > +#include "exec/target_page.h" > #include "hw/hyperv/hyperv.h" > #include "hw/hyperv/vmbus-bridge.h" > #include "hw/hyperv/hyperv-proto.h" > @@ -183,12 +183,14 @@ static bool create_udp_pkt(HvSynDbg *syndbg, void *pkt, uint32_t pkt_len, > return true; > } > > +#define MSG_BUFSZ 4096 > + > static uint16_t handle_recv_msg(HvSynDbg *syndbg, uint64_t outgpa, > uint32_t count, bool is_raw, uint32_t options, > uint64_t timeout, uint32_t *retrieved_count) > { > uint16_t ret; > - uint8_t data_buf[TARGET_PAGE_SIZE - UDP_PKT_HEADER_SIZE]; > + uint8_t data_buf[MSG_BUFSZ]; > hwaddr out_len; > void *out_data; > ssize_t recv_byte_count; > @@ -201,7 +203,7 @@ static uint16_t handle_recv_msg(HvSynDbg *syndbg, uint64_t outgpa, > recv_byte_count = 0; > } else { > recv_byte_count = recv(syndbg->socket, data_buf, > - MIN(sizeof(data_buf), count), MSG_WAITALL); > + MIN(MSG_BUFSZ, count), MSG_WAITALL); > if (recv_byte_count == -1) { > return HV_STATUS_INVALID_PARAMETER; > } > @@ -374,6 +376,8 @@ static const Property hv_syndbg_properties[] = { > > static void hv_syndbg_class_init(ObjectClass *klass, void *data) > { > + g_assert(MSG_BUFSZ > qemu_target_page_size()); > + Should be >= here. > DeviceClass *dc = DEVICE_CLASS(klass); > > device_class_set_props(dc, hv_syndbg_properties); > diff --git a/hw/hyperv/meson.build b/hw/hyperv/meson.build > index c855fdcf04c..a9f2045a9af 100644 > --- a/hw/hyperv/meson.build > +++ b/hw/hyperv/meson.build > @@ -1,6 +1,6 @@ > specific_ss.add(when: 'CONFIG_HYPERV', if_true: files('hyperv.c')) > specific_ss.add(when: 'CONFIG_HYPERV_TESTDEV', if_true: files('hyperv_testdev.c')) > system_ss.add(when: 'CONFIG_VMBUS', if_true: files('vmbus.c')) > -specific_ss.add(when: 'CONFIG_SYNDBG', if_true: files('syndbg.c')) > +system_ss.add(when: 'CONFIG_SYNDBG', if_true: files('syndbg.c')) > specific_ss.add(when: 'CONFIG_HV_BALLOON', if_true: files('hv-balloon.c', 'hv-balloon-page_range_tree.c', 'hv-balloon-our_range_memslots.c')) > system_ss.add(when: 'CONFIG_HV_BALLOON', if_false: files('hv-balloon-stub.c'))
diff --git a/hw/hyperv/syndbg.c b/hw/hyperv/syndbg.c index d3e39170772..ee91266c070 100644 --- a/hw/hyperv/syndbg.c +++ b/hw/hyperv/syndbg.c @@ -14,7 +14,7 @@ #include "migration/vmstate.h" #include "hw/qdev-properties.h" #include "hw/loader.h" -#include "cpu.h" +#include "exec/target_page.h" #include "hw/hyperv/hyperv.h" #include "hw/hyperv/vmbus-bridge.h" #include "hw/hyperv/hyperv-proto.h" @@ -183,12 +183,14 @@ static bool create_udp_pkt(HvSynDbg *syndbg, void *pkt, uint32_t pkt_len, return true; } +#define MSG_BUFSZ 4096 + static uint16_t handle_recv_msg(HvSynDbg *syndbg, uint64_t outgpa, uint32_t count, bool is_raw, uint32_t options, uint64_t timeout, uint32_t *retrieved_count) { uint16_t ret; - uint8_t data_buf[TARGET_PAGE_SIZE - UDP_PKT_HEADER_SIZE]; + uint8_t data_buf[MSG_BUFSZ]; hwaddr out_len; void *out_data; ssize_t recv_byte_count; @@ -201,7 +203,7 @@ static uint16_t handle_recv_msg(HvSynDbg *syndbg, uint64_t outgpa, recv_byte_count = 0; } else { recv_byte_count = recv(syndbg->socket, data_buf, - MIN(sizeof(data_buf), count), MSG_WAITALL); + MIN(MSG_BUFSZ, count), MSG_WAITALL); if (recv_byte_count == -1) { return HV_STATUS_INVALID_PARAMETER; } @@ -374,6 +376,8 @@ static const Property hv_syndbg_properties[] = { static void hv_syndbg_class_init(ObjectClass *klass, void *data) { + g_assert(MSG_BUFSZ > qemu_target_page_size()); + DeviceClass *dc = DEVICE_CLASS(klass); device_class_set_props(dc, hv_syndbg_properties); diff --git a/hw/hyperv/meson.build b/hw/hyperv/meson.build index c855fdcf04c..a9f2045a9af 100644 --- a/hw/hyperv/meson.build +++ b/hw/hyperv/meson.build @@ -1,6 +1,6 @@ specific_ss.add(when: 'CONFIG_HYPERV', if_true: files('hyperv.c')) specific_ss.add(when: 'CONFIG_HYPERV_TESTDEV', if_true: files('hyperv_testdev.c')) system_ss.add(when: 'CONFIG_VMBUS', if_true: files('vmbus.c')) -specific_ss.add(when: 'CONFIG_SYNDBG', if_true: files('syndbg.c')) +system_ss.add(when: 'CONFIG_SYNDBG', if_true: files('syndbg.c')) specific_ss.add(when: 'CONFIG_HV_BALLOON', if_true: files('hv-balloon.c', 'hv-balloon-page_range_tree.c', 'hv-balloon-our_range_memslots.c')) system_ss.add(when: 'CONFIG_HV_BALLOON', if_false: files('hv-balloon-stub.c'))
Replace TARGET_PAGE.* by runtime calls Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> --- hw/hyperv/syndbg.c | 10 +++++++--- hw/hyperv/meson.build | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-)