public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: Felipe Balbi <balbi@ti.com>
Cc: Greg KH <greg@kroah.com>,
	ksummit-2013-discuss@lists.linuxfoundation.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [Ksummit-2013-discuss] [ATTEND] [ARM ATTEND] kernel data bloat and how to avoid it
Date: Fri, 2 Aug 2013 01:26:23 -0700	[thread overview]
Message-ID: <20130802082622.GB7656@atomide.com> (raw)
In-Reply-To: <20130802080335.GM24465@radagast>

* Felipe Balbi <balbi@ti.com> [130802 01:11]:
> Hi,
> 
> On Fri, Aug 02, 2013 at 12:53:53AM -0700, Tony Lindgren wrote:
> > > > Basically the data bloat issue is there for the arch code and drivers
> > > > and may not show up initially until things have headed the wrong way for
> > > > too long.
> > > 
> > > What do you mean by this?  You seem to be very vague here.
> > 
> > People are unnecessarily defining registers in kernel for similar devices
> > over and over again for each new SoC at the arch level and now more and
> > more at the driver level.
> >
> > One example of that are device tree based drivers that don't describe
> > the actual hardware, but instead have a binding that points to an index
> > of defined registers in the driver.
> 
> -ECONFUSED... DT passes only the base address and the size of the
> address space. If some versions of the IP have slightly different
> register layout, that needs to be treated at the driver, right ?

The driver shoud know how to handle various _types_ of registers rather
than contain a data what these registers are. Then the DT should define
the _types_ of registers that the hardware has. Any register names etc
are just debug data that can be handled with userspace tools using debugfs.
 
> > One way to avoid these kind of bloat issues is to allow drivers to load
> > data at multiple points: Only abtolutely minimal set of data should be
> > static, some should only come from the bootloader as a device tree or
> > ACPI tables, and some is best to be loaded after booting from /lib/firmware.
> 
> why would we put data blobs in /lib/firmware ? I know we have discussed
> this at some length before, but I still don't get the idea that, just
> because data shouldn't be in the kernel, we would bloat /lib/firmware
> with blobs which aren't really firmwares.

Because the amount of data coming from the bootloader should be pretty
minimal. And it is for ACPI, and device tree will run into performance
issues trying stuff all the data there.

And a huge amount of the data we have in platform_data, defined registers,
device tree etc is only needed by the kernel for debugging, or is only
needed later on for things like PM.
 
> It would be like adding ACPI tables to /lib/firmware :-p

I don't think ACPI has this issue, the set of data coming from ACPI
is pretty minimal. But I bet a lot of the ACPI drivers could also load
the debug related data as additional kernel modules or from /lib/firmware
especially if it's somehow SoC or board specific.

Regards,

Tony

  reply	other threads:[~2013-08-02  8:26 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-31  7:38 [ATTEND] [ARM ATTEND] kernel data bloat and how to avoid it Tony Lindgren
2013-07-31 12:33 ` [Ksummit-2013-discuss] " Greg KH
2013-07-31 13:53   ` Jason Cooper
2013-08-02  7:55     ` Tony Lindgren
2013-08-02  7:53   ` Tony Lindgren
2013-08-02  8:03     ` Felipe Balbi
2013-08-02  8:26       ` Tony Lindgren [this message]
2013-08-02  8:11     ` Greg KH
2013-08-02  8:39       ` Tony Lindgren
2013-08-02 12:41     ` Tony Lindgren
2013-08-02 13:24       ` Russell King - ARM Linux
2013-08-05  6:30         ` Tony Lindgren
2013-08-02 19:57     ` Mike Turquette
2013-08-05  6:36       ` Tony Lindgren
2013-07-31 15:21 ` Mel Gorman
2013-08-02  8:13   ` Tony Lindgren
2013-08-02 21:31     ` Matt Sealey
2013-08-03  5:30       ` Olof Johansson
2013-08-05  6:43         ` Tony Lindgren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130802082622.GB7656@atomide.com \
    --to=tony@atomide.com \
    --cc=balbi@ti.com \
    --cc=greg@kroah.com \
    --cc=ksummit-2013-discuss@lists.linuxfoundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox