kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: James Bottomley <jejb@linux.ibm.com>
To: "Jörg Rödel" <jroedel@suse.de>
Cc: amd-sev-snp@lists.suse.com, linux-coco@lists.linux.dev,
	kvm@vger.kernel.org
Subject: Re: [ANNOUNCEMENT] COCONUT Secure VM Service Module for SEV-SNP
Date: Tue, 21 Mar 2023 16:05:35 -0400	[thread overview]
Message-ID: <7d615af4c6a9e5eeb0337d98c9e9ddca6d2cbdef.camel@linux.ibm.com> (raw)
In-Reply-To: <ZBnJ6ZCuQJTVMM8h@suse.de>

On Tue, 2023-03-21 at 16:14 +0100, Jörg Rödel wrote:
> On Tue, Mar 21, 2023 at 09:43:48AM -0400, James Bottomley wrote:
> > Could you describe these incompatible goals and explain why you
> > think they are incompatible (as in why you and AMD don't think you
> > can agree on it)?  That would help the rest of us understand where
> > the two SVSM implementations fit in our ongoing plans.
> 
> The goal of COCONUT is to have an SVSM which has isolation
> capabilities within itself. It already has percpu page-tables and in
> the end it will be able to run services (like the TPM) as separate
> processes in ring 3 using cooperative multitasking.
> 
> With the current linux-svsm code-base this is difficult to achieve
> due to its reliance on the x86-64 crate. For supporting a user-space
> like execution mode the crate has too many limitations, mainly in its
> page-table and IDT implementations.
> 
> The IDT code from that crate, which is also used in linux-svsm,
> relies on compiler-generated entry-code. This is not enough to
> support a ring-3 execution mode with syscalls and several (possibly
> nested) IST vectors. The next problem with the IDT code is that it
> doesn't allow modification of return register state.  This makes it
> impossible to implement exception fixups to guard RMPADJUST
> instructions and VMPL1 memory accesses in general.
> 
> When we looked at the crate, the page-table implementation supported
> basically a direct and an offset mapping, which will get us into
> problems when support for non-contiguous mappings or sharing parts of
> a page-table with another page-table is needed. So in the very
> beginning of the project I decided to go with my own page-table
> implementation.

OK, so this doesn't sound like a problem with the AMD svsm, it sounds
like a (solvable) issue with a particular crate in embedded rust.  I
have to say that embedded rust is so new, it's really hard to tell if
this is just because it was developed by someone who didn't think of
all the OS implications or because it's a fundamental issue within the
rust ecosystem.  Have you tried improving this crate? ... and also it's
a nuisance we came to with our insistence on using rust; it certainly
wouldn't have been an issue in C.  I suspect improving the crate would
help everyone (although I note the linux kernel isn't yet using this
crate either).

> Of course we could start changing linux-svsm to support the same
> goals, but I think the end result will not be very different from
> what COCONUT looks now.

That's entirely possible, so what are the chances of combining the
projects now so we don't get a split in community effort?

James


  parent reply	other threads:[~2023-03-21 20:06 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-21  9:29 [ANNOUNCEMENT] COCONUT Secure VM Service Module for SEV-SNP Jörg Rödel
2023-03-21 11:09 ` James Bottomley
2023-03-21 12:43   ` Jörg Rödel
2023-03-21 13:43     ` James Bottomley
2023-03-21 15:14       ` Jörg Rödel
2023-03-21 17:48         ` Dr. David Alan Gilbert
2023-03-21 18:50           ` Jörg Rödel
2023-03-21 20:05         ` James Bottomley [this message]
2023-03-22  1:29           ` Marc Orr
2023-03-22 17:57             ` Daniel P. Berrangé
2023-03-22  9:15           ` Jörg Rödel
2023-03-22 18:07             ` Daniel P. Berrangé
2023-03-22 18:24               ` Dionna Amalie Glaze
2023-03-21 15:06 ` Dr. David Alan Gilbert
2023-03-21 15:25   ` Jörg Rödel
2023-03-21 16:56     ` Dr. David Alan Gilbert
2023-03-21 19:03       ` Jörg Rödel
2023-03-21 19:53         ` Dr. David Alan Gilbert
2023-03-22  9:19           ` Jörg Rödel
2023-03-22  9:43             ` Alexander Graf
2023-03-22 10:34               ` Dr. David Alan Gilbert
2023-03-22 17:37                 ` Dionna Amalie Glaze
2023-03-22 17:47                   ` Dr. David Alan Gilbert
2023-03-22 21:53                     ` James Bottomley
2023-04-11 19:57 ` Tom Lendacky
2023-04-11 20:01   ` Dionna Amalie Glaze
2023-04-13 16:57   ` James Bottomley
2023-04-14  9:00     ` Jörg Rödel
2023-05-02 23:03 ` Tom Lendacky
2023-05-03 12:26   ` Jörg Rödel
2023-05-03 15:24     ` Dionna Amalie Glaze
2023-05-03 15:43       ` James Bottomley
2023-05-03 16:10       ` Daniel P. Berrangé
2023-05-03 16:51     ` Claudio Carvalho
2023-05-03 17:16       ` Alexander Graf
2023-05-05 15:34       ` Jörg Rödel
2023-05-05 15:47         ` Daniel P. Berrangé
2023-05-04 17:04     ` James Bottomley
2023-05-05 12:35       ` Christophe de Dinechin
2023-05-06 12:48         ` James Bottomley
2023-05-08  5:16           ` Alexander Graf
2023-05-05 15:02       ` Jörg Rödel

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=7d615af4c6a9e5eeb0337d98c9e9ddca6d2cbdef.camel@linux.ibm.com \
    --to=jejb@linux.ibm.com \
    --cc=amd-sev-snp@lists.suse.com \
    --cc=jroedel@suse.de \
    --cc=kvm@vger.kernel.org \
    --cc=linux-coco@lists.linux.dev \
    /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).