public inbox for b43-dev@lists.infradead.org
 help / color / mirror / Atom feed
* Patch "b43: refuse to load unsupported firmware" has been added to the 3.0-stable tree
       [not found] ` <1321512890.2885.92.camel@deadeye>
@ 2011-11-17  8:42   ` Rafał Miłecki
  2011-11-17 11:19     ` Michael Büsch
  0 siblings, 1 reply; 6+ messages in thread
From: Rafał Miłecki @ 2011-11-17  8:42 UTC (permalink / raw)
  To: b43-dev

2011/11/17 Ben Hutchings <ben@decadent.org.uk>:
> On Wed, 2011-11-16 at 15:47 -0800, gregkh at suse.de wrote:
> [...]
>> From: Rafa Miecki <zajec5@gmail.com>
>> Date: Tue, ?8 Nov 2011 17:15:03 +0100
>> Subject: b43: refuse to load unsupported firmware
>> To: stable at kernel.org, <Greg KH> greg at kroah.com
>> Cc: linux-wireless at vger.kernel.org, b43-dev at lists.infradead.org, roman-vl at meta.ua, Rafa Miecki <zajec5@gmail.com>
>> Message-ID: <1320768903-8731-1-git-send-email-zajec5@gmail.com>
>>
>> [This patch is supposed to be applied in 3.1 (and maybe older) branches only.]
>>
>> New kernels support newer firmware that users may try to incorrectly use
>> with older kernels. Display error and explain the problem in such a case
> [...]
>> + ? ? } else if (fwrev >= 598) {
>> + ? ? ? ? ? ? b43err(dev->wl, "YOUR FIRMWARE IS TOO NEW. Support for "
>> + ? ? ? ? ? ? ? ? ? ?"firmware 598 and up requires kernel 3.2 or newer. You "
>> + ? ? ? ? ? ? ? ? ? ?"have to install older firmware or upgrade kernel.\n");
>> + ? ? ? ? ? ? b43_print_fw_helptext(dev->wl, 1);
>> + ? ? ? ? ? ? err = -EOPNOTSUPP;
>> + ? ? ? ? ? ? goto error;
> [...]
>
> This is the wrong way to go about things. ?If the new firmware is
> incompatible, change the filename (like everyone else does). ?It should
> be possible to install the different firmware versions in parallel, just
> as it possible to install the different kernel versions in parallel.

It sounds sane. Unfortunately I see few problems right now, not sure
how to solve this now...

1) Broadcom driver doesn't contain info about firmware version
2) Because of that b43-fwcutter can't name files correctly
3) Discovering firmware version requires loading it to the firmware
and reading from SHM
4) Broadcom seems to be using internally API versioning. I'm afraid
it's not included in drivers as well
5) The only way for b43-fwcutter seems to be hardcoding firmware
version linked with specific Broadcom driver
6) We already support same-name-called-firmware-files with 2 different
APIs (598 isn't the first split here)

I'm afraid we won't be able to fix that for 3.0/3.1/3.2 releases. I
think we can consider cleaning this in future releases, still not sure
how however.

-- 
Rafa?

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

* Patch "b43: refuse to load unsupported firmware" has been added to the 3.0-stable tree
  2011-11-17  8:42   ` Patch "b43: refuse to load unsupported firmware" has been added to the 3.0-stable tree Rafał Miłecki
@ 2011-11-17 11:19     ` Michael Büsch
  2011-11-17 11:37       ` Rafał Miłecki
  0 siblings, 1 reply; 6+ messages in thread
From: Michael Büsch @ 2011-11-17 11:19 UTC (permalink / raw)
  To: b43-dev

On Thu, 17 Nov 2011 09:42:04 +0100
Rafa? Mi?ecki <zajec5@gmail.com> wrote:
> 1) Broadcom driver doesn't contain info about firmware version

In fact it does. The microcode does contain the version, of course.

> 2) Because of that b43-fwcutter can't name files correctly

And fwcutter is even able to extract it from the dump. It also
does so currently.

> 3) Discovering firmware version requires loading it to the firmware
> and reading from SHM

No.

-- 
Greetings, Michael.

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

* Patch "b43: refuse to load unsupported firmware" has been added to the 3.0-stable tree
  2011-11-17 11:19     ` Michael Büsch
@ 2011-11-17 11:37       ` Rafał Miłecki
  2011-11-17 11:42         ` Michael Büsch
  0 siblings, 1 reply; 6+ messages in thread
From: Rafał Miłecki @ 2011-11-17 11:37 UTC (permalink / raw)
  To: b43-dev

W dniu 17 listopada 2011 12:19 u?ytkownik Michael B?sch <m@bues.ch> napisa?:
> On Thu, 17 Nov 2011 09:42:04 +0100
> Rafa? Mi?ecki <zajec5@gmail.com> wrote:
>> 1) Broadcom driver doesn't contain info about firmware version
>
> In fact it does. The microcode does contain the version, of course.
>
>> 2) Because of that b43-fwcutter can't name files correctly
>
> And fwcutter is even able to extract it from the dump. It also
> does so currently.
>
>> 3) Discovering firmware version requires loading it to the firmware
>> and reading from SHM
>
> No.

I had no idea about that, but I admit, I didn't read the whole
b43-fwcutter code. Thanks for explaining.

What about API level (revsion?)? Do you think b43-fwcutten can extract
that? This would be perfect solution to include API level in firmware
file name.

-- 
Rafa?

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

* Patch "b43: refuse to load unsupported firmware" has been added to the 3.0-stable tree
  2011-11-17 11:37       ` Rafał Miłecki
@ 2011-11-17 11:42         ` Michael Büsch
  2011-11-17 11:49           ` Rafał Miłecki
  0 siblings, 1 reply; 6+ messages in thread
From: Michael Büsch @ 2011-11-17 11:42 UTC (permalink / raw)
  To: b43-dev

On Thu, 17 Nov 2011 12:37:10 +0100
Rafa? Mi?ecki <zajec5@gmail.com> wrote:

> W dniu 17 listopada 2011 12:19 u?ytkownik Michael B?sch <m@bues.ch> napisa?:
> > On Thu, 17 Nov 2011 09:42:04 +0100
> > Rafa? Mi?ecki <zajec5@gmail.com> wrote:
> >> 1) Broadcom driver doesn't contain info about firmware version
> >
> > In fact it does. The microcode does contain the version, of course.
> >
> >> 2) Because of that b43-fwcutter can't name files correctly
> >
> > And fwcutter is even able to extract it from the dump. It also
> > does so currently.
> >
> >> 3) Discovering firmware version requires loading it to the firmware
> >> and reading from SHM
> >
> > No.
> 
> I had no idea about that, but I admit, I didn't read the whole
> b43-fwcutter code. Thanks for explaining.
> 
> What about API level (revsion?)? Do you think b43-fwcutten can extract
> that? This would be perfect solution to include API level in firmware
> file name.
> 

I'm not sure what you are referring to by "API level". I didn't
follow the latest firmware development too closely. Is that something new?

fwcutter contains a tiny trivial disassembler that is able to extract various
immediates from the microcode. So if your versioning is stored as immediates
in the code, it's trivial to add extraction for it.

fwcutter currently extracts (and prints) ucode version, patchlevel, date and time.

-- 
Greetings, Michael.

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

* Patch "b43: refuse to load unsupported firmware" has been added to the 3.0-stable tree
  2011-11-17 11:42         ` Michael Büsch
@ 2011-11-17 11:49           ` Rafał Miłecki
  2011-11-17 11:59             ` Michael Büsch
  0 siblings, 1 reply; 6+ messages in thread
From: Rafał Miłecki @ 2011-11-17 11:49 UTC (permalink / raw)
  To: b43-dev

W dniu 17 listopada 2011 12:42 u?ytkownik Michael B?sch <m@bues.ch> napisa?:
> On Thu, 17 Nov 2011 12:37:10 +0100
> Rafa? Mi?ecki <zajec5@gmail.com> wrote:
>
>> W dniu 17 listopada 2011 12:19 u?ytkownik Michael B?sch <m@bues.ch> napisa?:
>> > On Thu, 17 Nov 2011 09:42:04 +0100
>> > Rafa? Mi?ecki <zajec5@gmail.com> wrote:
>> >> 1) Broadcom driver doesn't contain info about firmware version
>> >
>> > In fact it does. The microcode does contain the version, of course.
>> >
>> >> 2) Because of that b43-fwcutter can't name files correctly
>> >
>> > And fwcutter is even able to extract it from the dump. It also
>> > does so currently.
>> >
>> >> 3) Discovering firmware version requires loading it to the firmware
>> >> and reading from SHM
>> >
>> > No.
>>
>> I had no idea about that, but I admit, I didn't read the whole
>> b43-fwcutter code. Thanks for explaining.
>>
>> What about API level (revsion?)? Do you think b43-fwcutten can extract
>> that? This would be perfect solution to include API level in firmware
>> file name.
>>
>
> I'm not sure what you are referring to by "API level". I didn't
> follow the latest firmware development too closely. Is that something new?
>
> fwcutter contains a tiny trivial disassembler that is able to extract various
> immediates from the microcode. So if your versioning is stored as immediates
> in the code, it's trivial to add extraction for it.
>
> fwcutter currently extracts (and prints) ucode version, patchlevel, date and time.

http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=commit;h=a531257c40920de0161150091eaccbbc1182eb96

It seems Broadcom wants using some basename-apiversion syntax for
their firmware files... but indeed it does not make much sense to me.

According to their firmware, current API is 0. I assume it from
reading file name which is bcm43xx-0.fw. It does not make much sense,
as we had at least 2 earlier APIs.

Looks like dead end.

Don't know what else we can propose. Putting exact version and
patchlevel will make it complex (a lot of firmwares are available).

-- 
Rafa?

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

* Patch "b43: refuse to load unsupported firmware" has been added to the 3.0-stable tree
  2011-11-17 11:49           ` Rafał Miłecki
@ 2011-11-17 11:59             ` Michael Büsch
  0 siblings, 0 replies; 6+ messages in thread
From: Michael Büsch @ 2011-11-17 11:59 UTC (permalink / raw)
  To: b43-dev

On Thu, 17 Nov 2011 12:49:44 +0100
Rafa? Mi?ecki <zajec5@gmail.com> wrote:

> W dniu 17 listopada 2011 12:42 u?ytkownik Michael B?sch <m@bues.ch> napisa?:
> > On Thu, 17 Nov 2011 12:37:10 +0100
> > Rafa? Mi?ecki <zajec5@gmail.com> wrote:
> >
> >> W dniu 17 listopada 2011 12:19 u?ytkownik Michael B?sch <m@bues.ch> napisa?:
> >> > On Thu, 17 Nov 2011 09:42:04 +0100
> >> > Rafa? Mi?ecki <zajec5@gmail.com> wrote:
> >> >> 1) Broadcom driver doesn't contain info about firmware version
> >> >
> >> > In fact it does. The microcode does contain the version, of course.
> >> >
> >> >> 2) Because of that b43-fwcutter can't name files correctly
> >> >
> >> > And fwcutter is even able to extract it from the dump. It also
> >> > does so currently.
> >> >
> >> >> 3) Discovering firmware version requires loading it to the firmware
> >> >> and reading from SHM
> >> >
> >> > No.
> >>
> >> I had no idea about that, but I admit, I didn't read the whole
> >> b43-fwcutter code. Thanks for explaining.
> >>
> >> What about API level (revsion?)? Do you think b43-fwcutten can extract
> >> that? This would be perfect solution to include API level in firmware
> >> file name.
> >>
> >
> > I'm not sure what you are referring to by "API level". I didn't
> > follow the latest firmware development too closely. Is that something new?
> >
> > fwcutter contains a tiny trivial disassembler that is able to extract various
> > immediates from the microcode. So if your versioning is stored as immediates
> > in the code, it's trivial to add extraction for it.
> >
> > fwcutter currently extracts (and prints) ucode version, patchlevel, date and time.
> 
> http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=commit;h=a531257c40920de0161150091eaccbbc1182eb96
> 
> It seems Broadcom wants using some basename-apiversion syntax for
> their firmware files... but indeed it does not make much sense to me.
> 
> According to their firmware, current API is 0. I assume it from
> reading file name which is bcm43xx-0.fw. It does not make much sense,
> as we had at least 2 earlier APIs.
> 
> Looks like dead end.
> 
> Don't know what else we can propose. Putting exact version and
> patchlevel will make it complex (a lot of firmwares are available).

No. Simply make up arbitrary incrementing numbers and add it to the
directory name. /lib/firmware/b43 for the old ones.
/lib/firmware/b43-1 for the next newer one that we support. -2, -3 and so on.
What internal ucode rev/patchlevel that corresponds to doesn't really matter.

In the driver you can then probe all directories (starting from the number
that is the newest when the driver was released, of course) and see if
there's usable firmware in there. This way it will never probe "too new"
firmwares.

-- 
Greetings, Michael.

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

end of thread, other threads:[~2011-11-17 11:59 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1321487254296@kroah.org>
     [not found] ` <1321512890.2885.92.camel@deadeye>
2011-11-17  8:42   ` Patch "b43: refuse to load unsupported firmware" has been added to the 3.0-stable tree Rafał Miłecki
2011-11-17 11:19     ` Michael Büsch
2011-11-17 11:37       ` Rafał Miłecki
2011-11-17 11:42         ` Michael Büsch
2011-11-17 11:49           ` Rafał Miłecki
2011-11-17 11:59             ` Michael Büsch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox