1 From 00b23156c45c519bc12841dc8773229295af1832 Mon Sep 17 00:00:00 2001
2 From: Jackie Huang <jackie.huang@windriver.com>
3 Date: Tue, 23 Jan 2024 09:49:13 +0800
4 Subject: [PATCH 1/2] qemu: add support for arm64
6 Add the following patches to support for building
8 - Remove dependency on gcc-alpha-linux-gnu, which
9 is not availabel for arm64.
10 - Remove unsupported BIOS targets.
11 - Add package qemu-system-arm
14 PASS: downloader -s -b on x86-64 host
15 PASS: downloader -s -b on arm64 host
16 PASS: build-pkgs on x86-64 host
17 PASS: build-image on x86-64 host
18 PASS: build-pkgs on arm64 host
19 PASS: build-image on arm64 host
20 PASS: Deploy AIO-SX on x86-64 target
21 PASS: Deploy AIO-SX on arm64 target
26 Depends-On: https://review.opendev.org/c/starlingx/root/+/889686
28 Change-Id: I3b2a81923ee0f5c5bad1ddcde4a760fea257ff15
29 Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
31 .../0008-ARM-remove-gcc-alpha-linux-gnu.patch | 31 +++++
32 .../0009-ARM-remove-BIOS-targets.patch | 124 ++++++++++++++++++
33 .../0010-ARM-add-pkg-qemu-system-arm.patch | 50 +++++++
34 qemu/debian/deb_patches/series_arm64 | 10 ++
35 4 files changed, 215 insertions(+)
36 create mode 100644 qemu/debian/deb_patches/0008-ARM-remove-gcc-alpha-linux-gnu.patch
37 create mode 100644 qemu/debian/deb_patches/0009-ARM-remove-BIOS-targets.patch
38 create mode 100644 qemu/debian/deb_patches/0010-ARM-add-pkg-qemu-system-arm.patch
39 create mode 100644 qemu/debian/deb_patches/series_arm64
41 diff --git a/qemu/debian/deb_patches/0008-ARM-remove-gcc-alpha-linux-gnu.patch b/qemu/debian/deb_patches/0008-ARM-remove-gcc-alpha-linux-gnu.patch
43 index 0000000..3edaa12
45 +++ b/qemu/debian/deb_patches/0008-ARM-remove-gcc-alpha-linux-gnu.patch
47 +From 10362ba97dbd9c861554c5ce7258b9dc26e7b95e Mon Sep 17 00:00:00 2001
48 +From: Jackie Huang <jackie.huang@windriver.com>
49 +Date: Sun, 21 Jan 2024 21:30:44 -0500
50 +Subject: [PATCH] ARM: remove dependency on gcc-alpha-linux-gnu
52 +gcc-alpha-linux-gnu doesn't exist for arm64 according to:
53 +https://packages.debian.org/bullseye/gcc-alpha-linux-gnu
55 +So remove it from the dependency for arm64
57 +Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
59 + debian/control | 2 +-
60 + 1 file changed, 1 insertion(+), 1 deletion(-)
62 +diff --git a/debian/control b/debian/control
63 +index 57154e2..ebc5b59 100644
66 +@@ -125,7 +125,7 @@ Build-Depends-Indep:
67 + device-tree-compiler,
68 + # gcc-s390x-linux-gnu,
69 + # qemu-palcode/palcode-clipper
70 +- gcc-alpha-linux-gnu,
71 ++# gcc-alpha-linux-gnu,
72 + # skiboot firmware, openbios
73 + # gcc-powerpc64-linux-gnu,
78 diff --git a/qemu/debian/deb_patches/0009-ARM-remove-BIOS-targets.patch b/qemu/debian/deb_patches/0009-ARM-remove-BIOS-targets.patch
80 index 0000000..c3651f0
82 +++ b/qemu/debian/deb_patches/0009-ARM-remove-BIOS-targets.patch
84 +From f1be5a19e4b8f46f1475f0dbaabba29cc4dd2424 Mon Sep 17 00:00:00 2001
85 +From: Jackie Huang <jackie.huang@windriver.com>
86 +Date: Sun, 21 Jan 2024 23:27:14 -0500
87 +Subject: [PATCH] ARM: remove unsupported BIOS target
89 +The following BIOS related targets are for x86 only,
90 +- build-x86-optionrom
94 +Remove these targets for ARM.
96 +Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
98 + debian/rules | 88 ++++++++++++++++++++++++++--------------------------
99 + 1 file changed, 44 insertions(+), 44 deletions(-)
101 +diff --git a/debian/rules b/debian/rules
102 +index efa092c..01764cc 100755
105 +@@ -405,55 +405,55 @@ endif
109 +-build-x86-optionrom: b/optionrom/built
111 +- mkdir -p b/optionrom
112 +- ${MAKE} -f ${CURDIR}/debian/optionrom.mak -C b/optionrom SRC_PATH="${CURDIR}" all
114 +-install-x86-optionrom: build-x86-optionrom | ${sysdataidir}
115 +- ${MAKE} -f ${CURDIR}/debian/optionrom.mak -C b/optionrom SRC_PATH="${CURDIR}" install DESTDIR="${CURDIR}/${sysdataidir}"
116 +-sysdata-components += x86-optionrom
117 ++#build-x86-optionrom: b/optionrom/built
118 ++#b/optionrom/built:
119 ++# mkdir -p b/optionrom
120 ++# ${MAKE} -f ${CURDIR}/debian/optionrom.mak -C b/optionrom SRC_PATH="${CURDIR}" all
122 ++#install-x86-optionrom: build-x86-optionrom | ${sysdataidir}
123 ++# ${MAKE} -f ${CURDIR}/debian/optionrom.mak -C b/optionrom SRC_PATH="${CURDIR}" install DESTDIR="${CURDIR}/${sysdataidir}"
124 ++#sysdata-components += x86-optionrom
127 + # The Makefile is too complex and forces current date to be embedded to binary
128 +-build-sgabios: b/sgabios/sgabios.bin
129 +-b/sgabios/sgabios.bin:
130 +- mkdir -p b/sgabios
131 +- cc -c -o b/sgabios/sgabios.o roms/sgabios/sgabios.S -Wall -Os -m32 -nostdlib \
132 +- -DBUILD_DATE="\"$$(LC_ALL=C date -u -r roms/sgabios/sgabios.S)\"" \
133 +- -DBUILD_SHORT_DATE="\"$$(date -u +%D -r roms/sgabios/sgabios.S)\"" \
134 +- -DBUILD_HOST=\"debian\" -DBUILD_USER=\"build\"
135 +- ld -T roms/sgabios/rom16.ld -nostdlib b/sgabios/sgabios.o -o b/sgabios/sgabios.elf
136 +- objcopy -O binary b/sgabios/sgabios.elf b/sgabios/sgabios.bin
137 +- cc -Wall -O2 -o b/sgabios/csum8 roms/sgabios/csum8.c
138 +- b/sgabios/csum8 b/sgabios/sgabios.bin
139 +-install-sgabios: b/sgabios/sgabios.bin
140 +- install -m 0644 $< ${sysdataidir}/sgabios.bin
141 +-sysdata-components += sgabios
142 ++#build-sgabios: b/sgabios/sgabios.bin
143 ++#b/sgabios/sgabios.bin:
144 ++# mkdir -p b/sgabios
145 ++# cc -c -o b/sgabios/sgabios.o roms/sgabios/sgabios.S -Wall -Os -m32 -nostdlib \
146 ++# -DBUILD_DATE="\"$$(LC_ALL=C date -u -r roms/sgabios/sgabios.S)\"" \
147 ++# -DBUILD_SHORT_DATE="\"$$(date -u +%D -r roms/sgabios/sgabios.S)\"" \
148 ++# -DBUILD_HOST=\"debian\" -DBUILD_USER=\"build\"
149 ++# ld -T roms/sgabios/rom16.ld -nostdlib b/sgabios/sgabios.o -o b/sgabios/sgabios.elf
150 ++# objcopy -O binary b/sgabios/sgabios.elf b/sgabios/sgabios.bin
151 ++# cc -Wall -O2 -o b/sgabios/csum8 roms/sgabios/csum8.c
152 ++# b/sgabios/csum8 b/sgabios/sgabios.bin
153 ++#install-sgabios: b/sgabios/sgabios.bin
154 ++# install -m 0644 $< ${sysdataidir}/sgabios.bin
155 ++#sysdata-components += sgabios
157 + ### qboot, aka bios-microvm
158 +-build-qboot: b/qboot/bios.bin
159 +-b/qboot/bios.bin: | b
161 +- meson setup roms/qboot b/qboot
163 +-install-qboot: b/qboot/bios.bin
164 +- install -m 0644 $< ${sysdataidir}/qboot.rom
165 +- # 5.0 & 5.1 compat symlink, can go for bullseye final
166 +- ln -s qboot.rom ${sysdataidir}/bios-microvm.bin
167 +-sysdata-components += qboot
169 +-### alpha firmware in roms/palcode-clipper
170 +-build-palcode-clipper: b/qemu-palcode/palcode-clipper
171 +-b/qemu-palcode/palcode-clipper: | b
172 +- cp -al roms/qemu-palcode b/
173 +-#XXX #1019011 (remove OPT= alternative when fixed)
174 +- ${MAKE} -C b/qemu-palcode CROSS=${ALPHAEV67_CROSSPFX} -k || \
175 +- ${MAKE} -C b/qemu-palcode CROSS=${ALPHAEV67_CROSSPFX} OPT=-O1
176 +- ${ALPHAEV67_CROSSPFX}strip b/qemu-palcode/palcode-clipper
177 +-install-palcode-clipper: b/qemu-palcode/palcode-clipper
178 +- install -m 0644 $< ${sysdataidir}/palcode-clipper
179 +-sysdata-components += palcode-clipper
180 ++#build-qboot: b/qboot/bios.bin
181 ++#b/qboot/bios.bin: | b
183 ++# meson setup roms/qboot b/qboot
185 ++#install-qboot: b/qboot/bios.bin
186 ++# install -m 0644 $< ${sysdataidir}/qboot.rom
187 ++# # 5.0 & 5.1 compat symlink, can go for bullseye final
188 ++# ln -s qboot.rom ${sysdataidir}/bios-microvm.bin
189 ++#sysdata-components += qboot
191 ++#### alpha firmware in roms/palcode-clipper
192 ++#build-palcode-clipper: b/qemu-palcode/palcode-clipper
193 ++#b/qemu-palcode/palcode-clipper: | b
194 ++# cp -al roms/qemu-palcode b/
195 ++##XXX #1019011 (remove OPT= alternative when fixed)
196 ++# ${MAKE} -C b/qemu-palcode CROSS=${ALPHAEV67_CROSSPFX} -k || \
197 ++# ${MAKE} -C b/qemu-palcode CROSS=${ALPHAEV67_CROSSPFX} OPT=-O1
198 ++# ${ALPHAEV67_CROSSPFX}strip b/qemu-palcode/palcode-clipper
199 ++#install-palcode-clipper: b/qemu-palcode/palcode-clipper
200 ++# install -m 0644 $< ${sysdataidir}/palcode-clipper
201 ++#sysdata-components += palcode-clipper
203 + ### vbootrom (npcm7xx)
204 + build-vbootrom: b/vbootrom/.built
208 diff --git a/qemu/debian/deb_patches/0010-ARM-add-pkg-qemu-system-arm.patch b/qemu/debian/deb_patches/0010-ARM-add-pkg-qemu-system-arm.patch
210 index 0000000..faea655
212 +++ b/qemu/debian/deb_patches/0010-ARM-add-pkg-qemu-system-arm.patch
214 +From d1d25e6dcad633b5f785c4b4192d9d10fa232f21 Mon Sep 17 00:00:00 2001
215 +From: Jackie Huang <jackie.huang@windriver.com>
216 +Date: Mon, 22 Jan 2024 00:13:08 -0500
217 +Subject: [PATCH] ARM: add package qemu-system-arm
219 +Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
221 + debian/control | 26 ++++++++++++++++++++++++++
222 + 1 file changed, 26 insertions(+)
224 +diff --git a/debian/control b/debian/control
225 +index ebc5b59..ed0e714 100644
226 +--- a/debian/control
227 ++++ b/debian/control
228 +@@ -243,6 +243,32 @@ Description: QEMU full system emulation binaries (x86)
229 + On x86 host hardware this package also enables KVM kernel virtual machine
230 + usage on systems which supports it.
232 ++Package: qemu-system-arm
233 ++Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
234 ++Multi-Arch: foreign
235 ++Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (= ${binary:Version}), qemu-system-data (>> ${source:Upstream-Version}~),
236 ++Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils,
237 ++# aarch64 arm uses bootroms
239 ++ qemu-efi-aarch64, qemu-efi-arm,
240 ++ qemu-block-extra (= ${binary:Version}),
241 ++Suggests: samba, vde2,
242 ++Provides: qemu-kvm [linux-arm64 linux-armhf linux-armel], ${sysprovides:arm}
243 ++Breaks: qemu-kvm [linux-arm64 linux-armhf linux-armel]
244 ++Replaces: qemu-kvm [linux-arm64 linux-armhf linux-armel]
245 ++Description: QEMU full system emulation binaries (arm)
246 ++ QEMU is a fast processor emulator: currently the package supports
247 ++ ARM emulation. By using dynamic translation it achieves
248 ++ reasonable speed while being easy to port on new host CPUs.
250 ++ This package provides the full system emulation binaries to emulate
251 ++ the following arm hardware: ${sysarch:arm}.
253 ++ In system emulation mode QEMU emulates a full system, including a processor
254 ++ and various peripherals. It enables easier testing and debugging of system
255 ++ code. It can also be used to provide virtual hosting of several virtual
256 ++ machines on a single server.
258 + Package: qemu-utils
259 + Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
260 + Multi-Arch: foreign
264 diff --git a/qemu/debian/deb_patches/series_arm64 b/qemu/debian/deb_patches/series_arm64
266 index 0000000..64200a0
268 +++ b/qemu/debian/deb_patches/series_arm64
270 +0001-Customize-Debian-build-files-for-STX.patch
271 +0002-remove-xen-build-for-STX.patch
272 +0003-rules-remove-vof.patch
273 +0004-add-condition-for-dh_installdocs.patch
274 +0005-fix-for-dh_missing.patch
275 +0006-remove-dependency-on-qemu-system-ARCH.patch
276 +0007-workaround-for-libvirt-breaks.patch
277 +0008-ARM-remove-gcc-alpha-linux-gnu.patch
278 +0009-ARM-remove-BIOS-targets.patch
279 +0010-ARM-add-pkg-qemu-system-arm.patch