Messages in this thread | | | Subject | Re: [PATCH v5 5/5] x86/kvm: Avoid dynamic allocation of pvclock data when SEV is active | From | Brijesh Singh <> | Date | Thu, 6 Sep 2018 12:50:05 -0500 |
| |
On 09/06/2018 08:50 AM, Sean Christopherson wrote: ...
>> >> So are we going to be defining a decrypted section for every piece of >> machinery now? >> >> That's a bit too much in my book. >> >> Why can't you simply free everything in .data..decrypted on !SVE guests? > > That would prevent adding __decrypted to existing declarations, e.g. > hv_clock_boot, which would be ugly in its own right. A more generic > solution would be to add something like __decrypted_exclusive to mark > data that is used if and only if SEV is active, and then free the > SEV-only data when SEV is disabled. > > Originally, my thought was that this would be a one-off case and the > array could be freed directly in kvmclock_init(), e.g.: >
Please note that kvmclock_init() is called very early during the boot process. We will not be able to use free_init_pages(...) so early. Additionally, we also need to consider the bare-metal case -- which will never call the kvmclock_init().
> static struct pvclock_vsyscall_time_info > hv_clock_aux[HVC_AUX_ARRAY_SIZE] __decrypted __aligned(PAGE_SIZE); > > ... > > void __init kvmclock_init(void) > { > u8 flags; > > if (!sev_active()) > free_init_pages("unused decrypted", > (unsigned long)hv_clock_aux, > (unsigned long)hv_clock_aux + sizeof(hv_clock_aux)); > >>
| |