Tree:
  https://github.com/rth7680/qemu.git tgt-arm-vhe-5

Testcase:
  qemu-test:~rth/linux/initramfs-min.cpio.gz

  The host kernel could be anything, but I've been using
  the same Image.gz that is inside the cpio archive.

  ./aarch64-softmmu/qemu-system-aarch64 -m 4G \
    -M virt,virtualization=on,gic-version=max -cpu max \
    -kernel Image.gz -initrd initramfs-min.cpio.gz

  At the shell prompt, ./test will run a guest kernel with kvm.

As momentarily discussed with PMM in the hallway:

As soon as the guest kernel enables interrupts,

  arch_timer_starting_cpu
    enable_percpu_irq
      irq_percpu_enable
        gic_unmask_irq
          -- Incorrect exception delivery.

the GTIMER_PHYS interrupt is delivered to EL2 (seems to be ok), the host kernel
does something (haven't dug into what exactly, bug presumably setting bits that
are supposed to pass the virq to the guest), and immediately another interrupt
is delivered to EL2.  Repeat.

Whether this is incorrect routing of the virq interrupt, or incorrect
masking/acking of the hard irq interrupt at EL2, I do not yet know.

PMM: I don't know the answer to either (a) or (b) as asked on hangouts.  I
think (b) is correct, but I can't be sure.  I'm trying to understand how (a) is
supposed to work now.  In particular, I can't find any code that sets
HCR_EL2.{VI,VF}, only tests them.


r~
_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to