All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Cédric Le Goater" <clg@kaod.org>
To: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	<qemu-ppc@nongnu.org>, <qemu-devel@nongnu.org>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Richard Henderson <richard.henderson@linaro.org>,
	Christophe Leroy <christophe.leroy@csgroup.eu>,
	Fabiano Rosas <farosas@linux.ibm.com>
Subject: Re: [PULL 02/41] target/ppc: 603: fix restore of GPRs 0-3 on rfi
Date: Mon, 31 Jan 2022 15:11:32 +0100	[thread overview]
Message-ID: <560147a3-7583-b62f-a194-6af1066ccbef@kaod.org> (raw)
In-Reply-To: <b878009a-cf35-1465-9bae-11d50ac84241@ilande.co.uk>

On 1/31/22 13:01, Mark Cave-Ayland wrote:
> On 31/01/2022 11:07, Cédric Le Goater wrote:
> 
>> From: Christophe Leroy <christophe.leroy@csgroup.eu>
>>
>> After a TLB miss exception, GPRs 0-3 must be restored on rfi.
>>
>> This is managed by hreg_store_msr() which is called by do_rfi()
>>
>> However, hreg_store_msr() does it if MSR[TGPR] is unset in the
>> passed MSR value.
>>
>> The problem is that do_rfi() is given the content of SRR1 as
>> the value to be set in MSR, but TGPR bit is not part of SRR1
>> and that bit is used for something else and is sometimes set
>> to 1, leading to hreg_store_msr() not restoring GPRs.
>>
>> So, do the same way as for POW bit, force clearing it.
>>
>> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
>> Cc: Cedric Le Goater <clg@kaod.org>
>> Cc: Fabiano Rosas <farosas@linux.ibm.com>
>> Reviewed-by: Cédric Le Goater <clg@kaod.org>
>> Message-Id: <20220120103824.239573-1-christophe.leroy@csgroup.eu>
>> Signed-off-by: Cédric Le Goater <clg@kaod.org>
>> ---
>>   target/ppc/excp_helper.c | 4 ++++
>>   1 file changed, 4 insertions(+)
>>
>> diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
>> index bc646c67a0f5..980f62fd7964 100644
>> --- a/target/ppc/excp_helper.c
>> +++ b/target/ppc/excp_helper.c
>> @@ -1164,6 +1164,10 @@ static void do_rfi(CPUPPCState *env, target_ulong nip, target_ulong msr)
>>       /* MSR:POW cannot be set by any form of rfi */
>>       msr &= ~(1ULL << MSR_POW);
>> +    /* MSR:TGPR cannot be set by any form of rfi */
>> +    if (env->flags & POWERPC_FLAG_TGPR)
>> +        msr &= ~(1ULL << MSR_TGPR);
>> +
>>   #if defined(TARGET_PPC64)
>>       /* Switching to 32-bit ? Crop the nip */
>>       if (!msr_is_64bit(env, msr)) {
> 
> Have you tried a pre-PR push to Gitlab CI for your pull-ppc-20220130 tag? I'd expect this to fail the check-patch job due to the missing braces around the if() statement.

All is fine :

   https://gitlab.com/legoater/qemu/-/pipelines/458888936

I even did a checkpatch before sending and it did not complain :/

Thanks,

C.


  reply	other threads:[~2022-01-31 15:28 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-31 11:07 [PULL 00/41] ppc queue Cédric Le Goater
2022-01-31 11:07 ` [PULL 01/41] spapr: Force 32bit when resetting a core Cédric Le Goater
2022-01-31 11:07 ` [PULL 02/41] target/ppc: 603: fix restore of GPRs 0-3 on rfi Cédric Le Goater
2022-01-31 12:01   ` Mark Cave-Ayland
2022-01-31 14:11     ` Cédric Le Goater [this message]
2022-01-31 16:59       ` Mark Cave-Ayland
2022-01-31 17:04         ` Peter Maydell
2022-01-31 19:00           ` Mark Cave-Ayland
2022-01-31 17:50     ` Cédric Le Goater
2022-01-31 19:08       ` Mark Cave-Ayland
2022-02-01  8:01         ` Cédric Le Goater
2022-01-31 11:07 ` [PULL 03/41] target/ppc/mmu_common: Fix SRR1/MSR error code on Book-E Cédric Le Goater
2022-01-31 11:07 ` [PULL 04/41] ppc/pnv: Fail DMA access if page permissions are not correct Cédric Le Goater
2022-01-31 11:07 ` [PULL 05/41] ppc/pnv: use a do-while() loop in pnv_phb3_translate_tve() Cédric Le Goater
2022-01-31 11:07 ` [PULL 06/41] ppc/pnv: use a do-while() loop in pnv_phb4_translate_tve() Cédric Le Goater
2022-01-31 11:07 ` [PULL 07/41] ppc/xive: check return value of ldq_be_dma() Cédric Le Goater
2022-01-31 11:07 ` [PULL 08/41] target/ppc: fix 'skip KVM' cond in cpu_interrupt_exittb() Cédric Le Goater
2022-01-31 11:07 ` [PULL 09/41] spapr.c: check bus != NULL in spapr_get_fw_dev_path() Cédric Le Goater
2022-01-31 11:07 ` [PULL 10/41] target/ppc: Fix test on mmu_model in hreg_compute_hflags_value() Cédric Le Goater
2022-01-31 11:07 ` [PULL 11/41] target/ppc: Put do_rfi under a TCG-only block Cédric Le Goater
2022-01-31 11:07 ` [PULL 12/41] hw/ppc/vof: Add missing includes Cédric Le Goater
2022-01-31 11:07 ` [PULL 13/41] ppc/ppc405: Fix TLB flushing Cédric Le Goater
2022-01-31 11:07 ` [PULL 14/41] target/ppc: 405: Rename MSR_POW to MSR_WE Cédric Le Goater
2022-01-31 11:07 ` [PULL 15/41] target/ppc: 405: Add missing MSR_ME bit Cédric Le Goater
2022-01-31 11:07 ` [PULL 16/41] target/ppc: Introduce powerpc_excp_40x Cédric Le Goater
2022-01-31 11:07 ` [PULL 17/41] target/ppc: Simplify powerpc_excp_40x Cédric Le Goater
2022-01-31 11:07 ` [PULL 18/41] target/ppc: 405: Critical exceptions cleanup Cédric Le Goater
2022-01-31 11:07 ` [PULL 19/41] target/ppc: 405: Machine check exception cleanup Cédric Le Goater
2022-01-31 11:07 ` [PULL 20/41] target/ppc: 405: External " Cédric Le Goater
2022-01-31 11:07 ` [PULL 21/41] target/ppc: 405: System call " Cédric Le Goater
2022-01-31 11:07 ` [PULL 22/41] target/ppc: 405: Alignment " Cédric Le Goater
2022-01-31 11:07 ` [PULL 23/41] target/ppc: 405: Debug " Cédric Le Goater
2022-01-31 11:07 ` [PULL 24/41] target/ppc: 405: Data Storage " Cédric Le Goater
2022-01-31 11:07 ` [PULL 25/41] target/ppc: 405: Instruction storage interrupt cleanup Cédric Le Goater
2022-01-31 11:07 ` [PULL 26/41] target/ppc: 405: Program exception cleanup Cédric Le Goater
2022-01-31 11:07 ` [PULL 27/41] target/ppc: 405: Watchdog timer " Cédric Le Goater
2022-01-31 11:07 ` [PULL 28/41] target/ppc: Introduce powerpc_excp_books Cédric Le Goater
2022-01-31 11:07 ` [PULL 29/41] target/ppc: Simplify powerpc_excp_books Cédric Le Goater
2022-01-31 11:08 ` [PULL 30/41] target/ppc: books: Machine Check exception cleanup Cédric Le Goater
2022-01-31 11:08 ` [PULL 31/41] target/ppc: books: External interrupt cleanup Cédric Le Goater
2022-01-31 11:08 ` [PULL 32/41] target/ppc: books: Program exception cleanup Cédric Le Goater
2022-01-31 11:08 ` [PULL 33/41] target/ppc: Introduce powerpc_excp_74xx Cédric Le Goater
2022-01-31 11:08 ` [PULL 34/41] target/ppc: Simplify powerpc_excp_74xx Cédric Le Goater
2022-01-31 11:08 ` [PULL 35/41] target/ppc: 74xx: Machine Check exception cleanup Cédric Le Goater
2022-01-31 11:08 ` [PULL 36/41] target/ppc: 74xx: External interrupt cleanup Cédric Le Goater
2022-01-31 11:08 ` [PULL 37/41] target/ppc: 74xx: Program exception cleanup Cédric Le Goater
2022-01-31 11:08 ` [PULL 38/41] target/ppc: 74xx: System Call " Cédric Le Goater
2022-01-31 11:08 ` [PULL 39/41] target/ppc: 74xx: System Reset interrupt cleanup Cédric Le Goater
2022-01-31 11:08 ` [PULL 40/41] target/ppc: 74xx: Set SRRs directly in exception code Cédric Le Goater
2022-01-31 11:08 ` [PULL 41/41] target/ppc: Remove support for the PowerPC 602 CPU Cédric Le Goater
2022-01-31 19:02 ` [PULL 00/41] ppc queue Peter Maydell

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=560147a3-7583-b62f-a194-6af1066ccbef@kaod.org \
    --to=clg@kaod.org \
    --cc=christophe.leroy@csgroup.eu \
    --cc=farosas@linux.ibm.com \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /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.