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

From: Wei Hu <weh_at_microsoft.com>
Date: Tue, 14 Mar 2023 04:22:30 UTC

> -----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.
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. 

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
> >> +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"
> >