From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AH8x225YwmUYpnB4DIAfebsaimMRSwDnYxy0YpknAFClJijW+gwZByrnXDiQF/qP2WN5Myf+SrdP ARC-Seal: i=1; a=rsa-sha256; t=1516611129; cv=none; d=google.com; s=arc-20160816; b=Xt6rvqNobRD+8kTFIKpQ7zVPxXHDjCe7C17Ys5QMm4ZdnUipds//wDXw1+oc+glaxf ls3XlmfqtCXl9IUGZcPFTBuEu8lyLy1v0vwMsucGWPQ5fJOkLgfVUPCXj9reVm+mhSC4 lNkujyYevRlu3mlMmQ8V/bdBbedJBtB8QZu5HCy4Yqdn6roPRTXwfTPcuR9S18paLIKm aOVe+qykJ+CkvpcxHhmI/og48B/TkpVn1JQpMJoJ7+veDxQciB0io327EOjx7okM7HvS 3wk5vEU95/AM5R8uonaeocr4yN4yOfwHsq0PLsfLiKgHzbVLJ461eV7KuunTLQHmowV6 mJUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:user-agent:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=AgG2/9URSkRU+HndEDEuzOhNj7U76+LQrLvTLAX2HqA=; b=0sWnE486f+OWcI3LtRQQL+HE7WOQUfKAjQHdZ+QK2Fc5hvRplqC9cIZHLo9LUfRP3L QtfG9vzX7Aj2bEte2zTx9KXpjQnxqN7j+WzrozZVFJLdhd8t5oaXGBvqKJCt1VqHiWDs GRfcIy47QovfRPPOELTmX9oOWl+yv6FH2nplHH/yU2MviIC0+B1Q12RomOaJqQdtPLUz 21VXO+SsL6JFOgiccJdRkmKHyjjpHHmE4yC3PdnNRq1aRA2nvRlpdxSfRLn4w3gEK06/ +0mpJMGeSnGRJ7oHdXEy25qpf+XagKBWYmY35mDbvNg3YtakXKoH+kBgt1BcKKmw+V7g df7w== ARC-Authentication-Results: i=1; mx.google.com; spf=softfail (google.com: domain of transitioning gregkh@linuxfoundation.org does not designate 90.92.71.90 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning gregkh@linuxfoundation.org does not designate 90.92.71.90 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Gabriel Craciunescu , Tom Lendacky , Borislav Petkov , Borislav Petkov , Brijesh Singh , Linus Torvalds , Peter Zijlstra , Thomas Gleixner , Ingo Molnar Subject: [PATCH 4.14 44/89] x86/mm: Clean up register saving in the __enc_copy() assembly code Date: Mon, 22 Jan 2018 09:45:24 +0100 Message-Id: <20180122083959.114892314@linuxfoundation.org> X-Mailer: git-send-email 2.16.0 In-Reply-To: <20180122083954.683903493@linuxfoundation.org> References: <20180122083954.683903493@linuxfoundation.org> User-Agent: quilt/0.65 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-LABELS: =?utf-8?b?IlxcU2VudCI=?= X-GMAIL-THRID: =?utf-8?q?1590282031317863379?= X-GMAIL-MSGID: =?utf-8?q?1590282031317863379?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Tom Lendacky commit 1303880179e67c59e801429b7e5d0f6b21137d99 upstream. Clean up the use of PUSH and POP and when registers are saved in the __enc_copy() assembly function in order to improve the readability of the code. Move parameter register saving into general purpose registers earlier in the code and move all the pushes to the beginning of the function with corresponding pops at the end. We do this to prepare fixes. Tested-by: Gabriel Craciunescu Signed-off-by: Tom Lendacky Reviewed-by: Borislav Petkov Cc: Borislav Petkov Cc: Brijesh Singh Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Thomas Gleixner Link: http://lkml.kernel.org/r/20180110192556.6026.74187.stgit@tlendack-t1.amdoffice.net Signed-off-by: Ingo Molnar Signed-off-by: Greg Kroah-Hartman --- arch/x86/mm/mem_encrypt_boot.S | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) --- a/arch/x86/mm/mem_encrypt_boot.S +++ b/arch/x86/mm/mem_encrypt_boot.S @@ -103,20 +103,19 @@ ENTRY(__enc_copy) orq $X86_CR4_PGE, %rdx mov %rdx, %cr4 + push %r15 + + movq %rcx, %r9 /* Save kernel length */ + movq %rdi, %r10 /* Save encrypted kernel address */ + movq %rsi, %r11 /* Save decrypted kernel address */ + /* Set the PAT register PA5 entry to write-protect */ - push %rcx movl $MSR_IA32_CR_PAT, %ecx rdmsr - push %rdx /* Save original PAT value */ + mov %rdx, %r15 /* Save original PAT value */ andl $0xffff00ff, %edx /* Clear PA5 */ orl $0x00000500, %edx /* Set PA5 to WP */ wrmsr - pop %rdx /* RDX contains original PAT value */ - pop %rcx - - movq %rcx, %r9 /* Save kernel length */ - movq %rdi, %r10 /* Save encrypted kernel address */ - movq %rsi, %r11 /* Save decrypted kernel address */ wbinvd /* Invalidate any cache entries */ @@ -138,12 +137,13 @@ ENTRY(__enc_copy) jnz 1b /* Kernel length not zero? */ /* Restore PAT register */ - push %rdx /* Save original PAT value */ movl $MSR_IA32_CR_PAT, %ecx rdmsr - pop %rdx /* Restore original PAT value */ + mov %r15, %rdx /* Restore original PAT value */ wrmsr + pop %r15 + ret .L__enc_copy_end: ENDPROC(__enc_copy)