[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] spapr: Don't allow multiple active vCPUs at CAS
From: |
David Gibson |
Subject: |
Re: [PATCH] spapr: Don't allow multiple active vCPUs at CAS |
Date: |
Thu, 23 Jan 2020 15:59:33 +1100 |
On Wed, Jan 22, 2020 at 02:11:12PM +0100, Greg Kurz wrote:
> According to the description of "ibm,client-architecture-support" that
> can found in LoPAPR "B.6.2.3 Root Node Methods":
>
> If multiple partition processors or threads are active at the time of
> the ibm,client-architecture-support method call, or an error is detected
> in the format of the ibm,architecture.vec structure, the err? boolean
> shall be TRUE; else FALSE.
>
> We certainly don't want to temper with the platform or with the PCR of
> the other vCPUs if they happen to be active. Ensure we have only one
> active vCPU and fail CAS otherwise. This is just for conformance and
> robustness, it doesn't fix any known bugs.
>
> Signed-off-by: Greg Kurz <address@hidden>
Applied to ppc-for-5.0, thanks.
> ---
> hw/ppc/spapr_hcall.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c
> index ffb14641f9d3..b8bb66b5c0d4 100644
> --- a/hw/ppc/spapr_hcall.c
> +++ b/hw/ppc/spapr_hcall.c
> @@ -1676,6 +1676,18 @@ static target_ulong
> h_client_architecture_support(PowerPCCPU *cpu,
> Error *local_err = NULL;
> bool raw_mode_supported = false;
> bool guest_xive;
> + CPUState *cs;
> +
> + /* CAS is supposed to be called early when only the boot vCPU is active.
> */
> + CPU_FOREACH(cs) {
> + if (cs == CPU(cpu)) {
> + continue;
> + }
> + if (!cs->halted) {
> + warn_report("guest has multiple active vCPUs at CAS, which is
> not allowed");
> + return H_MULTI_THREADS_ACTIVE;
> + }
> + }
>
> cas_pvr = cas_check_pvr(spapr, cpu, &addr, &raw_mode_supported,
> &local_err);
> if (local_err) {
>
--
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
signature.asc
Description: PGP signature