GNU bug report logs - #29409
GuixSD ARM port.

Previous Next

Package: guix-patches;

Reported by: Mathieu Othacehe <m.othacehe <at> gmail.com>

Date: Thu, 23 Nov 2017 09:46:01 UTC

Severity: normal

Done: Danny Milosavljevic <dannym <at> scratchpost.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: m.othacehe <at> gmail.com
To: 29409 <at> debbugs.gnu.org
Cc: Mathieu Othacehe <m.othacehe <at> gmail.com>
Subject: [bug#29409] [PATCH 3/4] build: vm: Adapt qemu command to ARM.
Date: Wed,  6 Dec 2017 13:59:52 +0100
From: Mathieu Othacehe <m.othacehe <at> 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" and disable KVM use
that is buggy on some ARM boards (Odroid XU4 for example).
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Pass
to load-in-linux-vm "#:target-arm32?" argument.
---
 gnu/build/vm.scm  | 19 ++++++++++++++++---
 gnu/system/vm.scm |  4 ++++
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm
index 0b1b9da..0fbba62 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 '()))
@@ -124,8 +125,10 @@ the #:references-graphs parameter of 'derivation'."
                                  ",security_model=none,mount_tag=xchg")
                   "-kernel" linux
                   "-initrd" initrd
-                  "-append" (string-append "console=ttyS0 --load="
-                                           builder)
+                  "-append"
+                  (if target-arm32?
+                      (string-append "console=ttyAMA0 --load=" builder)
+                      (string-append "console=ttyS0 --load=" builder))
                   "-device" "virtio-blk,drive=myhd"
                   (append
                    (if make-disk-image?
@@ -133,10 +136,20 @@ the #:references-graphs parameter of 'derivation'."
                                                   ",format=" disk-image-format
                                                   ",id=myhd"))
                        '())
+                   ;; 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.
-                   (if (file-exists? "/dev/kvm")
+                   ;;
+                   ;; 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")
                        '()))))
     (error "qemu failed" qemu))
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index d754ac7..33c65de 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 be 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





This bug report was last modified 7 years and 108 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.