|
[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
On 06/03/2015 04:29 PM, Lengyel, Tamas wrote:
>
>
>
> diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
> index 45b5283..a3c117f 100644
> --- a/xen/include/asm-x86/domain.h
> +++ b/xen/include/asm-x86/domain.h
> @@ -341,15 +341,9 @@ struct arch_domain
>
> /* Monitor options */
> 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.
You might argue that it's not as clean-cut as having one explicitly
specified bit for each control register (like mov_to_cr0_enabled,
mov_to_cr3_enabled, etc. were before), but that's intentional, as it
makes it trivial to add a new control register write event: just go
ahead and "#define VM_EVENT_X86_XCR1 4", for example, and then all you
need to do is make sure that write_ctrlreg_enabled is wide enough to
hold 5 events, and that's it, you can use the new event in the HV and libxc.
Having explicit 1-bit fields for each new event (which I think is what
you're proposing) makes it much more work to add a new ctrlreg event,
and it defeats the purpose of much of the conversations I've had with
Jan about all those shifting and convenience macros.
Thanks,
Razvan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |