Re: [RFC v8 6/7] KVM: arm/arm64: Enable MSI routing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 22/07/2016 16:14, Radim Krčmář wrote:
> 2016-07-22 13:46+0000, Eric Auger:
>> Up to now, only irqchip routing entries could be set. This patch
>> adds the capability to insert MSI routing entries.
>>
>> For ARM64, let's also increase KVM_MAX_IRQ_ROUTES to 4096: this
>> include SPI irqchip routes plus MSI routes. In the future this
>> might be extended.
>>
>> Signed-off-by: Eric Auger <eric.auger@xxxxxxxxxx>
>> Reviewed-by: Andre Przywara <andre.przywara@xxxxxxx>
>>
>> ---
>> v7 -> v8:
>> - adapt to changes in kvm_kernel_irq_routing_entry and check the
>>   user entry flags according to the user entry type
>>
>> v6 -> v7:
>> - added Andre's R-b
>>
>> v2 -> v3:
>> - remove any reference to KVM_IRQ_ROUTING_EXTENDED_MSI type
>> - unconditionnaly uapi flags and devid downto the kernel
>>   routing entry struct
>> - handle KVM_MSI_VALID_DEVID flag in kvm_set_irq_routing
>> - note about KVM_CAP_MSI_DEVID moved in the first patch file
>>   of the series
>>
>> v1 -> v2:
>> - adapt to new routing entry types
>>
>> RFC -> PATCH:
>> - move api MSI routing updates into that patch file
>> - use new devid field of user api struct
>> ---
>> diff --git a/virt/kvm/irqchip.c b/virt/kvm/irqchip.c
>> @@ -201,23 +202,25 @@ int kvm_set_irq_routing(struct kvm *kvm,
>>  			new->chip[i][j] = -1;
>>  
>>  	for (i = 0; i < nr; ++i) {
>> -		struct kvm_kernel_irq_routing_entry *e;
>> -
>>  		r = -ENOMEM;
>>  		e = kzalloc(sizeof(*e), GFP_KERNEL);
>>  		if (!e)
>>  			goto out;
>>  
>>  		r = -EINVAL;
>> -		if (ue->flags) {
>> -			kfree(e);
>> -			goto out;
>> +		switch (ue->type) {
>> +		case KVM_IRQ_ROUTING_IRQCHIP:
>> +			if (ue->flags)
>> +				goto free_entry;
>> +			break;
>> +		case KVM_IRQ_ROUTING_MSI:
>> +			if (ue->flags & ~KVM_MSI_VALID_DEVID)
>> +				goto free_entry;
>> +			break;
> 
> The function is common for all arches and there are currently two other
> routing types (S390_ADAPTER and HV_SINT) that ought to be checked as
> well, so "default" instead of "KVM_IRQ_ROUTING_IRQCHIP" would be better.
Sure

Thanks

Eric
> 
>>  		}
>>  		r = setup_routing_entry(new, e, ue);
>> -		if (r) {
>> -			kfree(e);
>> -			goto out;
>> -		}
>> +		if (r)
>> +			goto free_entry;
>>  		++ue;
>>  	}
>>  
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux