Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932147AbbHLQRy (ORCPT ); Wed, 12 Aug 2015 12:17:54 -0400 Received: from mail-wi0-f179.google.com ([209.85.212.179]:37325 "EHLO mail-wi0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754623AbbHLQRm (ORCPT ); Wed, 12 Aug 2015 12:17:42 -0400 From: Matt Fleming To: Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" Cc: "Jonathan (Zhixiong) Zhang" , linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org, Matt Fleming , Borislav Petkov Subject: [PATCH 2/2] acpi, apei: use appropriate pgprot_t to map GHES memory Date: Wed, 12 Aug 2015 17:17:14 +0100 Message-Id: <1439396234-22863-3-git-send-email-matt@codeblueprint.co.uk> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1439396234-22863-1-git-send-email-matt@codeblueprint.co.uk> References: <1439396234-22863-1-git-send-email-matt@codeblueprint.co.uk> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1601 Lines: 43 From: "Jonathan (Zhixiong) Zhang" With ACPI APEI firmware first handling, generic hardware error record is updated by firmware in GHES memory region. On an arm64 platform, firmware updates GHES memory region with uncached access attribute, and then Linux reads stale data from cache. GHES memory region should be mapped with page protection type according to what is returned from arch_apei_get_mem_attribute(), instead of always with PAGE_KERNEL (eg. cached attribute). Acked-by: Borislav Petkov Signed-off-by: Jonathan (Zhixiong) Zhang Signed-off-by: Matt Fleming --- drivers/acpi/apei/ghes.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index 2bfd53cbfe80..0aa37c57acec 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -164,8 +164,10 @@ static void __iomem *ghes_ioremap_pfn_irq(u64 pfn) unsigned long vaddr; vaddr = (unsigned long)GHES_IOREMAP_IRQ_PAGE(ghes_ioremap_area->addr); - ioremap_page_range(vaddr, vaddr + PAGE_SIZE, - pfn << PAGE_SHIFT, PAGE_KERNEL); + ioremap_page_range(vaddr, + vaddr + PAGE_SIZE, + pfn << PAGE_SHIFT, + arch_apei_get_mem_attribute(pfn << PAGE_SHIFT)); return (void __iomem *)vaddr; } -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/