[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 4/4] target/ppc: Add migration support for BHRB
From: |
Nicholas Piggin |
Subject: |
Re: [PATCH 4/4] target/ppc: Add migration support for BHRB |
Date: |
Fri, 15 Sep 2023 11:20:52 +1000 |
On Wed Sep 13, 2023 at 6:25 AM AEST, Glenn Miles wrote:
> Adds migration support for Branch History Rolling
> Buffer (BHRB) internal state.
>
> Signed-off-by: Glenn Miles <milesg@linux.vnet.ibm.com>
> ---
> target/ppc/machine.c | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/target/ppc/machine.c b/target/ppc/machine.c
> index b195fb4dc8..89146969c8 100644
> --- a/target/ppc/machine.c
> +++ b/target/ppc/machine.c
> @@ -314,6 +314,7 @@ static int cpu_post_load(void *opaque, int version_id)
>
> if (tcg_enabled()) {
> pmu_mmcr01a_updated(env);
> + hreg_bhrb_filter_update(env);
> }
>
> return 0;
> @@ -670,6 +671,27 @@ static const VMStateDescription vmstate_compat = {
> }
> };
>
> +#ifdef TARGET_PPC64
> +static bool bhrb_needed(void *opaque)
> +{
> + PowerPCCPU *cpu = opaque;
> + return (cpu->env.flags & POWERPC_FLAG_BHRB) != 0;
> +}
> +
> +static const VMStateDescription vmstate_bhrb = {
> + .name = "cpu/bhrb",
> + .version_id = 1,
> + .minimum_version_id = 1,
> + .needed = bhrb_needed,
> + .fields = (VMStateField[]) {
> + VMSTATE_UINTTL(env.bhrb_num_entries, PowerPCCPU),
Maybe don't need bhrb_num_entries since target machine should have the
same?
> + VMSTATE_UINTTL(env.bhrb_offset, PowerPCCPU),
> + VMSTATE_UINT64_ARRAY(env.bhrb, PowerPCCPU, BHRB_MAX_NUM_ENTRIES),
Is it possible to migrate only bhrb_num_entries items? Wants a VARRAY
AFAIKS but there is no VARRAY_UINT64?
Since all sizes are the same 32 now, would it be possible to turn it
into a VARRAY sometime later if supposing a new CPU changed to a
different size, and would the wire format for the VARRAY still be
compatible with this fixed size array, or does a VARRAY look different
I wonder?
Thanks,
Nick