public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Manuel Estrada Sainz <ranty@debian.org>
To: David Gibson <david@gibson.dropbear.id.au>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: firmware separation filesystem (fwfs)
Date: Wed, 16 Apr 2003 18:36:41 +0200	[thread overview]
Message-ID: <20030416163641.GA2183@ranty.ddts.net> (raw)
In-Reply-To: <20030416144631.GB899@zax>

On Thu, Apr 17, 2003 at 12:46:31AM +1000, David Gibson wrote:
> On Wed, Apr 16, 2003 at 12:31:21PM +0100, Alan Cox wrote:
> > How is this better than simply having your hotplug helper load
> > the firmware from disk ? Its nice code but you have to ask the
> > question "why". I don't want the firmware wasting ram, I don't
> > need the firmware fs wasting ram. I may need to load the right
> > firmware from a choice of 16 odd types (usb_serial has some
> > examples there).
> 
> The obvious case is where it's impossible, or at least difficult/messy
> for userspace to directly access the device to upload the firmware.
> The latter is the case for the orinoco devices: the same firmwares can
> be used by USB, PCMCIA and PCI devices - these all have somewhat
> different register configurationss and different upload methods.
> Having an upload program that handles all these cases (not to mention
> endian and IO vs. memory mapped registers) seems silly when the driver
> already knows how to talk to the devices properly (actually we don't
> do firmware upload yet, but one day).  

 In the case of Orinoco USB devices, we even have fxload to download the
 ez-usb firmware, but the device doesn't change identity on firmware
 load, so both the hotplug helper and the driver end up accessing the
 device at the same time and it blows up.
 
> The driver could provide a chardev interface to upload the firmware
> through, but that's a lot more work - and there are issues of mapping
> the right chardev to the right network device instance, coping with
> the device in half-alive mode (i.e. initialized enough that firmware
> can be uploaded, but not ready to use because there's no firmware yet)
> etc.
> 
> I believe the idea is that hotplug (or other scripts) would copy the
> appropriate firmware into the relevant path in fwfs, so you don't need
> RAM for every firmware variant - just the one you're using. 

 Yes, that is the idea, although "hotplug" support is not implemented
 jet. I wanted some more feedback before expending more time on this.

 Taking a closer look, it should be easy to hook into the regular
 hotplug mechanism. I could just run '/sbin/hotplug firmware' setting
 FW_NAME=image_name in the environment and wait for it to finish like
 kmod does with modprobe.

 And if I also run it with 'ACTION=unload' when the firmware is not
 needed, it can easily be removed to save memory.

> And if we're really worried about memory it shouldn't be hard for the
> driver to arrange to unlink the firmware image once it's done with it
> (at the cost of not being able to reload the firmware on a
> reset/reinitialize, which might be sensible or necessary for some
> devices).

 On the other hand, there are already many drivers in the kernel that
 include firmware in headers, keyspan, io_edgeport, dabusb, ser_a2232,
 sym53c8xx_2, ...
 
 Something like fwfs would allow the removal of such firmware and save
 memory.

 If the firmware is not needed to boot, it could simply be removed from
 the kernel and be loaded from userspace.
 
 If the firmware is needed to boot, the driver could declare the
 firmware as __init data and register it on boot via fwfs_write_default.
 And after boot it could just be unlinked from fwfs recovering the
 memory.

 Currently the firmware image is copied into kmalloced memory then a
 drivers asks for the image, but if memory is such an issue, I'll look
 for a way to use the page cache data directly all the time. I'll take a
 closer look to the vmalloc code.
 
 Have a nice day

 	Manuel
-- 
--- Manuel Estrada Sainz <ranty@debian.org>
                         <ranty@bigfoot.com>
			 <ranty@users.sourceforge.net>
------------------------ <manuel.estrada@hispalinux.es> -------------------
Let us have the serenity to accept the things we cannot change, courage to
change the things we can, and wisdom to know the difference.

  reply	other threads:[~2003-04-16 16:25 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-04-16  0:57 firmware separation filesystem (fwfs) Manuel Estrada Sainz
2003-04-16 11:31 ` Alan Cox
2003-04-16 14:46   ` David Gibson
2003-04-16 16:36     ` Manuel Estrada Sainz [this message]
2003-04-16 15:47       ` Alan Cox
2003-04-16 16:57         ` Riley Williams
2003-04-17 13:43           ` Alan Cox
2003-04-17 13:43           ` Alan Cox
2003-04-17  1:23         ` David Gibson
2003-04-17 13:12           ` Alan Cox
2003-04-19 20:41             ` Manuel Estrada Sainz
2003-04-19 21:52               ` Alan Cox
2003-04-20 19:26                 ` Manuel Estrada Sainz
  -- strict thread matches above, loose matches on Subject: below --
2003-04-17  0:17 Perez-Gonzalez, Inaky
2003-04-17  2:00 Perez-Gonzalez, Inaky
2003-04-17  3:31 ` Manuel Estrada Sainz
2003-04-17  4:06   ` Greg KH
2003-04-17  3:48 ` 'David Gibson'
2003-04-17  4:07 Perez-Gonzalez, Inaky

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=20030416163641.GA2183@ranty.ddts.net \
    --to=ranty@debian.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=david@gibson.dropbear.id.au \
    --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