Messages in this thread | | | Date | Fri, 04 Apr 2008 16:34:09 +0100 | From | "Jan Beulich" <> | Subject | Re: [PATCH] i386: additional fix for making ioremap() accept64-bit addresses |
| |
>>> Ingo Molnar <mingo@elte.hu> 04.04.08 14:55 >>> > >* Jan Beulich <jbeulich@novell.com> wrote: > >> The recent change to __ioremap()'s first parameter's type didn't yield >> the intended effect as the first conditional inside the function would >> still have filtered out any addresses with bits [63:32] set. Correct >> last_addr's type and at once also add a check that the address range >> doesn't extend into space hardware cannot support even theoretically. > >i fixed this in x86.git more than a week ago, see: > >| Subject: x86: ioremap of 64-bit resource on 32-bit kernel fix >| From: Ingo Molnar <mingo@elte.hu> >| Date: Tue, 25 Mar 2008 08:31:17 +0100 > >but since 64-bit resources never worked on 32-bit and the initiator >regression causing this discussion turned out to be something else, i >delayed this fix as .26 material. > >the PHYSICAL_MASK fix looks good as an additional check - could you >please resend it against x86.git/latest which has my fix already?
No need to do this afaics: you've already got the better
if (!phys_addr_valid(phys_addr)) { printk(KERN_WARNING "ioremap: invalid physical address %llx\n", phys_addr); WARN_ON_ONCE(1); return NULL; }
in there. What needs fixing is that this returns 1 on 32-bits unconditionally, whereas the x86-64 definition should also be used for PAE (and the parameter type should also be resource_size_t).
Jan
| |