From patchwork Mon Aug 14 10:57:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Cooper X-Patchwork-Id: 9898563 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id F3E4660230 for ; Mon, 14 Aug 2017 10:59:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E75FD27861 for ; Mon, 14 Aug 2017 10:59:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DC43F27FB2; Mon, 14 Aug 2017 10:59:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 5C1FE27861 for ; Mon, 14 Aug 2017 10:59:24 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dhD3a-0005P8-Jl; Mon, 14 Aug 2017 10:57:14 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dhD3Z-0005Om-Jy for xen-devel@lists.xen.org; Mon, 14 Aug 2017 10:57:13 +0000 Received: from [85.158.137.68] by server-5.bemta-3.messagelabs.com id 90/0F-02181-80281995; Mon, 14 Aug 2017 10:57:12 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprAIsWRWlGSWpSXmKPExsXitHRDpC5H08R Ig8lHFSyWfFzM4sDocXT3b6YAxijWzLyk/IoE1oz7O2YwFRwXrpjUeoe1gfEffxcjJ4eEgL/E 59enWEFsNgF9id0vPjGB2CIC6hKnOy4CxTk4mAX8JA498AUJCws4S7T2/mYHsVkEVCWapn4Fs 3kFPCQaGp+wQoyUkzh//CcziM0p4CmxY8cVMFsIqGbl6k1QtprEtf5LUL2CEidnPmEBsZkFJC QOvnjBPIGRdxaS1CwkqQWMTKsYNYpTi8pSi3QNLfWSijLTM0pyEzNzdA0NjPVyU4uLE9NTcxK TivWS83M3MQJDp56BgXEH4+/jfocYJTmYlER5E3x6I4X4kvJTKjMSizPii0pzUosPMcpwcChJ 8E5qmBgpJFiUmp5akZaZAwximLQEB4+SCO8fkDRvcUFibnFmOkTqFKMux6sJ/78xCbHk5eelS onzFoMUCYAUZZTmwY2ARdQlRlkpYV5GBgYGIZ6C1KLczBJU+VeM4hyMSsK8Yo1AU3gy80rgNr 0COoIJ6Ig+kPt5i0sSEVJSDYwn1+6M1vFzvrvvfleKqn3uq2/Hnwe80dyybh/X9ntHy7llujb +kvpZlPxZZAtnyLTj25m6v5+MrOYQCuc0mWSlcPvn/YXCvE2T+h81ZE7xlnAJvhQyNcL9JVNS vPP0XUvyHiTdLhRVnPNku4sR950zF7yV7AKepmjn5p7W+ORz7v/fhr1W2SeVWIozEg21mIuKE wH71J5qowIAAA== X-Env-Sender: prvs=392ef7610=Andrew.Cooper3@citrix.com X-Msg-Ref: server-14.tower-31.messagelabs.com!1502708230!109745408!2 X-Originating-IP: [66.165.176.89] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n, received_headers: No Received headers X-StarScan-Received: X-StarScan-Version: 9.4.45; banners=-,-,- X-VirusChecked: Checked Received: (qmail 55246 invoked from network); 14 Aug 2017 10:57:12 -0000 Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89) by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP; 14 Aug 2017 10:57:12 -0000 X-IronPort-AV: E=Sophos;i="5.41,372,1498521600"; d="scan'208";a="435380324" From: Andrew Cooper To: Xen-devel Date: Mon, 14 Aug 2017 11:57:02 +0100 Message-ID: <1502708222-6926-3-git-send-email-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1502708222-6926-1-git-send-email-andrew.cooper3@citrix.com> References: <1502708222-6926-1-git-send-email-andrew.cooper3@citrix.com> MIME-Version: 1.0 Cc: Andrew Cooper , Jan Beulich Subject: [Xen-devel] [PATCH 2/2] x86/page: Introduce and use PAGE_HYPERVISOR_UC X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP Always map the PCI MMCFG region as strongly uncacheable. Nothing good will happen if stray MTRR settings end up converting UC- to WC. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich --- CC: Jan Beulich --- xen/arch/x86/x86_64/mmconfig_64.c | 2 +- xen/include/asm-x86/page.h | 1 + xen/include/asm-x86/x86_64/page.h | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/x86_64/mmconfig_64.c b/xen/arch/x86/x86_64/mmconfig_64.c index a7d2e33..958b6cf 100644 --- a/xen/arch/x86/x86_64/mmconfig_64.c +++ b/xen/arch/x86/x86_64/mmconfig_64.c @@ -140,7 +140,7 @@ int pci_mmcfg_arch_enable(unsigned int idx) if (pci_mmcfg_virt[idx].virt) return 0; - pci_mmcfg_virt[idx].virt = mcfg_ioremap(cfg, idx, PAGE_HYPERVISOR_UCMINUS); + pci_mmcfg_virt[idx].virt = mcfg_ioremap(cfg, idx, PAGE_HYPERVISOR_UC); if (!pci_mmcfg_virt[idx].virt) { printk(KERN_ERR "PCI: Cannot map MCFG aperture for segment %04x\n", cfg->pci_segment); diff --git a/xen/include/asm-x86/page.h b/xen/include/asm-x86/page.h index 0b68c5e..263ca5b 100644 --- a/xen/include/asm-x86/page.h +++ b/xen/include/asm-x86/page.h @@ -323,6 +323,7 @@ void efi_update_l4_pgtable(unsigned int l4idx, l4_pgentry_t); #define __PAGE_HYPERVISOR (__PAGE_HYPERVISOR_RX | \ _PAGE_DIRTY | _PAGE_RW) #define __PAGE_HYPERVISOR_UCMINUS (__PAGE_HYPERVISOR | _PAGE_PCD) +#define __PAGE_HYPERVISOR_UC (__PAGE_HYPERVISOR | _PAGE_PCD | _PAGE_PWT) #define MAP_SMALL_PAGES _PAGE_AVAIL0 /* don't use superpages mappings */ diff --git a/xen/include/asm-x86/x86_64/page.h b/xen/include/asm-x86/x86_64/page.h index e102624..603ecac 100644 --- a/xen/include/asm-x86/x86_64/page.h +++ b/xen/include/asm-x86/x86_64/page.h @@ -167,10 +167,13 @@ typedef l4_pgentry_t root_pgentry_t; /* Dependency on NX being available can't be expressed. */ # define PAGE_HYPERVISOR PAGE_HYPERVISOR_RWX # define PAGE_HYPERVISOR_UCMINUS (__PAGE_HYPERVISOR_UCMINUS | _PAGE_GLOBAL) +# define PAGE_HYPERVISOR_UC (__PAGE_HYPERVISOR_UC | _PAGE_GLOBAL) #else # define PAGE_HYPERVISOR PAGE_HYPERVISOR_RW # define PAGE_HYPERVISOR_UCMINUS (__PAGE_HYPERVISOR_UCMINUS | \ _PAGE_GLOBAL | _PAGE_NX) +# define PAGE_HYPERVISOR_UC (__PAGE_HYPERVISOR_UC | \ + _PAGE_GLOBAL | _PAGE_NX) #endif #endif /* __X86_64_PAGE_H__ */