On Wed, Jul 26, 2017 at 03:07:14PM -0500, Brijesh Singh wrote: > Are you commenting on amount of code duplication ? If so, I can certainly improve > and use the similar macro used into header file to generate the functions body. So the argument about having CONFIG_AMD_MEM_ENCRYPT disabled doesn't bring a whole lot because distro kernels will all have it enabled. Optimally, it would be best if when SEV is enabled, we patch those IO insns but we can't patch at arbitrary times - we just do it once, at pre-SMP time. And from looking at the code, we do set sev_enabled very early, as part of __startup_64() -> sme_enable() so I guess we can make that set a synthetic X86_FEATURE_ bit and then patch REP IN/OUT* with a CALL, similar to what we do in arch/x86/include/asm/arch_hweight.h with POPCNT. But there you need to pay attention to registers being clobbered, see f5967101e9de ("x86/hweight: Get rid of the special calling convention") Yap, it does sound a bit more complex but if done right, we will be patching all call sites the same way we patch hweight*() calls and there should be no change to kernel size... As always, the devil is in the detail. -- Regards/Gruss, Boris. SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) --