linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tom Lendacky <thomas.lendacky@amd.com>
To: Nikunj A Dadhania <nikunj@amd.com>,
	linux-kernel@vger.kernel.org, bp@alien8.de, x86@kernel.org,
	kvm@vger.kernel.org
Cc: mingo@redhat.com, tglx@linutronix.de,
	dave.hansen@linux.intel.com, pgonda@google.com,
	seanjc@google.com, pbonzini@redhat.com
Subject: Re: [PATCH v8 03/16] virt: sev-guest: Add SNP guest request structure
Date: Tue, 27 Feb 2024 16:20:40 -0600	[thread overview]
Message-ID: <c03f15aa-6606-4aff-bcec-2e29e0b36d9f@amd.com> (raw)
In-Reply-To: <20240215113128.275608-4-nikunj@amd.com>

On 2/15/24 05:31, Nikunj A Dadhania wrote:
> Add a snp_guest_req structure to simplify the function arguments. The
> structure will be used to call the SNP Guest message request API
> instead of passing a long list of parameters.
> 
> Update snp_issue_guest_request() prototype to include the new guest request
> structure and move the prototype to sev.h.
> 
> Signed-off-by: Nikunj A Dadhania <nikunj@amd.com>
> ---
>   arch/x86/include/asm/sev.h              |  75 ++++++++-
>   arch/x86/kernel/sev.c                   |  15 +-
>   drivers/virt/coco/sev-guest/sev-guest.c | 195 +++++++++++++-----------
>   drivers/virt/coco/sev-guest/sev-guest.h |  66 --------
>   4 files changed, 187 insertions(+), 164 deletions(-)
>   delete mode 100644 drivers/virt/coco/sev-guest/sev-guest.h
> 
> diff --git a/arch/x86/include/asm/sev.h b/arch/x86/include/asm/sev.h
> index bed95e1f4d52..0c0b11af9f89 100644
> --- a/arch/x86/include/asm/sev.h
> +++ b/arch/x86/include/asm/sev.h
> @@ -111,8 +111,6 @@ struct rmp_state {
>   struct snp_req_data {
>   	unsigned long req_gpa;
>   	unsigned long resp_gpa;
> -	unsigned long data_gpa;
> -	unsigned int data_npages;
>   };
>   
>   struct sev_guest_platform_data {
> @@ -154,6 +152,73 @@ struct snp_secrets_page_layout {
>   	u8 rsvd3[3840];
>   } __packed;
>   
> +#define MAX_AUTHTAG_LEN		32
> +#define AUTHTAG_LEN		16
> +#define AAD_LEN			48
> +#define MSG_HDR_VER		1
> +
> +/* See SNP spec SNP_GUEST_REQUEST section for the structure */
> +enum msg_type {
> +	SNP_MSG_TYPE_INVALID = 0,
> +	SNP_MSG_CPUID_REQ,
> +	SNP_MSG_CPUID_RSP,
> +	SNP_MSG_KEY_REQ,
> +	SNP_MSG_KEY_RSP,
> +	SNP_MSG_REPORT_REQ,
> +	SNP_MSG_REPORT_RSP,
> +	SNP_MSG_EXPORT_REQ,
> +	SNP_MSG_EXPORT_RSP,
> +	SNP_MSG_IMPORT_REQ,
> +	SNP_MSG_IMPORT_RSP,
> +	SNP_MSG_ABSORB_REQ,
> +	SNP_MSG_ABSORB_RSP,
> +	SNP_MSG_VMRK_REQ,
> +	SNP_MSG_VMRK_RSP,
> +
> +	SNP_MSG_TYPE_MAX
> +};
> +
> +enum aead_algo {
> +	SNP_AEAD_INVALID,
> +	SNP_AEAD_AES_256_GCM,
> +};
> +
> +struct snp_guest_msg_hdr {
> +	u8 authtag[MAX_AUTHTAG_LEN];
> +	u64 msg_seqno;
> +	u8 rsvd1[8];
> +	u8 algo;
> +	u8 hdr_version;
> +	u16 hdr_sz;
> +	u8 msg_type;
> +	u8 msg_version;
> +	u16 msg_sz;
> +	u32 rsvd2;
> +	u8 msg_vmpck;
> +	u8 rsvd3[35];
> +} __packed;
> +
> +struct snp_guest_msg {
> +	struct snp_guest_msg_hdr hdr;
> +	u8 payload[4000];

If the idea is to ensure that payload never goes beyond a page boundary 
(assuming page allocation/backing), it would be better to have:

	u8 payload[PAGE_SIZE - sizeof(struct snp_guest_msg_hdr)];

instead of hard-coding 4000 (I realize this is existing code). Although, 
since you probably want to ensure that you don't exceed the page 
allocation by testing against the size or page offset, you can just make 
this a variable length array:

	u8 payload[];

and ensure that you don't overrun.

Thanks,
Tom

> +} __packed;
> +

  reply	other threads:[~2024-02-27 22:20 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-15 11:31 [PATCH v8 00/16] Add Secure TSC support for SNP guests Nikunj A Dadhania
2024-02-15 11:31 ` [PATCH v8 01/16] virt: sev-guest: Use AES GCM crypto library Nikunj A Dadhania
2024-02-27 18:25   ` Borislav Petkov
2024-02-15 11:31 ` [PATCH v8 02/16] virt: sev-guest: Replace dev_dbg with pr_debug Nikunj A Dadhania
2024-02-27 18:28   ` Borislav Petkov
2024-02-15 11:31 ` [PATCH v8 03/16] virt: sev-guest: Add SNP guest request structure Nikunj A Dadhania
2024-02-27 22:20   ` Tom Lendacky [this message]
2024-02-29  9:12     ` Nikunj A. Dadhania
2024-02-28 11:50   ` Borislav Petkov
2024-02-29  9:26     ` Nikunj A. Dadhania
2024-02-15 11:31 ` [PATCH v8 04/16] virt: sev-guest: Add vmpck_id to snp_guest_dev struct Nikunj A Dadhania
2024-04-09 10:23   ` Borislav Petkov
2024-04-16  5:57     ` Nikunj A. Dadhania
2024-04-16  9:06       ` Borislav Petkov
2024-04-17  4:18         ` Nikunj A. Dadhania
2024-02-15 11:31 ` [PATCH v8 05/16] x86/sev: Cache the secrets page address Nikunj A Dadhania
2024-04-16 14:45   ` Borislav Petkov
2024-04-17  5:27     ` Nikunj A. Dadhania
2024-04-17  7:59       ` Nikunj A. Dadhania
2024-02-15 11:31 ` [PATCH v8 06/16] virt: sev-guest: Move SNP Guest command mutex Nikunj A Dadhania
2024-04-22 13:00   ` Borislav Petkov
2024-04-23  4:22     ` Nikunj A. Dadhania
2024-04-23 10:28       ` Borislav Petkov
2024-04-23 10:42         ` Nikunj A. Dadhania
2024-04-23 11:21           ` Borislav Petkov
2024-02-15 11:31 ` [PATCH v8 07/16] x86/sev: Move and reorganize sev guest request api Nikunj A Dadhania
2024-04-22 13:14   ` Borislav Petkov
2024-04-23  4:26     ` Nikunj A. Dadhania
2024-04-23 13:22       ` Borislav Petkov
2024-02-15 11:31 ` [PATCH v8 08/16] x86/mm: Add generic guest initialization hook Nikunj A Dadhania
2024-04-22 13:20   ` Borislav Petkov
2024-04-23  4:34     ` Nikunj A. Dadhania
2024-02-15 11:31 ` [PATCH v8 09/16] x86/cpufeatures: Add synthetic Secure TSC bit Nikunj A Dadhania
2024-04-22 13:25   ` Borislav Petkov
2024-04-23  4:40     ` Nikunj A. Dadhania
2024-04-23 13:29       ` Borislav Petkov
2024-02-15 11:31 ` [PATCH v8 10/16] x86/sev: Add Secure TSC support for SNP guests Nikunj A Dadhania
2024-04-22 13:50   ` Borislav Petkov
2024-04-23  4:44     ` Nikunj A. Dadhania
2024-02-15 11:31 ` [PATCH v8 11/16] x86/sev: Change TSC MSR behavior for Secure TSC enabled guests Nikunj A Dadhania
2024-02-15 11:31 ` [PATCH v8 12/16] x86/sev: Prevent RDTSC/RDTSCP interception " Nikunj A Dadhania
2024-02-15 11:31 ` [PATCH v8 13/16] x86/kvmclock: Skip kvmclock when Secure TSC is available Nikunj A Dadhania
2024-02-15 11:31 ` [PATCH v8 14/16] x86/sev: Mark Secure TSC as reliable Nikunj A Dadhania
2024-02-15 11:31 ` [PATCH v8 15/16] x86/cpu/amd: Do not print FW_BUG for Secure TSC Nikunj A Dadhania
2024-02-15 11:31 ` [PATCH v8 16/16] x86/sev: Enable Secure TSC for SNP guests Nikunj A Dadhania

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c03f15aa-6606-4aff-bcec-2e29e0b36d9f@amd.com \
    --to=thomas.lendacky@amd.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=nikunj@amd.com \
    --cc=pbonzini@redhat.com \
    --cc=pgonda@google.com \
    --cc=seanjc@google.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).