[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 14/16] hw/ppc: Use hreg_store_msr for msr updates
From: |
Cédric Le Goater |
Subject: |
Re: [PATCH v3 14/16] hw/ppc: Use hreg_store_msr for msr updates |
Date: |
Mon, 15 Mar 2021 14:55:17 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 |
On 3/15/21 2:47 PM, Richard Henderson wrote:
> On 3/15/21 4:23 AM, Cédric Le Goater wrote:
>> On 3/14/21 6:59 PM, Richard Henderson wrote:
>>> Only one of the three places in hw/ppc that modify msr updated
>>> hflags. Even in that case, use the official interface instead
>>> of a direct call to hreg_compute_hflags.
>>
>> ppc_store_msr() is the interface to use.
>>
>>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>>> ---
>>> Cc: Cédric Le Goater <clg@kaod.org>
>>> Cc: Greg Kurz <groug@kaod.org>
>>> ---
>>> hw/ppc/pnv_core.c | 3 ++-
>>> hw/ppc/spapr_hcall.c | 3 +--
>>> hw/ppc/spapr_rtas.c | 3 ++-
>>> 3 files changed, 5 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
>>> index bd2bf2e044..31f041b9c7 100644
>>> --- a/hw/ppc/pnv_core.c
>>> +++ b/hw/ppc/pnv_core.c
>>> @@ -29,6 +29,7 @@
>>> #include "hw/ppc/pnv_xscom.h"
>>> #include "hw/ppc/xics.h"
>>> #include "hw/qdev-properties.h"
>>> +#include "helper_regs.h"
>>> static const char *pnv_core_cpu_typename(PnvCore *pc)
>>> {
>>> @@ -54,7 +55,7 @@ static void pnv_core_cpu_reset(PnvCore *pc, PowerPCCPU
>>> *cpu)
>>> */
>>> env->gpr[3] = PNV_FDT_ADDR;
>>> env->nip = 0x10;
>>> - env->msr |= MSR_HVB; /* Hypervisor mode */
>>> + hreg_store_msr(env, env->msr | MSR_HVB, true); /* Hypervisor mode */
>>
>>
>> This is going to have the opposite effect of not setting the HV bit in the
>> PowerNV machine. See the comment in powerpc_set_excp_state().
>>
>> May be commit 1c953ba57ada ("ppc: Fix hreg_store_msr() so that non-HV
>> mode cannot alter MSR:HV") needs a fix first.
>
> Hmm. I mis-read the code and assumed "allow_hv" allowed hv to be changed.
> There must be some kind of quirkyness here that I don't understand.
This part was added ~14 years ago by commit a4f30719a8cd ("PowerPC hypervisor
mode is not fundamentally available only for PowerPC 64. Remove TARGET_PPC64
dependency and add code provision to be able to define a fake 32 bits CPU
with hypervisor feature support.")
I am afraid we kept adding stuff on top of it.
> I'll just have these reset functions use hreg_recompute_hflags directly.
Yes. That should be ok.
Thanks,
C.
- [PATCH v3 06/16] target/ppc: Fix comment for MSR_FE{0,1}, (continued)
- [PATCH v3 06/16] target/ppc: Fix comment for MSR_FE{0,1}, Richard Henderson, 2021/03/14
- [PATCH v3 07/16] target/ppc: Disconnect hflags from MSR, Richard Henderson, 2021/03/14
- [PATCH v3 12/16] target/ppc: Remove MSR_SA and MSR_AP from hflags, Richard Henderson, 2021/03/14
- [PATCH v3 13/16] target/ppc: Remove env->immu_idx and env->dmmu_idx, Richard Henderson, 2021/03/14
- [PATCH v3 11/16] target/ppc: Put LPCR[GTSE] in hflags, Richard Henderson, 2021/03/14
- [PATCH v3 08/16] target/ppc: Reduce env->hflags to uint32_t, Richard Henderson, 2021/03/14
- [PATCH v3 09/16] target/ppc: Put dbcr0 single-step bits into hflags, Richard Henderson, 2021/03/14
- [PATCH v3 14/16] hw/ppc: Use hreg_store_msr for msr updates, Richard Henderson, 2021/03/14
- [PATCH v3 10/16] target/ppc: Create helper_scv, Richard Henderson, 2021/03/14
- [PATCH v3 16/16] target/ppc: Validate hflags with CONFIG_DEBUG_TCG, Richard Henderson, 2021/03/14
- [PATCH v3 15/16] linux-user/ppc: Fix msr updates, Richard Henderson, 2021/03/14