Single binary patches
Subsystems (7)
[PULL 057/110] monitor: Remove target_get_monitor_def()
In reply to Philippe Mathieu-Daudétarget_get_monitor_def() is now only a dead stub. Remove as pointless.
Message-Id: <[email protected]>
--- include/monitor/hmp-target.h | 1 - monitor/hmp-target.c | 14 +++----------- stubs/target-get-monitor-def.c | 29 ----------------------------- stubs/meson.build | 1 - 4 files changed, 3 insertions(+), 42 deletions(-) delete mode 100644 stubs/target-get-monitor-def.c
include/monitor/hmp-target.h +0 -1
@@ -38,7 +38,6 @@ struct MonitorDef {#endif const MonitorDef *target_monitor_defs (void ); -int target_get_monitor_def (CPUState *cs,const char *name,uint64_t *pval);CPUArchState *mon_get_cpu_env (Monitor *mon);CPUState *mon_get_cpu (Monitor *mon);
monitor/hmp-target.c +3 -11
@@ -66,8 +66,6 @@ int get_monitor_def(Monitor *mon, int64_t *pval, const char *name)const MonitorDef *md =target_monitor_defs ();CPUState *cs =mon_get_cpu (mon);void *ptr; -uint64_t tmp =0 ; -int ret;if (cs ==NULL || md ==NULL ) {return -1 ;
@@ -86,16 +84,10 @@ int get_monitor_def(Monitor *mon, int64_t *pval, const char *name) } } -if (cs->cc->sysemu_ops->monitor_get_register) { - ret = cs->cc->sysemu_ops->monitor_get_register (cs, name, pval); - }else { - ret =target_get_monitor_def (cs, name, &tmp); -if (!ret) { - *pval = (target_long ) tmp; - } +if (!cs->cc->sysemu_ops->monitor_get_register) { +return -1 ; } - -return ret; +return cs->cc->sysemu_ops->monitor_get_register (cs, name, pval); } static int
stubs/target-get-monitor-def.c deleted +0 -29
@@ -1,29 +0,0 @@ -/* -* Stub for target_get_monitor_def. -* -* Copyright IBM Corp., 2015 -* -* Author: Alexey Kardashevskiy <[email protected]> -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, -* or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, see <http://www.gnu.org/licenses/>. -*/ - -#include "qemu/osdep.h" - -int target_get_monitor_def (CPUState *cs,const char *name,uint64_t *pval); - -int target_get_monitor_def (CPUState *cs,const char *name,uint64_t *pval) -{ -return -1 ; -}
stubs/meson.build +0 -1
@@ -75,7 +75,6 @@ if have_system stub_ss.add(files('igvm.c')) endif stub_ss.add(files('kvm.c')) - stub_ss.add(files('target-get-monitor-def.c')) stub_ss.add(files('target-monitor-defs.c')) stub_ss.add(files('win32-kbd-hook.c')) stub_ss.add(files('xen-hw-stub.c'))
Signature · 1 line
2.53.0
[PULL 109/110] scripts/checkpatch: Avoid false positive on empty blocks
In reply to Philippe Mathieu-DaudéFrom: Akihiko Odaki <[email protected]>
SUSPECT_CODE_INDENT checks the first line after a conditional statement. When the block is empty, the first line after the conditional is the closing brace at the same indentation level, so checkpatch reports a bogus indentation error.
Ignore same-indented braces and else statements, matching with:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f6950a735f29e782bc219ece22bb91d6e1ab7bbc
Message-ID: <[email protected]>
--- scripts/checkpatch.pl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
scripts/checkpatch.pl +2 -1
@@ -2283,7 +2283,8 @@ sub process { #print "line<$line> prevline<$prevline> indent<$indent> sindent<$sindent> check<$check> continuation<$continuation> s<$s> cond_lines<$cond_lines> stat_real<$stat_real> stat<$stat>\n"; if ($check && (($sindent % 4) != 0 || - ($sindent <= $indent && $s ne ''))) { + ($sindent <= $indent && + $s !~ /^\s*(?:\}|\{|else\b)/))) { ERROR("suspect code indent for conditional statements ($indent, $sindent)\n" . $herecurr . "$stat_real\n"); } }
Signature · 1 line
2.53.0
[PULL 102/110] io: use g_clear_handle_id() for GSource cleanup
In reply to Philippe Mathieu-DaudéUse g_clear_handle_id() instead of g_source_remove() with manual ID checking and zeroing.
This simplifies the code and ensures consistent handling of GSource IDs, since g_clear_handle_id() checks for a non-zero ID before calling the cleanup function and zeros it afterwards.
No functional change intended.
Mechanical change using the following Coccinelle spatch script:
@@
expression TAG;
@@
- if (TAG > 0) {
+ if (TAG) {
g_source_remove(TAG);
<... when != TAG
TAG = 0;
...>
} @@
expression TAG;
@@
- g_source_remove(TAG); - TAG = 0; + g_clear_handle_id(&TAG, g_source_remove);
@@
expression TAG;
@@
- if (TAG) {
g_clear_handle_id(&TAG, g_source_remove);- }
Message-Id: <[email protected]>
--- hw/char/cmsdk-apb-uart.c | 5 +---- hw/char/nrf51_uart.c | 5 +---- hw/char/serial.c | 6 +----- hw/char/stm32l4x5_usart.c | 5 +---- hw/char/terminal3270.c | 5 +---- hw/char/virtio-console.c | 10 ++-------- hw/usb/redirect.c | 5 +---- io/channel-websock.c | 13 +++---------- net/passt.c | 8 ++------ net/stream.c | 15 +++------------ net/stream_data.c | 5 +---- net/vhost-user.c | 8 ++------ ui/dbus-clipboard.c | 6 ++---- ui/input-barrier.c | 6 +----- ui/vnc-auth-vencrypt.c | 6 +----- ui/vnc-ws.c | 12 ++---------- 16 files changed, 25 insertions(+), 95 deletions(-)
hw/char/cmsdk-apb-uart.c +1 -4
@@ -236,10 +236,7 @@ buffer_drained:static void uart_cancel_transmit (CMSDKAPBUART *s) { -if (s->watch_tag) { -g_source_remove (s->watch_tag); - s->watch_tag =0 ; - } +g_clear_handle_id (&s->watch_tag, g_source_remove); } static void uart_write(void *opaque, hwaddr offset, uint64_t value,
hw/char/nrf51_uart.c +1 -4
@@ -104,10 +104,7 @@ buffer_drained:static void uart_cancel_transmit (NRF51UARTState *s) { -if (s->watch_tag) { -g_source_remove (s->watch_tag); - s->watch_tag =0 ; - } +g_clear_handle_id (&s->watch_tag, g_source_remove); } static void uart_write(void *opaque, hwaddr addr,
hw/char/serial.c +1 -5
@@ -856,11 +856,7 @@ const VMStateDescription vmstate_serial = {static void serial_reset (void *opaque) {SerialState *s = opaque; - -if (s->watch_tag >0 ) { -g_source_remove (s->watch_tag); - s->watch_tag =0 ; - } +g_clear_handle_id (&s->watch_tag, g_source_remove); s->rbr =0 ; s->ier =0 ;
hw/char/stm32l4x5_usart.c +1 -4
@@ -280,10 +280,7 @@ buffer_drained:static void usart_cancel_transmit (Stm32l4x5UsartBaseState *s) { -if (s->watch_tag) { -g_source_remove (s->watch_tag); - s->watch_tag =0 ; - } +g_clear_handle_id (&s->watch_tag, g_source_remove); }static void stm32l4x5_update_params (Stm32l4x5UsartBaseState *s)
hw/char/terminal3270.c +1 -4
@@ -52,10 +52,7 @@ static int terminal_can_read(void *opaque)static void terminal_timer_cancel (Terminal3270 *t) { -if (t->timer_tag) { -g_source_remove (t->timer_tag); - t->timer_tag =0 ; - } +g_clear_handle_id (&t->timer_tag, g_source_remove); }/*
hw/char/virtio-console.c +2 -8
@@ -159,10 +159,7 @@ static void chr_event(void *opaque, QEMUChrEvent event)virtio_serial_open (port);break ;case CHR_EVENT_CLOSED : -if (vcon->watch) { -g_source_remove (vcon->watch); - vcon->watch =0 ; - } +g_clear_handle_id (&vcon->watch, g_source_remove);virtio_serial_close (port);break ;case CHR_EVENT_BREAK :
@@ -255,10 +252,7 @@ static void virtconsole_realize(DeviceState *dev, Error **errp)static void virtconsole_unrealize (DeviceState *dev) {VirtConsole *vcon =VIRTIO_CONSOLE (dev); - -if (vcon->watch) { -g_clear_handle_id (&vcon->watch, g_source_remove); - } +g_clear_handle_id (&vcon->watch, g_source_remove); }static void virtconsole_class_init (ObjectClass *klass,const void *data)
hw/usb/redirect.c +1 -4
@@ -1226,10 +1226,7 @@ static void usbredir_chardev_close_bh(void *opaque)usbredirparser_destroy (dev->parser); dev->parser =NULL ; } -if (dev->watch) { -g_source_remove (dev->watch); - dev->watch =0 ; - } +g_clear_handle_id (&dev->watch, g_source_remove); }static void usbredir_create_parser (USBRedirDevice *dev)
io/channel-websock.c +3 -10
@@ -1066,10 +1066,7 @@ static gboolean qio_channel_websock_flush(QIOChannel *ioc,static void qio_channel_websock_unset_watch (QIOChannelWebsock *ioc) { -if (ioc->io_tag) { -g_source_remove (ioc->io_tag); - ioc->io_tag =0 ; - } +g_clear_handle_id (&ioc->io_tag, g_source_remove); }static void qio_channel_websock_set_watch (QIOChannelWebsock *ioc)
@@ -1246,12 +1243,8 @@ static int qio_channel_websock_close(QIOChannel *ioc,buffer_free (&wioc->encinput);buffer_free (&wioc->encoutput);buffer_free (&wioc->rawinput); -if (wioc->hs_io_tag) { -g_clear_handle_id (&wioc->hs_io_tag, g_source_remove); - } -if (wioc->io_tag) { -g_clear_handle_id (&wioc->io_tag, g_source_remove); - } +g_clear_handle_id (&wioc->hs_io_tag, g_source_remove); +g_clear_handle_id (&wioc->io_tag, g_source_remove);if (wioc->io_err) {g_clear_pointer (&wioc->io_err, error_free); }
net/passt.c +2 -6
@@ -90,10 +90,7 @@ static void net_passt_cleanup(NetClientState *nc)g_free (s->vhost_net); s->vhost_net =NULL ; } -if (s->vhost_watch) { -g_source_remove (s->vhost_watch); - s->vhost_watch =0 ; - } +g_clear_handle_id (&s->vhost_watch, g_source_remove);qemu_chr_fe_deinit (&s->vhost_chr, true);if (s->vhost_user) {vhost_user_cleanup (s->vhost_user);
@@ -421,8 +418,7 @@ static void passt_vhost_user_event(void *opaque, QEMUChrEvent event)if (s->vhost_watch) {AioContext *ctx =qemu_get_current_aio_context (); -g_source_remove (s->vhost_watch); - s->vhost_watch =0 ; +g_clear_handle_id (&s->vhost_watch, g_source_remove);qemu_chr_fe_set_handlers (&s->vhost_chr,NULL ,NULL ,NULL ,NULL ,NULL ,NULL , false);
net/stream.c +3 -12
@@ -71,24 +71,15 @@ static gboolean net_stream_send(QIOChannel *ioc,static void net_stream_cleanup (NetClientState *nc) {NetStreamState *s =DO_UPCAST (NetStreamState, data.nc, nc); -if (s->timer_tag) { -g_source_remove (s->timer_tag); - s->timer_tag =0 ; - } +g_clear_handle_id (&s->timer_tag, g_source_remove);if (s->addr) {qapi_free_SocketAddress (s->addr); s->addr =NULL ; }if (s->data.ioc) {if (QIO_CHANNEL_SOCKET (s->data.ioc)->fd !=-1 ) { -if (s->data.ioc_read_tag) { -g_source_remove (s->data.ioc_read_tag); - s->data.ioc_read_tag =0 ; - } -if (s->data.ioc_write_tag) { -g_source_remove (s->data.ioc_write_tag); - s->data.ioc_write_tag =0 ; - } +g_clear_handle_id (&s->data.ioc_read_tag, g_source_remove); +g_clear_handle_id (&s->data.ioc_write_tag, g_source_remove); }object_unref (OBJECT (s->data.ioc)); s->data.ioc =NULL ;
net/stream_data.c +1 -4
@@ -84,10 +84,7 @@ void net_stream_data_rs_finalize(SocketReadState *rs)if (qemu_send_packet_async (&d->nc, rs->buf, rs->packet_len, net_stream_data_send_completed) ==0 ) { -if (d->ioc_read_tag) { -g_source_remove (d->ioc_read_tag); - d->ioc_read_tag =0 ; - } +g_clear_handle_id (&d->ioc_read_tag, g_source_remove); } }
net/vhost-user.c +2 -6
@@ -215,10 +215,7 @@ static void net_vhost_user_cleanup(NetClientState *nc) s->vhost_net =NULL ; }if (nc->queue_index ==0 ) { -if (s->watch) { -g_source_remove (s->watch); - s->watch =0 ; - } +g_clear_handle_id (&s->watch, g_source_remove);qemu_chr_fe_deinit (&s->chr, true);if (s->vhost_user) {vhost_user_cleanup (s->vhost_user);
@@ -356,8 +353,7 @@ static void net_vhost_user_event(void *opaque, QEMUChrEvent event)if (s->watch) {AioContext *ctx =qemu_get_current_aio_context (); -g_source_remove (s->watch); - s->watch =0 ; +g_clear_handle_id (&s->watch, g_source_remove);qemu_chr_fe_set_handlers (&s->chr,NULL ,NULL ,NULL ,NULL ,NULL ,NULL , false);
ui/dbus-clipboard.c +2 -4
@@ -80,8 +80,7 @@ dbus_clipboard_update_info(DBusDisplay *dpy, QemuClipboardInfo *info)if (req->invocation && info->types[req->type].data) {dbus_clipboard_complete_request (dpy, req->invocation, info, req->type);g_clear_object (&req->invocation); -g_source_remove (req->timeout_id); - req->timeout_id =0 ; +g_clear_handle_id (&req->timeout_id, g_source_remove);return ; }
@@ -183,8 +182,7 @@ dbus_clipboard_request_cancelled(DBusClipboardRequest *req) "Cancelled clipboard request");g_clear_object (&req->invocation); -g_source_remove (req->timeout_id); - req->timeout_id =0 ; +g_clear_handle_id (&req->timeout_id, g_source_remove); } static void
ui/input-barrier.c +1 -5
@@ -518,11 +518,7 @@ static void input_barrier_complete(UserCreatable *uc, Error **errp)static void input_barrier_instance_finalize (Object *obj) {InputBarrier *ib =INPUT_BARRIER (obj); - -if (ib->ioc_tag) { -g_source_remove (ib->ioc_tag); - ib->ioc_tag =0 ; - } +g_clear_handle_id (&ib->ioc_tag, g_source_remove);if (ib->sioc) {qio_channel_close (QIO_CHANNEL (ib->sioc),NULL );
ui/vnc-auth-vencrypt.c +1 -5
@@ -101,11 +101,7 @@ static int protocol_client_vencrypt_auth(VncState *vs, uint8_t *data, size_t lenQIOChannelTLS *tls;vnc_write_u8 (vs,1 );/* Accept auth */ vnc_flush (vs); - -if (vs->ioc_tag) { -g_source_remove (vs->ioc_tag); - vs->ioc_tag =0 ; - } +g_clear_handle_id (&vs->ioc_tag, g_source_remove); tls = qio_channel_tls_new_server( vs->ioc,
ui/vnc-ws.c +2 -10
@@ -54,11 +54,7 @@ gboolean vncws_tls_handshake_io(QIOChannel *ioc G_GNUC_UNUSED,VncState *vs = opaque;QIOChannelTLS *tls;Error *err =NULL ; - -if (vs->ioc_tag) { -g_source_remove (vs->ioc_tag); - vs->ioc_tag =0 ; - } +g_clear_handle_id (&vs->ioc_tag, g_source_remove);if (condition & (G_IO_HUP |G_IO_ERR )) {vnc_client_error (vs);
@@ -123,11 +119,7 @@ gboolean vncws_handshake_io(QIOChannel *ioc G_GNUC_UNUSED, {VncState *vs = opaque;QIOChannelWebsock *wioc; - -if (vs->ioc_tag) { -g_source_remove (vs->ioc_tag); - vs->ioc_tag =0 ; - } +g_clear_handle_id (&vs->ioc_tag, g_source_remove);if (condition & (G_IO_HUP |G_IO_ERR )) {vnc_client_error (vs);
Signature · 1 line
2.53.0
[PULL 045/110] monitor: Make Xen emulation commands generic ones
In reply to Philippe Mathieu-DaudéIn order to build hmp-commands.hx once we need to stop using device target-specific check. Use the generic pattern to make the command available on all targets, providing a stub with kind error message when the feature is not available.
Message-Id: <[email protected]>
--- hw/i386/kvm/xen-stubs.c | 12 ++++++++++++ hmp-commands.hx | 2 -- 2 files changed, 12 insertions(+), 2 deletions(-)
hw/i386/kvm/xen-stubs.c +12 -0
@@ -12,6 +12,8 @@#include "qemu/osdep.h" #include "qapi/error.h" +#include "monitor/monitor.h" +#include "monitor/hmp.h" #include "xen_evtchn.h" #include "xen_primary_console.h"
@@ -37,3 +39,13 @@ void xen_primary_console_create(void)void xen_primary_console_set_be_port (uint16_t port) { } + +void hmp_xen_event_list (Monitor *mon,const QDict *qdict) +{ +monitor_printf (mon,"XEN emulation is not available in this QEMU\n" ); +} + +void hmp_xen_event_inject (Monitor *mon,const QDict *qdict) +{ +monitor_printf (mon,"XEN emulation is not available in this QEMU\n" ); +}
hmp-commands.hx +0 -2
@@ -1843,7 +1843,6 @@ SRST ERST #endif -#if defined(CONFIG_XEN_EMU) { .name = "xen-event-inject", .args_type = "port:i",
@@ -1870,7 +1869,6 @@ SRST ``xen-event-list`` List event channels in the guest ERST -#endif HXCOMM *** MUST BE LAST ENTRY ** {
Signature · 1 line
2.53.0
[PULL 092/110] target/s390x: Compile vec_helper.c as common unit
In reply to Philippe Mathieu-DaudéIn order do build vec_helper.c as a common unit we need to replace:
"accel/tcg/cpu-ldst.h" -> "accel/tcg/cpu-ldst-common.h"
and update the cpu_ld/st_be_data_ra() API by cpu_ld/st_mmu() one.
Message-Id: <[email protected]>
--- target/s390x/tcg/vec_helper.c | 34 +++++++++++++++++++++++----------- target/s390x/tcg/meson.build | 2 +- 2 files changed, 24 insertions(+), 12 deletions(-)
target/s390x/tcg/vec_helper.c +23 -11
@@ -16,7 +16,8 @@#include "tcg/tcg.h" #include "tcg/tcg-gvec-desc.h" #include "exec/helper-proto.h" -#include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-ldst-common.h" +#include "accel/tcg/cpu-mmu-index.h" void HELPER (gvec_vbperm )(void *v1,const void *v2,const void *v3,uint32_t desc)
@@ -42,20 +43,26 @@ void HELPER(gvec_vbperm)(void *v1, const void *v2, const void *v3,void HELPER (vll )(CPUS390XState *env,void *v1,uint64_t addr,uint64_t bytes) { +const int mmu_idx =cpu_mmu_index (env_cpu (env), false); +const uintptr_t ra =GETPC (); +MemOpIdx oi; +if (likely (bytes >=16 )) {uint64_t t0, t1; - t0 =cpu_ldq_be_data_ra (env, addr,GETPC ()); + oi =make_memop_idx (MO_BE |MO_64 |MO_UNALN , mmu_idx); + t0 =cpu_ldq_mmu (env, addr, oi, ra); addr =wrap_address (env, addr +8 ); - t1 =cpu_ldq_be_data_ra (env, addr,GETPC ()); + t1 =cpu_ldq_mmu (env, addr, oi, ra);s390_vec_write_element64 (v1,0 , t0);s390_vec_write_element64 (v1,1 , t1); }else {S390Vector tmp = {}; -int i; -for (i =0 ; i < bytes; i++) { -uint8_t byte =cpu_ldub_data_ra (env, addr,GETPC ()); + oi =make_memop_idx (MO_8 , mmu_idx); +for (int i =0 ; i < bytes; i++) { +uint8_t byte =cpu_ldb_mmu (env, addr, oi, ra); +s390_vec_write_element8 (&tmp, i, byte); addr =wrap_address (env, addr +1 );
@@ -191,20 +198,25 @@ void HELPER(gvec_vperm)(void *v1, const void *v2, const void *v3,void HELPER (vstl )(CPUS390XState *env,const void *v1,uint64_t addr,uint64_t bytes) { +const int mmu_idx =cpu_mmu_index (env_cpu (env), false); +const uintptr_t ra =GETPC (); +MemOpIdx oi; +/* Probe write access before actually modifying memory */ probe_write_access (env, addr,MIN (bytes,16 ),GETPC ());if (likely (bytes >=16 )) { -cpu_stq_be_data_ra (env, addr,s390_vec_read_element64 (v1,0 ),GETPC ()); + oi =make_memop_idx (MO_BE |MO_64 |MO_UNALN , mmu_idx); +cpu_stq_mmu (env, addr,s390_vec_read_element64 (v1,0 ), oi, ra); addr =wrap_address (env, addr +8 ); -cpu_stq_be_data_ra (env, addr,s390_vec_read_element64 (v1,1 ),GETPC ()); +cpu_stq_mmu (env, addr,s390_vec_read_element64 (v1,1 ), oi, ra); }else { -int i; + oi =make_memop_idx (MO_8 , mmu_idx); -for (i =0 ; i < bytes; i++) { +for (int i =0 ; i < bytes; i++) {uint8_t byte =s390_vec_read_element8 (v1, i); -cpu_stb_data_ra (env, addr, byte,GETPC ()); +cpu_stb_mmu (env, addr, byte, oi, ra); addr =wrap_address (env, addr +1 ); } }
target/s390x/tcg/meson.build +1 -1
@@ -3,7 +3,6 @@ s390x_ss.add(when: 'CONFIG_TCG', if_true: files( 'int_helper.c', 'mem_helper.c', 'misc_helper.c', - 'vec_helper.c', )) s390x_common_ss.add(when: 'CONFIG_TCG', if_true: files( 'cc_helper.c',
@@ -11,6 +10,7 @@ s390x_common_ss.add(when: 'CONFIG_TCG', if_true: files( 'fpu_helper.c', 'translate.c', 'vec_fpu_helper.c', + 'vec_helper.c', 'vec_int_helper.c', 'vec_string_helper.c', ))
Signature · 1 line
2.53.0
[PULL 098/110] target/mips: Do not initialize variable used by CPU_FOREACH macro
In reply to Philippe Mathieu-DaudéThe CPU_FOREACH() macro, defined in "hw/core/cpu.h", ends up calling QTAILQ_FOREACH_RCU() which always assigns its iterator variable when entering the loop. Remove the pointless and possibly misleading assignment.
Mechanical patch using the following coccinelle spatch:
@@
type T;
identifier e;
iterator FOREACH_MACRO =~ ".*_FOREACH.*";
statement S;
@@
- T *e = ...;
+ T *e;
... when != e
FOREACH_MACRO(e, ...) SMessage-Id: <[email protected]>
--- target/mips/internal.h | 2 +- hw/misc/mips_cpc.c | 4 ++-- target/mips/tcg/system/cp0_helper.c | 8 ++++---- target/mips/tcg/system/tlb_helper.c | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-)
target/mips/internal.h +1 -1
@@ -280,7 +280,7 @@ static inline int mips_vpe_active(CPUMIPSState *env)static inline int mips_vp_active (CPUMIPSState *env) { -CPUState *cs = first_cpu; +CPUState *cs;/* Check if the VP disabled other VPs (which means the VP is enabled) */ if ((env->CP0_VPControl >> CP0VPCtl_DIS) &1 ) {
hw/misc/mips_cpc.c +2 -2
@@ -45,7 +45,7 @@ static void mips_cpu_reset_async_work(CPUState *cs, run_on_cpu_data data)static void cpc_run_vp (MIPSCPCState *cpc,uint64_t vp_run) { -CPUState *cs = first_cpu; +CPUState *cs;CPU_FOREACH (cs) {uint64_t i =1ULL << cs->cpu_index;
@@ -63,7 +63,7 @@ static void cpc_run_vp(MIPSCPCState *cpc, uint64_t vp_run)static void cpc_stop_vp (MIPSCPCState *cpc,uint64_t vp_stop) { -CPUState *cs = first_cpu; +CPUState *cs;CPU_FOREACH (cs) {uint64_t i =1ULL << cs->cpu_index;
target/mips/tcg/system/cp0_helper.c +4 -4
@@ -1570,7 +1570,7 @@ target_ulong helper_dvpe(CPUMIPSState *env)target_ulong prev = cpu->mvp->CP0_MVPControl;if (env->CP0_VPEConf0 & (1 <<CP0VPEC0_MVP )) { -CPUState *cs = first_cpu; +CPUState *cs;CPU_FOREACH (cs) {MIPSCPU *other_cpu =MIPS_CPU (cs);
@@ -1590,7 +1590,7 @@ target_ulong helper_evpe(CPUMIPSState *env)target_ulong prev = cpu->mvp->CP0_MVPControl;if (env->CP0_VPEConf0 & (1 <<CP0VPEC0_MVP )) { -CPUState *cs = first_cpu; +CPUState *cs;CPU_FOREACH (cs) {MIPSCPU *other_cpu =MIPS_CPU (cs);
@@ -1613,7 +1613,7 @@ target_ulong helper_dvp(CPUMIPSState *env)target_ulong prev = env->CP0_VPControl;if (!((env->CP0_VPControl >> CP0VPCtl_DIS) &1 )) { -CPUState *cpu = first_cpu; +CPUState *cpu;CPU_FOREACH (cpu) {MIPSCPU *other_cpu =MIPS_CPU (cpu);
@@ -1632,7 +1632,7 @@ target_ulong helper_evp(CPUMIPSState *env)target_ulong prev = env->CP0_VPControl;if ((env->CP0_VPControl >> CP0VPCtl_DIS) &1 ) { -CPUState *cpu = first_cpu; +CPUState *cpu;CPU_FOREACH (cpu) {MIPSCPU *other_cpu =MIPS_CPU (cpu);
target/mips/tcg/system/tlb_helper.c +1 -1
@@ -346,7 +346,7 @@ void helper_ginvt(CPUMIPSState *env, target_ulong arg, uint32_t type)uint32_t invMsgVPN2 = arg & (TARGET_PAGE_MASK <<1 );uint8_t invMsgR =0 ;uint32_t invMsgMMid = env->CP0_MemoryMapID; -CPUState *cpu = first_cpu; +CPUState *cpu;#ifdef TARGET_MIPS64 invMsgR =extract64 (arg,62 ,2 );
Signature · 1 line
2.53.0
[PULL 099/110] target/s390x: Do not compile KVM stubs for linux-user binary
In reply to Philippe Mathieu-DaudéNone of these KVM symbols should be used in the qemu-s390x linux-user binary. Do not build the stub there, prefer a real linker failure.
Message-Id: <[email protected]>
--- target/s390x/kvm/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
target/s390x/kvm/meson.build +1 -1
@@ -1,5 +1,5 @@ -s390x_ss.add(when: 'CONFIG_KVM', if_true: files( +s390x_system_ss.add(when: 'CONFIG_KVM', if_true: files( 'pv.c', 'kvm.c', 'stsi-topology.c'
Signature · 1 line
2.53.0
[PULL 080/110] target/arm: define stub library
In reply to Philippe Mathieu-DaudéFrom: Pierrick Bouvier <[email protected]>
We use the mechanic introduced in previous commit to define a arm stubs library. With this, we are able to eliminate symbol conflicts when linking arm and aarch64 targets, and get one step closer to having a single-binary.
Message-Id: <[email protected]>
--- target/arm/meson.build | 8 +++----- target/arm/tcg/meson.build | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-)
target/arm/meson.build +3 -5
@@ -2,6 +2,7 @@ arm_ss = ss.source_set() arm_common_ss = ss.source_set() arm_common_system_ss = ss.source_set() arm_system_ss = ss.source_set() +arm_stubs_ss = ss.source_set() arm_user_ss = ss.source_set() arm_common_system_ss.add(files('gdbstub.c'))
@@ -23,9 +24,7 @@ arm_system_ss.add(when: 'CONFIG_KVM', if_true: files('hyp_gdbstub.c', 'kvm.c')) arm_system_ss.add(when: 'CONFIG_HVF', if_true: files('hyp_gdbstub.c')) arm_user_ss.add(files('cpu.c')) -arm_user_ss.add(when: 'TARGET_AARCH64', if_false: files( - 'cpu32-stubs.c', -)) +arm_stubs_ss.add(files('cpu32-stubs.c')) arm_user_ss.add(files( 'cpregs-gcs.c', 'cpregs-pmu.c',
@@ -39,8 +38,6 @@ arm_user_ss.add(when: 'CONFIG_ARM_COMPATIBLE_SEMIHOSTING', if_true: files('common-semi-target.c')) arm_common_system_ss.add(files('cpu.c')) -arm_common_system_ss.add(when: 'TARGET_AARCH64', if_false: files( - 'cpu32-stubs.c')) arm_common_system_ss.add(when: 'CONFIG_KVM', if_false: files('kvm-stub.c')) arm_common_system_ss.add(when: 'CONFIG_ARM_COMPATIBLE_SEMIHOSTING', if_true: files('common-semi-target.c'))
@@ -73,3 +70,4 @@ target_system_arch += {'arm': arm_system_ss} target_user_arch += {'arm': arm_user_ss} target_common_arch += {'arm': arm_common_ss} target_common_system_arch += {'arm': arm_common_system_ss} +target_stubs_arch += {'arm': arm_stubs_ss}
target/arm/tcg/meson.build +1 -1
@@ -28,7 +28,7 @@ translate32_d = [ ] arm_ss.add(when: 'TARGET_AARCH64', if_true: gen_a64) -arm_ss.add(when: 'TARGET_AARCH64', if_false: files('stubs32.c')) +arm_stubs_ss.add(files('stubs32.c')) arm_ss.add(files( 'cpu32.c',
Signature · 1 line
2.53.0
[PULL 104/110] cocci: Do not initialize variable used by QLIST_FOREACH macro
In reply to Philippe Mathieu-DaudéThe QLIST_FOREACH() macro, defined in "qemu/queue.h", always assigns its iterator variable when entering the loop. Remove the pointless and possibly misleading assignment.
Mechanical patch using the following coccinelle spatch:
@@
type T;
identifier e;
iterator FOREACH_MACRO =~ ".*_FOREACH.*";
statement S;
@@
- T *e = ...;
+ T *e;
... when != e
FOREACH_MACRO(e, ...) SMessage-Id: <[email protected]>
--- block/blkio.c | 2 +- block/gluster.c | 4 ++-- hw/arm/virt-acpi-build.c | 2 +- hw/i386/xen/xen-hvm.c | 4 ++-- hw/riscv/riscv-iommu.c | 2 +- hw/vfio/cpr-legacy.c | 2 +- hw/vfio/listener.c | 4 ++-- hw/xen/xen_pt_config_init.c | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-)
block/blkio.c +1 -1
@@ -124,7 +124,7 @@ blkio_do_alloc_bounce_buffer(BDRVBlkioState *s, BlkioBounceBuf *bounce, int64_t bytes) {void *addr = s->bounce_pool.addr; -BlkioBounceBuf *cur =NULL ; +BlkioBounceBuf *cur;BlkioBounceBuf *prev =NULL ;ptrdiff_t space;
block/gluster.c +2 -2
@@ -251,7 +251,7 @@ static void glfs_set_preopened(const char *volume, glfs_t *fs)static glfs_t *glfs_find_preopened (const char *volume) { -ListElement *entry =NULL ; +ListElement *entry; QLIST_FOREACH(entry, &glfs_list, list) {if (strcmp (entry->saved.volume, volume) ==0 ) {
@@ -265,7 +265,7 @@ static glfs_t *glfs_find_preopened(const char *volume)static void glfs_clear_preopened (glfs_t *fs) { -ListElement *entry =NULL ; +ListElement *entry;ListElement *next;if (fs ==NULL ) {
hw/arm/virt-acpi-build.c +1 -1
@@ -146,7 +146,7 @@ static void acpi_dsdt_add_pci(Aml *scope, const MemMapEntry *memmap, {int ecam_id =VIRT_ECAM_ID (vms->highmem_ecam);bool cxl_present = false; -PCIBus *bus = vms->bus; +PCIBus *bus;bool acpi_pcihp = false;if (vms->acpi_dev) {
hw/i386/xen/xen-hvm.c +2 -2
@@ -184,7 +184,7 @@ static void xen_ram_init(PCMachineState *pcms,static XenPhysmap *get_physmapping (hwaddr start_addr,ram_addr_t size,int page_mask) { -XenPhysmap *physmap =NULL ; +XenPhysmap *physmap; start_addr &= page_mask;
@@ -200,7 +200,7 @@ static hwaddr xen_phys_offset_to_gaddr(hwaddr phys_offset, ram_addr_t size, int page_mask) {hwaddr addr = phys_offset & page_mask; -XenPhysmap *physmap =NULL ; +XenPhysmap *physmap; QLIST_FOREACH(physmap, &xen_physmap, list) {if (range_covers_byte (physmap->phys_offset, physmap->size, addr)) {
hw/riscv/riscv-iommu.c +1 -1
@@ -1678,7 +1678,7 @@ static void riscv_iommu_ats(RISCVIOMMUState *s,IOMMUAccessFlags perm, void (*trace_fn)(const char *id)) { - RISCVIOMMUSpace *as = NULL; + RISCVIOMMUSpace *as;IOMMUNotifier *n;IOMMUTLBEvent event;uint32_t pid;
hw/vfio/cpr-legacy.c +1 -1
@@ -212,7 +212,7 @@ void vfio_legacy_cpr_unregister_container(VFIOLegacyContainer *container)void vfio_cpr_giommu_remap (VFIOContainer *bcontainer,MemoryRegionSection *section) { -VFIOGuestIOMMU *giommu =NULL ; +VFIOGuestIOMMU *giommu;hwaddr as_offset = section->offset_within_address_space;hwaddr iommu_offset = as_offset - section->offset_within_region;
hw/vfio/listener.c +2 -2
@@ -333,7 +333,7 @@ static void vfio_ram_discard_unregister_listener(VFIOContainer *bcontainer, MemoryRegionSection *section) {RamDiscardManager *rdm =memory_region_get_ram_discard_manager (section->mr); -VFIORamDiscardListener *vrdl =NULL ; +VFIORamDiscardListener *vrdl; QLIST_FOREACH(vrdl, &bcontainer->vrdl_list, next) { if (vrdl->mr == section->mr &&
@@ -463,7 +463,7 @@ static void vfio_device_error_append(VFIODevice *vbasedev, Error **errp)VFIORamDiscardListener *vfio_find_ram_discard_listener (VFIOContainer *bcontainer,MemoryRegionSection *section) { -VFIORamDiscardListener *vrdl =NULL ; +VFIORamDiscardListener *vrdl; QLIST_FOREACH(vrdl, &bcontainer->vrdl_list, next) { if (vrdl->mr == section->mr &&
hw/xen/xen_pt_config_init.c +2 -2
@@ -62,7 +62,7 @@ static int xen_pt_hide_dev_cap(const XenHostPCIDevice *d, uint8_t grp_id)/* find emulate register group entry */ XenPTRegGroup *xen_pt_find_reg_grp (XenPCIPassthroughState *s,uint32_t address) { -XenPTRegGroup *entry =NULL ; +XenPTRegGroup *entry;/* find register group entry */ QLIST_FOREACH(entry, &s->reg_grps, entries) {
@@ -80,7 +80,7 @@ XenPTRegGroup *xen_pt_find_reg_grp(XenPCIPassthroughState *s, uint32_t address)/* find emulate register entry */ XenPTReg *xen_pt_find_reg (XenPTRegGroup *reg_grp,uint32_t address) { -XenPTReg *reg_entry =NULL ; +XenPTReg *reg_entry;XenPTRegInfo *reg =NULL ;uint32_t real_offset =0 ;
Signature · 1 line
2.53.0
Stefan Hajnoczi
AppliedApplied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/11.1 for any user-visible changes.