Skip to contentSkip to conversation

Adding qemuppc64

PATCH In review Armin Kuster 2 participants 7 messages Jul 3, 2016 – Jul 11, 2016

lore
Share & tools
lore
#0 lore raw

v2 cover Adding qemuppc64

From: Armin Kuster <[email protected]>

Please consider these changes to add qemuppc64 support.

Added qemu-native support (hope I did it correctly) Update kernel SRCREV

[Yocto #9778]

The following changes since commit 5c11e365e19357f721c49d076971567e7b64b61b:

lib/oeqa: add Galculator to SDK and runtime tests (2016-07-01 16:22:48 +0100)

are available in the git repository at:

http://git.yoctoproject.org/git/poky-contrib akuster/qemuppc64v2
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=akuster/qemuppc64v2

Armin Kuster (5):
machine: add qemuppc64 machine
linux-yocto: add qemuppc64 kernel support
runqemu: Add qemuppc64
qemu: add ppc64 to QEMU_TARGETS
qeme: add ppc64 to poky QEMU_TARGET

 meta-poky/conf/distro/poky.conf              |  4 +++-
 meta/conf/machine/qemuppc64.conf             | 13 +++++++++++++
 meta/recipes-devtools/qemu/qemu.inc          |  2 +-
 meta/recipes-kernel/linux/linux-yocto_4.1.bb |  4 +++-
 meta/recipes-kernel/linux/linux-yocto_4.4.bb |  4 +++-
 scripts/runqemu                              |  9 ++++++---
 scripts/runqemu-internal                     | 24 ++++++++++++++++++------
 7 files changed, 47 insertions(+), 13 deletions(-)
 create mode 100644 meta/conf/machine/qemuppc64.conf
Signature · 1 line
1.9.1
#1 lore raw

PATCH v2 1/5 machine: add qemuppc64 machine

---
 meta/conf/machine/qemuppc64.conf | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 meta/conf/machine/qemuppc64.conf
meta/conf/machine/qemuppc64.conf new file +13 -0
new file mode 100644
index 0000000..5501101
@@ -0,0 +1,13 @@
+#@TYPE: Machine
+#@NAME: qemu PPC 64 Emulator setup
+#@DESCRIPTION: Machine configuration for running an PPC system under qemu emulation
+
+require conf/machine/include/qemu.inc
+DEFAULTTUNE ?= "ppc64p6"
+require conf/machine/include/tune-power6.inc
+
+KERNEL_IMAGETYPE = "vmlinux"
+
+SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
+
+MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
Signature · 1 line
1.9.1
#2 lore raw

PATCH v2 2/5 linux-yocto: add qemuppc64 kernel support

In reply to Armin Kuster

From: Armin Kuster <[email protected]>

---
 meta/recipes-kernel/linux/linux-yocto_4.1.bb | 4 +++-
 meta/recipes-kernel/linux/linux-yocto_4.4.bb | 4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)
meta/recipes-kernel/linux/linux-yocto_4.1.bb +3 -1
index b2cbc60..9175223 100644
@@ -7,6 +7,7 @@ KBRANCH_qemuarm  ?= "standard/arm-versatile-926ejs"
 KBRANCH_qemuarm64 ?= "standard/qemuarm64"
 KBRANCH_qemumips ?= "standard/mti-malta32"
 KBRANCH_qemuppc  ?= "standard/qemuppc"
+KBRANCH_qemuppc64  ?= "standard/qemuppc"
 KBRANCH_qemux86  ?= "standard/base"
 KBRANCH_qemux86-64 ?= "standard/base"
 KBRANCH_qemumips64 ?= "standard/mti-malta64"
@@ -15,6 +16,7 @@ SRCREV_machine_qemuarm ?= "df8f2bd306f5e22590991faee46e28f671fa19b3"
 SRCREV_machine_qemuarm64 ?= "9f166e918f63dd7214ad0388d64709d33f2a14a3"
 SRCREV_machine_qemumips ?= "1bb60e693b913dacad698bec1cc08b350785e3d1"
 SRCREV_machine_qemuppc ?= "9f166e918f63dd7214ad0388d64709d33f2a14a3"
+SRCREV_machine_qemuppc64 ?= "9f166e918f63dd7214ad0388d64709d33f2a14a3"
 SRCREV_machine_qemux86 ?= "9f166e918f63dd7214ad0388d64709d33f2a14a3"
 SRCREV_machine_qemux86-64 ?= "9f166e918f63dd7214ad0388d64709d33f2a14a3"
 SRCREV_machine_qemumips64 ?= "b0e7bb69566a922a661c4902e496dce98cefeab9"
@@ -31,7 +33,7 @@ PV = "${LINUX_VERSION}+git${SRCPV}"
 KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
-COMPATIBLE_MACHINE = "qemuarm|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64"
+COMPATIBLE_MACHINE = "qemuarm|qemuarm64|qemux86|qemuppc|qemuppc64|qemumips|qemumips64|qemux86-64"
 
 # Functionality flags
 KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc"
meta/recipes-kernel/linux/linux-yocto_4.4.bb +3 -1
index 49ffd8d..218d214 100644
@@ -7,6 +7,7 @@ KBRANCH_qemuarm  ?= "standard/arm-versatile-926ejs"
 KBRANCH_qemuarm64 ?= "standard/qemuarm64"
 KBRANCH_qemumips ?= "standard/mti-malta32"
 KBRANCH_qemuppc  ?= "standard/qemuppc"
+KBRANCH_qemuppc64  ?= "standard/qemuppc"
 KBRANCH_qemux86  ?= "standard/base"
 KBRANCH_qemux86-64 ?= "standard/base"
 KBRANCH_qemumips64 ?= "standard/mti-malta64"
@@ -15,6 +16,7 @@ SRCREV_machine_qemuarm ?= "6f2317f8a00a3eb6a2b28ca51f336f61eb6fe160"
 SRCREV_machine_qemuarm64 ?= "13852755ecbf491848afbe40e66fc152bc70915b"
 SRCREV_machine_qemumips ?= "9fc8fc49e5065f1ee76e964a4c0257291ab3e62a"
 SRCREV_machine_qemuppc ?= "13852755ecbf491848afbe40e66fc152bc70915b"
+SRCREV_machine_qemuppc64 ?= "13852755ecbf491848afbe40e66fc152bc70915b"
 SRCREV_machine_qemux86 ?= "13852755ecbf491848afbe40e66fc152bc70915b"
 SRCREV_machine_qemux86-64 ?= "13852755ecbf491848afbe40e66fc152bc70915b"
 SRCREV_machine_qemumips64 ?= "d1c1f36412d196b560ed9f19392e291b5492b94c"
@@ -31,7 +33,7 @@ PV = "${LINUX_VERSION}+git${SRCPV}"
 KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
-COMPATIBLE_MACHINE = "qemuarm|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64"
+COMPATIBLE_MACHINE = "qemuarm|qemuarm64|qemux86|qemuppc|qemuppc64|qemumips|qemumips64|qemux86-64"
 
 # Functionality flags
 KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc"
Signature · 1 line
1.9.1
#3 lore raw

PATCH v2 3/5 runqemu: Add qemuppc64

In reply to Armin Kuster

From: Armin Kuster <[email protected]>

---
 scripts/runqemu          |  9 ++++++---
 scripts/runqemu-internal | 24 ++++++++++++++++++------
 2 files changed, 24 insertions(+), 9 deletions(-)
scripts/runqemu +6 -3
index de05035..9c73e25 100755
@@ -121,7 +121,7 @@ while true; do
     arg=${1}
     case "$arg" in
         "qemux86" | "qemux86-64" | "qemuarm" | "qemuarm64" | "qemumips" | "qemumipsel" | \
-        "qemumips64" | "qemush4"  | "qemuppc" | "qemumicroblaze" | "qemuzynq" | "qemuzynqmp")
+        "qemumips64" | "qemush4"  | "qemuppc" | "qemuppc64" | "qemumicroblaze" | "qemuzynq" | "qemuzynqmp")
             [ -z "$MACHINE" -o "$MACHINE" = "$arg" ] && MACHINE=$arg || \
                 error "conflicting MACHINE types [$MACHINE] and [$arg]"
             ;;
@@ -251,13 +251,13 @@ fi
 if [ -z "$MACHINE" ]; then
     if [ "$IS_VM" = "true" ]; then
         [ "x$FSTYPE" = "xwic" ] && filename=$ROOTFS || filename=$VM
-        MACHINE=`basename $filename | sed -n 's/.*\(qemux86-64\|qemux86\|qemuarm64\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemush4\).*/\1/p'`
+        MACHINE=`basename $filename | sed -n 's/.*\(qemux86-64\|qemux86\|qemuarm64\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemuppc64\|qemush4\).*/\1/p'`
         if [ -z "$MACHINE" ]; then
             error "Unable to set MACHINE from image filename [$VM]"
         fi
         echo "Set MACHINE to [$MACHINE] based on image [$VM]"
     else
-        MACHINE=`basename $KERNEL | sed -n 's/.*\(qemux86-64\|qemux86\|qemuarm64\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemush4\).*/\1/p'`
+        MACHINE=`basename $KERNEL | sed -n 's/.*\(qemux86-64\|qemux86\|qemuarm64\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemuppc64\|qemush4\).*/\1/p'`
         if [ -z "$MACHINE" ]; then
             error "Unable to set MACHINE from kernel filename [$KERNEL]"
         fi
@@ -344,6 +344,9 @@ QEMUSH4_DEFAULT_FSTYPE=ext4
 QEMUPPC_DEFAULT_KERNEL=vmlinux-qemuppc.bin
 QEMUPPC_DEFAULT_FSTYPE=ext4
 
+QEMUPPC64_DEFAULT_KERNEL=vmlinux-qemuppc64.bin
+QEMUPPC64_DEFAULT_FSTYPE=ext4
+
 QEMUMICROBLAZE_DEFAULT_KERNEL=linux.bin.ub
 QEMUMICROBLAZE_DEFAULT_FSTYPE=cpio
 
scripts/runqemu-internal +18 -6
index ea1a307..e8cc1a1 100755
@@ -438,15 +438,27 @@ config_qemumips() {
 }
 
 config_qemuppc() {
-    set_mem_size 256
-    QEMU=qemu-system-ppc
-    MACHINE_SUBTYPE=mac99
-    CPU_SUBTYPE=G4
+    case "$MACHINE" in
+        qemuppc)
+            set_mem_size 256
+            QEMU=qemu-system-ppc
+            MACHINE_SUBTYPE=mac99
+            CPU_SUBTYPE=G4
+            MODEL=pcnet
+        ;;
+        qemuppc64)
+            set_mem_size 1024
+            QEMU=qemu-system-ppc64
+            MACHINE_SUBTYPE=pseries
+            CPU_SUBTYPE=POWER7
+            MODEL=e1000
+        ;;
+    esac
     QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS"
     if [ "$SLIRP_ENABLED" = "yes" ]; then
         QEMU_NETWORK_CMD=""
     else
-        QEMU_NETWORK_CMD="-net nic,model=pcnet $QEMU_TAP_CMD"
+        QEMU_NETWORK_CMD="-net nic,model=$MODEL $QEMU_TAP_CMD"
     fi
     if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" -o "$FSTYPE" = "wic" ]; then
         KERNCMDLINE="root=$DROOT rw console=ttyS0 console=tty $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
@@ -543,7 +555,7 @@ case "$MACHINE" in
     "qemumips" | "qemumipsel" | "qemumips64")
         config_qemumips
         ;;
-    "qemuppc")
+    "qemuppc" | "qemuppc64")
         config_qemuppc
         ;;
     "qemush4")
Signature · 1 line
1.9.1
#4 lore raw

PATCH v2 4/5 qemu: add ppc64 to QEMU_TARGETS

In reply to Armin Kuster

From: Armin Kuster <[email protected]>

---
 meta/recipes-devtools/qemu/qemu.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-devtools/qemu/qemu.inc +1 -1
index b865223..93d6317 100644
@@ -12,7 +12,7 @@ BBCLASSEXTEND = "native nativesdk"
 PR = "r1"
 
 # QEMU_TARGETS is overridable variable
-QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 mips64el ppc sh4 x86_64"
+QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 mips64el ppc ppc64 sh4 x86_64"
 
 SRC_URI = "\
     file://powerpc_rom.bin \
Signature · 1 line
1.9.1
#5 lore raw

Re: [PATCH 4/5] qemu: add ppc64 to QEMU_TARGETS

Quoted 5 lines · Armin Kuster

-QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 mips64el ppc sh4 x86_64"
+QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 mips64el ppc ppc64 sh4 x86_64"

Is this series meant to support user-mode qemu yet?

NOTE: Running intercept scripts:
NOTE: > Executing update_font_cache intercept ...
Invalid data memory access: 0x00000041bc926008
NIP 000000400084055c LR 00000040008404ac CTR 0000000000000000 XER
0000000000000000 CPU#0
MSR 8000000102806000 HID0 0000000000000000 HF 8000000002806000 idx 0 TB 00005165 22187490268086
GPR00 0000004000840480 000000400081e8b0 0000004000869e00 00000043789e6010 GPR04 0000004000849478 000000000000000b 0000000000000002 0000000000000003 GPR08 0000004000849482 00000041bc925ff4 0000000000000000 000000400086600a GPR12 0000000022242442 0000000000000000 00000040008634c0 0000004000847c18 GPR16 0000004000863188 0000000000000000 000000400081ed60 000000400081ed68 GPR20 000000400081ea10 0000000000000013 0000000000000000 0000000000000000 GPR24 0000000000000001 0000004000000821 000000004a01ffff 0000000087e8d51f GPR28 00000043789e6010 000000002500ffff 0000004000866000 000000400081e8b0
CR 22242444 [ E E E G E G G G ] RES ffffffffffffffff
FPR00 0000000000000000 0000000000000000 0000000000000000 0000000000000000 FPR04 0000000000000000 0000000000000000 0000000000000000 0000000000000000 FPR08 0000000000000000 0000000000000000 0000000000000000 0000000000000000 FPR12 0000000000000000 0000000000000000 0000000000000000 0000000000000000 FPR16 0000000000000000 0000000000000000 0000000000000000 0000000000000000 FPR20 0000000000000000 0000000000000000 0000000000000000 0000000000000000 FPR24 0000000000000000 0000000000000000 0000000000000000 0000000000000000 FPR28 0000000000000000 0000000000000000 0000000000000000 0000000000000000 FPSCR 0000000000000000
qemu: uncaught target signal 11 (Segmentation fault) - core dumped Segmentation fault

Ross

#6 lore raw

PATCH v2 5/5 qeme: add ppc64 to poky QEMU_TARGET

In reply to Armin Kuster

From: Armin Kuster <[email protected]>

---
 meta-poky/conf/distro/poky.conf | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
meta-poky/conf/distro/poky.conf +3 -1
index 6cae44e..361e2f1 100644
@@ -28,6 +28,7 @@ PREFERRED_VERSION_linux-yocto_qemuarm ?= "4.4%"
 PREFERRED_VERSION_linux-yocto_qemumips ?= "4.4%"
 PREFERRED_VERSION_linux-yocto_qemumips64 ?= "4.4%"
 PREFERRED_VERSION_linux-yocto_qemuppc ?= "4.4%"
+PREFERRED_VERSION_linux-yocto_qemuppc64 ?= "4.4%"
 
 SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}"
 SDKPATH = "/opt/${DISTRO}/${SDK_VERSION}"
@@ -40,12 +41,13 @@ DISTRO_EXTRA_RDEPENDS_append_qemuarm = " ${POKYQEMUDEPS}"
 DISTRO_EXTRA_RDEPENDS_append_qemuarm64 = " ${POKYQEMUDEPS}"
 DISTRO_EXTRA_RDEPENDS_append_qemumips = " ${POKYQEMUDEPS}"
 DISTRO_EXTRA_RDEPENDS_append_qemuppc = " ${POKYQEMUDEPS}"
+DISTRO_EXTRA_RDEPENDS_append_qemuppc64 = " ${POKYQEMUDEPS}"
 DISTRO_EXTRA_RDEPENDS_append_qemux86 = " ${POKYQEMUDEPS}"
 DISTRO_EXTRA_RDEPENDS_append_qemux86-64 = " ${POKYQEMUDEPS}"
 
 TCLIBCAPPEND = ""
 
-QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 ppc x86_64"
+QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 ppc ppc64 x86_64"
 # Other QEMU_TARGETS "mips64el sh4"
 
 PREMIRRORS ??= "\
Signature · 1 line
1.9.1