Re: [PATCH] KVM: PPC: Add generic single register ioctls

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

 




On 06.01.2012, at 20:32, Scott Wood <scottwood@xxxxxxxxxxxxx> wrote:

> On 01/05/2012 10:15 PM, Alexander Graf wrote:
>> Right now we transfer a static struct every time we want to get or set
>> registers. Unfortunately, over time we realize that there are more of
>> these than we thought of before and the extensibility and flexibility of
>> transferring a full struct every time is limited.
>> 
>> So this is a new approach to the problem. With these new ioctls, we can
>> get and set a single register that is identified by an ID. This allows for
>> very precise and limited transmittal of data. When we later realize that
>> it's a better idea to shove over multiple registers at once, we can reuse
>> most of the infrastructure and simply implement a GET_MANY_REGS / SET_MANY_REGS
>> interface.
>> 
>> The only downpoint I see to this one is that it needs to pad to 1024 bits
>> (hardware is already on 512 bit registers, so I wanted to leave some room)
>> which is slightly too much for transmitting only 64 bits. But if that's all
>> the tradeoff we have to do for getting an extensible interface, I'd say go
>> for it nevertheless.
> 
> The comment about padding is no longer relevant.
> 
>> +/*
>> + * Architecture specific registers are to be defined in arch headers and
>> + * ORed with the arch identifier.
>> + */
>> +#define KVM_REG_PPC        0x1000000000000000ULL
>> +#define KVM_REG_X86        0x2000000000000000ULL
>> +#define KVM_REG_IA64        0x3000000000000000ULL
>> +#define KVM_REG_ARM        0x4000000000000000ULL
>> +#define KVM_REG_S390        0x5000000000000000ULL
>> +
>> +#define KVM_REG_SIZE_SHIFT    52
>> +#define KVM_REG_SIZE_MASK    0x00f0000000000000ULL
>> +#define KVM_REG_SIZE_U8        0x0000000000000000ULL
>> +#define KVM_REG_SIZE_U16    0x0010000000000000ULL
>> +#define KVM_REG_SIZE_U32    0x0020000000000000ULL
>> +#define KVM_REG_SIZE_U64    0x0030000000000000ULL
>> +#define KVM_REG_SIZE_U128    0x0040000000000000ULL
>> +#define KVM_REG_SIZE_U256    0x0050000000000000ULL
>> +#define KVM_REG_SIZE_U512    0x0060000000000000ULL
>> +#define KVM_REG_SIZE_U1024    0x0070000000000000ULL
> 
> Why not just encode directly as number of bytes?

Because this is 1 << n bytes :)

Alex

> 
> -Scott
> 
--
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