From: "tip-bot for Jonathan (Zhixiong) Zhang" <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: zjzhang@codeaurora.org, hpa@zytor.com, peterz@infradead.org,
matt.fleming@intel.com, tglx@linutronix.de, mingo@kernel.org,
linux-kernel@vger.kernel.org, torvalds@linux-foundation.org
Subject: [tip:core/efi] efi, x86: Rearrange efi_mem_attributes()
Date: Sun, 9 Aug 2015 03:24:20 -0700 [thread overview]
Message-ID: <tip-7bf793115dd96ce9bd8ed1665fc187d961a95dba@git.kernel.org> (raw)
In-Reply-To: <1438936621-5215-4-git-send-email-matt@codeblueprint.co.uk>
Commit-ID: 7bf793115dd96ce9bd8ed1665fc187d961a95dba
Gitweb: http://git.kernel.org/tip/7bf793115dd96ce9bd8ed1665fc187d961a95dba
Author: Jonathan (Zhixiong) Zhang <zjzhang@codeaurora.org>
AuthorDate: Fri, 7 Aug 2015 09:36:57 +0100
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Sat, 8 Aug 2015 10:37:39 +0200
efi, x86: Rearrange efi_mem_attributes()
x86 and ia64 implement efi_mem_attributes() differently. This
function needs to be available for other architectures
(such as arm64) as well, such as for the purpose of ACPI/APEI.
ia64 EFI does not set up a 'memmap' variable and does not set
the EFI_MEMMAP flag, so it needs to have its unique implementation
of efi_mem_attributes().
Move efi_mem_attributes() implementation from x86 to the core
EFI code, and declare it with __weak.
It is recommended that other architectures should not override
the default implementation.
Signed-off-by: Jonathan (Zhixiong) Zhang <zjzhang@codeaurora.org>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Reviewed-by: Matt Fleming <matt.fleming@intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1438936621-5215-4-git-send-email-matt@codeblueprint.co.uk
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/platform/efi/efi.c | 18 ------------------
drivers/firmware/efi/efi.c | 31 +++++++++++++++++++++++++++++++
2 files changed, 31 insertions(+), 18 deletions(-)
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index e4308fe..2f61fcd 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -952,24 +952,6 @@ u32 efi_mem_type(unsigned long phys_addr)
return 0;
}
-u64 efi_mem_attributes(unsigned long phys_addr)
-{
- efi_memory_desc_t *md;
- void *p;
-
- if (!efi_enabled(EFI_MEMMAP))
- return 0;
-
- for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) {
- md = p;
- if ((md->phys_addr <= phys_addr) &&
- (phys_addr < (md->phys_addr +
- (md->num_pages << EFI_PAGE_SHIFT))))
- return md->attribute;
- }
- return 0;
-}
-
static int __init arch_parse_efi_cmdline(char *str)
{
if (!str) {
diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
index d7a9160..afee2880 100644
--- a/drivers/firmware/efi/efi.c
+++ b/drivers/firmware/efi/efi.c
@@ -607,3 +607,34 @@ char * __init efi_md_typeattr_format(char *buf, size_t size,
attr & EFI_MEMORY_UC ? "UC" : "");
return buf;
}
+
+/*
+ * efi_mem_attributes - lookup memmap attributes for physical address
+ * @phys_addr: the physical address to lookup
+ *
+ * Search in the EFI memory map for the region covering
+ * @phys_addr. Returns the EFI memory attributes if the region
+ * was found in the memory map, 0 otherwise.
+ *
+ * Despite being marked __weak, most architectures should *not*
+ * override this function. It is __weak solely for the benefit
+ * of ia64 which has a funky EFI memory map that doesn't work
+ * the same way as other architectures.
+ */
+u64 __weak efi_mem_attributes(unsigned long phys_addr)
+{
+ efi_memory_desc_t *md;
+ void *p;
+
+ if (!efi_enabled(EFI_MEMMAP))
+ return 0;
+
+ for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) {
+ md = p;
+ if ((md->phys_addr <= phys_addr) &&
+ (phys_addr < (md->phys_addr +
+ (md->num_pages << EFI_PAGE_SHIFT))))
+ return md->attribute;
+ }
+ return 0;
+}
prev parent reply other threads:[~2015-08-09 10:24 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-06 20:32 [GIT PULL] EFI changes for v4.3 Matt Fleming
2015-08-06 20:32 ` Matt Fleming
[not found] ` <1438936621-5215-7-git-send-email-matt@codeblueprint.co.uk>
[not found] ` <1438936621-5215-7-git-send-email-matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2015-08-07 9:50 ` [PATCH 7/8] arm64: apei: implement arch_apei_get_mem_attributes() Matt Fleming
2015-08-07 9:50 ` Matt Fleming
2015-08-08 8:39 ` Ingo Molnar
[not found] ` <1438936621-5215-4-git-send-email-matt@codeblueprint.co.uk>
[not found] ` <1438936621-5215-4-git-send-email-matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2015-08-07 17:43 ` [PATCH 4/8] efi: x86: rearrange efi_mem_attributes() Zhang, Jonathan Zhixiong
2015-08-07 17:43 ` Zhang, Jonathan Zhixiong
2015-08-07 18:46 ` Matt Fleming
2015-08-09 10:24 ` tip-bot for Jonathan (Zhixiong) Zhang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-7bf793115dd96ce9bd8ed1665fc187d961a95dba@git.kernel.org \
--to=tipbot@zytor.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=matt.fleming@intel.com \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=zjzhang@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.