Peter Xu <pet...@redhat.com> writes:

> On Tue, Jan 30, 2024 at 10:18:07AM +0000, Peter Maydell wrote:
>> On Mon, 29 Jan 2024 at 23:31, Fabiano Rosas <faro...@suse.de> wrote:
>> >
>> > Fabiano Rosas <faro...@suse.de> writes:
>> >
>> > > Peter Xu <pet...@redhat.com> writes:
>> > >
>> > >> On Fri, Jan 26, 2024 at 11:54:32AM -0300, Fabiano Rosas wrote:
>> > > The issue that occurs to me now is that 'cpu host' will not work with
>> > > TCG. We might actually need to go poking /dev/kvm for this to work.
>> >
>> > Nevermind this last part. There's not going to be a scenario where we
>> > build with CONFIG_KVM, but run in an environment that does not support
>> > KVM.
>> 
>> Yes, there is. We'll build with CONFIG_KVM on any aarch64 host,
>> but that doesn't imply that the user running the build and
>> test has permissions for /dev/kvm.
>
> I'm actually pretty confused on why this would be a problem even for
> neoverse-n1: can we just try to use KVM, if it fails then use TCG?
> Something like:
>
>   (construct qemu cmdline)
>   ..
> #ifdef CONFIG_KVM

>   "-accel kvm "
> #endif
>   "-accel tcg "
>   ..
>
> ?
> IIUC if we specify two "-accel", we'll try the first, then if failed then
> the 2nd?

Aside from '-cpu max', there's no -accel and -cpu combination that works
on all of:

x86_64 host - TCG-only
aarch64 host - KVM & TCG
aarch64 host with --disable-tcg - KVM-only
aarch64 host without access to /dev/kvm - TCG-only

And the cpus are:
host - KVM-only
neoverse-n1 - TCG-only

We'll need something like:

/* covers aarch64 host with --disable-tcg */
if (qtest_has_accel("kvm") && !qtest_has_accel("tcg")) {
   if (open("/dev/kvm", O_RDONLY) < 0) {
       g_test_skip()
   } else {
       "-accel kvm -cpu host"
   }
}

/* covers x86_64 host */
if (!qtest_has_accel("kvm") && qtest_has_accel("tcg")) {
   "-accel tcg -cpu neoverse-n1"
}

/* covers aarch64 host */
if (qtest_has_accel("kvm") && qtest_has_accel("tcg")) {
   if (open("/dev/kvm", O_RDONLY) < 0) {
      "-accel tcg -cpu neoverse-n1"
   } else {
      "-accel kvm -cpu host"
   }
}

Reply via email to