|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] SVM: Add union intstat_t for offset 68h in vmcb struct
On 2020/3/26 0:03, Andrew Cooper wrote:
> On 25/03/2020 15:23, Pu Wen wrote:
>> On 2020/3/25 18:30, Roger Pau Monné wrote:
>>> On Tue, Mar 24, 2020 at 06:37:26PM +0800, Pu Wen wrote:
>>>> diff --git a/xen/include/asm-x86/hvm/svm/vmcb.h
>>>> b/xen/include/asm-x86/hvm/svm/vmcb.h
>>>> index b9e389d481..d8a3285752 100644
>>>> --- a/xen/include/asm-x86/hvm/svm/vmcb.h
>>>> +++ b/xen/include/asm-x86/hvm/svm/vmcb.h
>>>> @@ -316,6 +316,17 @@ typedef union
>>>> uint64_t raw;
>>>> } intinfo_t;
>>>> +typedef union
>>>> +{
>>>> + struct
>>>> + {
>>>> + u64 intr_shadow: 1;
>>>> + u64 guest_intr_mask:1;
>>>> + u64 resvd: 62;
>>>
>>> Could you also use uint64_t for the fields, like you do below for
>>> raw?
>>
>> Ok, thanks. Maybe bool for intr_shadow and guest_intr_mask is better?
>
> Bool would be better if you're willing to change them.
>
> There is a subtle truncation bug with can occur, e.g.
>
> foo->intr_shadow = bar & MASK;
>
> turns to 0 if MASK isn't the bottom bit, and intr_shadow is not bool.
>
> The traditional way to fix this is with !!(bar & MASK), but bools are
> safer because you can't get it wrong accidentally.
>
> Its also fine to drop the resvd entirely. No need for the field.
Thanks for the explanation. I'm fine to use bool for intr_shadow and
drop the resvd field.
--
Regards,
Pu Wen
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |