All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Salter <msalter@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: Dave Young <dyoung@redhat.com>, Mark Salter <msalter@redhat.com>
Subject: [PATCH v3 1/6] x86/mm: sparse warning fix for early_memremap
Date: Thu,  9 Jan 2014 22:50:28 -0500	[thread overview]
Message-ID: <1389325833-16535-2-git-send-email-msalter@redhat.com> (raw)
In-Reply-To: <1389325833-16535-1-git-send-email-msalter@redhat.com>

From: Dave Young <dyoung@redhat.com>

There's a lot of sparse warnings for code like below:
void *a = early_memremap(phys_addr, size);

early_memremap intend to map kernel memory with ioremap facility, the return
pointer should be a kernel ram pointer instead of iomem one.

For making the function clearer and supressing sparse warnings this patch
do below two things:
1. cast to (__force void *) for the return value of early_memremap
2. add early_memunmap function and pass (__force void __iomem *) to iounmap

>From Boris:
> Ingo told me yesterday, it makes sense too. I'd guess we can try it.
> FWIW, all callers of early_memremap use the memory they get remapped as
> normal memory so we should be safe.

Signed-off-by: Dave Young <dyoung@redhat.com>
Signed-off-by: Mark Salter <msalter@redhat.com>
---
 arch/x86/include/asm/io.h |  3 ++-
 arch/x86/mm/ioremap.c     | 10 +++++++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
index 34f69cb..1db414f 100644
--- a/arch/x86/include/asm/io.h
+++ b/arch/x86/include/asm/io.h
@@ -325,9 +325,10 @@ extern void early_ioremap_init(void);
 extern void early_ioremap_reset(void);
 extern void __iomem *early_ioremap(resource_size_t phys_addr,
 				   unsigned long size);
-extern void __iomem *early_memremap(resource_size_t phys_addr,
+extern void *early_memremap(resource_size_t phys_addr,
 				    unsigned long size);
 extern void early_iounmap(void __iomem *addr, unsigned long size);
+extern void early_memunmap(void *addr, unsigned long size);
 extern void fixup_early_ioremap(void);
 extern bool is_early_ioremap_ptep(pte_t *ptep);
 
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index 799580c..bbb4504 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -562,10 +562,9 @@ early_ioremap(resource_size_t phys_addr, unsigned long size)
 }
 
 /* Remap memory */
-void __init __iomem *
-early_memremap(resource_size_t phys_addr, unsigned long size)
+void __init *early_memremap(resource_size_t phys_addr, unsigned long size)
 {
-	return __early_ioremap(phys_addr, size, PAGE_KERNEL);
+	return (__force void *)__early_ioremap(phys_addr, size, PAGE_KERNEL);
 }
 
 void __init early_iounmap(void __iomem *addr, unsigned long size)
@@ -620,3 +619,8 @@ void __init early_iounmap(void __iomem *addr, unsigned long size)
 	}
 	prev_map[slot] = NULL;
 }
+
+void __init early_memunmap(void *addr, unsigned long size)
+{
+	early_iounmap((__force void __iomem *)addr, size);
+}
-- 
1.8.3.1


  reply	other threads:[~2014-01-10  3:51 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-10  3:50 [PATCH v3 0/6] generic early_ioremap support Mark Salter
2014-01-10  3:50 ` Mark Salter
2014-01-10  3:50 ` Mark Salter [this message]
2014-01-10  3:50 ` [PATCH v3 2/6] mm: create generic early_ioremap() support Mark Salter
2014-01-10  3:50   ` Mark Salter
2014-01-10  3:50 ` [PATCH v3 3/6] x86: use generic early_ioremap Mark Salter
2014-01-10  3:50 ` [PATCH v3 4/6] arm: add early_ioremap support Mark Salter
2014-01-10  3:50   ` Mark Salter
2014-01-10 11:34   ` Russell King - ARM Linux
2014-01-10 11:34     ` Russell King - ARM Linux
2014-01-10 13:50     ` Mark Salter
2014-01-10 16:11   ` Rob Herring
2014-01-10 16:11     ` Rob Herring
2014-01-10 16:58     ` Catalin Marinas
2014-01-10 16:58       ` Catalin Marinas
2014-01-10 20:04       ` Rob Herring
2014-01-10 20:04         ` Rob Herring
2014-01-10 20:09       ` Rob Herring
2014-01-10 20:09         ` Rob Herring
2014-01-10 20:51     ` Mark Salter
2014-01-10 20:51       ` Mark Salter
2014-01-10 20:40   ` Stephen Boyd
2014-01-10 20:40     ` Stephen Boyd
2014-01-10 20:52     ` Mark Salter
2014-01-10 20:52       ` Mark Salter
2014-01-16  0:32   ` Laura Abbott
2014-01-16  0:32     ` Laura Abbott
2014-01-16  0:35     ` Russell King - ARM Linux
2014-01-16  0:35       ` Russell King - ARM Linux
2014-01-16  2:13     ` Mark Salter
2014-01-16  2:13       ` Mark Salter
2014-01-10  3:50 ` [PATCH v3 5/6] arm64: initialize pgprot info earlier in boot Mark Salter
2014-01-10  3:50   ` Mark Salter
2014-01-10  3:50 ` [PATCH v3 6/6] arm64: add early_ioremap support Mark Salter
2014-01-10  3:50   ` Mark Salter

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=1389325833-16535-2-git-send-email-msalter@redhat.com \
    --to=msalter@redhat.com \
    --cc=dyoung@redhat.com \
    --cc=linux-kernel@vger.kernel.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.