patches.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Nuno Das Neves <nunodasneves@linux.microsoft.com>
Cc: Wei Liu <wei.liu@kernel.org>,
	linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org,
	x86@kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-arch@vger.kernel.org, patches@lists.linux.dev,
	mikelley@microsoft.com, kys@microsoft.com,
	haiyangz@microsoft.com, decui@microsoft.com,
	apais@linux.microsoft.com, Tianyu.Lan@microsoft.com,
	ssengar@linux.microsoft.com, mukeshrathor@microsoft.com,
	stanislav.kinsburskiy@gmail.com, jinankjain@linux.microsoft.com,
	vkuznets@redhat.com, tglx@linutronix.de, mingo@redhat.com,
	bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com,
	will@kernel.org, catalin.marinas@arm.com
Subject: Re: [PATCH v2 13/15] uapi: hyperv: Add mshv driver headers hvhdk.h, hvhdk_mini.h, hvgdk.h, hvgdk_mini.h
Date: Wed, 11 Oct 2023 08:42:28 +0200	[thread overview]
Message-ID: <2023101133-blade-diary-11e4@gregkh> (raw)
In-Reply-To: <50f1721f-64fb-49ff-9740-0dac7cf832c8@linux.microsoft.com>

On Tue, Oct 10, 2023 at 03:49:48PM -0700, Nuno Das Neves wrote:
> On 8/25/2023 11:24 AM, Nuno Das Neves wrote:
> > On 8/19/2023 3:26 AM, Greg KH wrote:
> > > 
> > > My "strong" opinion is the one kernel development rule that we have,
> > > "you can not break userspace".  So, if you change these
> > > values/structures/whatever in the future, and userspace tools break,
> > > that's not ok and the changes have to be reverted.
> > > 
> > > If you can control both sides of the API here (with open tools that you
> > > can guarantee everyone will always update to), then yes, you can change
> > > the api in the future.
> > > 
> > 
> > This is true for us - we contribute and maintain support for this driver
> > in Cloud Hypervisor[1], an open source VMM.
> > 
> 
> Hi Greg,
> 
> Bringing up this discussion again so we can clear up any confusion on the
> uapi headers in this patch set.
> 
> The headers consist of the ioctls in mshv.h, and the hypervisor ABIs in
> the *hdk.h files. The ioctls depend on the hypervisor ABIs.
> 
> We will add (to the next version), an ioctl like KVM_GET_API_VERSION [1].
> This will return a version number for the ioctl interface that increments
> any time there is a breaking change. Userspace would be required to check
> this before calling any other ioctl, and it can exit gracefully if there
> is a mismatch.
> 
> That's how KVM evolved its userspace ABI. We want to use the same approach.

That's one way to do interfaces, but there are better ways as you know.
What do you expect to change that is going to require such heavy-handed
treatment of structures and ioctls?

And how are you going to handle backwards compatiblity?

Versioning things is almost always a pain, and should only be done as a
last resort as a sign of an api that is not well understood at creation
time.  Surely you have studied how other hypervisor interfaces work and
know what you need to do for yours by now, right?  This isn't the first
hypervisor api in Linux like KVM was when it was introduced a few
decades ago.  Why not learn from past mistakes and design patterns
instead of just blindly imitating old apis that perhaps should not be
imitated at all?

> I also wanted to reiterate that we are the only maintainers and users of
> the userspace code for this driver via Cloud Hypervisor [2].

For today, maybe, but you can never guarantee that in the future as you
well know.

> We generate rust bindings from these headers using bindgen [3].

What does rust have to do with anything here?  You can use m4 to parse
the headers for all we care :)

> Taking this into account, is the above a viable path for this patch set?

I have no idea, sorry, I don't see any patches here to review as the
original set is long-gone from my queue.

Just submit your fixed up patch series based on the previous review
comments and it will be reviewed again, just like all kernel patches
are.  Why is this set somehow more special than anything else?

Perhaps you all should take the time to do some kernel patch reviews of
other stuff sent to the mailing lists to get an idea of how this whole
process works, and to get better integrated into the kernel development
community, before dumping a huge patchset on us with lots of process
questions like this?  Why are you asking the community to do a lot of
work and hand-holding when you aren't helping others out as well?

good luck!

greg k-h

  reply	other threads:[~2023-10-11  6:42 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-17 22:01 [PATCH v2 00/15] Introduce /dev/mshv drivers Nuno Das Neves
2023-08-17 22:01 ` [PATCH v2 01/15] hyperv-tlfs: Change shared HV_REGISTER_* defines to HV_MSR_* Nuno Das Neves
2023-08-18 18:45   ` Wei Liu
2023-08-17 22:01 ` [PATCH v2 02/15] mshyperv: Introduce hv_get_hypervisor_version function Nuno Das Neves
2023-08-17 23:14   ` Dave Hansen
2023-08-17 23:43     ` Nuno Das Neves
2023-08-17 22:01 ` [PATCH v2 03/15] mshyperv: Introduce numa_node_to_proximity_domain_info Nuno Das Neves
2023-08-17 23:22   ` Dave Hansen
2023-08-18  0:17     ` Nuno Das Neves
2023-08-18  0:26       ` Dave Hansen
2023-08-17 22:01 ` [PATCH v2 04/15] asm-generic/mshyperv: Introduce hv_recommend_using_aeoi() Nuno Das Neves
2023-08-17 22:01 ` [PATCH v2 05/15] hyperv: Move hv_connection_id to hyperv-tlfs Nuno Das Neves
2023-08-18 23:22   ` Wei Liu
2023-08-17 22:01 ` [PATCH v2 06/15] hyperv-tlfs: Introduce hv_status_to_string and hv_status_to_errno Nuno Das Neves
2023-08-18 23:23   ` Wei Liu
2023-08-17 22:01 ` [PATCH v2 07/15] Drivers: hv: Move hv_call_deposit_pages and hv_call_create_vp to common code Nuno Das Neves
2023-08-17 22:01 ` [PATCH v2 08/15] Drivers: hv: Introduce per-cpu event ring tail Nuno Das Neves
2023-08-18 23:26   ` Wei Liu
2023-08-17 22:01 ` [PATCH v2 09/15] Drivers: hv: Introduce hv_output_arg_exists in hv_common.c Nuno Das Neves
2023-08-18 23:23   ` Wei Liu
2023-08-17 22:01 ` [PATCH v2 10/15] x86: hyperv: Add mshv_handler irq handler and setup function Nuno Das Neves
2023-08-29  7:47   ` Tianyu Lan
2023-08-17 22:01 ` [PATCH v2 11/15] Drivers: hv: export vmbus_isr, hv_context and hv_post_message Nuno Das Neves
2023-08-17 22:01 ` [PATCH v2 12/15] Documentation: Reserve ioctl number for mshv driver Nuno Das Neves
2023-08-18 23:24   ` Wei Liu
2023-08-17 22:01 ` [PATCH v2 13/15] uapi: hyperv: Add mshv driver headers hvhdk.h, hvhdk_mini.h, hvgdk.h, hvgdk_mini.h Nuno Das Neves
2023-08-17 23:01   ` Wei Liu
2023-08-19 10:26     ` Greg KH
2023-08-25 18:24       ` Nuno Das Neves
2023-10-10 22:49         ` Nuno Das Neves
2023-10-11  6:42           ` Greg KH [this message]
2023-10-12  1:56             ` Nuno Das Neves
2023-08-17 22:01 ` [PATCH v2 14/15] asm-generic: hyperv: Use mshv headers conditionally. Add asm-generic/hyperv-defs.h Nuno Das Neves
2023-08-18 23:30   ` Wei Liu
2023-08-17 22:01 ` [PATCH v2 15/15] Drivers: hv: Add modules to expose /dev/mshv to VMMs running on Hyper-V Nuno Das Neves
2023-08-18 13:08   ` Saurabh Singh Sengar
2023-08-18 18:59     ` Nuno Das Neves
2023-08-20  5:19       ` Saurabh Singh Sengar
2023-08-22 20:18         ` Nuno Das Neves
2023-08-23  7:40           ` Saurabh Singh Sengar
2023-08-25 18:26             ` Nuno Das Neves
2023-08-21 18:18   ` Saurabh Singh Sengar
2023-08-22 21:00     ` Nuno Das Neves
2023-08-24 18:31   ` Boqun Feng
2023-08-25 18:41     ` Nuno Das Neves
2023-08-25 20:15       ` Boqun Feng

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=2023101133-blade-diary-11e4@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=Tianyu.Lan@microsoft.com \
    --cc=apais@linux.microsoft.com \
    --cc=bp@alien8.de \
    --cc=catalin.marinas@arm.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=decui@microsoft.com \
    --cc=haiyangz@microsoft.com \
    --cc=hpa@zytor.com \
    --cc=jinankjain@linux.microsoft.com \
    --cc=kys@microsoft.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mikelley@microsoft.com \
    --cc=mingo@redhat.com \
    --cc=mukeshrathor@microsoft.com \
    --cc=nunodasneves@linux.microsoft.com \
    --cc=patches@lists.linux.dev \
    --cc=ssengar@linux.microsoft.com \
    --cc=stanislav.kinsburskiy@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=vkuznets@redhat.com \
    --cc=wei.liu@kernel.org \
    --cc=will@kernel.org \
    --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).