From 7b08433840fd21863523bc9151cb51b6eccd14db Mon Sep 17 00:00:00 2001 From: Ciro Santilli Date: Sun, 11 Mar 2018 22:00:24 +0000 Subject: [PATCH] 9p mount the output directory. This is in preparation for moving parsec to 9p once we get it working on gem5. We'll document it then when everything is working. --- parsec-benchmark/parsec-benchmark | 2 +- rootfs_overlay/etc/fstab | 19 +++++---- rootfs_post_build_script | 5 ++- run | 70 +++++++++++++++++-------------- 4 files changed, 53 insertions(+), 43 deletions(-) diff --git a/parsec-benchmark/parsec-benchmark b/parsec-benchmark/parsec-benchmark index 2f1e64b..bdc6307 160000 --- a/parsec-benchmark/parsec-benchmark +++ b/parsec-benchmark/parsec-benchmark @@ -1 +1 @@ -Subproject commit 2f1e64b4ad834443fa051d5dd7336d4cd4e40ece +Subproject commit bdc6307a2709b8d4058a9dc4b1d3b67f163844cf diff --git a/rootfs_overlay/etc/fstab b/rootfs_overlay/etc/fstab index a3eceb2..fc26e74 100644 --- a/rootfs_overlay/etc/fstab +++ b/rootfs_overlay/etc/fstab @@ -1,10 +1,11 @@ # -/dev/root / ext2 rw,noauto 0 1 -proc /proc proc defaults 0 0 -devpts /dev/pts devpts defaults,gid=5,mode=620 0 0 -tmpfs /dev/shm tmpfs mode=0777 0 0 -tmpfs /tmp tmpfs mode=1777 0 0 -tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 -sysfs /sys sysfs defaults 0 0 -debugfs /sys/kernel/debug debugfs defaults 0 0 -host0 /mnt/9p 9p trans=virtio,version=9p2000.L 0 0 +/dev/root / ext2 rw,noauto 0 1 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts defaults,gid=5,mode=620 0 0 +tmpfs /dev/shm tmpfs mode=0777 0 0 +tmpfs /tmp tmpfs mode=1777 0 0 +tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 +sysfs /sys sysfs defaults 0 0 +debugfs /sys/kernel/debug debugfs defaults 0 0 +host_scratch /mnt/9p 9p trans=virtio,version=9p2000.L 0 0 +host_out /mnt/out 9p trans=virtio,version=9p2000.L 0 0 diff --git a/rootfs_post_build_script b/rootfs_post_build_script index b8f0968..955bb80 100755 --- a/rootfs_post_build_script +++ b/rootfs_post_build_script @@ -18,4 +18,7 @@ shift $(($OPTIND - 1)) if ! "$net"; then rm -f "${target_dir}/etc/init.d/"S*network fi -mkdir -p "${target_dir}/mnt/9p" +mkdir -p \ + "${target_dir}/mnt/9p" \ + "${target_dir}/mnt/out" \ +; diff --git a/run b/run index 7925a24..884223b 100755 --- a/run +++ b/run @@ -65,67 +65,73 @@ while getopts a:c:Dde:G:giKknt:x OPT; do done shift "$(($OPTIND - 1))" extra_flags="$extra_flags $@" +arch_dir="$arch" +if "$gem5"; then + arch_dir="${arch}-gem5" +fi +root_dir="$(pwd)" +buildroot_dir="${root_dir}/buildroot" +out_dir="${root_dir}/buildroot/output.${arch_dir}~" -if $gem5; then - outdir="$(pwd)/buildroot/output.${arch}-gem5~" - gem5_dir="$(pwd)/gem5/gem5" +if "$gem5"; then + gem5_dir="${root_dir}/gem5/gem5" if [ "$arch" = x86_64 ]; then if "$kvm"; then extra_flags="$extra_flags --cpu-type=X86KvmCPU" fi cmd="\ -M5_PATH='$(pwd)/gem5/gem5-system' \ +M5_PATH='${root_dir}/gem5/gem5-system' \ '${gem5_dir}/build/X86/gem5.opt' \ ${gem5opts} \ '${gem5_dir}/configs/example/fs.py' \ --command-line='earlyprintk=ttyS0 console=ttyS0 lpj=7999923 root=/dev/hda $extra_append' \ ---disk-image='${outdir}/images/rootfs.ext2' \ ---kernel='${outdir}/build/linux-custom/vmlinux' \ +--disk-image='${out_dir}/images/rootfs.ext2' \ +--kernel='${out_dir}/build/linux-custom/vmlinux' \ --num-cpus=${cpus} \ $extra_flags \ " elif [ "$arch" = arm ] || [ "$arch" = aarch64 ]; then cmd="\ -M5_PATH='$(pwd)/gem5/gem5-system' \ +M5_PATH='${root_dir}/gem5/gem5-system' \ $debug_vm \ '${gem5_dir}/build/ARM/gem5.opt' \ ${gem5opts} \ '${gem5_dir}/configs/example/fs.py' \ --command-line='earlyprintk=pl011,0x1c090000 console=ttyAMA0 lpj=19988480 rw loglevel=8 mem=512MB root=/dev/sda $extra_append' \ ---disk-image='${outdir}/images/rootfs.ext2' \ +--disk-image='${out_dir}/images/rootfs.ext2' \ --dtb-file='${gem5_dir}/system/arm/dt/$([ "$arch" = arm ] && echo "armv7_gem5_v1_${cpus}cpu" || echo "armv8_gem5_v1_${cpus}cpu").dtb' \ ---kernel='${outdir}/build/linux-custom/vmlinux' \ +--kernel='${out_dir}/build/linux-custom/vmlinux' \ --machine-type=VExpress_GEM5_V1 \ --num-cpus=${cpus} \ $extra_flags \ " fi else - buildroot_out_dir="./buildroot/output.${arch}~" if "$kvm"; then - extra_flags="$extra_flags -enable-kvm" + extra_flags="${extra_flags} -enable-kvm" fi - extra_flags="$extra_flags_qemu $extra_flags" - images_dir="$buildroot_out_dir/images" + extra_flags="${extra_flags_qemu} ${extra_flags}" + images_dir="${out_dir}/images" qemu_common="\ -$debug_vm \ -$buildroot_out_dir/host/usr/bin/qemu-system-${arch} \ +${debug_vm} \ +${out_dir}/host/usr/bin/qemu-system-${arch} \ -m 128M \ -monitor telnet::45454,server,nowait \ -netdev user,hostfwd=tcp::45455-:45455,id=net0 \ -smp $cpus \ --virtfs local,path=9p,mount_tag=host0,security_model=mapped,id=host0 \ +-virtfs local,path=9p,mount_tag=host_scratch,security_model=mapped,id=host_scratch \ +-virtfs local,path=${out_dir}/build,mount_tag=host_out,security_model=mapped,id=host_out \ " - if $initrd; then - extra_flags="$extra_flags -initrd '${images_dir}/rootfs.cpio'" + if "$initrd"; then + extra_flags="${extra_flags} -initrd '${images_dir}/rootfs.cpio'" fi # The base QEMU commands are found under board/qemu/*/readme.tx case "$arch" in x86_64) - if $kgdb; then + if "$kgdb"; then extra_append="$extra_append kgdboc=ttyS0,115200" fi - if ! $initrd; then + if ! "$initrd"; then root='root=/dev/vda' extra_flags="$extra_flags -drive file='${images_dir}/rootfs.ext2.qcow2,if=virtio,format=qcow2'" fi @@ -136,14 +142,14 @@ $buildroot_out_dir/host/usr/bin/qemu-system-${arch} \ -device lkmc_pci_min \ -device virtio-net-pci,netdev=net0 \ -kernel ${images_dir}/bzImage \ -$extra_flags \ +${extra_flags} \ " ;; arm) - if $kgdb; then + if "$kgdb"; then extra_append="$extra_append kgdboc=ttyAMA0,115200" fi - if ! $initrd; then + if ! "$initrd"; then root='root=/dev/sda' extra_flags="$extra_flags -drive file='${images_dir}/rootfs.ext2.qcow2,if=scsi,format=qcow2'" fi @@ -158,33 +164,33 @@ $extra_flags \ " ;; aarch64) - if $kgdb; then - extra_append="$extra_append kgdboc=ttyAMA0,115200" + if "$kgdb"; then + extra_append="${extra_append} kgdboc=ttyAMA0,115200" fi - cmd="$qemu_common \ + cmd="${qemu_common} \ -M virt \ --append 'root=/dev/sda $extra_append' \ +-append 'root=/dev/sda ${extra_append}' \ -cpu cortex-a57 \ -device virtio-net-device,netdev=net0 \ -kernel ${images_dir}/Image \ -nographic \ -serial stdio \ -$extra_flags \ +${extra_flags} \ " ;; mips64) - if ! $initrd; then + if ! "$initrd"; then root='root=/dev/hda' - extra_flags="$extra_flags -drive file='${images_dir}/rootfs.ext2.qcow2,format=qcow2'" + extra_flags="${extra_flags} -drive file='${images_dir}/rootfs.ext2.qcow2,format=qcow2'" fi cmd="$qemu_common \ -M malta \ --append 'root=/dev/hda $extra_append' \ +-append 'root=/dev/hda ${extra_append}' \ -cpu I6400 \ -device pcnet \ -kernel ${images_dir}/vmlinux \ -nographic \ -$extra_flags \ +${extra_flags} \ " ;; esac