On 21/07/16 18:22, Radim Krčmář wrote:
> 2016-07-21 17:54+0100, Marc Zyngier:
>> On 21/07/16 17:13, Radim Krčmář wrote:
>>> 2016-07-18 13:25+0000, Eric Auger:
>>>> Extend kvm_kernel_irq_routing_entry to transport the device id
>>>> field, devid. A new flags field makes possible to indicate the
>>>> devid is valid. Those additions are used for ARM GICv3 ITS MSI
>>>> injection.
>>>>
>>>> Signed-off-by: Eric Auger <[email protected]>
>>>> Acked-by: Christoffer Dall <[email protected]>
>>>>
>>>> ---
>>>> v6 -> v7:
>>>> - added msi_ prefix to flags and dev_id fields
>>>>
>>>> v4 -> v5:
>>>> - add Christoffer's R-b
>>>>
>>>> v2 -> v3:
>>>> - add flags
>>>>
>>>> v1 -> v2:
>>>> - replace msi_msg field by a struct composed of msi_msg and devid
>>>>
>>>> RFC -> PATCH:
>>>> - reword the commit message after change in first patch (uapi)
>>>> ---
>>>> include/linux/kvm_host.h | 6 +++++-
>>>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
>>>> index c87fe6f..3d2cbb4 100644
>>>> --- a/include/linux/kvm_host.h
>>>> +++ b/include/linux/kvm_host.h
>>>> @@ -317,7 +317,11 @@ struct kvm_kernel_irq_routing_entry {
>>>> unsigned irqchip;
>>>> unsigned pin;
>>>> } irqchip;
>>>> - struct msi_msg msi;
>>>> + struct {
>>>> + struct msi_msg msi;
>>>> + u32 msi_flags;
>>>> + u32 msi_devid;
>>>
>>> I'd much rather see them as msi.flags and msi.devid.
>>
>> That's not really possible, as msi_msg is the core data structure for
>> MSIs, and nobody really expects this tructure to change.
>>
>>> I didn't notice a code that passes struct msi_msg anywhere, so using an
>>> ad-hoc struct like irqchip or defining a new one would work fine.
>>
>> I guess we could have an arm-specific one:
>>
>> struct arm_msi {
>> struct msi_msg msg;
>> u32 flags;
>> u32 devid;
>> };
>>
>> and use that. Would that be OK with you?
>
> The feature wants to be arch-neutral, so I would rather ignore struct
> msi_msg. kvm_kernel_irq_routing_entry practically mirrors routing
> entries from KVM API and there we have:
>
> struct kvm_msi {
> __u32 address_lo;
> __u32 address_hi;
> __u32 data;
> __u32 flags;
> __u32 devid;
> __u8 pad[12];
> };
>
> I think that something like
>
> struct {
> u32 address_lo;
> u32 address_hi;
> u32 data;
> u32 flags;
> u32 devid;
> } msi;
>
> would get us consistency, minimal changes to existing code, no namespace
> hierarchy, and no "." vs "_" mistakes at a good price of some code
> duplication and concept separation.
Fair enough. Eric, can you give this a try?
Thanks,
M.
--
Jazz is not dead. It just smells funny...
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm