Message ID | 1628092359-61351-1-git-send-email-mikelley@microsoft.com (mailing list archive) |
---|---|
Headers | show |
Series | Enable Linux guests on Hyper-V on ARM64 | expand |
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? 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(); | ^~~~~~~~~~~~~~
On Wed, Aug 04, 2021 at 05:25:57PM +0100, Catalin Marinas wrote: > 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? Some prerequisite patches are in hyperv-next. https://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git/log/?h=hyperv-next Wei.
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: > > 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
On Wed, Aug 04, 2021 at 04:39:02PM +0000, Michael Kelley wrote: > 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: > > > 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. In that case, for this series: Acked-by: Catalin Marinas <catalin.marinas@arm.com> I don't think there'd be conflicts with the arm64 changes but we can spot them early in -next.
On Wed, Aug 04, 2021 at 08:52:34AM -0700, Michael Kelley wrote: > > Michael Kelley (5): > arm64: hyperv: Add Hyper-V hypercall and register access utilities > arm64: hyperv: Add panic handler > arm64: hyperv: Initialize hypervisor on boot > arm64: efi: Export screen_info > Drivers: hv: Enable Hyper-V code to be built on ARM64 Applied to hyperv-next. Thanks. Wei.