On 09/06/2018 02:47 PM, Sean Christopherson wrote: ...
Yes, the auxiliary array will dumped into the regular .bss when CONFIG_AMD_MEM_ENCRYPT=n. Typically it will be few k, I am not sure if its worth complicating the code to save those extra memory. Most of the distro's have CONFIG_AMD_MEM_ENCRYPT=y anyways.I just realized that we'll try to create a bogus array if 'NR_CPUS <= HVC_BOOT_ARRAY_SIZE'. A bit ugly, but we could #ifdef away both that and CONFIG_AMD_MEM_ENCRYPT=n in a single shot, e.g.: #if defined(CONFIG_AMD_MEM_ENCRYPT) && NR_CPUS > HVC_BOOT_ARRAY_SIZE #define HVC_AUX_ARRAY_SIZE \ PAGE_ALIGN((NR_CPUS - HVC_BOOT_ARRAY_SIZE) * \ sizeof(struct pvclock_vsyscall_time_info)) static struct pvclock_vsyscall_time_info hv_clock_aux[HVC_AUX_ARRAY_SIZE] __decrypted __aligned(PAGE_SIZE); #endif
The HVC_BOOT_ARRAY_SIZE macro uses sizeof(..) and to my understanding the sizeof operators are not allowed in '#if'. Anyway, I will try to see if it can be used, if not then I will stick to CONFIG_AMD_MEM_ENCRYPT check. -Brijesh

