2021-08-04 16:30:25

by Catalin Marinas

[permalink] [raw]
Subject: Re: [PATCH v12 0/5] Enable Linux guests on Hyper-V on ARM64

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();
| ^~~~~~~~~~~~~~

--
Catalin


2021-08-04 20:02:08

by Wei Liu

[permalink] [raw]
Subject: Re: [PATCH v12 0/5] Enable Linux guests on Hyper-V on ARM64

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.

2021-08-04 20:02:48

by Michael Kelley (LINUX)

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

From: Catalin Marinas <[email protected]> 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