From: Mark Rutland <mark.rutland@arm.com>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: kbuild test robot <lkp@intel.com>,
kbuild-all@01.org, Geert Uytterhoeven <geert@linux-m68k.org>,
Arnd Bergmann <arnd@arndb.de>,
Sudip Mukherjee <sudipm.mukherjee@gmail.com>,
Stephen Rothwell <sfr@canb.auug.org.au>,
Linux-Next <linux-next@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>,
Jeremy Linton <jeremy.linton@arm.com>,
Linux-Arch <linux-arch@vger.kernel.org>,
Laura Abbott <labbott@fedoraproject.org>,
Jeff Dike <jdike@addtoit.com>,
Richard Weinberger <richard@nod.at>
Subject: Re: [PATCH] asm-generic: Fix build when __set_fixmap is absent
Date: Tue, 9 Feb 2016 17:21:26 +0000 [thread overview]
Message-ID: <20160209172125.GA4348@leverpostej> (raw)
In-Reply-To: <20160209165234.GI16122@e104818-lin.cambridge.arm.com>
On Tue, Feb 09, 2016 at 04:52:34PM +0000, Catalin Marinas wrote:
> On Tue, Feb 09, 2016 at 04:33:34PM +0000, Mark Rutland wrote:
> > > >> include/asm-generic/fixmap.h:72:6: error: conflicting types for '__set_fixmap'
> > > void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t prot);
> > > ^
> > > In file included from arch/um/include/asm/pgtable.h:11:0,
> > > from include/linux/mm.h:67,
> > > from include/linux/ring_buffer.h:5,
> > > from include/linux/trace_events.h:5,
> > > from include/trace/syscall.h:6,
> > > from include/linux/syscalls.h:81,
> > > from init/main.c:18:
> > > arch/um/include/asm/fixmap.h:39:13: note: previous declaration of '__set_fixmap' was here
> > > extern void __set_fixmap (enum fixed_addresses idx,
> > > ^
> >
> > The conflict is the type of 'phys'. In arch/um that's an unsigned long
> > rather than a phys_addr_t as it is elsewhere.
>
> At a quick grep, we also have:
>
> arch/sh/include/asm/fixmap.h
> arch/sh/mm/init.c
> arch/sh/mm/nommu.c
>
> > If I convert that to a phys_addr_t the build goes along happily.
> >
> > Should we change set_fixmap_offset back to a macro function for now, or
> > is it simple/correct to change arch/um to use phys_addr_t in
> > __set_fixmap?
>
> And sh. I prefer the static inline, though there is more effort needed
> to test and get acks ;) (I really don't mind either way).
I would also prefer to make this a static inline, but it looks like we
need to sort out some cross-architecture cleanup first. I'm happy to
have a go at that.
In the meantime, so as to allow linux-next to build, and to save us from
merge hell, let's follow the usual idiom and hope that underscores will
protect us.
Hopefully this is the last time I ask this today: Arnd, Catalin, are you
happy with the below patch?
Mark.
---->8----
From 6d283603d18071690dc138e4a0591a445a1d1e30 Mon Sep 17 00:00:00 2001
From: Mark Rutland <mark.rutland@arm.com>
Date: Tue, 9 Feb 2016 17:08:26 +0000
Subject: [PATCH] asm-generic: make __set_fixmap_offset a macro again
Turning __set_fixmap_offset into a static inline breaks the build for
several architectures. Fixing this properly requires updates to a number
of architectures to make them agree on the prototype of __set_fixmap.
For the timebeing, restore __set_fixmap_offset to its prior state as a
macro function, reverting commit ac4c0ac73485867c ("asm-generic: make
__set_fixmap_offset a static inline"). To avoid the original issue with
namespace clashes, 'addr' is prefixed with a liberal sprinking of
underscores.
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Catalin Marinas <catalin.marinas@arm.com>
---
include/asm-generic/fixmap.h | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/include/asm-generic/fixmap.h b/include/asm-generic/fixmap.h
index f9c27b6..827e4d3 100644
--- a/include/asm-generic/fixmap.h
+++ b/include/asm-generic/fixmap.h
@@ -70,13 +70,13 @@ static inline unsigned long virt_to_fix(const unsigned long vaddr)
#endif
/* Return a pointer with offset calculated */
-static inline unsigned long __set_fixmap_offset(enum fixed_addresses idx,
- phys_addr_t phys,
- pgprot_t flags)
-{
- __set_fixmap(idx, phys, flags);
- return fix_to_virt(idx) + (phys & (PAGE_SIZE - 1));
-}
+#define __set_fixmap_offset(idx, phys, flags) \
+({ \
+ unsigned long ________addr; \
+ __set_fixmap(idx, phys, flags); \
+ ________addr = fix_to_virt(idx) + ((phys) & (PAGE_SIZE - 1)); \
+ ________addr; \
+})
#define set_fixmap_offset(idx, phys) \
__set_fixmap_offset(idx, phys, FIXMAP_PAGE_NORMAL)
--
1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: Mark Rutland <mark.rutland@arm.com>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: kbuild test robot <lkp@intel.com>,
kbuild-all@01.org, Geert Uytterhoeven <geert@linux-m68k.org>,
Arnd Bergmann <arnd@arndb.de>,
Sudip Mukherjee <sudipm.mukherjee@gmail.com>,
Stephen Rothwell <sfr@canb.auug.org.au>,
Linux-Next <linux-next@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>,
Jeremy Linton <jeremy.linton@arm.com>,
Linux-Arch <linux-arch@vger.kernel.org>,
Laura Abbott <labbott@fedoraproject.org>,
Jeff Dike <jdike@addtoit.com>,
Richard Weinberger <richard@nod.at>
Subject: Re: [PATCH] asm-generic: Fix build when __set_fixmap is absent
Date: Tue, 9 Feb 2016 17:21:26 +0000 [thread overview]
Message-ID: <20160209172125.GA4348@leverpostej> (raw)
Message-ID: <20160209172126.K-e5SpfXQK1-suECMWyt9VV8yCo4C7OZd0O7ypJJ31g@z> (raw)
In-Reply-To: <20160209165234.GI16122@e104818-lin.cambridge.arm.com>
On Tue, Feb 09, 2016 at 04:52:34PM +0000, Catalin Marinas wrote:
> On Tue, Feb 09, 2016 at 04:33:34PM +0000, Mark Rutland wrote:
> > > >> include/asm-generic/fixmap.h:72:6: error: conflicting types for '__set_fixmap'
> > > void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t prot);
> > > ^
> > > In file included from arch/um/include/asm/pgtable.h:11:0,
> > > from include/linux/mm.h:67,
> > > from include/linux/ring_buffer.h:5,
> > > from include/linux/trace_events.h:5,
> > > from include/trace/syscall.h:6,
> > > from include/linux/syscalls.h:81,
> > > from init/main.c:18:
> > > arch/um/include/asm/fixmap.h:39:13: note: previous declaration of '__set_fixmap' was here
> > > extern void __set_fixmap (enum fixed_addresses idx,
> > > ^
> >
> > The conflict is the type of 'phys'. In arch/um that's an unsigned long
> > rather than a phys_addr_t as it is elsewhere.
>
> At a quick grep, we also have:
>
> arch/sh/include/asm/fixmap.h
> arch/sh/mm/init.c
> arch/sh/mm/nommu.c
>
> > If I convert that to a phys_addr_t the build goes along happily.
> >
> > Should we change set_fixmap_offset back to a macro function for now, or
> > is it simple/correct to change arch/um to use phys_addr_t in
> > __set_fixmap?
>
> And sh. I prefer the static inline, though there is more effort needed
> to test and get acks ;) (I really don't mind either way).
I would also prefer to make this a static inline, but it looks like we
need to sort out some cross-architecture cleanup first. I'm happy to
have a go at that.
In the meantime, so as to allow linux-next to build, and to save us from
merge hell, let's follow the usual idiom and hope that underscores will
protect us.
Hopefully this is the last time I ask this today: Arnd, Catalin, are you
happy with the below patch?
Mark.
---->8----
next prev parent reply other threads:[~2016-02-09 17:21 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20160209164104.4ecaa0ce@canb.auug.org.au>
2016-02-09 7:34 ` linux-next: Tree for Feb 9 Sudip Mukherjee
2016-02-09 7:34 ` Sudip Mukherjee
2016-02-09 12:00 ` Mark Rutland
2016-02-09 12:00 ` Mark Rutland
2016-02-09 13:48 ` Geert Uytterhoeven
2016-02-09 14:35 ` Mark Rutland
2016-02-09 14:35 ` Mark Rutland
2016-02-09 14:38 ` Catalin Marinas
2016-02-09 15:08 ` Arnd Bergmann
2016-02-09 15:08 ` Arnd Bergmann
2016-02-09 16:01 ` Mark Rutland
2016-02-09 16:01 ` Mark Rutland
2016-02-09 16:08 ` Arnd Bergmann
2016-02-09 16:08 ` Arnd Bergmann
2016-02-09 16:13 ` [PATCH] asm-generic: Fix build when __set_fixmap is absent kbuild test robot
2016-02-09 16:13 ` kbuild test robot
2016-02-09 16:33 ` Mark Rutland
2016-02-09 16:33 ` Mark Rutland
2016-02-09 16:45 ` Arnd Bergmann
2016-02-09 16:52 ` Catalin Marinas
2016-02-09 16:52 ` Catalin Marinas
2016-02-09 17:21 ` Mark Rutland [this message]
2016-02-09 17:21 ` Mark Rutland
2016-02-09 17:27 ` Catalin Marinas
2016-02-09 17:27 ` Catalin Marinas
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=20160209172125.GA4348@leverpostej \
--to=mark.rutland@arm.com \
--cc=ard.biesheuvel@linaro.org \
--cc=arnd@arndb.de \
--cc=catalin.marinas@arm.com \
--cc=geert@linux-m68k.org \
--cc=jdike@addtoit.com \
--cc=jeremy.linton@arm.com \
--cc=kbuild-all@01.org \
--cc=labbott@fedoraproject.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-next@vger.kernel.org \
--cc=lkp@intel.com \
--cc=richard@nod.at \
--cc=sfr@canb.auug.org.au \
--cc=sudipm.mukherjee@gmail.com \
/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;
as well as URLs for NNTP newsgroup(s).