I think this should cover aarch64 on aarch64 too :) And presence of (and
ability to open) /dev/kvm is probably a better check than looking through
cpuinfo?

Alex

On Thu, 20 Jan 2022 at 16:21, Michael Opdenacker <
[email protected]> wrote:

> This automatically turns on the "kvm" option when emulating
> an x86 system on x86 CPUs with VT capability.
>
> On an Intel i7-5600U CPU at 2.60GHz, using the "kvm"
> option is at least 4x faster, booting "core-image-minimal" for qemux86-64.
> The performance difference can even be bigger for larger systems.
>
> Rather than changing the documentation to remind users
> to use this option, that's easier to enable this option by
> default on suitable systems.
>
> A "noautokvm" option is added to disable this default,
> and keep the previous behavior.
>
> Signed-off-by: Michael Opdenacker <[email protected]>
> ---
>  scripts/runqemu | 22 +++++++++++++++++-----
>  1 file changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/scripts/runqemu b/scripts/runqemu
> index 4e05c1bb15..b500ba2afa 100755
> --- a/scripts/runqemu
> +++ b/scripts/runqemu
> @@ -78,8 +78,9 @@ of the following environment variables (in any order):
>      serialstdio - enable a serial console on the console (regardless of
> graphics mode)
>      slirp - enable user networking, no root privileges is required
>      snapshot - don't write changes to back to images
> -    kvm - enable KVM when running x86/x86_64 (VT-capable CPU required)
> +    kvm - enable KVM. Enabled by default when running x86/x86_64 with a
> VT-capable CPU
>      kvm-vhost - enable KVM with vhost when running x86/x86_64 (VT-capable
> CPU required)
> +    noautokvm - don't enable KVM automatically on x86/x86_64 with a
> VT-capable CPU
>      publicvnc - enable a VNC server open to all hosts
>      audio - enable audio
>      [*/]ovmf* - OVMF firmware file or base name for booting with UEFI
> @@ -170,6 +171,7 @@ class BaseConfig(object):
>          self.fstype = ''
>          self.kvm_enabled = False
>          self.vhost_enabled = False
> +        self.noautokvm = False
>          self.slirp_enabled = False
>          self.net_bridge = None
>          self.nfs_instance = 0
> @@ -506,6 +508,8 @@ class BaseConfig(object):
>                  self.kvm_enabled = True
>              elif arg == 'kvm-vhost':
>                  self.vhost_enabled = True
> +            elif arg == 'noautokvm':
> +                self.noautokvm = True
>              elif arg == 'slirp':
>                  self.slirp_enabled = True
>              elif arg.startswith('bridge='):
> @@ -550,8 +554,18 @@ class BaseConfig(object):
>              if s:
>                  self.set("DEPLOY_DIR_IMAGE", s.group(1))
>
> +    def kvm_cap_x86(self):
> +        with open('/proc/cpuinfo', 'r') as f:
> +            return re.search('vmx|svm', "".join(f.readlines()))
> +
>      def check_kvm(self):
> -        """Check kvm and kvm-host"""
> +        """Check kvm and kvm-vhost"""
> +       # Turn on KVM by default emulating x86 on x86 CPUs with VT
> +       # Can be disabled with the "noautokvm" option
> +        if self.qemu_system.endswith(('i386', 'x86_64')) and not
> self.noautokvm:
> +            if self.kvm_cap_x86():
> +                self.kvm_enabled = True
> +
>          if not (self.kvm_enabled or self.vhost_enabled):
>              self.qemu_opt_script += ' %s %s %s' %
> (self.get('QB_MACHINE'), self.get('QB_CPU'), self.get('QB_SMP'))
>              return
> @@ -565,9 +579,7 @@ class BaseConfig(object):
>          dev_kvm = '/dev/kvm'
>          dev_vhost = '/dev/vhost-net'
>          if self.qemu_system.endswith(('i386', 'x86_64')):
> -            with open('/proc/cpuinfo', 'r') as f:
> -                kvm_cap = re.search('vmx|svm', "".join(f.readlines()))
> -            if not kvm_cap:
> +            if not self.kvm_cap_x86():
>                  logger.error("You are trying to enable KVM on a cpu
> without VT support.")
>                  logger.error("Remove kvm from the command-line, or
> refer:")
>                  raise RunQemuError(yocto_kvm_wiki)
> --
> 2.25.1
>
>
> 
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#160770): 
https://lists.openembedded.org/g/openembedded-core/message/160770
Mute This Topic: https://lists.openembedded.org/mt/88560844/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to