2015-02-24 09:13:44

by Jürgen Groß

[permalink] [raw]
Subject: [PATCH 0/4] x86: use correct early_[mem,io][re,un]map pairs

Areas mapped via early_memremap() should be unmapped via
early_memunmap(), while I/O-areas should be mapped via early_ioremap()
and unmapped via early_iounmap().

There are multiple spots where an area is mapped via the mem variant
and unmapped via the io variant. This series corrects this by using
the appropriate variants.

Juergen Gross (4):
x86: use early_memunmap in arch/x86/kernel/devicetree.c
x86: use early_memunmap in arch/x86/kernel/e820.c
x86: use early_memunmap in arch/x86/kernel/setup.c
x86, efi: use early_ioremap in arch/x86/platform/efi/efi-bgrt.c

arch/x86/kernel/devicetree.c | 4 ++--
arch/x86/kernel/e820.c | 2 +-
arch/x86/kernel/setup.c | 8 ++++----
arch/x86/platform/efi/efi-bgrt.c | 4 ++--
4 files changed, 9 insertions(+), 9 deletions(-)

--
2.1.4


2015-02-24 09:13:43

by Jürgen Groß

[permalink] [raw]
Subject: [PATCH 1/4] x86: use early_memunmap in arch/x86/kernel/devicetree.c

Memory mapped via early_memremap() should be unmapped with
early_memunmap() instead of early_iounmap().

Signed-off-by: Juergen Gross <[email protected]>
---
arch/x86/kernel/devicetree.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c
index 3d35033..6367a78 100644
--- a/arch/x86/kernel/devicetree.c
+++ b/arch/x86/kernel/devicetree.c
@@ -286,13 +286,13 @@ static void __init x86_flattree_get_config(void)
initial_boot_params = dt = early_memremap(initial_dtb, map_len);
size = of_get_flat_dt_size();
if (map_len < size) {
- early_iounmap(dt, map_len);
+ early_memunmap(dt, map_len);
initial_boot_params = dt = early_memremap(initial_dtb, size);
map_len = size;
}

unflatten_and_copy_device_tree();
- early_iounmap(dt, map_len);
+ early_memunmap(dt, map_len);
}
#else
static inline void x86_flattree_get_config(void) { }
--
2.1.4

2015-02-24 09:13:40

by Jürgen Groß

[permalink] [raw]
Subject: [PATCH 2/4] x86: use early_memunmap in arch/x86/kernel/e820.c

Memory mapped via early_memremap() should be unmapped with
early_memunmap() instead of early_iounmap().

Signed-off-by: Juergen Gross <[email protected]>
---
arch/x86/kernel/e820.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
index 46201de..7d46bb2 100644
--- a/arch/x86/kernel/e820.c
+++ b/arch/x86/kernel/e820.c
@@ -661,7 +661,7 @@ void __init parse_e820_ext(u64 phys_addr, u32 data_len)
extmap = (struct e820entry *)(sdata->data);
__append_e820_map(extmap, entries);
sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
- early_iounmap(sdata, data_len);
+ early_memunmap(sdata, data_len);
printk(KERN_INFO "e820: extended physical RAM map:\n");
e820_print_map("extended");
}
--
2.1.4

2015-02-24 09:13:42

by Jürgen Groß

[permalink] [raw]
Subject: [PATCH 3/4] x86: use early_memunmap in arch/x86/kernel/setup.c

Memory mapped via early_memremap() should be unmapped with
early_memunmap() instead of early_iounmap().

Signed-off-by: Juergen Gross <[email protected]>
---
arch/x86/kernel/setup.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 98dc931..733864a 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -356,7 +356,7 @@ static void __init relocate_initrd(void)
mapaddr = ramdisk_image & PAGE_MASK;
p = early_memremap(mapaddr, clen+slop);
memcpy(q, p+slop, clen);
- early_iounmap(p, clen+slop);
+ early_memunmap(p, clen+slop);
q += clen;
ramdisk_image += clen;
ramdisk_size -= clen;
@@ -445,7 +445,7 @@ static void __init parse_setup_data(void)
data_len = data->len + sizeof(struct setup_data);
data_type = data->type;
pa_next = data->next;
- early_iounmap(data, sizeof(*data));
+ early_memunmap(data, sizeof(*data));

switch (data_type) {
case SETUP_E820_EXT:
@@ -480,7 +480,7 @@ static void __init e820_reserve_setup_data(void)
E820_RAM, E820_RESERVED_KERN);
found = 1;
pa_data = data->next;
- early_iounmap(data, sizeof(*data));
+ early_memunmap(data, sizeof(*data));
}
if (!found)
return;
@@ -501,7 +501,7 @@ static void __init memblock_x86_reserve_range_setup_data(void)
data = early_memremap(pa_data, sizeof(*data));
memblock_reserve(pa_data, sizeof(*data) + data->len);
pa_data = data->next;
- early_iounmap(data, sizeof(*data));
+ early_memunmap(data, sizeof(*data));
}
}

--
2.1.4

2015-02-24 09:15:01

by Jürgen Groß

[permalink] [raw]
Subject: [PATCH 4/4] x86, efi: use early_ioremap in arch/x86/platform/efi/efi-bgrt.c

Use early_ioremap() to map an I/O-area instead of early_memremap().

Signed-off-by: Juergen Gross <[email protected]>
---
arch/x86/platform/efi/efi-bgrt.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/platform/efi/efi-bgrt.c b/arch/x86/platform/efi/efi-bgrt.c
index d143d21..d7f997f 100644
--- a/arch/x86/platform/efi/efi-bgrt.c
+++ b/arch/x86/platform/efi/efi-bgrt.c
@@ -67,7 +67,7 @@ void __init efi_bgrt_init(void)

image = efi_lookup_mapped_addr(bgrt_tab->image_address);
if (!image) {
- image = early_memremap(bgrt_tab->image_address,
+ image = early_ioremap(bgrt_tab->image_address,
sizeof(bmp_header));
ioremapped = true;
if (!image) {
@@ -89,7 +89,7 @@ void __init efi_bgrt_init(void)
}

if (ioremapped) {
- image = early_memremap(bgrt_tab->image_address,
+ image = early_ioremap(bgrt_tab->image_address,
bmp_header.size);
if (!image) {
pr_err("Ignoring BGRT: failed to map image memory\n");
--
2.1.4

Subject: [tip:x86/mm] x86/mm: Use early_memunmap() instead of early_iounmap()

Commit-ID: 8d4a40bc0651ea51c196a3d3016d041c41ec19a2
Gitweb: http://git.kernel.org/tip/8d4a40bc0651ea51c196a3d3016d041c41ec19a2
Author: Juergen Gross <[email protected]>
AuthorDate: Tue, 24 Feb 2015 10:13:28 +0100
Committer: Ingo Molnar <[email protected]>
CommitDate: Tue, 24 Feb 2015 15:58:06 +0100

x86/mm: Use early_memunmap() instead of early_iounmap()

Memory mapped via early_memremap() should be unmapped with
early_memunmap() instead of early_iounmap().

Signed-off-by: Juergen Gross <[email protected]>
Cc: [email protected]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
---
arch/x86/kernel/devicetree.c | 4 ++--
arch/x86/kernel/e820.c | 2 +-
arch/x86/kernel/setup.c | 8 ++++----
3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c
index 3d35033..6367a78 100644
--- a/arch/x86/kernel/devicetree.c
+++ b/arch/x86/kernel/devicetree.c
@@ -286,13 +286,13 @@ static void __init x86_flattree_get_config(void)
initial_boot_params = dt = early_memremap(initial_dtb, map_len);
size = of_get_flat_dt_size();
if (map_len < size) {
- early_iounmap(dt, map_len);
+ early_memunmap(dt, map_len);
initial_boot_params = dt = early_memremap(initial_dtb, size);
map_len = size;
}

unflatten_and_copy_device_tree();
- early_iounmap(dt, map_len);
+ early_memunmap(dt, map_len);
}
#else
static inline void x86_flattree_get_config(void) { }
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
index 46201de..7d46bb2 100644
--- a/arch/x86/kernel/e820.c
+++ b/arch/x86/kernel/e820.c
@@ -661,7 +661,7 @@ void __init parse_e820_ext(u64 phys_addr, u32 data_len)
extmap = (struct e820entry *)(sdata->data);
__append_e820_map(extmap, entries);
sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
- early_iounmap(sdata, data_len);
+ early_memunmap(sdata, data_len);
printk(KERN_INFO "e820: extended physical RAM map:\n");
e820_print_map("extended");
}
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 98dc931..733864a 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -356,7 +356,7 @@ static void __init relocate_initrd(void)
mapaddr = ramdisk_image & PAGE_MASK;
p = early_memremap(mapaddr, clen+slop);
memcpy(q, p+slop, clen);
- early_iounmap(p, clen+slop);
+ early_memunmap(p, clen+slop);
q += clen;
ramdisk_image += clen;
ramdisk_size -= clen;
@@ -445,7 +445,7 @@ static void __init parse_setup_data(void)
data_len = data->len + sizeof(struct setup_data);
data_type = data->type;
pa_next = data->next;
- early_iounmap(data, sizeof(*data));
+ early_memunmap(data, sizeof(*data));

switch (data_type) {
case SETUP_E820_EXT:
@@ -480,7 +480,7 @@ static void __init e820_reserve_setup_data(void)
E820_RAM, E820_RESERVED_KERN);
found = 1;
pa_data = data->next;
- early_iounmap(data, sizeof(*data));
+ early_memunmap(data, sizeof(*data));
}
if (!found)
return;
@@ -501,7 +501,7 @@ static void __init memblock_x86_reserve_range_setup_data(void)
data = early_memremap(pa_data, sizeof(*data));
memblock_reserve(pa_data, sizeof(*data) + data->len);
pa_data = data->next;
- early_iounmap(data, sizeof(*data));
+ early_memunmap(data, sizeof(*data));
}
}

Subject: [tip:x86/mm] x86/mm, efi: Use early_ioremap() in arch/x86/ platform/efi/efi-bgrt.c

Commit-ID: 954e12f7a800ce38b4722ca1d7a6d0293d377b55
Gitweb: http://git.kernel.org/tip/954e12f7a800ce38b4722ca1d7a6d0293d377b55
Author: Juergen Gross <[email protected]>
AuthorDate: Tue, 24 Feb 2015 10:13:31 +0100
Committer: Ingo Molnar <[email protected]>
CommitDate: Tue, 24 Feb 2015 15:58:07 +0100

x86/mm, efi: Use early_ioremap() in arch/x86/platform/efi/efi-bgrt.c

Use early_ioremap() to map an I/O-area instead of
early_memremap().

Signed-off-by: Juergen Gross <[email protected]>
Cc: [email protected]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
---
arch/x86/platform/efi/efi-bgrt.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/platform/efi/efi-bgrt.c b/arch/x86/platform/efi/efi-bgrt.c
index d143d21..d7f997f 100644
--- a/arch/x86/platform/efi/efi-bgrt.c
+++ b/arch/x86/platform/efi/efi-bgrt.c
@@ -67,7 +67,7 @@ void __init efi_bgrt_init(void)

image = efi_lookup_mapped_addr(bgrt_tab->image_address);
if (!image) {
- image = early_memremap(bgrt_tab->image_address,
+ image = early_ioremap(bgrt_tab->image_address,
sizeof(bmp_header));
ioremapped = true;
if (!image) {
@@ -89,7 +89,7 @@ void __init efi_bgrt_init(void)
}

if (ioremapped) {
- image = early_memremap(bgrt_tab->image_address,
+ image = early_ioremap(bgrt_tab->image_address,
bmp_header.size);
if (!image) {
pr_err("Ignoring BGRT: failed to map image memory\n");

2015-02-24 19:22:45

by Matt Fleming

[permalink] [raw]
Subject: Re: [PATCH 0/4] x86: use correct early_[mem,io][re,un]map pairs

On Tue, 24 Feb, at 10:13:27AM, Juergen Gross wrote:
> Areas mapped via early_memremap() should be unmapped via
> early_memunmap(), while I/O-areas should be mapped via early_ioremap()
> and unmapped via early_iounmap().
>
> There are multiple spots where an area is mapped via the mem variant
> and unmapped via the io variant. This series corrects this by using
> the appropriate variants.
>
> Juergen Gross (4):
> x86: use early_memunmap in arch/x86/kernel/devicetree.c
> x86: use early_memunmap in arch/x86/kernel/e820.c
> x86: use early_memunmap in arch/x86/kernel/setup.c
> x86, efi: use early_ioremap in arch/x86/platform/efi/efi-bgrt.c
>
> arch/x86/kernel/devicetree.c | 4 ++--
> arch/x86/kernel/e820.c | 2 +-
> arch/x86/kernel/setup.c | 8 ++++----
> arch/x86/platform/efi/efi-bgrt.c | 4 ++--
> 4 files changed, 9 insertions(+), 9 deletions(-)

Whole series looks good to me.

Reviewed-by: Matt Fleming <[email protected]>

--
Matt Fleming, Intel Open Source Technology Center

2015-02-26 07:50:25

by Dave Young

[permalink] [raw]
Subject: Re: [PATCH 0/4] x86: use correct early_[mem,io][re,un]map pairs

On 02/24/15 at 10:13am, Juergen Gross wrote:
> Areas mapped via early_memremap() should be unmapped via
> early_memunmap(), while I/O-areas should be mapped via early_ioremap()
> and unmapped via early_iounmap().
>
> There are multiple spots where an area is mapped via the mem variant
> and unmapped via the io variant. This series corrects this by using
> the appropriate variants.
>
> Juergen Gross (4):
> x86: use early_memunmap in arch/x86/kernel/devicetree.c
> x86: use early_memunmap in arch/x86/kernel/e820.c
> x86: use early_memunmap in arch/x86/kernel/setup.c
> x86, efi: use early_ioremap in arch/x86/platform/efi/efi-bgrt.c
>
> arch/x86/kernel/devicetree.c | 4 ++--
> arch/x86/kernel/e820.c | 2 +-
> arch/x86/kernel/setup.c | 8 ++++----
> arch/x86/platform/efi/efi-bgrt.c | 4 ++--
> 4 files changed, 9 insertions(+), 9 deletions(-)

Acked-by: Dave Young <[email protected]>

Thanks
Dave