Re: [PATCH v2 3/3] KVM: SVM: Add irqchip_split() checks before enabling AVIC

From: Suravee Suthikulpanit
Date: Fri Sep 15 2017 - 15:21:30 EST


On 9/14/17 08:23, Suravee Suthikulpanit wrote:

On 9/14/17 08:20, Radim KrÄmÃÅ wrote:
@@ -1594,6 +1593,12 @@ static int avic_init_vcpu(struct vcpu_svm *svm)
if (!avic)
return 0;

+ if (!kvm_vcpu_apicv_active(&svm->vcpu)) {
+ pr_debug("%s: Disable AVIC due to non-split irqchip.\n",
+ __func__);
We need to have an extra condition just because of this print ...
I removed the print altogether when applying -- I thought more about
that and it was aimed at people who wonder why AVIC was suddenly
disabled and it's unlikely that they will enable a debug message without
already knowing the reason,

Make sense. Thanks.


@@ -4388,7 +4393,7 @@ static void svm_set_virtual_x2apic_mode(struct kvm_vcpu
*vcpu, bool set)

static bool svm_get_enable_apicv(struct kvm_vcpu *vcpu)
A close contender was pr_info_once() here:

if (avic && !irqchip_split(vcpu->kvm))

Looks good.

Actually, thinking about it again, this would not work either since pr_xxx_once() would only print the message once per loading of kvm_amd module. However, we would prefer the message to be printed per VM initialization. I also tried adding the check and print this message in the kvm_x86_ops.vm_init(), but this also does not work since the vm_init() function is called before the kvm_vm_ioctl_enable_cap(KVM_CAP_SPLIT_IRQCHIP).

Therefore, pr_info() might be better here, even though this would get print per VCPU initialization. Any other suggestions?