Commit 87efe384 authored by Thomas Gleixner's avatar Thomas Gleixner

Merge branch 'x86/cc' into x86/sev

Pick up the cc_vendor changes.
parents 812b0597 3d91c537
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
#include <asm/coco.h> #include <asm/coco.h>
#include <asm/processor.h> #include <asm/processor.h>
static enum cc_vendor vendor __ro_after_init; enum cc_vendor cc_vendor __ro_after_init;
static u64 cc_mask __ro_after_init; static u64 cc_mask __ro_after_init;
static bool intel_cc_platform_has(enum cc_attr attr) static bool intel_cc_platform_has(enum cc_attr attr)
...@@ -99,7 +99,7 @@ static bool amd_cc_platform_has(enum cc_attr attr) ...@@ -99,7 +99,7 @@ static bool amd_cc_platform_has(enum cc_attr attr)
bool cc_platform_has(enum cc_attr attr) bool cc_platform_has(enum cc_attr attr)
{ {
switch (vendor) { switch (cc_vendor) {
case CC_VENDOR_AMD: case CC_VENDOR_AMD:
return amd_cc_platform_has(attr); return amd_cc_platform_has(attr);
case CC_VENDOR_INTEL: case CC_VENDOR_INTEL:
...@@ -119,7 +119,7 @@ u64 cc_mkenc(u64 val) ...@@ -119,7 +119,7 @@ u64 cc_mkenc(u64 val)
* - for AMD, bit *set* means the page is encrypted * - for AMD, bit *set* means the page is encrypted
* - for AMD with vTOM and for Intel, *clear* means encrypted * - for AMD with vTOM and for Intel, *clear* means encrypted
*/ */
switch (vendor) { switch (cc_vendor) {
case CC_VENDOR_AMD: case CC_VENDOR_AMD:
if (sev_status & MSR_AMD64_SNP_VTOM) if (sev_status & MSR_AMD64_SNP_VTOM)
return val & ~cc_mask; return val & ~cc_mask;
...@@ -135,7 +135,7 @@ u64 cc_mkenc(u64 val) ...@@ -135,7 +135,7 @@ u64 cc_mkenc(u64 val)
u64 cc_mkdec(u64 val) u64 cc_mkdec(u64 val)
{ {
/* See comment in cc_mkenc() */ /* See comment in cc_mkenc() */
switch (vendor) { switch (cc_vendor) {
case CC_VENDOR_AMD: case CC_VENDOR_AMD:
if (sev_status & MSR_AMD64_SNP_VTOM) if (sev_status & MSR_AMD64_SNP_VTOM)
return val | cc_mask; return val | cc_mask;
...@@ -149,11 +149,6 @@ u64 cc_mkdec(u64 val) ...@@ -149,11 +149,6 @@ u64 cc_mkdec(u64 val)
} }
EXPORT_SYMBOL_GPL(cc_mkdec); EXPORT_SYMBOL_GPL(cc_mkdec);
__init void cc_set_vendor(enum cc_vendor v)
{
vendor = v;
}
__init void cc_set_mask(u64 mask) __init void cc_set_mask(u64 mask)
{ {
cc_mask = mask; cc_mask = mask;
......
...@@ -10,13 +10,30 @@ enum cc_vendor { ...@@ -10,13 +10,30 @@ enum cc_vendor {
CC_VENDOR_INTEL, CC_VENDOR_INTEL,
}; };
void cc_set_vendor(enum cc_vendor v);
void cc_set_mask(u64 mask);
#ifdef CONFIG_ARCH_HAS_CC_PLATFORM #ifdef CONFIG_ARCH_HAS_CC_PLATFORM
extern enum cc_vendor cc_vendor;
static inline enum cc_vendor cc_get_vendor(void)
{
return cc_vendor;
}
static inline void cc_set_vendor(enum cc_vendor vendor)
{
cc_vendor = vendor;
}
void cc_set_mask(u64 mask);
u64 cc_mkenc(u64 val); u64 cc_mkenc(u64 val);
u64 cc_mkdec(u64 val); u64 cc_mkdec(u64 val);
#else #else
static inline enum cc_vendor cc_get_vendor(void)
{
return CC_VENDOR_NONE;
}
static inline void cc_set_vendor(enum cc_vendor vendor) { }
static inline u64 cc_mkenc(u64 val) static inline u64 cc_mkenc(u64 val)
{ {
return val; return val;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment