From: Greg KH <gregkh@linuxfoundation.org>
To: "Paraschiv, Andra-Irina" <andraprs@amazon.com>
Cc: linux-kernel@vger.kernel.org,
Anthony Liguori <aliguori@amazon.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Colm MacCarthaigh <colmmacc@amazon.com>,
David Duncan <davdunc@amazon.com>,
Bjoern Doebel <doebel@amazon.de>,
David Woodhouse <dwmw@amazon.co.uk>,
Frank van der Linden <fllinden@amazon.com>,
Alexander Graf <graf@amazon.de>, Karen Noel <knoel@redhat.com>,
Martin Pohlack <mpohlack@amazon.de>, Matt Wilson <msw@amazon.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Balbir Singh <sblbir@amazon.com>,
Stefano Garzarella <sgarzare@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Stewart Smith <trawets@amazon.com>,
Uwe Dannowski <uwed@amazon.de>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
kvm@vger.kernel.org, ne-devel-upstream@amazon.com,
Alexander Graf <graf@amazon.com>
Subject: Re: [PATCH v5 01/18] nitro_enclaves: Add ioctl interface definition
Date: Thu, 23 Jul 2020 12:54:09 +0200 [thread overview]
Message-ID: <20200723105409.GC1949236@kroah.com> (raw)
In-Reply-To: <b952de82-94de-fc14-74d3-f13859fe19f0@amazon.com>
On Thu, Jul 23, 2020 at 12:23:56PM +0300, Paraschiv, Andra-Irina wrote:
>
>
> On 22/07/2020 12:57, Greg KH wrote:
> > On Wed, Jul 22, 2020 at 11:27:29AM +0300, Paraschiv, Andra-Irina wrote:
> > > > > +#ifndef _UAPI_LINUX_NITRO_ENCLAVES_H_
> > > > > +#define _UAPI_LINUX_NITRO_ENCLAVES_H_
> > > > > +
> > > > > +#include <linux/types.h>
> > > > > +
> > > > > +/* Nitro Enclaves (NE) Kernel Driver Interface */
> > > > > +
> > > > > +#define NE_API_VERSION (1)
> > > > Why do you need this version? It shouldn't be needed, right?
> > > The version is used as a way for the user space tooling to sync on the
> > > features set provided by the driver e.g. in case an older version of the
> > > driver is available on the system and the user space tooling expects a set
> > > of features that is not included in that driver version.
> > That is guaranteed to get out of sync instantly with different distro
> > kernels backporting random things, combined with stable kernel patch
> > updates and the like.
> >
> > Just use the normal api interfaces instead, don't try to "version"
> > anything, it will not work, trust us :)
> >
> > If an ioctl returns -ENOTTY then hey, it's not present and your
> > userspace code can handle it that way.
>
> Correct, there could be a variety of kernel versions and user space tooling
> either in the original form, customized or written from scratch. And ENOTTY
> signals an ioctl not available or e.g. EINVAL (or custom error) if the
> parameter field value is not valid within a certain version. We have these
> in place, that's good. :)
>
> However, I was thinking, for example, of an ioctl flow usage where a certain
> order needs to be followed e.g. create a VM, add resources to a VM, start a
> VM.
>
> Let's say, for an use case wrt new features, ioctl A (create a VM) succeeds,
> ioctl B (add memory to the VM) succeeds, ioctl C (add CPU to the VM)
> succeeds and ioctl D (add any other type of resource before starting the VM)
> fails because it is not supported.
>
> Would not need to call ioctl A to C and go through their underneath logic to
> realize ioctl D support is not there and rollback all the changes done till
> then within ioctl A to C logic. Of course, there could be ioctl A followed
> by ioctl D, and would need to rollback ioctl A changes, but I shared a more
> lengthy call chain that can be an option as well.
I think you are overthinking this.
If your interface is this complex, you have much larger issues as you
ALWAYS have to be able to handle error conditions properly, even if the
API is "supported".
Perhaps your API is showing to be too complex?
Also, where is the userspace code for all of this? Did I miss a link to
it in the patches somewhere?
good luck!
greg k-h
next prev parent reply other threads:[~2020-07-23 10:54 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-15 19:45 [PATCH v5 00/18] Add support for Nitro Enclaves Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 01/18] nitro_enclaves: Add ioctl interface definition Andra Paraschiv
2020-07-16 8:30 ` Stefan Hajnoczi
2020-07-16 9:30 ` Paraschiv, Andra-Irina
2020-07-21 12:12 ` Greg KH
2020-07-22 8:27 ` Paraschiv, Andra-Irina
2020-07-22 9:57 ` Greg KH
2020-07-23 9:23 ` Paraschiv, Andra-Irina
2020-07-23 10:54 ` Greg KH [this message]
2020-07-23 18:21 ` Paraschiv, Andra-Irina
2020-07-23 23:04 ` Alexander Graf
2020-07-24 9:06 ` Paraschiv, Andra-Irina
2020-07-15 19:45 ` [PATCH v5 02/18] nitro_enclaves: Define the PCI device interface Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 03/18] nitro_enclaves: Define enclave info for internal bookkeeping Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 04/18] nitro_enclaves: Init PCI device driver Andra Paraschiv
2020-07-20 14:24 ` Alexander Graf
2020-07-21 6:20 ` Paraschiv, Andra-Irina
2020-07-15 19:45 ` [PATCH v5 05/18] nitro_enclaves: Handle PCI device command requests Andra Paraschiv
2020-07-21 10:17 ` Alexander Graf
2020-07-22 8:14 ` Paraschiv, Andra-Irina
2020-07-15 19:45 ` [PATCH v5 06/18] nitro_enclaves: Handle out-of-band PCI device events Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 07/18] nitro_enclaves: Init misc device providing the ioctl interface Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 08/18] nitro_enclaves: Add logic for creating an enclave VM Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 09/18] nitro_enclaves: Add logic for setting an enclave vCPU Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 10/18] nitro_enclaves: Add logic for getting the enclave image load info Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 11/18] nitro_enclaves: Add logic for setting an enclave memory region Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 12/18] nitro_enclaves: Add logic for starting an enclave Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 13/18] nitro_enclaves: Add logic for terminating " Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 14/18] nitro_enclaves: Add Kconfig for the Nitro Enclaves driver Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 15/18] nitro_enclaves: Add Makefile " Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 16/18] nitro_enclaves: Add sample for ioctl interface usage Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 17/18] nitro_enclaves: Add overview documentation Andra Paraschiv
2020-07-15 19:45 ` [PATCH v5 18/18] MAINTAINERS: Add entry for the Nitro Enclaves driver Andra Paraschiv
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=20200723105409.GC1949236@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=aliguori@amazon.com \
--cc=andraprs@amazon.com \
--cc=benh@kernel.crashing.org \
--cc=colmmacc@amazon.com \
--cc=davdunc@amazon.com \
--cc=doebel@amazon.de \
--cc=dwmw@amazon.co.uk \
--cc=fllinden@amazon.com \
--cc=graf@amazon.com \
--cc=graf@amazon.de \
--cc=knoel@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mpohlack@amazon.de \
--cc=msw@amazon.com \
--cc=ne-devel-upstream@amazon.com \
--cc=pbonzini@redhat.com \
--cc=sblbir@amazon.com \
--cc=sgarzare@redhat.com \
--cc=stefanha@redhat.com \
--cc=trawets@amazon.com \
--cc=uwed@amazon.de \
--cc=vkuznets@redhat.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).