Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751936AbbHQVLE (ORCPT ); Mon, 17 Aug 2015 17:11:04 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:46620 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750770AbbHQVLB (ORCPT ); Mon, 17 Aug 2015 17:11:01 -0400 Subject: Re: [PATCH 2/2] acpi, apei: use appropriate pgprot_t to map GHES memory To: Matt Fleming References: <1439591850-29002-1-git-send-email-zjzhang@codeaurora.org> <1439591850-29002-2-git-send-email-zjzhang@codeaurora.org> <20150817131357.GB3233@codeblueprint.co.uk> Cc: Will Deacon , Ingo Molnar , Thomas Gleixner , "H . Peter Anvin" , "linux-kernel @ vger . kernel . org" , "linux-efi @ vger . kernel . org" , Matt Fleming , Borislav Petkov , Ard Biesheuvel , Catalin Marinas From: "Zhang, Jonathan Zhixiong" Message-ID: <55D24DE2.6070807@codeaurora.org> Date: Mon, 17 Aug 2015 14:10:58 -0700 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: <20150817131357.GB3233@codeblueprint.co.uk> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2546 Lines: 70 On 8/17/2015 6:13 AM, Matt Fleming wrote: > On Fri, 14 Aug, at 03:37:30PM, Jonathan (Zhixiong) Zhang wrote: >> 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. >> >> With current code, GHES memory region is mapped with PAGE_KERNEL >> based on the assumption that cache coherency of GHES memory region >> is maintained by firmware on all platforms. This assumption is >> not true for above mentioned arm64 platform. >> >> Instead GHES memory region should be mapped with page protection type >> according to what is returned from arch_apei_get_mem_attribute(). >> >> Acked-by: Borislav Petkov >> Signed-off-by: Jonathan (Zhixiong) Zhang >> --- >> 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 23981ac1c6c2..f742335bd8bb 100644 >> --- a/drivers/acpi/apei/ghes.c >> +++ b/drivers/acpi/apei/ghes.c >> @@ -160,8 +160,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; >> } > > Y'know, this would be more readable if written as, > > unsigned long vaddr, paddr; > pgprot_t prot; > > vaddr = (unsigned long)GHES_IOREMAP_IRQ_PAGE(ghes_ioremap_area->addr); > > paddr = pfn << PAGE_SHIFT; > prot = arch_apei_get_mem_attribute(paddr); > > ioremap_page_range(vaddr, vaddr + PAGE_SIZE, paddr, prot); > > But either way, > > Reviewed-by: Matt Fleming Thanks. I will go with the easier to read way. > -- Jonathan (Zhixiong) Zhang The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project -- 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/