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: ludo <at> gnu.org (Ludovic Courtès)
To: m.othacehe <at> gmail.com
Cc: 29409 <at> debbugs.gnu.org
Subject: [bug#29409] [PATCH 3/4] build: vm: Adapt qemu command to ARM.
Date: Mon, 11 Dec 2017 17:38:21 +0100
m.othacehe <at> gmail.com skribis:

> 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?

Do we really need this new parameter and could we use the
‘target-arm32?’ procedure that you added directly?

> +                  (if target-arm32?
> +                      (string-append "console=ttyAMA0 --load=" builder)
> +                      (string-append "console=ttyS0 --load=" builder))

Could you add a short comment explaining this?

>                    "-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")
>                         '()))))

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") …) …)
      …))

WDYT?

Ludo’.




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.