@@ -13,7 +13,6 @@ legacy_pmem_size="2" #in GiB
13
13
pmem_size=" 16384" # in MiB
14
14
pmem_label_size=2 # in MiB
15
15
pmem_final_size=" $(( pmem_size + pmem_label_size)) "
16
- : " ${qemu:= qemu-system-x86_64} "
17
16
: " ${gdb:= gdb} "
18
17
: " ${ndctl:= $(readlink -e ~/ git/ ndctl)} "
19
18
selftests_home=root/built-selftests
@@ -87,6 +86,51 @@ fail()
87
86
exit 1
88
87
}
89
88
89
+ set_qemu_machine ()
90
+ {
91
+ if test -n " $_arg_qmachine " ; then
92
+ qemu_machine=" $_arg_qmachine "
93
+ return
94
+ fi
95
+
96
+ case " ${host_arch} " in
97
+ x86_64)
98
+ qemu_machine=q35
99
+ ;;
100
+ aarch)
101
+ qemu_machine=virt
102
+ ;;
103
+ * ) fail ' Unknown host architecture' ;;
104
+ esac
105
+ }
106
+
107
+ # If this grows too big, switch to sourcing separate ${qemu_machine}.sh files
108
+ set_guest_params ()
109
+ {
110
+ case " ${qemu_machine} " in
111
+ q35)
112
+ guest_arch_toolchain=x86_64
113
+ guest_arch_linux=x86_64
114
+ machine_args=(' q35' )
115
+ ;;
116
+ virt)
117
+ guest_arch_toolchain=aarch64
118
+ guest_arch_linux=arm64
119
+ machine_args=(' virt' )
120
+ ;;
121
+ * )
122
+ fail " Unknown QEMU machine=%s" " $qemu_machine " ;;
123
+ esac
124
+ test -n " $qemu " || qemu=qemu-system-" $guest_arch_linux "
125
+ }
126
+
127
+ arch_init ()
128
+ {
129
+ host_arch=$( uname -m)
130
+ set_qemu_machine
131
+ set_guest_params
132
+ }
133
+
90
134
script_dir=" $( cd " $( dirname " $( readlink -e " ${BASH_SOURCE[0]} " ) " ) " && pwd) "
91
135
parser_generator=" ${script_dir} /parser_generator.m4"
92
136
parser_lib=" ${script_dir} /run_qemu_parser.sh"
@@ -327,6 +371,9 @@ process_options_logic()
327
371
if [[ $_arg_debug == " on" ]]; then
328
372
set -x
329
373
fi
374
+
375
+ arch_init
376
+
330
377
if [[ $_arg_cxl_test_run == " on" ]]; then
331
378
_arg_cxl_debug=" on"
332
379
_arg_cxl_test=" on"
@@ -447,11 +494,7 @@ make_install_kernel()
447
494
exit 1
448
495
}
449
496
450
- if [[ $( arch) != " aarch64" ]]; then
451
- cat arch/x86_64/boot/bzImage > " $inst_path " /vmlinuz-" $kver "
452
- else
453
- cat arch/arm64/boot/Image > " $inst_path " /vmlinuz-" $kver "
454
- fi
497
+ cat arch/" ${guest_arch_linux} " /boot/* Image > " $inst_path " /vmlinuz-" $kver "
455
498
cp System.map " $inst_path " /System.map-" $kver "
456
499
ln -fs vmlinuz-" $kver " " $inst_path " /vmlinuz
457
500
ln -fs System.map-" $kver " " $inst_path " /System.map
@@ -929,7 +972,9 @@ __update_existing_rootfs()
929
972
local _trace_sh=' -x'
930
973
fi
931
974
# shellcheck disable=SC2086
932
- sudo -E bash $_trace_sh -e -c " $( declare -f make_install_kernel) ; kver=$kver make_install_kernel $inst_path "
975
+ sudo -E bash $_trace_sh -e -c " $( declare -f make_install_kernel) ;
976
+ kver=$kver guest_arch_linux=$guest_arch_linux
977
+ make_install_kernel $inst_path "
933
978
934
979
if [[ $_arg_cxl_test == " off" ]]; then
935
980
sudo rm -f " $inst_prefix " /usr/lib/modules/" $kver " /extra/cxl_* .ko
@@ -1533,13 +1578,7 @@ prepare_qcmd()
1533
1578
if [[ $_arg_kvm = " off" ]]; then
1534
1579
accel=" tcg" # the default
1535
1580
fi
1536
-
1537
- if [[ $( arch) != " aarch64" ]]; then
1538
- machine_args=(" q35" " accel=$accel " )
1539
- else
1540
- machine_args=(" virt,highmem=on,gic-version=3" " accel=$accel " )
1541
- fi
1542
-
1581
+ machine_args+=(" accel=$accel " )
1543
1582
if [[ " $num_pmems " -gt 0 ]]; then
1544
1583
machine_args+=(" nvdimm=on" )
1545
1584
fi
0 commit comments