From: Francesco Lavra <francescolavra.fl@gmail.com>
To: aik@amd.com
Cc: Jonathan.Cameron@huawei.com, aneesh.kumar@kernel.org,
ashish.kalra@amd.com, baolu.lu@linux.intel.com,
bhelgaas@google.com, dan.j.williams@intel.com,
dionnaglaze@google.com, hch@lst.de, iommu@lists.linux.dev,
jgg@ziepe.ca, joao.m.martins@oracle.com, joro@8bytes.org,
kevin.tian@intel.com, kvm@vger.kernel.org,
linux-arch@vger.kernel.org, linux-coco@lists.linux.dev,
linux-crypto@vger.kernel.org, linux-pci@vger.kernel.org,
lukas@wunner.de, michael.roth@amd.com, nicolinc@nvidia.com,
nikunj@amd.com, pbonzini@redhat.com, robin.murphy@arm.com,
seanjc@google.com, steven.sistare@oracle.com,
suravee.suthikulpanit@amd.com, suzuki.poulose@arm.com,
thomas.lendacky@amd.com, vasant.hegde@amd.com, x86@kernel.org,
yi.l.liu@intel.com, yilun.xu@linux.intel.com, zhiw@nvidia.com
Subject: Re: [RFC PATCH v2 18/22] coco/sev-guest: Implement the guest support for SEV TIO
Date: Mon, 07 Apr 2025 13:05:10 +0200 [thread overview]
Message-ID: <dca6b4a3ec0c19588221205baeb55d1a424e9af6.camel@gmail.com> (raw)
In-Reply-To: <20250218111017.491719-19-aik@amd.com>
On 2025-02-18 at 11:10, Alexey Kardashevskiy wrote:
>
> +static int handle_tio_guest_request(struct snp_guest_dev *snp_dev,
> u8 type,
> + void *req_buf, size_t req_sz,
> void *resp_buf, u32 resp_sz,
> + void *pt, u64 *npages, u64 *bdfn,
> u64 *param, u64 *fw_err)
> +{
> + struct snp_msg_desc *mdesc = snp_dev->msg_desc;
> + struct snp_guest_req req = {
> + .msg_version = TIO_MESSAGE_VERSION,
> + };
> + u64 exitinfo2 = 0;
> + int ret;
> +
> + req.msg_type = type;
> + req.vmpck_id = mdesc->vmpck_id;
> + req.req_buf = req_buf;
> + req.req_sz = req_sz;
> + req.resp_buf = resp_buf;
> + req.resp_sz = resp_sz;
> + req.exit_code = SVM_VMGEXIT_SEV_TIO_GUEST_REQUEST;
> +
> + req.input.guest_rid = 0;
> + req.input.param = 0;
> +
> + if (pt && npages) {
> + req.data = pt;
> + req.input.data_npages = *npages;
> + }
> + if (bdfn)
> + req.input.guest_rid = *bdfn;
> + if (param)
> + req.input.param = *param;
> +
> + ret = snp_send_guest_request(mdesc, &req, &exitinfo2);
> +
> + if (param)
> + *param = req.input.param;
> +
> + *fw_err = exitinfo2;
> +
> + return ret;
The logic to update *npages is missing.
>
> +}
> +
> +static int guest_request_tio_data(struct snp_guest_dev *snp_dev, u8
> type,
> + void *req_buf, size_t req_sz,
> void *resp_buf, u32 resp_sz,
> + u64 bdfn, enum tsm_tdisp_state
> *state,
> + struct tsm_blob **certs, struct
> tsm_blob **meas,
> + struct tsm_blob **report, u64
> *fw_err)
> +{
> + u64 npages = SZ_32K >> PAGE_SHIFT, c1, param = 0;
> + struct tio_blob_table_entry *pt;
> + int rc;
> +
> + pt = snp_alloc_shared_pages(npages << PAGE_SHIFT);
> + if (!pt)
> + return -ENOMEM;
> +
> + c1 = npages;
> + rc = handle_tio_guest_request(snp_dev, type, req_buf,
> req_sz, resp_buf, resp_sz,
> + pt, &c1, &bdfn, state ? ¶m
> : NULL, fw_err);
> +
> + if (c1 > SZ_32K) {
c1 is supposed to be a number of pages, not a number of bytes.
> +static int tio_tdi_status(struct tsm_tdi *tdi, struct snp_guest_dev
> *snp_dev,
> + struct tsm_tdi_status *ts)
> +{
> + struct snp_msg_desc *mdesc = snp_dev->msg_desc;
> + size_t resp_len = sizeof(struct tio_msg_tdi_info_rsp) +
> mdesc->ctx->authsize;
> + struct tio_msg_tdi_info_rsp *rsp = kzalloc(resp_len,
> GFP_KERNEL);
> + struct tio_msg_tdi_info_req req = {
> + .guest_device_id = pci_dev_id(tdi_to_pci_dev(tdi)),
> + };
> + u64 fw_err = 0;
> + int rc;
> + enum tsm_tdisp_state state = 0;
> +
> + dev_notice(&tdi->dev, "TDI info");
> + if (!rsp)
> + return -ENOMEM;
> +
> + rc = guest_request_tio_data(snp_dev, TIO_MSG_TDI_INFO_REQ,
> &req,
> + sizeof(req), rsp, resp_len,
> +
> pci_dev_id(tdi_to_pci_dev(tdi)), &state,
> + &tdi->tdev->certs, &tdi->tdev-
> >meas,
> + &tdi->report, &fw_err);
> + if (rc)
> + goto free_exit;
> +
> + ts->meas_digest_valid = rsp->meas_digest_valid;
> + ts->meas_digest_fresh = rsp->meas_digest_fresh;
> + ts->no_fw_update = rsp->no_fw_update;
> + ts->cache_line_size = rsp->cache_line_size == 0 ? 64 : 128;
> + ts->lock_msix = rsp->lock_msix;
> + ts->bind_p2p = rsp->bind_p2p;
> + ts->all_request_redirect = rsp->all_request_redirect;
> +#define __ALGO(x, n, y) \
> + ((((x) & (0xFFUL << (n))) == TIO_SPDM_ALGOS_##y) ? \
> + (1ULL << TSM_SPDM_ALGOS_##y) : 0)
> + ts->spdm_algos =
> + __ALGO(rsp->spdm_algos, 0, DHE_SECP256R1) |
> + __ALGO(rsp->spdm_algos, 0, DHE_SECP384R1) |
> + __ALGO(rsp->spdm_algos, 8, AEAD_AES_128_GCM) |
> + __ALGO(rsp->spdm_algos, 8, AEAD_AES_256_GCM) |
> + __ALGO(rsp->spdm_algos, 16,
> ASYM_TPM_ALG_RSASSA_3072) |
> + __ALGO(rsp->spdm_algos, 16,
> ASYM_TPM_ALG_ECDSA_ECC_NIST_P256) |
> + __ALGO(rsp->spdm_algos, 16,
> ASYM_TPM_ALG_ECDSA_ECC_NIST_P384) |
> + __ALGO(rsp->spdm_algos, 24, HASH_TPM_ALG_SHA_256) |
> + __ALGO(rsp->spdm_algos, 24, HASH_TPM_ALG_SHA_384) |
> + __ALGO(rsp->spdm_algos, 32,
> KEY_SCHED_SPDM_KEY_SCHEDULE);
> +#undef __ALGO
> + memcpy(ts->certs_digest, rsp->certs_digest, sizeof(ts-
> >certs_digest));
> + memcpy(ts->meas_digest, rsp->meas_digest, sizeof(ts-
> >meas_digest));
> + memcpy(ts->interface_report_digest, rsp-
> >interface_report_digest,
> + sizeof(ts->interface_report_digest));
> + ts->intf_report_counter = rsp->tdi_report_count;
> +
> + ts->valid = true;
> + ts->state = state;
> + /* The response buffer contains the sensitive data,
> explicitly clear it. */
> +free_exit:
> + memzero_explicit(&rsp, sizeof(resp_len));
The first argument should be rsp, not &rsp. This issue is also present
in the other memzero_explicit() calls in this patch.
> +static int sev_guest_tdi_validate(struct tsm_tdi *tdi, unsigned int
> featuremask,
> + bool invalidate, void
> *private_data)
> +{
> + struct snp_guest_dev *snp_dev = private_data;
> + struct tsm_tdi_status ts = { 0 };
> + int ret;
> +
> + if (!tdi->report) {
> + ret = tio_tdi_status(tdi, snp_dev, &ts);
> +
> + if (ret || !tdi->report) {
> + dev_err(&tdi->dev, "No report available,
> ret=%d", ret);
> + if (!ret && tdi->report)
This cannot happen, I think you meant (!ret && !tdi->report)
>
next prev parent reply other threads:[~2025-04-07 11:05 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-18 11:09 [RFC PATCH v2 00/22] TSM: Secure VFIO, TDISP, SEV TIO Alexey Kardashevskiy
2025-02-18 11:09 ` [RFC PATCH v2 01/22] pci/doe: Define protocol types and make those public Alexey Kardashevskiy
2025-04-15 20:15 ` Bjorn Helgaas
2025-02-18 11:09 ` [RFC PATCH v2 02/22] PCI/IDE: Fixes to make it work on AMD SNP-SEV Alexey Kardashevskiy
2025-02-18 11:09 ` [RFC PATCH v2 03/22] PCI/IDE: Init IDs on all IDE streams beforehand Alexey Kardashevskiy
2025-02-18 11:09 ` [RFC PATCH v2 04/22] iommu/amd: Report SEV-TIO support Alexey Kardashevskiy
2025-02-18 11:09 ` [RFC PATCH v2 05/22] crypto: ccp: Enable SEV-TIO feature in the PSP when supported Alexey Kardashevskiy
2025-03-22 11:50 ` Francesco Lavra
2025-03-26 4:26 ` Alexey Kardashevskiy
2025-02-18 11:09 ` [RFC PATCH v2 06/22] KVM: X86: Define tsm_get_vmid Alexey Kardashevskiy
2025-03-13 1:51 ` Dan Williams
2025-03-13 4:31 ` Alexey Kardashevskiy
2025-03-13 19:09 ` Dan Williams
2025-03-14 3:28 ` Alexey Kardashevskiy
2025-04-24 3:37 ` Alexey Kardashevskiy
2025-02-18 11:09 ` [RFC PATCH v2 07/22] coco/tsm: Add tsm and tsm-host modules Alexey Kardashevskiy
2025-03-14 1:14 ` Dan Williams
2025-05-14 18:39 ` Zhi Wang
2025-05-29 5:30 ` Alexey Kardashevskiy
2025-02-18 11:09 ` [RFC PATCH v2 08/22] pci/tsm: Add PCI driver for TSM Alexey Kardashevskiy
2025-04-15 20:25 ` Bjorn Helgaas
2025-02-18 11:09 ` [RFC PATCH v2 09/22] crypto/ccp: Implement SEV TIO firmware interface Alexey Kardashevskiy
2025-03-23 11:35 ` Francesco Lavra
2025-02-18 11:09 ` [RFC PATCH v2 10/22] KVM: SVM: Add uAPI to change RMP for MMIO Alexey Kardashevskiy
2025-03-15 0:08 ` Dan Williams
2025-03-27 5:00 ` Alexey Kardashevskiy
2025-02-18 11:09 ` [RFC PATCH v2 11/22] KVM: SEV: Add TIO VMGEXIT Alexey Kardashevskiy
2025-02-18 11:09 ` [RFC PATCH v2 12/22] iommufd: Allow mapping from guest_memfd Alexey Kardashevskiy
2025-02-18 14:16 ` Jason Gunthorpe
2025-02-18 23:35 ` Alexey Kardashevskiy
2025-02-18 23:51 ` Jason Gunthorpe
2025-02-19 0:43 ` Alexey Kardashevskiy
2025-02-19 13:35 ` Jason Gunthorpe
2025-02-19 20:23 ` Michael Roth
2025-02-19 20:37 ` Jason Gunthorpe
2025-02-19 21:30 ` Michael Roth
2025-02-20 0:57 ` Jason Gunthorpe
2025-03-13 4:51 ` Alexey Kardashevskiy
2025-03-19 17:40 ` Jason Gunthorpe
2025-02-20 2:29 ` Alexey Kardashevskiy
2025-02-18 11:10 ` [RFC PATCH v2 13/22] iommufd: amd-iommu: Add vdevice support Alexey Kardashevskiy
2025-04-01 16:11 ` Jason Gunthorpe
2025-04-10 6:39 ` Alexey Kardashevskiy
2025-04-10 8:43 ` Tian, Kevin
2025-04-10 13:05 ` Jason Gunthorpe
2025-04-14 4:17 ` Alexey Kardashevskiy
2025-02-18 11:10 ` [RFC PATCH v2 14/22] iommufd: Add TIO calls Alexey Kardashevskiy
2025-02-25 9:00 ` Xu Yilun
2025-02-26 0:12 ` Alexey Kardashevskiy
2025-02-26 10:49 ` Xu Yilun
2025-02-26 13:12 ` Jason Gunthorpe
2025-02-27 0:33 ` Alexey Kardashevskiy
2025-03-01 0:32 ` Jason Gunthorpe
2025-03-05 3:09 ` Alexey Kardashevskiy
2025-03-05 19:18 ` Jason Gunthorpe
2025-02-27 3:59 ` Xu Yilun
2025-03-01 0:37 ` Jason Gunthorpe
2025-03-03 5:32 ` Xu Yilun
2025-03-05 19:28 ` Jason Gunthorpe
2025-03-06 6:47 ` Xu Yilun
2025-03-06 18:26 ` Jason Gunthorpe
2025-03-07 6:49 ` Xu Yilun
2025-03-07 2:19 ` Alexey Kardashevskiy
2025-03-07 15:17 ` Jason Gunthorpe
2025-03-12 10:41 ` Suzuki K Poulose
2025-03-12 1:11 ` Xu Yilun
2025-02-26 13:08 ` Jason Gunthorpe
2025-03-15 1:11 ` Dan Williams
2025-03-17 2:32 ` Alexey Kardashevskiy
2025-04-01 15:53 ` Jason Gunthorpe
2025-03-13 11:01 ` Xu Yilun
2025-03-14 2:49 ` Alexey Kardashevskiy
2025-03-28 5:27 ` Aneesh Kumar K.V
2025-04-01 16:03 ` Jason Gunthorpe
2025-04-07 11:40 ` Aneesh Kumar K.V
2025-04-07 16:40 ` Jason Gunthorpe
2025-04-01 16:12 ` Jason Gunthorpe
2025-04-03 8:39 ` Alexey Kardashevskiy
2025-02-18 11:10 ` [RFC PATCH v2 15/22] KVM: X86: Handle private MMIO as shared Alexey Kardashevskiy
2025-05-15 8:18 ` Zhi Wang
2025-05-29 5:30 ` Alexey Kardashevskiy
2025-02-18 11:10 ` [RFC PATCH v2 16/22] coco/tsm: Add tsm-guest module Alexey Kardashevskiy
2025-04-05 17:15 ` Francesco Lavra
2025-02-18 11:10 ` [RFC PATCH v2 17/22] resource: Mark encrypted MMIO resource on validation Alexey Kardashevskiy
2025-04-05 18:19 ` Francesco Lavra
2025-02-18 11:10 ` [RFC PATCH v2 18/22] coco/sev-guest: Implement the guest support for SEV TIO Alexey Kardashevskiy
2025-04-07 11:05 ` Francesco Lavra [this message]
2025-02-18 11:10 ` [RFC PATCH v2 19/22] RFC: pci: Add BUS_NOTIFY_PCI_BUS_MASTER event Alexey Kardashevskiy
2025-04-15 20:26 ` Bjorn Helgaas
2025-02-18 11:10 ` [RFC PATCH v2 20/22] sev-guest: Stop changing encrypted page state for TDISP devices Alexey Kardashevskiy
2025-02-27 16:01 ` Borislav Petkov
2025-02-18 11:10 ` [RFC PATCH v2 21/22] pci: Allow encrypted MMIO mapping via sysfs Alexey Kardashevskiy
2025-04-15 20:28 ` Bjorn Helgaas
2025-02-18 11:10 ` [RFC PATCH v2 22/22] pci: Define pci_iomap_range_encrypted Alexey Kardashevskiy
2025-04-15 20:30 ` Bjorn Helgaas
2025-02-27 15:48 ` [RFC PATCH v2 00/22] TSM: Secure VFIO, TDISP, SEV TIO Borislav Petkov
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=dca6b4a3ec0c19588221205baeb55d1a424e9af6.camel@gmail.com \
--to=francescolavra.fl@gmail.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=aik@amd.com \
--cc=aneesh.kumar@kernel.org \
--cc=ashish.kalra@amd.com \
--cc=baolu.lu@linux.intel.com \
--cc=bhelgaas@google.com \
--cc=dan.j.williams@intel.com \
--cc=dionnaglaze@google.com \
--cc=hch@lst.de \
--cc=iommu@lists.linux.dev \
--cc=jgg@ziepe.ca \
--cc=joao.m.martins@oracle.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=michael.roth@amd.com \
--cc=nicolinc@nvidia.com \
--cc=nikunj@amd.com \
--cc=pbonzini@redhat.com \
--cc=robin.murphy@arm.com \
--cc=seanjc@google.com \
--cc=steven.sistare@oracle.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=suzuki.poulose@arm.com \
--cc=thomas.lendacky@amd.com \
--cc=vasant.hegde@amd.com \
--cc=x86@kernel.org \
--cc=yi.l.liu@intel.com \
--cc=yilun.xu@linux.intel.com \
--cc=zhiw@nvidia.com \
/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).