RE: [PATCH v12 0/5] Enable Linux guests on Hyper-V on ARM64
From: Michael Kelley <hidden>
Date: 2021-08-04 16:39:34
Also in:
linux-arm-kernel, linux-efi, lkml
From: Catalin Marinas <catalin.marinas@arm.com> Sent: Wednesday, August 4, 2021 9:26 AM
On Wed, Aug 04, 2021 at 08:52:34AM -0700, Michael Kelley wrote:quoted
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.[...]quoted
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