From: David Miller <davem@davemloft.net>
To: khalid.aziz@oracle.com
Cc: corbet@lwn.net, viro@zeniv.linux.org.uk,
nitin.m.gupta@oracle.com, mike.kravetz@oracle.com,
akpm@linux-foundation.org, mingo@kernel.org,
kirill.shutemov@linux.intel.com, adam.buchbinder@gmail.com,
hughd@google.com, minchan@kernel.org, keescook@chromium.org,
chris.hyser@oracle.com, atish.patra@oracle.com,
cmetcalf@mellanox.com, atomlin@redhat.com, jslaby@suse.cz,
joe@perches.com, paul.gortmaker@windriver.com, mhocko@suse.com,
lstoakes@gmail.com, jack@suse.cz, dave.hansen@linux.intel.com,
vbabka@suse.cz, dan.j.williams@intel.com, iamjoonsoo.kim@lge.com,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
sparclinux@vger.kernel.org, linux-mm@kvack.org,
khalid@gonehiking.org
Subject: Re: [PATCH v5 4/4] sparc64: Add support for ADI (Application Data Integrity)
Date: Mon, 30 Jan 2017 17:15:31 -0500 (EST) [thread overview]
Message-ID: <20170130.171531.1973857503703372714.davem@davemloft.net> (raw)
In-Reply-To: <0b6865aabc010ee3a7ea956a70447abbab53ea70.1485362562.git.khalid.aziz@oracle.com>
From: Khalid Aziz <khalid.aziz@oracle.com>
Date: Wed, 25 Jan 2017 12:57:16 -0700
> +static inline void enable_adi(void)
> +{
...
> + __asm__ __volatile__(
> + "rdpr %%pstate, %%g1\n\t"
> + "or %%g1, %0, %%g1\n\t"
> + "wrpr %%g1, %%g0, %%pstate\n\t"
> + ".word 0x83438000\n\t" /* rd %mcdper, %g1 */
> + ".word 0xaf900001\n\t" /* wrpr %g0, %g1, %pmcdper */
> + :
> + : "i" (PSTATE_MCDE)
> + : "g1");
> +}
This is _crazy_ expensive.
This is 4 privileged register operations, every single one incurs a full
pipline flush and virtual cpu thread yield.
And we do this around _every_ single userspace access from the kernel
when the thread has ADI enabled.
I think if the kernel manages the ADI metadata properly, you can get rid
of all of this.
On etrap, you change ESTATE_PSTATE{1,2} to have the MCDE bit enabled.
Then the kernel always runs with ADI enabled.
Furthermore, since the %mcdper register should be set to whatever the
current task has asked for, you should be able to avoid touching it
as well assuming that traps do not change %mcdper's value.
Then you don't need to do anything special during userspace accesses
which seems to be the way this was designed to be used.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2017-01-30 22:15 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-25 19:57 [PATCH v5 0/4] Application Data Integrity feature introduced by SPARC M7 Khalid Aziz
2017-01-25 19:57 ` [PATCH v5 2/4] mm: Add functions to support extra actions on swap in/out Khalid Aziz
2017-01-25 19:57 ` [PATCH v5 4/4] sparc64: Add support for ADI (Application Data Integrity) Khalid Aziz
2017-01-25 22:00 ` Rob Gardner
2017-01-25 22:13 ` David Miller
2017-01-25 22:20 ` Khalid Aziz
2017-01-25 22:50 ` Rob Gardner
2017-01-25 22:57 ` Khalid Aziz
2017-01-30 22:15 ` David Miller [this message]
2017-01-31 23:38 ` Khalid Aziz
2017-02-01 17:18 ` David Miller
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=20170130.171531.1973857503703372714.davem@davemloft.net \
--to=davem@davemloft.net \
--cc=adam.buchbinder@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=atish.patra@oracle.com \
--cc=atomlin@redhat.com \
--cc=chris.hyser@oracle.com \
--cc=cmetcalf@mellanox.com \
--cc=corbet@lwn.net \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=hughd@google.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=jack@suse.cz \
--cc=joe@perches.com \
--cc=jslaby@suse.cz \
--cc=keescook@chromium.org \
--cc=khalid.aziz@oracle.com \
--cc=khalid@gonehiking.org \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lstoakes@gmail.com \
--cc=mhocko@suse.com \
--cc=mike.kravetz@oracle.com \
--cc=minchan@kernel.org \
--cc=mingo@kernel.org \
--cc=nitin.m.gupta@oracle.com \
--cc=paul.gortmaker@windriver.com \
--cc=sparclinux@vger.kernel.org \
--cc=vbabka@suse.cz \
--cc=viro@zeniv.linux.org.uk \
/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).