On Thu, Feb 23, 2017 at 03:34:30PM -0600, Tom Lendacky wrote: > Hmm... maybe I'm missing something here. This doesn't have anything to > do with kexec or efi_reuse_config. This has to do with the fact that I said kexec because kexec uses the setup_data mechanism to pass config tables to the second kernel, for example. > when a system boots the setup data and the EFI data are not encrypted. > Since it's not encrypted we need to be sure that any early_memremap() > and memremap() calls remove the encryption mask from the resulting > pagetable entry that is created so the data can be accessed properly. Anyway, I'd prefer not to do this ad-hoc caching if it can be helped. You're imposing an arbitrary limit of 32 there which the setup_data linked list doesn't have. So if you really want to go inspect those elements, you could iterate over them starting from boot_params.hdr.setup_data, just like parse_setup_data() does. Most of the time that list should be non-existent and if it is, it will be short anyway. And if we really decide that we need to cache it for later inspection due to speed considerations, as you do in memremap_is_setup_data(), you could do that in the default: branch of parse_setup_data() and do it just once: I don't see why you need to do add_to_setup_data_list() *and* update_setup_data_list() when you could add both pointer and updated size once. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.