diff mbox series

[v4,1/3] arch/x86: Update config and kernel doc for MPK feature on AMD

Message ID 158932793646.44260.2629848287332937779.stgit@naples-babu.amd.com (mailing list archive)
State New, archived
Headers show
Series arch/x86: Enable MPK feature on AMD | expand

Commit Message

Moger, Babu May 12, 2020, 11:58 p.m. UTC
AMD's next generation of EPYC processors support the MPK (Memory
Protection Keys) feature.

Add a generic X86_MEMORY_PROTECTION_KEYS config shadowing
X86_INTEL_MEMORY_PROTECTION_KEYS and update the kernel
documentation.

No functional changes.

Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 Documentation/core-api/protection-keys.rst |    3 ++-
 arch/x86/Kconfig                           |   14 ++++++++++++--
 2 files changed, 14 insertions(+), 3 deletions(-)

Comments

Dave Hansen May 13, 2020, 3:09 p.m. UTC | #1
On 5/12/20 4:58 PM, Babu Moger wrote:
> +config X86_MEMORY_PROTECTION_KEYS
> +	# Both Intel and AMD platforms support "Memory Protection Keys"
> +	# feature. So add a generic option X86_MEMORY_PROTECTION_KEYS
> +	# and set the option whenever X86_INTEL_MEMORY_PROTECTION_KEYS
> +	# is set. This is to avoid the confusion about the feature
> +	# availability on AMD platforms. Also renaming the old option
> +	# would cause the user an extra prompt during the kernel
> +	# configuration. So avoided changing the old config name.
> +	def_bool X86_INTEL_MEMORY_PROTECTION_KEYS

Hi Babu,

I made a request earlier for an end date (or version) to be included
here.  I believe that appeared in one of your earlier versions, but it
was removed in later ones.

Was there a reason for that?

I'd really prefer to put some kind of expiration date on the config
option.  It will outlive us all otherwise.

>  Memory Protection Keys for Userspace (PKU aka PKEYs) is a feature
>  which is found on Intel's Skylake "Scalable Processor" Server CPUs.
> -It will be avalable in future non-server parts.
> +It will be available in future non-server parts. Also, AMD64
> +Architecture Programmer’s Manual defines PKU feature in AMD processors.

I actually worked pretty hard to make that sentence useful to Linux
users.  Instead of forcing them to imply that it will be available on
future AMD CPUs, can we just come out and say it?  Can we give any more
information to our users?

Naming the AMD manual in which the feature is defined doesn't really
help our users.  Let's not waste the bytes on it.

How about:

	Memory Protection Keys for Userspace (PKU aka PKEYs) is a
	feature which is found on Intel's Skylake (and later) "Scalable
	Processor" Server CPUs.  It will be avalable in future non-
	server Intel parts and future AMD parts.

Any clarity you can add, such as to say what AMD is doing for server vs.
client  would be nice.

BTW, when I first submitted pkeys, I didn't have any statement like this
in the changelog or documentation.  Ingo, I think, asked for it and I
worked with folks inside Intel to figure out how much we could say
publicly about our plans.  A similar effort from AMD would be much
appreciated here.
Moger, Babu May 13, 2020, 3:56 p.m. UTC | #2
On 5/13/20 10:09 AM, Dave Hansen wrote:
> On 5/12/20 4:58 PM, Babu Moger wrote:
>> +config X86_MEMORY_PROTECTION_KEYS
>> +	# Both Intel and AMD platforms support "Memory Protection Keys"
>> +	# feature. So add a generic option X86_MEMORY_PROTECTION_KEYS
>> +	# and set the option whenever X86_INTEL_MEMORY_PROTECTION_KEYS
>> +	# is set. This is to avoid the confusion about the feature
>> +	# availability on AMD platforms. Also renaming the old option
>> +	# would cause the user an extra prompt during the kernel
>> +	# configuration. So avoided changing the old config name.
>> +	def_bool X86_INTEL_MEMORY_PROTECTION_KEYS
> 
> Hi Babu,
> 
> I made a request earlier for an end date (or version) to be included
> here.  I believe that appeared in one of your earlier versions, but it
> was removed in later ones.
> 
> Was there a reason for that?

Dave, Sorry, I misunderstood that. I thought we probably are not going to
change the sources/makefile(ifdefs mostly) as it was technically not
required. Now I am reading that we are going to change that in the future
and just keep X86_MEMORY_PROTECTION_KEYS going forward.
Sure. I will add the text you proposed. Please feel free to correct again.

> 
> I'd really prefer to put some kind of expiration date on the config
> option.  It will outlive us all otherwise.
> 
>>  Memory Protection Keys for Userspace (PKU aka PKEYs) is a feature
>>  which is found on Intel's Skylake "Scalable Processor" Server CPUs.
>> -It will be avalable in future non-server parts.
>> +It will be available in future non-server parts. Also, AMD64
>> +Architecture Programmer’s Manual defines PKU feature in AMD processors.
> 
> I actually worked pretty hard to make that sentence useful to Linux
> users.  Instead of forcing them to imply that it will be available on
> future AMD CPUs, can we just come out and say it?  Can we give any more
> information to our users?
> 
> Naming the AMD manual in which the feature is defined doesn't really
> help our users.  Let's not waste the bytes on it.
> 
> How about:
> 
> 	Memory Protection Keys for Userspace (PKU aka PKEYs) is a
> 	feature which is found on Intel's Skylake (and later) "Scalable
> 	Processor" Server CPUs.  It will be avalable in future non-
> 	server Intel parts and future AMD parts.

This should be good enough. Thanks.
> 
> Any clarity you can add, such as to say what AMD is doing for server vs.
> client  would be nice.
> 
> BTW, when I first submitted pkeys, I didn't have any statement like this
> in the changelog or documentation.  Ingo, I think, asked for it and I
> worked with folks inside Intel to figure out how much we could say
> publicly about our plans.  A similar effort from AMD would be much
> appreciated here.
>
diff mbox series

Patch

diff --git a/Documentation/core-api/protection-keys.rst b/Documentation/core-api/protection-keys.rst
index 49d9833af871..d25e89e53c59 100644
--- a/Documentation/core-api/protection-keys.rst
+++ b/Documentation/core-api/protection-keys.rst
@@ -6,7 +6,8 @@  Memory Protection Keys
 
 Memory Protection Keys for Userspace (PKU aka PKEYs) is a feature
 which is found on Intel's Skylake "Scalable Processor" Server CPUs.
-It will be avalable in future non-server parts.
+It will be available in future non-server parts. Also, AMD64
+Architecture Programmer’s Manual defines PKU feature in AMD processors.
 
 For anyone wishing to test or use this feature, it is available in
 Amazon's EC2 C5 instances and is known to work there using an Ubuntu
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 1197b5596d5a..15bda3a60c1d 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1887,10 +1887,10 @@  config X86_UMIP
 	  results are dummy.
 
 config X86_INTEL_MEMORY_PROTECTION_KEYS
-	prompt "Intel Memory Protection Keys"
+	prompt "Memory Protection Keys"
 	def_bool y
 	# Note: only available in 64-bit mode
-	depends on CPU_SUP_INTEL && X86_64
+	depends on X86_64 && (CPU_SUP_INTEL || CPU_SUP_AMD)
 	select ARCH_USES_HIGH_VMA_FLAGS
 	select ARCH_HAS_PKEYS
 	---help---
@@ -1902,6 +1902,16 @@  config X86_INTEL_MEMORY_PROTECTION_KEYS
 
 	  If unsure, say y.
 
+config X86_MEMORY_PROTECTION_KEYS
+	# Both Intel and AMD platforms support "Memory Protection Keys"
+	# feature. So add a generic option X86_MEMORY_PROTECTION_KEYS
+	# and set the option whenever X86_INTEL_MEMORY_PROTECTION_KEYS
+	# is set. This is to avoid the confusion about the feature
+	# availability on AMD platforms. Also renaming the old option
+	# would cause the user an extra prompt during the kernel
+	# configuration. So avoided changing the old config name.
+	def_bool X86_INTEL_MEMORY_PROTECTION_KEYS
+
 choice
 	prompt "TSX enable mode"
 	depends on CPU_SUP_INTEL