[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH V9] xen/vm_event: Clean up control-register-write vm_events and add XCR0 event



At 16:19 +0200 on 03 Jun (1433348379), Lengyel, Tamas wrote:
> On Wed, Jun 3, 2015 at 3:48 PM, Razvan Cojocaru <rcojocaru@xxxxxxxxxxxxxxx>
> wrote:
> > On 06/03/2015 04:29 PM, Lengyel, Tamas wrote:
> > >          struct {
> > >     -        uint16_t mov_to_cr0_enabled          : 1;
> > >     -        uint16_t mov_to_cr0_sync             : 1;
> > >     -        uint16_t mov_to_cr0_onchangeonly     : 1;
> > >     -        uint16_t mov_to_cr3_enabled          : 1;
> > >     -        uint16_t mov_to_cr3_sync             : 1;
> > >     -        uint16_t mov_to_cr3_onchangeonly     : 1;
> > >     -        uint16_t mov_to_cr4_enabled          : 1;
> > >     -        uint16_t mov_to_cr4_sync             : 1;
> > >     -        uint16_t mov_to_cr4_onchangeonly     : 1;
> > >     +        uint16_t write_ctrlreg_enabled       : 4;
> > >     +        uint16_t write_ctrlreg_sync          : 4;
> > >     +        uint16_t write_ctrlreg_onchangeonly  : 4;
> > >
> > >
> > > Just looking at this here again, we will now have a bitmap within a
> > > bitmap, which doesn't seem to be very efficient. IMHO it would be better
> > > to just take the ctrlreg bitmap out as a separate uint8_t within struct
> > > {} monitor.
> >
> > How is it inefficient? I don't see that at all. And I'm not sure what
> > you mean about the uint8_t: there are 3 fields there, each 4-bits wide
> > (write_ctrlreg_enabled, write_ctrlreg_sync, write_ctrlreg_onchangeonly)
> > and only (at most) two of them would fit into a uint8_t. To put them all
> > into a new struct would mean wasting an uint16_t for 12-bits.
> 
> Right now if you want to access a bit using the index on the ctrlreg
> fields, you would for example do (monitor.write_ctrlreg_enabled & index).
> This is actually going to perform two bitmask operations. First,
> monitor.write_ctrlreg_enabled
> does a masking operating to get you only the 4 bits corresponding to this
> field, then you do another mask with the index.

The compiler can optimize away the first mask operation.  E.g., gcc
folds that into a single operation at anything above -O0.

Tim.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.