[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 10/19] target/ppc: Migrate DECR SPR
From: |
Nicholas Piggin |
Subject: |
Re: [PATCH v2 10/19] target/ppc: Migrate DECR SPR |
Date: |
Thu, 10 Aug 2023 11:12:31 +1000 |
On Wed Aug 9, 2023 at 10:56 PM AEST, Cédric Le Goater wrote:
> Hello Nick,
>
> On 8/8/23 06:19, Nicholas Piggin wrote:
> > TCG does not maintain the DEC reigster in the SPR array, so it does get
> > migrated. TCG also needs to re-start the decrementer timer on the
> > destination machine.
> >
> > Load and store the decrementer into the SPR when migrating. This works
> > for the level-triggered (book3s) decrementer, and should be compatible
> > with existing KVM machines that do keep the DEC value there.
> >
> > This fixes lost decrementer interrupt on migration that can cause
> > hangs, as well as other problems including record-replay bugs.
> >
> > Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> > ---
> > target/ppc/machine.c | 14 ++++++++++++++
> > 1 file changed, 14 insertions(+)
> >
> > diff --git a/target/ppc/machine.c b/target/ppc/machine.c
> > index 8234e35d69..8a190c4853 100644
> > --- a/target/ppc/machine.c
> > +++ b/target/ppc/machine.c
> > @@ -209,6 +209,14 @@ static int cpu_pre_save(void *opaque)
> > /* Used to retain migration compatibility for pre 6.0 for 601
> > machines. */
> > env->hflags_compat_nmsr = 0;
> >
> > + if (tcg_enabled()) {
> > + /*
> > + * TCG does not maintain the DECR spr (unlike KVM) so have to save
> > + * it here.
> > + */
> > + env->spr[SPR_DECR] = cpu_ppc_load_decr(env);
> > + }
> > +
> > return 0;
> > }
> >
> > @@ -319,6 +327,12 @@ static int cpu_post_load(void *opaque, int version_id)
> > ppc_update_ciabr(env);
> > ppc_update_daw0(env);
> > #endif
> > + /*
> > + * TCG needs to re-start the decrementer timer and/or raise the
> > + * interrupt. This works for level-triggered decrementer. Edge
> > + * triggered types (including HDEC) would need to carry more state.
> > + */
> > + cpu_ppc_store_decr(env, env->spr[SPR_DECR]);
> > pmu_mmcr01_updated(env);
> > }
>
>
> This doesn't apply. I am missing some patch ?
Oh, it's a small dependency on the debug patches, sorry forgot to
mention (see the ciabr/daw0 in the top of the context).
Thanks,
Nick
- Re: [PATCH v2 02/19] ppc/vof: Fix missed fields in VOF cleanup, (continued)
- [PATCH v2 03/19] hw/ppc/ppc.c: Tidy over-long lines, Nicholas Piggin, 2023/08/08
- [PATCH v2 04/19] hw/ppc: Introduce functions for conversion between timebase and nanoseconds, Nicholas Piggin, 2023/08/08
- [PATCH v2 05/19] host-utils: Add muldiv64_round_up, Nicholas Piggin, 2023/08/08
- [PATCH v2 06/19] hw/ppc: Round up the decrementer interval when converting to ns, Nicholas Piggin, 2023/08/08
- [PATCH v2 07/19] hw/ppc: Avoid decrementer rounding errors, Nicholas Piggin, 2023/08/08
- [PATCH v2 08/19] target/ppc: Sign-extend large decrementer to 64-bits, Nicholas Piggin, 2023/08/08
- [PATCH v2 09/19] hw/ppc: Always store the decrementer value, Nicholas Piggin, 2023/08/08
- [PATCH v2 10/19] target/ppc: Migrate DECR SPR, Nicholas Piggin, 2023/08/08
- [PATCH v2 11/19] hw/ppc: Reset timebase facilities on machine reset, Nicholas Piggin, 2023/08/08
- [PATCH v2 12/19] hw/ppc: Read time only once to perform decrementer write, Nicholas Piggin, 2023/08/08
- [PATCH v2 13/19] target/ppc: Fix CPU reservation migration for record-replay, Nicholas Piggin, 2023/08/08
- [PATCH v2 14/19] target/ppc: Fix timebase reset with record-replay, Nicholas Piggin, 2023/08/08
- [PATCH v2 15/19] spapr: Fix machine reset deadlock from replay-record, Nicholas Piggin, 2023/08/08
- [PATCH v2 16/19] spapr: Fix record-replay machine reset consuming too many events, Nicholas Piggin, 2023/08/08
- [PATCH v2 17/19] tests/avocado: boot ppc64 pseries replay-record test to Linux VFS mount, Nicholas Piggin, 2023/08/08
- [PATCH v2 18/19] tests/avocado: reverse-debugging cope with re-executing breakpoints, Nicholas Piggin, 2023/08/08
- [PATCH v2 19/19] tests/avocado: ppc64 reverse debugging tests for pseries and powernv, Nicholas Piggin, 2023/08/08
- Re: [PATCH v2 for-8.2 00/19] ppc: record-replay enablement and fixes, Cédric Le Goater, 2023/08/29