x86/coco: Export cc_vendor
It will be used in different checks in future changes. Export it directly and provide accessor functions and stubs so this can be used in general code when CONFIG_ARCH_HAS_CC_PLATFORM is not set. No functional changes. [ tglx: Add accessor functions ] Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20230318115634.9392-2-bp@alien8.de
This commit is contained in:
parent
e8d018dd02
commit
3d91c53729
|
@ -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)
|
||||||
|
@ -83,7 +83,7 @@ static bool hyperv_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:
|
||||||
|
@ -105,7 +105,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 Intel *clear* means encrypted.
|
* - for Intel *clear* means encrypted.
|
||||||
*/
|
*/
|
||||||
switch (vendor) {
|
switch (cc_vendor) {
|
||||||
case CC_VENDOR_AMD:
|
case CC_VENDOR_AMD:
|
||||||
return val | cc_mask;
|
return val | cc_mask;
|
||||||
case CC_VENDOR_INTEL:
|
case CC_VENDOR_INTEL:
|
||||||
|
@ -118,7 +118,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:
|
||||||
return val & ~cc_mask;
|
return val & ~cc_mask;
|
||||||
case CC_VENDOR_INTEL:
|
case CC_VENDOR_INTEL:
|
||||||
|
@ -129,11 +129,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;
|
||||||
|
|
|
@ -11,13 +11,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;
|
||||||
|
|
Loading…
Reference in New Issue