Skip to content

Commit 20cd54d

Browse files
committed
qemu: experimental support for PPC64LE
Signed-off-by: Akihiro Suda <[email protected]>
1 parent 612d0d7 commit 20cd54d

27 files changed

+135
-26
lines changed

Kconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ config GUESTAGENT_ARCH_S390X
3737
Build lima-guestagent for "s390x" Arch
3838
default y
3939

40+
config GUESTAGENT_ARCH_PPC64LE
41+
bool "guestagent Arch: ppc64le"
42+
help
43+
Build lima-guestagent for "ppc64le" Arch
44+
default y
45+
4046
config GUESTAGENT_COMPRESS
4147
bool "guestagent compress"
4248
help

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ LINUX_GUESTAGENT_PATH_COMMON = _output/share/lima/lima-guestagent.Linux-
273273
# How to add architecture specific guestagent:
274274
# 1. Add the architecture to GUESTAGENT_ARCHS
275275
# 2. Add ENVS_$(*_GUESTAGENT_PATH_COMMON)<arch> to set GOOS, GOARCH, and other necessary environment variables
276-
LINUX_GUESTAGENT_ARCHS = aarch64 armv7l riscv64 s390x x86_64
276+
LINUX_GUESTAGENT_ARCHS = aarch64 armv7l ppc64le riscv64 s390x x86_64
277277

278278
ifeq ($(CONFIG_GUESTAGENT_OS_LINUX),y)
279279
ALL_GUESTAGENTS_NOT_COMPRESSED += $(addprefix $(LINUX_GUESTAGENT_PATH_COMMON),$(LINUX_GUESTAGENT_ARCHS))
@@ -321,6 +321,7 @@ additional-guestagents: $(ADDITIONAL_GUESTAGENTS)
321321
# environment variables for linx-guestagent. these variable are used for checking force build.
322322
ENVS_$(LINUX_GUESTAGENT_PATH_COMMON)aarch64 = CGO_ENABLED=0 GOOS=linux GOARCH=arm64
323323
ENVS_$(LINUX_GUESTAGENT_PATH_COMMON)armv7l = CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7
324+
ENVS_$(LINUX_GUESTAGENT_PATH_COMMON)ppc64le = CGO_ENABLED=0 GOOS=linux GOARCH=ppc64le
324325
ENVS_$(LINUX_GUESTAGENT_PATH_COMMON)riscv64 = CGO_ENABLED=0 GOOS=linux GOARCH=riscv64
325326
ENVS_$(LINUX_GUESTAGENT_PATH_COMMON)s390x = CGO_ENABLED=0 GOOS=linux GOARCH=s390x
326327
ENVS_$(LINUX_GUESTAGENT_PATH_COMMON)x86_64 = CGO_ENABLED=0 GOOS=linux GOARCH=amd64

cmd/limactl/editflags/editflags.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ func RegisterCreate(cmd *cobra.Command, commentPrefix string) {
7373
registerEdit(cmd, commentPrefix)
7474
flags := cmd.Flags()
7575

76-
flags.String("arch", "", commentPrefix+"Machine architecture (x86_64, aarch64, riscv64, armv7l, s390x)") // colima-compatible
76+
flags.String("arch", "", commentPrefix+"Machine architecture (x86_64, aarch64, riscv64, armv7l, s390x, ppc64le)") // colima-compatible
7777
_ = cmd.RegisterFlagCompletionFunc("arch", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) {
78-
return []string{"x86_64", "aarch64", "riscv64", "armv7l", "s390x"}, cobra.ShellCompDirectiveNoFileComp
78+
return []string{"x86_64", "aarch64", "riscv64", "armv7l", "s390x", "ppc64le"}, cobra.ShellCompDirectiveNoFileComp
7979
})
8080

8181
flags.String("containerd", "", commentPrefix+"containerd mode (user, system, user+system, none)")

config.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ CONFIG_GUESTAGENT_OS_LINUX=y
22
CONFIG_GUESTAGENT_ARCH_X8664=y
33
CONFIG_GUESTAGENT_ARCH_AARCH64=y
44
CONFIG_GUESTAGENT_ARCH_ARMV7L=y
5+
CONFIG_GUESTAGENT_ARCH_PPC64LE=y
56
CONFIG_GUESTAGENT_ARCH_RISCV64=y
67
CONFIG_GUESTAGENT_ARCH_S390X=y
78
CONFIG_GUESTAGENT_COMPRESS=n

hack/inject-cmdline-to-template.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ case "${arch}" in
2626
amd64 | x86_64) arch=x86_64 ;;
2727
aarch64 | arm64) arch=aarch64 ;;
2828
armv7l | armhf) arch=armv7l ;;
29+
ppc64el | ppc64le) arch=ppc64le ;;
30+
s390x) arch=s390x ;;
2931
riscv64) arch=riscv64 ;;
3032
*)
3133
echo "Unsupported arch: ${arch}" >&2

hack/update-template.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ function limayaml_arch() {
8484
arch=${arch/amd64/x86_64}
8585
arch=${arch/arm64/aarch64}
8686
arch=${arch/armhf/armv7l}
87+
arch=${arch/ppc64el/ppc64le}
8788
echo "${arch}"
8889
}
8990

pkg/limatmpl/locator.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,8 @@ var archKeywords = map[string]limayaml.Arch{
139139
"arm64": limayaml.AARCH64,
140140
"armhf": limayaml.ARMV7L,
141141
"armv7l": limayaml.ARMV7L,
142+
"ppc64el": limayaml.PPC64LE,
143+
"ppc64le": limayaml.PPC64LE,
142144
"riscv64": limayaml.RISCV64,
143145
"s390x": limayaml.S390X,
144146
"x86_64": limayaml.X8664,

pkg/limayaml/defaults.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ func defaultCPUType() CPUType {
7777
AARCH64: "max",
7878
ARMV7L: "max",
7979
X8664: defaultX8664,
80+
PPC64LE: "max",
8081
RISCV64: "max",
8182
S390X: "max",
8283
}
@@ -1095,6 +1096,8 @@ func NewArch(arch string) Arch {
10951096
}
10961097
logrus.Warnf("Unknown arm: %d", arm)
10971098
return arch
1099+
case "ppc64le":
1100+
return PPC64LE
10981101
case "riscv64":
10991102
return RISCV64
11001103
case "s390x":
@@ -1283,9 +1286,10 @@ func IsNativeArch(arch Arch) bool {
12831286
nativeX8664 := arch == X8664 && runtime.GOARCH == "amd64"
12841287
nativeAARCH64 := arch == AARCH64 && runtime.GOARCH == "arm64"
12851288
nativeARMV7L := arch == ARMV7L && runtime.GOARCH == "arm" && goarm() == 7
1289+
nativePPC64LE := arch == PPC64LE && runtime.GOARCH == "ppc64le"
12861290
nativeRISCV64 := arch == RISCV64 && runtime.GOARCH == "riscv64"
12871291
nativeS390X := arch == S390X && runtime.GOARCH == "s390x"
1288-
return nativeX8664 || nativeAARCH64 || nativeARMV7L || nativeRISCV64 || nativeS390X
1292+
return nativeX8664 || nativeAARCH64 || nativeARMV7L || nativePPC64LE || nativeRISCV64 || nativeS390X
12891293
}
12901294

12911295
func unique(s []string) []string {

pkg/limayaml/defaults_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ func TestFillDefault(t *testing.T) {
5050
t.Skipf("unsupported GOARM: %d", arm)
5151
}
5252
arch = ARMV7L
53+
case "ppc64le":
54+
arch = PPC64LE
5355
case "riscv64":
5456
arch = RISCV64
5557
case "s390x":
@@ -340,6 +342,7 @@ func TestFillDefault(t *testing.T) {
340342
AARCH64: "arm64",
341343
ARMV7L: "armhf",
342344
X8664: "amd64",
345+
PPC64LE: "ppc64le",
343346
RISCV64: "riscv64",
344347
S390X: "s390x",
345348
},
@@ -559,6 +562,7 @@ func TestFillDefault(t *testing.T) {
559562
AARCH64: "uber-arm",
560563
ARMV7L: "armv8",
561564
X8664: "pentium",
565+
PPC64LE: "power10",
562566
RISCV64: "sifive-u54",
563567
S390X: "z14",
564568
},

pkg/limayaml/limayaml.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ const (
7676
X8664 Arch = "x86_64"
7777
AARCH64 Arch = "aarch64"
7878
ARMV7L Arch = "armv7l"
79+
PPC64LE Arch = "ppc64le"
7980
RISCV64 Arch = "riscv64"
8081
S390X Arch = "s390x"
8182

@@ -91,7 +92,7 @@ const (
9192

9293
var (
9394
OSTypes = []OS{LINUX}
94-
ArchTypes = []Arch{X8664, AARCH64, ARMV7L, RISCV64, S390X}
95+
ArchTypes = []Arch{X8664, AARCH64, ARMV7L, PPC64LE, RISCV64, S390X}
9596
MountTypes = []MountType{REVSSHFS, NINEP, VIRTIOFS, WSLMount}
9697
VMTypes = []VMType{QEMU, VZ, WSL2}
9798
)

0 commit comments

Comments
 (0)