git: df63a94a3d5f - main - filesystems/lkl: add support for powerpc64*

From: Piotr Kubaj <pkubaj_at_FreeBSD.org>
Date: Fri, 11 Sep 2026 12:50:00 UTC
The branch main has been updated by pkubaj:

URL: https://cgit.FreeBSD.org/ports/commit/?id=df63a94a3d5fd3d3a4a8b8331da369d872127a3b

commit df63a94a3d5fd3d3a4a8b8331da369d872127a3b
Author:     Piotr Kubaj <pkubaj@FreeBSD.org>
AuthorDate: 2026-08-31 11:52:30 +0000
Commit:     Piotr Kubaj <pkubaj@FreeBSD.org>
CommitDate: 2026-09-11 12:49:04 +0000

    filesystems/lkl: add support for powerpc64*
---
 filesystems/lkl/Makefile                           |  5 +++--
 filesystems/lkl/files/patch-arch_lkl_Kconfig       | 23 +++++++++++++++++++++
 filesystems/lkl/files/patch-arch_lkl_Makefile      | 11 ++++++++++
 .../patch-arch_lkl_include_uapi_asm_host__ops.h    | 11 ++++++++++
 .../{patch-Makefile => patch-tools_lkl_Makefile}   |  6 +++---
 .../lkl/files/patch-tools_lkl_Makefile.autoconf    | 24 ++++++++++++++++++++++
 .../{patch-Targets => patch-tools_lkl_Targets}     |  6 +++---
 .../lkl/files/patch-tools_lkl_lib_virtio__blk.c    | 20 ++++++++++++++++++
 8 files changed, 98 insertions(+), 8 deletions(-)

diff --git a/filesystems/lkl/Makefile b/filesystems/lkl/Makefile
index c56be9005f7e..aa1e7dedfaa2 100644
--- a/filesystems/lkl/Makefile
+++ b/filesystems/lkl/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	lkl
 DISTVERSION=	4.16.g20180628
-PORTREVISION=	4
+PORTREVISION=	5
 CATEGORIES=	filesystems
 PKGNAMEPREFIX=	fusefs-
 
@@ -24,10 +24,11 @@ USE_GITHUB=	yes
 GH_PROJECT=	linux
 GH_TAGNAME=	86dd3afb590eccc1903611bdaa8bac87757eb80d
 
-ONLY_FOR_ARCHS=	amd64
+ONLY_FOR_ARCHS=	amd64 powerpc64 powerpc64le
 ONLY_FOR_ARCHS_REASON=ld formats not available for other architectures
 
 WRKSRC_SUBDIR=	tools/lkl
+PATCH_WRKSRC=	${WRKSRC:H:H}
 MAKE_JOBS_UNSAFE=yes
 MAKE_ARGS+=	V=1
 # Need ports versions of 'bc', 'ld' to build!
diff --git a/filesystems/lkl/files/patch-arch_lkl_Kconfig b/filesystems/lkl/files/patch-arch_lkl_Kconfig
new file mode 100644
index 000000000000..82b6b549ca2f
--- /dev/null
+++ b/filesystems/lkl/files/patch-arch_lkl_Kconfig
@@ -0,0 +1,23 @@
+--- arch/lkl/Kconfig.orig	2018-06-28 05:58:16 UTC
++++ arch/lkl/Kconfig
+@@ -20,6 +20,8 @@ config LKL
+        select HAVE_UNDERSCORE_SYMBOL_PREFIX if OUTPUT_FORMAT = "pe-i386"
+        select 64BIT if OUTPUT_FORMAT = "elf64-x86-64-freebsd"
+        select 64BIT if OUTPUT_FORMAT = "elf64-littleaarch64"
++       select 64BIT if OUTPUT_FORMAT = "elf64-powerpc-freebsd"
++       select 64BIT if OUTPUT_FORMAT = "elf64-powerpcle-freebsd"
+        select NET
+        select MULTIUSER
+        select INET
+@@ -56,7 +58,10 @@ config BIG_ENDIAN
+        def_bool n
+ 
+ config BIG_ENDIAN
+-       def_bool n
++       def_bool y if OUTPUT_FORMAT = "elf64-powerpc-freebsd"
++
++config CPU_BIG_ENDIAN
++       def_bool BIG_ENDIAN
+ 
+ config GENERIC_CSUM
+        def_bool y
diff --git a/filesystems/lkl/files/patch-arch_lkl_Makefile b/filesystems/lkl/files/patch-arch_lkl_Makefile
new file mode 100644
index 000000000000..311a85f7244f
--- /dev/null
+++ b/filesystems/lkl/files/patch-arch_lkl_Makefile
@@ -0,0 +1,11 @@
+--- arch/lkl/Makefile.orig	2018-06-28 05:58:16 UTC
++++ arch/lkl/Makefile
+@@ -2,7 +2,7 @@ KBUILD_CFLAGS += -fno-builtin
+ 
+ KBUILD_CFLAGS += -fno-builtin
+ 
+-ifneq (,$(filter $(OUTPUT_FORMAT),elf64-x86-64 elf64-x86-64-freebsd elf32-littlearm elf64-littleaarch64))
++ifneq (,$(filter $(OUTPUT_FORMAT),elf64-x86-64 elf64-x86-64-freebsd elf32-littlearm elf64-littleaarch64 elf64-powerpc-freebsd elf64-powerpcle-freebsd))
+ KBUILD_CFLAGS += -fPIC
+ else ifneq (,$(filter $(OUTPUT_FORMAT),pe-i386 pe-x86-64 ))
+ ifneq ($(OUTPUT_FORMAT),pe-x86-64)
diff --git a/filesystems/lkl/files/patch-arch_lkl_include_uapi_asm_host__ops.h b/filesystems/lkl/files/patch-arch_lkl_include_uapi_asm_host__ops.h
new file mode 100644
index 000000000000..a53b0a46ac97
--- /dev/null
+++ b/filesystems/lkl/files/patch-arch_lkl_include_uapi_asm_host__ops.h
@@ -0,0 +1,11 @@
+--- arch/lkl/include/uapi/asm/host_ops.h.orig	2018-06-28 05:58:16 UTC
++++ arch/lkl/include/uapi/asm/host_ops.h
+@@ -7,7 +7,7 @@ struct lkl_jmp_buf {
+ struct lkl_tls_key;
+ typedef unsigned long lkl_thread_t;
+ struct lkl_jmp_buf {
+-	unsigned long buf[32];
++	unsigned long buf[128];
+ };
+ 
+ /**
diff --git a/filesystems/lkl/files/patch-Makefile b/filesystems/lkl/files/patch-tools_lkl_Makefile
similarity index 79%
rename from filesystems/lkl/files/patch-Makefile
rename to filesystems/lkl/files/patch-tools_lkl_Makefile
index 09b164e2c5f6..1a41f1afa466 100644
--- a/filesystems/lkl/files/patch-Makefile
+++ b/filesystems/lkl/files/patch-tools_lkl_Makefile
@@ -1,6 +1,6 @@
---- Makefile.orig	2018-06-12 22:43:19 UTC
-+++ Makefile
-@@ -61,10 +61,10 @@ endif
+--- tools/lkl/Makefile.orig	2018-06-28 05:58:16 UTC
++++ tools/lkl/Makefile
+@@ -62,10 +62,10 @@ $(OUTPUT)lib/lkl.o: bin/stat
  
  # rule to build lkl.o
  $(OUTPUT)lib/lkl.o: bin/stat
diff --git a/filesystems/lkl/files/patch-tools_lkl_Makefile.autoconf b/filesystems/lkl/files/patch-tools_lkl_Makefile.autoconf
new file mode 100644
index 000000000000..d6d2174bd1d6
--- /dev/null
+++ b/filesystems/lkl/files/patch-tools_lkl_Makefile.autoconf
@@ -0,0 +1,24 @@
+--- tools/lkl/Makefile.autoconf.orig	2018-06-28 05:58:16 UTC
++++ tools/lkl/Makefile.autoconf
+@@ -1,4 +1,4 @@
+-POSIX_HOSTS=elf64-x86-64 elf32-i386 elf64-x86-64-freebsd elf32-littlearm elf64-littleaarch64
++POSIX_HOSTS=elf64-x86-64 elf32-i386 elf64-x86-64-freebsd elf32-littlearm elf64-littleaarch64 elf64-powerpc-freebsd elf64-powerpcle-freebsd
+ NT_HOSTS=pe-i386 pe-x86-64
+ 
+ define set_autoconf_var
+@@ -51,13 +51,13 @@ define posix_host
+   CFLAGS += -fPIC -pthread
+   SOSUF := .so
+   $(if $(call is_defined,__ANDROID__),$(call android_host),LDLIBS += -lrt -lpthread)
+-  $(if $(filter $(1),elf64-x86-64-freebsd),$(call bsd_host))
++  $(if $(filter $(1),elf64-x86-64-freebsd elf64-powerpc-freebsd elf64-powerpcle-freebsd),$(call bsd_host))
+   $(if $(filter yes,$(dpdk)),$(call virtio_net_dpdk))
+   $(if $(filter yes,$(vde)),$(call virtio_net_vde))
+   $(if $(strip $(call find_include,fuse.h)),$(call set_autoconf_var,FUSE,y))
+   $(if $(strip $(call find_include,archive.h)),$(call set_autoconf_var,ARCHIVE,y))
+   $(if $(strip $(call find_include,linux/if_tun.h)),$(call set_autoconf_var,VIRTIO_NET_MACVTAP,y))
+-  $(if $(filter $(1),elf64-x86-64-freebsd),$(call set_autoconf_var,NEEDS_LARGP,y))
++  $(if $(filter $(1),elf64-x86-64-freebsd elf64-powerpc-freebsd elf64-powerpcle-freebsd),$(call set_autoconf_var,NEEDS_LARGP,y))
+ endef
+ 
+ define nt64_host
diff --git a/filesystems/lkl/files/patch-Targets b/filesystems/lkl/files/patch-tools_lkl_Targets
similarity index 76%
rename from filesystems/lkl/files/patch-Targets
rename to filesystems/lkl/files/patch-tools_lkl_Targets
index e1fe24075c09..c50ca4e32ac6 100644
--- a/filesystems/lkl/files/patch-Targets
+++ b/filesystems/lkl/files/patch-tools_lkl_Targets
@@ -1,6 +1,6 @@
---- Targets.orig	2018-06-12 22:43:19 UTC
-+++ Targets
-@@ -10,15 +10,6 @@ LDLIBS_lib/hijack/liblkl-hijack-$(LKL_HOST_CONFIG_ANDR
+--- tools/lkl/Targets.orig	2018-06-28 05:58:16 UTC
++++ tools/lkl/Targets
+@@ -10,15 +10,6 @@ LDLIBS_lklfuse-y := -lfuse
  progs-$(LKL_HOST_CONFIG_FUSE) += lklfuse
  LDLIBS_lklfuse-y := -lfuse
  
diff --git a/filesystems/lkl/files/patch-tools_lkl_lib_virtio__blk.c b/filesystems/lkl/files/patch-tools_lkl_lib_virtio__blk.c
new file mode 100644
index 000000000000..4a5ab34f43bb
--- /dev/null
+++ b/filesystems/lkl/files/patch-tools_lkl_lib_virtio__blk.c
@@ -0,0 +1,20 @@
+--- tools/lkl/lib/virtio_blk.c.orig	2018-06-28 05:58:16 UTC
++++ tools/lkl/lib/virtio_blk.c
+@@ -51,7 +51,7 @@ static int blk_enqueue(struct virtio_dev *dev, int q, 
+ 
+ 	lkl_req.type = le32toh(h->type);
+ 	lkl_req.prio = le32toh(h->ioprio);
+-	lkl_req.sector = le32toh(h->sector);
++	lkl_req.sector = le64toh(h->sector);
+ 	lkl_req.buf = &req->buf[1];
+ 	lkl_req.count = req->buf_count - 2;
+ 
+@@ -98,7 +98,7 @@ int lkl_disk_add(struct lkl_disk *disk)
+ 		ret = -LKL_ENOMEM;
+ 		goto out_free;
+ 	}
+-	dev->config.capacity = capacity / 512;
++	dev->config.capacity = htole64(capacity / 512);
+ 
+ 	ret = virtio_dev_setup(&dev->dev, 1, 32);
+ 	if (ret)