From: Richard Henderson <richard.henderson@linaro.org>
To: Michael Tokarev <mjt@tls.msk.ru>, qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org, gustavo.romero@linaro.org,
qemu-stable@nongnu.org, Peter Maydell <peter.maydell@linaro.org>
Subject: Re: [PATCH v3 3/6] target/arm: Adjust and validate mtedesc sizem1
Date: Fri, 16 Feb 2024 09:17:32 -1000 [thread overview]
Message-ID: <b93bf454-723e-456b-9328-2e2ec74070e0@linaro.org> (raw)
In-Reply-To: <572bd0e6-002e-4990-a9e0-e70eec65fd93@tls.msk.ru>
On 2/16/24 05:12, Michael Tokarev wrote:
> 07.02.2024 05:52, Richard Henderson :
>> When we added SVE_MTEDESC_SHIFT, we effectively limited the
>> maximum size of MTEDESC. Adjust SIZEM1 to consume the remaining
>> bits (32 - 10 - 5 - 12 == 5). Assert that the data to be stored
>> fits within the field (expecting 8 * 4 - 1 == 31, exact fit).
>>
>> Cc: qemu-stable@nongnu.org
>> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
>> target/arm/internals.h | 2 +-
>> target/arm/tcg/translate-sve.c | 7 ++++---
>> 2 files changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/target/arm/internals.h b/target/arm/internals.h
>> index fc337fe40e..50bff44549 100644
>> --- a/target/arm/internals.h
>> +++ b/target/arm/internals.h
>> @@ -1278,7 +1278,7 @@ FIELD(MTEDESC, TBI, 4, 2)
>> FIELD(MTEDESC, TCMA, 6, 2)
>> FIELD(MTEDESC, WRITE, 8, 1)
>> FIELD(MTEDESC, ALIGN, 9, 3)
>> -FIELD(MTEDESC, SIZEM1, 12, SIMD_DATA_BITS - 12) /* size - 1 */
>> +FIELD(MTEDESC, SIZEM1, 12, SIMD_DATA_BITS - SVE_MTEDESC_SHIFT - 12) /* size - 1 */
>> bool mte_probe(CPUARMState *env, uint32_t desc, uint64_t ptr);
>> uint64_t mte_check(CPUARMState *env, uint32_t desc, uint64_t ptr, uintptr_t ra);
>> diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c
>> index 7108938251..a88e523cba 100644
>> --- a/target/arm/tcg/translate-sve.c
>> +++ b/target/arm/tcg/translate-sve.c
>> @@ -4443,17 +4443,18 @@ static void do_mem_zpa(DisasContext *s, int zt, int pg, TCGv_i64
>> addr,
>> {
>> unsigned vsz = vec_full_reg_size(s);
>> TCGv_ptr t_pg;
>> + uint32_t sizem1;
>> int desc = 0;
>> assert(mte_n >= 1 && mte_n <= 4);
>> + sizem1 = (mte_n << dtype_msz(dtype)) - 1;
>> + assert(sizem1 <= R_MTEDESC_SIZEM1_MASK >> R_MTEDESC_SIZEM1_SHIFT);
>> if (s->mte_active[0]) {
>> - int msz = dtype_msz(dtype);
>> -
>> desc = FIELD_DP32(desc, MTEDESC, MIDX, get_mem_index(s));
>> desc = FIELD_DP32(desc, MTEDESC, TBI, s->tbid);
>> desc = FIELD_DP32(desc, MTEDESC, TCMA, s->tcma);
>> desc = FIELD_DP32(desc, MTEDESC, WRITE, is_write);
>> - desc = FIELD_DP32(desc, MTEDESC, SIZEM1, (mte_n << msz) - 1);
>> + desc = FIELD_DP32(desc, MTEDESC, SIZEM1, sizem1);
>> desc <<= SVE_MTEDESC_SHIFT;
>> } else {
>> addr = clean_data_tbi(s, addr);
>
> There's no question about stable-8.2 here, this change needed there.
> But I've a question about stable-7.2 - does it make sense to pick this
> one up for 7.2? It quickly goes out of control, because this one
> is on top of
>
> 523da6b963455ce0a0e8d572d98d9cd91f952785 target/arm: Check alignment in helper_mte_check
> (this one might be good for 7.2 by its own)
> which needs:
> 3b97520c86e704b0533627c26b98173b71834bad target/arm: Pass single_memop to gen_mte_checkN
> which needs:
> 6f47e7c18972802c428a5e03eb52a8f0a7bebe5c target/arm: Load/store integer pair with one
> tcg operation
> which needs:
> needs 128bit ops
> 659aed5feda4472d8aed4ccc69e125bba2af8b89 target/arm: Drop tcg_temp_free from
> translator-a64.c
> ...
>
> So I think it's not a good idea to go down this hole..
>
> Probably ditto for the other two:
> target/arm: Split out make_svemte_desc
> target/arm: Handle mte in do_ldrq, do_ldro
>
> Makes sense? Or it's better to do a proper backport?
I don't think it makes sense to go back too far.
r~
next prev parent reply other threads:[~2024-02-16 19:18 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-07 2:52 [PATCH v3 0/6] target/arm: assorted mte fixes Richard Henderson
2024-02-07 2:52 ` [PATCH v3 1/6] linux-user/aarch64: Choose SYNC as the preferred MTE mode Richard Henderson
2024-02-07 20:03 ` Gustavo Romero
2024-02-08 16:18 ` Peter Maydell
2024-02-07 2:52 ` [PATCH v3 2/6] target/arm: Fix nregs computation in do_{ld,st}_zpa Richard Henderson
2024-02-08 16:24 ` [PATCH v3 2/6] target/arm: Fix nregs computation in do_{ld, st}_zpa Peter Maydell
2024-02-07 2:52 ` [PATCH v3 3/6] target/arm: Adjust and validate mtedesc sizem1 Richard Henderson
2024-02-16 15:12 ` Michael Tokarev
2024-02-16 19:17 ` Richard Henderson [this message]
2024-02-07 2:52 ` [PATCH v3 4/6] target/arm: Split out make_svemte_desc Richard Henderson
2024-02-07 2:52 ` [PATCH v3 5/6] target/arm: Handle mte in do_ldrq, do_ldro Richard Henderson
2024-02-07 2:52 ` [PATCH v3 6/6] target/arm: Fix SVE/SME gross MTE suppression checks Richard Henderson
2024-02-07 20:09 ` [PATCH v3 0/6] target/arm: assorted mte fixes Gustavo Romero
2024-02-08 16:27 ` 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=b93bf454-723e-456b-9328-2e2ec74070e0@linaro.org \
--to=richard.henderson@linaro.org \
--cc=gustavo.romero@linaro.org \
--cc=mjt@tls.msk.ru \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).