From: Kay Sievers <kay.sievers@vrfy.org>
To: Michael Brown <mebrown@michaels-house.net>
Cc: Doug Warzecha <Douglas_Warzecha@dell.com>,
Jean Delvare <khali@linux-fr.org>,
Greg Kroah-Hartman <gregkh@suse.de>,
linux-kernel@vger.kernel.org,
Mauro Carvalho Chehab <mchehab@infradead.org>,
Matt Domsch <Matt_Domsch@dell.com>
Subject: Re: Class device namespaces
Date: Wed, 29 Apr 2009 12:30:30 +0200 [thread overview]
Message-ID: <ac3eb2510904290330r563f3717ue72029cbe24b39bb@mail.gmail.com> (raw)
In-Reply-To: <437908170904282019h6a10ef9dg594002e22842b366@mail.gmail.com>
On Wed, Apr 29, 2009 at 05:19, Michael Brown <mebrown@michaels-house.net> wrote:
> On Tue, Apr 28, 2009 at 8:42 PM, Kay Sievers <kay.sievers@vrfy.org> wrote:
>> On Tue, Apr 28, 2009 at 23:58, Doug Warzecha <Douglas_Warzecha@dell.com> wrote:
>>> On Tue, Apr 28, 2009 at 07:46:57PM +0200, Kay Sievers wrote:
>>>> On Tue, Apr 28, 2009 at 19:39, Doug Warzecha <Douglas_Warzecha@dell.com> wrote:
>>>>
>>>> > /sys/class/firmware/dell_rbu/loading
>>>> > /sys/class/firmware/dell_rbu/data
>>>>
>>>> These pathes only ever exist for a fraction of a second, during a
>>>> kernel initiated firmware request. This request is usually only
>>>> handled by the udev firmware loader script, and not interesting for
>>>> anything else. Are you replacing the udev firmware script here? Are
>>>> you sure you do something else here?
>>>
>>> A Dell library writes data to those paths when a Dell BIOS Update Package is run and requests the BIOS image to be loaded into memory.
>>
>> How do you do this? These paths exist for a short time only. How do
>> you get udev out of your way handling the firmware request for you?
>> How do you plug into the event processing with a custom tool?
>
> Overall, the interface is pretty pathetic because it doesnt fit our
> use case *at all*, but way back in the day that is what we had to do
> to get it reviewed and approved for merge upstream. At least it is
> better than the earlier versions where we had to do a separate
> request_firmware() for every 4k packet (and spin waiting for files to
> disappear/reappear)
It handles huge files just fine, since the beginning. The space is
realloced in the kernel. I have a modem which loads 200kb files since
years.
> All this code is in libsmbios(*) if you want to see the ugly details,
> but the short version is this:
>
> 1) we poke the image_type file and packet_size files with appropriate
> data, which causes the driver to do a request firmware
> 2) spin until request_firmware creates the files we need
This is totally insane!
> 2) loop over our file packet_size bytes at a time writing data into
> the data file
> 3) set loading to 0 when done
>
> *) src/python/libsmbios_c/rbu_update.py
>
> The code basically "packetizes" the bios update into page-sized chunks
> with a header so BIOS can find them and reassemble them for the final
> update.
>
> For older systems (monolithic mode), the kernel code has to allocate
> physically contiguous region to hold the entire firmware image.
Yeah, maybe you can not use the in-kernel firmware-request filled
memory. But you can copy it just fine, once it is in the kernel. There
is no reason to fiddle around with chunks here in userspace.
How do you make sure udev does not handle the request at the same
time? This interface is not public at all, on a general system. As
long as udev is active you can not use it at all. Udev will run at the
same time and write to the same files, and even cancel the request if
the requested file is not found. How does your software cope with
that?
Thanks,
Kay
next prev parent reply other threads:[~2009-04-29 10:31 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-29 15:48 Jean Delvare
2009-03-29 16:36 ` Kay Sievers
2009-03-30 8:49 ` Jean Delvare
2009-03-30 11:24 ` Kay Sievers
2009-04-26 6:54 ` Jean Delvare
2009-04-26 12:44 ` Matt Domsch
2009-04-26 13:01 ` Matt Domsch
2009-04-27 15:30 ` Jean Delvare
2009-04-27 17:30 ` Matt Domsch
2009-04-26 13:42 ` Kay Sievers
2009-04-27 16:00 ` Jean Delvare
2009-04-27 21:57 ` Kay Sievers
2009-04-28 8:08 ` Jean Delvare
2009-04-28 12:36 ` Kay Sievers
2009-04-29 12:19 ` Jean Delvare
2009-04-27 13:20 ` Michael E Brown
2009-04-27 15:27 ` Jean Delvare
2009-04-27 17:23 ` Michael Brown
2009-04-28 8:10 ` Jean Delvare
2009-04-28 17:39 ` Doug Warzecha
2009-04-28 17:46 ` Kay Sievers
2009-04-28 21:58 ` Doug Warzecha
2009-04-29 1:42 ` Kay Sievers
2009-04-29 3:19 ` Michael Brown
2009-04-29 10:30 ` Kay Sievers [this message]
2009-04-29 17:00 ` Michael Brown
2009-04-29 19:10 ` Kay Sievers
2009-04-29 21:28 ` Michael Brown
2009-04-29 21:53 ` Kay Sievers
2009-04-30 15:18 ` David Dillow
2009-04-30 16:34 ` Kay Sievers
2009-04-28 19:06 ` Jean Delvare
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=ac3eb2510904290330r563f3717ue72029cbe24b39bb@mail.gmail.com \
--to=kay.sievers@vrfy.org \
--cc=Douglas_Warzecha@dell.com \
--cc=Matt_Domsch@dell.com \
--cc=gregkh@suse.de \
--cc=khali@linux-fr.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mchehab@infradead.org \
--cc=mebrown@michaels-house.net \
/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
all inboxes | Powered by JetHome®