• Joerg Roedel's avatar
    x86/entry/64: Add entry code for #VC handler · a13644f3
    Joerg Roedel authored
    The #VC handler needs special entry code because:
    
    	1. It runs on an IST stack
    
    	2. It needs to be able to handle nested #VC exceptions
    
    To make this work, the entry code is implemented to pretend it doesn't
    use an IST stack. When entered from user-mode or early SYSCALL entry
    path it switches to the task stack. If entered from kernel-mode it tries
    to switch back to the previous stack in the IRET frame.
    
    The stack found in the IRET frame is validated first, and if it is not
    safe to use it for the #VC handler, the code will switch to a
    fall-back stack (the #VC2 IST stack). From there, it can cause nested
    exceptions again.
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/20200907131613.12703-46-joro@8bytes.org
    a13644f3
entry_64.S 41.6 KB