All of lore.kernel.org
 help / color / mirror / Atom feed
* [BUG] Fix drivers/memory O= build
@ 2018-04-06 10:25 ` Russell King - ARM Linux
  0 siblings, 0 replies; 29+ messages in thread
From: Russell King - ARM Linux @ 2018-04-06 10:25 UTC (permalink / raw)
  To: linux-arm-kernel, Tony Lindgren, Dave Gerlach, Santosh Shilimkar,
	linux-kbuild, Masahiro Yamada, Michal Marek, linux-omap, arm-soc

When building a kernel with split object directories, the following
failure occurs:

.../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
compilation terminated.
drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
.../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
make[1]: *** [arch/arm/mach-omap2] Error 2

This prevents any kernel being built that includes decending into
arch/arm/mach-omap2 with split object directories.

This is a regression.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [BUG] Fix drivers/memory O= build
@ 2018-04-06 10:25 ` Russell King - ARM Linux
  0 siblings, 0 replies; 29+ messages in thread
From: Russell King - ARM Linux @ 2018-04-06 10:25 UTC (permalink / raw)
  To: linux-arm-kernel

When building a kernel with split object directories, the following
failure occurs:

.../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
compilation terminated.
drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
.../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
make[1]: *** [arch/arm/mach-omap2] Error 2

This prevents any kernel being built that includes decending into
arch/arm/mach-omap2 with split object directories.

This is a regression.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
  2018-04-06 10:25 ` Russell King - ARM Linux
  (?)
@ 2018-04-06 16:46   ` Tony Lindgren
  -1 siblings, 0 replies; 29+ messages in thread
From: Tony Lindgren @ 2018-04-06 16:46 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: linux-arm-kernel, Dave Gerlach, Santosh Shilimkar, linux-kbuild,
	Masahiro Yamada, Michal Marek, linux-omap, arm-soc

* Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
> When building a kernel with split object directories, the following
> failure occurs:
> 
> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
> compilation terminated.
> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
> make[1]: *** [arch/arm/mach-omap2] Error 2
> 
> This prevents any kernel being built that includes decending into
> arch/arm/mach-omap2 with split object directories.
> 
> This is a regression.

Dave, I presume you're looking into this already?

Regards,

Tony

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
@ 2018-04-06 16:46   ` Tony Lindgren
  0 siblings, 0 replies; 29+ messages in thread
From: Tony Lindgren @ 2018-04-06 16:46 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: Michal Marek, arm-soc, linux-kbuild, Santosh Shilimkar,
	Masahiro Yamada, Dave Gerlach, linux-omap, linux-arm-kernel

* Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
> When building a kernel with split object directories, the following
> failure occurs:
> 
> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
> compilation terminated.
> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
> make[1]: *** [arch/arm/mach-omap2] Error 2
> 
> This prevents any kernel being built that includes decending into
> arch/arm/mach-omap2 with split object directories.
> 
> This is a regression.

Dave, I presume you're looking into this already?

Regards,

Tony

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [BUG] Fix drivers/memory O= build
@ 2018-04-06 16:46   ` Tony Lindgren
  0 siblings, 0 replies; 29+ messages in thread
From: Tony Lindgren @ 2018-04-06 16:46 UTC (permalink / raw)
  To: linux-arm-kernel

* Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
> When building a kernel with split object directories, the following
> failure occurs:
> 
> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
> compilation terminated.
> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
> make[1]: *** [arch/arm/mach-omap2] Error 2
> 
> This prevents any kernel being built that includes decending into
> arch/arm/mach-omap2 with split object directories.
> 
> This is a regression.

Dave, I presume you're looking into this already?

Regards,

Tony

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
  2018-04-06 16:46   ` Tony Lindgren
  (?)
@ 2018-04-06 18:45     ` Santosh Shilimkar
  -1 siblings, 0 replies; 29+ messages in thread
From: Santosh Shilimkar @ 2018-04-06 18:45 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: Russell King - ARM Linux, linux-arm-kernel, Dave Gerlach,
	linux-kbuild, Masahiro Yamada, Michal Marek, linux-omap, arm-soc

On 4/6/2018 9:46 AM, Tony Lindgren wrote:
> * Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>> When building a kernel with split object directories, the following
>> failure occurs:
>>
>> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>> compilation terminated.
>> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>> make[1]: *** [arch/arm/mach-omap2] Error 2
>>
>> This prevents any kernel being built that includes decending into
>> arch/arm/mach-omap2 with split object directories.
>>
>> This is a regression.
> 
> Dave, I presume you're looking into this already?
> 
Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
You are copied on the email Tony.

Regards,
Santosh

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
@ 2018-04-06 18:45     ` Santosh Shilimkar
  0 siblings, 0 replies; 29+ messages in thread
From: Santosh Shilimkar @ 2018-04-06 18:45 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: Michal Marek, arm-soc, linux-kbuild, Dave Gerlach,
	Russell King - ARM Linux, Masahiro Yamada, linux-omap,
	linux-arm-kernel

On 4/6/2018 9:46 AM, Tony Lindgren wrote:
> * Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>> When building a kernel with split object directories, the following
>> failure occurs:
>>
>> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>> compilation terminated.
>> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>> make[1]: *** [arch/arm/mach-omap2] Error 2
>>
>> This prevents any kernel being built that includes decending into
>> arch/arm/mach-omap2 with split object directories.
>>
>> This is a regression.
> 
> Dave, I presume you're looking into this already?
> 
Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
You are copied on the email Tony.

Regards,
Santosh

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [BUG] Fix drivers/memory O= build
@ 2018-04-06 18:45     ` Santosh Shilimkar
  0 siblings, 0 replies; 29+ messages in thread
From: Santosh Shilimkar @ 2018-04-06 18:45 UTC (permalink / raw)
  To: linux-arm-kernel

On 4/6/2018 9:46 AM, Tony Lindgren wrote:
> * Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>> When building a kernel with split object directories, the following
>> failure occurs:
>>
>> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>> compilation terminated.
>> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>> make[1]: *** [arch/arm/mach-omap2] Error 2
>>
>> This prevents any kernel being built that includes decending into
>> arch/arm/mach-omap2 with split object directories.
>>
>> This is a regression.
> 
> Dave, I presume you're looking into this already?
> 
Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
You are copied on the email Tony.

Regards,
Santosh

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
  2018-04-06 18:45     ` Santosh Shilimkar
  (?)
@ 2018-04-06 18:55       ` Russell King - ARM Linux
  -1 siblings, 0 replies; 29+ messages in thread
From: Russell King - ARM Linux @ 2018-04-06 18:55 UTC (permalink / raw)
  To: Santosh Shilimkar
  Cc: Tony Lindgren, linux-arm-kernel, Dave Gerlach, linux-kbuild,
	Masahiro Yamada, Michal Marek, linux-omap, arm-soc

On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
> >* Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
> >>When building a kernel with split object directories, the following
> >>failure occurs:
> >>
> >>.../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
> >>compilation terminated.
> >>drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
> >>make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
> >>.../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
> >>make[1]: *** [arch/arm/mach-omap2] Error 2
> >>
> >>This prevents any kernel being built that includes decending into
> >>arch/arm/mach-omap2 with split object directories.
> >>
> >>This is a regression.
> >
> >Dave, I presume you're looking into this already?
> >
> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
> You are copied on the email Tony.

Arnd also has a fix for it as well, which moves emif-asm-offsets.s
into include/generated, as that will always exist prior to these
rules being invoked.  Arnd's passing it through his randconfig
builder before publishing it.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
@ 2018-04-06 18:55       ` Russell King - ARM Linux
  0 siblings, 0 replies; 29+ messages in thread
From: Russell King - ARM Linux @ 2018-04-06 18:55 UTC (permalink / raw)
  To: Santosh Shilimkar
  Cc: Michal Marek, arm-soc, linux-kbuild, Tony Lindgren, Dave Gerlach,
	Masahiro Yamada, linux-omap, linux-arm-kernel

On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
> >* Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
> >>When building a kernel with split object directories, the following
> >>failure occurs:
> >>
> >>.../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
> >>compilation terminated.
> >>drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
> >>make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
> >>.../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
> >>make[1]: *** [arch/arm/mach-omap2] Error 2
> >>
> >>This prevents any kernel being built that includes decending into
> >>arch/arm/mach-omap2 with split object directories.
> >>
> >>This is a regression.
> >
> >Dave, I presume you're looking into this already?
> >
> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
> You are copied on the email Tony.

Arnd also has a fix for it as well, which moves emif-asm-offsets.s
into include/generated, as that will always exist prior to these
rules being invoked.  Arnd's passing it through his randconfig
builder before publishing it.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [BUG] Fix drivers/memory O= build
@ 2018-04-06 18:55       ` Russell King - ARM Linux
  0 siblings, 0 replies; 29+ messages in thread
From: Russell King - ARM Linux @ 2018-04-06 18:55 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
> >* Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
> >>When building a kernel with split object directories, the following
> >>failure occurs:
> >>
> >>.../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
> >>compilation terminated.
> >>drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
> >>make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
> >>.../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
> >>make[1]: *** [arch/arm/mach-omap2] Error 2
> >>
> >>This prevents any kernel being built that includes decending into
> >>arch/arm/mach-omap2 with split object directories.
> >>
> >>This is a regression.
> >
> >Dave, I presume you're looking into this already?
> >
> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
> You are copied on the email Tony.

Arnd also has a fix for it as well, which moves emif-asm-offsets.s
into include/generated, as that will always exist prior to these
rules being invoked.  Arnd's passing it through his randconfig
builder before publishing it.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
  2018-04-06 18:55       ` Russell King - ARM Linux
  (?)
@ 2018-04-07  2:55         ` Masahiro Yamada
  -1 siblings, 0 replies; 29+ messages in thread
From: Masahiro Yamada @ 2018-04-07  2:55 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: Santosh Shilimkar, Tony Lindgren, linux-arm-kernel, Dave Gerlach,
	Linux Kbuild mailing list, Michal Marek, Linux-OMAP, arm-soc

2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
> On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
>> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
>> >* Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>> >>When building a kernel with split object directories, the following
>> >>failure occurs:
>> >>
>> >>.../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>> >>compilation terminated.
>> >>drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>> >>make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>> >>.../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>> >>make[1]: *** [arch/arm/mach-omap2] Error 2
>> >>
>> >>This prevents any kernel being built that includes decending into
>> >>arch/arm/mach-omap2 with split object directories.
>> >>
>> >>This is a regression.
>> >
>> >Dave, I presume you're looking into this already?
>> >
>> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
>> You are copied on the email Tony.
>
> Arnd also has a fix for it as well, which moves emif-asm-offsets.s
> into include/generated, as that will always exist prior to these
> rules being invoked.  Arnd's passing it through his randconfig
> builder before publishing it.


I do not like this idea.

Not sure exactly what Arnd is trying to do,
but the same file should not be touched from multiple points
in case Kbuild descends into mach-omap2/ and memory/ at the same time.


I recommend to put copies in each directory:

arch/arm/mach-omap2/emif-asm-offsets.h
drivers/memory/ti-emif-asm-offsets.h


If you want me to send a patch,
I will give it a try.




-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
@ 2018-04-07  2:55         ` Masahiro Yamada
  0 siblings, 0 replies; 29+ messages in thread
From: Masahiro Yamada @ 2018-04-07  2:55 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: Michal Marek, arm-soc, Linux Kbuild mailing list, Tony Lindgren,
	Santosh Shilimkar, Dave Gerlach, Linux-OMAP, linux-arm-kernel

2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
> On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
>> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
>> >* Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>> >>When building a kernel with split object directories, the following
>> >>failure occurs:
>> >>
>> >>.../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>> >>compilation terminated.
>> >>drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>> >>make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>> >>.../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>> >>make[1]: *** [arch/arm/mach-omap2] Error 2
>> >>
>> >>This prevents any kernel being built that includes decending into
>> >>arch/arm/mach-omap2 with split object directories.
>> >>
>> >>This is a regression.
>> >
>> >Dave, I presume you're looking into this already?
>> >
>> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
>> You are copied on the email Tony.
>
> Arnd also has a fix for it as well, which moves emif-asm-offsets.s
> into include/generated, as that will always exist prior to these
> rules being invoked.  Arnd's passing it through his randconfig
> builder before publishing it.


I do not like this idea.

Not sure exactly what Arnd is trying to do,
but the same file should not be touched from multiple points
in case Kbuild descends into mach-omap2/ and memory/ at the same time.


I recommend to put copies in each directory:

arch/arm/mach-omap2/emif-asm-offsets.h
drivers/memory/ti-emif-asm-offsets.h


If you want me to send a patch,
I will give it a try.




-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [BUG] Fix drivers/memory O= build
@ 2018-04-07  2:55         ` Masahiro Yamada
  0 siblings, 0 replies; 29+ messages in thread
From: Masahiro Yamada @ 2018-04-07  2:55 UTC (permalink / raw)
  To: linux-arm-kernel

2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
> On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
>> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
>> >* Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>> >>When building a kernel with split object directories, the following
>> >>failure occurs:
>> >>
>> >>.../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>> >>compilation terminated.
>> >>drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>> >>make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>> >>.../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>> >>make[1]: *** [arch/arm/mach-omap2] Error 2
>> >>
>> >>This prevents any kernel being built that includes decending into
>> >>arch/arm/mach-omap2 with split object directories.
>> >>
>> >>This is a regression.
>> >
>> >Dave, I presume you're looking into this already?
>> >
>> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
>> You are copied on the email Tony.
>
> Arnd also has a fix for it as well, which moves emif-asm-offsets.s
> into include/generated, as that will always exist prior to these
> rules being invoked.  Arnd's passing it through his randconfig
> builder before publishing it.


I do not like this idea.

Not sure exactly what Arnd is trying to do,
but the same file should not be touched from multiple points
in case Kbuild descends into mach-omap2/ and memory/ at the same time.


I recommend to put copies in each directory:

arch/arm/mach-omap2/emif-asm-offsets.h
drivers/memory/ti-emif-asm-offsets.h


If you want me to send a patch,
I will give it a try.




-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
  2018-04-07  2:55         ` Masahiro Yamada
  (?)
@ 2018-04-07 13:38           ` Russell King - ARM Linux
  -1 siblings, 0 replies; 29+ messages in thread
From: Russell King - ARM Linux @ 2018-04-07 13:38 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Santosh Shilimkar, Tony Lindgren, linux-arm-kernel, Dave Gerlach,
	Linux Kbuild mailing list, Michal Marek, Linux-OMAP, arm-soc

On Sat, Apr 07, 2018 at 11:55:22AM +0900, Masahiro Yamada wrote:
> 2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
> > On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
> >> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
> >> >* Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
> >> >>When building a kernel with split object directories, the following
> >> >>failure occurs:
> >> >>
> >> >>.../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
> >> >>compilation terminated.
> >> >>drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
> >> >>make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
> >> >>.../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
> >> >>make[1]: *** [arch/arm/mach-omap2] Error 2
> >> >>
> >> >>This prevents any kernel being built that includes decending into
> >> >>arch/arm/mach-omap2 with split object directories.
> >> >>
> >> >>This is a regression.
> >> >
> >> >Dave, I presume you're looking into this already?
> >> >
> >> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
> >> You are copied on the email Tony.
> >
> > Arnd also has a fix for it as well, which moves emif-asm-offsets.s
> > into include/generated, as that will always exist prior to these
> > rules being invoked.  Arnd's passing it through his randconfig
> > builder before publishing it.
> 
> 
> I do not like this idea.
> 
> Not sure exactly what Arnd is trying to do,
> but the same file should not be touched from multiple points
> in case Kbuild descends into mach-omap2/ and memory/ at the same time.
> 
> 
> I recommend to put copies in each directory:
> 
> arch/arm/mach-omap2/emif-asm-offsets.h
> drivers/memory/ti-emif-asm-offsets.h
> 
> 
> If you want me to send a patch,
> I will give it a try.

Or we try and find another way around this.

The original idea was to start throwing platform specific (iow, stuff in
arch/arm/mach-omap2/) includes into arch/arm/kernel/asm-offsets.c.  I
objected to that, and suggested that the generic infrastructure for doing
the asm-offsets thing should be used to generate an architecture specific
header.

Then it turns out that files in both arch/arm/mach-omap2 and drivers/memory
need these constants, and TI proposed the existing method.

Obviously, all the right people reviewed it and approved it, which is why
it's now in mainline, but unfortunately it doesn't actually work, and
breaks my kernel builds!

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
@ 2018-04-07 13:38           ` Russell King - ARM Linux
  0 siblings, 0 replies; 29+ messages in thread
From: Russell King - ARM Linux @ 2018-04-07 13:38 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Michal Marek, arm-soc, Linux Kbuild mailing list, Tony Lindgren,
	Santosh Shilimkar, Dave Gerlach, Linux-OMAP, linux-arm-kernel

On Sat, Apr 07, 2018 at 11:55:22AM +0900, Masahiro Yamada wrote:
> 2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
> > On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
> >> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
> >> >* Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
> >> >>When building a kernel with split object directories, the following
> >> >>failure occurs:
> >> >>
> >> >>.../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
> >> >>compilation terminated.
> >> >>drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
> >> >>make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
> >> >>.../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
> >> >>make[1]: *** [arch/arm/mach-omap2] Error 2
> >> >>
> >> >>This prevents any kernel being built that includes decending into
> >> >>arch/arm/mach-omap2 with split object directories.
> >> >>
> >> >>This is a regression.
> >> >
> >> >Dave, I presume you're looking into this already?
> >> >
> >> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
> >> You are copied on the email Tony.
> >
> > Arnd also has a fix for it as well, which moves emif-asm-offsets.s
> > into include/generated, as that will always exist prior to these
> > rules being invoked.  Arnd's passing it through his randconfig
> > builder before publishing it.
> 
> 
> I do not like this idea.
> 
> Not sure exactly what Arnd is trying to do,
> but the same file should not be touched from multiple points
> in case Kbuild descends into mach-omap2/ and memory/ at the same time.
> 
> 
> I recommend to put copies in each directory:
> 
> arch/arm/mach-omap2/emif-asm-offsets.h
> drivers/memory/ti-emif-asm-offsets.h
> 
> 
> If you want me to send a patch,
> I will give it a try.

Or we try and find another way around this.

The original idea was to start throwing platform specific (iow, stuff in
arch/arm/mach-omap2/) includes into arch/arm/kernel/asm-offsets.c.  I
objected to that, and suggested that the generic infrastructure for doing
the asm-offsets thing should be used to generate an architecture specific
header.

Then it turns out that files in both arch/arm/mach-omap2 and drivers/memory
need these constants, and TI proposed the existing method.

Obviously, all the right people reviewed it and approved it, which is why
it's now in mainline, but unfortunately it doesn't actually work, and
breaks my kernel builds!

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [BUG] Fix drivers/memory O= build
@ 2018-04-07 13:38           ` Russell King - ARM Linux
  0 siblings, 0 replies; 29+ messages in thread
From: Russell King - ARM Linux @ 2018-04-07 13:38 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Apr 07, 2018 at 11:55:22AM +0900, Masahiro Yamada wrote:
> 2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
> > On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
> >> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
> >> >* Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
> >> >>When building a kernel with split object directories, the following
> >> >>failure occurs:
> >> >>
> >> >>.../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
> >> >>compilation terminated.
> >> >>drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
> >> >>make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
> >> >>.../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
> >> >>make[1]: *** [arch/arm/mach-omap2] Error 2
> >> >>
> >> >>This prevents any kernel being built that includes decending into
> >> >>arch/arm/mach-omap2 with split object directories.
> >> >>
> >> >>This is a regression.
> >> >
> >> >Dave, I presume you're looking into this already?
> >> >
> >> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
> >> You are copied on the email Tony.
> >
> > Arnd also has a fix for it as well, which moves emif-asm-offsets.s
> > into include/generated, as that will always exist prior to these
> > rules being invoked.  Arnd's passing it through his randconfig
> > builder before publishing it.
> 
> 
> I do not like this idea.
> 
> Not sure exactly what Arnd is trying to do,
> but the same file should not be touched from multiple points
> in case Kbuild descends into mach-omap2/ and memory/ at the same time.
> 
> 
> I recommend to put copies in each directory:
> 
> arch/arm/mach-omap2/emif-asm-offsets.h
> drivers/memory/ti-emif-asm-offsets.h
> 
> 
> If you want me to send a patch,
> I will give it a try.

Or we try and find another way around this.

The original idea was to start throwing platform specific (iow, stuff in
arch/arm/mach-omap2/) includes into arch/arm/kernel/asm-offsets.c.  I
objected to that, and suggested that the generic infrastructure for doing
the asm-offsets thing should be used to generate an architecture specific
header.

Then it turns out that files in both arch/arm/mach-omap2 and drivers/memory
need these constants, and TI proposed the existing method.

Obviously, all the right people reviewed it and approved it, which is why
it's now in mainline, but unfortunately it doesn't actually work, and
breaks my kernel builds!

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
  2018-04-07 13:38           ` Russell King - ARM Linux
  (?)
@ 2018-04-09 16:05             ` Dave Gerlach
  -1 siblings, 0 replies; 29+ messages in thread
From: Dave Gerlach @ 2018-04-09 16:05 UTC (permalink / raw)
  To: Russell King - ARM Linux, Masahiro Yamada
  Cc: Santosh Shilimkar, Tony Lindgren, linux-arm-kernel,
	Linux Kbuild mailing list, Michal Marek, Linux-OMAP, arm-soc

Hi,
On 04/07/2018 08:38 AM, Russell King - ARM Linux wrote:
> On Sat, Apr 07, 2018 at 11:55:22AM +0900, Masahiro Yamada wrote:
>> 2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
>>> On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
>>>> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
>>>>> * Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>>>>>> When building a kernel with split object directories, the following
>>>>>> failure occurs:
>>>>>>
>>>>>> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>>>>>> compilation terminated.
>>>>>> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>>>>>> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>>>>>> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>>>>>> make[1]: *** [arch/arm/mach-omap2] Error 2
>>>>>>
>>>>>> This prevents any kernel being built that includes decending into
>>>>>> arch/arm/mach-omap2 with split object directories.
>>>>>>
>>>>>> This is a regression.
>>>>>
>>>>> Dave, I presume you're looking into this already?
>>>>>
>>>> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
>>>> You are copied on the email Tony.
>>>
>>> Arnd also has a fix for it as well, which moves emif-asm-offsets.s
>>> into include/generated, as that will always exist prior to these
>>> rules being invoked.  Arnd's passing it through his randconfig
>>> builder before publishing it.
>>
>>
>> I do not like this idea.
>>
>> Not sure exactly what Arnd is trying to do,
>> but the same file should not be touched from multiple points
>> in case Kbuild descends into mach-omap2/ and memory/ at the same time.
>>
>>
>> I recommend to put copies in each directory:
>>
>> arch/arm/mach-omap2/emif-asm-offsets.h
>> drivers/memory/ti-emif-asm-offsets.h
>>
>>
>> If you want me to send a patch,
>> I will give it a try.
> 
> Or we try and find another way around this.
> 
> The original idea was to start throwing platform specific (iow, stuff in
> arch/arm/mach-omap2/) includes into arch/arm/kernel/asm-offsets.c.  I
> objected to that, and suggested that the generic infrastructure for doing
> the asm-offsets thing should be used to generate an architecture specific
> header.
> 
> Then it turns out that files in both arch/arm/mach-omap2 and drivers/memory
> need these constants, and TI proposed the existing method.
> 
> Obviously, all the right people reviewed it and approved it, which is why
> it's now in mainline, but unfortunately it doesn't actually work, and
> breaks my kernel builds!
> 

A solution that I see is to allow pm-asm-offsets to just include the macros that
would be defined by emif-asm-offsets in the header generated by pm-asm-offsets.
This way there is no need to introduce the arch -> drivers build dependency that
is causing our issue, each driver generates its own header with everything it
needs included. I'll move the actual macro definitions for emif-asm-offsets.c
into a header and then by including them in both emif-asm-offsets and
pm-asm-offsets we get all macro definitions in both places with them still being
defined only in one location.

I've inlined the changes below. I will send a proper split up series if it's
considered acceptable.

Regards,
Dave

8< ----------------------
From 7350c7caa773d7235ddb21013bd039a16cb6d156 Mon Sep 17 00:00:00 2001
From: Dave Gerlach <d-gerlach@ti.com>
Date: Mon, 9 Apr 2018 10:56:59 -0500
Subject: [PATCH] RFC: Fix build when using split object directories

The sleep33xx and sleep43xx files should not depend on a header file
generated in drivers/memory. Remove this dependency and instead generate
the macros needed as part of pm-asm-offsets.c to avoid complicating the
build.

Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
---
 arch/arm/mach-omap2/Makefile         |  7 +---
 arch/arm/mach-omap2/pm-asm-offsets.c |  3 ++
 arch/arm/mach-omap2/sleep33xx.S      |  1 -
 arch/arm/mach-omap2/sleep43xx.S      |  1 -
 drivers/memory/emif-asm-offsets.c    | 72 +---------------------------------
 include/linux/ti-emif-sram.h         | 75 ++++++++++++++++++++++++++++++++++++
 6 files changed, 81 insertions(+), 78 deletions(-)

diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 4603c30fef73..1257810cdb80 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -243,8 +243,5 @@ arch/arm/mach-omap2/pm-asm-offsets.s:
arch/arm/mach-omap2/pm-asm-offsets.c
 include/generated/ti-pm-asm-offsets.h: arch/arm/mach-omap2/pm-asm-offsets.s FORCE
 	$(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)

-# For rule to generate ti-emif-asm-offsets.h dependency
-include drivers/memory/Makefile.asm-offsets
-
-arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
include/generated/ti-emif-asm-offsets.h
-arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
include/generated/ti-emif-asm-offsets.h
+arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
+arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
diff --git a/arch/arm/mach-omap2/pm-asm-offsets.c
b/arch/arm/mach-omap2/pm-asm-offsets.c
index 6d4392da7c11..b9846b19e5e2 100644
--- a/arch/arm/mach-omap2/pm-asm-offsets.c
+++ b/arch/arm/mach-omap2/pm-asm-offsets.c
@@ -7,9 +7,12 @@

 #include <linux/kbuild.h>
 #include <linux/platform_data/pm33xx.h>
+#include <linux/ti-emif-sram.h>

 int main(void)
 {
+	ti_emif_asm_offsets();
+
 	DEFINE(AMX3_PM_WFI_FLAGS_OFFSET,
 	       offsetof(struct am33xx_pm_sram_data, wfi_flags));
 	DEFINE(AMX3_PM_L2_AUX_CTRL_VAL_OFFSET,
diff --git a/arch/arm/mach-omap2/sleep33xx.S b/arch/arm/mach-omap2/sleep33xx.S
index 218d79930b04..322b3bb868b4 100644
--- a/arch/arm/mach-omap2/sleep33xx.S
+++ b/arch/arm/mach-omap2/sleep33xx.S
@@ -6,7 +6,6 @@
  *	Dave Gerlach, Vaibhav Bedia
  */

-#include <generated/ti-emif-asm-offsets.h>
 #include <generated/ti-pm-asm-offsets.h>
 #include <linux/linkage.h>
 #include <linux/ti-emif-sram.h>
diff --git a/arch/arm/mach-omap2/sleep43xx.S b/arch/arm/mach-omap2/sleep43xx.S
index b24be624e8b9..8903814a6677 100644
--- a/arch/arm/mach-omap2/sleep43xx.S
+++ b/arch/arm/mach-omap2/sleep43xx.S
@@ -6,7 +6,6 @@
  *	Dave Gerlach, Vaibhav Bedia
  */

-#include <generated/ti-emif-asm-offsets.h>
 #include <generated/ti-pm-asm-offsets.h>
 #include <linux/linkage.h>
 #include <linux/ti-emif-sram.h>
diff --git a/drivers/memory/emif-asm-offsets.c b/drivers/memory/emif-asm-offsets.c
index 71a89d5d3efd..db8043019ec6 100644
--- a/drivers/memory/emif-asm-offsets.c
+++ b/drivers/memory/emif-asm-offsets.c
@@ -16,77 +16,7 @@

 int main(void)
 {
-	DEFINE(EMIF_SDCFG_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_sdcfg_val));
-	DEFINE(EMIF_TIMING1_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_timing1_val));
-	DEFINE(EMIF_TIMING2_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_timing2_val));
-	DEFINE(EMIF_TIMING3_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_timing3_val));
-	DEFINE(EMIF_REF_CTRL_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_ref_ctrl_val));
-	DEFINE(EMIF_ZQCFG_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_zqcfg_val));
-	DEFINE(EMIF_PMCR_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_pmcr_val));
-	DEFINE(EMIF_PMCR_SHDW_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_pmcr_shdw_val));
-	DEFINE(EMIF_RD_WR_LEVEL_RAMP_CTRL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_rd_wr_level_ramp_ctrl));
-	DEFINE(EMIF_RD_WR_EXEC_THRESH_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_rd_wr_exec_thresh));
-	DEFINE(EMIF_COS_CONFIG_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_cos_config));
-	DEFINE(EMIF_PRIORITY_TO_COS_MAPPING_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_priority_to_cos_mapping));
-	DEFINE(EMIF_CONNECT_ID_SERV_1_MAP_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_connect_id_serv_1_map));
-	DEFINE(EMIF_CONNECT_ID_SERV_2_MAP_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_connect_id_serv_2_map));
-	DEFINE(EMIF_OCP_CONFIG_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_ocp_config_val));
-	DEFINE(EMIF_LPDDR2_NVM_TIM_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_lpddr2_nvm_tim));
-	DEFINE(EMIF_LPDDR2_NVM_TIM_SHDW_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_lpddr2_nvm_tim_shdw));
-	DEFINE(EMIF_DLL_CALIB_CTRL_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_dll_calib_ctrl_val));
-	DEFINE(EMIF_DLL_CALIB_CTRL_VAL_SHDW_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_dll_calib_ctrl_val_shdw));
-	DEFINE(EMIF_DDR_PHY_CTLR_1_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_ddr_phy_ctlr_1));
-	DEFINE(EMIF_EXT_PHY_CTRL_VALS_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_ext_phy_ctrl_vals));
-	DEFINE(EMIF_REGS_AMX3_SIZE, sizeof(struct emif_regs_amx3));
-
-	BLANK();
-
-	DEFINE(EMIF_PM_BASE_ADDR_VIRT_OFFSET,
-	       offsetof(struct ti_emif_pm_data, ti_emif_base_addr_virt));
-	DEFINE(EMIF_PM_BASE_ADDR_PHYS_OFFSET,
-	       offsetof(struct ti_emif_pm_data, ti_emif_base_addr_phys));
-	DEFINE(EMIF_PM_CONFIG_OFFSET,
-	       offsetof(struct ti_emif_pm_data, ti_emif_sram_config));
-	DEFINE(EMIF_PM_REGS_VIRT_OFFSET,
-	       offsetof(struct ti_emif_pm_data, regs_virt));
-	DEFINE(EMIF_PM_REGS_PHYS_OFFSET,
-	       offsetof(struct ti_emif_pm_data, regs_phys));
-	DEFINE(EMIF_PM_DATA_SIZE, sizeof(struct ti_emif_pm_data));
-
-	BLANK();
-
-	DEFINE(EMIF_PM_SAVE_CONTEXT_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, save_context));
-	DEFINE(EMIF_PM_RESTORE_CONTEXT_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, restore_context));
-	DEFINE(EMIF_PM_ENTER_SR_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, enter_sr));
-	DEFINE(EMIF_PM_EXIT_SR_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, exit_sr));
-	DEFINE(EMIF_PM_ABORT_SR_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, abort_sr));
-	DEFINE(EMIF_PM_FUNCTIONS_SIZE, sizeof(struct ti_emif_pm_functions));
+	ti_emif_asm_offsets();

 	return 0;
 }
diff --git a/include/linux/ti-emif-sram.h b/include/linux/ti-emif-sram.h
index 45bc6b376492..53604b087f2c 100644
--- a/include/linux/ti-emif-sram.h
+++ b/include/linux/ti-emif-sram.h
@@ -60,6 +60,81 @@ struct ti_emif_pm_functions {
 	u32 abort_sr;
 } __packed __aligned(8);

+static inline void ti_emif_asm_offsets(void)
+{
+	DEFINE(EMIF_SDCFG_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_sdcfg_val));
+	DEFINE(EMIF_TIMING1_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_timing1_val));
+	DEFINE(EMIF_TIMING2_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_timing2_val));
+	DEFINE(EMIF_TIMING3_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_timing3_val));
+	DEFINE(EMIF_REF_CTRL_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_ref_ctrl_val));
+	DEFINE(EMIF_ZQCFG_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_zqcfg_val));
+	DEFINE(EMIF_PMCR_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_pmcr_val));
+	DEFINE(EMIF_PMCR_SHDW_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_pmcr_shdw_val));
+	DEFINE(EMIF_RD_WR_LEVEL_RAMP_CTRL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_rd_wr_level_ramp_ctrl));
+	DEFINE(EMIF_RD_WR_EXEC_THRESH_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_rd_wr_exec_thresh));
+	DEFINE(EMIF_COS_CONFIG_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_cos_config));
+	DEFINE(EMIF_PRIORITY_TO_COS_MAPPING_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_priority_to_cos_mapping));
+	DEFINE(EMIF_CONNECT_ID_SERV_1_MAP_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_connect_id_serv_1_map));
+	DEFINE(EMIF_CONNECT_ID_SERV_2_MAP_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_connect_id_serv_2_map));
+	DEFINE(EMIF_OCP_CONFIG_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_ocp_config_val));
+	DEFINE(EMIF_LPDDR2_NVM_TIM_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_lpddr2_nvm_tim));
+	DEFINE(EMIF_LPDDR2_NVM_TIM_SHDW_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_lpddr2_nvm_tim_shdw));
+	DEFINE(EMIF_DLL_CALIB_CTRL_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_dll_calib_ctrl_val));
+	DEFINE(EMIF_DLL_CALIB_CTRL_VAL_SHDW_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_dll_calib_ctrl_val_shdw));
+	DEFINE(EMIF_DDR_PHY_CTLR_1_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_ddr_phy_ctlr_1));
+	DEFINE(EMIF_EXT_PHY_CTRL_VALS_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_ext_phy_ctrl_vals));
+	DEFINE(EMIF_REGS_AMX3_SIZE, sizeof(struct emif_regs_amx3));
+
+	BLANK();
+
+	DEFINE(EMIF_PM_BASE_ADDR_VIRT_OFFSET,
+	       offsetof(struct ti_emif_pm_data, ti_emif_base_addr_virt));
+	DEFINE(EMIF_PM_BASE_ADDR_PHYS_OFFSET,
+	       offsetof(struct ti_emif_pm_data, ti_emif_base_addr_phys));
+	DEFINE(EMIF_PM_CONFIG_OFFSET,
+	       offsetof(struct ti_emif_pm_data, ti_emif_sram_config));
+	DEFINE(EMIF_PM_REGS_VIRT_OFFSET,
+	       offsetof(struct ti_emif_pm_data, regs_virt));
+	DEFINE(EMIF_PM_REGS_PHYS_OFFSET,
+	       offsetof(struct ti_emif_pm_data, regs_phys));
+	DEFINE(EMIF_PM_DATA_SIZE, sizeof(struct ti_emif_pm_data));
+
+	BLANK();
+
+	DEFINE(EMIF_PM_SAVE_CONTEXT_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, save_context));
+	DEFINE(EMIF_PM_RESTORE_CONTEXT_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, restore_context));
+	DEFINE(EMIF_PM_ENTER_SR_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, enter_sr));
+	DEFINE(EMIF_PM_EXIT_SR_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, exit_sr));
+	DEFINE(EMIF_PM_ABORT_SR_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, abort_sr));
+	DEFINE(EMIF_PM_FUNCTIONS_SIZE, sizeof(struct ti_emif_pm_functions));
+}
+
 struct gen_pool;

 int ti_emif_copy_pm_function_table(struct gen_pool *sram_pool, void *dst);
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
@ 2018-04-09 16:05             ` Dave Gerlach
  0 siblings, 0 replies; 29+ messages in thread
From: Dave Gerlach @ 2018-04-09 16:05 UTC (permalink / raw)
  To: Russell King - ARM Linux, Masahiro Yamada
  Cc: Michal Marek, arm-soc, Linux Kbuild mailing list, Tony Lindgren,
	Santosh Shilimkar, Linux-OMAP, linux-arm-kernel

Hi,
On 04/07/2018 08:38 AM, Russell King - ARM Linux wrote:
> On Sat, Apr 07, 2018 at 11:55:22AM +0900, Masahiro Yamada wrote:
>> 2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
>>> On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
>>>> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
>>>>> * Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>>>>>> When building a kernel with split object directories, the following
>>>>>> failure occurs:
>>>>>>
>>>>>> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>>>>>> compilation terminated.
>>>>>> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>>>>>> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>>>>>> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>>>>>> make[1]: *** [arch/arm/mach-omap2] Error 2
>>>>>>
>>>>>> This prevents any kernel being built that includes decending into
>>>>>> arch/arm/mach-omap2 with split object directories.
>>>>>>
>>>>>> This is a regression.
>>>>>
>>>>> Dave, I presume you're looking into this already?
>>>>>
>>>> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
>>>> You are copied on the email Tony.
>>>
>>> Arnd also has a fix for it as well, which moves emif-asm-offsets.s
>>> into include/generated, as that will always exist prior to these
>>> rules being invoked.  Arnd's passing it through his randconfig
>>> builder before publishing it.
>>
>>
>> I do not like this idea.
>>
>> Not sure exactly what Arnd is trying to do,
>> but the same file should not be touched from multiple points
>> in case Kbuild descends into mach-omap2/ and memory/ at the same time.
>>
>>
>> I recommend to put copies in each directory:
>>
>> arch/arm/mach-omap2/emif-asm-offsets.h
>> drivers/memory/ti-emif-asm-offsets.h
>>
>>
>> If you want me to send a patch,
>> I will give it a try.
> 
> Or we try and find another way around this.
> 
> The original idea was to start throwing platform specific (iow, stuff in
> arch/arm/mach-omap2/) includes into arch/arm/kernel/asm-offsets.c.  I
> objected to that, and suggested that the generic infrastructure for doing
> the asm-offsets thing should be used to generate an architecture specific
> header.
> 
> Then it turns out that files in both arch/arm/mach-omap2 and drivers/memory
> need these constants, and TI proposed the existing method.
> 
> Obviously, all the right people reviewed it and approved it, which is why
> it's now in mainline, but unfortunately it doesn't actually work, and
> breaks my kernel builds!
> 

A solution that I see is to allow pm-asm-offsets to just include the macros that
would be defined by emif-asm-offsets in the header generated by pm-asm-offsets.
This way there is no need to introduce the arch -> drivers build dependency that
is causing our issue, each driver generates its own header with everything it
needs included. I'll move the actual macro definitions for emif-asm-offsets.c
into a header and then by including them in both emif-asm-offsets and
pm-asm-offsets we get all macro definitions in both places with them still being
defined only in one location.

I've inlined the changes below. I will send a proper split up series if it's
considered acceptable.

Regards,
Dave

8< ----------------------
>From 7350c7caa773d7235ddb21013bd039a16cb6d156 Mon Sep 17 00:00:00 2001
From: Dave Gerlach <d-gerlach@ti.com>
Date: Mon, 9 Apr 2018 10:56:59 -0500
Subject: [PATCH] RFC: Fix build when using split object directories

The sleep33xx and sleep43xx files should not depend on a header file
generated in drivers/memory. Remove this dependency and instead generate
the macros needed as part of pm-asm-offsets.c to avoid complicating the
build.

Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
---
 arch/arm/mach-omap2/Makefile         |  7 +---
 arch/arm/mach-omap2/pm-asm-offsets.c |  3 ++
 arch/arm/mach-omap2/sleep33xx.S      |  1 -
 arch/arm/mach-omap2/sleep43xx.S      |  1 -
 drivers/memory/emif-asm-offsets.c    | 72 +---------------------------------
 include/linux/ti-emif-sram.h         | 75 ++++++++++++++++++++++++++++++++++++
 6 files changed, 81 insertions(+), 78 deletions(-)

diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 4603c30fef73..1257810cdb80 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -243,8 +243,5 @@ arch/arm/mach-omap2/pm-asm-offsets.s:
arch/arm/mach-omap2/pm-asm-offsets.c
 include/generated/ti-pm-asm-offsets.h: arch/arm/mach-omap2/pm-asm-offsets.s FORCE
 	$(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)

-# For rule to generate ti-emif-asm-offsets.h dependency
-include drivers/memory/Makefile.asm-offsets
-
-arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
include/generated/ti-emif-asm-offsets.h
-arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
include/generated/ti-emif-asm-offsets.h
+arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
+arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
diff --git a/arch/arm/mach-omap2/pm-asm-offsets.c
b/arch/arm/mach-omap2/pm-asm-offsets.c
index 6d4392da7c11..b9846b19e5e2 100644
--- a/arch/arm/mach-omap2/pm-asm-offsets.c
+++ b/arch/arm/mach-omap2/pm-asm-offsets.c
@@ -7,9 +7,12 @@

 #include <linux/kbuild.h>
 #include <linux/platform_data/pm33xx.h>
+#include <linux/ti-emif-sram.h>

 int main(void)
 {
+	ti_emif_asm_offsets();
+
 	DEFINE(AMX3_PM_WFI_FLAGS_OFFSET,
 	       offsetof(struct am33xx_pm_sram_data, wfi_flags));
 	DEFINE(AMX3_PM_L2_AUX_CTRL_VAL_OFFSET,
diff --git a/arch/arm/mach-omap2/sleep33xx.S b/arch/arm/mach-omap2/sleep33xx.S
index 218d79930b04..322b3bb868b4 100644
--- a/arch/arm/mach-omap2/sleep33xx.S
+++ b/arch/arm/mach-omap2/sleep33xx.S
@@ -6,7 +6,6 @@
  *	Dave Gerlach, Vaibhav Bedia
  */

-#include <generated/ti-emif-asm-offsets.h>
 #include <generated/ti-pm-asm-offsets.h>
 #include <linux/linkage.h>
 #include <linux/ti-emif-sram.h>
diff --git a/arch/arm/mach-omap2/sleep43xx.S b/arch/arm/mach-omap2/sleep43xx.S
index b24be624e8b9..8903814a6677 100644
--- a/arch/arm/mach-omap2/sleep43xx.S
+++ b/arch/arm/mach-omap2/sleep43xx.S
@@ -6,7 +6,6 @@
  *	Dave Gerlach, Vaibhav Bedia
  */

-#include <generated/ti-emif-asm-offsets.h>
 #include <generated/ti-pm-asm-offsets.h>
 #include <linux/linkage.h>
 #include <linux/ti-emif-sram.h>
diff --git a/drivers/memory/emif-asm-offsets.c b/drivers/memory/emif-asm-offsets.c
index 71a89d5d3efd..db8043019ec6 100644
--- a/drivers/memory/emif-asm-offsets.c
+++ b/drivers/memory/emif-asm-offsets.c
@@ -16,77 +16,7 @@

 int main(void)
 {
-	DEFINE(EMIF_SDCFG_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_sdcfg_val));
-	DEFINE(EMIF_TIMING1_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_timing1_val));
-	DEFINE(EMIF_TIMING2_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_timing2_val));
-	DEFINE(EMIF_TIMING3_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_timing3_val));
-	DEFINE(EMIF_REF_CTRL_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_ref_ctrl_val));
-	DEFINE(EMIF_ZQCFG_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_zqcfg_val));
-	DEFINE(EMIF_PMCR_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_pmcr_val));
-	DEFINE(EMIF_PMCR_SHDW_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_pmcr_shdw_val));
-	DEFINE(EMIF_RD_WR_LEVEL_RAMP_CTRL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_rd_wr_level_ramp_ctrl));
-	DEFINE(EMIF_RD_WR_EXEC_THRESH_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_rd_wr_exec_thresh));
-	DEFINE(EMIF_COS_CONFIG_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_cos_config));
-	DEFINE(EMIF_PRIORITY_TO_COS_MAPPING_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_priority_to_cos_mapping));
-	DEFINE(EMIF_CONNECT_ID_SERV_1_MAP_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_connect_id_serv_1_map));
-	DEFINE(EMIF_CONNECT_ID_SERV_2_MAP_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_connect_id_serv_2_map));
-	DEFINE(EMIF_OCP_CONFIG_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_ocp_config_val));
-	DEFINE(EMIF_LPDDR2_NVM_TIM_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_lpddr2_nvm_tim));
-	DEFINE(EMIF_LPDDR2_NVM_TIM_SHDW_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_lpddr2_nvm_tim_shdw));
-	DEFINE(EMIF_DLL_CALIB_CTRL_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_dll_calib_ctrl_val));
-	DEFINE(EMIF_DLL_CALIB_CTRL_VAL_SHDW_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_dll_calib_ctrl_val_shdw));
-	DEFINE(EMIF_DDR_PHY_CTLR_1_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_ddr_phy_ctlr_1));
-	DEFINE(EMIF_EXT_PHY_CTRL_VALS_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_ext_phy_ctrl_vals));
-	DEFINE(EMIF_REGS_AMX3_SIZE, sizeof(struct emif_regs_amx3));
-
-	BLANK();
-
-	DEFINE(EMIF_PM_BASE_ADDR_VIRT_OFFSET,
-	       offsetof(struct ti_emif_pm_data, ti_emif_base_addr_virt));
-	DEFINE(EMIF_PM_BASE_ADDR_PHYS_OFFSET,
-	       offsetof(struct ti_emif_pm_data, ti_emif_base_addr_phys));
-	DEFINE(EMIF_PM_CONFIG_OFFSET,
-	       offsetof(struct ti_emif_pm_data, ti_emif_sram_config));
-	DEFINE(EMIF_PM_REGS_VIRT_OFFSET,
-	       offsetof(struct ti_emif_pm_data, regs_virt));
-	DEFINE(EMIF_PM_REGS_PHYS_OFFSET,
-	       offsetof(struct ti_emif_pm_data, regs_phys));
-	DEFINE(EMIF_PM_DATA_SIZE, sizeof(struct ti_emif_pm_data));
-
-	BLANK();
-
-	DEFINE(EMIF_PM_SAVE_CONTEXT_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, save_context));
-	DEFINE(EMIF_PM_RESTORE_CONTEXT_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, restore_context));
-	DEFINE(EMIF_PM_ENTER_SR_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, enter_sr));
-	DEFINE(EMIF_PM_EXIT_SR_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, exit_sr));
-	DEFINE(EMIF_PM_ABORT_SR_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, abort_sr));
-	DEFINE(EMIF_PM_FUNCTIONS_SIZE, sizeof(struct ti_emif_pm_functions));
+	ti_emif_asm_offsets();

 	return 0;
 }
diff --git a/include/linux/ti-emif-sram.h b/include/linux/ti-emif-sram.h
index 45bc6b376492..53604b087f2c 100644
--- a/include/linux/ti-emif-sram.h
+++ b/include/linux/ti-emif-sram.h
@@ -60,6 +60,81 @@ struct ti_emif_pm_functions {
 	u32 abort_sr;
 } __packed __aligned(8);

+static inline void ti_emif_asm_offsets(void)
+{
+	DEFINE(EMIF_SDCFG_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_sdcfg_val));
+	DEFINE(EMIF_TIMING1_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_timing1_val));
+	DEFINE(EMIF_TIMING2_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_timing2_val));
+	DEFINE(EMIF_TIMING3_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_timing3_val));
+	DEFINE(EMIF_REF_CTRL_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_ref_ctrl_val));
+	DEFINE(EMIF_ZQCFG_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_zqcfg_val));
+	DEFINE(EMIF_PMCR_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_pmcr_val));
+	DEFINE(EMIF_PMCR_SHDW_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_pmcr_shdw_val));
+	DEFINE(EMIF_RD_WR_LEVEL_RAMP_CTRL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_rd_wr_level_ramp_ctrl));
+	DEFINE(EMIF_RD_WR_EXEC_THRESH_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_rd_wr_exec_thresh));
+	DEFINE(EMIF_COS_CONFIG_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_cos_config));
+	DEFINE(EMIF_PRIORITY_TO_COS_MAPPING_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_priority_to_cos_mapping));
+	DEFINE(EMIF_CONNECT_ID_SERV_1_MAP_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_connect_id_serv_1_map));
+	DEFINE(EMIF_CONNECT_ID_SERV_2_MAP_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_connect_id_serv_2_map));
+	DEFINE(EMIF_OCP_CONFIG_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_ocp_config_val));
+	DEFINE(EMIF_LPDDR2_NVM_TIM_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_lpddr2_nvm_tim));
+	DEFINE(EMIF_LPDDR2_NVM_TIM_SHDW_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_lpddr2_nvm_tim_shdw));
+	DEFINE(EMIF_DLL_CALIB_CTRL_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_dll_calib_ctrl_val));
+	DEFINE(EMIF_DLL_CALIB_CTRL_VAL_SHDW_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_dll_calib_ctrl_val_shdw));
+	DEFINE(EMIF_DDR_PHY_CTLR_1_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_ddr_phy_ctlr_1));
+	DEFINE(EMIF_EXT_PHY_CTRL_VALS_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_ext_phy_ctrl_vals));
+	DEFINE(EMIF_REGS_AMX3_SIZE, sizeof(struct emif_regs_amx3));
+
+	BLANK();
+
+	DEFINE(EMIF_PM_BASE_ADDR_VIRT_OFFSET,
+	       offsetof(struct ti_emif_pm_data, ti_emif_base_addr_virt));
+	DEFINE(EMIF_PM_BASE_ADDR_PHYS_OFFSET,
+	       offsetof(struct ti_emif_pm_data, ti_emif_base_addr_phys));
+	DEFINE(EMIF_PM_CONFIG_OFFSET,
+	       offsetof(struct ti_emif_pm_data, ti_emif_sram_config));
+	DEFINE(EMIF_PM_REGS_VIRT_OFFSET,
+	       offsetof(struct ti_emif_pm_data, regs_virt));
+	DEFINE(EMIF_PM_REGS_PHYS_OFFSET,
+	       offsetof(struct ti_emif_pm_data, regs_phys));
+	DEFINE(EMIF_PM_DATA_SIZE, sizeof(struct ti_emif_pm_data));
+
+	BLANK();
+
+	DEFINE(EMIF_PM_SAVE_CONTEXT_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, save_context));
+	DEFINE(EMIF_PM_RESTORE_CONTEXT_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, restore_context));
+	DEFINE(EMIF_PM_ENTER_SR_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, enter_sr));
+	DEFINE(EMIF_PM_EXIT_SR_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, exit_sr));
+	DEFINE(EMIF_PM_ABORT_SR_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, abort_sr));
+	DEFINE(EMIF_PM_FUNCTIONS_SIZE, sizeof(struct ti_emif_pm_functions));
+}
+
 struct gen_pool;

 int ti_emif_copy_pm_function_table(struct gen_pool *sram_pool, void *dst);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [BUG] Fix drivers/memory O= build
@ 2018-04-09 16:05             ` Dave Gerlach
  0 siblings, 0 replies; 29+ messages in thread
From: Dave Gerlach @ 2018-04-09 16:05 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,
On 04/07/2018 08:38 AM, Russell King - ARM Linux wrote:
> On Sat, Apr 07, 2018 at 11:55:22AM +0900, Masahiro Yamada wrote:
>> 2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
>>> On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
>>>> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
>>>>> * Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>>>>>> When building a kernel with split object directories, the following
>>>>>> failure occurs:
>>>>>>
>>>>>> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>>>>>> compilation terminated.
>>>>>> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>>>>>> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>>>>>> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>>>>>> make[1]: *** [arch/arm/mach-omap2] Error 2
>>>>>>
>>>>>> This prevents any kernel being built that includes decending into
>>>>>> arch/arm/mach-omap2 with split object directories.
>>>>>>
>>>>>> This is a regression.
>>>>>
>>>>> Dave, I presume you're looking into this already?
>>>>>
>>>> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
>>>> You are copied on the email Tony.
>>>
>>> Arnd also has a fix for it as well, which moves emif-asm-offsets.s
>>> into include/generated, as that will always exist prior to these
>>> rules being invoked.  Arnd's passing it through his randconfig
>>> builder before publishing it.
>>
>>
>> I do not like this idea.
>>
>> Not sure exactly what Arnd is trying to do,
>> but the same file should not be touched from multiple points
>> in case Kbuild descends into mach-omap2/ and memory/ at the same time.
>>
>>
>> I recommend to put copies in each directory:
>>
>> arch/arm/mach-omap2/emif-asm-offsets.h
>> drivers/memory/ti-emif-asm-offsets.h
>>
>>
>> If you want me to send a patch,
>> I will give it a try.
> 
> Or we try and find another way around this.
> 
> The original idea was to start throwing platform specific (iow, stuff in
> arch/arm/mach-omap2/) includes into arch/arm/kernel/asm-offsets.c.  I
> objected to that, and suggested that the generic infrastructure for doing
> the asm-offsets thing should be used to generate an architecture specific
> header.
> 
> Then it turns out that files in both arch/arm/mach-omap2 and drivers/memory
> need these constants, and TI proposed the existing method.
> 
> Obviously, all the right people reviewed it and approved it, which is why
> it's now in mainline, but unfortunately it doesn't actually work, and
> breaks my kernel builds!
> 

A solution that I see is to allow pm-asm-offsets to just include the macros that
would be defined by emif-asm-offsets in the header generated by pm-asm-offsets.
This way there is no need to introduce the arch -> drivers build dependency that
is causing our issue, each driver generates its own header with everything it
needs included. I'll move the actual macro definitions for emif-asm-offsets.c
into a header and then by including them in both emif-asm-offsets and
pm-asm-offsets we get all macro definitions in both places with them still being
defined only in one location.

I've inlined the changes below. I will send a proper split up series if it's
considered acceptable.

Regards,
Dave

8< ----------------------
>From 7350c7caa773d7235ddb21013bd039a16cb6d156 Mon Sep 17 00:00:00 2001
From: Dave Gerlach <d-gerlach@ti.com>
Date: Mon, 9 Apr 2018 10:56:59 -0500
Subject: [PATCH] RFC: Fix build when using split object directories

The sleep33xx and sleep43xx files should not depend on a header file
generated in drivers/memory. Remove this dependency and instead generate
the macros needed as part of pm-asm-offsets.c to avoid complicating the
build.

Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
---
 arch/arm/mach-omap2/Makefile         |  7 +---
 arch/arm/mach-omap2/pm-asm-offsets.c |  3 ++
 arch/arm/mach-omap2/sleep33xx.S      |  1 -
 arch/arm/mach-omap2/sleep43xx.S      |  1 -
 drivers/memory/emif-asm-offsets.c    | 72 +---------------------------------
 include/linux/ti-emif-sram.h         | 75 ++++++++++++++++++++++++++++++++++++
 6 files changed, 81 insertions(+), 78 deletions(-)

diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 4603c30fef73..1257810cdb80 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -243,8 +243,5 @@ arch/arm/mach-omap2/pm-asm-offsets.s:
arch/arm/mach-omap2/pm-asm-offsets.c
 include/generated/ti-pm-asm-offsets.h: arch/arm/mach-omap2/pm-asm-offsets.s FORCE
 	$(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)

-# For rule to generate ti-emif-asm-offsets.h dependency
-include drivers/memory/Makefile.asm-offsets
-
-arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
include/generated/ti-emif-asm-offsets.h
-arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
include/generated/ti-emif-asm-offsets.h
+arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
+arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
diff --git a/arch/arm/mach-omap2/pm-asm-offsets.c
b/arch/arm/mach-omap2/pm-asm-offsets.c
index 6d4392da7c11..b9846b19e5e2 100644
--- a/arch/arm/mach-omap2/pm-asm-offsets.c
+++ b/arch/arm/mach-omap2/pm-asm-offsets.c
@@ -7,9 +7,12 @@

 #include <linux/kbuild.h>
 #include <linux/platform_data/pm33xx.h>
+#include <linux/ti-emif-sram.h>

 int main(void)
 {
+	ti_emif_asm_offsets();
+
 	DEFINE(AMX3_PM_WFI_FLAGS_OFFSET,
 	       offsetof(struct am33xx_pm_sram_data, wfi_flags));
 	DEFINE(AMX3_PM_L2_AUX_CTRL_VAL_OFFSET,
diff --git a/arch/arm/mach-omap2/sleep33xx.S b/arch/arm/mach-omap2/sleep33xx.S
index 218d79930b04..322b3bb868b4 100644
--- a/arch/arm/mach-omap2/sleep33xx.S
+++ b/arch/arm/mach-omap2/sleep33xx.S
@@ -6,7 +6,6 @@
  *	Dave Gerlach, Vaibhav Bedia
  */

-#include <generated/ti-emif-asm-offsets.h>
 #include <generated/ti-pm-asm-offsets.h>
 #include <linux/linkage.h>
 #include <linux/ti-emif-sram.h>
diff --git a/arch/arm/mach-omap2/sleep43xx.S b/arch/arm/mach-omap2/sleep43xx.S
index b24be624e8b9..8903814a6677 100644
--- a/arch/arm/mach-omap2/sleep43xx.S
+++ b/arch/arm/mach-omap2/sleep43xx.S
@@ -6,7 +6,6 @@
  *	Dave Gerlach, Vaibhav Bedia
  */

-#include <generated/ti-emif-asm-offsets.h>
 #include <generated/ti-pm-asm-offsets.h>
 #include <linux/linkage.h>
 #include <linux/ti-emif-sram.h>
diff --git a/drivers/memory/emif-asm-offsets.c b/drivers/memory/emif-asm-offsets.c
index 71a89d5d3efd..db8043019ec6 100644
--- a/drivers/memory/emif-asm-offsets.c
+++ b/drivers/memory/emif-asm-offsets.c
@@ -16,77 +16,7 @@

 int main(void)
 {
-	DEFINE(EMIF_SDCFG_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_sdcfg_val));
-	DEFINE(EMIF_TIMING1_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_timing1_val));
-	DEFINE(EMIF_TIMING2_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_timing2_val));
-	DEFINE(EMIF_TIMING3_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_timing3_val));
-	DEFINE(EMIF_REF_CTRL_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_ref_ctrl_val));
-	DEFINE(EMIF_ZQCFG_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_zqcfg_val));
-	DEFINE(EMIF_PMCR_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_pmcr_val));
-	DEFINE(EMIF_PMCR_SHDW_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_pmcr_shdw_val));
-	DEFINE(EMIF_RD_WR_LEVEL_RAMP_CTRL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_rd_wr_level_ramp_ctrl));
-	DEFINE(EMIF_RD_WR_EXEC_THRESH_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_rd_wr_exec_thresh));
-	DEFINE(EMIF_COS_CONFIG_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_cos_config));
-	DEFINE(EMIF_PRIORITY_TO_COS_MAPPING_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_priority_to_cos_mapping));
-	DEFINE(EMIF_CONNECT_ID_SERV_1_MAP_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_connect_id_serv_1_map));
-	DEFINE(EMIF_CONNECT_ID_SERV_2_MAP_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_connect_id_serv_2_map));
-	DEFINE(EMIF_OCP_CONFIG_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_ocp_config_val));
-	DEFINE(EMIF_LPDDR2_NVM_TIM_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_lpddr2_nvm_tim));
-	DEFINE(EMIF_LPDDR2_NVM_TIM_SHDW_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_lpddr2_nvm_tim_shdw));
-	DEFINE(EMIF_DLL_CALIB_CTRL_VAL_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_dll_calib_ctrl_val));
-	DEFINE(EMIF_DLL_CALIB_CTRL_VAL_SHDW_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_dll_calib_ctrl_val_shdw));
-	DEFINE(EMIF_DDR_PHY_CTLR_1_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_ddr_phy_ctlr_1));
-	DEFINE(EMIF_EXT_PHY_CTRL_VALS_OFFSET,
-	       offsetof(struct emif_regs_amx3, emif_ext_phy_ctrl_vals));
-	DEFINE(EMIF_REGS_AMX3_SIZE, sizeof(struct emif_regs_amx3));
-
-	BLANK();
-
-	DEFINE(EMIF_PM_BASE_ADDR_VIRT_OFFSET,
-	       offsetof(struct ti_emif_pm_data, ti_emif_base_addr_virt));
-	DEFINE(EMIF_PM_BASE_ADDR_PHYS_OFFSET,
-	       offsetof(struct ti_emif_pm_data, ti_emif_base_addr_phys));
-	DEFINE(EMIF_PM_CONFIG_OFFSET,
-	       offsetof(struct ti_emif_pm_data, ti_emif_sram_config));
-	DEFINE(EMIF_PM_REGS_VIRT_OFFSET,
-	       offsetof(struct ti_emif_pm_data, regs_virt));
-	DEFINE(EMIF_PM_REGS_PHYS_OFFSET,
-	       offsetof(struct ti_emif_pm_data, regs_phys));
-	DEFINE(EMIF_PM_DATA_SIZE, sizeof(struct ti_emif_pm_data));
-
-	BLANK();
-
-	DEFINE(EMIF_PM_SAVE_CONTEXT_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, save_context));
-	DEFINE(EMIF_PM_RESTORE_CONTEXT_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, restore_context));
-	DEFINE(EMIF_PM_ENTER_SR_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, enter_sr));
-	DEFINE(EMIF_PM_EXIT_SR_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, exit_sr));
-	DEFINE(EMIF_PM_ABORT_SR_OFFSET,
-	       offsetof(struct ti_emif_pm_functions, abort_sr));
-	DEFINE(EMIF_PM_FUNCTIONS_SIZE, sizeof(struct ti_emif_pm_functions));
+	ti_emif_asm_offsets();

 	return 0;
 }
diff --git a/include/linux/ti-emif-sram.h b/include/linux/ti-emif-sram.h
index 45bc6b376492..53604b087f2c 100644
--- a/include/linux/ti-emif-sram.h
+++ b/include/linux/ti-emif-sram.h
@@ -60,6 +60,81 @@ struct ti_emif_pm_functions {
 	u32 abort_sr;
 } __packed __aligned(8);

+static inline void ti_emif_asm_offsets(void)
+{
+	DEFINE(EMIF_SDCFG_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_sdcfg_val));
+	DEFINE(EMIF_TIMING1_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_timing1_val));
+	DEFINE(EMIF_TIMING2_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_timing2_val));
+	DEFINE(EMIF_TIMING3_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_timing3_val));
+	DEFINE(EMIF_REF_CTRL_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_ref_ctrl_val));
+	DEFINE(EMIF_ZQCFG_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_zqcfg_val));
+	DEFINE(EMIF_PMCR_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_pmcr_val));
+	DEFINE(EMIF_PMCR_SHDW_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_pmcr_shdw_val));
+	DEFINE(EMIF_RD_WR_LEVEL_RAMP_CTRL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_rd_wr_level_ramp_ctrl));
+	DEFINE(EMIF_RD_WR_EXEC_THRESH_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_rd_wr_exec_thresh));
+	DEFINE(EMIF_COS_CONFIG_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_cos_config));
+	DEFINE(EMIF_PRIORITY_TO_COS_MAPPING_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_priority_to_cos_mapping));
+	DEFINE(EMIF_CONNECT_ID_SERV_1_MAP_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_connect_id_serv_1_map));
+	DEFINE(EMIF_CONNECT_ID_SERV_2_MAP_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_connect_id_serv_2_map));
+	DEFINE(EMIF_OCP_CONFIG_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_ocp_config_val));
+	DEFINE(EMIF_LPDDR2_NVM_TIM_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_lpddr2_nvm_tim));
+	DEFINE(EMIF_LPDDR2_NVM_TIM_SHDW_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_lpddr2_nvm_tim_shdw));
+	DEFINE(EMIF_DLL_CALIB_CTRL_VAL_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_dll_calib_ctrl_val));
+	DEFINE(EMIF_DLL_CALIB_CTRL_VAL_SHDW_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_dll_calib_ctrl_val_shdw));
+	DEFINE(EMIF_DDR_PHY_CTLR_1_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_ddr_phy_ctlr_1));
+	DEFINE(EMIF_EXT_PHY_CTRL_VALS_OFFSET,
+	       offsetof(struct emif_regs_amx3, emif_ext_phy_ctrl_vals));
+	DEFINE(EMIF_REGS_AMX3_SIZE, sizeof(struct emif_regs_amx3));
+
+	BLANK();
+
+	DEFINE(EMIF_PM_BASE_ADDR_VIRT_OFFSET,
+	       offsetof(struct ti_emif_pm_data, ti_emif_base_addr_virt));
+	DEFINE(EMIF_PM_BASE_ADDR_PHYS_OFFSET,
+	       offsetof(struct ti_emif_pm_data, ti_emif_base_addr_phys));
+	DEFINE(EMIF_PM_CONFIG_OFFSET,
+	       offsetof(struct ti_emif_pm_data, ti_emif_sram_config));
+	DEFINE(EMIF_PM_REGS_VIRT_OFFSET,
+	       offsetof(struct ti_emif_pm_data, regs_virt));
+	DEFINE(EMIF_PM_REGS_PHYS_OFFSET,
+	       offsetof(struct ti_emif_pm_data, regs_phys));
+	DEFINE(EMIF_PM_DATA_SIZE, sizeof(struct ti_emif_pm_data));
+
+	BLANK();
+
+	DEFINE(EMIF_PM_SAVE_CONTEXT_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, save_context));
+	DEFINE(EMIF_PM_RESTORE_CONTEXT_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, restore_context));
+	DEFINE(EMIF_PM_ENTER_SR_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, enter_sr));
+	DEFINE(EMIF_PM_EXIT_SR_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, exit_sr));
+	DEFINE(EMIF_PM_ABORT_SR_OFFSET,
+	       offsetof(struct ti_emif_pm_functions, abort_sr));
+	DEFINE(EMIF_PM_FUNCTIONS_SIZE, sizeof(struct ti_emif_pm_functions));
+}
+
 struct gen_pool;

 int ti_emif_copy_pm_function_table(struct gen_pool *sram_pool, void *dst);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
  2018-04-09 16:05             ` Dave Gerlach
  (?)
@ 2018-04-10 13:55               ` Tony Lindgren
  -1 siblings, 0 replies; 29+ messages in thread
From: Tony Lindgren @ 2018-04-10 13:55 UTC (permalink / raw)
  To: Dave Gerlach
  Cc: Russell King - ARM Linux, Masahiro Yamada, Santosh Shilimkar,
	linux-arm-kernel, Linux Kbuild mailing list, Michal Marek,
	Linux-OMAP, arm-soc

* Dave Gerlach <d-gerlach@ti.com> [180409 16:07]:
> I've inlined the changes below. I will send a proper split up series if it's
> considered acceptable.

Seems fine from my point of view. No need to split the patch, best to
do the fix as a single patch.

We should test build it also with make randconfigs though.

So assuming others are OK with this and it does not introduce
new randconfig build errors:

Acked-by: Tony Lindgren <tony@atomide.com>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
@ 2018-04-10 13:55               ` Tony Lindgren
  0 siblings, 0 replies; 29+ messages in thread
From: Tony Lindgren @ 2018-04-10 13:55 UTC (permalink / raw)
  To: Dave Gerlach
  Cc: Michal Marek, arm-soc, Linux Kbuild mailing list,
	Santosh Shilimkar, Russell King - ARM Linux, Masahiro Yamada,
	Linux-OMAP, linux-arm-kernel

* Dave Gerlach <d-gerlach@ti.com> [180409 16:07]:
> I've inlined the changes below. I will send a proper split up series if it's
> considered acceptable.

Seems fine from my point of view. No need to split the patch, best to
do the fix as a single patch.

We should test build it also with make randconfigs though.

So assuming others are OK with this and it does not introduce
new randconfig build errors:

Acked-by: Tony Lindgren <tony@atomide.com>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [BUG] Fix drivers/memory O= build
@ 2018-04-10 13:55               ` Tony Lindgren
  0 siblings, 0 replies; 29+ messages in thread
From: Tony Lindgren @ 2018-04-10 13:55 UTC (permalink / raw)
  To: linux-arm-kernel

* Dave Gerlach <d-gerlach@ti.com> [180409 16:07]:
> I've inlined the changes below. I will send a proper split up series if it's
> considered acceptable.

Seems fine from my point of view. No need to split the patch, best to
do the fix as a single patch.

We should test build it also with make randconfigs though.

So assuming others are OK with this and it does not introduce
new randconfig build errors:

Acked-by: Tony Lindgren <tony@atomide.com>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
  2018-04-09 16:05             ` Dave Gerlach
  (?)
@ 2018-04-10 15:01               ` Masahiro Yamada
  -1 siblings, 0 replies; 29+ messages in thread
From: Masahiro Yamada @ 2018-04-10 15:01 UTC (permalink / raw)
  To: Dave Gerlach
  Cc: Russell King - ARM Linux, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, Linux Kbuild mailing list, Michal Marek,
	Linux-OMAP, arm-soc

2018-04-10 1:05 GMT+09:00 Dave Gerlach <d-gerlach@ti.com>:
> Hi,
> On 04/07/2018 08:38 AM, Russell King - ARM Linux wrote:
>> On Sat, Apr 07, 2018 at 11:55:22AM +0900, Masahiro Yamada wrote:
>>> 2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
>>>> On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
>>>>> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
>>>>>> * Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>>>>>>> When building a kernel with split object directories, the following
>>>>>>> failure occurs:
>>>>>>>
>>>>>>> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>>>>>>> compilation terminated.
>>>>>>> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>>>>>>> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>>>>>>> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>>>>>>> make[1]: *** [arch/arm/mach-omap2] Error 2
>>>>>>>
>>>>>>> This prevents any kernel being built that includes decending into
>>>>>>> arch/arm/mach-omap2 with split object directories.
>>>>>>>
>>>>>>> This is a regression.
>>>>>>
>>>>>> Dave, I presume you're looking into this already?
>>>>>>
>>>>> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
>>>>> You are copied on the email Tony.
>>>>
>>>> Arnd also has a fix for it as well, which moves emif-asm-offsets.s
>>>> into include/generated, as that will always exist prior to these
>>>> rules being invoked.  Arnd's passing it through his randconfig
>>>> builder before publishing it.
>>>
>>>
>>> I do not like this idea.
>>>
>>> Not sure exactly what Arnd is trying to do,
>>> but the same file should not be touched from multiple points
>>> in case Kbuild descends into mach-omap2/ and memory/ at the same time.
>>>
>>>
>>> I recommend to put copies in each directory:
>>>
>>> arch/arm/mach-omap2/emif-asm-offsets.h
>>> drivers/memory/ti-emif-asm-offsets.h
>>>
>>>
>>> If you want me to send a patch,
>>> I will give it a try.
>>
>> Or we try and find another way around this.
>>
>> The original idea was to start throwing platform specific (iow, stuff in
>> arch/arm/mach-omap2/) includes into arch/arm/kernel/asm-offsets.c.  I
>> objected to that, and suggested that the generic infrastructure for doing
>> the asm-offsets thing should be used to generate an architecture specific
>> header.
>>
>> Then it turns out that files in both arch/arm/mach-omap2 and drivers/memory
>> need these constants, and TI proposed the existing method.
>>
>> Obviously, all the right people reviewed it and approved it, which is why
>> it's now in mainline, but unfortunately it doesn't actually work, and
>> breaks my kernel builds!
>>
>
> A solution that I see is to allow pm-asm-offsets to just include the macros that
> would be defined by emif-asm-offsets in the header generated by pm-asm-offsets.
> This way there is no need to introduce the arch -> drivers build dependency that
> is causing our issue, each driver generates its own header with everything it
> needs included. I'll move the actual macro definitions for emif-asm-offsets.c
> into a header and then by including them in both emif-asm-offsets and
> pm-asm-offsets we get all macro definitions in both places with them still being
> defined only in one location.
>
> I've inlined the changes below. I will send a proper split up series if it's
> considered acceptable.
>
> Regards,
> Dave
>
> 8< ----------------------
> From 7350c7caa773d7235ddb21013bd039a16cb6d156 Mon Sep 17 00:00:00 2001
> From: Dave Gerlach <d-gerlach@ti.com>
> Date: Mon, 9 Apr 2018 10:56:59 -0500
> Subject: [PATCH] RFC: Fix build when using split object directories
>
> The sleep33xx and sleep43xx files should not depend on a header file
> generated in drivers/memory. Remove this dependency and instead generate
> the macros needed as part of pm-asm-offsets.c to avoid complicating the
> build.
>
> Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
> ---
>  arch/arm/mach-omap2/Makefile         |  7 +---
>  arch/arm/mach-omap2/pm-asm-offsets.c |  3 ++
>  arch/arm/mach-omap2/sleep33xx.S      |  1 -
>  arch/arm/mach-omap2/sleep43xx.S      |  1 -
>  drivers/memory/emif-asm-offsets.c    | 72 +---------------------------------
>  include/linux/ti-emif-sram.h         | 75 ++++++++++++++++++++++++++++++++++++
>  6 files changed, 81 insertions(+), 78 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
> index 4603c30fef73..1257810cdb80 100644
> --- a/arch/arm/mach-omap2/Makefile
> +++ b/arch/arm/mach-omap2/Makefile
> @@ -243,8 +243,5 @@ arch/arm/mach-omap2/pm-asm-offsets.s:
> arch/arm/mach-omap2/pm-asm-offsets.c
>  include/generated/ti-pm-asm-offsets.h: arch/arm/mach-omap2/pm-asm-offsets.s FORCE
>         $(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)
>
> -# For rule to generate ti-emif-asm-offsets.h dependency
> -include drivers/memory/Makefile.asm-offsets
> -
> -arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
> include/generated/ti-emif-asm-offsets.h
> -arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
> include/generated/ti-emif-asm-offsets.h
> +arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
> +arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h


Nit:
You are touching these two lines.
You can also describe it like this:

$(obj)/sleep33xx.o $(obj)/sleep43xx.o: include/generated/ti-pm-asm-offsets.h



I prefer putting the local header, ti-pm-asm-offsets.h,
into arch/arm/mach-omap2/, but that is a different issue.

So, I am fine with this.


Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>



-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
@ 2018-04-10 15:01               ` Masahiro Yamada
  0 siblings, 0 replies; 29+ messages in thread
From: Masahiro Yamada @ 2018-04-10 15:01 UTC (permalink / raw)
  To: Dave Gerlach
  Cc: Michal Marek, arm-soc, Linux Kbuild mailing list, Tony Lindgren,
	Santosh Shilimkar, Russell King - ARM Linux, Linux-OMAP,
	linux-arm-kernel

2018-04-10 1:05 GMT+09:00 Dave Gerlach <d-gerlach@ti.com>:
> Hi,
> On 04/07/2018 08:38 AM, Russell King - ARM Linux wrote:
>> On Sat, Apr 07, 2018 at 11:55:22AM +0900, Masahiro Yamada wrote:
>>> 2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
>>>> On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
>>>>> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
>>>>>> * Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>>>>>>> When building a kernel with split object directories, the following
>>>>>>> failure occurs:
>>>>>>>
>>>>>>> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>>>>>>> compilation terminated.
>>>>>>> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>>>>>>> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>>>>>>> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>>>>>>> make[1]: *** [arch/arm/mach-omap2] Error 2
>>>>>>>
>>>>>>> This prevents any kernel being built that includes decending into
>>>>>>> arch/arm/mach-omap2 with split object directories.
>>>>>>>
>>>>>>> This is a regression.
>>>>>>
>>>>>> Dave, I presume you're looking into this already?
>>>>>>
>>>>> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
>>>>> You are copied on the email Tony.
>>>>
>>>> Arnd also has a fix for it as well, which moves emif-asm-offsets.s
>>>> into include/generated, as that will always exist prior to these
>>>> rules being invoked.  Arnd's passing it through his randconfig
>>>> builder before publishing it.
>>>
>>>
>>> I do not like this idea.
>>>
>>> Not sure exactly what Arnd is trying to do,
>>> but the same file should not be touched from multiple points
>>> in case Kbuild descends into mach-omap2/ and memory/ at the same time.
>>>
>>>
>>> I recommend to put copies in each directory:
>>>
>>> arch/arm/mach-omap2/emif-asm-offsets.h
>>> drivers/memory/ti-emif-asm-offsets.h
>>>
>>>
>>> If you want me to send a patch,
>>> I will give it a try.
>>
>> Or we try and find another way around this.
>>
>> The original idea was to start throwing platform specific (iow, stuff in
>> arch/arm/mach-omap2/) includes into arch/arm/kernel/asm-offsets.c.  I
>> objected to that, and suggested that the generic infrastructure for doing
>> the asm-offsets thing should be used to generate an architecture specific
>> header.
>>
>> Then it turns out that files in both arch/arm/mach-omap2 and drivers/memory
>> need these constants, and TI proposed the existing method.
>>
>> Obviously, all the right people reviewed it and approved it, which is why
>> it's now in mainline, but unfortunately it doesn't actually work, and
>> breaks my kernel builds!
>>
>
> A solution that I see is to allow pm-asm-offsets to just include the macros that
> would be defined by emif-asm-offsets in the header generated by pm-asm-offsets.
> This way there is no need to introduce the arch -> drivers build dependency that
> is causing our issue, each driver generates its own header with everything it
> needs included. I'll move the actual macro definitions for emif-asm-offsets.c
> into a header and then by including them in both emif-asm-offsets and
> pm-asm-offsets we get all macro definitions in both places with them still being
> defined only in one location.
>
> I've inlined the changes below. I will send a proper split up series if it's
> considered acceptable.
>
> Regards,
> Dave
>
> 8< ----------------------
> From 7350c7caa773d7235ddb21013bd039a16cb6d156 Mon Sep 17 00:00:00 2001
> From: Dave Gerlach <d-gerlach@ti.com>
> Date: Mon, 9 Apr 2018 10:56:59 -0500
> Subject: [PATCH] RFC: Fix build when using split object directories
>
> The sleep33xx and sleep43xx files should not depend on a header file
> generated in drivers/memory. Remove this dependency and instead generate
> the macros needed as part of pm-asm-offsets.c to avoid complicating the
> build.
>
> Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
> ---
>  arch/arm/mach-omap2/Makefile         |  7 +---
>  arch/arm/mach-omap2/pm-asm-offsets.c |  3 ++
>  arch/arm/mach-omap2/sleep33xx.S      |  1 -
>  arch/arm/mach-omap2/sleep43xx.S      |  1 -
>  drivers/memory/emif-asm-offsets.c    | 72 +---------------------------------
>  include/linux/ti-emif-sram.h         | 75 ++++++++++++++++++++++++++++++++++++
>  6 files changed, 81 insertions(+), 78 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
> index 4603c30fef73..1257810cdb80 100644
> --- a/arch/arm/mach-omap2/Makefile
> +++ b/arch/arm/mach-omap2/Makefile
> @@ -243,8 +243,5 @@ arch/arm/mach-omap2/pm-asm-offsets.s:
> arch/arm/mach-omap2/pm-asm-offsets.c
>  include/generated/ti-pm-asm-offsets.h: arch/arm/mach-omap2/pm-asm-offsets.s FORCE
>         $(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)
>
> -# For rule to generate ti-emif-asm-offsets.h dependency
> -include drivers/memory/Makefile.asm-offsets
> -
> -arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
> include/generated/ti-emif-asm-offsets.h
> -arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
> include/generated/ti-emif-asm-offsets.h
> +arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
> +arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h


Nit:
You are touching these two lines.
You can also describe it like this:

$(obj)/sleep33xx.o $(obj)/sleep43xx.o: include/generated/ti-pm-asm-offsets.h



I prefer putting the local header, ti-pm-asm-offsets.h,
into arch/arm/mach-omap2/, but that is a different issue.

So, I am fine with this.


Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>



-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [BUG] Fix drivers/memory O= build
@ 2018-04-10 15:01               ` Masahiro Yamada
  0 siblings, 0 replies; 29+ messages in thread
From: Masahiro Yamada @ 2018-04-10 15:01 UTC (permalink / raw)
  To: linux-arm-kernel

2018-04-10 1:05 GMT+09:00 Dave Gerlach <d-gerlach@ti.com>:
> Hi,
> On 04/07/2018 08:38 AM, Russell King - ARM Linux wrote:
>> On Sat, Apr 07, 2018 at 11:55:22AM +0900, Masahiro Yamada wrote:
>>> 2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
>>>> On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
>>>>> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
>>>>>> * Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>>>>>>> When building a kernel with split object directories, the following
>>>>>>> failure occurs:
>>>>>>>
>>>>>>> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>>>>>>> compilation terminated.
>>>>>>> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>>>>>>> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>>>>>>> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>>>>>>> make[1]: *** [arch/arm/mach-omap2] Error 2
>>>>>>>
>>>>>>> This prevents any kernel being built that includes decending into
>>>>>>> arch/arm/mach-omap2 with split object directories.
>>>>>>>
>>>>>>> This is a regression.
>>>>>>
>>>>>> Dave, I presume you're looking into this already?
>>>>>>
>>>>> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
>>>>> You are copied on the email Tony.
>>>>
>>>> Arnd also has a fix for it as well, which moves emif-asm-offsets.s
>>>> into include/generated, as that will always exist prior to these
>>>> rules being invoked.  Arnd's passing it through his randconfig
>>>> builder before publishing it.
>>>
>>>
>>> I do not like this idea.
>>>
>>> Not sure exactly what Arnd is trying to do,
>>> but the same file should not be touched from multiple points
>>> in case Kbuild descends into mach-omap2/ and memory/ at the same time.
>>>
>>>
>>> I recommend to put copies in each directory:
>>>
>>> arch/arm/mach-omap2/emif-asm-offsets.h
>>> drivers/memory/ti-emif-asm-offsets.h
>>>
>>>
>>> If you want me to send a patch,
>>> I will give it a try.
>>
>> Or we try and find another way around this.
>>
>> The original idea was to start throwing platform specific (iow, stuff in
>> arch/arm/mach-omap2/) includes into arch/arm/kernel/asm-offsets.c.  I
>> objected to that, and suggested that the generic infrastructure for doing
>> the asm-offsets thing should be used to generate an architecture specific
>> header.
>>
>> Then it turns out that files in both arch/arm/mach-omap2 and drivers/memory
>> need these constants, and TI proposed the existing method.
>>
>> Obviously, all the right people reviewed it and approved it, which is why
>> it's now in mainline, but unfortunately it doesn't actually work, and
>> breaks my kernel builds!
>>
>
> A solution that I see is to allow pm-asm-offsets to just include the macros that
> would be defined by emif-asm-offsets in the header generated by pm-asm-offsets.
> This way there is no need to introduce the arch -> drivers build dependency that
> is causing our issue, each driver generates its own header with everything it
> needs included. I'll move the actual macro definitions for emif-asm-offsets.c
> into a header and then by including them in both emif-asm-offsets and
> pm-asm-offsets we get all macro definitions in both places with them still being
> defined only in one location.
>
> I've inlined the changes below. I will send a proper split up series if it's
> considered acceptable.
>
> Regards,
> Dave
>
> 8< ----------------------
> From 7350c7caa773d7235ddb21013bd039a16cb6d156 Mon Sep 17 00:00:00 2001
> From: Dave Gerlach <d-gerlach@ti.com>
> Date: Mon, 9 Apr 2018 10:56:59 -0500
> Subject: [PATCH] RFC: Fix build when using split object directories
>
> The sleep33xx and sleep43xx files should not depend on a header file
> generated in drivers/memory. Remove this dependency and instead generate
> the macros needed as part of pm-asm-offsets.c to avoid complicating the
> build.
>
> Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
> ---
>  arch/arm/mach-omap2/Makefile         |  7 +---
>  arch/arm/mach-omap2/pm-asm-offsets.c |  3 ++
>  arch/arm/mach-omap2/sleep33xx.S      |  1 -
>  arch/arm/mach-omap2/sleep43xx.S      |  1 -
>  drivers/memory/emif-asm-offsets.c    | 72 +---------------------------------
>  include/linux/ti-emif-sram.h         | 75 ++++++++++++++++++++++++++++++++++++
>  6 files changed, 81 insertions(+), 78 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
> index 4603c30fef73..1257810cdb80 100644
> --- a/arch/arm/mach-omap2/Makefile
> +++ b/arch/arm/mach-omap2/Makefile
> @@ -243,8 +243,5 @@ arch/arm/mach-omap2/pm-asm-offsets.s:
> arch/arm/mach-omap2/pm-asm-offsets.c
>  include/generated/ti-pm-asm-offsets.h: arch/arm/mach-omap2/pm-asm-offsets.s FORCE
>         $(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)
>
> -# For rule to generate ti-emif-asm-offsets.h dependency
> -include drivers/memory/Makefile.asm-offsets
> -
> -arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
> include/generated/ti-emif-asm-offsets.h
> -arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
> include/generated/ti-emif-asm-offsets.h
> +arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
> +arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h


Nit:
You are touching these two lines.
You can also describe it like this:

$(obj)/sleep33xx.o $(obj)/sleep43xx.o: include/generated/ti-pm-asm-offsets.h



I prefer putting the local header, ti-pm-asm-offsets.h,
into arch/arm/mach-omap2/, but that is a different issue.

So, I am fine with this.


Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>



-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
  2018-04-10 15:01               ` Masahiro Yamada
  (?)
@ 2018-04-11 21:17                 ` Dave Gerlach
  -1 siblings, 0 replies; 29+ messages in thread
From: Dave Gerlach @ 2018-04-11 21:17 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Russell King - ARM Linux, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, Linux Kbuild mailing list, Michal Marek,
	Linux-OMAP, arm-soc

Hi,
On 04/10/2018 10:01 AM, Masahiro Yamada wrote:
> 2018-04-10 1:05 GMT+09:00 Dave Gerlach <d-gerlach@ti.com>:
>> Hi,
>> On 04/07/2018 08:38 AM, Russell King - ARM Linux wrote:
>>> On Sat, Apr 07, 2018 at 11:55:22AM +0900, Masahiro Yamada wrote:
>>>> 2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
>>>>> On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
>>>>>> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
>>>>>>> * Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>>>>>>>> When building a kernel with split object directories, the following
>>>>>>>> failure occurs:
>>>>>>>>
>>>>>>>> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>>>>>>>> compilation terminated.
>>>>>>>> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>>>>>>>> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>>>>>>>> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>>>>>>>> make[1]: *** [arch/arm/mach-omap2] Error 2
>>>>>>>>
>>>>>>>> This prevents any kernel being built that includes decending into
>>>>>>>> arch/arm/mach-omap2 with split object directories.
>>>>>>>>
>>>>>>>> This is a regression.
>>>>>>>
>>>>>>> Dave, I presume you're looking into this already?
>>>>>>>
>>>>>> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
>>>>>> You are copied on the email Tony.
>>>>>
>>>>> Arnd also has a fix for it as well, which moves emif-asm-offsets.s
>>>>> into include/generated, as that will always exist prior to these
>>>>> rules being invoked.  Arnd's passing it through his randconfig
>>>>> builder before publishing it.
>>>>
>>>>
>>>> I do not like this idea.
>>>>
>>>> Not sure exactly what Arnd is trying to do,
>>>> but the same file should not be touched from multiple points
>>>> in case Kbuild descends into mach-omap2/ and memory/ at the same time.
>>>>
>>>>
>>>> I recommend to put copies in each directory:
>>>>
>>>> arch/arm/mach-omap2/emif-asm-offsets.h
>>>> drivers/memory/ti-emif-asm-offsets.h
>>>>
>>>>
>>>> If you want me to send a patch,
>>>> I will give it a try.
>>>
>>> Or we try and find another way around this.
>>>
>>> The original idea was to start throwing platform specific (iow, stuff in
>>> arch/arm/mach-omap2/) includes into arch/arm/kernel/asm-offsets.c.  I
>>> objected to that, and suggested that the generic infrastructure for doing
>>> the asm-offsets thing should be used to generate an architecture specific
>>> header.
>>>
>>> Then it turns out that files in both arch/arm/mach-omap2 and drivers/memory
>>> need these constants, and TI proposed the existing method.
>>>
>>> Obviously, all the right people reviewed it and approved it, which is why
>>> it's now in mainline, but unfortunately it doesn't actually work, and
>>> breaks my kernel builds!
>>>
>>
>> A solution that I see is to allow pm-asm-offsets to just include the macros that
>> would be defined by emif-asm-offsets in the header generated by pm-asm-offsets.
>> This way there is no need to introduce the arch -> drivers build dependency that
>> is causing our issue, each driver generates its own header with everything it
>> needs included. I'll move the actual macro definitions for emif-asm-offsets.c
>> into a header and then by including them in both emif-asm-offsets and
>> pm-asm-offsets we get all macro definitions in both places with them still being
>> defined only in one location.
>>
>> I've inlined the changes below. I will send a proper split up series if it's
>> considered acceptable.
>>
>> Regards,
>> Dave
>>
>> 8< ----------------------
>> From 7350c7caa773d7235ddb21013bd039a16cb6d156 Mon Sep 17 00:00:00 2001
>> From: Dave Gerlach <d-gerlach@ti.com>
>> Date: Mon, 9 Apr 2018 10:56:59 -0500
>> Subject: [PATCH] RFC: Fix build when using split object directories
>>
>> The sleep33xx and sleep43xx files should not depend on a header file
>> generated in drivers/memory. Remove this dependency and instead generate
>> the macros needed as part of pm-asm-offsets.c to avoid complicating the
>> build.
>>
>> Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
>> ---
>>  arch/arm/mach-omap2/Makefile         |  7 +---
>>  arch/arm/mach-omap2/pm-asm-offsets.c |  3 ++
>>  arch/arm/mach-omap2/sleep33xx.S      |  1 -
>>  arch/arm/mach-omap2/sleep43xx.S      |  1 -
>>  drivers/memory/emif-asm-offsets.c    | 72 +---------------------------------
>>  include/linux/ti-emif-sram.h         | 75 ++++++++++++++++++++++++++++++++++++
>>  6 files changed, 81 insertions(+), 78 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
>> index 4603c30fef73..1257810cdb80 100644
>> --- a/arch/arm/mach-omap2/Makefile
>> +++ b/arch/arm/mach-omap2/Makefile
>> @@ -243,8 +243,5 @@ arch/arm/mach-omap2/pm-asm-offsets.s:
>> arch/arm/mach-omap2/pm-asm-offsets.c
>>  include/generated/ti-pm-asm-offsets.h: arch/arm/mach-omap2/pm-asm-offsets.s FORCE
>>         $(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)
>>
>> -# For rule to generate ti-emif-asm-offsets.h dependency
>> -include drivers/memory/Makefile.asm-offsets
>> -
>> -arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
>> include/generated/ti-emif-asm-offsets.h
>> -arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
>> include/generated/ti-emif-asm-offsets.h
>> +arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
>> +arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
> 
> 
> Nit:
> You are touching these two lines.
> You can also describe it like this:
> 
> $(obj)/sleep33xx.o $(obj)/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
> 
> 
> 
> I prefer putting the local header, ti-pm-asm-offsets.h,
> into arch/arm/mach-omap2/, but that is a different issue.
> 
> So, I am fine with this.
> 
> 
> Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> 
> 
> 

Thanks, I have sent a patch with the nit above changed and slightly more info in
the commit message and added the Ack from Tony and Reviewed-by from above.

https://lkml.org/lkml/2018/4/11/1281

Regards,
Dave

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [BUG] Fix drivers/memory O= build
@ 2018-04-11 21:17                 ` Dave Gerlach
  0 siblings, 0 replies; 29+ messages in thread
From: Dave Gerlach @ 2018-04-11 21:17 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Michal Marek, arm-soc, Linux Kbuild mailing list, Tony Lindgren,
	Santosh Shilimkar, Russell King - ARM Linux, Linux-OMAP,
	linux-arm-kernel

Hi,
On 04/10/2018 10:01 AM, Masahiro Yamada wrote:
> 2018-04-10 1:05 GMT+09:00 Dave Gerlach <d-gerlach@ti.com>:
>> Hi,
>> On 04/07/2018 08:38 AM, Russell King - ARM Linux wrote:
>>> On Sat, Apr 07, 2018 at 11:55:22AM +0900, Masahiro Yamada wrote:
>>>> 2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
>>>>> On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
>>>>>> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
>>>>>>> * Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>>>>>>>> When building a kernel with split object directories, the following
>>>>>>>> failure occurs:
>>>>>>>>
>>>>>>>> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>>>>>>>> compilation terminated.
>>>>>>>> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>>>>>>>> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>>>>>>>> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>>>>>>>> make[1]: *** [arch/arm/mach-omap2] Error 2
>>>>>>>>
>>>>>>>> This prevents any kernel being built that includes decending into
>>>>>>>> arch/arm/mach-omap2 with split object directories.
>>>>>>>>
>>>>>>>> This is a regression.
>>>>>>>
>>>>>>> Dave, I presume you're looking into this already?
>>>>>>>
>>>>>> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
>>>>>> You are copied on the email Tony.
>>>>>
>>>>> Arnd also has a fix for it as well, which moves emif-asm-offsets.s
>>>>> into include/generated, as that will always exist prior to these
>>>>> rules being invoked.  Arnd's passing it through his randconfig
>>>>> builder before publishing it.
>>>>
>>>>
>>>> I do not like this idea.
>>>>
>>>> Not sure exactly what Arnd is trying to do,
>>>> but the same file should not be touched from multiple points
>>>> in case Kbuild descends into mach-omap2/ and memory/ at the same time.
>>>>
>>>>
>>>> I recommend to put copies in each directory:
>>>>
>>>> arch/arm/mach-omap2/emif-asm-offsets.h
>>>> drivers/memory/ti-emif-asm-offsets.h
>>>>
>>>>
>>>> If you want me to send a patch,
>>>> I will give it a try.
>>>
>>> Or we try and find another way around this.
>>>
>>> The original idea was to start throwing platform specific (iow, stuff in
>>> arch/arm/mach-omap2/) includes into arch/arm/kernel/asm-offsets.c.  I
>>> objected to that, and suggested that the generic infrastructure for doing
>>> the asm-offsets thing should be used to generate an architecture specific
>>> header.
>>>
>>> Then it turns out that files in both arch/arm/mach-omap2 and drivers/memory
>>> need these constants, and TI proposed the existing method.
>>>
>>> Obviously, all the right people reviewed it and approved it, which is why
>>> it's now in mainline, but unfortunately it doesn't actually work, and
>>> breaks my kernel builds!
>>>
>>
>> A solution that I see is to allow pm-asm-offsets to just include the macros that
>> would be defined by emif-asm-offsets in the header generated by pm-asm-offsets.
>> This way there is no need to introduce the arch -> drivers build dependency that
>> is causing our issue, each driver generates its own header with everything it
>> needs included. I'll move the actual macro definitions for emif-asm-offsets.c
>> into a header and then by including them in both emif-asm-offsets and
>> pm-asm-offsets we get all macro definitions in both places with them still being
>> defined only in one location.
>>
>> I've inlined the changes below. I will send a proper split up series if it's
>> considered acceptable.
>>
>> Regards,
>> Dave
>>
>> 8< ----------------------
>> From 7350c7caa773d7235ddb21013bd039a16cb6d156 Mon Sep 17 00:00:00 2001
>> From: Dave Gerlach <d-gerlach@ti.com>
>> Date: Mon, 9 Apr 2018 10:56:59 -0500
>> Subject: [PATCH] RFC: Fix build when using split object directories
>>
>> The sleep33xx and sleep43xx files should not depend on a header file
>> generated in drivers/memory. Remove this dependency and instead generate
>> the macros needed as part of pm-asm-offsets.c to avoid complicating the
>> build.
>>
>> Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
>> ---
>>  arch/arm/mach-omap2/Makefile         |  7 +---
>>  arch/arm/mach-omap2/pm-asm-offsets.c |  3 ++
>>  arch/arm/mach-omap2/sleep33xx.S      |  1 -
>>  arch/arm/mach-omap2/sleep43xx.S      |  1 -
>>  drivers/memory/emif-asm-offsets.c    | 72 +---------------------------------
>>  include/linux/ti-emif-sram.h         | 75 ++++++++++++++++++++++++++++++++++++
>>  6 files changed, 81 insertions(+), 78 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
>> index 4603c30fef73..1257810cdb80 100644
>> --- a/arch/arm/mach-omap2/Makefile
>> +++ b/arch/arm/mach-omap2/Makefile
>> @@ -243,8 +243,5 @@ arch/arm/mach-omap2/pm-asm-offsets.s:
>> arch/arm/mach-omap2/pm-asm-offsets.c
>>  include/generated/ti-pm-asm-offsets.h: arch/arm/mach-omap2/pm-asm-offsets.s FORCE
>>         $(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)
>>
>> -# For rule to generate ti-emif-asm-offsets.h dependency
>> -include drivers/memory/Makefile.asm-offsets
>> -
>> -arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
>> include/generated/ti-emif-asm-offsets.h
>> -arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
>> include/generated/ti-emif-asm-offsets.h
>> +arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
>> +arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
> 
> 
> Nit:
> You are touching these two lines.
> You can also describe it like this:
> 
> $(obj)/sleep33xx.o $(obj)/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
> 
> 
> 
> I prefer putting the local header, ti-pm-asm-offsets.h,
> into arch/arm/mach-omap2/, but that is a different issue.
> 
> So, I am fine with this.
> 
> 
> Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> 
> 
> 

Thanks, I have sent a patch with the nit above changed and slightly more info in
the commit message and added the Ack from Tony and Reviewed-by from above.

https://lkml.org/lkml/2018/4/11/1281

Regards,
Dave

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [BUG] Fix drivers/memory O= build
@ 2018-04-11 21:17                 ` Dave Gerlach
  0 siblings, 0 replies; 29+ messages in thread
From: Dave Gerlach @ 2018-04-11 21:17 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,
On 04/10/2018 10:01 AM, Masahiro Yamada wrote:
> 2018-04-10 1:05 GMT+09:00 Dave Gerlach <d-gerlach@ti.com>:
>> Hi,
>> On 04/07/2018 08:38 AM, Russell King - ARM Linux wrote:
>>> On Sat, Apr 07, 2018 at 11:55:22AM +0900, Masahiro Yamada wrote:
>>>> 2018-04-07 3:55 GMT+09:00 Russell King - ARM Linux <linux@armlinux.org.uk>:
>>>>> On Fri, Apr 06, 2018 at 11:45:01AM -0700, Santosh Shilimkar wrote:
>>>>>> On 4/6/2018 9:46 AM, Tony Lindgren wrote:
>>>>>>> * Russell King - ARM Linux <linux@armlinux.org.uk> [180406 03:27]:
>>>>>>>> When building a kernel with split object directories, the following
>>>>>>>> failure occurs:
>>>>>>>>
>>>>>>>> .../drivers/memory/emif-asm-offsets.c:1:0: fatal error: can't open drivers/memory/emif-asm-offsets.s for writing: No such file or directory
>>>>>>>> compilation terminated.
>>>>>>>> drivers/memory/Makefile.asm-offsets:2: recipe for target 'drivers/memory/emif-asm-offsets.s' failed
>>>>>>>> make[2]: *** [drivers/memory/emif-asm-offsets.s] Error 1
>>>>>>>> .../Makefile:1060: recipe for target 'arch/arm/mach-omap2' failed
>>>>>>>> make[1]: *** [arch/arm/mach-omap2] Error 2
>>>>>>>>
>>>>>>>> This prevents any kernel being built that includes decending into
>>>>>>>> arch/arm/mach-omap2 with split object directories.
>>>>>>>>
>>>>>>>> This is a regression.
>>>>>>>
>>>>>>> Dave, I presume you're looking into this already?
>>>>>>>
>>>>>> Fix is already posted by 'Anders Roxell <anders.roxell@linaro.org>'
>>>>>> You are copied on the email Tony.
>>>>>
>>>>> Arnd also has a fix for it as well, which moves emif-asm-offsets.s
>>>>> into include/generated, as that will always exist prior to these
>>>>> rules being invoked.  Arnd's passing it through his randconfig
>>>>> builder before publishing it.
>>>>
>>>>
>>>> I do not like this idea.
>>>>
>>>> Not sure exactly what Arnd is trying to do,
>>>> but the same file should not be touched from multiple points
>>>> in case Kbuild descends into mach-omap2/ and memory/ at the same time.
>>>>
>>>>
>>>> I recommend to put copies in each directory:
>>>>
>>>> arch/arm/mach-omap2/emif-asm-offsets.h
>>>> drivers/memory/ti-emif-asm-offsets.h
>>>>
>>>>
>>>> If you want me to send a patch,
>>>> I will give it a try.
>>>
>>> Or we try and find another way around this.
>>>
>>> The original idea was to start throwing platform specific (iow, stuff in
>>> arch/arm/mach-omap2/) includes into arch/arm/kernel/asm-offsets.c.  I
>>> objected to that, and suggested that the generic infrastructure for doing
>>> the asm-offsets thing should be used to generate an architecture specific
>>> header.
>>>
>>> Then it turns out that files in both arch/arm/mach-omap2 and drivers/memory
>>> need these constants, and TI proposed the existing method.
>>>
>>> Obviously, all the right people reviewed it and approved it, which is why
>>> it's now in mainline, but unfortunately it doesn't actually work, and
>>> breaks my kernel builds!
>>>
>>
>> A solution that I see is to allow pm-asm-offsets to just include the macros that
>> would be defined by emif-asm-offsets in the header generated by pm-asm-offsets.
>> This way there is no need to introduce the arch -> drivers build dependency that
>> is causing our issue, each driver generates its own header with everything it
>> needs included. I'll move the actual macro definitions for emif-asm-offsets.c
>> into a header and then by including them in both emif-asm-offsets and
>> pm-asm-offsets we get all macro definitions in both places with them still being
>> defined only in one location.
>>
>> I've inlined the changes below. I will send a proper split up series if it's
>> considered acceptable.
>>
>> Regards,
>> Dave
>>
>> 8< ----------------------
>> From 7350c7caa773d7235ddb21013bd039a16cb6d156 Mon Sep 17 00:00:00 2001
>> From: Dave Gerlach <d-gerlach@ti.com>
>> Date: Mon, 9 Apr 2018 10:56:59 -0500
>> Subject: [PATCH] RFC: Fix build when using split object directories
>>
>> The sleep33xx and sleep43xx files should not depend on a header file
>> generated in drivers/memory. Remove this dependency and instead generate
>> the macros needed as part of pm-asm-offsets.c to avoid complicating the
>> build.
>>
>> Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
>> ---
>>  arch/arm/mach-omap2/Makefile         |  7 +---
>>  arch/arm/mach-omap2/pm-asm-offsets.c |  3 ++
>>  arch/arm/mach-omap2/sleep33xx.S      |  1 -
>>  arch/arm/mach-omap2/sleep43xx.S      |  1 -
>>  drivers/memory/emif-asm-offsets.c    | 72 +---------------------------------
>>  include/linux/ti-emif-sram.h         | 75 ++++++++++++++++++++++++++++++++++++
>>  6 files changed, 81 insertions(+), 78 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
>> index 4603c30fef73..1257810cdb80 100644
>> --- a/arch/arm/mach-omap2/Makefile
>> +++ b/arch/arm/mach-omap2/Makefile
>> @@ -243,8 +243,5 @@ arch/arm/mach-omap2/pm-asm-offsets.s:
>> arch/arm/mach-omap2/pm-asm-offsets.c
>>  include/generated/ti-pm-asm-offsets.h: arch/arm/mach-omap2/pm-asm-offsets.s FORCE
>>         $(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)
>>
>> -# For rule to generate ti-emif-asm-offsets.h dependency
>> -include drivers/memory/Makefile.asm-offsets
>> -
>> -arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
>> include/generated/ti-emif-asm-offsets.h
>> -arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
>> include/generated/ti-emif-asm-offsets.h
>> +arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h
>> +arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
> 
> 
> Nit:
> You are touching these two lines.
> You can also describe it like this:
> 
> $(obj)/sleep33xx.o $(obj)/sleep43xx.o: include/generated/ti-pm-asm-offsets.h
> 
> 
> 
> I prefer putting the local header, ti-pm-asm-offsets.h,
> into arch/arm/mach-omap2/, but that is a different issue.
> 
> So, I am fine with this.
> 
> 
> Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> 
> 
> 

Thanks, I have sent a patch with the nit above changed and slightly more info in
the commit message and added the Ack from Tony and Reviewed-by from above.

https://lkml.org/lkml/2018/4/11/1281

Regards,
Dave

^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2018-04-11 21:18 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-06 10:25 [BUG] Fix drivers/memory O= build Russell King - ARM Linux
2018-04-06 10:25 ` Russell King - ARM Linux
2018-04-06 16:46 ` Tony Lindgren
2018-04-06 16:46   ` Tony Lindgren
2018-04-06 16:46   ` Tony Lindgren
2018-04-06 18:45   ` Santosh Shilimkar
2018-04-06 18:45     ` Santosh Shilimkar
2018-04-06 18:45     ` Santosh Shilimkar
2018-04-06 18:55     ` Russell King - ARM Linux
2018-04-06 18:55       ` Russell King - ARM Linux
2018-04-06 18:55       ` Russell King - ARM Linux
2018-04-07  2:55       ` Masahiro Yamada
2018-04-07  2:55         ` Masahiro Yamada
2018-04-07  2:55         ` Masahiro Yamada
2018-04-07 13:38         ` Russell King - ARM Linux
2018-04-07 13:38           ` Russell King - ARM Linux
2018-04-07 13:38           ` Russell King - ARM Linux
2018-04-09 16:05           ` Dave Gerlach
2018-04-09 16:05             ` Dave Gerlach
2018-04-09 16:05             ` Dave Gerlach
2018-04-10 13:55             ` Tony Lindgren
2018-04-10 13:55               ` Tony Lindgren
2018-04-10 13:55               ` Tony Lindgren
2018-04-10 15:01             ` Masahiro Yamada
2018-04-10 15:01               ` Masahiro Yamada
2018-04-10 15:01               ` Masahiro Yamada
2018-04-11 21:17               ` Dave Gerlach
2018-04-11 21:17                 ` Dave Gerlach
2018-04-11 21:17                 ` Dave Gerlach

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.