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