-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
x86/sev: Move GHCB MSR protocol and NAE definitions in a common header
The guest and the hypervisor contain separate macros to get and set the GHCB MSR protocol and NAE event fields. Consolidate the GHCB protocol definitions and helper macros in one place. Leave the supported protocol version define in separate files to keep the guest and hypervisor flexibility to support different GHCB version in the same release. There is no functional change intended. Signed-off-by: Brijesh Singh <brijesh.singh@amd.com> Signed-off-by: Borislav Petkov <bp@suse.de> Acked-by: Joerg Roedel <jroedel@suse.de> Link: https://lkml.kernel.org/r/20210427111636.1207-3-brijesh.singh@amd.com
- Loading branch information
Brijesh Singh
authored and
Borislav Petkov
committed
May 10, 2021
1 parent
e759959
commit b81fc74
Showing
4 changed files
with
80 additions
and
70 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
/* | ||
* AMD SEV header common between the guest and the hypervisor. | ||
* | ||
* Author: Brijesh Singh <brijesh.singh@amd.com> | ||
*/ | ||
|
||
#ifndef __ASM_X86_SEV_COMMON_H | ||
#define __ASM_X86_SEV_COMMON_H | ||
|
||
#define GHCB_MSR_INFO_POS 0 | ||
#define GHCB_MSR_INFO_MASK (BIT_ULL(12) - 1) | ||
|
||
#define GHCB_MSR_SEV_INFO_RESP 0x001 | ||
#define GHCB_MSR_SEV_INFO_REQ 0x002 | ||
#define GHCB_MSR_VER_MAX_POS 48 | ||
#define GHCB_MSR_VER_MAX_MASK 0xffff | ||
#define GHCB_MSR_VER_MIN_POS 32 | ||
#define GHCB_MSR_VER_MIN_MASK 0xffff | ||
#define GHCB_MSR_CBIT_POS 24 | ||
#define GHCB_MSR_CBIT_MASK 0xff | ||
#define GHCB_MSR_SEV_INFO(_max, _min, _cbit) \ | ||
((((_max) & GHCB_MSR_VER_MAX_MASK) << GHCB_MSR_VER_MAX_POS) | \ | ||
(((_min) & GHCB_MSR_VER_MIN_MASK) << GHCB_MSR_VER_MIN_POS) | \ | ||
(((_cbit) & GHCB_MSR_CBIT_MASK) << GHCB_MSR_CBIT_POS) | \ | ||
GHCB_MSR_SEV_INFO_RESP) | ||
#define GHCB_MSR_INFO(v) ((v) & 0xfffUL) | ||
#define GHCB_MSR_PROTO_MAX(v) (((v) >> GHCB_MSR_VER_MAX_POS) & GHCB_MSR_VER_MAX_MASK) | ||
#define GHCB_MSR_PROTO_MIN(v) (((v) >> GHCB_MSR_VER_MIN_POS) & GHCB_MSR_VER_MIN_MASK) | ||
|
||
#define GHCB_MSR_CPUID_REQ 0x004 | ||
#define GHCB_MSR_CPUID_RESP 0x005 | ||
#define GHCB_MSR_CPUID_FUNC_POS 32 | ||
#define GHCB_MSR_CPUID_FUNC_MASK 0xffffffff | ||
#define GHCB_MSR_CPUID_VALUE_POS 32 | ||
#define GHCB_MSR_CPUID_VALUE_MASK 0xffffffff | ||
#define GHCB_MSR_CPUID_REG_POS 30 | ||
#define GHCB_MSR_CPUID_REG_MASK 0x3 | ||
#define GHCB_CPUID_REQ_EAX 0 | ||
#define GHCB_CPUID_REQ_EBX 1 | ||
#define GHCB_CPUID_REQ_ECX 2 | ||
#define GHCB_CPUID_REQ_EDX 3 | ||
#define GHCB_CPUID_REQ(fn, reg) \ | ||
(GHCB_MSR_CPUID_REQ | \ | ||
(((unsigned long)reg & GHCB_MSR_CPUID_REG_MASK) << GHCB_MSR_CPUID_REG_POS) | \ | ||
(((unsigned long)fn) << GHCB_MSR_CPUID_FUNC_POS)) | ||
|
||
#define GHCB_MSR_TERM_REQ 0x100 | ||
#define GHCB_MSR_TERM_REASON_SET_POS 12 | ||
#define GHCB_MSR_TERM_REASON_SET_MASK 0xf | ||
#define GHCB_MSR_TERM_REASON_POS 16 | ||
#define GHCB_MSR_TERM_REASON_MASK 0xff | ||
#define GHCB_SEV_TERM_REASON(reason_set, reason_val) \ | ||
(((((u64)reason_set) & GHCB_MSR_TERM_REASON_SET_MASK) << GHCB_MSR_TERM_REASON_SET_POS) | \ | ||
((((u64)reason_val) & GHCB_MSR_TERM_REASON_MASK) << GHCB_MSR_TERM_REASON_POS)) | ||
|
||
#define GHCB_SEV_ES_REASON_GENERAL_REQUEST 0 | ||
#define GHCB_SEV_ES_REASON_PROTOCOL_UNSUPPORTED 1 | ||
|
||
#define GHCB_RESP_CODE(v) ((v) & GHCB_MSR_INFO_MASK) | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters