On Mon, May 06, 2024 at 04:22:02PM +0300, Kirill A. Shutemov wrote: > I do. See comment just above enc_kexec_stop_conversion() call. If you mean this: /* * Call enc_kexec_stop_conversion() while all CPUs are still active and * interrupts are enabled. This will allow all in-flight memory * conversions to finish cleanly. */ if (kexec_in_progress) x86_platform.guest.enc_kexec_stop_conversion(false); then no, this is not enough. I mean this: /** * struct x86_guest - Functions used by misc guest incarnations like SEV, TDX, etc. * * @enc_status_change_prepare Notify HV before the encryption status of a range is changed * @enc_status_change_finish Notify HV after the encryption status of a range is changed * @enc_tlb_flush_required Returns true if a TLB flush is needed before changing page encryption status * @enc_cache_flush_required Returns true if a cache flush is needed before changing page encryption status * @enc_kexec_begin Begin the two-step process of stopping * page conversion... <insert reason why it * needs to happen this way, blabla> * @enc_kexec_finish ... */ struct x86_guest { int (*enc_status_change_prepare)(unsigned long vaddr, int npages, bool enc); int (*enc_status_change_finish)(unsigned long vaddr, int npages, bool enc); bool (*enc_tlb_flush_required)(bool enc); bool (*enc_cache_flush_required)(void); void (*enc_kexec_begin)(bool crash); void (*enc_kexec_finish)(void); And calling them a _begin and _finish makes a lot more sense to me: _begin starts the kexec process for encrypted guests and _finish finishes it. Just from the names you now know what needs to happen and in which order. Thx. -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec