|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/2] xen: add update indicator to vcpu_runstate_info
On 20/05/16 18:16, Jan Beulich wrote:
>>>> On 20.05.16 at 17:54, <JGross@xxxxxxxx> wrote:
>> On 20/05/16 17:36, Jan Beulich wrote:
>>>>>> On 20.05.16 at 17:04, <JGross@xxxxxxxx> wrote:
>>>> On 20/05/16 16:49, Jan Beulich wrote:
>>>>>>>> On 20.05.16 at 15:22, <JGross@xxxxxxxx> wrote:
>>>>>> if ( guest_handle_is_null(runstate_guest(v)) )
>>>>>> return 1;
>>>>>>
>>>>>> + update_flag = VM_ASSIST(v->domain, runstate_update_flag);
>>>>>> +
>>>>>> smap_policy = smap_policy_change(v, SMAP_CHECK_ENABLED);
>>>>>>
>>>>>> + if ( update_flag )
>>>>>> + {
>>>>>> + off = offsetof(struct vcpu_runstate_info, state_entry_time) + 7;
>>>>>
>>>>> How come this is outside the following if()? Also sizeof(...) - 1 please
>>>>> instead of the literal 7.
>>>>
>>>> I'm using off for the source address in __raw_copy_to_guest(), too.
>>>
>>> But the offset should, afaict, be different for 32-bit (x86) and
>>> 64-bit (or ARM).
>>
>> Why? The offset is applied to v->runstate which clearly is the same
>> for 32 and 64 bit domains, as it is the hypervisor private structure.
>> Different offsets have to be applied at the destination side only, and
>> this is done properly (at least I think so).
>
> But as you say you use the offset for two purposes: The use on
> the guest handle is which is problematic; the use on the hypervisor
> internal structure is of course fine.
In the compat case I don't use it for the guest_handle:
+ if ( has_32bit_shinfo(v->domain) )
+ {
+ guest_handle = v->runstate_guest.compat.p;
+ guest_handle += offsetof(struct compat_vcpu_runstate_info,
+ state_entry_time) + 7;
+ }
+ else
+ {
+ guest_handle = v->runstate_guest.native.p;
+ guest_handle += off;
+ }
Juergen
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |