unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: m.othacehe@gmail.com
To: 29409@debbugs.gnu.org
Subject: [bug#29409] [PATCH v2 1/4] vm: Adapt qemu command to ARM.
Date: Wed, 13 Dec 2017 12:02:14 +0100	[thread overview]
Message-ID: <1513162937-13145-1-git-send-email-m.othacehe@gmail.com> (raw)
In-Reply-To: <877euhtjkj.fsf@gmail.com>

From: Mathieu Othacehe <m.othacehe@gmail.com>

* gnu/build/vm.scm (load-in-linux-vm): New argument #:target-arm32.
Use it to adapt command for qemu-system-arm.  This implies to choose a
machine ("virt"), use the correct console port "ttyAMA0", disable KVM use
that is buggy on some ARM boards (Odroid XU4 for example) and use user mode
network stack instead of NIC. Gather all those options in a new variable
"arch-specific-flags".
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Pass
to load-in-linux-vm "#:target-arm32?" argument.
---
 gnu/build/vm.scm  | 34 +++++++++++++++++++++++++++-------
 gnu/system/vm.scm |  4 ++++
 2 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm
index ed84463..8f8ca60 100644
--- a/gnu/build/vm.scm
+++ b/gnu/build/vm.scm
@@ -77,6 +77,7 @@
                            linux initrd
                            make-disk-image?
                            single-file-output?
+                           target-arm32?
                            (disk-image-size (* 100 (expt 2 20)))
                            (disk-image-format "qcow2")
                            (references-graphs '()))
@@ -91,6 +92,31 @@ access it via /dev/hda.
 
 REFERENCES-GRAPHS can specify a list of reference-graph files as produced by
 the #:references-graphs parameter of 'derivation'."
+
+  (define arch-specific-flags
+    `(;; On ARM, a machine has to be specified. Use "virt" machine to avoid
+      ;; hardware limits imposed by other machines.
+      ,@(if target-arm32? '("-M" "virt") '())
+
+      ;; Only enable kvm if we see /dev/kvm exists.  This allows users without
+      ;; hardware virtualization to still use these commands.  KVM support is
+      ;; still buggy on some ARM32 boards. Do not use it even if available.
+      ,@(if (and (file-exists? "/dev/kvm")
+                 (not target-arm32?))
+            '("-enable-kvm")
+            '())
+      "-append"
+      ;; The serial port name differs between emulated architectures/machines.
+      ,@(if target-arm32?
+            `(,(string-append "console=ttyAMA0 --load=" builder))
+            `(,(string-append "console=ttyS0 --load=" builder)))
+      ;; NIC is not supported on ARM "virt" machine, so use a user mode
+      ;; network stack instead.
+      ,@(if target-arm32?
+            '("-device" "virtio-net-pci,netdev=mynet"
+              "-netdev" "user,id=mynet")
+            '("-net" "nic,model=virtio"))))
+
   (when make-disk-image?
     (format #t "creating ~a image of ~,2f MiB...~%"
             disk-image-format (/ disk-image-size (expt 2 20)))
@@ -113,7 +139,6 @@ the #:references-graphs parameter of 'derivation'."
   (unless (zero?
            (apply system* qemu "-nographic" "-no-reboot"
                   "-m" (number->string memory-size)
-                  "-net" "nic,model=virtio"
                   "-virtfs"
                   (string-append "local,id=store_dev,path="
                                  (%store-directory)
@@ -132,12 +157,7 @@ the #:references-graphs parameter of 'derivation'."
                                                   ",format=" disk-image-format
                                                   ",id=myhd"))
                        '())
-                   ;; Only enable kvm if we see /dev/kvm exists.
-                   ;; This allows users without hardware virtualization to still
-                   ;; use these commands.
-                   (if (file-exists? "/dev/kvm")
-                       '("-enable-kvm")
-                       '()))))
+                   arch-specific-flags)))
     (error "qemu failed" qemu))
 
   ;; When MAKE-DISK-IMAGE? is true, the image is in OUTPUT already.
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index d754ac7..b376337 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -175,6 +175,10 @@ made available under the /xchg CIFS share."
                                 #:memory-size #$memory-size
                                 #:make-disk-image? #$make-disk-image?
                                 #:single-file-output? #$single-file-output?
+                                ;; FIXME: ‘target-arm32?’ may not operate on
+                                ;; the right system/target values.  Rewrite
+                                ;; using ‘let-system’ when available.
+                                #:target-arm32? #$(target-arm32?)
                                 #:disk-image-format #$disk-image-format
                                 #:disk-image-size size
                                 #:references-graphs graphs)))))
-- 
2.7.4

  parent reply	other threads:[~2017-12-13 11:03 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-23  9:45 [bug#29409] GuixSD ARM port Mathieu Othacehe
2017-11-23  9:49 ` [bug#29409] [PATCH] linux-libre: Adapt some arm options to match intel conf Mathieu Othacehe
2017-11-23 15:43   ` Ludovic Courtès
2017-11-23 19:09     ` bug#29409: " Mathieu Othacehe
2017-11-25  8:35   ` [bug#29409] " Danny Milosavljevic
2017-11-25 17:22     ` Mathieu Othacehe
2017-11-26  8:16       ` Danny Milosavljevic
2017-11-24 16:49 ` [bug#29409] [PATCH] vm: Use os-defined initrd intead of base-initrd Mathieu Othacehe
2017-11-24 21:36   ` Ludovic Courtès
2017-11-26 12:49     ` Mathieu Othacehe
2017-11-28  9:22 ` [bug#29409] [PATCH] gnu: dtc: Fix build on 32 bits platforms m.othacehe
2017-11-28  9:28 ` [bug#29409] [PATCH] gnu: grub: Disable tests on ARM platforms m.othacehe
2017-11-28 21:00   ` Leo Famulari
2017-11-29 14:03     ` Mathieu Othacehe
2017-11-29 14:20 ` [bug#29409] [PATCH] utils: Add target-arm? procedure m.othacehe
2017-11-29 14:20   ` [bug#29409] [PATCH] system: vm: Do not add EFI partition on ARM system m.othacehe
2017-12-01 20:14     ` Danny Milosavljevic
2017-12-02 12:46       ` Mathieu Othacehe
2017-12-08  9:24       ` Ludovic Courtès
2017-11-30 17:09   ` [bug#29409] [PATCH] utils: Add target-arm? procedure Ludovic Courtès
2017-12-01  9:21     ` Mathieu Othacehe
2017-11-29 17:34 ` [bug#29409] [PATCH] tests: install: Increase extlinux install partition size m.othacehe
2017-11-30 17:12   ` Ludovic Courtès
2017-12-01 13:02     ` Mathieu Othacehe
2017-12-01 14:57       ` Mathieu Othacehe
2017-12-01 16:07         ` Ludovic Courtès
2017-12-02 12:02           ` Mathieu Othacehe
2017-12-02 13:16             ` Mathieu Othacehe
2017-12-02 23:34             ` Ludovic Courtès
2017-12-03 19:31         ` Ludovic Courtès
2017-12-03 21:19           ` Mathieu Othacehe
2017-12-04  8:37             ` Ludovic Courtès
2017-12-04 14:29               ` Mathieu Othacehe
2017-12-04 14:30     ` Mathieu Othacehe
2017-11-30 10:47 ` [bug#29409] [PATCH] build: utils: Introduce dd m.othacehe
2017-12-01 12:47   ` Ludovic Courtès
2017-12-01 13:03     ` Mathieu Othacehe
2017-12-04 14:31     ` Mathieu Othacehe
2017-12-04 14:43       ` Ludovic Courtès
2017-12-04 15:53         ` Mathieu Othacehe
2017-12-04 17:17           ` Ludovic Courtès
2017-12-04 17:27             ` Mathieu Othacehe
2017-12-01 10:38 ` [bug#29409] [PATCH] utils: Add target-arm32? procedure m.othacehe
2017-12-01 10:38   ` [bug#29409] [PATCH] system: vm: Do not add EFI partition on ARM system m.othacehe
2017-12-01 11:01     ` Ludovic Courtès
2017-12-01 12:58       ` Mathieu Othacehe
2017-12-01 10:58   ` [bug#29409] [PATCH] utils: Add target-arm32? procedure Ludovic Courtès
2017-12-04 16:52 ` [bug#29409] [PATCH] build: vm: Use netdev qemu parameter m.othacehe
2017-12-04 18:19   ` Leo Famulari
2017-12-05  8:58     ` Mathieu Othacehe
2017-12-04 17:35 ` [bug#29409] [PATCH] build: vm: Use qemu drive device parameter m.othacehe
2017-12-08  9:38   ` Ludovic Courtès
2017-12-08 10:22     ` Mathieu Othacehe
2017-12-06 12:59 ` [bug#29409] [PATCH 0/4] ARM port m.othacehe
2017-12-06 12:59   ` [bug#29409] [PATCH 1/4] build: vm: Use netdev qemu parameter m.othacehe
2017-12-11 16:32     ` Ludovic Courtès
2017-12-11 17:36       ` Mathieu Othacehe
2017-12-12  9:00         ` Ludovic Courtès
2017-12-06 12:59   ` [bug#29409] [PATCH 2/4] build: vm: Use qemu drive device parameter m.othacehe
2017-12-11 16:33     ` Ludovic Courtès
2017-12-11 16:34     ` Ludovic Courtès
2017-12-06 12:59   ` [bug#29409] [PATCH 3/4] build: vm: Adapt qemu command to ARM m.othacehe
2017-12-11 16:38     ` Ludovic Courtès
2017-12-11 17:41       ` Mathieu Othacehe
2017-12-12  9:03         ` Ludovic Courtès
2017-12-06 12:59   ` [bug#29409] [PATCH 4/4] bootloader: Factorize write-file-on-device m.othacehe
2017-12-11 16:40     ` Ludovic Courtès
2017-12-11 17:41       ` Mathieu Othacehe
2017-12-07  8:52 ` [bug#29409] [PATCH] system: Add BeagleBone Black installer m.othacehe
2017-12-11 16:47   ` Ludovic Courtès
2017-12-11 17:32     ` ng0
2017-12-11 17:57     ` Mathieu Othacehe
2017-12-13 11:02 ` m.othacehe [this message]
2017-12-13 11:02   ` [bug#29409] [PATCH v2 2/4] bootloader: Factorize write-file-on-device m.othacehe
2017-12-15 10:34     ` Ludovic Courtès
2017-12-15 10:53       ` Mathieu Othacehe
2017-12-13 11:02   ` [bug#29409] [PATCH v2 3/4] scripts: system: Add --expression option m.othacehe
2017-12-15 10:39     ` Ludovic Courtès
2017-12-15 11:18       ` Mathieu Othacehe
2017-12-15 14:03         ` Ludovic Courtès
2017-12-15 15:38           ` Mathieu Othacehe
2017-12-13 11:02   ` [bug#29409] [PATCH v2 4/4] system: Add BeagleBone Black installer m.othacehe
2017-12-15 10:40     ` Ludovic Courtès
2017-12-15 10:33   ` [bug#29409] [PATCH v2 1/4] vm: Adapt qemu command to ARM Ludovic Courtès
2017-12-15 10:45     ` Mathieu Othacehe
2017-12-18 13:56 ` [bug#29409] [PATCH] system: examples: Add a template for BeagleBone Black m.othacehe
2017-12-18 14:22   ` Ludovic Courtès
2017-12-18 14:29     ` Mathieu Othacehe
2017-12-20 19:15 ` [bug#29409] Remove hugetlb control group on ARM32 Mathieu Othacehe
2017-12-21  1:16   ` Tobias Geerinckx-Rice
2017-12-21 10:07     ` Ludovic Courtès
2017-12-21  8:57   ` Danny Milosavljevic
2017-12-21 15:52     ` Ludovic Courtès
2017-12-22  7:54       ` Mathieu Othacehe
2017-12-22 10:50         ` Ludovic Courtès
2017-12-22 14:28           ` Mathieu Othacehe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1513162937-13145-1-git-send-email-m.othacehe@gmail.com \
    --to=m.othacehe@gmail.com \
    --cc=29409@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).