From: Michael Ellerman <mpe@ellerman•id.au>
To: Athira Rajeev <atrajeev@linux•vnet.ibm.com>
Cc: maddy@linux•vnet.ibm.com, linuxppc-dev@lists•ozlabs.org
Subject: Re: [PATCH v3] powerpc/perf: Use SIER_USER_MASK while updating SPRN_SIER for EBB events
Date: Thu, 19 Mar 2020 21:52:12 +1100 [thread overview]
Message-ID: <87r1xod3c3.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <1584533181-4331-1-git-send-email-atrajeev@linux.vnet.ibm.com>
Hi Athira,
Athira Rajeev <atrajeev@linux•vnet.ibm.com> writes:
> Sampled Instruction Event Register (SIER), is a PMU register,
^
that
> captures architecture state for a given sample. And sier_user_mask
^ ^
don't think we need "architecture" SIER_USER_MASK
> defined in commit 330a1eb7775b ("powerpc/perf: Core EBB support for 64-bit
> book3s") defines the architected bits that needs to be saved from the SPR.
Not quite, it defines the bits that are visible to userspace.
And I think it's true that for EBB events the bits we need/want to save
are only the user visible bits.
> Currently all of the bits from SIER are saved for EBB events. Patch fixes
> this by ANDing the "sier_user_mask" to data from SIER in ebb_switch_out().
> This will force save only architected bits from the SIER.
s/architected/user visible/
But, why does it matter? The kernel saves the user visible bits, as well
as the kernel-only bits into the thread struct. And then later the
kernel restores that value into the hardware before returning to
userspace.
But the hardware enforces the visibility of the bits, so userspace can't
observe any bits that it shouldn't.
Or is there some other mechanism whereby userspace can see those bits? ;)
If there was, what would the security implications of that be?
cheers
> Fixes: 330a1eb7775b ("powerpc/perf: Core EBB support for 64-bit book3s")
> Signed-off-by: Athira Rajeev <atrajeev@linux•vnet.ibm.com>
> ---
> Changelog:
> v2 -> v3:
> - Corrected name of SIER register in commit message
> as pointed by Segher Boessenkool
> v1 -> v2:
> - Make the commit message more clearer.
>
> arch/powerpc/perf/core-book3s.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
> index 3086055..48b61cc 100644
> --- a/arch/powerpc/perf/core-book3s.c
> +++ b/arch/powerpc/perf/core-book3s.c
> @@ -579,7 +579,7 @@ static void ebb_switch_out(unsigned long mmcr0)
> return;
>
> current->thread.siar = mfspr(SPRN_SIAR);
> - current->thread.sier = mfspr(SPRN_SIER);
> + current->thread.sier = mfspr(SPRN_SIER) & SIER_USER_MASK;
> current->thread.sdar = mfspr(SPRN_SDAR);
> current->thread.mmcr0 = mmcr0 & MMCR0_USER_MASK;
> current->thread.mmcr2 = mfspr(SPRN_MMCR2) & MMCR2_USER_MASK;
> --
> 1.8.3.1
next prev parent reply other threads:[~2020-03-19 10:53 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-18 12:06 [PATCH v3] powerpc/perf: Use SIER_USER_MASK while updating SPRN_SIER for EBB events Athira Rajeev
2020-03-19 10:52 ` Michael Ellerman [this message]
2020-03-27 11:53 ` Athira Rajeev
2020-07-14 6:08 ` Michael Ellerman
2020-07-15 6:13 ` Athira Rajeev
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=87r1xod3c3.fsf@mpe.ellerman.id.au \
--to=mpe@ellerman$(echo .)id.au \
--cc=atrajeev@linux$(echo .)vnet.ibm.com \
--cc=linuxppc-dev@lists$(echo .)ozlabs.org \
--cc=maddy@linux$(echo .)vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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