patches.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Nuno Das Neves <nunodasneves@linux.microsoft.com>
To: Greg KH <gregkh@linuxfoundation.org>, Dexuan Cui <decui@microsoft.com>
Cc: Wei Liu <wei.liu@kernel.org>,
	"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"x86@kernel.org" <x86@kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
	"patches@lists.linux.dev" <patches@lists.linux.dev>,
	"Michael Kelley (LINUX)" <mikelley@microsoft.com>,
	KY Srinivasan <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	"apais@linux.microsoft.com" <apais@linux.microsoft.com>,
	Tianyu Lan <Tianyu.Lan@microsoft.com>,
	"ssengar@linux.microsoft.com" <ssengar@linux.microsoft.com>,
	MUKESH RATHOR <mukeshrathor@microsoft.com>,
	"stanislav.kinsburskiy@gmail.com"
	<stanislav.kinsburskiy@gmail.com>,
	"jinankjain@linux.microsoft.com" <jinankjain@linux.microsoft.com>,
	vkuznets <vkuznets@redhat.com>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"bp@alien8.de" <bp@alien8.de>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"hpa@zytor.com" <hpa@zytor.com>,
	"will@kernel.org" <will@kernel.org>,
	"catalin.marinas@arm.com" <catalin.marinas@arm.com>
Subject: Re: [PATCH v4 13/15] uapi: hyperv: Add mshv driver headers defining hypervisor ABIs
Date: Wed, 4 Oct 2023 11:16:46 -0700	[thread overview]
Message-ID: <e960ffec-f367-4180-b857-4aceedb7cd89@linux.microsoft.com> (raw)
In-Reply-To: <2023100415-diving-clapper-a2a7@gregkh>

On 10/4/2023 10:50 AM, Greg KH wrote:
> On Wed, Oct 04, 2023 at 05:36:32PM +0000, Dexuan Cui wrote:
>>> From: Greg KH <gregkh@linuxfoundation.org>
>>> Sent: Tuesday, October 3, 2023 11:10 PM
>>> [...]
>>> On Tue, Oct 03, 2023 at 04:37:01PM -0700, Nuno Das Neves wrote:
>>>> On 9/30/2023 11:19 PM, Greg KH wrote:
>>>>> On Sat, Sep 30, 2023 at 10:01:58PM +0000, Wei Liu wrote:
>>>>>> On Sat, Sep 30, 2023 at 08:09:19AM +0200, Greg KH wrote:
>>>>>>> On Fri, Sep 29, 2023 at 11:01:39AM -0700, Nuno Das Neves wrote:
>>>>>>>> +/* Define connection identifier type. */
>>>>>>>> +union hv_connection_id {
>>>>>>>> +   __u32 asu32;
>>>>>>>> +   struct {
>>>>>>>> +           __u32 id:24;
>>>>>>>> +           __u32 reserved:8;
>>>>>>>> +   } __packed u;
>>
>> IMO the "__packed" is unnecessary.
>>
>>>>>>> bitfields will not work properly in uapi .h files, please never do that.
>>>>>>
>>>>>> Can you clarify a bit more why it wouldn't work? Endianess? Alignment?
>>>>>
>>>>> Yes to both.
>>>>>
>>>>> Did you all read the documentation for how to write a kernel api?  If
>>>>> not, please do so.  I think it mentions bitfields, but it not, it really
>>>>> should as of course, this will not work properly with different endian
>>>>> systems or many compilers.
>>>>
>>>> Yes, in
>>> https://docs.k/
>>> ernel.org%2Fdriver-
>>> api%2Fioctl.html&data=05%7C01%7Cdecui%40microsoft.com%7Ce404769e0f
>>> 85493f0aa108dbc4a08a27%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C
>>> 0%7C638319966071263290%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj
>>> AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%
>>> 7C%7C&sdata=RiLNA5DRviWBQK6XXhxC4m77raSDBb%2F0BB6BDpFPUJY%3D
>>> &reserved=0 it says that it is
>>>> "better to avoid" bitfields.
>>>>
>>>> Unfortunately bitfields are used in the definition of the hypervisor
>>>> ABI. We import these definitions directly from the hypervisor code.
>>>
>>> So why do you feel you have to use this specific format for your
>>> user/kernel api?  That is not what is going to the hypervisor.
>>
These *are* going to the hypervisor - we use these same definitions in
our driver for the kernel/hypervisor API. This is so we don't have to
maintain two separate definitions for user/kernel and kernel/hypervisor
APIs.

>> If it's hard to avoid bitfield here, maybe we can refer to the definition of
>> struct iphdr in include/uapi/linux/ip.h
> 
> It is not hard to avoid using bitfields, just use the proper definitions
> to make this portable for all compilers.  And ick, ip.h is not a good
> thing to follow :)
> 
Greg, there is nothing making us use bitfields. It just makes the work
of porting the hypervisor definitions to Linux easier - aided by the
fact that in practice, all the compilers in our stack produce the same
code for these.

If that stops being true, or we need to support some other scenario,
then I can see the value in changing it. Right now it just feels like
pointless work.

Just a reminder - we are the only consumers of this code right now; no
one else can meaningfully use this interface yet.

That all said, if you really insist on changing it, then please say so.
And please point to an example of how it should be done so there is no
confusion on the best path forward.

Thanks,
Nuno

> thanks,
> 
> greg k-h


  reply	other threads:[~2023-10-04 18:16 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-29 18:01 [PATCH v4 00/15] Introduce /dev/mshv drivers Nuno Das Neves
2023-09-29 18:01 ` [PATCH v4 01/15] hyperv-tlfs: Change shared HV_REGISTER_* defines to HV_MSR_* Nuno Das Neves
2023-09-29 18:01 ` [PATCH v4 02/15] mshyperv: Introduce hv_get_hypervisor_version function Nuno Das Neves
2023-09-29 18:01 ` [PATCH v4 03/15] mshyperv: Introduce numa_node_to_proximity_domain_info Nuno Das Neves
2023-09-29 18:01 ` [PATCH v4 04/15] asm-generic/mshyperv: Introduce hv_recommend_using_aeoi() Nuno Das Neves
2023-09-29 18:01 ` [PATCH v4 05/15] hyperv: Move hv_connection_id to hyperv-tlfs Nuno Das Neves
2023-09-29 18:01 ` [PATCH v4 06/15] hyperv-tlfs: Introduce hv_status_to_string and hv_status_to_errno Nuno Das Neves
2023-09-29 18:01 ` [PATCH v4 07/15] Drivers: hv: Move hv_call_deposit_pages and hv_call_create_vp to common code Nuno Das Neves
2023-10-03  2:51   ` kernel test robot
2023-09-29 18:01 ` [PATCH v4 08/15] Drivers: hv: Introduce per-cpu event ring tail Nuno Das Neves
2023-09-30 11:26   ` kernel test robot
2023-09-29 18:01 ` [PATCH v4 09/15] Drivers: hv: Introduce hv_output_arg_exists in hv_common.c Nuno Das Neves
2023-10-02 19:29   ` Alex Ionescu
2023-10-04 18:27     ` Nuno Das Neves
2023-10-06 18:13       ` Long Li
2023-09-29 18:01 ` [PATCH v4 10/15] x86: hyperv: Add mshv_handler irq handler and setup function Nuno Das Neves
2023-09-29 18:01 ` [PATCH v4 11/15] Drivers: hv: export vmbus_isr, hv_context and hv_post_message Nuno Das Neves
2023-09-29 18:01 ` [PATCH v4 12/15] Documentation: Reserve ioctl number for mshv driver Nuno Das Neves
2023-09-29 18:01 ` [PATCH v4 13/15] uapi: hyperv: Add mshv driver headers defining hypervisor ABIs Nuno Das Neves
2023-09-30  6:09   ` Greg KH
2023-09-30 22:01     ` Wei Liu
2023-10-01  6:19       ` Greg KH
2023-10-03 23:29         ` Wei Liu
2023-10-04  6:11           ` Greg KH
2023-10-04 18:14             ` Wei Liu
2023-10-05  3:59             ` Wei Liu
2023-10-03 23:37         ` Nuno Das Neves
2023-10-04  6:09           ` Greg KH
2023-10-04 17:36             ` Dexuan Cui
2023-10-04 17:50               ` Greg KH
2023-10-04 18:16                 ` Nuno Das Neves [this message]
2023-10-05  6:26                   ` Greg KH
2023-09-30 16:33   ` kernel test robot
2023-10-05 10:27   ` Greg KH
2023-09-29 18:01 ` [PATCH v4 14/15] asm-generic: hyperv: Use new Hyper-V headers conditionally Nuno Das Neves
2023-10-02 19:35   ` Alex Ionescu
2023-10-03  0:41     ` Nuno Das Neves
2023-10-05 19:52       ` Alex Ionescu
2023-10-11 23:32         ` Nuno Das Neves
2023-09-29 18:01 ` [PATCH v4 15/15] Drivers: hv: Add modules to expose /dev/mshv to VMMs running on Hyper-V Nuno Das Neves
2023-09-30  6:02   ` kernel test robot
2023-09-30  6:11   ` Greg KH
2023-09-30 18:11     ` Wei Liu
2023-09-30 18:31       ` Greg KH
2023-09-30 21:13         ` Wei Liu
2023-10-01  6:20           ` Greg KH
2023-10-03 23:35             ` Wei Liu
2023-11-06  4:03   ` kernel test robot
2023-11-06 11:51   ` kernel test robot

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=e960ffec-f367-4180-b857-4aceedb7cd89@linux.microsoft.com \
    --to=nunodasneves@linux.microsoft.com \
    --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=gregkh@linuxfoundation.org \
    --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=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).