All of lore.kernel.org
 help / color / mirror / Atom feed
From: Harsh Prateek Bora <harshpb@linux.ibm.com>
To: Nicholas Piggin <npiggin@gmail.com>, qemu-ppc@nongnu.org
Cc: clegoate@redhat.com, mikey@neuling.org,
	amachhiw@linux.vnet.ibm.com, vaibhav@linux.ibm.com,
	sbhat@linux.ibm.com, danielhb413@gmail.com,
	qemu-devel@nongnu.org
Subject: Re: [PATCH v4 15/15] spapr: nested: Set the PCR when logical PVR is set
Date: Tue, 5 Mar 2024 13:56:03 +0530	[thread overview]
Message-ID: <e54891fa-8509-4e79-807f-aaeb8236b79c@linux.ibm.com> (raw)
In-Reply-To: <CZFSD126HHHS.1V0PEMMKHEVJF@wheely>



On 2/27/24 15:53, Nicholas Piggin wrote:
> On Tue Feb 20, 2024 at 6:36 PM AEST, Harsh Prateek Bora wrote:
>> From: Amit Machhiwal <amachhiw@linux.vnet.ibm.com>
>>
>> In APIv1, KVM L0 sets the PCR, while in the nested papr APIv2, this
>> doesn't work as the PCR can't be set via the guest state buffer; the
>> logical PVR is set via the GSB though.
>>
>> This change sets the PCR whenever the logical PVR is set via the GSB.
>> Also, unlike the other registers, the value 1 in a defined bit in the
>> PCR makes the affected resources unavailable and the value 0 makes
>> them available. Hence, the PCR is set accordingly.
> 
> Should this be squashed in as a fix?

Yeh, it can be squashed with 10/15 GSB initialization patch, will update 
as suggested in v5.

regards,
Harsh
> 
> Thanks,
> Nick
> 
>>
>> Signed-off-by: Amit Machhiwal <amachhiw@linux.vnet.ibm.com>
>> Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
>> ---
>>   include/hw/ppc/spapr_nested.h |  9 +++++++++
>>   hw/ppc/spapr_nested.c         | 24 ++++++++++++++++++++++++
>>   2 files changed, 33 insertions(+)
>>
>> diff --git a/include/hw/ppc/spapr_nested.h b/include/hw/ppc/spapr_nested.h
>> index da918d2dd0..f67c721f53 100644
>> --- a/include/hw/ppc/spapr_nested.h
>> +++ b/include/hw/ppc/spapr_nested.h
>> @@ -229,6 +229,15 @@ typedef struct SpaprMachineStateNestedGuest {
>>   #define GUEST_STATE_REQUEST_GUEST_WIDE       0x1
>>   #define GUEST_STATE_REQUEST_SET              0x2
>>   
>> +/* As per ISA v3.1B, following bits are reserved:
>> + *      0:2
>> + *      4:57  (ISA mentions bit 58 as well but it should be used for P10)
>> + *      61:63 (hence, haven't included PCR bits for v2.06 and v2.05
>> + *             in LOW BITS)
>> + */
>> +#define PCR_LOW_BITS   (PCR_COMPAT_3_10 | PCR_COMPAT_3_00)
>> +#define HVMASK_PCR     ~PCR_LOW_BITS
>> +
>>   #define GUEST_STATE_ELEMENT(i, sz, s, f, ptr, c) { \
>>       .id = (i),                                     \
>>       .size = (sz),                                  \
>> diff --git a/hw/ppc/spapr_nested.c b/hw/ppc/spapr_nested.c
>> index 6e6a90616e..af8a482337 100644
>> --- a/hw/ppc/spapr_nested.c
>> +++ b/hw/ppc/spapr_nested.c
>> @@ -740,9 +740,11 @@ static void out_buf_min_size(void *a, void *b, bool set)
>>   
>>   static void copy_logical_pvr(void *a, void *b, bool set)
>>   {
>> +    SpaprMachineStateNestedGuest *guest;
>>       uint32_t *buf; /* 1 word */
>>       uint32_t *pvr_logical_ptr;
>>       uint32_t pvr_logical;
>> +    target_ulong pcr = 0;
>>   
>>       pvr_logical_ptr = a;
>>       buf = b;
>> @@ -755,6 +757,28 @@ static void copy_logical_pvr(void *a, void *b, bool set)
>>       pvr_logical = be32_to_cpu(buf[0]);
>>   
>>       *pvr_logical_ptr = pvr_logical;
>> +
>> +    if (*pvr_logical_ptr) {
>> +        switch (*pvr_logical_ptr) {
>> +            case CPU_POWERPC_LOGICAL_3_10:
>> +                pcr = PCR_COMPAT_3_10 | PCR_COMPAT_3_00;
>> +                break;
>> +            case CPU_POWERPC_LOGICAL_3_00:
>> +                pcr = PCR_COMPAT_3_00;
>> +                break;
>> +            default:
>> +                qemu_log_mask(LOG_GUEST_ERROR,
>> +                    "Could not set PCR for LPVR=0x%08x\n", *pvr_logical_ptr);
>> +                return;
>> +        }
>> +    }
>> +
>> +    guest = container_of(pvr_logical_ptr,
>> +                         struct SpaprMachineStateNestedGuest,
>> +                         pvr_logical);
>> +    for (int i = 0; i < guest->vcpus; i++) {
>> +        guest->vcpu[i].state.pcr = ~pcr | HVMASK_PCR;
>> +    }
>>   }
>>   
>>   static void copy_tb_offset(void *a, void *b, bool set)
> 


      reply	other threads:[~2024-03-05  8:26 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-20  8:35 [PATCH v4 00/15] Nested PAPR API (KVM on PowerVM) Harsh Prateek Bora
2024-02-20  8:35 ` [PATCH v4 01/15] spapr: nested: register nested-hv api hcalls only for cap-nested-hv Harsh Prateek Bora
2024-02-27  8:51   ` Nicholas Piggin
2024-02-20  8:35 ` [PATCH v4 02/15] spapr: nested: move nested part of spapr_get_pate into spapr_nested.c Harsh Prateek Bora
2024-02-20  8:35 ` [PATCH v4 03/15] spapr: nested: Introduce SpaprMachineStateNested to store related info Harsh Prateek Bora
2024-02-20  8:35 ` [PATCH v4 04/15] spapr: nested: keep nested-hv related code restricted to its API Harsh Prateek Bora
2024-02-27  8:54   ` Nicholas Piggin
2024-02-27  9:45     ` Harsh Prateek Bora
2024-02-27 10:40       ` Nicholas Piggin
2024-02-20  8:35 ` [PATCH v4 05/15] spapr: nested: Document Nested PAPR API Harsh Prateek Bora
2024-02-27  9:29   ` Nicholas Piggin
2024-02-27  9:31     ` Harsh Prateek Bora
2024-02-27 10:39       ` Nicholas Piggin
2024-02-29  5:46         ` Harsh Prateek Bora
2024-02-20  8:36 ` [PATCH v4 06/15] spapr: nested: Introduce H_GUEST_[GET|SET]_CAPABILITIES hcalls Harsh Prateek Bora
2024-02-20  8:36 ` [PATCH v4 07/15] spapr: nested: Introduce H_GUEST_[CREATE|DELETE] hcalls Harsh Prateek Bora
2024-02-20  8:36 ` [PATCH v4 08/15] spapr: nested: Introduce H_GUEST_CREATE_VCPU hcall Harsh Prateek Bora
2024-02-27  9:51   ` Nicholas Piggin
2024-02-29  9:39     ` Harsh Prateek Bora
2024-02-20  8:36 ` [PATCH v4 09/15] spapr: nested: Extend nested_ppc_state for nested PAPR API Harsh Prateek Bora
2024-02-27  9:59   ` Nicholas Piggin
2024-02-29  9:42     ` Harsh Prateek Bora
2024-02-20  8:36 ` [PATCH v4 10/15] spapr: nested: Initialize the GSB elements lookup table Harsh Prateek Bora
2024-02-27 10:02   ` Nicholas Piggin
2024-02-29 10:29     ` Harsh Prateek Bora
2024-02-20  8:36 ` [PATCH v4 11/15] spapr: nested: Introduce H_GUEST_[GET|SET]_STATE hcalls Harsh Prateek Bora
2024-02-27 10:10   ` Nicholas Piggin
2024-03-05  8:19     ` Harsh Prateek Bora
2024-02-20  8:36 ` [PATCH v4 12/15] spapr: nested: Use correct source for parttbl info for nested PAPR API Harsh Prateek Bora
2024-02-27 10:16   ` Nicholas Piggin
2024-03-05  8:21     ` Harsh Prateek Bora
2024-02-20  8:36 ` [PATCH v4 13/15] spapr: nested: Introduce H_GUEST_RUN_VCPU hcall Harsh Prateek Bora
2024-02-20  8:36 ` [PATCH v4 14/15] spapr: nested: Introduce cap-nested-papr for Nested PAPR API Harsh Prateek Bora
2024-02-27 10:22   ` Nicholas Piggin
2024-03-05  8:24     ` Harsh Prateek Bora
2024-02-20  8:36 ` [PATCH v4 15/15] spapr: nested: Set the PCR when logical PVR is set Harsh Prateek Bora
2024-02-27 10:23   ` Nicholas Piggin
2024-03-05  8:26     ` Harsh Prateek Bora [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e54891fa-8509-4e79-807f-aaeb8236b79c@linux.ibm.com \
    --to=harshpb@linux.ibm.com \
    --cc=amachhiw@linux.vnet.ibm.com \
    --cc=clegoate@redhat.com \
    --cc=danielhb413@gmail.com \
    --cc=mikey@neuling.org \
    --cc=npiggin@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=sbhat@linux.ibm.com \
    --cc=vaibhav@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.