On Thu, 2023-10-19 at 09:35 -0700, Stefan Hajnoczi wrote:
> On Wed, 18 Oct 2023 at 06:09, Thomas Huth <[email protected]> wrote:
> >
> > From: Pierre Morel <[email protected]>
> >
> > During a subsystem reset the Topology-Change-Report is cleared
> > by the machine.
> > Let's ask KVM to clear the Modified Topology Change Report (MTCR)
> > bit of the SCA in the case of a subsystem reset.
> >
> > Signed-off-by: Pierre Morel <[email protected]>
> > Reviewed-by: Thomas Huth <[email protected]>
> > Reviewed-by: Nina Schoetterl-Glausch <[email protected]>
> > Co-developed-by: Nina Schoetterl-Glausch <[email protected]>
> > Signed-off-by: Nina Schoetterl-Glausch <[email protected]>
> > Message-ID: <[email protected]>
> > Signed-off-by: Thomas Huth <[email protected]>
> > ---
> > include/hw/s390x/cpu-topology.h | 1 +
> > target/s390x/cpu.h | 1 +
> > target/s390x/kvm/kvm_s390x.h | 1 +
> > hw/s390x/cpu-topology.c | 11 +++++++++++
> > hw/s390x/s390-virtio-ccw.c | 3 +++
> > target/s390x/cpu-sysemu.c | 13 +++++++++++++
> > target/s390x/kvm/kvm.c | 17 +++++++++++++++++
> > 7 files changed, 47 insertions(+)
> >
> > diff --git a/include/hw/s390x/cpu-topology.h
> > b/include/hw/s390x/cpu-topology.h
> > index f95d26d37c..e33e7c66df 100644
> > --- a/include/hw/s390x/cpu-topology.h
> > +++ b/include/hw/s390x/cpu-topology.h
> > @@ -56,6 +56,7 @@ static inline void s390_topology_setup_cpu(MachineState
> > *ms,
> > #endif
> >
> > extern S390Topology s390_topology;
> > +void s390_topology_reset(void);
>
> Please take a look at the following CI failure:
>
> /usr/bin/ld: libqemu-s390x-softmmu.fa.p/hw_s390x_s390-virtio-ccw.c.o:
> in function `subsystem_reset':
> /home/gitlab-runner/builds/E8PpwMky/0/qemu-project/qemu/build/../hw/s390x/s390-virtio-ccw.c:128:
> undefined reference to `s390_topology_reset'
>
> https://gitlab.com/qemu-project/qemu/-/jobs/5330218593
I can replicate this with --disable-kvm, tho I don't think that's what the CI
does.
Fix looks something like this (copy pasted):
--- a/include/hw/s390x/cpu-topology.h
+++ b/include/hw/s390x/cpu-topology.h
@@ -45,6 +45,7 @@ typedef QTAILQ_HEAD(, S390TopologyEntry) S390TopologyList;
#ifdef CONFIG_KVM
bool s390_has_topology(void);
void s390_topology_setup_cpu(MachineState *ms, S390CPU *cpu, Error **errp);
+void s390_topology_reset(void);
#else
static inline bool s390_has_topology(void)
{
@@ -53,10 +54,14 @@ static inline bool s390_has_topology(void)
static inline void s390_topology_setup_cpu(MachineState *ms,
S390CPU *cpu,
Error **errp) {}
+static inline void s390_topology_reset(void)
+{
+ /* Unreachable, CPU topology not implemented for TCG */
+ assert(false);
+}
#endif
extern S390Topology s390_topology;
-void s390_topology_reset(void);
static inline int s390_std_socket(int n, CpuTopology *smp)
{