|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 09/17] x86/VPMU: Interface for setting PMU mode and flags
>>> On 24.01.14 at 18:13, Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> wrote:
> On 01/24/2014 10:10 AM, Jan Beulich wrote:
>>>>> On 21.01.14 at 20:08, Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> wrote:
>>> +long do_xenpmu_op(int op, XEN_GUEST_HANDLE_PARAM(xen_pmu_params_t) arg)
>>> +{
>>> + int ret = -EINVAL;
>>> + xen_pmu_params_t pmu_params;
>>> + uint32_t mode;
>>> +
>>> + switch ( op )
>>> + {
>>> + case XENPMU_mode_set:
>>> + if ( !is_control_domain(current->domain) )
>>> + return -EPERM;
>>> +
>>> + if ( copy_from_guest(&pmu_params, arg, 1) )
>>> + return -EFAULT;
>>> +
>>> + mode = (uint32_t)pmu_params.d.val & XENPMU_MODE_MASK;
>>> + if ( mode & ~XENPMU_MODE_ON )
>>> + return -EINVAL;
>> Please, if you add a new interface, think carefully about future
>> extension room: Here you ignore the upper 32 bits of .val instead
>> of making sure they're zero, thus making it impossible to assign
>> them some meaning later on.
>
> I think I can leave this as is for now --- I am storing VPMU mode and
> VPMU features in the Xen-private vpmu_mode, which is a 64-bit value.
You should drop the cast to a 32-bit value at the very least -
"leave this as is for now" reads like you don#t need to make
any changes.
>>> +/* Parameters structure for HYPERVISOR_xenpmu_op call */
>>> +struct xen_pmu_params {
>>> + /* IN/OUT parameters */
>>> + union {
>>> + struct version {
>>> + uint8_t maj;
>>> + uint8_t min;
>>> + } version;
>>> + uint64_t pad;
>>> + } v;
>> Looking at the implementation above I don't see this ever being an
>> IN parameter.
>
> Currently Xen doesn't care about version but in the future a guest may
> specify what version of PMU it wants to use (I hope this day will never
> come though...)
At which time you'd need to add something like a set-version sub-op,
which would then also be the time to make this as IN/OUT. Right now
it is just IN and hence should be marked as such.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |