[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL 04/29] arm/kvm: add support for MTE
|
From: |
Cornelia Huck |
|
Subject: |
Re: [PULL 04/29] arm/kvm: add support for MTE |
|
Date: |
Mon, 22 May 2023 11:48:38 +0200 |
|
User-agent: |
Notmuch/0.37 (https://notmuchmail.org) |
On Fri, May 19 2023, Peter Maydell <peter.maydell@linaro.org> wrote:
> On Fri, 19 May 2023 at 14:31, Peter Maydell <peter.maydell@linaro.org> wrote:
>>
>> On Fri, 19 May 2023 at 13:55, Alex Bennée <alex.bennee@linaro.org> wrote:
>> >
>> >
>> > Peter Maydell <peter.maydell@linaro.org> writes:
>> >
>> > > From: Cornelia Huck <cohuck@redhat.com>
>> > >
>> > > Extend the 'mte' property for the virt machine to cover KVM as
>> > > well. For KVM, we don't allocate tag memory, but instead enable the
>> > > capability.
>> > >
>> > > If MTE has been enabled, we need to disable migration, as we do not
>> > > yet have a way to migrate the tags as well. Therefore, MTE will stay
>> > > off with KVM unless requested explicitly.
>> > >
>> > > Signed-off-by: Cornelia Huck <cohuck@redhat.com>
>> > > Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
>> > > Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>> > > Message-id: 20230428095533.21747-2-cohuck@redhat.com
>> > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
>> >
>> > I bisected to this commit which causes a segfault on one of my test
>> > kernels (6.3.2 arm64):
>> >
>> > ➜ ag MTE .config
>> > 486:CONFIG_ARM64_AS_HAS_MTE=y
>> > 487:CONFIG_ARM64_MTE=y
>> > 2949:CONFIG_WLAN_VENDOR_ADMTEK=y
>> > 3573:# CONFIG_I2C_SIMTEC is not set
>> > 5278:# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set
>> > 9749:CONFIG_ARCH_USE_MEMTEST=y
>> > 9750:CONFIG_MEMTEST=y
Sigh, this patch seems to be cursed :( Apologies for the fallout.
(I'm wondering what makes this pop up, maybe the CONFIG_MEMTEST?)
>>
>> Try this entirely untested patch?
>>
>> diff --git a/target/arm/cpu.c b/target/arm/cpu.c
>> index f6a88e52ac2..f350661a928 100644
>> --- a/target/arm/cpu.c
>> +++ b/target/arm/cpu.c
>> @@ -1593,6 +1593,15 @@ static void arm_cpu_realizefn(DeviceState *dev,
>> Error **errp)
>> }
>> }
>>
>> + /*
>> + * For TCG, we can only present MTE to the guest if the board gave us
>> + * tag RAM. Set has_mte appropriately so code below doesn't need to
>> + * care whether we're TCG or KVM when deciding if MTE is present.
>> + */
>> + if (tcg_enabled() || qtest_enabled()) {
>> + cpu->has_mte = cpu->tag_memory != NULL;
>> + }
>> +
>> if (!tcg_enabled() && !qtest_enabled()) {
>> /*
>> * We assume that no accelerator except TCG (and the "not really an
>
> Hmm, actually I don't think that's the only fix needed. It's OK for
> TCG, but for KVM I can't see anywhere in the code that ever sets
> has_mte to false. We default it to on in the cpu.c code, but
> then the board code only sets it to true if MTE is enabled
> (via kvm_arm_enable_mte()).
Hrm, do we need explicit init of this field? Probably needless to say
that I didn't hit this problem in any of my tests... I suspect that only
specific kernels hit this?
[PULL 08/29] target/arm: Create decodetree skeleton for A64, Peter Maydell, 2023/05/18
[PULL 07/29] target/arm: Split out disas_a64_legacy, Peter Maydell, 2023/05/18
[PULL 05/29] target/arm: add RAZ/WI handling for DBGDTR[TX|RX], Peter Maydell, 2023/05/18
[PULL 26/29] target/arm: Convert ERET, ERETAA, ERETAB to decodetree, Peter Maydell, 2023/05/18
[PULL 02/29] target/arm: Fix vd == vm overlap in sve_ldff1_z, Peter Maydell, 2023/05/18
[PULL 03/29] Maintainers: add myself as reviewer for sbsa-ref, Peter Maydell, 2023/05/18
[PULL 09/29] target/arm: Pull calls to disas_sve() and disas_sme() out of legacy decoder, Peter Maydell, 2023/05/18
[PULL 10/29] target/arm: Convert PC-rel addressing to decodetree, Peter Maydell, 2023/05/18
[PULL 11/29] target/arm: Split gen_add_CC and gen_sub_CC, Peter Maydell, 2023/05/18