diff options
| -rwxr-xr-x | scripts/runqemu-internal | 180 |
1 files changed, 89 insertions, 91 deletions
diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal index 7ae077766c..ac1c703c53 100755 --- a/scripts/runqemu-internal +++ b/scripts/runqemu-internal | |||
| @@ -38,49 +38,6 @@ mem_set=`expr "$SCRIPT_QEMU_EXTRA_OPT" : '.*\(-m[[:space:]] *[0-9]*\)'` | |||
| 38 | if [ ! -z "$mem_set" ] ; then | 38 | if [ ! -z "$mem_set" ] ; then |
| 39 | #Get memory setting size from user input | 39 | #Get memory setting size from user input |
| 40 | mem_size=`echo $mem_set | sed 's/-m[[:space:]] *//'` | 40 | mem_size=`echo $mem_set | sed 's/-m[[:space:]] *//'` |
| 41 | else | ||
| 42 | case "$MACHINE" in | ||
| 43 | "qemux86") | ||
| 44 | mem_size=256 | ||
| 45 | ;; | ||
| 46 | "qemux86-64") | ||
| 47 | mem_size=256 | ||
| 48 | ;; | ||
| 49 | "qemuarm") | ||
| 50 | mem_size=128 | ||
| 51 | ;; | ||
| 52 | "qemuarm64") | ||
| 53 | mem_size=512 | ||
| 54 | ;; | ||
| 55 | "qemumicroblaze") | ||
| 56 | mem_size=256 | ||
| 57 | ;; | ||
| 58 | "qemumips"|"qemumips64") | ||
| 59 | mem_size=256 | ||
| 60 | ;; | ||
| 61 | "qemuppc") | ||
| 62 | mem_size=256 | ||
| 63 | ;; | ||
| 64 | "qemush4") | ||
| 65 | mem_size=1024 | ||
| 66 | ;; | ||
| 67 | "qemuzynq") | ||
| 68 | mem_size=1024 | ||
| 69 | ;; | ||
| 70 | *) | ||
| 71 | mem_size=64 | ||
| 72 | ;; | ||
| 73 | esac | ||
| 74 | |||
| 75 | fi | ||
| 76 | |||
| 77 | # QEMU_MEMORY has 'M' appended to mem_size | ||
| 78 | QEMU_MEMORY="$mem_size"M | ||
| 79 | |||
| 80 | # We need to specify -m <mem_size> to overcome a bug in qemu 0.14.0 | ||
| 81 | # https://bugs.launchpad.net/ubuntu/+source/qemu-kvm/+bug/584480 | ||
| 82 | if [ -z "$mem_set" ] ; then | ||
| 83 | SCRIPT_QEMU_EXTRA_OPT="$SCRIPT_QEMU_EXTRA_OPT -m $mem_size" | ||
| 84 | fi | 41 | fi |
| 85 | 42 | ||
| 86 | # This file is created when runqemu-gen-tapdevs creates a bank of tap | 43 | # This file is created when runqemu-gen-tapdevs creates a bank of tap |
| @@ -267,26 +224,6 @@ else | |||
| 267 | fi | 224 | fi |
| 268 | fi | 225 | fi |
| 269 | 226 | ||
| 270 | case "$MACHINE" in | ||
| 271 | "qemuarm") ;; | ||
| 272 | "qemuarm64") ;; | ||
| 273 | "qemumicroblaze") ;; | ||
| 274 | "qemumips") ;; | ||
| 275 | "qemumipsel") ;; | ||
| 276 | "qemumips64") ;; | ||
| 277 | "qemush4") ;; | ||
| 278 | "qemuppc") ;; | ||
| 279 | "qemuarmv6") ;; | ||
| 280 | "qemuarmv7") ;; | ||
| 281 | "qemux86") ;; | ||
| 282 | "qemux86-64") ;; | ||
| 283 | "qemuzynq") ;; | ||
| 284 | *) | ||
| 285 | echo "Error: Unsupported machine type $MACHINE" | ||
| 286 | return 1 | ||
| 287 | ;; | ||
| 288 | esac | ||
| 289 | |||
| 290 | if [ ! -f "$KERNEL" -a "$IS_VM" = "false" ]; then | 227 | if [ ! -f "$KERNEL" -a "$IS_VM" = "false" ]; then |
| 291 | echo "Error: Kernel image file $KERNEL doesn't exist" | 228 | echo "Error: Kernel image file $KERNEL doesn't exist" |
| 292 | cleanup | 229 | cleanup |
| @@ -329,12 +266,25 @@ if [ "$FSTYPE" = "nfs" ]; then | |||
| 329 | NFSRUNNING="true" | 266 | NFSRUNNING="true" |
| 330 | fi | 267 | fi |
| 331 | 268 | ||
| 332 | if [ "$MACHINE" = "qemuarm" -o "$MACHINE" = "qemuarmv6" -o "$MACHINE" = "qemuarmv7" ]; then | 269 | |
| 270 | set_mem_size() { | ||
| 271 | if [ ! -z "$mem_set" ] ; then | ||
| 272 | #Get memory setting size from user input | ||
| 273 | mem_size=`echo $mem_set | sed 's/-m[[:space:]] *//'` | ||
| 274 | else | ||
| 275 | mem_size=$1 | ||
| 276 | fi | ||
| 277 | # QEMU_MEMORY has 'M' appended to mem_size | ||
| 278 | QEMU_MEMORY="$mem_size"M | ||
| 279 | |||
| 280 | } | ||
| 281 | |||
| 282 | config_qemuarm() { | ||
| 283 | set_mem_size 128 | ||
| 333 | QEMU=qemu-system-arm | 284 | QEMU=qemu-system-arm |
| 334 | MACHINE_SUBTYPE=versatilepb | 285 | MACHINE_SUBTYPE=versatilepb |
| 335 | export QEMU_AUDIO_DRV="none" | 286 | export QEMU_AUDIO_DRV="none" |
| 336 | QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS" | 287 | QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS" |
| 337 | # QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS -force-pointer" | ||
| 338 | if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" -o "$FSTYPE" = "wic" ]; then | 288 | if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" -o "$FSTYPE" = "wic" ]; then |
| 339 | KERNCMDLINE="root=$DROOT rw console=ttyAMA0,115200 console=tty $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY highres=off" | 289 | KERNCMDLINE="root=$DROOT rw console=ttyAMA0,115200 console=tty $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY highres=off" |
| 340 | QEMUOPTIONS="$QEMU_NETWORK_CMD -M ${MACHINE_SUBTYPE} $ROOTFS_OPTIONS -no-reboot $QEMU_UI_OPTIONS" | 290 | QEMUOPTIONS="$QEMU_NETWORK_CMD -M ${MACHINE_SUBTYPE} $ROOTFS_OPTIONS -no-reboot $QEMU_UI_OPTIONS" |
| @@ -354,9 +304,10 @@ if [ "$MACHINE" = "qemuarm" -o "$MACHINE" = "qemuarmv6" -o "$MACHINE" = "qemuarm | |||
| 354 | if [ "$MACHINE" = "qemuarmv7" ]; then | 304 | if [ "$MACHINE" = "qemuarmv7" ]; then |
| 355 | QEMUOPTIONS="$QEMUOPTIONS -cpu cortex-a8" | 305 | QEMUOPTIONS="$QEMUOPTIONS -cpu cortex-a8" |
| 356 | fi | 306 | fi |
| 357 | fi | 307 | } |
| 358 | 308 | ||
| 359 | if [ "$MACHINE" = "qemuarm64" ]; then | 309 | config_qemuarm64() { |
| 310 | set_mem_size 512 | ||
| 360 | QEMU=qemu-system-aarch64 | 311 | QEMU=qemu-system-aarch64 |
| 361 | 312 | ||
| 362 | QEMU_NETWORK_CMD="-netdev tap,id=net0,ifname=$TAP,script=no,downscript=no -device virtio-net-device,netdev=net0 " | 313 | QEMU_NETWORK_CMD="-netdev tap,id=net0,ifname=$TAP,script=no,downscript=no -device virtio-net-device,netdev=net0 " |
| @@ -383,9 +334,10 @@ if [ "$MACHINE" = "qemuarm64" ]; then | |||
| 383 | KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw console=ttyAMA0,38400 mem=$QEMU_MEMORY highres=off $KERNEL_NETWORK_CMD" | 334 | KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw console=ttyAMA0,38400 mem=$QEMU_MEMORY highres=off $KERNEL_NETWORK_CMD" |
| 384 | QEMUOPTIONS="$QEMU_NETWORK_CMD -machine virt -cpu cortex-a57 $QEMU_UI_OPTIONS" | 335 | QEMUOPTIONS="$QEMU_NETWORK_CMD -machine virt -cpu cortex-a57 $QEMU_UI_OPTIONS" |
| 385 | fi | 336 | fi |
| 386 | fi | 337 | } |
| 387 | 338 | ||
| 388 | if [ "$MACHINE" = "qemux86" ]; then | 339 | config_qemux86() { |
| 340 | set_mem_size 256 | ||
| 389 | QEMU=qemu-system-i386 | 341 | QEMU=qemu-system-i386 |
| 390 | if [ "$KVM_ACTIVE" = "yes" ]; then | 342 | if [ "$KVM_ACTIVE" = "yes" ]; then |
| 391 | CPU_SUBTYPE=kvm32 | 343 | CPU_SUBTYPE=kvm32 |
| @@ -421,9 +373,10 @@ if [ "$MACHINE" = "qemux86" ]; then | |||
| 421 | # Currently oprofile's event based interrupt mode doesn't work(Bug #828) in | 373 | # Currently oprofile's event based interrupt mode doesn't work(Bug #828) in |
| 422 | # qemux86 and qemux86-64. We can use timer interrupt mode for now. | 374 | # qemux86 and qemux86-64. We can use timer interrupt mode for now. |
| 423 | KERNCMDLINE="$KERNCMDLINE oprofile.timer=1" | 375 | KERNCMDLINE="$KERNCMDLINE oprofile.timer=1" |
| 424 | fi | 376 | } |
| 425 | 377 | ||
| 426 | if [ "$MACHINE" = "qemux86-64" ]; then | 378 | config_qemux86_64() { |
| 379 | set_mem_size 256 | ||
| 427 | QEMU=qemu-system-x86_64 | 380 | QEMU=qemu-system-x86_64 |
| 428 | if [ "$KVM_ACTIVE" = "yes" ]; then | 381 | if [ "$KVM_ACTIVE" = "yes" ]; then |
| 429 | CPU_SUBTYPE=kvm64 | 382 | CPU_SUBTYPE=kvm64 |
| @@ -457,9 +410,10 @@ if [ "$MACHINE" = "qemux86-64" ]; then | |||
| 457 | # Currently oprofile's event based interrupt mode doesn't work(Bug #828) in | 410 | # Currently oprofile's event based interrupt mode doesn't work(Bug #828) in |
| 458 | # qemux86 and qemux86-64. We can use timer interrupt mode for now. | 411 | # qemux86 and qemux86-64. We can use timer interrupt mode for now. |
| 459 | KERNCMDLINE="$KERNCMDLINE oprofile.timer=1" | 412 | KERNCMDLINE="$KERNCMDLINE oprofile.timer=1" |
| 460 | fi | 413 | } |
| 461 | 414 | ||
| 462 | if [ "$MACHINE" = "qemumips" -o "$MACHINE" = "qemumipsel" -o "$MACHINE" = "qemumips64" ]; then | 415 | config_qemumips() { |
| 416 | set_mem_size 256 | ||
| 463 | case "$MACHINE" in | 417 | case "$MACHINE" in |
| 464 | qemumips) QEMU=qemu-system-mips ;; | 418 | qemumips) QEMU=qemu-system-mips ;; |
| 465 | qemumipsel) QEMU=qemu-system-mipsel ;; | 419 | qemumipsel) QEMU=qemu-system-mipsel ;; |
| @@ -481,9 +435,10 @@ if [ "$MACHINE" = "qemumips" -o "$MACHINE" = "qemumipsel" -o "$MACHINE" = "qemum | |||
| 481 | KERNCMDLINE="root=/dev/nfs console=ttyS0 console=tty nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" | 435 | KERNCMDLINE="root=/dev/nfs console=ttyS0 console=tty nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" |
| 482 | QEMUOPTIONS="$QEMU_NETWORK_CMD -M $MACHINE_SUBTYPE -no-reboot $QEMU_UI_OPTIONS" | 436 | QEMUOPTIONS="$QEMU_NETWORK_CMD -M $MACHINE_SUBTYPE -no-reboot $QEMU_UI_OPTIONS" |
| 483 | fi | 437 | fi |
| 484 | fi | 438 | } |
| 485 | 439 | ||
| 486 | if [ "$MACHINE" = "qemuppc" ]; then | 440 | config_qemuppc() { |
| 441 | set_mem_size 256 | ||
| 487 | QEMU=qemu-system-ppc | 442 | QEMU=qemu-system-ppc |
| 488 | MACHINE_SUBTYPE=mac99 | 443 | MACHINE_SUBTYPE=mac99 |
| 489 | CPU_SUBTYPE=G4 | 444 | CPU_SUBTYPE=G4 |
| @@ -506,9 +461,10 @@ if [ "$MACHINE" = "qemuppc" ]; then | |||
| 506 | KERNCMDLINE="root=/dev/nfs console=ttyS0 console=tty nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" | 461 | KERNCMDLINE="root=/dev/nfs console=ttyS0 console=tty nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" |
| 507 | QEMUOPTIONS="$QEMU_NETWORK_CMD -cpu $CPU_SUBTYPE -M $MACHINE_SUBTYPE -no-reboot $QEMU_UI_OPTIONS" | 462 | QEMUOPTIONS="$QEMU_NETWORK_CMD -cpu $CPU_SUBTYPE -M $MACHINE_SUBTYPE -no-reboot $QEMU_UI_OPTIONS" |
| 508 | fi | 463 | fi |
| 509 | fi | 464 | } |
| 510 | 465 | ||
| 511 | if [ "$MACHINE" = "qemush4" ]; then | 466 | config_qemush4() { |
| 467 | set_mem_size 1024 | ||
| 512 | QEMU=qemu-system-sh4 | 468 | QEMU=qemu-system-sh4 |
| 513 | MACHINE_SUBTYPE=r2d | 469 | MACHINE_SUBTYPE=r2d |
| 514 | QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS" | 470 | QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS" |
| @@ -528,30 +484,72 @@ if [ "$MACHINE" = "qemush4" ]; then | |||
| 528 | QEMUOPTIONS="$QEMU_NETWORK_CMD -M $MACHINE_SUBTYPE -no-reboot $QEMU_UI_OPTIONS -monitor null -serial vc -serial stdio" | 484 | QEMUOPTIONS="$QEMU_NETWORK_CMD -M $MACHINE_SUBTYPE -no-reboot $QEMU_UI_OPTIONS -monitor null -serial vc -serial stdio" |
| 529 | SERIALSTDIO="1" | 485 | SERIALSTDIO="1" |
| 530 | fi | 486 | fi |
| 531 | fi | 487 | } |
| 532 | |||
| 533 | if [ "${FSTYPE:0:3}" = "ext" ]; then | ||
| 534 | KERNCMDLINE="$KERNCMDLINE rootfstype=$FSTYPE" | ||
| 535 | fi | ||
| 536 | 488 | ||
| 537 | if [ "$MACHINE" = "qemumicroblaze" ]; then | 489 | config_qemuzynq() { |
| 538 | QEMU=qemu-system-microblazeel | 490 | set_mem_size 1024 |
| 539 | QEMU_SYSTEM_OPTIONS="$QEMU_NETWORK_CMD -M petalogix-ml605 -serial mon:stdio" | 491 | QEMU=qemu-system-arm |
| 492 | QEMU_SYSTEM_OPTIONS="$QEMU_NETWORK_CMD -M xilinx-zynq-a9 -serial null -serial mon:stdio -dtb $KERNEL-$MACHINE.dtb" | ||
| 493 | # zynq serial ports are named 'ttyPS0' and 'ttyPS1', fixup the default values | ||
| 494 | SCRIPT_KERNEL_OPT=$(echo "$SCRIPT_KERNEL_OPT" | sed 's/console=ttyS/console=ttyPS/g') | ||
| 540 | if [ "${FSTYPE:0:3}" = "ext" -o "${FSTYPE:0:4}" = "cpio" ]; then | 495 | if [ "${FSTYPE:0:3}" = "ext" -o "${FSTYPE:0:4}" = "cpio" ]; then |
| 541 | KERNCMDLINE="earlyprintk root=/dev/ram rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" | 496 | KERNCMDLINE="earlyprintk root=/dev/ram rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" |
| 542 | QEMUOPTIONS="$QEMU_SYSTEM_OPTIONS -initrd $ROOTFS" | 497 | QEMUOPTIONS="$QEMU_SYSTEM_OPTIONS -initrd $ROOTFS" |
| 543 | fi | 498 | fi |
| 544 | fi | 499 | } |
| 545 | 500 | ||
| 546 | if [ "$MACHINE" = "qemuzynq" ]; then | 501 | config_qemumicroblaze() { |
| 547 | QEMU=qemu-system-arm | 502 | set_mem_size 256 |
| 548 | QEMU_SYSTEM_OPTIONS="$QEMU_NETWORK_CMD -M xilinx-zynq-a9 -serial null -serial mon:stdio -dtb $KERNEL-$MACHINE.dtb" | 503 | QEMU=qemu-system-microblazeel |
| 549 | # zynq serial ports are named 'ttyPS0' and 'ttyPS1', fixup the default values | 504 | QEMU_SYSTEM_OPTIONS="$QEMU_NETWORK_CMD -M petalogix-ml605 -serial mon:stdio" |
| 550 | SCRIPT_KERNEL_OPT=$(echo "$SCRIPT_KERNEL_OPT" | sed 's/console=ttyS/console=ttyPS/g') | ||
| 551 | if [ "${FSTYPE:0:3}" = "ext" -o "${FSTYPE:0:4}" = "cpio" ]; then | 505 | if [ "${FSTYPE:0:3}" = "ext" -o "${FSTYPE:0:4}" = "cpio" ]; then |
| 552 | KERNCMDLINE="earlyprintk root=/dev/ram rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" | 506 | KERNCMDLINE="earlyprintk root=/dev/ram rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" |
| 553 | QEMUOPTIONS="$QEMU_SYSTEM_OPTIONS -initrd $ROOTFS" | 507 | QEMUOPTIONS="$QEMU_SYSTEM_OPTIONS -initrd $ROOTFS" |
| 554 | fi | 508 | fi |
| 509 | } | ||
| 510 | |||
| 511 | case "$MACHINE" in | ||
| 512 | "qemuarm" | "qemuarmv6" | "qemuarmv7") | ||
| 513 | config_qemuarm | ||
| 514 | ;; | ||
| 515 | "qemuarm64") | ||
| 516 | config_qemuarm64 | ||
| 517 | ;; | ||
| 518 | "qemux86") | ||
| 519 | config_qemux86 | ||
| 520 | ;; | ||
| 521 | "qemux86-64") | ||
| 522 | config_qemux86_64 | ||
| 523 | ;; | ||
| 524 | "qemumips" | "qemumipsel" | "qemumips64") | ||
| 525 | config_qemumips | ||
| 526 | ;; | ||
| 527 | "qemuppc") | ||
| 528 | config_qemuppc | ||
| 529 | ;; | ||
| 530 | "qemush4") | ||
| 531 | config_qemush4 | ||
| 532 | ;; | ||
| 533 | "qemuzynq") | ||
| 534 | config_qemuzynq | ||
| 535 | ;; | ||
| 536 | "qemumicroblaze") | ||
| 537 | config_qemumicroblaze | ||
| 538 | ;; | ||
| 539 | *) | ||
| 540 | echo "Error: Unsupported machine type $MACHINE" | ||
| 541 | return 1 | ||
| 542 | ;; | ||
| 543 | esac | ||
| 544 | |||
| 545 | # We need to specify -m <mem_size> to overcome a bug in qemu 0.14.0 | ||
| 546 | # https://bugs.launchpad.net/ubuntu/+source/qemu-kvm/+bug/584480 | ||
| 547 | if [ -z "$mem_set" ] ; then | ||
| 548 | SCRIPT_QEMU_EXTRA_OPT="$SCRIPT_QEMU_EXTRA_OPT -m $mem_size" | ||
| 549 | fi | ||
| 550 | |||
| 551 | if [ "${FSTYPE:0:3}" = "ext" ]; then | ||
| 552 | KERNCMDLINE="$KERNCMDLINE rootfstype=$FSTYPE" | ||
| 555 | fi | 553 | fi |
| 556 | 554 | ||
| 557 | if [ "$FSTYPE" = "cpio.gz" ]; then | 555 | if [ "$FSTYPE" = "cpio.gz" ]; then |
