Jan Beulich wrote:
On 25.03.14 at 18:23, <dgdegra@tycho.nsa.gov> wrote:
> Event channel arrays are allocated in blocks with EVTCHNS_PER_BUCKET
> elements, which must be a power of 2.  When XSM is disabled, struct
> evtchn is 32 bytes including padding; however, when XSM is enabled, the
> structure becomes larger and EVTCHNS_PER_BUCKET is halved.  Rearranging
> some of the fields in struct evtchn allows a 4-byte XSM field to fit
> within the 32-byte structure.
> 
> This rearrangement turns the xen_consumer field of struct evtchn into a
> bitfield and adjusts the xen_consumers array to fit the number of
> addressable elements from this value.  Since there are currently only
> two users of this array, only 3 bits (7 values) are reserved.  This
> field is also used rarely enough that the slight overhead from applying
> a bitmask should not cause problems.
> 
> Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
> Cc: David Vrabel <david.vrabel@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Keir Fraser <keir@xen.org>