From: catalin.marinas@arm.com (Catalin Marinas)
To: linux-arm-kernel@lists.infradead.org
Subject: [question] [Cortex-A57] how to discover implementation defined system registers?
Date: Tue, 8 Sep 2015 10:16:05 +0100 [thread overview]
Message-ID: <20150908091604.GC14550@e104818-lin.cambridge.arm.com> (raw)
In-Reply-To: <CAP_9M69hqX6umT1L0=sh+os_vkWa6SMoQeXHo7b1Dkox64SdTA@mail.gmail.com>
On Tue, Sep 08, 2015 at 02:44:28AM +0300, Alexey Klimov wrote:
> I'm implementing module for Linux kernel that needs access to
> implementation defined system registers that described in section:
> "D7.2.78 S3_<op1>_<Cn>_<Cm>_<op2>, IMPLEMENTATION DEFINED registers"
> in ARMv8 spec.
Why?
> In specs for Cortex-A57 they are also described as
> implementation defined. Page 4-86, table 4-15 in Cortex-A57 spec ARM
> DDI0488G.
>
> Is it correct understanding that because of implementation-defined
> nature all information about are they implemented or not goes on
> vendor shoulders and should be exposed to kernel through
> 1) Device tree or ACPI. And only if kernel finds node or entry in
> DT/ACPI about this it can trigger code/driver that needs these regs.
>
> or
>
> 2) I'm looking on undef_hook, {un,}register_undef_hook() code in
> arch/arm64/traps.c. Can kernel "probe" to access to impl defined regs
> using undefined instr exceptions and undef_hooks to figure out
> map/impl features list/array/whatever for each cpu during startup (i'm
> also checking Suzuki patches for exposing cpu features)? Maybe not all
> impl defined regs can be probed this way and I suspect it might affect
> KVM or guests in some way.
As above, why does the kernel need to access these registers?
> Registers in question are L2CTLR_EL1, CPUMERRSR_EL1, L2MERRSR_EL1.
Usually, non-secure (i.e. Linux) access to such registers is blocked by
the (secure) firmware (at least writing to them), so they are not of
much use to Linux.
> Also, does information about CPU part, revision, variant and
> implementer play some role here? For example, cpu implementations with
> revision less than 1 never support this regs or only 0x41 as cpu
> implementer can provide these list of impl defined regs.
Yes, the CPU MIDR is the only reliable indication of which auxiliary
registers you have but, as I said above, they are meant for firmware to
access and Linux shouldn't care about them (at least arm64 Linux).
--
Catalin
next prev parent reply other threads:[~2015-09-08 9:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-07 23:44 [question] [Cortex-A57] how to discover implementation defined system registers? Alexey Klimov
2015-09-08 9:16 ` Catalin Marinas [this message]
2015-09-08 12:27 ` Alexey Klimov
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=20150908091604.GC14550@e104818-lin.cambridge.arm.com \
--to=catalin.marinas@arm.com \
--cc=linux-arm-kernel@lists.infradead.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).