From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56793) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eOR6i-0007PU-Cn for guix-patches@gnu.org; Mon, 11 Dec 2017 11:39:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eOR6c-0007Kc-Fs for guix-patches@gnu.org; Mon, 11 Dec 2017 11:39:08 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:48435) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eOR6c-0007KQ-Bx for guix-patches@gnu.org; Mon, 11 Dec 2017 11:39:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1eOR6b-0004Ff-Uf for guix-patches@gnu.org; Mon, 11 Dec 2017 11:39:01 -0500 Subject: [bug#29409] [PATCH 3/4] build: vm: Adapt qemu command to ARM. Resent-Message-ID: From: ludo@gnu.org (Ludovic =?UTF-8?Q?Court=C3=A8s?=) References: <1512565193-3234-1-git-send-email-m.othacehe@gmail.com> <1512565193-3234-4-git-send-email-m.othacehe@gmail.com> Date: Mon, 11 Dec 2017 17:38:21 +0100 In-Reply-To: <1512565193-3234-4-git-send-email-m.othacehe@gmail.com> (m. othacehe's message of "Wed, 6 Dec 2017 13:59:52 +0100") Message-ID: <87d13lw77m.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable 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: m.othacehe@gmail.com Cc: 29409@debbugs.gnu.org m.othacehe@gmail.com skribis: > 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? Do we really need this new parameter and could we use the =E2=80=98target-arm32?=E2=80=99 procedure that you added directly? > + (if target-arm32? > + (string-append "console=3DttyAMA0 --load=3D" build= er) > + (string-append "console=3DttyS0 --load=3D" builder= )) Could you add a short comment explaining this? > "-device" "virtio-blk,drive=3Dmyhd" > (append > (if make-disk-image? > @@ -133,10 +136,20 @@ the #:references-graphs parameter of 'derivation'." > ",format=3D" disk-imag= e-format > ",id=3Dmyhd")) > '()) > + ;; 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. D= o not > + ;; use it even if available. > + (if (and (file-exists? "/dev/kvm") > + (not target-arm32?)) > '("-enable-kvm") > '())))) For clarity, it might be best to collect all the platform-specific options separately, like: (define arch-specific-flags `(,@(if target-arm32? '("-M" "virt") '()) ,@(if (and (file-exists? "/dev/kvm") =E2=80=A6) =E2=80=A6) =E2=80=A6)) WDYT? Ludo=E2=80=99.