[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH 2/9] spapr: Compute effective capability values ea
From: |
Cédric Le Goater |
Subject: |
Re: [Qemu-ppc] [PATCH 2/9] spapr: Compute effective capability values earlier |
Date: |
Thu, 21 Jun 2018 07:32:39 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 |
On 06/18/2018 08:35 AM, David Gibson wrote:
> Previously, the effective values of the various spapr capability flags
> were only determined at machine reset time. That was a lazy way of making
> sure it was after cpu initialization so it could use the cpu object to
> inform the defaults.
>
> But we've now improved the compat checking code so that we don't need to
> instantiate the cpus to use it. That lets us move the resolution of the
> capability defaults much earlier.
>
> This is going to be necessary for some future capabilities.
>
> Signed-off-by: David Gibson <address@hidden>
Reviewed-by: Cédric Le Goater <address@hidden>
Thanks,
C.
> ---
> hw/ppc/spapr.c | 6 ++++--
> hw/ppc/spapr_caps.c | 9 ++++++---
> include/hw/ppc/spapr.h | 3 ++-
> 3 files changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index b0b94fc1f0..40858d047c 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -1612,7 +1612,7 @@ static void spapr_machine_reset(void)
> void *fdt;
> int rc;
>
> - spapr_caps_reset(spapr);
> + spapr_caps_apply(spapr);
>
> first_ppc_cpu = POWERPC_CPU(first_cpu);
> if (kvm_enabled() && kvmppc_has_cap_mmu_radix() &&
> @@ -2526,7 +2526,9 @@ static void spapr_machine_init(MachineState *machine)
> QLIST_INIT(&spapr->phbs);
> QTAILQ_INIT(&spapr->pending_dimm_unplugs);
>
> - /* Check HPT resizing availability */
> + /* Determine capabilities to run with */
> + spapr_caps_init(spapr);
> +
> kvmppc_check_papr_resize_hpt(&resize_hpt_err);
> if (spapr->resize_hpt == SPAPR_RESIZE_HPT_DEFAULT) {
> /*
> diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
> index 469f38f0ef..dabed817d1 100644
> --- a/hw/ppc/spapr_caps.c
> +++ b/hw/ppc/spapr_caps.c
> @@ -439,12 +439,12 @@ SPAPR_CAP_MIG_STATE(cfpc, SPAPR_CAP_CFPC);
> SPAPR_CAP_MIG_STATE(sbbc, SPAPR_CAP_SBBC);
> SPAPR_CAP_MIG_STATE(ibs, SPAPR_CAP_IBS);
>
> -void spapr_caps_reset(sPAPRMachineState *spapr)
> +void spapr_caps_init(sPAPRMachineState *spapr)
> {
> sPAPRCapabilities default_caps;
> int i;
>
> - /* First compute the actual set of caps we're running with.. */
> + /* Compute the actual set of caps we should run with */
> default_caps = default_caps_with_cpu(spapr, MACHINE(spapr)->cpu_type);
>
> for (i = 0; i < SPAPR_CAP_NUM; i++) {
> @@ -455,8 +455,11 @@ void spapr_caps_reset(sPAPRMachineState *spapr)
> spapr->eff.caps[i] = default_caps.caps[i];
> }
> }
> +}
>
> - /* .. then apply those caps to the virtual hardware */
> +void spapr_caps_apply(sPAPRMachineState *spapr)
> +{
> + int i;
>
> for (i = 0; i < SPAPR_CAP_NUM; i++) {
> sPAPRCapabilityInfo *info = &capability_table[i];
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index 3388750fc7..9dbd6010f5 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -798,7 +798,8 @@ static inline uint8_t spapr_get_cap(sPAPRMachineState
> *spapr, int cap)
> return spapr->eff.caps[cap];
> }
>
> -void spapr_caps_reset(sPAPRMachineState *spapr);
> +void spapr_caps_init(sPAPRMachineState *spapr);
> +void spapr_caps_apply(sPAPRMachineState *spapr);
> void spapr_caps_add_properties(sPAPRMachineClass *smc, Error **errp);
> int spapr_caps_post_migration(sPAPRMachineState *spapr);
>
>
- [Qemu-ppc] [PATCH 0/9] spapr: Clean up pagesize handling, David Gibson, 2018/06/18
- [Qemu-ppc] [PATCH 3/9] spapr: Add cpu_apply hook to capabilities, David Gibson, 2018/06/18
- [Qemu-ppc] [PATCH 2/9] spapr: Compute effective capability values earlier, David Gibson, 2018/06/18
- [Qemu-ppc] [PATCH 4/9] target/ppc: Add kvmppc_hpt_needs_host_contiguous_pages() helper, David Gibson, 2018/06/18
- [Qemu-ppc] [PATCH 1/9] target/ppc: Allow cpu compatiblity checks based on type, not instance, David Gibson, 2018/06/18
- [Qemu-ppc] [PATCH 7/9] target/ppc: Add ppc_hash64_filter_pagesizes(), David Gibson, 2018/06/18