Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.
[Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.] On 02/04/2017 (Sun 00:22) Samuel Ortiz wrote: > Hi Paul, > > On Mon, Jan 09, 2017 at 12:52:22PM -0500, Paul Gortmaker wrote: > > Currently ia64 fails building allmodconfig with variations of: > > > >In file included from drivers/nfc/nxp-nci/i2c.c:39:0: > >./include/linux/unaligned/access_ok.h:62:29: error: redefinition of > > ‘put_unaligned_be64’ [...] > > > > The decision of what variant for unaligned access to use needs to be > > left to the arch level and not used at the driver level. Since not > > all arch will have sourced asm/unaligned.h already, we need to call > > it out and then the arch can give us just the one definition that > > is needed. > > > > See commit 064106a91be5 ("kernel: add common infrastructure for > > unaligned access") as a reference. > > [...] > This build issue is now fixed in nfc-next with a couple of different > patches. I added nfc-next as a remote and saw you pulled similar commits out of the NFC backlog just recently: commit 2eee74b7e2a496dea49847c36fd09320505f45b7 Author: Guenter Roeck <li...@roeck-us.net> AuthorDate: Sat Aug 1 06:59:29 2015 -0700 Commit: Samuel Ortiz <sa...@linux.intel.com> CommitDate: Sat Apr 1 23:52:25 2017 +0200 NFC: nxp-nci: Include unaligned.h instead of access_ok.h ...and... commit d916d923724d59cde99ee588f15eec59dd863bbd Author: Tobias Klauser <tklau...@distanz.ch> AuthorDate: Wed Oct 26 11:00:12 2016 +0200 Commit: Samuel Ortiz <sa...@linux.intel.com> CommitDate: Sat Apr 1 23:45:31 2017 +0200 NFC: nfcmrvl: Include unaligned.h instead of access_ok.h Thanks for finding those in the backlog and folding them in; presumably the backlog was related to the MAINTAINERS change on the same branch. Anyway, they appear to be the same as the change I proposed, and I build tested nfc-next on ia64 and x86-64 without issue. So it looks good. One thing I did notice, is that nfc-next doesn't appear to be merged into the linux-next trees, which explains why I didn't see a conflict with my patch against your two new commits. Given the recent maintainer change you added, it seems your nfc-next is now the unconditional source for NFC changes. So maybe you want to ask Stephen (Cc:'d) to add your tree to the daily linux-next coverage? All he needs is the repo and branch, which I assume are: git://git.kernel.org/pub/scm/linux/kernel/git/sameo/nfc-next.git #master Well, that and the request for it really should come from you... :) Thanks, Paul. -- > > Cheers, > Samuel.
Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.
[Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.] On 02/04/2017 (Sun 00:22) Samuel Ortiz wrote: > Hi Paul, > > On Mon, Jan 09, 2017 at 12:52:22PM -0500, Paul Gortmaker wrote: > > Currently ia64 fails building allmodconfig with variations of: > > > >In file included from drivers/nfc/nxp-nci/i2c.c:39:0: > >./include/linux/unaligned/access_ok.h:62:29: error: redefinition of > > ‘put_unaligned_be64’ [...] > > > > The decision of what variant for unaligned access to use needs to be > > left to the arch level and not used at the driver level. Since not > > all arch will have sourced asm/unaligned.h already, we need to call > > it out and then the arch can give us just the one definition that > > is needed. > > > > See commit 064106a91be5 ("kernel: add common infrastructure for > > unaligned access") as a reference. > > [...] > This build issue is now fixed in nfc-next with a couple of different > patches. I added nfc-next as a remote and saw you pulled similar commits out of the NFC backlog just recently: commit 2eee74b7e2a496dea49847c36fd09320505f45b7 Author: Guenter Roeck AuthorDate: Sat Aug 1 06:59:29 2015 -0700 Commit: Samuel Ortiz CommitDate: Sat Apr 1 23:52:25 2017 +0200 NFC: nxp-nci: Include unaligned.h instead of access_ok.h ...and... commit d916d923724d59cde99ee588f15eec59dd863bbd Author: Tobias Klauser AuthorDate: Wed Oct 26 11:00:12 2016 +0200 Commit: Samuel Ortiz CommitDate: Sat Apr 1 23:45:31 2017 +0200 NFC: nfcmrvl: Include unaligned.h instead of access_ok.h Thanks for finding those in the backlog and folding them in; presumably the backlog was related to the MAINTAINERS change on the same branch. Anyway, they appear to be the same as the change I proposed, and I build tested nfc-next on ia64 and x86-64 without issue. So it looks good. One thing I did notice, is that nfc-next doesn't appear to be merged into the linux-next trees, which explains why I didn't see a conflict with my patch against your two new commits. Given the recent maintainer change you added, it seems your nfc-next is now the unconditional source for NFC changes. So maybe you want to ask Stephen (Cc:'d) to add your tree to the daily linux-next coverage? All he needs is the repo and branch, which I assume are: git://git.kernel.org/pub/scm/linux/kernel/git/sameo/nfc-next.git #master Well, that and the request for it really should come from you... :) Thanks, Paul. -- > > Cheers, > Samuel.
Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.
[Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.] On 02/04/2017 (Sun 00:22) Samuel Ortiz wrote: > Hi Paul, > > On Mon, Jan 09, 2017 at 12:52:22PM -0500, Paul Gortmaker wrote: > > Currently ia64 fails building allmodconfig with variations of: > > [...] > > > > drivers/nfc/nfcmrvl/fw_dnld.c | 2 +- > > drivers/nfc/nxp-nci/firmware.c | 2 +- > > drivers/nfc/nxp-nci/i2c.c | 2 +- > > 3 files changed, 3 insertions(+), 3 deletions(-) > This build issue is now fixed in nfc-next with a couple of different > patches. OK, I'll remove it from my local queue and retest and let you know if I see any issues still. Thanks, Paul. -- > > Cheers, > Samuel.
Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.
[Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.] On 02/04/2017 (Sun 00:22) Samuel Ortiz wrote: > Hi Paul, > > On Mon, Jan 09, 2017 at 12:52:22PM -0500, Paul Gortmaker wrote: > > Currently ia64 fails building allmodconfig with variations of: > > [...] > > > > drivers/nfc/nfcmrvl/fw_dnld.c | 2 +- > > drivers/nfc/nxp-nci/firmware.c | 2 +- > > drivers/nfc/nxp-nci/i2c.c | 2 +- > > 3 files changed, 3 insertions(+), 3 deletions(-) > This build issue is now fixed in nfc-next with a couple of different > patches. OK, I'll remove it from my local queue and retest and let you know if I see any issues still. Thanks, Paul. -- > > Cheers, > Samuel.
Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.
Hi Paul, On Mon, Jan 09, 2017 at 12:52:22PM -0500, Paul Gortmaker wrote: > Currently ia64 fails building allmodconfig with variations of: > >In file included from drivers/nfc/nxp-nci/i2c.c:39:0: >./include/linux/unaligned/access_ok.h:62:29: error: redefinition of > ‘put_unaligned_be64’ > static __always_inline void put_unaligned_be64(u64 val, void *p) > ^~ >In file included from ./arch/ia64/include/asm/unaligned.h:5:0, > from ./arch/ia64/include/asm/io.h:22, > from ./arch/ia64/include/asm/smp.h:20, > from ./include/linux/smp.h:59, > from ./include/linux/topology.h:33, > from ./include/linux/gfp.h:8, > from ./include/linux/slab.h:14, > from ./include/linux/resource_ext.h:19, > from ./include/linux/acpi.h:26, > from drivers/nfc/nxp-nci/i2c.c:28: >./include/linux/unaligned/be_byteshift.h:65:20: note: previous definition > of ‘put_unaligned_be64’ was here > static inline void put_unaligned_be64(u64 val, void *p) >^~ >scripts/Makefile.build:293: recipe for target 'drivers/nfc/nxp-nci/i2c.o' > failed > > The easiest explanation for this is to look at the non-arch users in > the following output: > >linux$git grep include.*access_ok.h >arch/arm64/crypto/crc32-arm64.c:#include >arch/cris/include/asm/unaligned.h:#include >arch/m68k/include/asm/unaligned.h:#include >arch/mn10300/include/asm/unaligned.h:#include >arch/powerpc/include/asm/unaligned.h:#include >arch/s390/include/asm/unaligned.h:#include >arch/x86/include/asm/unaligned.h:#include >drivers/nfc/nfcmrvl/fw_dnld.c:#include >drivers/nfc/nxp-nci/firmware.c:#include >drivers/nfc/nxp-nci/i2c.c:#include >include/asm-generic/unaligned.h:# include > > Note that nfc is essentially the only non-arch user in the above. > When it forces use of access_ok.h, it will break any arch that has > already selected be_byteshift.h (or other conflicting implementations) > at the arch level. > > The decision of what variant for unaligned access to use needs to be > left to the arch level and not used at the driver level. Since not > all arch will have sourced asm/unaligned.h already, we need to call > it out and then the arch can give us just the one definition that > is needed. > > See commit 064106a91be5 ("kernel: add common infrastructure for > unaligned access") as a reference. > > Cc: Lauro Ramos Venancio> Cc: Aloisio Almeida Jr > Cc: Samuel Ortiz > Cc: Tony Luck > Cc: Fenghua Yu > Cc: linux-i...@vger.kernel.org > Cc: linux-wirel...@vger.kernel.org > Signed-off-by: Paul Gortmaker > --- > > [v2: explicitly include asm/uaccess.h since some arch won't be > getting any variant of an unaligned access header without it. > Build test allmodconfig on x86-64, i386, arm64, ia64. ] > > drivers/nfc/nfcmrvl/fw_dnld.c | 2 +- > drivers/nfc/nxp-nci/firmware.c | 2 +- > drivers/nfc/nxp-nci/i2c.c | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) This build issue is now fixed in nfc-next with a couple of different patches. Cheers, Samuel.
Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.
Hi Paul, On Mon, Jan 09, 2017 at 12:52:22PM -0500, Paul Gortmaker wrote: > Currently ia64 fails building allmodconfig with variations of: > >In file included from drivers/nfc/nxp-nci/i2c.c:39:0: >./include/linux/unaligned/access_ok.h:62:29: error: redefinition of > ‘put_unaligned_be64’ > static __always_inline void put_unaligned_be64(u64 val, void *p) > ^~ >In file included from ./arch/ia64/include/asm/unaligned.h:5:0, > from ./arch/ia64/include/asm/io.h:22, > from ./arch/ia64/include/asm/smp.h:20, > from ./include/linux/smp.h:59, > from ./include/linux/topology.h:33, > from ./include/linux/gfp.h:8, > from ./include/linux/slab.h:14, > from ./include/linux/resource_ext.h:19, > from ./include/linux/acpi.h:26, > from drivers/nfc/nxp-nci/i2c.c:28: >./include/linux/unaligned/be_byteshift.h:65:20: note: previous definition > of ‘put_unaligned_be64’ was here > static inline void put_unaligned_be64(u64 val, void *p) >^~ >scripts/Makefile.build:293: recipe for target 'drivers/nfc/nxp-nci/i2c.o' > failed > > The easiest explanation for this is to look at the non-arch users in > the following output: > >linux$git grep include.*access_ok.h >arch/arm64/crypto/crc32-arm64.c:#include >arch/cris/include/asm/unaligned.h:#include >arch/m68k/include/asm/unaligned.h:#include >arch/mn10300/include/asm/unaligned.h:#include >arch/powerpc/include/asm/unaligned.h:#include >arch/s390/include/asm/unaligned.h:#include >arch/x86/include/asm/unaligned.h:#include >drivers/nfc/nfcmrvl/fw_dnld.c:#include >drivers/nfc/nxp-nci/firmware.c:#include >drivers/nfc/nxp-nci/i2c.c:#include >include/asm-generic/unaligned.h:# include > > Note that nfc is essentially the only non-arch user in the above. > When it forces use of access_ok.h, it will break any arch that has > already selected be_byteshift.h (or other conflicting implementations) > at the arch level. > > The decision of what variant for unaligned access to use needs to be > left to the arch level and not used at the driver level. Since not > all arch will have sourced asm/unaligned.h already, we need to call > it out and then the arch can give us just the one definition that > is needed. > > See commit 064106a91be5 ("kernel: add common infrastructure for > unaligned access") as a reference. > > Cc: Lauro Ramos Venancio > Cc: Aloisio Almeida Jr > Cc: Samuel Ortiz > Cc: Tony Luck > Cc: Fenghua Yu > Cc: linux-i...@vger.kernel.org > Cc: linux-wirel...@vger.kernel.org > Signed-off-by: Paul Gortmaker > --- > > [v2: explicitly include asm/uaccess.h since some arch won't be > getting any variant of an unaligned access header without it. > Build test allmodconfig on x86-64, i386, arm64, ia64. ] > > drivers/nfc/nfcmrvl/fw_dnld.c | 2 +- > drivers/nfc/nxp-nci/firmware.c | 2 +- > drivers/nfc/nxp-nci/i2c.c | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) This build issue is now fixed in nfc-next with a couple of different patches. Cheers, Samuel.
Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.
Hi Paul, On Tue, Mar 28, 2017 at 06:55:26PM -0400, Paul Gortmaker wrote: > On Mon, Jan 9, 2017 at 12:52 PM, Paul Gortmaker >wrote: > > Currently ia64 fails building allmodconfig with variations of: > > > >In file included from drivers/nfc/nxp-nci/i2c.c:39:0: > >./include/linux/unaligned/access_ok.h:62:29: error: redefinition of > > ‘put_unaligned_be64’ > > static __always_inline void put_unaligned_be64(u64 val, void *p) > > Hi Samuel, > > Do you require changes on this commit, or are you happy to queue it as is? > Looking at the NFC git history it seems like you are the right person to ask. I will queue it later this week, sorry for the lag. Cheers, Samuel.
Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.
Hi Paul, On Tue, Mar 28, 2017 at 06:55:26PM -0400, Paul Gortmaker wrote: > On Mon, Jan 9, 2017 at 12:52 PM, Paul Gortmaker > wrote: > > Currently ia64 fails building allmodconfig with variations of: > > > >In file included from drivers/nfc/nxp-nci/i2c.c:39:0: > >./include/linux/unaligned/access_ok.h:62:29: error: redefinition of > > ‘put_unaligned_be64’ > > static __always_inline void put_unaligned_be64(u64 val, void *p) > > Hi Samuel, > > Do you require changes on this commit, or are you happy to queue it as is? > Looking at the NFC git history it seems like you are the right person to ask. I will queue it later this week, sorry for the lag. Cheers, Samuel.
Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.
On Mon, Jan 9, 2017 at 12:52 PM, Paul Gortmakerwrote: > Currently ia64 fails building allmodconfig with variations of: > >In file included from drivers/nfc/nxp-nci/i2c.c:39:0: >./include/linux/unaligned/access_ok.h:62:29: error: redefinition of > ‘put_unaligned_be64’ > static __always_inline void put_unaligned_be64(u64 val, void *p) Hi Samuel, Do you require changes on this commit, or are you happy to queue it as is? Looking at the NFC git history it seems like you are the right person to ask. Thanks, Paul. -- >In file included from ./arch/ia64/include/asm/unaligned.h:5:0, > from ./arch/ia64/include/asm/io.h:22, > from ./arch/ia64/include/asm/smp.h:20, > from ./include/linux/smp.h:59, > from ./include/linux/topology.h:33, > from ./include/linux/gfp.h:8, > from ./include/linux/slab.h:14, > from ./include/linux/resource_ext.h:19, > from ./include/linux/acpi.h:26, > from drivers/nfc/nxp-nci/i2c.c:28: >./include/linux/unaligned/be_byteshift.h:65:20: note: previous definition > of ‘put_unaligned_be64’ was here > static inline void put_unaligned_be64(u64 val, void *p) >^~ >scripts/Makefile.build:293: recipe for target 'drivers/nfc/nxp-nci/i2c.o' > failed > > The easiest explanation for this is to look at the non-arch users in > the following output: > >linux$git grep include.*access_ok.h >arch/arm64/crypto/crc32-arm64.c:#include >arch/cris/include/asm/unaligned.h:#include >arch/m68k/include/asm/unaligned.h:#include >arch/mn10300/include/asm/unaligned.h:#include >arch/powerpc/include/asm/unaligned.h:#include >arch/s390/include/asm/unaligned.h:#include >arch/x86/include/asm/unaligned.h:#include >drivers/nfc/nfcmrvl/fw_dnld.c:#include >drivers/nfc/nxp-nci/firmware.c:#include >drivers/nfc/nxp-nci/i2c.c:#include >include/asm-generic/unaligned.h:# include > > Note that nfc is essentially the only non-arch user in the above. > When it forces use of access_ok.h, it will break any arch that has > already selected be_byteshift.h (or other conflicting implementations) > at the arch level. > > The decision of what variant for unaligned access to use needs to be > left to the arch level and not used at the driver level. Since not > all arch will have sourced asm/unaligned.h already, we need to call > it out and then the arch can give us just the one definition that > is needed. > > See commit 064106a91be5 ("kernel: add common infrastructure for > unaligned access") as a reference. > > Cc: Lauro Ramos Venancio > Cc: Aloisio Almeida Jr > Cc: Samuel Ortiz > Cc: Tony Luck > Cc: Fenghua Yu > Cc: linux-i...@vger.kernel.org > Cc: linux-wirel...@vger.kernel.org > Signed-off-by: Paul Gortmaker > --- > > [v2: explicitly include asm/uaccess.h since some arch won't be > getting any variant of an unaligned access header without it. > Build test allmodconfig on x86-64, i386, arm64, ia64. ] > > drivers/nfc/nfcmrvl/fw_dnld.c | 2 +- > drivers/nfc/nxp-nci/firmware.c | 2 +- > drivers/nfc/nxp-nci/i2c.c | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/nfc/nfcmrvl/fw_dnld.c b/drivers/nfc/nfcmrvl/fw_dnld.c > index f8dcdf4b24f6..f3f246ddae06 100644 > --- a/drivers/nfc/nfcmrvl/fw_dnld.c > +++ b/drivers/nfc/nfcmrvl/fw_dnld.c > @@ -17,11 +17,11 @@ > */ > > #include > -#include > #include > #include > #include > #include > +#include > #include "nfcmrvl.h" > > #define FW_DNLD_TIMEOUT15000 > diff --git a/drivers/nfc/nxp-nci/firmware.c b/drivers/nfc/nxp-nci/firmware.c > index 5291797324ba..553011f58339 100644 > --- a/drivers/nfc/nxp-nci/firmware.c > +++ b/drivers/nfc/nxp-nci/firmware.c > @@ -24,7 +24,7 @@ > #include > #include > #include > -#include > +#include > > #include "nxp-nci.h" > > diff --git a/drivers/nfc/nxp-nci/i2c.c b/drivers/nfc/nxp-nci/i2c.c > index 36099e557730..20243dafea21 100644 > --- a/drivers/nfc/nxp-nci/i2c.c > +++ b/drivers/nfc/nxp-nci/i2c.c > @@ -36,9 +36,9 @@ > #include > #include > #include > -#include > > #include > +#include > > #include "nxp-nci.h" > > -- > 2.11.0 >
Re: [PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.
On Mon, Jan 9, 2017 at 12:52 PM, Paul Gortmaker wrote: > Currently ia64 fails building allmodconfig with variations of: > >In file included from drivers/nfc/nxp-nci/i2c.c:39:0: >./include/linux/unaligned/access_ok.h:62:29: error: redefinition of > ‘put_unaligned_be64’ > static __always_inline void put_unaligned_be64(u64 val, void *p) Hi Samuel, Do you require changes on this commit, or are you happy to queue it as is? Looking at the NFC git history it seems like you are the right person to ask. Thanks, Paul. -- >In file included from ./arch/ia64/include/asm/unaligned.h:5:0, > from ./arch/ia64/include/asm/io.h:22, > from ./arch/ia64/include/asm/smp.h:20, > from ./include/linux/smp.h:59, > from ./include/linux/topology.h:33, > from ./include/linux/gfp.h:8, > from ./include/linux/slab.h:14, > from ./include/linux/resource_ext.h:19, > from ./include/linux/acpi.h:26, > from drivers/nfc/nxp-nci/i2c.c:28: >./include/linux/unaligned/be_byteshift.h:65:20: note: previous definition > of ‘put_unaligned_be64’ was here > static inline void put_unaligned_be64(u64 val, void *p) >^~ >scripts/Makefile.build:293: recipe for target 'drivers/nfc/nxp-nci/i2c.o' > failed > > The easiest explanation for this is to look at the non-arch users in > the following output: > >linux$git grep include.*access_ok.h >arch/arm64/crypto/crc32-arm64.c:#include >arch/cris/include/asm/unaligned.h:#include >arch/m68k/include/asm/unaligned.h:#include >arch/mn10300/include/asm/unaligned.h:#include >arch/powerpc/include/asm/unaligned.h:#include >arch/s390/include/asm/unaligned.h:#include >arch/x86/include/asm/unaligned.h:#include >drivers/nfc/nfcmrvl/fw_dnld.c:#include >drivers/nfc/nxp-nci/firmware.c:#include >drivers/nfc/nxp-nci/i2c.c:#include >include/asm-generic/unaligned.h:# include > > Note that nfc is essentially the only non-arch user in the above. > When it forces use of access_ok.h, it will break any arch that has > already selected be_byteshift.h (or other conflicting implementations) > at the arch level. > > The decision of what variant for unaligned access to use needs to be > left to the arch level and not used at the driver level. Since not > all arch will have sourced asm/unaligned.h already, we need to call > it out and then the arch can give us just the one definition that > is needed. > > See commit 064106a91be5 ("kernel: add common infrastructure for > unaligned access") as a reference. > > Cc: Lauro Ramos Venancio > Cc: Aloisio Almeida Jr > Cc: Samuel Ortiz > Cc: Tony Luck > Cc: Fenghua Yu > Cc: linux-i...@vger.kernel.org > Cc: linux-wirel...@vger.kernel.org > Signed-off-by: Paul Gortmaker > --- > > [v2: explicitly include asm/uaccess.h since some arch won't be > getting any variant of an unaligned access header without it. > Build test allmodconfig on x86-64, i386, arm64, ia64. ] > > drivers/nfc/nfcmrvl/fw_dnld.c | 2 +- > drivers/nfc/nxp-nci/firmware.c | 2 +- > drivers/nfc/nxp-nci/i2c.c | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/nfc/nfcmrvl/fw_dnld.c b/drivers/nfc/nfcmrvl/fw_dnld.c > index f8dcdf4b24f6..f3f246ddae06 100644 > --- a/drivers/nfc/nfcmrvl/fw_dnld.c > +++ b/drivers/nfc/nfcmrvl/fw_dnld.c > @@ -17,11 +17,11 @@ > */ > > #include > -#include > #include > #include > #include > #include > +#include > #include "nfcmrvl.h" > > #define FW_DNLD_TIMEOUT15000 > diff --git a/drivers/nfc/nxp-nci/firmware.c b/drivers/nfc/nxp-nci/firmware.c > index 5291797324ba..553011f58339 100644 > --- a/drivers/nfc/nxp-nci/firmware.c > +++ b/drivers/nfc/nxp-nci/firmware.c > @@ -24,7 +24,7 @@ > #include > #include > #include > -#include > +#include > > #include "nxp-nci.h" > > diff --git a/drivers/nfc/nxp-nci/i2c.c b/drivers/nfc/nxp-nci/i2c.c > index 36099e557730..20243dafea21 100644 > --- a/drivers/nfc/nxp-nci/i2c.c > +++ b/drivers/nfc/nxp-nci/i2c.c > @@ -36,9 +36,9 @@ > #include > #include > #include > -#include > > #include > +#include > > #include "nxp-nci.h" > > -- > 2.11.0 >
[PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.
Currently ia64 fails building allmodconfig with variations of: In file included from drivers/nfc/nxp-nci/i2c.c:39:0: ./include/linux/unaligned/access_ok.h:62:29: error: redefinition of ‘put_unaligned_be64’ static __always_inline void put_unaligned_be64(u64 val, void *p) ^~ In file included from ./arch/ia64/include/asm/unaligned.h:5:0, from ./arch/ia64/include/asm/io.h:22, from ./arch/ia64/include/asm/smp.h:20, from ./include/linux/smp.h:59, from ./include/linux/topology.h:33, from ./include/linux/gfp.h:8, from ./include/linux/slab.h:14, from ./include/linux/resource_ext.h:19, from ./include/linux/acpi.h:26, from drivers/nfc/nxp-nci/i2c.c:28: ./include/linux/unaligned/be_byteshift.h:65:20: note: previous definition of ‘put_unaligned_be64’ was here static inline void put_unaligned_be64(u64 val, void *p) ^~ scripts/Makefile.build:293: recipe for target 'drivers/nfc/nxp-nci/i2c.o' failed The easiest explanation for this is to look at the non-arch users in the following output: linux$git grep include.*access_ok.h arch/arm64/crypto/crc32-arm64.c:#include arch/cris/include/asm/unaligned.h:#include arch/m68k/include/asm/unaligned.h:#include arch/mn10300/include/asm/unaligned.h:#include arch/powerpc/include/asm/unaligned.h:#include arch/s390/include/asm/unaligned.h:#include arch/x86/include/asm/unaligned.h:#include drivers/nfc/nfcmrvl/fw_dnld.c:#include drivers/nfc/nxp-nci/firmware.c:#include drivers/nfc/nxp-nci/i2c.c:#include include/asm-generic/unaligned.h:# include Note that nfc is essentially the only non-arch user in the above. When it forces use of access_ok.h, it will break any arch that has already selected be_byteshift.h (or other conflicting implementations) at the arch level. The decision of what variant for unaligned access to use needs to be left to the arch level and not used at the driver level. Since not all arch will have sourced asm/unaligned.h already, we need to call it out and then the arch can give us just the one definition that is needed. See commit 064106a91be5 ("kernel: add common infrastructure for unaligned access") as a reference. Cc: Lauro Ramos VenancioCc: Aloisio Almeida Jr Cc: Samuel Ortiz Cc: Tony Luck Cc: Fenghua Yu Cc: linux-i...@vger.kernel.org Cc: linux-wirel...@vger.kernel.org Signed-off-by: Paul Gortmaker --- [v2: explicitly include asm/uaccess.h since some arch won't be getting any variant of an unaligned access header without it. Build test allmodconfig on x86-64, i386, arm64, ia64. ] drivers/nfc/nfcmrvl/fw_dnld.c | 2 +- drivers/nfc/nxp-nci/firmware.c | 2 +- drivers/nfc/nxp-nci/i2c.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/nfc/nfcmrvl/fw_dnld.c b/drivers/nfc/nfcmrvl/fw_dnld.c index f8dcdf4b24f6..f3f246ddae06 100644 --- a/drivers/nfc/nfcmrvl/fw_dnld.c +++ b/drivers/nfc/nfcmrvl/fw_dnld.c @@ -17,11 +17,11 @@ */ #include -#include #include #include #include #include +#include #include "nfcmrvl.h" #define FW_DNLD_TIMEOUT15000 diff --git a/drivers/nfc/nxp-nci/firmware.c b/drivers/nfc/nxp-nci/firmware.c index 5291797324ba..553011f58339 100644 --- a/drivers/nfc/nxp-nci/firmware.c +++ b/drivers/nfc/nxp-nci/firmware.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include "nxp-nci.h" diff --git a/drivers/nfc/nxp-nci/i2c.c b/drivers/nfc/nxp-nci/i2c.c index 36099e557730..20243dafea21 100644 --- a/drivers/nfc/nxp-nci/i2c.c +++ b/drivers/nfc/nxp-nci/i2c.c @@ -36,9 +36,9 @@ #include #include #include -#include #include +#include #include "nxp-nci.h" -- 2.11.0
[PATCH v2] nfc: don't be making arch specific unaligned decisions at driver level.
Currently ia64 fails building allmodconfig with variations of: In file included from drivers/nfc/nxp-nci/i2c.c:39:0: ./include/linux/unaligned/access_ok.h:62:29: error: redefinition of ‘put_unaligned_be64’ static __always_inline void put_unaligned_be64(u64 val, void *p) ^~ In file included from ./arch/ia64/include/asm/unaligned.h:5:0, from ./arch/ia64/include/asm/io.h:22, from ./arch/ia64/include/asm/smp.h:20, from ./include/linux/smp.h:59, from ./include/linux/topology.h:33, from ./include/linux/gfp.h:8, from ./include/linux/slab.h:14, from ./include/linux/resource_ext.h:19, from ./include/linux/acpi.h:26, from drivers/nfc/nxp-nci/i2c.c:28: ./include/linux/unaligned/be_byteshift.h:65:20: note: previous definition of ‘put_unaligned_be64’ was here static inline void put_unaligned_be64(u64 val, void *p) ^~ scripts/Makefile.build:293: recipe for target 'drivers/nfc/nxp-nci/i2c.o' failed The easiest explanation for this is to look at the non-arch users in the following output: linux$git grep include.*access_ok.h arch/arm64/crypto/crc32-arm64.c:#include arch/cris/include/asm/unaligned.h:#include arch/m68k/include/asm/unaligned.h:#include arch/mn10300/include/asm/unaligned.h:#include arch/powerpc/include/asm/unaligned.h:#include arch/s390/include/asm/unaligned.h:#include arch/x86/include/asm/unaligned.h:#include drivers/nfc/nfcmrvl/fw_dnld.c:#include drivers/nfc/nxp-nci/firmware.c:#include drivers/nfc/nxp-nci/i2c.c:#include include/asm-generic/unaligned.h:# include Note that nfc is essentially the only non-arch user in the above. When it forces use of access_ok.h, it will break any arch that has already selected be_byteshift.h (or other conflicting implementations) at the arch level. The decision of what variant for unaligned access to use needs to be left to the arch level and not used at the driver level. Since not all arch will have sourced asm/unaligned.h already, we need to call it out and then the arch can give us just the one definition that is needed. See commit 064106a91be5 ("kernel: add common infrastructure for unaligned access") as a reference. Cc: Lauro Ramos Venancio Cc: Aloisio Almeida Jr Cc: Samuel Ortiz Cc: Tony Luck Cc: Fenghua Yu Cc: linux-i...@vger.kernel.org Cc: linux-wirel...@vger.kernel.org Signed-off-by: Paul Gortmaker --- [v2: explicitly include asm/uaccess.h since some arch won't be getting any variant of an unaligned access header without it. Build test allmodconfig on x86-64, i386, arm64, ia64. ] drivers/nfc/nfcmrvl/fw_dnld.c | 2 +- drivers/nfc/nxp-nci/firmware.c | 2 +- drivers/nfc/nxp-nci/i2c.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/nfc/nfcmrvl/fw_dnld.c b/drivers/nfc/nfcmrvl/fw_dnld.c index f8dcdf4b24f6..f3f246ddae06 100644 --- a/drivers/nfc/nfcmrvl/fw_dnld.c +++ b/drivers/nfc/nfcmrvl/fw_dnld.c @@ -17,11 +17,11 @@ */ #include -#include #include #include #include #include +#include #include "nfcmrvl.h" #define FW_DNLD_TIMEOUT15000 diff --git a/drivers/nfc/nxp-nci/firmware.c b/drivers/nfc/nxp-nci/firmware.c index 5291797324ba..553011f58339 100644 --- a/drivers/nfc/nxp-nci/firmware.c +++ b/drivers/nfc/nxp-nci/firmware.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include "nxp-nci.h" diff --git a/drivers/nfc/nxp-nci/i2c.c b/drivers/nfc/nxp-nci/i2c.c index 36099e557730..20243dafea21 100644 --- a/drivers/nfc/nxp-nci/i2c.c +++ b/drivers/nfc/nxp-nci/i2c.c @@ -36,9 +36,9 @@ #include #include #include -#include #include +#include #include "nxp-nci.h" -- 2.11.0