public inbox for linux-efi@vger.kernel.org
 help / color / mirror / Atom feed
From: Daniel Kiper <daniel.kiper@oracle.com>
To: linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org,
	x86@kernel.org, xen-devel@lists.xenproject.org
Cc: mjg59@srcf.ucam.org, jeremy@goop.org, matt.fleming@intel.com,
	ian.campbell@citrix.com, andrew.cooper3@citrix.com,
	stefano.stabellini@eu.citrix.com, mingo@redhat.com,
	david.vrabel@citrix.com, jbeulich@suse.com, hpa@zytor.com,
	boris.ostrovsky@oracle.com, tglx@linutronix.de,
	eshelton@pobox.com
Subject: [PATCH v5 1/7] efi: Use early_mem*() instead of early_io*()
Date: Fri, 13 Jun 2014 19:00:17 +0200	[thread overview]
Message-ID: <1402678823-24589-2-git-send-email-daniel.kiper@oracle.com> (raw)
In-Reply-To: <1402678823-24589-1-git-send-email-daniel.kiper@oracle.com>

Use early_mem*() instead of early_io*() because all mapped EFI regions
are true RAM not I/O regions. Additionally, I/O family calls do not work
correctly under Xen in our case. AIUI, early_io*() maps/unmaps real machine
addresses. However, all artificial EFI structures created under Xen live
in dom0 memory and should be mapped/unmapped using early_mem*() family
calls which map domain memory.

Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
---
 arch/x86/platform/efi/efi.c |   42 +++++++++++++++++++++---------------------
 drivers/firmware/efi/efi.c  |    4 ++--
 2 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index 87fc96b..dd1e351 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -427,7 +427,7 @@ void __init efi_unmap_memmap(void)
 {
 	clear_bit(EFI_MEMMAP, &efi.flags);
 	if (memmap.map) {
-		early_iounmap(memmap.map, memmap.nr_map * memmap.desc_size);
+		early_memunmap(memmap.map, memmap.nr_map * memmap.desc_size);
 		memmap.map = NULL;
 	}
 }
@@ -467,12 +467,12 @@ static int __init efi_systab_init(void *phys)
 			if (!data)
 				return -ENOMEM;
 		}
-		systab64 = early_ioremap((unsigned long)phys,
-					 sizeof(*systab64));
+		systab64 = early_memremap((unsigned long)phys,
+						sizeof(*systab64));
 		if (systab64 == NULL) {
 			pr_err("Couldn't map the system table!\n");
 			if (data)
-				early_iounmap(data, sizeof(*data));
+				early_memunmap(data, sizeof(*data));
 			return -ENOMEM;
 		}
 
@@ -504,9 +504,9 @@ static int __init efi_systab_init(void *phys)
 					   systab64->tables;
 		tmp |= data ? data->tables : systab64->tables;
 
-		early_iounmap(systab64, sizeof(*systab64));
+		early_memunmap(systab64, sizeof(*systab64));
 		if (data)
-			early_iounmap(data, sizeof(*data));
+			early_memunmap(data, sizeof(*data));
 #ifdef CONFIG_X86_32
 		if (tmp >> 32) {
 			pr_err("EFI data located above 4GB, disabling EFI.\n");
@@ -516,8 +516,8 @@ static int __init efi_systab_init(void *phys)
 	} else {
 		efi_system_table_32_t *systab32;
 
-		systab32 = early_ioremap((unsigned long)phys,
-					 sizeof(*systab32));
+		systab32 = early_memremap((unsigned long)phys,
+						sizeof(*systab32));
 		if (systab32 == NULL) {
 			pr_err("Couldn't map the system table!\n");
 			return -ENOMEM;
@@ -537,7 +537,7 @@ static int __init efi_systab_init(void *phys)
 		efi_systab.nr_tables = systab32->nr_tables;
 		efi_systab.tables = systab32->tables;
 
-		early_iounmap(systab32, sizeof(*systab32));
+		early_memunmap(systab32, sizeof(*systab32));
 	}
 
 	efi.systab = &efi_systab;
@@ -563,8 +563,8 @@ static int __init efi_runtime_init32(void)
 {
 	efi_runtime_services_32_t *runtime;
 
-	runtime = early_ioremap((unsigned long)efi.systab->runtime,
-			sizeof(efi_runtime_services_32_t));
+	runtime = early_memremap((unsigned long)efi.systab->runtime,
+					sizeof(efi_runtime_services_32_t));
 	if (!runtime) {
 		pr_err("Could not map the runtime service table!\n");
 		return -ENOMEM;
@@ -578,7 +578,7 @@ static int __init efi_runtime_init32(void)
 	efi_phys.set_virtual_address_map =
 			(efi_set_virtual_address_map_t *)
 			(unsigned long)runtime->set_virtual_address_map;
-	early_iounmap(runtime, sizeof(efi_runtime_services_32_t));
+	early_memunmap(runtime, sizeof(efi_runtime_services_32_t));
 
 	return 0;
 }
@@ -587,8 +587,8 @@ static int __init efi_runtime_init64(void)
 {
 	efi_runtime_services_64_t *runtime;
 
-	runtime = early_ioremap((unsigned long)efi.systab->runtime,
-			sizeof(efi_runtime_services_64_t));
+	runtime = early_memremap((unsigned long)efi.systab->runtime,
+					sizeof(efi_runtime_services_64_t));
 	if (!runtime) {
 		pr_err("Could not map the runtime service table!\n");
 		return -ENOMEM;
@@ -602,7 +602,7 @@ static int __init efi_runtime_init64(void)
 	efi_phys.set_virtual_address_map =
 			(efi_set_virtual_address_map_t *)
 			(unsigned long)runtime->set_virtual_address_map;
-	early_iounmap(runtime, sizeof(efi_runtime_services_64_t));
+	early_memunmap(runtime, sizeof(efi_runtime_services_64_t));
 
 	return 0;
 }
@@ -633,8 +633,8 @@ static int __init efi_runtime_init(void)
 static int __init efi_memmap_init(void)
 {
 	/* Map the EFI memory map */
-	memmap.map = early_ioremap((unsigned long)memmap.phys_map,
-				   memmap.nr_map * memmap.desc_size);
+	memmap.map = early_memremap((unsigned long)memmap.phys_map,
+					memmap.nr_map * memmap.desc_size);
 	if (memmap.map == NULL) {
 		pr_err("Could not map the memory map!\n");
 		return -ENOMEM;
@@ -697,10 +697,10 @@ static int __init efi_reuse_config(u64 tables, int nr_tables)
 			((efi_config_table_64_t *)p)->table = data->smbios;
 		p += sz;
 	}
-	early_iounmap(tablep, nr_tables * sz);
+	early_memunmap(tablep, nr_tables * sz);
 
 out_memremap:
-	early_iounmap(data, sizeof(*data));
+	early_memunmap(data, sizeof(*data));
 out:
 	return ret;
 }
@@ -737,14 +737,14 @@ void __init efi_init(void)
 	/*
 	 * Show what we know for posterity
 	 */
-	c16 = tmp = early_ioremap(efi.systab->fw_vendor, 2);
+	c16 = tmp = early_memremap(efi.systab->fw_vendor, 2);
 	if (c16) {
 		for (i = 0; i < sizeof(vendor) - 1 && *c16; ++i)
 			vendor[i] = *c16++;
 		vendor[i] = '\0';
 	} else
 		pr_err("Could not map the firmware vendor!\n");
-	early_iounmap(tmp, 2);
+	early_memunmap(tmp, 2);
 
 	pr_info("EFI v%u.%.02u by %s\n",
 		efi.systab->hdr.revision >> 16,
diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
index cd36deb..023937a 100644
--- a/drivers/firmware/efi/efi.c
+++ b/drivers/firmware/efi/efi.c
@@ -298,7 +298,7 @@ int __init efi_config_init(efi_config_table_type_t *arch_tables)
 			if (table64 >> 32) {
 				pr_cont("\n");
 				pr_err("Table located above 4GB, disabling EFI.\n");
-				early_iounmap(config_tables,
+				early_memunmap(config_tables,
 					       efi.systab->nr_tables * sz);
 				return -EINVAL;
 			}
@@ -314,7 +314,7 @@ int __init efi_config_init(efi_config_table_type_t *arch_tables)
 		tablep += sz;
 	}
 	pr_cont("\n");
-	early_iounmap(config_tables, efi.systab->nr_tables * sz);
+	early_memunmap(config_tables, efi.systab->nr_tables * sz);
 
 	set_bit(EFI_CONFIG_TABLES, &efi.flags);
 
-- 
1.7.10.4

  reply	other threads:[~2014-06-13 17:00 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-13 17:00 [PATCH v5 0/7] xen: Add EFI support Daniel Kiper
2014-06-13 17:00 ` Daniel Kiper [this message]
     [not found]   ` <1402678823-24589-2-git-send-email-daniel.kiper-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2014-06-16  1:19     ` [PATCH v5 1/7] efi: Use early_mem*() instead of early_io*() Matthew Garrett
2014-06-18 12:17   ` Matt Fleming
     [not found]     ` <20140618121709.GF24049-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2014-06-18 12:31       ` David Vrabel
2014-06-18 13:59       ` Mark Salter
2014-06-18 12:59     ` Daniel Kiper
     [not found]       ` <20140618125957.GA28489-fJNZiO034lp9pOct4yEdx/3oZC3j2Omk@public.gmane.org>
2014-06-18 14:56         ` Matt Fleming
2014-06-13 17:00 ` [PATCH v5 2/7] efi: Introduce EFI_NO_DIRECT flag Daniel Kiper
     [not found]   ` <1402678823-24589-3-git-send-email-daniel.kiper-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2014-06-16 10:52     ` [Xen-devel] " David Vrabel
2014-06-18 13:52     ` Matt Fleming
     [not found]       ` <20140618135229.GH24049-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2014-06-18 13:58         ` Jan Beulich
     [not found]           ` <53A1B726020000780001B6CF-tRfBTM6QL9aeHWOVceGJHFaTQe2KTcn/@public.gmane.org>
2014-06-18 14:30             ` Stefano Stabellini
     [not found]               ` <alpine.DEB.2.02.1406181523340.13771-7Z66fg9igcxYtxbxJUhB2Dgeux46jI+i@public.gmane.org>
2014-06-18 15:08                 ` Daniel Kiper
2014-06-18 15:12                 ` Matt Fleming
2014-06-18 16:48         ` Daniel Kiper
     [not found]           ` <20140618164835.GD28489-fJNZiO034lp9pOct4yEdx/3oZC3j2Omk@public.gmane.org>
2014-06-19 14:41             ` Matt Fleming
     [not found]               ` <20140619144112.GT24049-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2014-06-20 14:36                 ` Daniel Kiper
2014-06-13 17:00 ` [PATCH v5 3/7] xen: Define EFI related stuff Daniel Kiper
     [not found]   ` <1402678823-24589-4-git-send-email-daniel.kiper-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2014-06-16 10:54     ` [Xen-devel] " David Vrabel
2014-06-13 17:00 ` [PATCH v5 4/7] xen: Put EFI machinery in place Daniel Kiper
2014-06-16 11:55   ` Stefano Stabellini
     [not found]     ` <alpine.DEB.2.02.1406161245490.13771-7Z66fg9igcxYtxbxJUhB2Dgeux46jI+i@public.gmane.org>
2014-06-16 18:45       ` Daniel Kiper
     [not found]   ` <1402678823-24589-5-git-send-email-daniel.kiper-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2014-06-16 12:00     ` David Vrabel
     [not found]       ` <539EDC5D.4010207-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>
2014-06-16 19:06         ` Daniel Kiper
2014-06-13 17:00 ` [PATCH v5 5/7] arch/x86: Replace plain strings with constants Daniel Kiper
     [not found]   ` <1402678823-24589-6-git-send-email-daniel.kiper-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2014-06-18 13:56     ` Matt Fleming
2014-06-13 17:00 ` [PATCH v5 6/7] arch/x86: Remove redundant set_bit() call Daniel Kiper
     [not found]   ` <1402678823-24589-7-git-send-email-daniel.kiper-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2014-06-18 13:56     ` Matt Fleming
     [not found]       ` <20140618135637.GJ24049-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2014-06-18 14:01         ` Konrad Rzeszutek Wilk
     [not found]           ` <20140618140101.GC4651-0iZWjJA6G8GSPmnEAIUT9EEOCMrvLtNR@public.gmane.org>
2014-06-18 14:09             ` Matt Fleming
     [not found] ` <1402678823-24589-1-git-send-email-daniel.kiper-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2014-06-13 17:00   ` [PATCH v5 7/7] arch/x86: Comment out efi_set_rtc_mmss() Daniel Kiper
2014-06-16 11:43     ` Stefano Stabellini
2014-06-16 11:54       ` [Xen-devel] " Juergen Gross
     [not found]         ` <539EDAE9.7000605-IBi9RG/b67k@public.gmane.org>
2014-06-16 18:59           ` H. Peter Anvin
     [not found]     ` <1402678823-24589-8-git-send-email-daniel.kiper-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2014-06-18 14:08       ` Matt Fleming
2014-06-18 14:15   ` [PATCH v5 0/7] xen: Add EFI support Matt Fleming
     [not found]     ` <20140618141541.GM24049-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2014-06-18 14:31       ` Konrad Rzeszutek Wilk
     [not found]         ` <20140618143143.GB8545-0iZWjJA6G8GSPmnEAIUT9EEOCMrvLtNR@public.gmane.org>
2014-06-18 14:48           ` Matt Fleming

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=1402678823-24589-2-git-send-email-daniel.kiper@oracle.com \
    --to=daniel.kiper@oracle.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=david.vrabel@citrix.com \
    --cc=eshelton@pobox.com \
    --cc=hpa@zytor.com \
    --cc=ian.campbell@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=jeremy@goop.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matt.fleming@intel.com \
    --cc=mingo@redhat.com \
    --cc=mjg59@srcf.ucam.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox