On Mon, Oct 3, 2022 at 8:42 AM Sean Christopherson seanjc@google.com wrote:
On Mon, Sep 26, 2022, Vishal Annapurve wrote:
On Wed, Sep 21, 2022 at 1:54 PM David Matlack dmatlack@google.com wrote:
On Thu, Sep 15, 2022 at 12:04:43AM +0000, Vishal Annapurve wrote:
diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/testing/selftests/kvm/include/kvm_util_base.h index 98edbbda9f97..73cfee3ebd76 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -839,4 +839,8 @@ static inline int __vm_disable_nx_huge_pages(struct kvm_vm *vm) */ void kvm_selftest_arch_init(void);
+/*
- API to execute architecture specific setup after loading the vm elf.
It's not a "vm elf" per-se, it's "loading the elf into the VM". How about:
/*
- API to execute arch-specific logic after loading the selftest ELF image
- into the VM.
*/
Ack. Will update this in the next series.
Even better, call it from __vm_create() and name it something like kvm_arch_vm_post_create(). Like David said, while the hook has a dependency on being called after loading the ELF image, the action that arch code is expected to take doesn't have anything to do with loading the ELF image.
And then instead of introducing an arch hook with no implementation, the patch that adds the hook can instead use it to replace the x86-64 #ifdef in __vm_create().
Today upstream kernel selftests don't have scenarios where kvm_vm_elf_load can get called directly outside ___vm_create but there are selftests that are up for review [1], [2] that may call kvm_vm_elf_load directly. Above suggestion will not work in this scenario, is it suitable to assume that all the callers of kvm_vm_elf_load will eventually execute kvm_arch_vm_post_create?
[1] https://lore.kernel.org/lkml/20220810152033.946942-12-pgonda@google.com/ [2] https://lore.kernel.org/lkml/20220819174659.2427983-1-vannapurve@google.com/...
diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c index dafe4471a6c7..593dfadb662e 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -298,9 +298,8 @@ struct kvm_vm *__vm_create(enum vm_guest_mode mode, uint32_t nr_runnable_vcpus,
kvm_vm_elf_load(vm, program_invocation_name);
-#ifdef __x86_64__
vm_create_irqchip(vm);
-#endif
kvm_arch_vm_post_create(vm);
return vm;
}