x86/coco: Export cc_vendor
authorBorislav Petkov (AMD) <bp@alien8.de>
Sat, 18 Mar 2023 11:56:33 +0000 (12:56 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 30 Mar 2023 12:06:28 +0000 (14:06 +0200)
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
arch/x86/coco/core.c
arch/x86/include/asm/coco.h

index 49b44f881484680376a7393dc0f101e4565a4009..684f0a910475cf6622bb32535ba47cd9d59f80be 100644 (file)
@@ -13,7 +13,7 @@
 #include <asm/coco.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 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)
 {
-       switch (vendor) {
+       switch (cc_vendor) {
        case CC_VENDOR_AMD:
                return amd_cc_platform_has(attr);
        case CC_VENDOR_INTEL:
@@ -105,7 +105,7 @@ u64 cc_mkenc(u64 val)
         * - for AMD, bit *set* means the page is encrypted
         * - for Intel *clear* means encrypted.
         */
-       switch (vendor) {
+       switch (cc_vendor) {
        case CC_VENDOR_AMD:
                return val | cc_mask;
        case CC_VENDOR_INTEL:
@@ -118,7 +118,7 @@ u64 cc_mkenc(u64 val)
 u64 cc_mkdec(u64 val)
 {
        /* See comment in cc_mkenc() */
-       switch (vendor) {
+       switch (cc_vendor) {
        case CC_VENDOR_AMD:
                return val & ~cc_mask;
        case CC_VENDOR_INTEL:
@@ -129,11 +129,6 @@ u64 cc_mkdec(u64 val)
 }
 EXPORT_SYMBOL_GPL(cc_mkdec);
 
-__init void cc_set_vendor(enum cc_vendor v)
-{
-       vendor = v;
-}
-
 __init void cc_set_mask(u64 mask)
 {
        cc_mask = mask;
index 3d98c3a60d34f97fc6403a7248b9c06c03b63f8d..91b9448ffe76899c065204cbf88ff6b7ccfaf2ce 100644 (file)
@@ -11,13 +11,30 @@ enum cc_vendor {
        CC_VENDOR_INTEL,
 };
 
-void cc_set_vendor(enum cc_vendor v);
-void cc_set_mask(u64 mask);
-
 #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_mkdec(u64 val);
 #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)
 {
        return val;