From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57068) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eMZK1-0005rW-Mm for guix-patches@gnu.org; Wed, 06 Dec 2017 08:01:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eMZJv-0005oP-Oe for guix-patches@gnu.org; Wed, 06 Dec 2017 08:01:09 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:39941) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eMZJv-0005oH-JI for guix-patches@gnu.org; Wed, 06 Dec 2017 08:01:03 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1eMZJv-0001bq-8z for guix-patches@gnu.org; Wed, 06 Dec 2017 08:01:03 -0500 Subject: [bug#29409] [PATCH 3/4] build: vm: Adapt qemu command to ARM. Resent-Message-ID: From: m.othacehe@gmail.com Date: Wed, 6 Dec 2017 13:59:52 +0100 Message-Id: <1512565193-3234-4-git-send-email-m.othacehe@gmail.com> In-Reply-To: <1512565193-3234-1-git-send-email-m.othacehe@gmail.com> References: <1512565193-3234-1-git-send-email-m.othacehe@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 29409@debbugs.gnu.org From: Mathieu Othacehe * 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