linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* Building kernel for more than one SoC
@ 2014-07-31 13:59 Grant Edwards
  2014-07-31 21:07 ` Thomas Petazzoni
  2014-08-04 20:17 ` Russell King - ARM Linux
  0 siblings, 2 replies; 16+ messages in thread
From: Grant Edwards @ 2014-07-31 13:59 UTC (permalink / raw)
  To: linux-arm-kernel

I'm told that it should be possible to build a kernel that will run on
two different SoC chips.  They're closely related (same ARM9 core,
many identical internal peripherals -- AT91SAM9G20 and 'G25), and
would likely have identical external hardware.

In order to handle the internal periphals that differ, it was
recommended that I use loadable modules to keep the kernel size small.
However, my root filesystem is in RAM, so I don't see how loadable
modules helps unless I remove all of the .ko files from the root
filesystem after the kernel has booted.

It seems it would be simpler to just link in all required drivers for
both chips and discard the ones that aren't needed after kernel
initialization. But, I'm not sure if there's a mechanism for doing
that.  I know there's a way to declare a function or data that will be
discarded after kernel init, but is ther a way to that conditionally
depending on probed hardware or the device-tree used at boot-time?

-- 
Grant Edwards               grant.b.edwards        Yow! Let me do my TRIBUTE
                                  at               to FISHNET STOCKINGS ...
                              gmail.com            

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

* Building kernel for more than one SoC
  2014-07-31 13:59 Building kernel for more than one SoC Grant Edwards
@ 2014-07-31 21:07 ` Thomas Petazzoni
  2014-08-04 19:11   ` Grant Edwards
  2014-08-04 20:17 ` Russell King - ARM Linux
  1 sibling, 1 reply; 16+ messages in thread
From: Thomas Petazzoni @ 2014-07-31 21:07 UTC (permalink / raw)
  To: linux-arm-kernel

Dear Grant Edwards,

(Adding Boris and Alexandre in Cc, since they do a lot of AT91 stuff
these days.)

On Thu, 31 Jul 2014 13:59:36 +0000 (UTC), Grant Edwards wrote:

> I'm told that it should be possible to build a kernel that will run on
> two different SoC chips.  They're closely related (same ARM9 core,
> many identical internal peripherals -- AT91SAM9G20 and 'G25), and
> would likely have identical external hardware.
> 
> In order to handle the internal periphals that differ, it was
> recommended that I use loadable modules to keep the kernel size small.
> However, my root filesystem is in RAM, so I don't see how loadable
> modules helps unless I remove all of the .ko files from the root
> filesystem after the kernel has booted.
> 
> It seems it would be simpler to just link in all required drivers for
> both chips and discard the ones that aren't needed after kernel
> initialization. But, I'm not sure if there's a mechanism for doing
> that.  I know there's a way to declare a function or data that will be
> discarded after kernel init, but is ther a way to that conditionally
> depending on probed hardware or the device-tree used at boot-time?

I don't think there's much point in worrying about this: the 9G20 and
9G25 will use identical device drivers for the vast majority of the
hardware blocks of the SoC, so the overhead of having the drivers for
both SoCs inside the same kernel is going to be really low.

Make a test, a build a kernel only for 9G20, another only for 9G25, and
another with both.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

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

* Building kernel for more than one SoC
  2014-07-31 21:07 ` Thomas Petazzoni
@ 2014-08-04 19:11   ` Grant Edwards
  0 siblings, 0 replies; 16+ messages in thread
From: Grant Edwards @ 2014-08-04 19:11 UTC (permalink / raw)
  To: linux-arm-kernel

On 2014-07-31, Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote:

> I don't think there's much point in worrying about this: the 9G20 and
> 9G25 will use identical device drivers for the vast majority of the
> hardware blocks of the SoC,

Really identical drivers, or just compiled from the same source file?
One thing I'm worried about is that they might share a driver that has
code conditionally compiled one way for the G20 and the other for the
G25.  I haven't _found_ any code like that yet, but it would be a pain
to have to deal with something like that...

-- 
Grant Edwards               grant.b.edwards        Yow! I want to dress you
                                  at               up as TALLULAH BANKHEAD and
                              gmail.com            cover you with VASELINE and
                                                   WHEAT THINS ...

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

* Building kernel for more than one SoC
  2014-07-31 13:59 Building kernel for more than one SoC Grant Edwards
  2014-07-31 21:07 ` Thomas Petazzoni
@ 2014-08-04 20:17 ` Russell King - ARM Linux
  2014-08-11 15:42   ` Nicolas Ferre
  1 sibling, 1 reply; 16+ messages in thread
From: Russell King - ARM Linux @ 2014-08-04 20:17 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Jul 31, 2014 at 01:59:36PM +0000, Grant Edwards wrote:
> I'm told that it should be possible to build a kernel that will run on
> two different SoC chips.  They're closely related (same ARM9 core,
> many identical internal peripherals -- AT91SAM9G20 and 'G25), and
> would likely have identical external hardware.
> 
> In order to handle the internal periphals that differ, it was
> recommended that I use loadable modules to keep the kernel size small.
> However, my root filesystem is in RAM, so I don't see how loadable
> modules helps unless I remove all of the .ko files from the root
> filesystem after the kernel has booted.

I think whoever made that recommendation probably isn't aware of the
direction that mainline kernels are heading.

Where we're going with mainline kernels is to have a set of drivers
which work irrespective of the hardware you have.

We've actually had this policy for about the last decade - we've
supported building the same family of SoCs into one single kernel
(identified by their mach-* directory) and expecting that their
drivers will cope with the differences between the SoCs at runtime.
(Note that the CPU itself has never really come into it; we've had
good abstractions for the CPU support since the late 90's, with the
exception of a borderline between the ARMv5 and ARMv6 architectures.)

Whether the Atmel code does that or not, I don't know, but it _should_
do it.

Over the last few years, we've been moving mainline towards even
tighter integration, where it's possible to build completely
dissimilar SoCs together, so ultimately we end up with: legacy kernels,
one multi-platform ARMv5 and earlier kernel, and one multi-platform
ARMv6 and later kernel.

> It seems it would be simpler to just link in all required drivers for
> both chips and discard the ones that aren't needed after kernel
> initialization.

Even better is to abstract the differences and have the same driver
code deal with the different variants internally - the selection of
which variant being controlled via the device tree "compatible"
property, or another appropriate method.

-- 
FTTC broadband for 0.8mile line: currently at 9.5Mbps down 400kbps up
according to speedtest.net.

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

* Building kernel for more than one SoC
  2014-08-04 20:17 ` Russell King - ARM Linux
@ 2014-08-11 15:42   ` Nicolas Ferre
  2014-08-11 15:47     ` Grant Edwards
  0 siblings, 1 reply; 16+ messages in thread
From: Nicolas Ferre @ 2014-08-11 15:42 UTC (permalink / raw)
  To: linux-arm-kernel

On 04/08/2014 22:17, Russell King - ARM Linux :
> On Thu, Jul 31, 2014 at 01:59:36PM +0000, Grant Edwards wrote:
>> I'm told that it should be possible to build a kernel that will run on
>> two different SoC chips.  They're closely related (same ARM9 core,
>> many identical internal peripherals -- AT91SAM9G20 and 'G25), and
>> would likely have identical external hardware.
>>
>> In order to handle the internal periphals that differ, it was
>> recommended that I use loadable modules to keep the kernel size small.
>> However, my root filesystem is in RAM, so I don't see how loadable
>> modules helps unless I remove all of the .ko files from the root
>> filesystem after the kernel has booted.
> 
> I think whoever made that recommendation probably isn't aware of the
> direction that mainline kernels are heading.
> 
> Where we're going with mainline kernels is to have a set of drivers
> which work irrespective of the hardware you have.
> 
> We've actually had this policy for about the last decade - we've
> supported building the same family of SoCs into one single kernel
> (identified by their mach-* directory) and expecting that their
> drivers will cope with the differences between the SoCs at runtime.
> (Note that the CPU itself has never really come into it; we've had
> good abstractions for the CPU support since the late 90's, with the
> exception of a borderline between the ARMv5 and ARMv6 architectures.)
> 
> Whether the Atmel code does that or not, I don't know, but it _should_
> do it.

Absolutely, we do follow this policy for quite some time. So anything
that prevents what Russell describes above should be considered as a bug ;-)

> Over the last few years, we've been moving mainline towards even
> tighter integration, where it's possible to build completely
> dissimilar SoCs together, so ultimately we end up with: legacy kernels,
> one multi-platform ARMv5 and earlier kernel, and one multi-platform
> ARMv6 and later kernel.

We are almost at the point where we can have a multi-platform ARMv6/7
for sama5 SoCs and ARMv5 for our ARM9s.

>> It seems it would be simpler to just link in all required drivers for
>> both chips and discard the ones that aren't needed after kernel
>> initialization.
> 
> Even better is to abstract the differences and have the same driver
> code deal with the different variants internally - the selection of
> which variant being controlled via the device tree "compatible"
> property, or another appropriate method.

Sure. Everything in at91 is converted to device tree those days.

Best regards,
-- 
Nicolas Ferre

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

* Building kernel for more than one SoC
  2014-08-11 15:42   ` Nicolas Ferre
@ 2014-08-11 15:47     ` Grant Edwards
  2014-08-11 16:12       ` Robert Nelson
  0 siblings, 1 reply; 16+ messages in thread
From: Grant Edwards @ 2014-08-11 15:47 UTC (permalink / raw)
  To: linux-arm-kernel

On 2014-08-11, Nicolas Ferre <nicolas.ferre@atmel.com> wrote:
> On 04/08/2014 22:17, Russell King - ARM Linux :

[...]

>> Even better is to abstract the differences and have the same driver
>> code deal with the different variants internally - the selection of
>> which variant being controlled via the device tree "compatible"
>> property, or another appropriate method.
>
> Sure. Everything in at91 is converted to device tree those days.

That's good to hear, thanks.

Now it's up to somebody else to decide if the price difference between
a G20 and G25 is worth the engineering time to upgrade U-Boot and
Linux kernel to versions that know about device trees...

-- 
Grant Edwards               grant.b.edwards        Yow! I smell a RANCID
                                  at               CORN DOG!
                              gmail.com            

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

* Building kernel for more than one SoC
  2014-08-11 15:47     ` Grant Edwards
@ 2014-08-11 16:12       ` Robert Nelson
  2014-08-11 20:43         ` Grant Edwards
  0 siblings, 1 reply; 16+ messages in thread
From: Robert Nelson @ 2014-08-11 16:12 UTC (permalink / raw)
  To: linux-arm-kernel

> Now it's up to somebody else to decide if the price difference between
> a G20 and G25 is worth the engineering time to upgrade U-Boot and
> Linux kernel to versions that know about device trees...

http://cateee.net/lkddb/web-lkddb/ARM_APPENDED_DTB.html

Regards,

-- 
Robert Nelson
http://www.rcn-ee.com/

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

* Building kernel for more than one SoC
  2014-08-11 16:12       ` Robert Nelson
@ 2014-08-11 20:43         ` Grant Edwards
  2014-08-11 20:59           ` Russell King - ARM Linux
  0 siblings, 1 reply; 16+ messages in thread
From: Grant Edwards @ 2014-08-11 20:43 UTC (permalink / raw)
  To: linux-arm-kernel

On 2014-08-11, Robert Nelson <robertcnelson@gmail.com> wrote:
>> Now it's up to somebody else to decide if the price difference between
>> a G20 and G25 is worth the engineering time to upgrade U-Boot and
>> Linux kernel to versions that know about device trees...
>
> http://cateee.net/lkddb/web-lkddb/ARM_APPENDED_DTB.html

Interesting.  That would still require modifying U-Boot so that at
run-time it detects the SoC type and appends the proper DTB to the
kernel image, but it that may be less work than "real" DTB support in
U-Boot.

-- 
Grant Edwards               grant.b.edwards        Yow! Now KEN and BARBIE
                                  at               are PERMANENTLY ADDICTED to
                              gmail.com            MIND-ALTERING DRUGS ...

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

* Building kernel for more than one SoC
  2014-08-11 20:43         ` Grant Edwards
@ 2014-08-11 20:59           ` Russell King - ARM Linux
  2014-08-11 21:15             ` Grant Edwards
  0 siblings, 1 reply; 16+ messages in thread
From: Russell King - ARM Linux @ 2014-08-11 20:59 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Aug 11, 2014 at 08:43:35PM +0000, Grant Edwards wrote:
> On 2014-08-11, Robert Nelson <robertcnelson@gmail.com> wrote:
> >> Now it's up to somebody else to decide if the price difference between
> >> a G20 and G25 is worth the engineering time to upgrade U-Boot and
> >> Linux kernel to versions that know about device trees...
> >
> > http://cateee.net/lkddb/web-lkddb/ARM_APPENDED_DTB.html
> 
> Interesting.  That would still require modifying U-Boot so that at
> run-time it detects the SoC type and appends the proper DTB to the
> kernel image, but it that may be less work than "real" DTB support in
> U-Boot.

The idea of that feature is:

- You take the kernel zImage
- You take the appropriate dtb file
- You concatenate the dtb file into the zImage
- You run mkimage on the resulting combined image to create the special
  uboot format file for uboot to load
- You use it with uboot as you have done in the past with non-DT kernels.

-- 
FTTC broadband for 0.8mile line: currently at 9.5Mbps down 400kbps up
according to speedtest.net.

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

* Building kernel for more than one SoC
  2014-08-11 20:59           ` Russell King - ARM Linux
@ 2014-08-11 21:15             ` Grant Edwards
  2014-08-11 21:38               ` Robert Nelson
  2014-08-11 22:43               ` Russell King - ARM Linux
  0 siblings, 2 replies; 16+ messages in thread
From: Grant Edwards @ 2014-08-11 21:15 UTC (permalink / raw)
  To: linux-arm-kernel

On 2014-08-11, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
> On Mon, Aug 11, 2014 at 08:43:35PM +0000, Grant Edwards wrote:
>> On 2014-08-11, Robert Nelson <robertcnelson@gmail.com> wrote:
>> >> Now it's up to somebody else to decide if the price difference between
>> >> a G20 and G25 is worth the engineering time to upgrade U-Boot and
>> >> Linux kernel to versions that know about device trees...
>> >
>> > http://cateee.net/lkddb/web-lkddb/ARM_APPENDED_DTB.html
>> 
>> Interesting.  That would still require modifying U-Boot so that at
>> run-time it detects the SoC type and appends the proper DTB to the
>> kernel image, but it that may be less work than "real" DTB support in
>> U-Boot.
>
> The idea of that feature is:
>
> - You take the kernel zImage
> - You take the appropriate dtb file
> - You concatenate the dtb file into the zImage
> - You run mkimage on the resulting combined image to create the special
>   uboot format file for uboot to load

The problem is now you've got a kernel image that won't run on both
the '9g20 and the '9g25.  The requirement is to have a kernel image
that will run on either.

> - You use it with uboot as you have done in the past with non-DT
>   kernels.

Logistically, there's little difference between that and compiling the
kernel twice.  It's more elegant than compiling the kernel twice, but 
in the end it requires the maintenance of two separate kernel images
and some way for customers to figure out which one they should
download (and no matter what you do, when given a choice between two
files, they will download and attempt to install the wrong one more
than half of the time).

-- 
Grant Edwards               grant.b.edwards        Yow! As President I have
                                  at               to go vacuum my coin
                              gmail.com            collection!

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

* Building kernel for more than one SoC
  2014-08-11 21:15             ` Grant Edwards
@ 2014-08-11 21:38               ` Robert Nelson
  2014-08-11 21:57                 ` Grant Edwards
  2014-08-11 22:43               ` Russell King - ARM Linux
  1 sibling, 1 reply; 16+ messages in thread
From: Robert Nelson @ 2014-08-11 21:38 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Aug 11, 2014 at 4:15 PM, Grant Edwards
<grant.b.edwards@gmail.com> wrote:
> On 2014-08-11, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
>> On Mon, Aug 11, 2014 at 08:43:35PM +0000, Grant Edwards wrote:
>>> On 2014-08-11, Robert Nelson <robertcnelson@gmail.com> wrote:
>>> >> Now it's up to somebody else to decide if the price difference between
>>> >> a G20 and G25 is worth the engineering time to upgrade U-Boot and
>>> >> Linux kernel to versions that know about device trees...
>>> >
>>> > http://cateee.net/lkddb/web-lkddb/ARM_APPENDED_DTB.html
>>>
>>> Interesting.  That would still require modifying U-Boot so that at
>>> run-time it detects the SoC type and appends the proper DTB to the
>>> kernel image, but it that may be less work than "real" DTB support in
>>> U-Boot.
>>
>> The idea of that feature is:
>>
>> - You take the kernel zImage
>> - You take the appropriate dtb file
>> - You concatenate the dtb file into the zImage
>> - You run mkimage on the resulting combined image to create the special
>>   uboot format file for uboot to load
>
> The problem is now you've got a kernel image that won't run on both
> the '9g20 and the '9g25.  The requirement is to have a kernel image
> that will run on either.

Then, upgrade your u-boot to mainline, use the dtb, etc.  You have a
lot of excuses. ;)

Regards,

-- 
Robert Nelson
http://www.rcn-ee.com/

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

* Building kernel for more than one SoC
  2014-08-11 21:38               ` Robert Nelson
@ 2014-08-11 21:57                 ` Grant Edwards
  0 siblings, 0 replies; 16+ messages in thread
From: Grant Edwards @ 2014-08-11 21:57 UTC (permalink / raw)
  To: linux-arm-kernel

On 2014-08-11, Robert Nelson <robertcnelson@gmail.com> wrote:
> On Mon, Aug 11, 2014 at 4:15 PM, Grant Edwards
><grant.b.edwards@gmail.com> wrote:
>> On 2014-08-11, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
>>> On Mon, Aug 11, 2014 at 08:43:35PM +0000, Grant Edwards wrote:
>>>> On 2014-08-11, Robert Nelson <robertcnelson@gmail.com> wrote:
>>>> >> Now it's up to somebody else to decide if the price difference between
>>>> >> a G20 and G25 is worth the engineering time to upgrade U-Boot and
>>>> >> Linux kernel to versions that know about device trees...
>>>> >
>>>> > http://cateee.net/lkddb/web-lkddb/ARM_APPENDED_DTB.html
>>>>
>>>> Interesting.  That would still require modifying U-Boot so that at
>>>> run-time it detects the SoC type and appends the proper DTB to the
>>>> kernel image, but it that may be less work than "real" DTB support in
>>>> U-Boot.
>>>
>>> The idea of that feature is:
>>>
>>> - You take the kernel zImage
>>> - You take the appropriate dtb file
>>> - You concatenate the dtb file into the zImage
>>> - You run mkimage on the resulting combined image to create the special
>>>   uboot format file for uboot to load
>>
>> The problem is now you've got a kernel image that won't run on both
>> the '9g20 and the '9g25.  The requirement is to have a kernel image
>> that will run on either.
>
> Then, upgrade your u-boot to mainline, use the dtb, etc.  You have a
> lot of excuses. ;)

Yep. Unfortunately, excuses aren't the problem.  Cost (mostly
opportunity cost) is the problem...

-- 
Grant Edwards               grant.b.edwards        Yow! Is it NOUVELLE
                                  at               CUISINE when 3 olives are
                              gmail.com            struggling with a scallop
                                                   in a plate of SAUCE MORNAY?

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

* Building kernel for more than one SoC
  2014-08-11 21:15             ` Grant Edwards
  2014-08-11 21:38               ` Robert Nelson
@ 2014-08-11 22:43               ` Russell King - ARM Linux
  2014-08-11 23:02                 ` Grant Edwards
  2014-08-12  3:52                 ` Olof Johansson
  1 sibling, 2 replies; 16+ messages in thread
From: Russell King - ARM Linux @ 2014-08-11 22:43 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Aug 11, 2014 at 09:15:22PM +0000, Grant Edwards wrote:
> On 2014-08-11, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
> > On Mon, Aug 11, 2014 at 08:43:35PM +0000, Grant Edwards wrote:
> >> On 2014-08-11, Robert Nelson <robertcnelson@gmail.com> wrote:
> >> >> Now it's up to somebody else to decide if the price difference between
> >> >> a G20 and G25 is worth the engineering time to upgrade U-Boot and
> >> >> Linux kernel to versions that know about device trees...
> >> >
> >> > http://cateee.net/lkddb/web-lkddb/ARM_APPENDED_DTB.html
> >> 
> >> Interesting.  That would still require modifying U-Boot so that at
> >> run-time it detects the SoC type and appends the proper DTB to the
> >> kernel image, but it that may be less work than "real" DTB support in
> >> U-Boot.
> >
> > The idea of that feature is:
> >
> > - You take the kernel zImage
> > - You take the appropriate dtb file
> > - You concatenate the dtb file into the zImage
> > - You run mkimage on the resulting combined image to create the special
> >   uboot format file for uboot to load
> 
> The problem is now you've got a kernel image that won't run on both
> the '9g20 and the '9g25.  The requirement is to have a kernel image
> that will run on either.

It depends what you call a kernel image.

As far as I'm concerned (and as I've been concerned from day one of uboot
coming into ARM), the kernel image is the zImage, not the crap that uboot
decides to dictate that you must provide for it to use.

I've been pretty clear over the years that I utterly despise uboot's
custom format - and you're starting to find out why.  Welcome to the
inflexibility has caused. :)

> > - You use it with uboot as you have done in the past with non-DT
> >   kernels.
> 
> Logistically, there's little difference between that and compiling the
> kernel twice.  It's more elegant than compiling the kernel twice, but 
> in the end it requires the maintenance of two separate kernel images
> and some way for customers to figure out which one they should
> download (and no matter what you do, when given a choice between two
> files, they will download and attempt to install the wrong one more
> than half of the time).

While you have a point there, that's a choice of how you do your kernel
upgrades.

If you supply a zImage, all the dtbs, a script which does the
programming of the kernel onto the target, and a copy of mkimage, then
you can do all the steps I've highlighted above on the target - without
the customer even having to know what platform they're on, because your
script can work it out.

If you don't have a shell on the target, then write a C program to do it
instead.

There's plenty of workarounds possible for the old uboot dilemma...

-- 
FTTC broadband for 0.8mile line: currently at 9.5Mbps down 400kbps up
according to speedtest.net.

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

* Building kernel for more than one SoC
  2014-08-11 22:43               ` Russell King - ARM Linux
@ 2014-08-11 23:02                 ` Grant Edwards
  2014-08-14  1:12                   ` Tomasz Figa
  2014-08-12  3:52                 ` Olof Johansson
  1 sibling, 1 reply; 16+ messages in thread
From: Grant Edwards @ 2014-08-11 23:02 UTC (permalink / raw)
  To: linux-arm-kernel

On 2014-08-11, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
>
>> The problem is now you've got a kernel image that won't run on both
>> the '9g20 and the '9g25.  The requirement is to have a kernel image
>> that will run on either.
>
> It depends what you call a kernel image.
>
> As far as I'm concerned (and as I've been concerned from day one of uboot
> coming into ARM), the kernel image is the zImage, not the crap that uboot
> decides to dictate that you must provide for it to use.
>
> I've been pretty clear over the years that I utterly despise uboot's
> custom format - and you're starting to find out why.  Welcome to the
> inflexibility has caused. :)

Yea, I've got my own issues with U-Boot, but that's a whole 'nother
thread.  In the end, it was a lot less painful to put up with U-Boot's
issues than it was to write/port something else.

> While you have a point there, that's a choice of how you do your
> kernel upgrades.
>
> If you supply a zImage, all the dtbs, a script which does the
> programming of the kernel onto the target, and a copy of mkimage,
> then you can do all the steps I've highlighted above on the target -
> without the customer even having to know what platform they're on,
> because your script can work it out.

Good point.

> There's plenty of workarounds possible for the old uboot dilemma...

Definitely.  It all comes to do trying to figure out when the
work-arounds add up to more work than doing it the "right" way and
upgrading everything.

-- 
Grant Edwards               grant.b.edwards        Yow! All of life is a blur
                                  at               of Republicans and meat!
                              gmail.com            

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

* Building kernel for more than one SoC
  2014-08-11 22:43               ` Russell King - ARM Linux
  2014-08-11 23:02                 ` Grant Edwards
@ 2014-08-12  3:52                 ` Olof Johansson
  1 sibling, 0 replies; 16+ messages in thread
From: Olof Johansson @ 2014-08-12  3:52 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Aug 11, 2014 at 3:43 PM, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
> On Mon, Aug 11, 2014 at 09:15:22PM +0000, Grant Edwards wrote:
>> On 2014-08-11, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
>> > On Mon, Aug 11, 2014 at 08:43:35PM +0000, Grant Edwards wrote:
>> >> On 2014-08-11, Robert Nelson <robertcnelson@gmail.com> wrote:
>> >> >> Now it's up to somebody else to decide if the price difference between
>> >> >> a G20 and G25 is worth the engineering time to upgrade U-Boot and
>> >> >> Linux kernel to versions that know about device trees...
>> >> >
>> >> > http://cateee.net/lkddb/web-lkddb/ARM_APPENDED_DTB.html
>> >>
>> >> Interesting.  That would still require modifying U-Boot so that at
>> >> run-time it detects the SoC type and appends the proper DTB to the
>> >> kernel image, but it that may be less work than "real" DTB support in
>> >> U-Boot.
>> >
>> > The idea of that feature is:
>> >
>> > - You take the kernel zImage
>> > - You take the appropriate dtb file
>> > - You concatenate the dtb file into the zImage
>> > - You run mkimage on the resulting combined image to create the special
>> >   uboot format file for uboot to load
>>
>> The problem is now you've got a kernel image that won't run on both
>> the '9g20 and the '9g25.  The requirement is to have a kernel image
>> that will run on either.
>
> It depends what you call a kernel image.
>
> As far as I'm concerned (and as I've been concerned from day one of uboot
> coming into ARM), the kernel image is the zImage, not the crap that uboot
> decides to dictate that you must provide for it to use.
>
> I've been pretty clear over the years that I utterly despise uboot's
> custom format - and you're starting to find out why.  Welcome to the
> inflexibility has caused. :)

Note that u-boot grew a "bootz" command in recent year(s). It'll boot
just a raw zImage instead of the mkimage-wrapped version.

Of course, not all u-boots have it due to age of the vendor fork. I
also have a board that tries to boot a zImage with the 'bootm' command
instead. Yes, you heard that right. Sigh.


-Olof

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

* Building kernel for more than one SoC
  2014-08-11 23:02                 ` Grant Edwards
@ 2014-08-14  1:12                   ` Tomasz Figa
  0 siblings, 0 replies; 16+ messages in thread
From: Tomasz Figa @ 2014-08-14  1:12 UTC (permalink / raw)
  To: linux-arm-kernel

On 12.08.2014 01:02, Grant Edwards wrote:
> On 2014-08-11, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
>>
>>> The problem is now you've got a kernel image that won't run on both
>>> the '9g20 and the '9g25.  The requirement is to have a kernel image
>>> that will run on either.
>>
>> It depends what you call a kernel image.
>>
>> As far as I'm concerned (and as I've been concerned from day one of uboot
>> coming into ARM), the kernel image is the zImage, not the crap that uboot
>> decides to dictate that you must provide for it to use.
>>
>> I've been pretty clear over the years that I utterly despise uboot's
>> custom format - and you're starting to find out why.  Welcome to the
>> inflexibility has caused. :)
> 
> Yea, I've got my own issues with U-Boot, but that's a whole 'nother
> thread.  In the end, it was a lot less painful to put up with U-Boot's
> issues than it was to write/port something else.
> 
>> While you have a point there, that's a choice of how you do your
>> kernel upgrades.
>>
>> If you supply a zImage, all the dtbs, a script which does the
>> programming of the kernel onto the target, and a copy of mkimage,
>> then you can do all the steps I've highlighted above on the target -
>> without the customer even having to know what platform they're on,
>> because your script can work it out.
> 
> Good point.
> 
>> There's plenty of workarounds possible for the old uboot dilemma...
> 
> Definitely.  It all comes to do trying to figure out when the
> work-arounds add up to more work than doing it the "right" way and
> upgrading everything.
> 

Is this maybe what you're looking for?

https://github.com/zonque/pxa-impedance-matcher

Best regards,
Tomasz

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

end of thread, other threads:[~2014-08-14  1:12 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-31 13:59 Building kernel for more than one SoC Grant Edwards
2014-07-31 21:07 ` Thomas Petazzoni
2014-08-04 19:11   ` Grant Edwards
2014-08-04 20:17 ` Russell King - ARM Linux
2014-08-11 15:42   ` Nicolas Ferre
2014-08-11 15:47     ` Grant Edwards
2014-08-11 16:12       ` Robert Nelson
2014-08-11 20:43         ` Grant Edwards
2014-08-11 20:59           ` Russell King - ARM Linux
2014-08-11 21:15             ` Grant Edwards
2014-08-11 21:38               ` Robert Nelson
2014-08-11 21:57                 ` Grant Edwards
2014-08-11 22:43               ` Russell King - ARM Linux
2014-08-11 23:02                 ` Grant Edwards
2014-08-14  1:12                   ` Tomasz Figa
2014-08-12  3:52                 ` Olof Johansson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).