Re: git: 15e7fa83ef3c - main - arm64: Hyper-V: Add vPCI and Mellanox driver modules into build

From: Jessica Clarke <jrtc27_at_freebsd.org>
Date: Tue, 14 Mar 2023 04:30:20 UTC
On 14 Mar 2023, at 04:22, Wei Hu <weh@microsoft.com> wrote:
> 
> 
> 
>> -----Original Message-----
>> From: Jessica Clarke <jrtc27@freebsd.org>
>> Sent: Tuesday, March 14, 2023 12:04 PM
>> To: Wei Hu <whu@FreeBSD.org>
>> Cc: src-committers@freebsd.org; dev-commits-src-all@freebsd.org; dev-
>> commits-src-main@freebsd.org
>> Subject: Re: git: 15e7fa83ef3c - main - arm64: Hyper-V: Add vPCI and
>> Mellanox driver modules into build
>> 
>> On 14 Mar 2023, at 03:57, Jessica Clarke <jrtc27@FreeBSD.org> wrote:
>>> 
>>> On 13 Mar 2023, at 03:00, Wei Hu <whu@FreeBSD.org> wrote:
>>>> 
>>>> The branch main has been updated by whu:
>>>> 
>>>> URL:
>>>> 
>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcgi
>>>> 
>> t.freebsd.org%2Fsrc%2Fcommit%2F%3Fid%3D15e7fa83ef3cd909e1d1b3b2ca
>> da8d
>>>> 
>> 9073f2e22e&data=05%7C01%7Cweh%40microsoft.com%7Ce49561fcb0054db
>> 78cfc0
>>>> 
>> 8db244136f1%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6381436
>> 34775
>>>> 
>> 142011%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2
>> luMzIiLC
>>>> 
>> JBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Ne98uGxwYg
>> CfWaRPct
>>>> 8KCG%2FBEcwSf0HmjmcuW7Rx0FU%3D&reserved=0
>>>> 
>>>> commit 15e7fa83ef3cd909e1d1b3b2cada8d9073f2e22e
>>>> Author:     Wei Hu <whu@FreeBSD.org>
>>>> AuthorDate: 2023-03-13 02:55:04 +0000
>>>> Commit:     Wei Hu <whu@FreeBSD.org>
>>>> CommitDate: 2023-03-13 02:55:04 +0000
>>>> 
>>>>  arm64: Hyper-V: Add vPCI and Mellanox driver modules into build
>>> 
>>> What does Mellanox have to do with Hyper-V? I doubt it's being emulated.
>> 
>> I guess because Azure Accelerated Networking has Mellanox hardware. In
>> which case it doesn't belong in std.hyperv, it belongs in std.azure, as
>> std.hyperv is for things needed for Hyper-V, not platforms that happen to
>> use Hyper-V.
> 
> Hyper-V supports SRIOV devices. For now Mellanox NICs is the only NIC type supported.

So? Hyper-V still isn’t giving you a Mellanox NIC, you have to go buy
one or use a platform (Azure) that has one; Azure is the justification,
not Hyper-V.

> Mellanox drivers were not included in the ARM64 build. We have tested it on Hyper-V 
> during the ARM64 for Hyper-V  enablement effort, with Hyper-V VPCI driver.  We have
> not tested it on the other ARM64 platforms. It should work not only in Azure,
> but also in on-prem ARM64 Hyper-V hosts. 

Well it’s in GENERIC now given that includes std.hyperv...

> It's better to move Mellanox drivers to more general build location once they are tested
> on more ARM64 platforms.
> 
> Wei
> 
>> 
>> Jess
>> 
>>>>  These changes in conf and std.hyperv files got missed in previous commit.
>>>>  Reviewed by:    whu
>>>>  Tested by:      whu
>>>>  Obtained from:  Souradeep Chakrabarti <schakrabarti@microsoft.com>
>>>>  Sponsored by:   Microsoft
>>>>  Differential Revision:
>>>> 
>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Frev
>>>> 
>> iews.freebsd.org%2FD38529&data=05%7C01%7Cweh%40microsoft.com%7C
>> e49561
>>>> 
>> fcb0054db78cfc08db244136f1%7C72f988bf86f141af91ab2d7cd011db47%7C1%
>> 7C0
>>>> %7C638143634775142011%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4w
>> LjAwMDAiLCJ
>>>> 
>> QIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdat
>> a=Yu%
>>>> 2BY%2FyEVCjC6dj8UKY6pYeVy%2BAsgxar5DBC9XQlexYo%3D&reserved=0
>>>> ---
>>>> sys/arm64/conf/std.hyperv | 12 +++++++++++-
>>>> sys/conf/files.arm64      |  1 +
>>>> 2 files changed, 12 insertions(+), 1 deletion(-)
>>>> 
>>>> diff --git a/sys/arm64/conf/std.hyperv b/sys/arm64/conf/std.hyperv
>>>> index f87082f15c96..b742c75da131 100644
>>>> --- a/sys/arm64/conf/std.hyperv
>>>> +++ b/sys/arm64/conf/std.hyperv
>>>> @@ -3,4 +3,14 @@
>>>> #
>>>> 
>>>> #hyper-v support
>>>> -device      hyperv
>>>> +device		hyperv
>>>> +
>>>> +options 	COMPAT_LINUXKPI
>>>> +device		xz
>>>> +
>>>> +device		mlx5
>>>> +device		mlxfw
>>>> +device		mlx5en
>>>> +options 	RATELIMIT

As pointed out on IRC, no other kernel config, aside from LINT ones,
enables this. Therefore this seems pretty dubious to add; why does
arm64 need it whilst amd64, which does include Mellanox drivers in its
GENERIC, doesn’t need it?

Jess

>>>> +options 	KERN_TLS
>>>> +device		firmware
>>>> diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64 index
>>>> 684cb8cb23ba..22dd267b2b42 100644
>>>> --- a/sys/conf/files.arm64
>>>> +++ b/sys/conf/files.arm64
>>>> @@ -253,6 +253,7 @@ dev/hyperv/utilities/hv_kvp.c
>> 	optional hyperv acpi
>>>> dev/hyperv/netvsc/hn_nvs.c			optional hyperv acpi
>>>> dev/hyperv/netvsc/hn_rndis.c			optional hyperv acpi
>>>> dev/hyperv/netvsc/if_hn.c			optional hyperv acpi
>>>> +dev/hyperv/pcib/vmbus_pcib.c			optional hyperv pci
>> acpi
>>>> 
>>>> dev/ice/if_ice_iflib.c				optional ice pci \
>>>> 	compile-with "${NORMAL_C} -I$S/dev/ice"
>>> 
>