From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: Masami Hiramatsu <mhiramat@redhat.com>
Cc: mingo@redhat.com, hpa@zytor.com, linux-kernel@vger.kernel.org,
torvalds@linux-foundation.org, ananth@in.ibm.com,
garyhade@us.ibm.com, akpm@linux-foundation.org,
tglx@linutronix.de, systemtap@sources.redhat.com, mingo@elte.hu,
linux-tip-commits@vger.kernel.org
Subject: Re: [tip:x86/urgent] x86: fix set_fixmap to use phys_addr_t
Date: Fri, 10 Apr 2009 12:05:48 -0400 [thread overview]
Message-ID: <20090410160547.GA31132@Krystal> (raw)
In-Reply-To: <49DF63C3.7000406@redhat.com>
* Masami Hiramatsu (mhiramat@redhat.com) wrote:
> Masami Hiramatsu wrote:
> > Commit-ID: 189cdc2b41fce3a780a6f3aa963cc4e8114aec6b
> > Gitweb: http://git.kernel.org/tip/189cdc2b41fce3a780a6f3aa963cc4e8114aec6b
> > Author: Masami Hiramatsu <mhiramat@redhat.com>
> > AuthorDate: Thu, 9 Apr 2009 10:55:33 -0700
> > Committer: Ingo Molnar <mingo@elte.hu>
> > CommitDate: Fri, 10 Apr 2009 15:52:59 +0200
> >
> > x86: fix set_fixmap to use phys_addr_t
> >
> > Impact: fix kprobes crash on 32-bit with RAM above 4G
> >
> > Use phys_addr_t for receiving a physical address argument
> > instead of unsigned long. This allows fixmap to handle
> > pages higher than 4GB on x86-32.
> >
> > Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
> > Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
>
> I thought I had to update ioremap.c too...
> Anyway, here is the ioremap.c update. If you think it is useful,
> please merge it.
>
> Thank you,
> ----
>
> x86: fix early_ioremap and early_set_fixmap to handle over 4G pages
>
> From: Masami Hiramatsu <mhiramat@redhat.com>
>
> Impact: Allow early_ioremap to handle over 4G pages
>
> Use phys_addr_t and resource_size_t for receiving a physical
> address argument instead of unsigned long in early_set_fixmap
> and early_ioremap. This allows early_ioremap to handle
> pages higher than 4GB on x86-32 with PAE.
>
> Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
> Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> Cc: Ingo Molnar <mingo@elte.hu>
> ---
>
> arch/x86/include/asm/io.h | 6 ++++--
> arch/x86/mm/ioremap.c | 23 +++++++++++++----------
> 2 files changed, 17 insertions(+), 12 deletions(-)
>
>
> diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
> index e5383e3..7373932 100644
> --- a/arch/x86/include/asm/io.h
> +++ b/arch/x86/include/asm/io.h
> @@ -193,8 +193,10 @@ extern void __iomem *ioremap_wc(resource_size_t offset, unsigned long size);
> */
> extern void early_ioremap_init(void);
> extern void early_ioremap_reset(void);
> -extern void __iomem *early_ioremap(unsigned long offset, unsigned long size);
> -extern void __iomem *early_memremap(unsigned long offset, unsigned long size);
> +extern void __iomem *early_ioremap(resource_size_t phys_addr,
> + unsigned long size);
> +extern void __iomem *early_memremap(resource_size_t phys_addr,
> + unsigned long size);
Nitpick : those second lines are not aligned with each other. The rest
has my
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Thanks !
Mathieu
> extern void early_iounmap(void __iomem *addr, unsigned long size);
>
> #define IO_SPACE_LIMIT 0xffff
> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
> index 0dfa09d..09daebf 100644
> --- a/arch/x86/mm/ioremap.c
> +++ b/arch/x86/mm/ioremap.c
> @@ -547,7 +547,7 @@ void __init early_ioremap_reset(void)
> }
>
> static void __init __early_set_fixmap(enum fixed_addresses idx,
> - unsigned long phys, pgprot_t flags)
> + phys_addr_t phys, pgprot_t flags)
> {
> unsigned long addr = __fix_to_virt(idx);
> pte_t *pte;
> @@ -566,7 +566,7 @@ static void __init __early_set_fixmap(enum fixed_addresses idx,
> }
>
> static inline void __init early_set_fixmap(enum fixed_addresses idx,
> - unsigned long phys, pgprot_t prot)
> + phys_addr_t phys, pgprot_t prot)
> {
> if (after_paging_init)
> __set_fixmap(idx, phys, prot);
> @@ -607,9 +607,10 @@ static int __init check_early_ioremap_leak(void)
> late_initcall(check_early_ioremap_leak);
>
> static void __init __iomem *
> -__early_ioremap(unsigned long phys_addr, unsigned long size, pgprot_t prot)
> +__early_ioremap(resource_size_t phys_addr, unsigned long size, pgprot_t prot)
> {
> - unsigned long offset, last_addr;
> + unsigned long offset;
> + resource_size_t last_addr;
> unsigned int nrpages;
> enum fixed_addresses idx0, idx;
> int i, slot;
> @@ -625,15 +626,15 @@ __early_ioremap(unsigned long phys_addr, unsigned long size, pgprot_t prot)
> }
>
> if (slot < 0) {
> - printk(KERN_INFO "early_iomap(%08lx, %08lx) not found slot\n",
> - phys_addr, size);
> + printk(KERN_INFO "early_iomap(%08llx, %08lx) not found slot\n",
> + (u64)phys_addr, size);
> WARN_ON(1);
> return NULL;
> }
>
> if (early_ioremap_debug) {
> - printk(KERN_INFO "early_ioremap(%08lx, %08lx) [%d] => ",
> - phys_addr, size, slot);
> + printk(KERN_INFO "early_ioremap(%08llx, %08lx) [%d] => ",
> + (u64)phys_addr, size, slot);
> dump_stack();
> }
>
> @@ -680,13 +681,15 @@ __early_ioremap(unsigned long phys_addr, unsigned long size, pgprot_t prot)
> }
>
> /* Remap an IO device */
> -void __init __iomem *early_ioremap(unsigned long phys_addr, unsigned long size)
> +void __init __iomem *
> +early_ioremap(resource_size_t phys_addr, unsigned long size)
> {
> return __early_ioremap(phys_addr, size, PAGE_KERNEL_IO);
> }
>
> /* Remap memory */
> -void __init __iomem *early_memremap(unsigned long phys_addr, unsigned long size)
> +void __init __iomem *
> +early_memremap(resource_size_t phys_addr, unsigned long size)
> {
> return __early_ioremap(phys_addr, size, PAGE_KERNEL);
> }
> --
> Masami Hiramatsu
>
> Software Engineer
> Hitachi Computer Products (America) Inc.
> Software Solutions Division
>
> e-mail: mhiramat@redhat.com
>
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
next prev parent reply other threads:[~2009-04-10 16:06 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-04 14:34 [BUG][-tip] kprobes on module functions hits kernel BUG in text_poke on x86-32 Masami Hiramatsu
2009-04-04 15:42 ` Mathieu Desnoyers
2009-04-04 18:28 ` Masami Hiramatsu
2009-04-04 19:04 ` Masami Hiramatsu
2009-04-05 3:46 ` Masami Hiramatsu
2009-04-05 3:49 ` Masami Hiramatsu
2009-04-06 17:11 ` [BUGFIX][PATCH -tip] x86: fix text_poke to handle highmem pages Masami Hiramatsu
2009-04-06 17:32 ` Mathieu Desnoyers
2009-04-06 17:44 ` Masami Hiramatsu
2009-04-06 17:58 ` Mathieu Desnoyers
2009-04-06 20:23 ` Masami Hiramatsu
2009-04-08 12:31 ` Ingo Molnar
2009-04-08 14:57 ` Masami Hiramatsu
2009-04-08 14:59 ` Ingo Molnar
2009-04-09 17:55 ` [BUGFIX][PATCH] x86: fix set_fixmap to use phys_addr_t Masami Hiramatsu
2009-04-09 18:46 ` Mathieu Desnoyers
2009-04-09 21:52 ` Masami Hiramatsu
2009-04-10 14:06 ` [tip:x86/urgent] " Masami Hiramatsu
2009-04-10 15:20 ` Masami Hiramatsu
2009-04-10 16:05 ` Mathieu Desnoyers [this message]
2009-04-10 17:48 ` Masami Hiramatsu
2009-04-10 18:30 ` Masami Hiramatsu
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=20090410160547.GA31132@Krystal \
--to=mathieu.desnoyers@polymtl.ca \
--cc=akpm@linux-foundation.org \
--cc=ananth@in.ibm.com \
--cc=garyhade@us.ibm.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mhiramat@redhat.com \
--cc=mingo@elte.hu \
--cc=mingo@redhat.com \
--cc=systemtap@sources.redhat.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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.