From: Catalin Marinas <catalin.marinas@arm.com>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>,
Russell King <linux@armlinux.org.uk>,
Ard Biesheuvel <ardb@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
Stefan Wahren <wahrenst@gmx.net>,
Kees Cook <keescook@chromium.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 4/4] ARM: Implement PAN for LPAE by TTBR0 page table walks disablement
Date: Tue, 14 May 2024 15:39:01 +0100 [thread overview]
Message-ID: <ZkN3hTZ22A_4bl9_@arm.com> (raw)
In-Reply-To: <CACRpkdakWixq5kfW48zUU0gcjVYNTKf+DR9cg9LixrY_SwsS9w@mail.gmail.com>
On Tue, May 14, 2024 at 09:37:21AM +0200, Linus Walleij wrote:
> On Mon, May 13, 2024 at 10:29 PM Linus Walleij <linus.walleij@linaro.org> wrote:
> > I guess I should bring out the STM32MP157 board again and retest
> > to verify that that one hardware works with this. Any other ideas?
>
> I got this Cortex-A7 board out and booted with LPAE and PAN
> using TTBR0 and it boots fine (some kind of OpenEmbedded/YOCTO
> system is in it with systemd and all.
>
> Tested with LKDTM provoked crashes and it behaves as expected.
>
> Given Florians report it clearly works on some LPAE:s and not on some
> others for some reason! I suppose we need to figure it out.
>
> Catalin do you have some ideas?
Since EPD0 is allowed to be cached in the TLB, we need to change the
ASID as well (assuming that it's at least tagged by ASID). But, to keep
the uaccess enable/disable code simple, patch 4 short-circuits this by
toggling the TTBCR.A1 bit. At the time (~2015) this was fine on the
32-bit CPUs. Since the A1 bit is theoretically allowed to be cached in
the TLB, toggling it may not have any effect without a TLB invalidation.
I recall some old documentation stating that the EPD0 value is only
cached when 0, not 1 (IOW, toggling it to 1 would not prevent existing
TLB entries from being hit). This wouldn't have been a significant
issue, most likely the PAN protection not always working but here it's
the other way around, it looks like a value of 1 persisting even after
being toggled.
I'd say the weird behaviour is caused by different microarchitectures,
especially if you run this on ARMv8 hardware (the original patch was
never intended to).
It would be worth trying to do a full TLBI invalidation after uaccess
enable/disable just to check this theory.
--
Catalin
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-05-14 14:39 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-12 12:52 [PATCH v3 0/4] PAN for ARM32 using LPAE Linus Walleij
2024-03-12 12:52 ` [PATCH v3 1/4] ARM: Add TTBCR_* definitions to pgtable-3level-hwdef.h Linus Walleij
2024-03-12 12:52 ` [PATCH v3 2/4] ARM: Move asm statements accessing TTBCR into C functions Linus Walleij
2024-03-12 12:52 ` [PATCH v3 3/4] ARM: Reduce the number of #ifdef CONFIG_CPU_SW_DOMAIN_PAN Linus Walleij
2024-03-12 12:52 ` [PATCH v3 4/4] ARM: Implement PAN for LPAE by TTBR0 page table walks disablement Linus Walleij
2024-05-07 13:10 ` Geert Uytterhoeven
2024-05-13 19:23 ` Linus Walleij
2024-05-13 19:58 ` Geert Uytterhoeven
2024-05-13 20:29 ` Linus Walleij
2024-05-14 3:56 ` Florian Fainelli
2024-05-14 8:14 ` Russell King (Oracle)
2024-05-14 11:22 ` Geert Uytterhoeven
2024-05-14 11:33 ` Russell King (Oracle)
2024-05-14 12:32 ` Geert Uytterhoeven
2024-05-14 12:38 ` Russell King (Oracle)
2024-05-14 15:03 ` Catalin Marinas
2024-05-14 6:41 ` Geert Uytterhoeven
2024-05-14 7:46 ` Linus Walleij
2024-05-14 7:59 ` Ard Biesheuvel
2024-05-14 8:04 ` Geert Uytterhoeven
2024-05-14 8:25 ` Ard Biesheuvel
2024-05-14 9:22 ` Russell King (Oracle)
2024-05-14 11:40 ` Linus Walleij
2024-05-14 11:28 ` Geert Uytterhoeven
2024-05-14 16:06 ` Geert Uytterhoeven
2024-05-14 16:54 ` Florian Fainelli
2024-05-14 17:03 ` Russell King (Oracle)
2024-05-14 18:26 ` Florian Fainelli
2024-05-14 20:33 ` Linus Walleij
2024-05-14 20:34 ` Florian Fainelli
2024-05-15 8:36 ` Ard Biesheuvel
2024-05-15 8:45 ` Geert Uytterhoeven
2024-05-15 8:49 ` Ard Biesheuvel
2024-05-15 9:21 ` Geert Uytterhoeven
2024-05-15 9:39 ` Ard Biesheuvel
2024-05-15 11:58 ` Linus Walleij
2024-05-15 14:05 ` Geert Uytterhoeven
2024-05-15 8:48 ` Russell King (Oracle)
2024-05-15 8:53 ` Ard Biesheuvel
2024-05-15 12:27 ` Russell King (Oracle)
2024-05-15 15:41 ` Ard Biesheuvel
2024-05-15 16:18 ` Russell King (Oracle)
2024-05-15 16:36 ` Ard Biesheuvel
2024-05-15 21:51 ` Arnd Bergmann
2024-05-15 8:10 ` Geert Uytterhoeven
2024-05-14 7:37 ` Linus Walleij
2024-05-14 14:39 ` Catalin Marinas [this message]
2024-03-12 17:45 ` [PATCH v3 0/4] PAN for ARM32 using LPAE Florian Fainelli
2024-03-13 8:13 ` Linus Walleij
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=ZkN3hTZ22A_4bl9_@arm.com \
--to=catalin.marinas@arm.com \
--cc=ardb@kernel.org \
--cc=arnd@arndb.de \
--cc=geert@linux-m68k.org \
--cc=keescook@chromium.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux@armlinux.org.uk \
--cc=wahrenst@gmx.net \
/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).