RE: git: 9729f076e4d9 - main - arm64: Hyper-V: enablement for ARM64 in Hyper-V (Part 3, final)
Date: Fri, 28 Oct 2022 01:21:27 UTC
Thanks for testing it, Andrew.
@Souradeep Chakrabarti<mailto:schakrabarti@microsoft.com>, would you help check the hang and take care of
Andrew's comments?
Thanks,
Wei
> -----Original Message-----
> From: Andrew Turner <andrew@fubar.geek.nz>
> Sent: Thursday, October 27, 2022 10:56 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: 9729f076e4d9 - main - arm64: Hyper-V: enablement for
> ARM64 in Hyper-V (Part 3, final)
>
> I was planning on testing this as I now have appropriate hardware to run
> arm64 Hyper-V. I have left some comments below.
>
> I am seeing FreeBSD/arm64 hang at the following point under Hyper-V on a
> Microsoft Dev Kit 2023 box:
>
> vmbus0: decoding 3 range 0xe0000000-0xfed3ffff
> vmbus0: fb: fb_addr: 0xe0000000, size: 0x800000, actual size needed: 0xc0000
> vmbus0: allocated type 3 (0xe0000000-0xe07fffff) for rid 0 of vmbus0
> vmbus0: successfully reserved memory for framebuffer starting at
> 0xe0000000, size 0x800000
> vmbus0: irq 0x2, vector 0 end 0x2
> vmbus0: the irq 18
> vmbus0: smp_started = 0
>
> > On 27 Oct 2022, at 14:54, Wei Hu <whu@FreeBSD.org<mailto:whu@FreeBSD.org>> wrote:
> >
> > The branch main has been updated by whu:
> >
> > URL:
> >
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcgit
> > .freebsd.org%2Fsrc%2Fcommit%2F%3Fid%3D9729f076e4d93c5a37e78d427
> bfe0f1a
> >
> b99bbcc6&data=05%7C01%7Cweh%40microsoft.com%7C790d4f1a88b64
> 8383c71
> >
> 08dab82b6403%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638024
> 793789
> >
> 172734%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2
> luMzIiLCJ
> >
> BTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Iip7d3n
> WBdUrFSlW
> > g9vIj73RniwVHZAGpjSIeo417Iw%3D&reserved=0
> >
> > commit 9729f076e4d93c5a37e78d427bfe0f1ab99bbcc6
> > Author: Souradeep Chakrabarti <schakrabarti@microsoft.com<mailto:schakrabarti@microsoft.com>>
> > AuthorDate: 2022-10-27 13:46:08 +0000
> > Commit: Wei Hu <whu@FreeBSD.org<mailto:whu@FreeBSD.org>>
> > CommitDate: 2022-10-27 13:53:22 +0000
> >
> > arm64: Hyper-V: enablement for ARM64 in Hyper-V (Part 3, final)
> >
> > This is the last part for ARM64 Hyper-V enablement. This includes
> > commone files and make file changes to enable the ARM64 FreeBSD
> > guest on Hyper-V. With this patch, it should be able to build
> > the ARM64 image and install it on Hyper-V.
> >
> > Reviewed by: emaste, andrew, whu
> > Tested by: Souradeep Chakrabarti <schakrabarti@microsoft.com<mailto:schakrabarti@microsoft.com>>
> > Sponsored by: Microsoft
> > Differential Revision:
> >
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Frevi
> >
> ews.freebsd.org%2FD36744&data=05%7C01%7Cweh%40microsoft.com
> %7C790d
> >
> 4f1a88b648383c7108dab82b6403%7C72f988bf86f141af91ab2d7cd011db47%7C
> 1%7C
> >
> 0%7C638024793789172734%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj
> AwMDAiLCJ
> >
> QIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&
> ;sdata=
> >
> UhrPhMBYStaRvwtp%2FD5PI%2B6d34MVJ3SFK9ez%2FRNA%2BZ4%3D&
> reserved=0
> > ---
> > share/mk/src.opts.mk | 3 +-
> > sys/arm64/conf/GENERIC | 1 +
> > sys/arm64/conf/std.dev | 3 +
> > sys/arm64/conf/std.hyperv | 6 +
> > sys/conf/files.arm64 | 22 ++++
> > sys/conf/files.x86 | 2 +
> > sys/dev/hyperv/include/hyperv.h | 5 +
> > sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c | 5 +-
> > sys/dev/hyperv/vmbus/hyperv.c | 194 +++------------------------
> > sys/dev/hyperv/vmbus/hyperv_machdep.h | 37 ------
> > sys/dev/hyperv/vmbus/hyperv_reg.h | 193 ---------------------------
> > sys/dev/hyperv/vmbus/hyperv_var.h | 4 +
> > sys/dev/hyperv/vmbus/i386/hyperv_machdep.c | 2 +-
> > sys/dev/hyperv/vmbus/vmbus.c | 197 +++++++++-------------------
> > sys/dev/hyperv/vmbus/vmbus_et.c | 7 +-
> > sys/dev/hyperv/vmbus/vmbus_reg.h | 7 +-
> > sys/dev/hyperv/vmbus/vmbus_var.h | 15 +++
> > sys/modules/Makefile | 1 +
> > sys/modules/hyperv/utilities/Makefile | 1 -
> > sys/modules/hyperv/vmbus/Makefile | 11 +-
> > 20 files changed, 164 insertions(+), 552 deletions(-)
> >
> > diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk index
> > a03b8147ecbb..4c0913474ef7 100644
> > --- a/share/mk/src.opts.mk
> > +++ b/share/mk/src.opts.mk
> > @@ -332,8 +332,7 @@ BROKEN_OPTIONS+=CXGBETOOL
> BROKEN_OPTIONS+=MLX5TOOL
> > .endif
> >
> > -# HyperV is currently x86-only
> > -.if ${__T} != "amd64" && ${__T} != "i386"
> > +.if ${__T} != "amd64" && ${__T} != "i386" && ${__T} != "aarch64"
> > BROKEN_OPTIONS+=HYPERV
> > .endif
> >
> > diff --git a/sys/arm64/conf/GENERIC b/sys/arm64/conf/GENERIC index
> > c716183aae61..60772893cdbb 100644
> > --- a/sys/arm64/conf/GENERIC
> > +++ b/sys/arm64/conf/GENERIC
> > @@ -31,6 +31,7 @@ include "std.amd"
> > include "std.arm"
> > include "std.broadcom"
> > include "std.cavium"
> > +include "std.hyperv"
> > include "std.hisilicon"
> > include "std.imx"
> > include "std.marvell"
> > diff --git a/sys/arm64/conf/std.dev b/sys/arm64/conf/std.dev index
> > 6ef7358e5e85..8cdd35e2fd21 100644
> > --- a/sys/arm64/conf/std.dev
> > +++ b/sys/arm64/conf/std.dev
> > @@ -107,3 +107,6 @@ device mmcsd #
> mmc/sd flash cards
> > # HID support
> > options HID_DEBUG # enable debug msgs
> > device hid # Generic HID support
> > +
> > +#hyper-v support
> > +device hyperv
> This should only be in std.hyperv
>
> > diff --git a/sys/arm64/conf/std.hyperv b/sys/arm64/conf/std.hyperv new
> > file mode 100644 index 000000000000..f87082f15c96
> > --- /dev/null
> > +++ b/sys/arm64/conf/std.hyperv
> > @@ -0,0 +1,6 @@
> > +#
> > +# Hyper-V support (Hyper-v Gen 2)
> > +#
> > +
> > +#hyper-v support
> > +device hyperv
>
> This file is missing a few devices needed by hyper-v, e.g. the uart and acpi. It
> should be complete enough so the following kernel config will boot:
>
> cpu ARM64
> ident HYPERV
> include "std.arm64"
> include "std.dev"
> include "std.hyperv"
>
> > diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64 index
> > 5178048cb0af..8b6ba43d2a3d 100644
> > --- a/sys/conf/files.arm64
> > +++ b/sys/conf/files.arm64
> > @@ -624,3 +624,25 @@ arm64/rockchip/clk/rk3399_pmucru.c
> optional fdt soc_rockchip_rk3399
> >
> > # Xilinx
> > arm/xilinx/uart_dev_cdnc.c optional uart soc_xilinx_zynq
> > +
> > +# Microsoft Hyper-V
>
> This should probably be in the Device driver section, and be in alphabetical
> order.
>
> > +dev/hyperv/vmbus/hyperv.c optional hyperv
> > +dev/hyperv/vmbus/aarch64/hyperv_aarch64.c optional
> hyperv
> > +dev/hyperv/vmbus/vmbus.c optional
> hyperv pci
> > +dev/hyperv/vmbus/aarch64/vmbus_aarch64.c optional
> hyperv
> > +dev/hyperv/vmbus/vmbus_if.m optional
> hyperv
> > +dev/hyperv/vmbus/vmbus_res.c optional
> hyperv
> > +dev/hyperv/vmbus/vmbus_xact.c optional
> hyperv
> > +dev/hyperv/vmbus/aarch64/hyperv_machdep.c
> optional hyperv
> > +dev/hyperv/vmbus/vmbus_chan.c optional
> hyperv
> > +dev/hyperv/vmbus/hyperv_busdma.c
> optional hyperv
> > +dev/hyperv/vmbus/vmbus_br.c optional
> hyperv
> > +dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
> optional hyperv
> > +dev/hyperv/utilities/vmbus_timesync.c
> optional hyperv
> > +dev/hyperv/utilities/vmbus_heartbeat.c
> optional hyperv
> > +dev/hyperv/utilities/vmbus_ic.c optional
> hyperv
> > +dev/hyperv/utilities/vmbus_shutdown.c
> optional hyperv
> > +dev/hyperv/utilities/hv_kvp.c optional hyperv
> > +dev/hyperv/netvsc/hn_nvs.c optional
> hyperv
> > +dev/hyperv/netvsc/hn_rndis.c optional
> hyperv
> > +dev/hyperv/netvsc/if_hn.c optional
> hyperv
>
> The indentation for all the above should be cleaned up.
>
> Andrew