Message ID | 20240509170044.190795-2-pbonzini@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fix --without-default-devices build and (mostly) tests | expand |
On 09/05/2024 19.00, Paolo Bonzini wrote: > This function has no dependency on the virtio-ccw machine type, though it > assumes that the CPU address corresponds to the core_id and the index. > > If there is any need of something different or more fancy (unlikely) > S390 can include a MachineClass subclass and implement it there. For > now, move it to sigp.c for simplicity. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > hw/s390x/s390-virtio-ccw.c | 16 ---------------- > target/s390x/sigp.c | 17 +++++++++++++++++ > 2 files changed, 17 insertions(+), 16 deletions(-) Reviewed-by: Thomas Huth <thuth@redhat.com> > diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c > index 4dcc2138200..feabc173eb3 100644 > --- a/hw/s390x/s390-virtio-ccw.c > +++ b/hw/s390x/s390-virtio-ccw.c > @@ -50,22 +50,6 @@ > > static Error *pv_mig_blocker; > > -S390CPU *s390_cpu_addr2state(uint16_t cpu_addr) > -{ > - static MachineState *ms; > - > - if (!ms) { > - ms = MACHINE(qdev_get_machine()); > - g_assert(ms->possible_cpus); > - } > - > - /* CPU address corresponds to the core_id and the index */ > - if (cpu_addr >= ms->possible_cpus->len) { > - return NULL; > - } > - return S390_CPU(ms->possible_cpus->cpus[cpu_addr].cpu); > -} > - > static S390CPU *s390x_new_cpu(const char *typename, uint32_t core_id, > Error **errp) > { > diff --git a/target/s390x/sigp.c b/target/s390x/sigp.c > index 9dd977349ab..ad0ad61177d 100644 > --- a/target/s390x/sigp.c > +++ b/target/s390x/sigp.c > @@ -11,6 +11,7 @@ > #include "qemu/osdep.h" > #include "cpu.h" > #include "s390x-internal.h" > +#include "hw/boards.h" > #include "sysemu/hw_accel.h" > #include "sysemu/runstate.h" > #include "exec/address-spaces.h" > @@ -435,6 +436,22 @@ static int sigp_set_architecture(S390CPU *cpu, uint32_t param, > return SIGP_CC_STATUS_STORED; > } > > +S390CPU *s390_cpu_addr2state(uint16_t cpu_addr) > +{ > + static MachineState *ms; > + > + if (!ms) { > + ms = MACHINE(qdev_get_machine()); > + g_assert(ms->possible_cpus); > + } > + > + /* CPU address corresponds to the core_id and the index */ > + if (cpu_addr >= ms->possible_cpus->len) { > + return NULL; > + } > + return S390_CPU(ms->possible_cpus->cpus[cpu_addr].cpu); > +} > + > int handle_sigp(CPUS390XState *env, uint8_t order, uint64_t r1, uint64_t r3) > { > uint64_t *status_reg = &env->regs[r1];
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 4dcc2138200..feabc173eb3 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -50,22 +50,6 @@ static Error *pv_mig_blocker; -S390CPU *s390_cpu_addr2state(uint16_t cpu_addr) -{ - static MachineState *ms; - - if (!ms) { - ms = MACHINE(qdev_get_machine()); - g_assert(ms->possible_cpus); - } - - /* CPU address corresponds to the core_id and the index */ - if (cpu_addr >= ms->possible_cpus->len) { - return NULL; - } - return S390_CPU(ms->possible_cpus->cpus[cpu_addr].cpu); -} - static S390CPU *s390x_new_cpu(const char *typename, uint32_t core_id, Error **errp) { diff --git a/target/s390x/sigp.c b/target/s390x/sigp.c index 9dd977349ab..ad0ad61177d 100644 --- a/target/s390x/sigp.c +++ b/target/s390x/sigp.c @@ -11,6 +11,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "s390x-internal.h" +#include "hw/boards.h" #include "sysemu/hw_accel.h" #include "sysemu/runstate.h" #include "exec/address-spaces.h" @@ -435,6 +436,22 @@ static int sigp_set_architecture(S390CPU *cpu, uint32_t param, return SIGP_CC_STATUS_STORED; } +S390CPU *s390_cpu_addr2state(uint16_t cpu_addr) +{ + static MachineState *ms; + + if (!ms) { + ms = MACHINE(qdev_get_machine()); + g_assert(ms->possible_cpus); + } + + /* CPU address corresponds to the core_id and the index */ + if (cpu_addr >= ms->possible_cpus->len) { + return NULL; + } + return S390_CPU(ms->possible_cpus->cpus[cpu_addr].cpu); +} + int handle_sigp(CPUS390XState *env, uint8_t order, uint64_t r1, uint64_t r3) { uint64_t *status_reg = &env->regs[r1];
This function has no dependency on the virtio-ccw machine type, though it assumes that the CPU address corresponds to the core_id and the index. If there is any need of something different or more fancy (unlikely) S390 can include a MachineClass subclass and implement it there. For now, move it to sigp.c for simplicity. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- hw/s390x/s390-virtio-ccw.c | 16 ---------------- target/s390x/sigp.c | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 16 deletions(-)