Messages in this thread | | | From | Vitaly Kuznetsov <> | Subject | Re: [PATCH] x86/hyper-v: define structures from TLFS as packed | Date | Fri, 30 Nov 2018 14:44:54 +0100 |
| |
Roman Kagan <rkagan@virtuozzo.com> writes:
> On Fri, Nov 30, 2018 at 01:15:11PM +0100, Vitaly Kuznetsov wrote: >> Without 'packed' compiler is free to add optimization paddings and re-order >> structure fields for randomization/optimization. And structures from >> hyperv-tlfs.h are used for hypervisor-guest communication, we need to >> ultimately forbid such practices. > > Note that __packed also reduces the structure alignment to 1, which is > not necessarily what you want. > > E.g. some of these structures are passed by pointer to the hypercall, > which requires its arguments to be 8byte-aligned.
Hm,
I thought we always take precautions for Hyper-V hypercall arguments, in particular
PV IPI/TLB flush use pre-allocated hyperv_pcpu_input_arg, hv_post_message() uses pre-allocated message page, other call sites use fast hypercalls where we use registers.
I also checked this patch before sending out, WS2016 guest boots without issues. Any particular places you're worried about?
> I'm also not sure > that passing unaligned argument to [rw]msr is ok, need to > double-check.
My understanding is that rdmsr/wrmsr instuctions are registers-only.
We can, of course, just add __aligned(8) to some structures but I'd like to find the reason first.
-- Vitaly
| |