From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752423AbbG2A6w (ORCPT ); Tue, 28 Jul 2015 20:58:52 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:45543 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751424AbbG2A6u (ORCPT ); Tue, 28 Jul 2015 20:58:50 -0400 Subject: Re: [PATCH V7 4/5] arm64: apei: implement arch_apei_get_mem_attributes() To: Matt Fleming , Will Deacon References: <1437515960-16812-1-git-send-email-zjzhang@codeaurora.org> <1437515960-16812-5-git-send-email-zjzhang@codeaurora.org> <20150724145707.GD12569@arm.com> <20150724162149.GX3550@e104818-lin.cambridge.arm.com> <20150724162600.GA21177@arm.com> <1437989891.22168.15.camel@intel.com> <20150727094520.GB3358@arm.com> <1437990891.22168.20.camel@intel.com> Cc: Catalin Marinas , "fu.wei@linaro.org" , "al.stone@linaro.org" , "rjw@rjwysocki.net" , "linux-kernel@vger.kernel.org" , "linaro-acpi@lists.linaro.org" From: "Zhang, Jonathan Zhixiong" Message-ID: <55B82547.3040403@codeaurora.org> Date: Tue, 28 Jul 2015 17:58:47 -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: <1437990891.22168.20.camel@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 7/27/2015 2:54 AM, Matt Fleming wrote: > On Mon, 2015-07-27 at 10:45 +0100, Will Deacon wrote: >> >> That bit's fine. The weird bit is: >> >> pgprot_t prot; >> >> prot = efi_mem_attributes(addr); >> >> Since that's putting the arch-independent format into the pg_prot. > > Oops, missed that. Yeah that's funky. Sorry, that was my mistake. Corrected at V8. >>> I don't see how you can do that any other way than by using pgprot_t. >>> >>> Really, the problem here is that ioremap_page_caller() has no notion of >>> "map this range in a firmware-compatible manner". If we could do, for >>> example, >>> >>> ioremap_page_range(vaddr, vend, paddr, PAGE_FW_COMPAT); >>> >>> that would allow the innards of the arch-ioremap to figure out exactly >>> how to map this range so that the firmware could access it coherently. With this patch set, arch_apei_get_mem_attribute() is defined for above mentioned PAGE_FW_COMPAT. If in future there are additional use case for mapping page in atomic context according to UEFI memory map, the function name/definition can be generalized. >>> >>> I suggested this previously but it didn't gain any traction. >> >> Yeah, or just ioremap_efi. >> >> > > Someone beat you to it ;-) > > arch/x86/include/asm/efi.h:#define efi_ioremap(addr, size, type, attr) ioremap_cache(addr, size) > arch/x86/include/asm/efi.h:extern void __iomem *__init efi_ioremap(unsigned long addr, unsigned long size, > arch/x86/platform/efi/efi.c: va = efi_ioremap(md->phys_addr, size, > arch/x86/platform/efi/efi_64.c:void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size, > arch/x86/platform/efi/efi_64.c: efi_ioremap(top, size - (top - phys_addr), type, attribute); x86's efi_ioremap() is intended to run at init time only. For the purpose of this patch set, we would need to define something new for both archs. We may want to keep it simple at this time, how do you prefer? -- Jonathan (Zhixiong) Zhang The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project