* [Qemu-devel] [PATCH v5 0/2] ppc/spapr: Fix migration of radix guests
@ 2017-06-07 7:54 Bharata B Rao
2017-06-07 7:54 ` [Qemu-devel] [PATCH v5 1/2] spapr: Add a "no HPT" encoding to HTAB migration stream Bharata B Rao
2017-06-07 7:54 ` [Qemu-devel] [PATCH v5 2/2] spapr: Fix migration of Radix guests Bharata B Rao
0 siblings, 2 replies; 5+ messages in thread
From: Bharata B Rao @ 2017-06-07 7:54 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-ppc, david, sam.bobroff, rnsastry, sjitindarsingh,
Bharata B Rao
This patchset fixes the migration of sPAPR radix guests.
Changes in v5
-------------
- Ensured that assert(kvm_enabled()) isn't touched in any HTAB savevm
handlers except in htab_save_setup() where it is made conditional on
htab_shift.
v4: https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg07058.html
Bharata B Rao (2):
spapr: Add a "no HPT" encoding to HTAB migration stream
spapr: Fix migration of Radix guests
hw/ppc/spapr.c | 40 ++++++++++++++++++++++++++++++++++++----
1 file changed, 36 insertions(+), 4 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH v5 1/2] spapr: Add a "no HPT" encoding to HTAB migration stream
2017-06-07 7:54 [Qemu-devel] [PATCH v5 0/2] ppc/spapr: Fix migration of radix guests Bharata B Rao
@ 2017-06-07 7:54 ` Bharata B Rao
2017-06-08 4:28 ` David Gibson
2017-06-07 7:54 ` [Qemu-devel] [PATCH v5 2/2] spapr: Fix migration of Radix guests Bharata B Rao
1 sibling, 1 reply; 5+ messages in thread
From: Bharata B Rao @ 2017-06-07 7:54 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-ppc, david, sam.bobroff, rnsastry, sjitindarsingh,
Bharata B Rao
Add a "no HPT" encoding (using value -1) to the HTAB migration
stream (in the place of HPT size) when the guest doesn't allocate HPT.
This will help the target side to match target HPT with the source HPT
and thus enable successful migration.
Suggested-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
---
hw/ppc/spapr.c | 28 ++++++++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 86e6228..df27c5c 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1557,13 +1557,19 @@ static int htab_save_setup(QEMUFile *f, void *opaque)
sPAPRMachineState *spapr = opaque;
/* "Iteration" header */
- qemu_put_be32(f, spapr->htab_shift);
+ if (!spapr->htab_shift) {
+ qemu_put_be32(f, -1);
+ } else {
+ qemu_put_be32(f, spapr->htab_shift);
+ }
if (spapr->htab) {
spapr->htab_save_index = 0;
spapr->htab_first_pass = true;
} else {
- assert(kvm_enabled());
+ if (spapr->htab_shift) {
+ assert(kvm_enabled());
+ }
}
@@ -1709,7 +1715,12 @@ static int htab_save_iterate(QEMUFile *f, void *opaque)
int rc = 0;
/* Iteration header */
- qemu_put_be32(f, 0);
+ if (!spapr->htab_shift) {
+ qemu_put_be32(f, -1);
+ return 0;
+ } else {
+ qemu_put_be32(f, 0);
+ }
if (!spapr->htab) {
assert(kvm_enabled());
@@ -1743,7 +1754,12 @@ static int htab_save_complete(QEMUFile *f, void *opaque)
int fd;
/* Iteration header */
- qemu_put_be32(f, 0);
+ if (!spapr->htab_shift) {
+ qemu_put_be32(f, -1);
+ return 0;
+ } else {
+ qemu_put_be32(f, 0);
+ }
if (!spapr->htab) {
int rc;
@@ -1787,6 +1803,10 @@ static int htab_load(QEMUFile *f, void *opaque, int version_id)
section_hdr = qemu_get_be32(f);
+ if (section_hdr == -1) {
+ return 0;
+ }
+
if (section_hdr) {
Error *local_err = NULL;
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH v5 2/2] spapr: Fix migration of Radix guests
2017-06-07 7:54 [Qemu-devel] [PATCH v5 0/2] ppc/spapr: Fix migration of radix guests Bharata B Rao
2017-06-07 7:54 ` [Qemu-devel] [PATCH v5 1/2] spapr: Add a "no HPT" encoding to HTAB migration stream Bharata B Rao
@ 2017-06-07 7:54 ` Bharata B Rao
1 sibling, 0 replies; 5+ messages in thread
From: Bharata B Rao @ 2017-06-07 7:54 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-ppc, david, sam.bobroff, rnsastry, sjitindarsingh,
Bharata B Rao
Fix migration of radix guests by ensuring that we issue
KVM_PPC_CONFIGURE_V3_MMU for radix case post migration.
Reported-by: Nageswara R Sastry <rnsastry@linux.vnet.ibm.com>
Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Reviewed-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
---
hw/ppc/spapr.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index df27c5c..4a33c06 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1442,6 +1442,18 @@ static int spapr_post_load(void *opaque, int version_id)
err = spapr_rtc_import_offset(&spapr->rtc, spapr->rtc_offset);
}
+ if (spapr->patb_entry) {
+ PowerPCCPU *cpu = POWERPC_CPU(first_cpu);
+ bool radix = !!(spapr->patb_entry & PATBE1_GR);
+ bool gtse = !!(cpu->env.spr[SPR_LPCR] & LPCR_GTSE);
+
+ err = kvmppc_configure_v3_mmu(cpu, radix, gtse, spapr->patb_entry);
+ if (err) {
+ error_report("Process table config unsupported by the host");
+ return -EINVAL;
+ }
+ }
+
return err;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v5 1/2] spapr: Add a "no HPT" encoding to HTAB migration stream
2017-06-07 7:54 ` [Qemu-devel] [PATCH v5 1/2] spapr: Add a "no HPT" encoding to HTAB migration stream Bharata B Rao
@ 2017-06-08 4:28 ` David Gibson
2017-06-08 6:01 ` David Gibson
0 siblings, 1 reply; 5+ messages in thread
From: David Gibson @ 2017-06-08 4:28 UTC (permalink / raw)
To: Bharata B Rao; +Cc: qemu-devel, qemu-ppc, sam.bobroff, rnsastry, sjitindarsingh
[-- Attachment #1: Type: text/plain, Size: 2749 bytes --]
On Wed, Jun 07, 2017 at 01:24:52PM +0530, Bharata B Rao wrote:
> Add a "no HPT" encoding (using value -1) to the HTAB migration
> stream (in the place of HPT size) when the guest doesn't allocate HPT.
> This will help the target side to match target HPT with the source HPT
> and thus enable successful migration.
>
> Suggested-by: David Gibson <david@gibson.dropbear.id.au>
> Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
As dicussed in the thread on the previous version, I still think you
can use section_hdr == 0 as the no-HPT encoding (matching htab_shift
== 0.
> ---
> hw/ppc/spapr.c | 28 ++++++++++++++++++++++++----
> 1 file changed, 24 insertions(+), 4 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 86e6228..df27c5c 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -1557,13 +1557,19 @@ static int htab_save_setup(QEMUFile *f, void *opaque)
> sPAPRMachineState *spapr = opaque;
>
> /* "Iteration" header */
> - qemu_put_be32(f, spapr->htab_shift);
> + if (!spapr->htab_shift) {
> + qemu_put_be32(f, -1);
> + } else {
> + qemu_put_be32(f, spapr->htab_shift);
> + }
>
> if (spapr->htab) {
> spapr->htab_save_index = 0;
> spapr->htab_first_pass = true;
> } else {
> - assert(kvm_enabled());
> + if (spapr->htab_shift) {
> + assert(kvm_enabled());
> + }
> }
>
>
> @@ -1709,7 +1715,12 @@ static int htab_save_iterate(QEMUFile *f, void *opaque)
> int rc = 0;
>
> /* Iteration header */
> - qemu_put_be32(f, 0);
> + if (!spapr->htab_shift) {
> + qemu_put_be32(f, -1);
> + return 0;
> + } else {
> + qemu_put_be32(f, 0);
> + }
>
> if (!spapr->htab) {
> assert(kvm_enabled());
> @@ -1743,7 +1754,12 @@ static int htab_save_complete(QEMUFile *f, void *opaque)
> int fd;
>
> /* Iteration header */
> - qemu_put_be32(f, 0);
> + if (!spapr->htab_shift) {
> + qemu_put_be32(f, -1);
> + return 0;
> + } else {
> + qemu_put_be32(f, 0);
> + }
>
> if (!spapr->htab) {
> int rc;
> @@ -1787,6 +1803,10 @@ static int htab_load(QEMUFile *f, void *opaque, int version_id)
>
> section_hdr = qemu_get_be32(f);
>
> + if (section_hdr == -1) {
You should free the existing HPT (if any) here.
> + return 0;
> + }
> +
> if (section_hdr) {
> Error *local_err = NULL;
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v5 1/2] spapr: Add a "no HPT" encoding to HTAB migration stream
2017-06-08 4:28 ` David Gibson
@ 2017-06-08 6:01 ` David Gibson
0 siblings, 0 replies; 5+ messages in thread
From: David Gibson @ 2017-06-08 6:01 UTC (permalink / raw)
To: Bharata B Rao; +Cc: qemu-devel, qemu-ppc, sam.bobroff, rnsastry, sjitindarsingh
[-- Attachment #1: Type: text/plain, Size: 1304 bytes --]
On Thu, Jun 08, 2017 at 02:28:48PM +1000, David Gibson wrote:
> On Wed, Jun 07, 2017 at 01:24:52PM +0530, Bharata B Rao wrote:
> > Add a "no HPT" encoding (using value -1) to the HTAB migration
> > stream (in the place of HPT size) when the guest doesn't allocate HPT.
> > This will help the target side to match target HPT with the source HPT
> > and thus enable successful migration.
> >
> > Suggested-by: David Gibson <david@gibson.dropbear.id.au>
> > Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
>
> As dicussed in the thread on the previous version, I still think you
> can use section_hdr == 0 as the no-HPT encoding (matching htab_shift
> == 0.
Bharata discussed this with me on IRC and pointed out I was mistaken.
It thought the overall stream header was distinct from the incremental
content, but it's not. The zero value in the header marks this
"chunk" of data as being continuing incremental content (the "middle"
of the stream) rather than the initial stream header which gives the
HPT size.
So, yes, we do need a new and different encoding for "no HPT".
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-06-08 6:25 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-07 7:54 [Qemu-devel] [PATCH v5 0/2] ppc/spapr: Fix migration of radix guests Bharata B Rao
2017-06-07 7:54 ` [Qemu-devel] [PATCH v5 1/2] spapr: Add a "no HPT" encoding to HTAB migration stream Bharata B Rao
2017-06-08 4:28 ` David Gibson
2017-06-08 6:01 ` David Gibson
2017-06-07 7:54 ` [Qemu-devel] [PATCH v5 2/2] spapr: Fix migration of Radix guests Bharata B Rao
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).