* Circular dependency between <linux/kernel.h> and <asm/bug.h> on ARM
@ 2012-01-02 2:44 Ben Hutchings
2012-01-02 7:01 ` Olof Johansson
0 siblings, 1 reply; 7+ messages in thread
From: Ben Hutchings @ 2012-01-02 2:44 UTC (permalink / raw)
To: linux-arm-kernel
Commit 87e040b6456fd3416a1f6831c1eedaef5c0a94ff ("ARM: 7017/1: Use
generic BUG() handler") makes BUG() use BUILD_BUG_ON(). However,
BUILD_BUG_ON() is not defined in <linux/bug.h> but in <linux/kernel.h>.
arch/include/asm/bug.h does not include <linux/kernel.h> and *cannot* do
so because the latter already includes <asm/bug.h>.
Maybe BUILD_BUG_ON() should be moved out to a header of its own, or else
this particular use should be moved to some other file. This needs to
be fixed somehow, as it obviously leads to build failures, e.g.:
https://buildd.debian.org/status/fetch.php?pkg=linux-2.6&arch=armel&ver=3.2~rc7-1~experimental.1&stamp=1325142904
Ben.
--
Ben Hutchings
All the simple programs have been written, and all the good names taken.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 828 bytes
Desc: This is a digitally signed message part
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120102/df7dcba0/attachment.sig>
^ permalink raw reply [flat|nested] 7+ messages in thread* Circular dependency between <linux/kernel.h> and <asm/bug.h> on ARM 2012-01-02 2:44 Circular dependency between <linux/kernel.h> and <asm/bug.h> on ARM Ben Hutchings @ 2012-01-02 7:01 ` Olof Johansson 2012-01-02 18:54 ` Simon Glass 2012-01-03 14:45 ` Russell King - ARM Linux 0 siblings, 2 replies; 7+ messages in thread From: Olof Johansson @ 2012-01-02 7:01 UTC (permalink / raw) To: linux-arm-kernel On Sun, Jan 1, 2012 at 6:44 PM, Ben Hutchings <ben@decadent.org.uk> wrote: > Commit 87e040b6456fd3416a1f6831c1eedaef5c0a94ff ("ARM: 7017/1: Use > generic BUG() handler") makes BUG() use BUILD_BUG_ON(). ?However, > BUILD_BUG_ON() is not defined in <linux/bug.h> but in <linux/kernel.h>. > > arch/include/asm/bug.h does not include <linux/kernel.h> and *cannot* do > so because the latter already includes <asm/bug.h>. Sure it can, but it's not ideal. Since the BUILD_BUG_ON is only used in bug.h in a #define, it will be resolved below the includes of either so there should be no ordering issue between the two. I coincidentally posted a patch earlier to do just that, I didn't see your email until later. > Maybe BUILD_BUG_ON() should be moved out to a header of its own, or else > this particular use should be moved to some other file. ?This needs to > be fixed somehow, as it obviously leads to build failures, e.g.: > > https://buildd.debian.org/status/fetch.php?pkg=linux-2.6&arch=armel&ver=3.2~rc7-1~experimental.1&stamp=1325142904 Or perhaps moving BUILD_BUG_ON to include/linux/bug.h? The quickest fix for now might be to take out the BUILD_BUG_ON(), especially so close to 3.2-final. -Olof ^ permalink raw reply [flat|nested] 7+ messages in thread
* Circular dependency between <linux/kernel.h> and <asm/bug.h> on ARM 2012-01-02 7:01 ` Olof Johansson @ 2012-01-02 18:54 ` Simon Glass 2012-01-03 14:45 ` Russell King - ARM Linux 1 sibling, 0 replies; 7+ messages in thread From: Simon Glass @ 2012-01-02 18:54 UTC (permalink / raw) To: linux-arm-kernel Hi Ben, Olof, On Sun, Jan 1, 2012 at 11:01 PM, Olof Johansson <olof@lixom.net> wrote: > On Sun, Jan 1, 2012 at 6:44 PM, Ben Hutchings <ben@decadent.org.uk> wrote: >> Commit 87e040b6456fd3416a1f6831c1eedaef5c0a94ff ("ARM: 7017/1: Use >> generic BUG() handler") makes BUG() use BUILD_BUG_ON(). ?However, >> BUILD_BUG_ON() is not defined in <linux/bug.h> but in <linux/kernel.h>. >> >> arch/include/asm/bug.h does not include <linux/kernel.h> and *cannot* do >> so because the latter already includes <asm/bug.h>. > > Sure it can, but it's not ideal. Since the BUILD_BUG_ON is only used > in bug.h in a #define, it will be resolved below the includes of > either so there should be no ordering issue between the two. > > I coincidentally posted a patch earlier to do just that, I didn't see > your email until later. > >> Maybe BUILD_BUG_ON() should be moved out to a header of its own, or else >> this particular use should be moved to some other file. ?This needs to >> be fixed somehow, as it obviously leads to build failures, e.g.: >> >> https://buildd.debian.org/status/fetch.php?pkg=linux-2.6&arch=armel&ver=3.2~rc7-1~experimental.1&stamp=1325142904 > > Or perhaps moving BUILD_BUG_ON to include/linux/bug.h? > > The quickest fix for now might be to take out the BUILD_BUG_ON(), > especially so close to 3.2-final. Yes I like that idea as the check isn't funtional. Perhaps ultimately the BUILD_BUG_ON check for sizeof(struct bug_entry) should really go in lib/bug.c. Something like, in the header: #define GENERIC_BUG_ENTRY_SIZE 12 and then in lib/bug.c: #ifdef GENERIC_BUG_ENTRY_SIZE BUILD_BUG_ON(GENERIC_BUG_ENTRY_SIZE != sizeof(struct bug_entry)) #endif The other more fragile option might be to make sure all files include <linux/kernel.h>? Regards, Simon > > > -Olof ^ permalink raw reply [flat|nested] 7+ messages in thread
* Circular dependency between <linux/kernel.h> and <asm/bug.h> on ARM 2012-01-02 7:01 ` Olof Johansson 2012-01-02 18:54 ` Simon Glass @ 2012-01-03 14:45 ` Russell King - ARM Linux 2012-01-03 18:33 ` Simon Glass 2012-01-05 3:43 ` Paul Gortmaker 1 sibling, 2 replies; 7+ messages in thread From: Russell King - ARM Linux @ 2012-01-03 14:45 UTC (permalink / raw) To: linux-arm-kernel On Sun, Jan 01, 2012 at 11:01:27PM -0800, Olof Johansson wrote: > On Sun, Jan 1, 2012 at 6:44 PM, Ben Hutchings <ben@decadent.org.uk> wrote: > > Commit 87e040b6456fd3416a1f6831c1eedaef5c0a94ff ("ARM: 7017/1: Use > > generic BUG() handler") makes BUG() use BUILD_BUG_ON(). ?However, > > BUILD_BUG_ON() is not defined in <linux/bug.h> but in <linux/kernel.h>. > > > > arch/include/asm/bug.h does not include <linux/kernel.h> and *cannot* do > > so because the latter already includes <asm/bug.h>. > > Sure it can, but it's not ideal. Since the BUILD_BUG_ON is only used > in bug.h in a #define, it will be resolved below the includes of > either so there should be no ordering issue between the two. I disagree - we should not be creating circular dependencies. This creates a mess, and uncertain results. For instance, if we include linux/bug.h or asm/bug.h before linux/kernel.h has been included, then we end up with linux/kernel.h being parsed without a definition for BUG_ON(). However, if linux/kernel.h is included first, we start parsing that, include asm/bug.h, asm/bug.h then includes linux/kernel.h which produces an empty file, and then we continue parsing asm/bug.h _without_ BUILD_BUG_ON() defined. So, adding linux/kernel.h does _not_ solve the problem. It solves the problem for _some_ cases only. > > Maybe BUILD_BUG_ON() should be moved out to a header of its own, or else > > this particular use should be moved to some other file. ?This needs to > > be fixed somehow, as it obviously leads to build failures, e.g.: > > > > https://buildd.debian.org/status/fetch.php?pkg=linux-2.6&arch=armel&ver=3.2~rc7-1~experimental.1&stamp=1325142904 > > Or perhaps moving BUILD_BUG_ON to include/linux/bug.h? and change linux/kernel.h to include linux/bug.h rather than asm/bug.h. > The quickest fix for now might be to take out the BUILD_BUG_ON(), > especially so close to 3.2-final. I think just remove the BUILD_BUG_ON. Other architectures have done without it, so I see no reason we can't do as well. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Circular dependency between <linux/kernel.h> and <asm/bug.h> on ARM 2012-01-03 14:45 ` Russell King - ARM Linux @ 2012-01-03 18:33 ` Simon Glass 2012-01-05 3:43 ` Paul Gortmaker 1 sibling, 0 replies; 7+ messages in thread From: Simon Glass @ 2012-01-03 18:33 UTC (permalink / raw) To: linux-arm-kernel Hi Russell, On Tue, Jan 3, 2012 at 6:45 AM, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote: > On Sun, Jan 01, 2012 at 11:01:27PM -0800, Olof Johansson wrote: >> On Sun, Jan 1, 2012 at 6:44 PM, Ben Hutchings <ben@decadent.org.uk> wrote: >> > Commit 87e040b6456fd3416a1f6831c1eedaef5c0a94ff ("ARM: 7017/1: Use >> > generic BUG() handler") makes BUG() use BUILD_BUG_ON(). ?However, >> > BUILD_BUG_ON() is not defined in <linux/bug.h> but in <linux/kernel.h>. >> > >> > arch/include/asm/bug.h does not include <linux/kernel.h> and *cannot* do >> > so because the latter already includes <asm/bug.h>. >> >> Sure it can, but it's not ideal. Since the BUILD_BUG_ON is only used >> in bug.h in a #define, it will be resolved below the includes of >> either so there should be no ordering issue between the two. > > I disagree - we should not be creating circular dependencies. ?This > creates a mess, and uncertain results. ?For instance, if we include > linux/bug.h or asm/bug.h before linux/kernel.h has been included, > then we end up with linux/kernel.h being parsed without a definition > for BUG_ON(). > > However, if linux/kernel.h is included first, we start parsing that, > include asm/bug.h, asm/bug.h then includes linux/kernel.h which produces > an empty file, and then we continue parsing asm/bug.h _without_ > BUILD_BUG_ON() defined. > > So, adding linux/kernel.h does _not_ solve the problem. ?It solves the > problem for _some_ cases only. > >> > Maybe BUILD_BUG_ON() should be moved out to a header of its own, or else >> > this particular use should be moved to some other file. ?This needs to >> > be fixed somehow, as it obviously leads to build failures, e.g.: >> > >> > https://buildd.debian.org/status/fetch.php?pkg=linux-2.6&arch=armel&ver=3.2~rc7-1~experimental.1&stamp=1325142904 >> >> Or perhaps moving BUILD_BUG_ON to include/linux/bug.h? > > and change linux/kernel.h to include linux/bug.h rather than asm/bug.h. > >> The quickest fix for now might be to take out the BUILD_BUG_ON(), >> especially so close to 3.2-final. > > I think just remove the BUILD_BUG_ON. ?Other architectures have done > without it, so I see no reason we can't do as well. OK I will send a patch to do this, it is safest. Any interest in (for a later release) putting a check in the C file as I suggested? Regards, Simon ^ permalink raw reply [flat|nested] 7+ messages in thread
* Circular dependency between <linux/kernel.h> and <asm/bug.h> on ARM 2012-01-03 14:45 ` Russell King - ARM Linux 2012-01-03 18:33 ` Simon Glass @ 2012-01-05 3:43 ` Paul Gortmaker 2012-01-06 4:12 ` Simon Glass 1 sibling, 1 reply; 7+ messages in thread From: Paul Gortmaker @ 2012-01-05 3:43 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jan 3, 2012 at 9:45 AM, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote: > On Sun, Jan 01, 2012 at 11:01:27PM -0800, Olof Johansson wrote: >> On Sun, Jan 1, 2012 at 6:44 PM, Ben Hutchings <ben@decadent.org.uk> wrote: >> > Commit 87e040b6456fd3416a1f6831c1eedaef5c0a94ff ("ARM: 7017/1: Use >> > generic BUG() handler") makes BUG() use BUILD_BUG_ON(). ?However, >> > BUILD_BUG_ON() is not defined in <linux/bug.h> but in <linux/kernel.h>. >> > >> > arch/include/asm/bug.h does not include <linux/kernel.h> and *cannot* do >> > so because the latter already includes <asm/bug.h>. >> >> Sure it can, but it's not ideal. Since the BUILD_BUG_ON is only used >> in bug.h in a #define, it will be resolved below the includes of >> either so there should be no ordering issue between the two. > > I disagree - we should not be creating circular dependencies. ?This > creates a mess, and uncertain results. ?For instance, if we include > linux/bug.h or asm/bug.h before linux/kernel.h has been included, > then we end up with linux/kernel.h being parsed without a definition > for BUG_ON(). > > However, if linux/kernel.h is included first, we start parsing that, > include asm/bug.h, asm/bug.h then includes linux/kernel.h which produces > an empty file, and then we continue parsing asm/bug.h _without_ > BUILD_BUG_ON() defined. > > So, adding linux/kernel.h does _not_ solve the problem. ?It solves the > problem for _some_ cases only. > >> > Maybe BUILD_BUG_ON() should be moved out to a header of its own, or else >> > this particular use should be moved to some other file. ?This needs to >> > be fixed somehow, as it obviously leads to build failures, e.g.: >> > >> > https://buildd.debian.org/status/fetch.php?pkg=linux-2.6&arch=armel&ver=3.2~rc7-1~experimental.1&stamp=1325142904 >> >> Or perhaps moving BUILD_BUG_ON to include/linux/bug.h? > > and change linux/kernel.h to include linux/bug.h rather than asm/bug.h. Actually, kernel.h doesn't need to include any variant of bug.h at all. I started on cleaning this up a few weeks back, but didn't have the time to get it ready for 3.3 -- so my intent is to do so for linux-next that will be the 3.4 release. The Work In Progress can be seen here: http://git.kernel.org/?p=linux/kernel/git/paulg/linux.git;a=shortlog;h=refs/heads/bug.h-cleanup-WIP I only mention it here since I'd hate to see anyone waste time on duplicating work that is already done. Thanks, Paul. --- > >> The quickest fix for now might be to take out the BUILD_BUG_ON(), >> especially so close to 3.2-final. > > I think just remove the BUILD_BUG_ON. ?Other architectures have done > without it, so I see no reason we can't do as well. > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo at vger.kernel.org > More majordomo info at ?http://vger.kernel.org/majordomo-info.html > Please read the FAQ at ?http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Circular dependency between <linux/kernel.h> and <asm/bug.h> on ARM 2012-01-05 3:43 ` Paul Gortmaker @ 2012-01-06 4:12 ` Simon Glass 0 siblings, 0 replies; 7+ messages in thread From: Simon Glass @ 2012-01-06 4:12 UTC (permalink / raw) To: linux-arm-kernel On Wed, Jan 4, 2012 at 7:43 PM, Paul Gortmaker <paul.gortmaker@windriver.com> wrote: > On Tue, Jan 3, 2012 at 9:45 AM, Russell King - ARM Linux > <linux@arm.linux.org.uk> wrote: >> On Sun, Jan 01, 2012 at 11:01:27PM -0800, Olof Johansson wrote: >>> On Sun, Jan 1, 2012 at 6:44 PM, Ben Hutchings <ben@decadent.org.uk> wrote: >>> > Commit 87e040b6456fd3416a1f6831c1eedaef5c0a94ff ("ARM: 7017/1: Use >>> > generic BUG() handler") makes BUG() use BUILD_BUG_ON(). ?However, >>> > BUILD_BUG_ON() is not defined in <linux/bug.h> but in <linux/kernel.h>. >>> > >>> > arch/include/asm/bug.h does not include <linux/kernel.h> and *cannot* do >>> > so because the latter already includes <asm/bug.h>. >>> >>> Sure it can, but it's not ideal. Since the BUILD_BUG_ON is only used >>> in bug.h in a #define, it will be resolved below the includes of >>> either so there should be no ordering issue between the two. >> >> I disagree - we should not be creating circular dependencies. ?This >> creates a mess, and uncertain results. ?For instance, if we include >> linux/bug.h or asm/bug.h before linux/kernel.h has been included, >> then we end up with linux/kernel.h being parsed without a definition >> for BUG_ON(). >> >> However, if linux/kernel.h is included first, we start parsing that, >> include asm/bug.h, asm/bug.h then includes linux/kernel.h which produces >> an empty file, and then we continue parsing asm/bug.h _without_ >> BUILD_BUG_ON() defined. >> >> So, adding linux/kernel.h does _not_ solve the problem. ?It solves the >> problem for _some_ cases only. >> >>> > Maybe BUILD_BUG_ON() should be moved out to a header of its own, or else >>> > this particular use should be moved to some other file. ?This needs to >>> > be fixed somehow, as it obviously leads to build failures, e.g.: >>> > >>> > https://buildd.debian.org/status/fetch.php?pkg=linux-2.6&arch=armel&ver=3.2~rc7-1~experimental.1&stamp=1325142904 >>> >>> Or perhaps moving BUILD_BUG_ON to include/linux/bug.h? >> >> and change linux/kernel.h to include linux/bug.h rather than asm/bug.h. > > Actually, kernel.h doesn't need to include any variant of bug.h at all. > > I started on cleaning this up a few weeks back, but didn't have the time > to get it ready for 3.3 -- so my intent is to do so for linux-next that will > be the 3.4 release. ?The Work In Progress can be seen here: > > http://git.kernel.org/?p=linux/kernel/git/paulg/linux.git;a=shortlog;h=refs/heads/bug.h-cleanup-WIP > > I only mention it here since I'd hate to see anyone waste time on > duplicating work that is already done. Thanks Paul, I hope it goes well. Regards, Simon > > Thanks, > Paul. > > --- > >> >>> The quickest fix for now might be to take out the BUILD_BUG_ON(), >>> especially so close to 3.2-final. >> >> I think just remove the BUILD_BUG_ON. ?Other architectures have done >> without it, so I see no reason we can't do as well. >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >> the body of a message to majordomo at vger.kernel.org >> More majordomo info at ?http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at ?http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-01-06 4:12 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-01-02 2:44 Circular dependency between <linux/kernel.h> and <asm/bug.h> on ARM Ben Hutchings 2012-01-02 7:01 ` Olof Johansson 2012-01-02 18:54 ` Simon Glass 2012-01-03 14:45 ` Russell King - ARM Linux 2012-01-03 18:33 ` Simon Glass 2012-01-05 3:43 ` Paul Gortmaker 2012-01-06 4:12 ` Simon Glass
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).