RE: [PATCH v12 0/5] Enable Linux guests on Hyper-V on ARM64

From: Michael Kelley
Date: Wed Aug 04 2021 - 12:39:34 EST


From: Catalin Marinas <catalin.marinas@xxxxxxx> Sent: Wednesday, August 4, 2021 9:26 AM
>
> On Wed, Aug 04, 2021 at 08:52:34AM -0700, Michael Kelley wrote:
> > This series enables Linux guests running on Hyper-V on ARM64
> > hardware. New ARM64-specific code in arch/arm64/hyperv initializes
> > Hyper-V and its hypercall mechanism. Existing architecture
> > independent drivers for Hyper-V's VMbus and synthetic devices just
> > work when built for ARM64. Hyper-V code is built and included in
> > the image and modules only if CONFIG_HYPERV is enabled.
> [...]
> > Hyper-V on ARM64 runs with a 4 Kbyte page size, but allows guests
> > with 4K/16K/64K page size. Linux guests with this patch series
> > work with all three supported ARM64 page sizes.
> >
> > The Hyper-V vPCI driver at drivers/pci/host/pci-hyperv.c has
> > x86/x64-specific code and is not being built for ARM64. Enabling
> > Hyper-V vPCI devices on ARM64 is in progress via a separate set
> > of patches.
> >
> > This patch set is based on the linux-next20210720 code tree.
>
> Is it possible to rebase this on top of -rc3? Are there any
> dependencies or do you plan to upstream this via a different tree?
>

There are dependencies on changes in the hyperv-next tree
(https://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git/)
which is why you are getting the build errors. The changes
common-ized some code between the x86 side and previous
versions of this patch set (and fixed the #include nmi.h problem).
So the code would most naturally go upstream through that tree.

Michael


> It applies cleanly but it doesn't build for me:
>
> In file included from arch/arm64/include/asm/mshyperv.h:52,
> from arch/arm64/hyperv/hv_core.c:19:
> include/asm-generic/mshyperv.h: In function 'hv_do_rep_hypercall':
> include/asm-generic/mshyperv.h:86:3: error: implicit declaration of function 'touch_nmi_watchdog' [-Werror=implicit-
> function-declaration]
> 86 | touch_nmi_watchdog();
> | ^~~~~~~~~~~~~~~~~~
>
> A quick fix for the above was to include nmi.h in mshyperv.h.
>
> However, the below I can't fix since there's no trace of
> hv_common_init() on top of 5.14-rc3:
>
> arch/arm64/hyperv/mshyperv.c: In function 'hyperv_init':
> arch/arm64/hyperv/mshyperv.c:66:8: error: implicit declaration of function 'hv_common_init' [-Werror=implicit-function-
> declaration]
> 66 | ret = hv_common_init();
> | ^~~~~~~~~~~~~~
> arch/arm64/hyperv/mshyperv.c:71:5: error: 'hv_common_cpu_init' undeclared (first use in this function)
> 71 | hv_common_cpu_init, hv_common_cpu_die);
> | ^~~~~~~~~~~~~~~~~~
> arch/arm64/hyperv/mshyperv.c:71:5: note: each undeclared identifier is reported only once for each function it appears in
> arch/arm64/hyperv/mshyperv.c:71:25: error: 'hv_common_cpu_die' undeclared (first use in this function)
> 71 | hv_common_cpu_init, hv_common_cpu_die);
> | ^~~~~~~~~~~~~~~~~
> arch/arm64/hyperv/mshyperv.c:73:3: error: implicit declaration of function 'hv_common_free' [-Werror=implicit-function-
> declaration]
> 73 | hv_common_free();
> | ^~~~~~~~~~~~~~
>
> --
> Catalin