Message ID | 56EA9B5E.9090203@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
>>> On 17.03.16 at 12:56, <zhaoshenglong@huawei.com> wrote: > > On 2016/3/17 19:29, Jan Beulich wrote: >>>>> On 17.03.16 at 12:04, <zhaoshenglong@huawei.com> wrote: >>> On 2016/3/17 18:42, Jan Beulich wrote: >>>>>>> On 17.03.16 at 10:41, <zhaoshenglong@huawei.com> wrote: >>>>>> --- a/xen/include/public/hvm/params.h >>>>>> +++ b/xen/include/public/hvm/params.h >>>>>> @@ -49,11 +49,24 @@ >>>>>> * Domain = val[47:32], Bus = val[31:16] DevFn = val[15:8], IntX = >>> val[1:0] >>>>>> */ >>>>>> >>>>>> +#ifndef CONFIG_ARM >>>> This is a public header, so you can't rely on CONFIG_* values. >>>> You should check compiler defined CPU architecture manifest >>>> constants instead (and there are numerous examples throughout >>>> public/). >>> Oh, right, thanks. Will replace it with >>> #if !defined(__arm__) && !defined (__aarch64__) >> >> Well, not exactly. You should use only positive checks here, >> i.e. the x86 one wants to be framed by a respective x86 >> conditional, and the ARM one wants to be framed by the >> inverse of the above. >> > Like below: Yes, this looks okay. Jan > --- a/xen/include/public/hvm/params.h > +++ b/xen/include/public/hvm/params.h > @@ -49,11 +49,24 @@ > * Domain = val[47:32], Bus = val[31:16] DevFn = val[15:8], IntX = val[1:0] > */ > > +#if defined(__i386__) || defined(__x86_64__) > #define HVM_PARAM_CALLBACK_TYPE_VECTOR 2 > /* > * val[7:0] is a vector number. Check for XENFEAT_hvm_callback_vector > to know > * if this delivery method is available. > */ > +#elif defined(__arm__) || defined (__aarch64__) > +#define HVM_PARAM_CALLBACK_TYPE_PPI 2 > +/* > + * val[55:16] needs to be zero. > + * val[15:8] is interrupt flag of the PPI used by event-channel: > + * bit 8: the PPI is edge(1) or level(0) triggered > + * bit 9: the PPI is active low(1) or high(0) > + * val[7:0] is a PPI number used by event-channel. > + * This is only used by ARM/ARM64 and masking/eoi the interrupt > associated to > + * the notification is handled by the interrupt controller. > + */ > +#endif > > /* > * These are not used by Xen. They are here for convenience of HVM-guest > > -- > Shannon
diff --git a/xen/include/public/hvm/params.h b/xen/include/public/hvm/params.h index 73d4718..d03c103 100644 --- a/xen/include/public/hvm/params.h +++ b/xen/include/public/hvm/params.h @@ -49,11 +49,24 @@ * Domain = val[47:32], Bus = val[31:16] DevFn = val[15:8], IntX = val[1:0] */ +#if defined(__i386__) || defined(__x86_64__) #define HVM_PARAM_CALLBACK_TYPE_VECTOR 2 /* * val[7:0] is a vector number. Check for XENFEAT_hvm_callback_vector to know * if this delivery method is available. */ +#elif defined(__arm__) || defined (__aarch64__) +#define HVM_PARAM_CALLBACK_TYPE_PPI 2 +/* + * val[55:16] needs to be zero. + * val[15:8] is interrupt flag of the PPI used by event-channel: + * bit 8: the PPI is edge(1) or level(0) triggered + * bit 9: the PPI is active low(1) or high(0) + * val[7:0] is a PPI number used by event-channel. + * This is only used by ARM/ARM64 and masking/eoi the interrupt associated to + * the notification is handled by the interrupt controller. + */ +#endif