[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3] arch/x86: Add registers to vm_event
>>> On 25.10.18 at 15:10, <aisaila@xxxxxxxxxxxxxxx> wrote: > On 25.10.2018 14:55, Jan Beulich wrote: >>>>> On 18.10.18 at 11:02, <aisaila@xxxxxxxxxxxxxxx> wrote: >>> @@ -157,6 +157,19 @@ >>> #define VM_EVENT_X86_CR4 2 >>> #define VM_EVENT_X86_XCR0 3 >>> >>> +struct x86_selector_reg { >>> + union >>> + { >>> + uint64_t bytes; >>> + struct >>> + { >>> + uint32_t base; >>> + uint32_t limit : 20; >>> + uint32_t ar : 12; >>> + } fields; >>> + }; >>> +}; >> >> I don't understand why sel was moved out. Are you tight on >> space here, such that you can't tolerate the padding bytes? > > It was dropped on Andrew's suggestion. We are ok with it in the > structure so if is ok by you I can add it back. > >> >> I also question the need for a union here. You don't use >> .bytes anywhere afaics. > > Right now there is no use for the .bytes field and it was put for > further usage. I can drop this in the next version. > >> >> Finally - what meaning to the low (or high) 4 bits of "ar" >> carry? > > If I correctly understand the question, we use ar bits to determine the > running mode of the guest. Actually I was wrongly thinking 4 of the bits would be unused. With there not being any unused bits, the layout - not matching the LAR insn output - should at least be clarified in a comment. >>> @@ -193,7 +206,19 @@ struct vm_event_regs_x86 { >>> uint64_t msr_lstar; >>> uint64_t fs_base; >>> uint64_t gs_base; >> >> You previously removed them, and I think that was correct. >> The field in the union should be uint64_t. Right now you leave >> fs.base and gs.base uninitialized. >> > > We want the structure to be tight so that is why .base is uint32. If we > move the fs/gs base in the new structure and make base to be uint64 then > there are some useless bits there. Then you're still wasting 8 bytes for the unused FS/GS base sub-fields. > The question is if we can leave the code like this and init de remaining > fields? From what I am seeing the fs/gs base should remain uint64. If packing is important, I'd suggest separate structure types for CS/SS/DS/ES and FS/GS. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |