From patchwork Mon Dec 9 18:06:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 11279803 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 32B42138C for ; Mon, 9 Dec 2019 18:08:18 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0FDBC206D3 for ; Mon, 9 Dec 2019 18:08:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=citrix.com header.i=@citrix.com header.b="VWbdPbkM" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0FDBC206D3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ieNR4-0004JP-GR; Mon, 09 Dec 2019 18:07:06 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ieNR3-0004JK-5E for xen-devel@lists.xenproject.org; Mon, 09 Dec 2019 18:07:05 +0000 X-Inumbo-ID: b3929291-1aae-11ea-883f-12813bfff9fa Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id b3929291-1aae-11ea-883f-12813bfff9fa; Mon, 09 Dec 2019 18:07:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1575914823; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=0zeRvfytI4Dzk3ZZSs+zZZe4qQ5t9nDHuodQX0YYsLA=; b=VWbdPbkMfMDYr3jqfuIfYCTRj9ExW5mn5aPRDl5/mrZAJppJWcsccCNI qaLuFcFmrv9+hiJJa91h3KBRPdYDE41saiatrEZGlC2/GcIGQTkio1mDX X6ewP2TbnFvCR8S4w+GS41y354UNENteUIak1dR/J0GDf0/RrLWyf4lW1 U=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=roger.pau@citrix.com; spf=Pass smtp.mailfrom=roger.pau@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa4.hc3370-68.iphmx.com: no sender authenticity information available from domain of roger.pau@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa4.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa4.hc3370-68.iphmx.com: domain of roger.pau@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa4.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa4.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa4.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: 1RaazgY9P2k0YLGdT9VwCHLiMaR2zzKXlyUqBYiDlTleCkaWiwAajGDjeWiNWYOWGL79MK0kkh lhNDTxh88sRmhZJFkbJfznRFadL7fMzxDna4TMgrSS46EaV2QJI4xuQbgbNJTyXVBPVjVpEH3Q 3WxWvE17HrJkwpDgUexM/9zzTUSD8YzcTfB5Ra2uvSIFqh6/2yZvUTy8/nyK+ISki44FDA0xHf +HKjKaVwEaW+ICe/f2sKQ9rjWAUC4okWu0Ekjbug9t8S0akMQBdOzRg13IcBKASTuSAbYiJ/ZO lIc= X-SBRS: 2.7 X-MesageID: 9972149 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.69,296,1571716800"; d="scan'208";a="9972149" From: Roger Pau Monne To: Date: Mon, 9 Dec 2019 19:06:38 +0100 Message-ID: <20191209180638.47305-1-roger.pau@citrix.com> X-Mailer: git-send-email 2.24.0 MIME-Version: 1.0 Subject: [Xen-devel] [PATCH] x86: store cr4 during suspend/resume X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Andrew Cooper , Wei Liu , Jan Beulich , Roger Pau Monne Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Currently cr4 is not cached before suspension, and mmu_cr4_features is used in order to restore the expected cr4 value. This is correct so far because the tasklet that executes the suspend/resume code is running in the idle vCPU context. In order to make the code less fragile, explicitly save the current cr4 value before suspension, so that it can be restored afterwards. This ensures that the cr4 value cached in the cpu_info doesn't get out of sync after resume from suspension. Suggested-by: Jan Beulich Signed-off-by: Roger Pau Monné Reviewed-by: Jan Beulich --- xen/arch/x86/acpi/wakeup_prot.S | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/acpi/wakeup_prot.S b/xen/arch/x86/acpi/wakeup_prot.S index 74261cb4f1..57431e4e2d 100644 --- a/xen/arch/x86/acpi/wakeup_prot.S +++ b/xen/arch/x86/acpi/wakeup_prot.S @@ -40,6 +40,9 @@ ENTRY(do_suspend_lowlevel) mov %cr3, GREG(ax) mov GREG(ax), REF(saved_cr3) + mov %cr4, GREG(ax) + mov GREG(ax), REF(saved_cr4) + call save_rest_processor_state mov $3, %rdi @@ -53,8 +56,7 @@ ENTRY(do_suspend_lowlevel) ENTRY(__ret_point) lgdt boot_gdtr(%rip) - /* mmu_cr4_features contains latest cr4 setting */ - mov REF(mmu_cr4_features), GREG(ax) + mov REF(saved_cr4), GREG(ax) mov GREG(ax), %cr4 mov REF(saved_cr3), GREG(ax) @@ -124,3 +126,4 @@ DECLARE_GREG(15) saved_cr0: .quad 0 saved_cr3: .quad 0 +saved_cr4: .quad 0