* kernel: fix hv tools build for arm64 when cross-built
@ 2024-10-23 14:01 Adrian Vladu
2024-12-09 0:44 ` Wei Liu
0 siblings, 1 reply; 8+ messages in thread
From: Adrian Vladu @ 2024-10-23 14:01 UTC (permalink / raw)
To: linux-hyperv@vger.kernel.org; +Cc: Alessandro Pilotti, Mathieu Tortuyaux
Hello,
While trying to build the LIS daemons for Flatcar Container Linux for ARM64 (https://www.flatcar.org/), as we are doing Gentoo based cross-building from X64 boxes, there was an error while building those daemons, because the cross-compile scenario was not working, as ` ARCH := $(shell uname -m 2>/dev/null)` always returns `x86_64`.
I have a working patch for the Linux kernel here that was already applied in the Flatcar context and it works:
https://github.com/flatcar/scripts/blob/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
Raw patch link here: https://raw.githubusercontent.com/flatcar/scripts/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
Sorry for the delivery method via github link, but I cannot send proper patches from my work email address currently, as the email server does not support it.
Please let me know if I need to send the patch via the recommended way or if the patch can be used directly.
Also, maybe there is a better way to address the cross-compilation issue, I just wanted to report the bug and also provide a possible fix.
Thank you,
Adrian Vladu
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: kernel: fix hv tools build for arm64 when cross-built
2024-10-23 14:01 kernel: fix hv tools build for arm64 when cross-built Adrian Vladu
@ 2024-12-09 0:44 ` Wei Liu
2024-12-09 8:30 ` Saurabh Singh Sengar
0 siblings, 1 reply; 8+ messages in thread
From: Wei Liu @ 2024-12-09 0:44 UTC (permalink / raw)
To: Adrian Vladu, ssengar
Cc: linux-hyperv@vger.kernel.org, Alessandro Pilotti,
Mathieu Tortuyaux, Wei Liu
On Wed, Oct 23, 2024 at 02:01:12PM +0000, Adrian Vladu wrote:
> Hello,
>
> While trying to build the LIS daemons for Flatcar Container Linux for
> ARM64 (https://www.flatcar.org/), as we are doing Gentoo based
> cross-building from X64 boxes, there was an error while building those
> daemons, because the cross-compile scenario was not working, as ` ARCH
> := $(shell uname -m 2>/dev/null)` always returns `x86_64`.
>
> I have a working patch for the Linux kernel here that was already
> applied in the Flatcar context and it works:
> https://github.com/flatcar/scripts/blob/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
>
> Raw patch link here:
> https://raw.githubusercontent.com/flatcar/scripts/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
>
> Sorry for the delivery method via github link, but I cannot send
> proper patches from my work email address currently, as the email
> server does not support it.
>
> Please let me know if I need to send the patch via the recommended way
> or if the patch can be used directly.
>
> Also, maybe there is a better way to address the cross-compilation
> issue, I just wanted to report the bug and also provide a possible
> fix.
Saurabh added the ARCH variable. He's CCed.
BTW I think your patch can be simplified by using
ARCH ?= $(shell uname -m 2>/dev/null)
instead of the ifeq test in your patch.
I don't think that's correct. ARCH will be set to the correct value by
Kbuild.
Saurabh and Adrian, can you test the following patch?
Thanks,
Wei.
From e6a1827887617c08172e2d0ee0d60549f5ccad65 Mon Sep 17 00:00:00 2001
From: Wei Liu <wei.liu@kernel.org>
Date: Mon, 9 Dec 2024 00:32:50 +0000
Subject: [PATCH] tools/hv: fix cross-compilation issue in hv tools
The Kbuild system sets ARCH to the correct value.
Signed-off-by: Wei Liu <wei.liu@kernel.org>
---
tools/hv/Makefile | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/tools/hv/Makefile b/tools/hv/Makefile
index 34ffcec264ab..9008223279df 100644
--- a/tools/hv/Makefile
+++ b/tools/hv/Makefile
@@ -2,7 +2,6 @@
# Makefile for Hyper-V tools
include ../scripts/Makefile.include
-ARCH := $(shell uname -m 2>/dev/null)
sbindir ?= /usr/sbin
libexecdir ?= /usr/libexec
sharedstatedir ?= /var/lib
@@ -20,7 +19,7 @@ override CFLAGS += -O2 -Wall -g -D_GNU_SOURCE -I$(OUTPUT)include
override CFLAGS += -Wno-address-of-packed-member
ALL_TARGETS := hv_kvp_daemon hv_vss_daemon
-ifneq ($(ARCH), aarch64)
+ifneq ($(ARCH), arm64)
ALL_TARGETS += hv_fcopy_uio_daemon
endif
ALL_PROGRAMS := $(patsubst %,$(OUTPUT)%,$(ALL_TARGETS))
--
2.45.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: kernel: fix hv tools build for arm64 when cross-built
2024-12-09 0:44 ` Wei Liu
@ 2024-12-09 8:30 ` Saurabh Singh Sengar
2024-12-09 18:46 ` Wei Liu
0 siblings, 1 reply; 8+ messages in thread
From: Saurabh Singh Sengar @ 2024-12-09 8:30 UTC (permalink / raw)
To: Wei Liu
Cc: Adrian Vladu, linux-hyperv@vger.kernel.org, Alessandro Pilotti,
Mathieu Tortuyaux
On Mon, Dec 09, 2024 at 12:44:22AM +0000, Wei Liu wrote:
> On Wed, Oct 23, 2024 at 02:01:12PM +0000, Adrian Vladu wrote:
> > Hello,
> >
> > While trying to build the LIS daemons for Flatcar Container Linux for
> > ARM64 (https://www.flatcar.org/), as we are doing Gentoo based
> > cross-building from X64 boxes, there was an error while building those
> > daemons, because the cross-compile scenario was not working, as ` ARCH
> > := $(shell uname -m 2>/dev/null)` always returns `x86_64`.
> >
> > I have a working patch for the Linux kernel here that was already
> > applied in the Flatcar context and it works:
> > https://github.com/flatcar/scripts/blob/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
> >
> > Raw patch link here:
> > https://raw.githubusercontent.com/flatcar/scripts/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
> >
> > Sorry for the delivery method via github link, but I cannot send
> > proper patches from my work email address currently, as the email
> > server does not support it.
> >
> > Please let me know if I need to send the patch via the recommended way
> > or if the patch can be used directly.
> >
> > Also, maybe there is a better way to address the cross-compilation
> > issue, I just wanted to report the bug and also provide a possible
> > fix.
>
> Saurabh added the ARCH variable. He's CCed.
>
> BTW I think your patch can be simplified by using
> ARCH ?= $(shell uname -m 2>/dev/null)
> instead of the ifeq test in your patch.
Agree, this is better way to handle it.
>
> I don't think that's correct. ARCH will be set to the correct value by
> Kbuild.
If we build locally on ARM64, there is a chance that ARCH may not be set,
leading to build failures for arm64. IMO we should provide a fallback
option for local builds when ARCH is not set.
>
> Saurabh and Adrian, can you test the following patch?
>
> Thanks,
> Wei.
>
> >From e6a1827887617c08172e2d0ee0d60549f5ccad65 Mon Sep 17 00:00:00 2001
> From: Wei Liu <wei.liu@kernel.org>
> Date: Mon, 9 Dec 2024 00:32:50 +0000
> Subject: [PATCH] tools/hv: fix cross-compilation issue in hv tools
>
> The Kbuild system sets ARCH to the correct value.
>
> Signed-off-by: Wei Liu <wei.liu@kernel.org>
> ---
> tools/hv/Makefile | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/tools/hv/Makefile b/tools/hv/Makefile
> index 34ffcec264ab..9008223279df 100644
> --- a/tools/hv/Makefile
> +++ b/tools/hv/Makefile
> @@ -2,7 +2,6 @@
> # Makefile for Hyper-V tools
> include ../scripts/Makefile.include
>
> -ARCH := $(shell uname -m 2>/dev/null)
> sbindir ?= /usr/sbin
> libexecdir ?= /usr/libexec
> sharedstatedir ?= /var/lib
> @@ -20,7 +19,7 @@ override CFLAGS += -O2 -Wall -g -D_GNU_SOURCE -I$(OUTPUT)include
> override CFLAGS += -Wno-address-of-packed-member
>
> ALL_TARGETS := hv_kvp_daemon hv_vss_daemon
> -ifneq ($(ARCH), aarch64)
> +ifneq ($(ARCH), arm64)
My understanding is ARCH could be either aarch64 or arm64.
- Saurabh
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: kernel: fix hv tools build for arm64 when cross-built
2024-12-09 8:30 ` Saurabh Singh Sengar
@ 2024-12-09 18:46 ` Wei Liu
2024-12-10 3:39 ` Saurabh Singh Sengar
0 siblings, 1 reply; 8+ messages in thread
From: Wei Liu @ 2024-12-09 18:46 UTC (permalink / raw)
To: Saurabh Singh Sengar
Cc: Wei Liu, Adrian Vladu, linux-hyperv@vger.kernel.org,
Alessandro Pilotti, Mathieu Tortuyaux
On Mon, Dec 09, 2024 at 12:30:35AM -0800, Saurabh Singh Sengar wrote:
> On Mon, Dec 09, 2024 at 12:44:22AM +0000, Wei Liu wrote:
> > On Wed, Oct 23, 2024 at 02:01:12PM +0000, Adrian Vladu wrote:
> > > Hello,
> > >
> > > While trying to build the LIS daemons for Flatcar Container Linux for
> > > ARM64 (https://www.flatcar.org/), as we are doing Gentoo based
> > > cross-building from X64 boxes, there was an error while building those
> > > daemons, because the cross-compile scenario was not working, as ` ARCH
> > > := $(shell uname -m 2>/dev/null)` always returns `x86_64`.
> > >
> > > I have a working patch for the Linux kernel here that was already
> > > applied in the Flatcar context and it works:
> > > https://github.com/flatcar/scripts/blob/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
> > >
> > > Raw patch link here:
> > > https://raw.githubusercontent.com/flatcar/scripts/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
> > >
> > > Sorry for the delivery method via github link, but I cannot send
> > > proper patches from my work email address currently, as the email
> > > server does not support it.
> > >
> > > Please let me know if I need to send the patch via the recommended way
> > > or if the patch can be used directly.
> > >
> > > Also, maybe there is a better way to address the cross-compilation
> > > issue, I just wanted to report the bug and also provide a possible
> > > fix.
> >
> > Saurabh added the ARCH variable. He's CCed.
> >
> > BTW I think your patch can be simplified by using
> > ARCH ?= $(shell uname -m 2>/dev/null)
> > instead of the ifeq test in your patch.
>
> Agree, this is better way to handle it.
>
> >
> > I don't think that's correct. ARCH will be set to the correct value by
> > Kbuild.
>
> If we build locally on ARM64, there is a chance that ARCH may not be set,
> leading to build failures for arm64. IMO we should provide a fallback
> option for local builds when ARCH is not set.
How do you build locally? Even if you build those tools in tools/hv, it
still uses the Kbuild system, which sets ARCH to the correct value,
right?
Thanks,
Wei.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: kernel: fix hv tools build for arm64 when cross-built
2024-12-09 18:46 ` Wei Liu
@ 2024-12-10 3:39 ` Saurabh Singh Sengar
2024-12-10 18:34 ` Wei Liu
0 siblings, 1 reply; 8+ messages in thread
From: Saurabh Singh Sengar @ 2024-12-10 3:39 UTC (permalink / raw)
To: Wei Liu
Cc: Adrian Vladu, linux-hyperv@vger.kernel.org, Alessandro Pilotti,
Mathieu Tortuyaux
On Mon, Dec 09, 2024 at 06:46:42PM +0000, Wei Liu wrote:
> On Mon, Dec 09, 2024 at 12:30:35AM -0800, Saurabh Singh Sengar wrote:
> > On Mon, Dec 09, 2024 at 12:44:22AM +0000, Wei Liu wrote:
> > > On Wed, Oct 23, 2024 at 02:01:12PM +0000, Adrian Vladu wrote:
> > > > Hello,
> > > >
> > > > While trying to build the LIS daemons for Flatcar Container Linux for
> > > > ARM64 (https://www.flatcar.org/), as we are doing Gentoo based
> > > > cross-building from X64 boxes, there was an error while building those
> > > > daemons, because the cross-compile scenario was not working, as ` ARCH
> > > > := $(shell uname -m 2>/dev/null)` always returns `x86_64`.
> > > >
> > > > I have a working patch for the Linux kernel here that was already
> > > > applied in the Flatcar context and it works:
> > > > https://github.com/flatcar/scripts/blob/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
> > > >
> > > > Raw patch link here:
> > > > https://raw.githubusercontent.com/flatcar/scripts/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
> > > >
> > > > Sorry for the delivery method via github link, but I cannot send
> > > > proper patches from my work email address currently, as the email
> > > > server does not support it.
> > > >
> > > > Please let me know if I need to send the patch via the recommended way
> > > > or if the patch can be used directly.
> > > >
> > > > Also, maybe there is a better way to address the cross-compilation
> > > > issue, I just wanted to report the bug and also provide a possible
> > > > fix.
> > >
> > > Saurabh added the ARCH variable. He's CCed.
> > >
> > > BTW I think your patch can be simplified by using
> > > ARCH ?= $(shell uname -m 2>/dev/null)
> > > instead of the ifeq test in your patch.
> >
> > Agree, this is better way to handle it.
> >
> > >
> > > I don't think that's correct. ARCH will be set to the correct value by
> > > Kbuild.
> >
> > If we build locally on ARM64, there is a chance that ARCH may not be set,
> > leading to build failures for arm64. IMO we should provide a fallback
> > option for local builds when ARCH is not set.
>
> How do you build locally? Even if you build those tools in tools/hv, it
> still uses the Kbuild system, which sets ARCH to the correct value,
> right?
>
I have tested your patch in ARM64 VM, can see the build failure. Here's the
exact details how I tested:
azureuser@ARM64-ubunutu24:/work/linux-next$ cd tools/hv/
azureuser@ARM64-ubunutu24:/work/linux-next/tools/hv$ make
make[1]: Entering directory '/work/linux-next/tools/hv'
CC hv_kvp_daemon.o
LD hv_kvp_daemon-in.o
make[1]: Leaving directory '/work/linux-next/tools/hv'
LINK hv_kvp_daemon
make[1]: Entering directory '/work/linux-next/tools/hv'
CC hv_vss_daemon.o
LD hv_vss_daemon-in.o
make[1]: Leaving directory '/work/linux-next/tools/hv'
LINK hv_vss_daemon
make[1]: Entering directory '/work/linux-next/tools/hv'
CC hv_fcopy_uio_daemon.o
CC vmbus_bufring.o
vmbus_bufring.c:11:10: fatal error: emmintrin.h: No such file or directory
11 | #include <emmintrin.h>
| ^~~~~~~~~~~~~
compilation terminated.
make[1]: *** [/work/linux-next/tools/build/Makefile.build:106: vmbus_bufring.o] Error 1
make[1]: Leaving directory '/work/linux-next/tools/hv'
make: *** [Makefile:48: hv_fcopy_uio_daemon-in.o] Error 2
azureuser@ARM64-ubunutu24:/work/linux-next/tools/hv$ uname -a
Linux ARM64-ubunutu24 6.12.0-next-20241128+ #12 SMP Fri Nov 29 14:53:06 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
- Saurabh
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: kernel: fix hv tools build for arm64 when cross-built
2024-12-10 3:39 ` Saurabh Singh Sengar
@ 2024-12-10 18:34 ` Wei Liu
2024-12-10 19:07 ` Wei Liu
0 siblings, 1 reply; 8+ messages in thread
From: Wei Liu @ 2024-12-10 18:34 UTC (permalink / raw)
To: Saurabh Singh Sengar
Cc: Wei Liu, Adrian Vladu, linux-hyperv@vger.kernel.org,
Alessandro Pilotti, Mathieu Tortuyaux
On Mon, Dec 09, 2024 at 07:39:10PM -0800, Saurabh Singh Sengar wrote:
> On Mon, Dec 09, 2024 at 06:46:42PM +0000, Wei Liu wrote:
> > On Mon, Dec 09, 2024 at 12:30:35AM -0800, Saurabh Singh Sengar wrote:
> > > On Mon, Dec 09, 2024 at 12:44:22AM +0000, Wei Liu wrote:
> > > > On Wed, Oct 23, 2024 at 02:01:12PM +0000, Adrian Vladu wrote:
> > > > > Hello,
> > > > >
> > > > > While trying to build the LIS daemons for Flatcar Container Linux for
> > > > > ARM64 (https://www.flatcar.org/), as we are doing Gentoo based
> > > > > cross-building from X64 boxes, there was an error while building those
> > > > > daemons, because the cross-compile scenario was not working, as ` ARCH
> > > > > := $(shell uname -m 2>/dev/null)` always returns `x86_64`.
> > > > >
> > > > > I have a working patch for the Linux kernel here that was already
> > > > > applied in the Flatcar context and it works:
> > > > > https://github.com/flatcar/scripts/blob/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
> > > > >
> > > > > Raw patch link here:
> > > > > https://raw.githubusercontent.com/flatcar/scripts/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
> > > > >
> > > > > Sorry for the delivery method via github link, but I cannot send
> > > > > proper patches from my work email address currently, as the email
> > > > > server does not support it.
> > > > >
> > > > > Please let me know if I need to send the patch via the recommended way
> > > > > or if the patch can be used directly.
> > > > >
> > > > > Also, maybe there is a better way to address the cross-compilation
> > > > > issue, I just wanted to report the bug and also provide a possible
> > > > > fix.
> > > >
> > > > Saurabh added the ARCH variable. He's CCed.
> > > >
> > > > BTW I think your patch can be simplified by using
> > > > ARCH ?= $(shell uname -m 2>/dev/null)
> > > > instead of the ifeq test in your patch.
> > >
> > > Agree, this is better way to handle it.
> > >
> > > >
> > > > I don't think that's correct. ARCH will be set to the correct value by
> > > > Kbuild.
> > >
> > > If we build locally on ARM64, there is a chance that ARCH may not be set,
> > > leading to build failures for arm64. IMO we should provide a fallback
> > > option for local builds when ARCH is not set.
> >
> > How do you build locally? Even if you build those tools in tools/hv, it
> > still uses the Kbuild system, which sets ARCH to the correct value,
> > right?
> >
>
> I have tested your patch in ARM64 VM, can see the build failure. Here's the
> exact details how I tested:
>
>
> azureuser@ARM64-ubunutu24:/work/linux-next$ cd tools/hv/
> azureuser@ARM64-ubunutu24:/work/linux-next/tools/hv$ make
> make[1]: Entering directory '/work/linux-next/tools/hv'
> CC hv_kvp_daemon.o
> LD hv_kvp_daemon-in.o
> make[1]: Leaving directory '/work/linux-next/tools/hv'
> LINK hv_kvp_daemon
> make[1]: Entering directory '/work/linux-next/tools/hv'
> CC hv_vss_daemon.o
> LD hv_vss_daemon-in.o
> make[1]: Leaving directory '/work/linux-next/tools/hv'
> LINK hv_vss_daemon
> make[1]: Entering directory '/work/linux-next/tools/hv'
> CC hv_fcopy_uio_daemon.o
> CC vmbus_bufring.o
> vmbus_bufring.c:11:10: fatal error: emmintrin.h: No such file or directory
> 11 | #include <emmintrin.h>
> | ^~~~~~~~~~~~~
I see. I create an arm64 VM and reproduce the issue. The ARCH variable
is not set.
That said, the build breaks because emmintrin.h is not available on
arm64. It is only needed for _mm_pause(). There is maybe an
architecture specific header file we can use to make it build.
Thanks,
Wei.
> compilation terminated.
> make[1]: *** [/work/linux-next/tools/build/Makefile.build:106: vmbus_bufring.o] Error 1
> make[1]: Leaving directory '/work/linux-next/tools/hv'
> make: *** [Makefile:48: hv_fcopy_uio_daemon-in.o] Error 2
> azureuser@ARM64-ubunutu24:/work/linux-next/tools/hv$ uname -a
> Linux ARM64-ubunutu24 6.12.0-next-20241128+ #12 SMP Fri Nov 29 14:53:06 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
>
> - Saurabh
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: kernel: fix hv tools build for arm64 when cross-built
2024-12-10 18:34 ` Wei Liu
@ 2024-12-10 19:07 ` Wei Liu
2024-12-12 8:32 ` Saurabh Singh Sengar
0 siblings, 1 reply; 8+ messages in thread
From: Wei Liu @ 2024-12-10 19:07 UTC (permalink / raw)
To: Saurabh Singh Sengar
Cc: Wei Liu, Adrian Vladu, linux-hyperv@vger.kernel.org,
Alessandro Pilotti, Mathieu Tortuyaux
On Tue, Dec 10, 2024 at 06:34:28PM +0000, Wei Liu wrote:
> On Mon, Dec 09, 2024 at 07:39:10PM -0800, Saurabh Singh Sengar wrote:
> > On Mon, Dec 09, 2024 at 06:46:42PM +0000, Wei Liu wrote:
> > > On Mon, Dec 09, 2024 at 12:30:35AM -0800, Saurabh Singh Sengar wrote:
> > > > On Mon, Dec 09, 2024 at 12:44:22AM +0000, Wei Liu wrote:
> > > > > On Wed, Oct 23, 2024 at 02:01:12PM +0000, Adrian Vladu wrote:
> > > > > > Hello,
> > > > > >
> > > > > > While trying to build the LIS daemons for Flatcar Container Linux for
> > > > > > ARM64 (https://www.flatcar.org/), as we are doing Gentoo based
> > > > > > cross-building from X64 boxes, there was an error while building those
> > > > > > daemons, because the cross-compile scenario was not working, as ` ARCH
> > > > > > := $(shell uname -m 2>/dev/null)` always returns `x86_64`.
> > > > > >
> > > > > > I have a working patch for the Linux kernel here that was already
> > > > > > applied in the Flatcar context and it works:
> > > > > > https://github.com/flatcar/scripts/blob/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
> > > > > >
> > > > > > Raw patch link here:
> > > > > > https://raw.githubusercontent.com/flatcar/scripts/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
> > > > > >
> > > > > > Sorry for the delivery method via github link, but I cannot send
> > > > > > proper patches from my work email address currently, as the email
> > > > > > server does not support it.
> > > > > >
> > > > > > Please let me know if I need to send the patch via the recommended way
> > > > > > or if the patch can be used directly.
> > > > > >
> > > > > > Also, maybe there is a better way to address the cross-compilation
> > > > > > issue, I just wanted to report the bug and also provide a possible
> > > > > > fix.
> > > > >
> > > > > Saurabh added the ARCH variable. He's CCed.
> > > > >
> > > > > BTW I think your patch can be simplified by using
> > > > > ARCH ?= $(shell uname -m 2>/dev/null)
> > > > > instead of the ifeq test in your patch.
> > > >
> > > > Agree, this is better way to handle it.
> > > >
> > > > >
> > > > > I don't think that's correct. ARCH will be set to the correct value by
> > > > > Kbuild.
> > > >
> > > > If we build locally on ARM64, there is a chance that ARCH may not be set,
> > > > leading to build failures for arm64. IMO we should provide a fallback
> > > > option for local builds when ARCH is not set.
> > >
> > > How do you build locally? Even if you build those tools in tools/hv, it
> > > still uses the Kbuild system, which sets ARCH to the correct value,
> > > right?
> > >
> >
> > I have tested your patch in ARM64 VM, can see the build failure. Here's the
> > exact details how I tested:
> >
> >
> > azureuser@ARM64-ubunutu24:/work/linux-next$ cd tools/hv/
> > azureuser@ARM64-ubunutu24:/work/linux-next/tools/hv$ make
> > make[1]: Entering directory '/work/linux-next/tools/hv'
> > CC hv_kvp_daemon.o
> > LD hv_kvp_daemon-in.o
> > make[1]: Leaving directory '/work/linux-next/tools/hv'
> > LINK hv_kvp_daemon
> > make[1]: Entering directory '/work/linux-next/tools/hv'
> > CC hv_vss_daemon.o
> > LD hv_vss_daemon-in.o
> > make[1]: Leaving directory '/work/linux-next/tools/hv'
> > LINK hv_vss_daemon
> > make[1]: Entering directory '/work/linux-next/tools/hv'
> > CC hv_fcopy_uio_daemon.o
> > CC vmbus_bufring.o
> > vmbus_bufring.c:11:10: fatal error: emmintrin.h: No such file or directory
> > 11 | #include <emmintrin.h>
> > | ^~~~~~~~~~~~~
>
> I see. I create an arm64 VM and reproduce the issue. The ARCH variable
> is not set.
>
> That said, the build breaks because emmintrin.h is not available on
> arm64. It is only needed for _mm_pause(). There is maybe an
> architecture specific header file we can use to make it build.
Never mind. There are also open coded x86 assembly code in
vmbus_bufring.c. Let's fix the cross-compilation issue first.
Thanks,
Wei.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: kernel: fix hv tools build for arm64 when cross-built
2024-12-10 19:07 ` Wei Liu
@ 2024-12-12 8:32 ` Saurabh Singh Sengar
0 siblings, 0 replies; 8+ messages in thread
From: Saurabh Singh Sengar @ 2024-12-12 8:32 UTC (permalink / raw)
To: Wei Liu
Cc: Adrian Vladu, linux-hyperv@vger.kernel.org, Alessandro Pilotti,
Mathieu Tortuyaux
On Tue, Dec 10, 2024 at 07:07:37PM +0000, Wei Liu wrote:
> On Tue, Dec 10, 2024 at 06:34:28PM +0000, Wei Liu wrote:
> > On Mon, Dec 09, 2024 at 07:39:10PM -0800, Saurabh Singh Sengar wrote:
> > > On Mon, Dec 09, 2024 at 06:46:42PM +0000, Wei Liu wrote:
> > > > On Mon, Dec 09, 2024 at 12:30:35AM -0800, Saurabh Singh Sengar wrote:
> > > > > On Mon, Dec 09, 2024 at 12:44:22AM +0000, Wei Liu wrote:
> > > > > > On Wed, Oct 23, 2024 at 02:01:12PM +0000, Adrian Vladu wrote:
> > > > > > > Hello,
> > > > > > >
> > > > > > > While trying to build the LIS daemons for Flatcar Container Linux for
> > > > > > > ARM64 (https://www.flatcar.org/), as we are doing Gentoo based
> > > > > > > cross-building from X64 boxes, there was an error while building those
> > > > > > > daemons, because the cross-compile scenario was not working, as ` ARCH
> > > > > > > := $(shell uname -m 2>/dev/null)` always returns `x86_64`.
> > > > > > >
> > > > > > > I have a working patch for the Linux kernel here that was already
> > > > > > > applied in the Flatcar context and it works:
> > > > > > > https://github.com/flatcar/scripts/blob/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
> > > > > > >
> > > > > > > Raw patch link here:
> > > > > > > https://raw.githubusercontent.com/flatcar/scripts/94b1df1b19449eb5aa967fd48ba4c1f4a6d5f415/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/files/6.10/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch
> > > > > > >
> > > > > > > Sorry for the delivery method via github link, but I cannot send
> > > > > > > proper patches from my work email address currently, as the email
> > > > > > > server does not support it.
> > > > > > >
> > > > > > > Please let me know if I need to send the patch via the recommended way
> > > > > > > or if the patch can be used directly.
> > > > > > >
> > > > > > > Also, maybe there is a better way to address the cross-compilation
> > > > > > > issue, I just wanted to report the bug and also provide a possible
> > > > > > > fix.
> > > > > >
> > > > > > Saurabh added the ARCH variable. He's CCed.
> > > > > >
> > > > > > BTW I think your patch can be simplified by using
> > > > > > ARCH ?= $(shell uname -m 2>/dev/null)
> > > > > > instead of the ifeq test in your patch.
> > > > >
> > > > > Agree, this is better way to handle it.
> > > > >
> > > > > >
> > > > > > I don't think that's correct. ARCH will be set to the correct value by
> > > > > > Kbuild.
> > > > >
> > > > > If we build locally on ARM64, there is a chance that ARCH may not be set,
> > > > > leading to build failures for arm64. IMO we should provide a fallback
> > > > > option for local builds when ARCH is not set.
> > > >
> > > > How do you build locally? Even if you build those tools in tools/hv, it
> > > > still uses the Kbuild system, which sets ARCH to the correct value,
> > > > right?
> > > >
> > >
> > > I have tested your patch in ARM64 VM, can see the build failure. Here's the
> > > exact details how I tested:
> > >
> > >
> > > azureuser@ARM64-ubunutu24:/work/linux-next$ cd tools/hv/
> > > azureuser@ARM64-ubunutu24:/work/linux-next/tools/hv$ make
> > > make[1]: Entering directory '/work/linux-next/tools/hv'
> > > CC hv_kvp_daemon.o
> > > LD hv_kvp_daemon-in.o
> > > make[1]: Leaving directory '/work/linux-next/tools/hv'
> > > LINK hv_kvp_daemon
> > > make[1]: Entering directory '/work/linux-next/tools/hv'
> > > CC hv_vss_daemon.o
> > > LD hv_vss_daemon-in.o
> > > make[1]: Leaving directory '/work/linux-next/tools/hv'
> > > LINK hv_vss_daemon
> > > make[1]: Entering directory '/work/linux-next/tools/hv'
> > > CC hv_fcopy_uio_daemon.o
> > > CC vmbus_bufring.o
> > > vmbus_bufring.c:11:10: fatal error: emmintrin.h: No such file or directory
> > > 11 | #include <emmintrin.h>
> > > | ^~~~~~~~~~~~~
> >
> > I see. I create an arm64 VM and reproduce the issue. The ARCH variable
> > is not set.
> >
> > That said, the build breaks because emmintrin.h is not available on
> > arm64. It is only needed for _mm_pause(). There is maybe an
> > architecture specific header file we can use to make it build.
>
> Never mind. There are also open coded x86 assembly code in
> vmbus_bufring.c. Let's fix the cross-compilation issue first.
sent a patch for this : https://lkml.org/lkml/2024/12/12/307
- Saurabh
>
> Thanks,
> Wei.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-12-12 8:32 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-23 14:01 kernel: fix hv tools build for arm64 when cross-built Adrian Vladu
2024-12-09 0:44 ` Wei Liu
2024-12-09 8:30 ` Saurabh Singh Sengar
2024-12-09 18:46 ` Wei Liu
2024-12-10 3:39 ` Saurabh Singh Sengar
2024-12-10 18:34 ` Wei Liu
2024-12-10 19:07 ` Wei Liu
2024-12-12 8:32 ` Saurabh Singh Sengar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox