[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v13 4/7] s390x/cpu_topology: CPU topology migration
From: |
Pierre Morel |
Subject: |
Re: [PATCH v13 4/7] s390x/cpu_topology: CPU topology migration |
Date: |
Sun, 11 Dec 2022 15:55:25 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 |
Sorry, I made an error in this patch that break the migration.
On 12/8/22 10:44, Pierre Morel wrote:
+
+const VMStateDescription vmstate_cpu_topology = {
+ .name = "cpu_topology",
+ .version_id = 1,
+ .post_load = cpu_topology_postload,
+ .minimum_version_id = 1,
+ .needed = cpu_topology_needed,
+};
Here having no VMStateField break the migration.
Since there will be a new spin I will change this in the next with
something like this where I also add the saving of the mtcr before the
migration to set it back after the migration.
+/**
+ * cpu_topology_post_load
+ * @opaque: a pointer to the S390Topology
+ * @version_id: version identifier
+ *
+ * We check that the topology is used or is not used
+ * on both side identically.
+ *
+ * If the topology is in use we set the Modified Topology Change Report
+ * on the destination host.
+ */
+static int cpu_topology_post_load(void *opaque, int version_id)
+{
+ S390Topology *topo = opaque;
+ int ret;
+
+ /* Set the MTCR to the saved value */
+ ret = s390_cpu_topology_mtcr_set(topo->mtcr);
+ if (ret) {
+ error_report("Failed to set MTCR: %s", strerror(-ret));
+ }
+ return ret;
+}
+
+/**
+ * cpu_topology_pre_save:
+ * @opaque: The pointer to the S390Topology
+ *
+ * Save the usage of the CPU Topology in the VM State.
+ */
+static int cpu_topology_pre_save(void *opaque)
+{
+ S390Topology *topo = opaque;
+
+ return s390_cpu_topology_mtcr_get(&topo->mtcr);
+}
+
+/**
+ * cpu_topology_needed:
+ * @opaque: The pointer to the S390Topology
+ *
+ * We always need to know if source and destination use the topology.
+ */
+static bool cpu_topology_needed(void *opaque)
+{
+ return true;
+}
+
+const VMStateDescription vmstate_cpu_topology = {
+ .name = "cpu_topology",
+ .version_id = 1,
+ .post_load = cpu_topology_post_load,
+ .pre_save = cpu_topology_pre_save,
+ .minimum_version_id = 1,
+ .needed = cpu_topology_needed,
+ .fields = (VMStateField[]) {
+ VMSTATE_UINT8(mtcr, S390Topology),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
--
Pierre Morel
IBM Lab Boeblingen
- Re: [PATCH v13 1/7] s390x/cpu topology: Creating CPU topology device, (continued)
- [PATCH v13 5/7] s390x/cpu_topology: interception of PTF instruction, Pierre Morel, 2022/12/08
- [PATCH v13 3/7] s390x/cpu_topology: resetting the Topology-Change-Report, Pierre Morel, 2022/12/08
- [PATCH v13 2/7] s390x/cpu topology: reporting the CPU topology to the guest, Pierre Morel, 2022/12/08
- [PATCH v13 4/7] s390x/cpu_topology: CPU topology migration, Pierre Morel, 2022/12/08
- [PATCH v13 7/7] docs/s390x: document s390x cpu topology, Pierre Morel, 2022/12/08
- [PATCH v13 6/7] s390x/cpu_topology: activating CPU topology, Pierre Morel, 2022/12/08
- Re: [PATCH v13 0/7] s390x: CPU Topology, Thomas Huth, 2022/12/09