Debian Bug report logs - #242866
drivers containing firmware blobs

version graph

Package: linux-2.6; Maintainer for linux-2.6 is (unknown);

Reported by: Marco d'Itri <md@Linux.IT>

Date: Fri, 9 Apr 2004 12:18:23 UTC

Severity: serious

Tags: d-i, etch-ignore, help, sarge-ignore, upstream

Merged with 383403, 412950

Found in versions 2.6.15-8, 2.6.17-6, linux-2.6/2.6.26-13

Fixed in versions 2.6.24-1, 2.6.29-1

Done: maximilian attems <max@stro.at>

Bug is archived. No further changes may be made.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Marco d'Itri <md@Linux.IT>:
New Bug report received and forwarded. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #5 received at submit@bugs.debian.org (full text, mbox, reply):

From: Marco d'Itri <md@Linux.IT>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: drivers containing firmware blobs
Date: Fri, 9 Apr 2004 12:40:59 +0200
Package: kernel
Severity: serious
Tags: sarge, sid

The following files contain binary firmwares, and distributing them
appears to be a DFSG violation. (See #239952)

drivers/net/appletalk/cops_ffdrv.h
drivers/net/acenic_firmware.h
drivers/net/tokenring/3c359_microcode.h
drivers/net/pcmcia/ositech.h
drivers/char/drm/mga_ucode.h
drivers/char/drm/r128_cce.c
drivers/char/drm/radeon_cp.c

-- 
ciao, |
Marco | [5631 stO4f5PcqYDgg]



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to neroden@twcny.rr.com (Nathanael Nerode):
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #10 received at 242866@bugs.debian.org (full text, mbox, reply):

From: neroden@twcny.rr.com (Nathanael Nerode)
To: 242866@bugs.debian.org
Subject: Patch for r128 (and template for others) to use userland firmware loading
Date: Mon, 12 Apr 2004 19:56:21 -0400
This is a diff for drivers/char/drm to make r128 use userland-loadable
firmware.  It's completely untested (since I don't *have* an r128),
but I bet it'll work; the firmware loading interface is remarkably easy to
use.

Following that (in the form of a diff) is the short program I used to create
a microcode file which can (should) be shipped as the file
/usr/lib/hotplug/r128_cce_microcode (in a non-free package, of course).

* I'm not 100% sure this will work right, because I haven't tested the behavior
of hotplug && the firmware loader with respect to end-of-file.
(I would have attached the binary file produced, but I was worried about
mangling.)

* It also won't work if the functions I'm using turn out to
be called in a no-waiting context (I can't imagine why), or are needed 'before
userland' (I don't think they *should* be); I simply didn't bother to check
those things, since I was doing proof-of-concept so that I could theoretically
do this to any driver.

* This patch could probably be improved by someone with a better sense of
the right way to deal with the stupid endianness issues.

* I'm quite sure I didn't handle the failure-to-load condition correctly;
I acted as if the board would work (in some semi-broken manner) if the
firmware wasn't loaded.  People with more kernel knowledge than I could
presumably do better (figure out how to cause a module loading failure, or
put the device in an appropriately disabled state, or something).

* Similar (nearly identical) changes could be made to the radeon driver in
the same directory, and I'll be happy to make them if needed.

* My changes are GPL licensed; feel free to submit upstream, etc.

I recommend that anyone who has a firmware-loading driver they particularly
care about look into making this kind of conversion.  It doesn't really
seem that difficult at all.  Documentation is in the kernel sources (under
Documentation/firmware_class) and you now have a model conversion to look at.
;-)

--- r128_cce.c	2003-09-28 00:44:12.000000000 -0400
+++ r128_cce.c.new	2004-04-12 19:32:39.000000000 -0400
@@ -3,6 +3,7 @@
  *
  * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas.
  * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
+ * Portions copyright 2003 Nathanael Nerode.
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,6 +29,7 @@
  *    Gareth Hughes <gareth@valinux.com>
  */
 
+#include <linux/firmware.h>
 #include "r128.h"
 #include "drmP.h"
 #include "drm.h"
@@ -36,51 +38,6 @@
 
 #define R128_FIFO_DEBUG		0
 
-/* CCE microcode (from ATI) */
-static u32 r128_cce_microcode[] = {
-	0, 276838400, 0, 268449792, 2, 142, 2, 145, 0, 1076765731, 0,
-	1617039951, 0, 774592877, 0, 1987540286, 0, 2307490946U, 0,
-	599558925, 0, 589505315, 0, 596487092, 0, 589505315, 1,
-	11544576, 1, 206848, 1, 311296, 1, 198656, 2, 912273422, 11,
-	262144, 0, 0, 1, 33559837, 1, 7438, 1, 14809, 1, 6615, 12, 28,
-	1, 6614, 12, 28, 2, 23, 11, 18874368, 0, 16790922, 1, 409600, 9,
-	30, 1, 147854772, 16, 420483072, 3, 8192, 0, 10240, 1, 198656,
-	1, 15630, 1, 51200, 10, 34858, 9, 42, 1, 33559823, 2, 10276, 1,
-	15717, 1, 15718, 2, 43, 1, 15936948, 1, 570480831, 1, 14715071,
-	12, 322123831, 1, 33953125, 12, 55, 1, 33559908, 1, 15718, 2,
-	46, 4, 2099258, 1, 526336, 1, 442623, 4, 4194365, 1, 509952, 1,
-	459007, 3, 0, 12, 92, 2, 46, 12, 176, 1, 15734, 1, 206848, 1,
-	18432, 1, 133120, 1, 100670734, 1, 149504, 1, 165888, 1,
-	15975928, 1, 1048576, 6, 3145806, 1, 15715, 16, 2150645232U, 2,
-	268449859, 2, 10307, 12, 176, 1, 15734, 1, 15735, 1, 15630, 1,
-	15631, 1, 5253120, 6, 3145810, 16, 2150645232U, 1, 15864, 2, 82,
-	1, 343310, 1, 1064207, 2, 3145813, 1, 15728, 1, 7817, 1, 15729,
-	3, 15730, 12, 92, 2, 98, 1, 16168, 1, 16167, 1, 16002, 1, 16008,
-	1, 15974, 1, 15975, 1, 15990, 1, 15976, 1, 15977, 1, 15980, 0,
-	15981, 1, 10240, 1, 5253120, 1, 15720, 1, 198656, 6, 110, 1,
-	180224, 1, 103824738, 2, 112, 2, 3145839, 0, 536885440, 1,
-	114880, 14, 125, 12, 206975, 1, 33559995, 12, 198784, 0,
-	33570236, 1, 15803, 0, 15804, 3, 294912, 1, 294912, 3, 442370,
-	1, 11544576, 0, 811612160, 1, 12593152, 1, 11536384, 1,
-	14024704, 7, 310382726, 0, 10240, 1, 14796, 1, 14797, 1, 14793,
-	1, 14794, 0, 14795, 1, 268679168, 1, 9437184, 1, 268449792, 1,
-	198656, 1, 9452827, 1, 1075854602, 1, 1075854603, 1, 557056, 1,
-	114880, 14, 159, 12, 198784, 1, 1109409213, 12, 198783, 1,
-	1107312059, 12, 198784, 1, 1109409212, 2, 162, 1, 1075854781, 1,
-	1073757627, 1, 1075854780, 1, 540672, 1, 10485760, 6, 3145894,
-	16, 274741248, 9, 168, 3, 4194304, 3, 4209949, 0, 0, 0, 256, 14,
-	174, 1, 114857, 1, 33560007, 12, 176, 0, 10240, 1, 114858, 1,
-	33560018, 1, 114857, 3, 33560007, 1, 16008, 1, 114874, 1,
-	33560360, 1, 114875, 1, 33560154, 0, 15963, 0, 256, 0, 4096, 1,
-	409611, 9, 188, 0, 10240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
 int R128_READ_PLL(drm_device_t *dev, int addr)
 {
 	drm_r128_private_t *dev_priv = dev->dev_private;
@@ -176,21 +133,50 @@
  */
 
 /* Load the microcode for the CCE */
-static void r128_cce_load_microcode( drm_r128_private_t *dev_priv )
+static void r128_cce_load_microcode( drm_device_t *dev,
+                                     drm_r128_private_t *dev_priv )
 {
 	int i;
+	const struct firmware *fw_entry = NULL;
+
+	if ( request_firmware(&fw_entry, "r128_cce_microcode", &dev) != 0 ) {
+		printk(KERN_ALERT
+	               "%s: Firmware \"r128_cce_microcode\" not available.\n",
+		       dev->name);
+		return;
+	}
 
 	DRM_DEBUG( "\n" );
 
 	r128_do_wait_for_idle( dev_priv );
 
 	R128_WRITE( R128_PM4_MICROCODE_ADDR, 0 );
+
+	/* Assumes 256 x 2 x 32 bits of data */
+	if (fw_entry->size != 256 * 4 * 2) {
+		printk(KERN_ALERT
+	               "%s: Firmware \"r128_cce_microcode\" wrong size!\n",
+		       dev->name);
+		return;
+	}
+
 	for ( i = 0 ; i < 256 ; i++ ) {
+		/* fw_entry->data is a char[], but we want a u32[] (sigh).
+		   We simply assume big-endian byte order for now. */
 		R128_WRITE( R128_PM4_MICROCODE_DATAH,
-			    r128_cce_microcode[i * 2] );
+			      ( (u32) fw_entry->data[i * 8] << 24)
+			    + ( (u32) fw_entry->data[i * 8 + 1] << 16)
+			    + ( (u32) fw_entry->data[i * 8 + 2] << 8)
+			    + ( (u32) fw_entry->data[i * 8 + 3])
+			  );
 		R128_WRITE( R128_PM4_MICROCODE_DATAL,
-			    r128_cce_microcode[i * 2 + 1] );
+			      ( (u32) fw_entry->data[i * 8 + 4] << 24)
+			    + ( (u32) fw_entry->data[i * 8 + 5] << 16)
+			    + ( (u32) fw_entry->data[i * 8 + 6] << 8)
+			    + ( (u32) fw_entry->data[i * 8 + 7])
+			  );
 	}
+	release_firmware(fw_entry);
 }
 
 /* Flush any pending commands to the CCE.  This should only be used just
@@ -603,7 +589,7 @@
 #endif
 
 	r128_cce_init_ring_buffer( dev, dev_priv );
-	r128_cce_load_microcode( dev_priv );
+	r128_cce_load_microcode( dev, dev_priv );
 
 	dev->dev_private = (void *)dev_priv;
 
--- /dev/null	2004-02-24 18:25:18.000000000 -0500
+++ write_r128_microcode.c	2004-04-12 18:59:00.000000000 -0400
@@ -0,0 +1,67 @@
+#include <stdio.h>
+
+/* CCE microcode (from ATI) */
+static unsigned int r128_cce_microcode[] = {
+	0, 276838400, 0, 268449792, 2, 142, 2, 145, 0, 1076765731, 0,
+	1617039951, 0, 774592877, 0, 1987540286, 0, 2307490946U, 0,
+	599558925, 0, 589505315, 0, 596487092, 0, 589505315, 1,
+	11544576, 1, 206848, 1, 311296, 1, 198656, 2, 912273422, 11,
+	262144, 0, 0, 1, 33559837, 1, 7438, 1, 14809, 1, 6615, 12, 28,
+	1, 6614, 12, 28, 2, 23, 11, 18874368, 0, 16790922, 1, 409600, 9,
+	30, 1, 147854772, 16, 420483072, 3, 8192, 0, 10240, 1, 198656,
+	1, 15630, 1, 51200, 10, 34858, 9, 42, 1, 33559823, 2, 10276, 1,
+	15717, 1, 15718, 2, 43, 1, 15936948, 1, 570480831, 1, 14715071,
+	12, 322123831, 1, 33953125, 12, 55, 1, 33559908, 1, 15718, 2,
+	46, 4, 2099258, 1, 526336, 1, 442623, 4, 4194365, 1, 509952, 1,
+	459007, 3, 0, 12, 92, 2, 46, 12, 176, 1, 15734, 1, 206848, 1,
+	18432, 1, 133120, 1, 100670734, 1, 149504, 1, 165888, 1,
+	15975928, 1, 1048576, 6, 3145806, 1, 15715, 16, 2150645232U, 2,
+	268449859, 2, 10307, 12, 176, 1, 15734, 1, 15735, 1, 15630, 1,
+	15631, 1, 5253120, 6, 3145810, 16, 2150645232U, 1, 15864, 2, 82,
+	1, 343310, 1, 1064207, 2, 3145813, 1, 15728, 1, 7817, 1, 15729,
+	3, 15730, 12, 92, 2, 98, 1, 16168, 1, 16167, 1, 16002, 1, 16008,
+	1, 15974, 1, 15975, 1, 15990, 1, 15976, 1, 15977, 1, 15980, 0,
+	15981, 1, 10240, 1, 5253120, 1, 15720, 1, 198656, 6, 110, 1,
+	180224, 1, 103824738, 2, 112, 2, 3145839, 0, 536885440, 1,
+	114880, 14, 125, 12, 206975, 1, 33559995, 12, 198784, 0,
+	33570236, 1, 15803, 0, 15804, 3, 294912, 1, 294912, 3, 442370,
+	1, 11544576, 0, 811612160, 1, 12593152, 1, 11536384, 1,
+	14024704, 7, 310382726, 0, 10240, 1, 14796, 1, 14797, 1, 14793,
+	1, 14794, 0, 14795, 1, 268679168, 1, 9437184, 1, 268449792, 1,
+	198656, 1, 9452827, 1, 1075854602, 1, 1075854603, 1, 557056, 1,
+	114880, 14, 159, 12, 198784, 1, 1109409213, 12, 198783, 1,
+	1107312059, 12, 198784, 1, 1109409212, 2, 162, 1, 1075854781, 1,
+	1073757627, 1, 1075854780, 1, 540672, 1, 10485760, 6, 3145894,
+	16, 274741248, 9, 168, 3, 4194304, 3, 4209949, 0, 0, 0, 256, 14,
+	174, 1, 114857, 1, 33560007, 12, 176, 0, 10240, 1, 114858, 1,
+	33560018, 1, 114857, 3, 33560007, 1, 16008, 1, 114874, 1,
+	33560360, 1, 114875, 1, 33560154, 0, 15963, 0, 256, 0, 4096, 1,
+	409611, 9, 188, 0, 10240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+int main(int argc, const char** argv) {
+  int i;
+  unsigned char a,b,c,d;
+  FILE *f;
+
+  f=fopen("r128_cce_microcode","w");
+  for (i=0; i < 512; i++) {
+    /* Unwrap into big-endian order. */
+    a = r128_cce_microcode[i] >> 24 ;
+    b = (r128_cce_microcode[i] >> 16) & 0xFF;
+    c = (r128_cce_microcode[i] >> 8) & 0xFF;
+    d = (r128_cce_microcode[i]) & 0xFF;
+    fputc(a, f);
+    fputc(b, f);
+    fputc(c, f);
+    fputc(d, f);
+  }
+  fclose(f);
+}

-- 
Make sure your vote will count.
http://www.verifiedvoting.org/



Merged 232463 234866 239952 240812 242500 242866 242895 243022. Request was from Herbert Xu <herbert@gondor.apana.org.au> to control@bugs.debian.org. (full text, mbox, link).


Disconnected #232463 from all other report(s). Request was from Herbert Xu <herbert@gondor.apana.org.au> to control@bugs.debian.org. (full text, mbox, link).


Disconnected #234866 from all other report(s). Request was from Herbert Xu <herbert@gondor.apana.org.au> to control@bugs.debian.org. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #21 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: Patch for r128 (and template for others) to use userland firmware loading
Date: Sat, 17 Apr 2004 15:42:49 +1000
On Mon, Apr 12, 2004 at 07:56:21PM -0400, Nathanael Nerode wrote:

Thank you for effort but this code just doesn't work.  Please at least
try to compile it in future.

> --- r128_cce.c	2003-09-28 00:44:12.000000000 -0400
> +++ r128_cce.c.new	2004-04-12 19:32:39.000000000 -0400

Please make sure that your patch is made so that it can be applied with
patch -p1 at the top of the kernel tree.

> @@ -176,21 +133,50 @@
>   */
>  
>  /* Load the microcode for the CCE */
> -static void r128_cce_load_microcode( drm_r128_private_t *dev_priv )
> +static void r128_cce_load_microcode( drm_device_t *dev,
> +                                     drm_r128_private_t *dev_priv )
>  {
>  	int i;
> +	const struct firmware *fw_entry = NULL;
> +
> +	if ( request_firmware(&fw_entry, "r128_cce_microcode", &dev) != 0 ) {

The third argument should be the name of the file in /proc (or /sys).
It must be unique to this device.  The second argument should be the file
name.  So something like 'xxx.frm' would be more appropriate.

> +		printk(KERN_ALERT
> +	               "%s: Firmware \"r128_cce_microcode\" not available.\n",
> +		       dev->name);
> +		return;
> +	}

You must handle errors.  Return an appropriate error here and handle
it in the caller.

> +	/* Assumes 256 x 2 x 32 bits of data */
> +	if (fw_entry->size != 256 * 4 * 2) {
> +		printk(KERN_ALERT
> +	               "%s: Firmware \"r128_cce_microcode\" wrong size!\n",
> +		       dev->name);
> +		return;
> +	}

Memory leak.  You need to free the firmware.

>  	for ( i = 0 ; i < 256 ; i++ ) {
> +		/* fw_entry->data is a char[], but we want a u32[] (sigh).
> +		   We simply assume big-endian byte order for now. */
>  		R128_WRITE( R128_PM4_MICROCODE_DATAH,
> -			    r128_cce_microcode[i * 2] );
> +			      ( (u32) fw_entry->data[i * 8] << 24)
> +			    + ( (u32) fw_entry->data[i * 8 + 1] << 16)
> +			    + ( (u32) fw_entry->data[i * 8 + 2] << 8)
> +			    + ( (u32) fw_entry->data[i * 8 + 3])
> +			  );

The original code assumed little endian.  So store it in little endian
and drop the conversions here (BTW, the conversion functions are *_to_le32).
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



Disconnected #239952 from all other report(s). Request was from Herbert Xu <herbert@gondor.apana.org.au> to control@bugs.debian.org. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #28 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#245217: Radeon/R128 userland firmware loading patch, microcode files
Date: Thu, 22 Apr 2004 20:08:44 +1000
On Wed, Apr 21, 2004 at 07:24:45PM -0400, Nathanael Nerode wrote:
> 
> This responds not only to those comments but also to comments from
> Michel Daenzer on the dri-devel list.  (That's why there are new files,
> and accounts for the stray references to files not in this patch, which
> are for DRM-supporting kernels other than Linux 2.6.x.)

Thanks for the update.  It looks good.

> +				/* r128_firmware_loader.c
> +				or r128_firmware.c */
> +extern int r128_cce_load_microcode( drm_device_t *dev,
> +				    drm_r128_private_t *dev_priv,
> +                                    const char *filename);

Please fix the white spaces here.  They should be tabs.

> +		/* fw_entry->data is a char[], but we want a u32[] (sigh).
> +		   There's really no good way to assemble four chars into
> +		   an int, is there?  Probably the way which allows for the
> +		   most optimization is to just do it by hand. */

Please kill the obsolete comment.  Ditto for radeon below.
  
> -	radeon_cp_load_microcode( dev_priv );
> +	if (dev_priv->is_r200)
> +	  err = radeon_cp_load_microcode( dev, dev_priv, "r200_cp_microcode" );
> +	else
> +	  err = radeon_cp_load_microcode( dev, dev_priv, "radeon_cp_microcode" );

Please move this logic back into the function.

> +		/* Error message already spewed by subroutine */

Please kill this silly comment.  Same for r128 above.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Nathanael Nerode <neroden@twcny.rr.com>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #33 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Nathanael Nerode <neroden@twcny.rr.com>
To: 242866@bugs.debian.org
Subject: Re: Bug#245217: Radeon/R128 userland firmware loading patch, microcode files
Date: Fri, 23 Apr 2004 14:45:54 -0400
[Message part 1 (text/plain, inline)]
Herbert Xu wrote:
> On Wed, Apr 21, 2004 at 07:24:45PM -0400, Nathanael Nerode wrote:
> 
>>This responds not only to those comments but also to comments from
>>Michel Daenzer on the dri-devel list.  (That's why there are new files,
>>and accounts for the stray references to files not in this patch, which
>>are for DRM-supporting kernels other than Linux 2.6.x.)
> 
> 
> Thanks for the update.  It looks good.
> 
> 
>>+				/* r128_firmware_loader.c
>>+				or r128_firmware.c */
>>+extern int r128_cce_load_microcode( drm_device_t *dev,
>>+				    drm_r128_private_t *dev_priv,
>>+                                    const char *filename);
> 
> 
> Please fix the white spaces here.  They should be tabs.
Done.

>>+		/* fw_entry->data is a char[], but we want a u32[] (sigh).
>>+		   There's really no good way to assemble four chars into
>>+		   an int, is there?  Probably the way which allows for the
>>+		   most optimization is to just do it by hand. */
> 
> 
> Please kill the obsolete comment.  Ditto for radeon below.
Done.

>>-	radeon_cp_load_microcode( dev_priv );
>>+	if (dev_priv->is_r200)
>>+	  err = radeon_cp_load_microcode( dev, dev_priv, "r200_cp_microcode" );
>>+	else
>>+	  err = radeon_cp_load_microcode( dev, dev_priv, "radeon_cp_microcode" );
> 
> 
> Please move this logic back into the function.

OK.  That's actually harder and more annoying to do than you might 
imagine; it was done this way to avoid code duplication, and hopefully 
make easier to merge the r128 and radeon versions.  See the changes.  I 
made the parallel change to the r128 version for consistency.  Most of 
the substantive change in the new patch is due to this change.

>>+		/* Error message already spewed by subroutine */
> 
> 
> Please kill this silly comment.  Same for r128 above.

Sure thing.  You have probably noticed by now that many of my comments 
in code are for my own benefit.  :-)

Attached is the new version.  It compiles.  I haven't been able to test 
it, but I hope it works.
[latest-drm.diff (text/x-patch, inline)]
diff -ruN linux-2.6.5/drivers/char/drm-old/Kconfig linux-2.6.5/drivers/char/drm/Kconfig
--- linux-2.6.5/drivers/char/drm-old/Kconfig	2004-04-18 15:45:08.000000000 -0400
+++ linux-2.6.5/drivers/char/drm/Kconfig	2004-04-20 16:35:26.000000000 -0400
@@ -32,6 +32,7 @@
 config DRM_R128
 	tristate "ATI Rage 128"
 	depends on DRM
+	select FW_LOADER
 	help
 	  Choose this option if you have an ATI Rage 128 graphics card.  If M
 	  is selected, the module will be called r128.  AGP support for
@@ -40,6 +41,7 @@
 config DRM_RADEON
 	tristate "ATI Radeon"
 	depends on DRM
+	select FW_LOADER
 	help
 	  Choose this option if you have an ATI Radeon graphics card.  There
 	  are both PCI and AGP versions.  You don't need to choose this to
diff -ruN linux-2.6.5/drivers/char/drm-old/Makefile linux-2.6.5/drivers/char/drm/Makefile
--- linux-2.6.5/drivers/char/drm-old/Makefile	2004-04-18 15:45:08.000000000 -0400
+++ linux-2.6.5/drivers/char/drm/Makefile	2004-04-20 16:35:26.000000000 -0400
@@ -4,11 +4,11 @@
 
 gamma-objs  := gamma_drv.o gamma_dma.o
 tdfx-objs   := tdfx_drv.o
-r128-objs   := r128_drv.o r128_cce.o r128_state.o r128_irq.o
+r128-objs   := r128_drv.o r128_cce.o r128_state.o r128_irq.o r128_firmware_loader.o
 mga-objs    := mga_drv.o mga_dma.o mga_state.o mga_warp.o mga_irq.o
 i810-objs   := i810_drv.o i810_dma.o
 i830-objs   := i830_drv.o i830_dma.o i830_irq.o
-radeon-objs := radeon_drv.o radeon_cp.o radeon_state.o radeon_mem.o radeon_irq.o
+radeon-objs := radeon_drv.o radeon_cp.o radeon_state.o radeon_mem.o radeon_irq.o radeon_firmware_loader.o
 ffb-objs    := ffb_drv.o ffb_context.o
 sis-objs    := sis_drv.o sis_ds.o sis_mm.o
 
diff -ruN linux-2.6.5/drivers/char/drm-old/r128_cce.c linux-2.6.5/drivers/char/drm/r128_cce.c
--- linux-2.6.5/drivers/char/drm-old/r128_cce.c	2004-04-18 15:45:08.000000000 -0400
+++ linux-2.6.5/drivers/char/drm/r128_cce.c	2004-04-23 14:25:57.000000000 -0400
@@ -3,6 +3,7 @@
  *
  * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas.
  * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
+ * Portions copyright 2004 Nathanael Nerode.
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -36,51 +37,6 @@
 
 #define R128_FIFO_DEBUG		0
 
-/* CCE microcode (from ATI) */
-static u32 r128_cce_microcode[] = {
-	0, 276838400, 0, 268449792, 2, 142, 2, 145, 0, 1076765731, 0,
-	1617039951, 0, 774592877, 0, 1987540286, 0, 2307490946U, 0,
-	599558925, 0, 589505315, 0, 596487092, 0, 589505315, 1,
-	11544576, 1, 206848, 1, 311296, 1, 198656, 2, 912273422, 11,
-	262144, 0, 0, 1, 33559837, 1, 7438, 1, 14809, 1, 6615, 12, 28,
-	1, 6614, 12, 28, 2, 23, 11, 18874368, 0, 16790922, 1, 409600, 9,
-	30, 1, 147854772, 16, 420483072, 3, 8192, 0, 10240, 1, 198656,
-	1, 15630, 1, 51200, 10, 34858, 9, 42, 1, 33559823, 2, 10276, 1,
-	15717, 1, 15718, 2, 43, 1, 15936948, 1, 570480831, 1, 14715071,
-	12, 322123831, 1, 33953125, 12, 55, 1, 33559908, 1, 15718, 2,
-	46, 4, 2099258, 1, 526336, 1, 442623, 4, 4194365, 1, 509952, 1,
-	459007, 3, 0, 12, 92, 2, 46, 12, 176, 1, 15734, 1, 206848, 1,
-	18432, 1, 133120, 1, 100670734, 1, 149504, 1, 165888, 1,
-	15975928, 1, 1048576, 6, 3145806, 1, 15715, 16, 2150645232U, 2,
-	268449859, 2, 10307, 12, 176, 1, 15734, 1, 15735, 1, 15630, 1,
-	15631, 1, 5253120, 6, 3145810, 16, 2150645232U, 1, 15864, 2, 82,
-	1, 343310, 1, 1064207, 2, 3145813, 1, 15728, 1, 7817, 1, 15729,
-	3, 15730, 12, 92, 2, 98, 1, 16168, 1, 16167, 1, 16002, 1, 16008,
-	1, 15974, 1, 15975, 1, 15990, 1, 15976, 1, 15977, 1, 15980, 0,
-	15981, 1, 10240, 1, 5253120, 1, 15720, 1, 198656, 6, 110, 1,
-	180224, 1, 103824738, 2, 112, 2, 3145839, 0, 536885440, 1,
-	114880, 14, 125, 12, 206975, 1, 33559995, 12, 198784, 0,
-	33570236, 1, 15803, 0, 15804, 3, 294912, 1, 294912, 3, 442370,
-	1, 11544576, 0, 811612160, 1, 12593152, 1, 11536384, 1,
-	14024704, 7, 310382726, 0, 10240, 1, 14796, 1, 14797, 1, 14793,
-	1, 14794, 0, 14795, 1, 268679168, 1, 9437184, 1, 268449792, 1,
-	198656, 1, 9452827, 1, 1075854602, 1, 1075854603, 1, 557056, 1,
-	114880, 14, 159, 12, 198784, 1, 1109409213, 12, 198783, 1,
-	1107312059, 12, 198784, 1, 1109409212, 2, 162, 1, 1075854781, 1,
-	1073757627, 1, 1075854780, 1, 540672, 1, 10485760, 6, 3145894,
-	16, 274741248, 9, 168, 3, 4194304, 3, 4209949, 0, 0, 0, 256, 14,
-	174, 1, 114857, 1, 33560007, 12, 176, 0, 10240, 1, 114858, 1,
-	33560018, 1, 114857, 3, 33560007, 1, 16008, 1, 114874, 1,
-	33560360, 1, 114875, 1, 33560154, 0, 15963, 0, 256, 0, 4096, 1,
-	409611, 9, 188, 0, 10240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
 int R128_READ_PLL(drm_device_t *dev, int addr)
 {
 	drm_r128_private_t *dev_priv = dev->dev_private;
@@ -149,7 +105,7 @@
 	return DRM_ERR(EBUSY);
 }
 
-static int r128_do_wait_for_idle( drm_r128_private_t *dev_priv )
+int r128_do_wait_for_idle( drm_r128_private_t *dev_priv )
 {
 	int i, ret;
 
@@ -175,24 +131,6 @@
  * CCE control, initialization
  */
 
-/* Load the microcode for the CCE */
-static void r128_cce_load_microcode( drm_r128_private_t *dev_priv )
-{
-	int i;
-
-	DRM_DEBUG( "\n" );
-
-	r128_do_wait_for_idle( dev_priv );
-
-	R128_WRITE( R128_PM4_MICROCODE_ADDR, 0 );
-	for ( i = 0 ; i < 256 ; i++ ) {
-		R128_WRITE( R128_PM4_MICROCODE_DATAH,
-			    r128_cce_microcode[i * 2] );
-		R128_WRITE( R128_PM4_MICROCODE_DATAL,
-			    r128_cce_microcode[i * 2 + 1] );
-	}
-}
-
 /* Flush any pending commands to the CCE.  This should only be used just
  * prior to a wait for idle, as it informs the engine that the command
  * stream is ending.
@@ -371,6 +309,7 @@
 static int r128_do_init_cce( drm_device_t *dev, drm_r128_init_t *init )
 {
 	drm_r128_private_t *dev_priv;
+	int err;
 
 	DRM_DEBUG( "\n" );
 
@@ -603,7 +542,13 @@
 #endif
 
 	r128_cce_init_ring_buffer( dev, dev_priv );
-	r128_cce_load_microcode( dev_priv );
+
+	err = r128_cce_load_microcode( dev, dev_priv );
+	if (err) {
+		dev->dev_private = (void *)dev_priv;
+		r128_do_cleanup_cce( dev );
+		return err;
+	}
 
 	dev->dev_private = (void *)dev_priv;
 
diff -ruN linux-2.6.5/drivers/char/drm-old/r128_drv.h linux-2.6.5/drivers/char/drm/r128_drv.h
--- linux-2.6.5/drivers/char/drm-old/r128_drv.h	2004-04-18 15:45:08.000000000 -0400
+++ linux-2.6.5/drivers/char/drm/r128_drv.h	2004-04-23 14:33:16.000000000 -0400
@@ -140,6 +140,7 @@
 		ring->space += ring->size;
 }
 
+extern int r128_do_wait_for_idle( drm_r128_private_t *dev_priv );
 extern int r128_do_cce_idle( drm_r128_private_t *dev_priv );
 extern int r128_do_cleanup_cce( drm_device_t *dev );
 extern int r128_do_cleanup_pageflip( drm_device_t *dev );
@@ -155,6 +156,10 @@
 extern int r128_cce_stipple( DRM_IOCTL_ARGS );
 extern int r128_cce_indirect( DRM_IOCTL_ARGS );
 
+				/* r128_firmware_loader.c
+				or r128_firmware.c */
+extern int r128_cce_load_microcode( drm_device_t *dev,
+				    drm_r128_private_t *dev_priv);
 
 /* Register definitions, register access macros and drmAddMap constants
  * for Rage 128 kernel driver.
diff -ruN linux-2.6.5/drivers/char/drm-old/r128_firmware.c linux-2.6.5/drivers/char/drm/r128_firmware.c
--- linux-2.6.5/drivers/char/drm-old/r128_firmware.c	1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.5/drivers/char/drm/r128_firmware.c	2004-04-23 14:31:20.000000000 -0400
@@ -0,0 +1,105 @@
+/* r128_firmware.c -- ATI Rage 128 firmware -*- linux-c -*-
+ *
+ * Firmware probably copyright ATI.  (No clear license.)
+ *
+ * The remainder:
+ * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas.
+ * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
+ * Copyright 2004 Nathanael Nerode.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Gareth Hughes <gareth@valinux.com>
+ *    Nathanael Nerode <neroden@gcc.gnu.org>
+ *    And whoever wrote the firmware.
+ */
+
+#include "r128.h"
+#include "drmP.h"
+#include "drm.h"
+#include "r128_drm.h"
+#include "r128_drv.h"
+
+/* CCE microcode (from ATI) */
+static unsigned int r128_cce_microcode[] = {
+	0, 276838400, 0, 268449792, 2, 142, 2, 145, 0, 1076765731, 0,
+	1617039951, 0, 774592877, 0, 1987540286, 0, 2307490946U, 0,
+	599558925, 0, 589505315, 0, 596487092, 0, 589505315, 1,
+	11544576, 1, 206848, 1, 311296, 1, 198656, 2, 912273422, 11,
+	262144, 0, 0, 1, 33559837, 1, 7438, 1, 14809, 1, 6615, 12, 28,
+	1, 6614, 12, 28, 2, 23, 11, 18874368, 0, 16790922, 1, 409600, 9,
+	30, 1, 147854772, 16, 420483072, 3, 8192, 0, 10240, 1, 198656,
+	1, 15630, 1, 51200, 10, 34858, 9, 42, 1, 33559823, 2, 10276, 1,
+	15717, 1, 15718, 2, 43, 1, 15936948, 1, 570480831, 1, 14715071,
+	12, 322123831, 1, 33953125, 12, 55, 1, 33559908, 1, 15718, 2,
+	46, 4, 2099258, 1, 526336, 1, 442623, 4, 4194365, 1, 509952, 1,
+	459007, 3, 0, 12, 92, 2, 46, 12, 176, 1, 15734, 1, 206848, 1,
+	18432, 1, 133120, 1, 100670734, 1, 149504, 1, 165888, 1,
+	15975928, 1, 1048576, 6, 3145806, 1, 15715, 16, 2150645232U, 2,
+	268449859, 2, 10307, 12, 176, 1, 15734, 1, 15735, 1, 15630, 1,
+	15631, 1, 5253120, 6, 3145810, 16, 2150645232U, 1, 15864, 2, 82,
+	1, 343310, 1, 1064207, 2, 3145813, 1, 15728, 1, 7817, 1, 15729,
+	3, 15730, 12, 92, 2, 98, 1, 16168, 1, 16167, 1, 16002, 1, 16008,
+	1, 15974, 1, 15975, 1, 15990, 1, 15976, 1, 15977, 1, 15980, 0,
+	15981, 1, 10240, 1, 5253120, 1, 15720, 1, 198656, 6, 110, 1,
+	180224, 1, 103824738, 2, 112, 2, 3145839, 0, 536885440, 1,
+	114880, 14, 125, 12, 206975, 1, 33559995, 12, 198784, 0,
+	33570236, 1, 15803, 0, 15804, 3, 294912, 1, 294912, 3, 442370,
+	1, 11544576, 0, 811612160, 1, 12593152, 1, 11536384, 1,
+	14024704, 7, 310382726, 0, 10240, 1, 14796, 1, 14797, 1, 14793,
+	1, 14794, 0, 14795, 1, 268679168, 1, 9437184, 1, 268449792, 1,
+	198656, 1, 9452827, 1, 1075854602, 1, 1075854603, 1, 557056, 1,
+	114880, 14, 159, 12, 198784, 1, 1109409213, 12, 198783, 1,
+	1107312059, 12, 198784, 1, 1109409212, 2, 162, 1, 1075854781, 1,
+	1073757627, 1, 1075854780, 1, 540672, 1, 10485760, 6, 3145894,
+	16, 274741248, 9, 168, 3, 4194304, 3, 4209949, 0, 0, 0, 256, 14,
+	174, 1, 114857, 1, 33560007, 12, 176, 0, 10240, 1, 114858, 1,
+	33560018, 1, 114857, 3, 33560007, 1, 16008, 1, 114874, 1,
+	33560360, 1, 114875, 1, 33560154, 0, 15963, 0, 256, 0, 4096, 1,
+	409611, 9, 188, 0, 10240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+/* Load the microcode for the CCE */
+int r128_cce_load_microcode( drm_device_t *dev,
+			     drm_r128_private_t *dev_priv)
+{
+	int i;
+
+	DRM_DEBUG( "\n" );
+
+	r128_do_wait_for_idle( dev_priv );
+
+	R128_WRITE( R128_PM4_MICROCODE_ADDR, 0 );
+	for ( i = 0 ; i < 256 ; i++ ) {
+		R128_WRITE( R128_PM4_MICROCODE_DATAH,
+			    r128_cce_microcode[i * 2] );
+		R128_WRITE( R128_PM4_MICROCODE_DATAL,
+			    r128_cce_microcode[i * 2 + 1] );
+	}
+	return 0;
+}
diff -ruN linux-2.6.5/drivers/char/drm-old/r128_firmware_loader.c linux-2.6.5/drivers/char/drm/r128_firmware_loader.c
--- linux-2.6.5/drivers/char/drm-old/r128_firmware_loader.c	1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.5/drivers/char/drm/r128_firmware_loader.c	2004-04-23 14:35:22.000000000 -0400
@@ -0,0 +1,97 @@
+/* r128_firmware_loader.c -- ATI Rage 128 firmare loader -*- linux-c -*-
+ *
+ * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas.
+ * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
+ * Copyright 2003 Nathanael Nerode.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Gareth Hughes <gareth@valinux.com>
+ *    Nathanael Nerode <neroden@gcc.gnu.org>
+ */
+
+/* One and only one of this and r128_firmware.c should be linked in */
+
+#include <asm/byteorder.h>
+#include <linux/string.h>
+
+#include <linux/device.h>
+#include <linux/firmware.h>
+
+#include "r128.h"
+#include "drmP.h"
+#include "drm.h"
+#include "r128_drm.h"
+#include "r128_drv.h"
+
+/* Load the microcode for the CCE */
+int r128_cce_load_microcode( drm_device_t *dev,
+			     drm_r128_private_t *dev_priv)
+{
+	int i, err;
+	u32 temp_h, temp_l;
+	const struct firmware *fw_entry = NULL;
+
+	/* The 'dev' thing is uncovering the struct device buried in
+	   drm_device_t (via pci_device) */
+	err = request_firmware( &fw_entry, "r128_cce_microcode",
+				&(dev->pdev->dev) );
+	if (err) {
+		DRM_ERROR("Firmware file \"%s\" not available.\n",
+			  "r128_cce_microcode");
+		return err;
+	}
+
+	/* Assumes 256 x 2 x 32 bits of data */
+	if (fw_entry->size != 256 * 4 * 2) {
+		DRM_ERROR("Firmware file \"%s\" wrong size!\n",
+			  "r128_cce_microcode");
+		release_firmware(fw_entry);
+		return DRM_ERR(EINVAL);
+	}
+
+	DRM_DEBUG( "\n" );
+
+	r128_do_wait_for_idle( dev_priv );
+
+	R128_WRITE( R128_PM4_MICROCODE_ADDR, 0 );
+
+	for ( i = 0 ; i < 256 ; i++ ) {
+
+		/* We assume the incoming data is in little-endian byte order,
+		   since we would like the firmware file to be
+		   architecture-independent.  Data will likely be swapped
+		   twice on big-endian machines (once here, and
+		   once in writel); with luck the compiler will optimize
+		   that away. */
+
+		memcpy(&temp_h, &(fw_entry->data[i*8]), 4);
+		memcpy(&temp_l, &(fw_entry->data[i*8 + 4]), 4);
+
+		R128_WRITE( R128_PM4_MICROCODE_DATAH, le32_to_cpu(temp_h) );
+		R128_WRITE( R128_PM4_MICROCODE_DATAL, le32_to_cpu(temp_l) );
+
+	}
+	release_firmware(fw_entry);
+
+	return 0;
+}
diff -ruN linux-2.6.5/drivers/char/drm-old/radeon_cp.c linux-2.6.5/drivers/char/drm/radeon_cp.c
--- linux-2.6.5/drivers/char/drm-old/radeon_cp.c	2004-04-18 15:45:08.000000000 -0400
+++ linux-2.6.5/drivers/char/drm/radeon_cp.c	2004-04-23 14:39:42.000000000 -0400
@@ -2,6 +2,7 @@
  *
  * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas.
  * Copyright 2000 VA Linux Systems, Inc., Fremont, California.
+ * Portions copyright 2004 Nathanael Nerode.
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -36,528 +37,6 @@
 
 #define RADEON_FIFO_DEBUG	0
 
-
-/* CP microcode (from ATI) */
-static u32 R200_cp_microcode[][2] = {
-	{ 0x21007000, 0000000000 },        
-	{ 0x20007000, 0000000000 }, 
-	{ 0x000000ab, 0x00000004 },
-	{ 0x000000af, 0x00000004 },
-	{ 0x66544a49, 0000000000 },
-	{ 0x49494174, 0000000000 },
-	{ 0x54517d83, 0000000000 },
-	{ 0x498d8b64, 0000000000 },
-	{ 0x49494949, 0000000000 },
-	{ 0x49da493c, 0000000000 },
-	{ 0x49989898, 0000000000 },
-	{ 0xd34949d5, 0000000000 },
-	{ 0x9dc90e11, 0000000000 },
-	{ 0xce9b9b9b, 0000000000 },
-	{ 0x000f0000, 0x00000016 },
-	{ 0x352e232c, 0000000000 },
-	{ 0x00000013, 0x00000004 },
-	{ 0x000f0000, 0x00000016 },
-	{ 0x352e272c, 0000000000 },
-	{ 0x000f0001, 0x00000016 },
-	{ 0x3239362f, 0000000000 },
-	{ 0x000077ef, 0x00000002 },
-	{ 0x00061000, 0x00000002 },
-	{ 0x00000020, 0x0000001a },
-	{ 0x00004000, 0x0000001e },
-	{ 0x00061000, 0x00000002 },
-	{ 0x00000020, 0x0000001a },
-	{ 0x00004000, 0x0000001e },
-	{ 0x00061000, 0x00000002 },
-	{ 0x00000020, 0x0000001a },
-	{ 0x00004000, 0x0000001e },
-	{ 0x00000016, 0x00000004 },
-	{ 0x0003802a, 0x00000002 },
-	{ 0x040067e0, 0x00000002 },
-	{ 0x00000016, 0x00000004 },
-	{ 0x000077e0, 0x00000002 },
-	{ 0x00065000, 0x00000002 },
-	{ 0x000037e1, 0x00000002 },
-	{ 0x040067e1, 0x00000006 },
-	{ 0x000077e0, 0x00000002 },
-	{ 0x000077e1, 0x00000002 },
-	{ 0x000077e1, 0x00000006 },
-	{ 0xffffffff, 0000000000 },
-	{ 0x10000000, 0000000000 },
-	{ 0x0003802a, 0x00000002 },
-	{ 0x040067e0, 0x00000006 },
-	{ 0x00007675, 0x00000002 },
-	{ 0x00007676, 0x00000002 },
-	{ 0x00007677, 0x00000002 },
-	{ 0x00007678, 0x00000006 },
-	{ 0x0003802b, 0x00000002 },
-	{ 0x04002676, 0x00000002 },
-	{ 0x00007677, 0x00000002 },
-	{ 0x00007678, 0x00000006 },
-	{ 0x0000002e, 0x00000018 },
-	{ 0x0000002e, 0x00000018 },
-	{ 0000000000, 0x00000006 },
-	{ 0x0000002f, 0x00000018 },
-	{ 0x0000002f, 0x00000018 },
-	{ 0000000000, 0x00000006 },
-	{ 0x01605000, 0x00000002 },
-	{ 0x00065000, 0x00000002 },
-	{ 0x00098000, 0x00000002 },
-	{ 0x00061000, 0x00000002 },
-	{ 0x64c0603d, 0x00000004 },
-	{ 0x00080000, 0x00000016 },
-	{ 0000000000, 0000000000 },
-	{ 0x0400251d, 0x00000002 },
-	{ 0x00007580, 0x00000002 },
-	{ 0x00067581, 0x00000002 },
-	{ 0x04002580, 0x00000002 },
-	{ 0x00067581, 0x00000002 },
-	{ 0x00000046, 0x00000004 },
-	{ 0x00005000, 0000000000 },
-	{ 0x00061000, 0x00000002 },
-	{ 0x0000750e, 0x00000002 },
-	{ 0x00019000, 0x00000002 },
-	{ 0x00011055, 0x00000014 },
-	{ 0x00000055, 0x00000012 },
-	{ 0x0400250f, 0x00000002 },
-	{ 0x0000504a, 0x00000004 },
-	{ 0x00007565, 0x00000002 },
-	{ 0x00007566, 0x00000002 },
-	{ 0x00000051, 0x00000004 },
-	{ 0x01e655b4, 0x00000002 },
-	{ 0x4401b0dc, 0x00000002 },
-	{ 0x01c110dc, 0x00000002 },
-	{ 0x2666705d, 0x00000018 },
-	{ 0x040c2565, 0x00000002 },
-	{ 0x0000005d, 0x00000018 },
-	{ 0x04002564, 0x00000002 },
-	{ 0x00007566, 0x00000002 },
-	{ 0x00000054, 0x00000004 },
-	{ 0x00401060, 0x00000008 },
-	{ 0x00101000, 0x00000002 },
-	{ 0x000d80ff, 0x00000002 },
-	{ 0x00800063, 0x00000008 },
-	{ 0x000f9000, 0x00000002 },
-	{ 0x000e00ff, 0x00000002 },
-	{ 0000000000, 0x00000006 },
-	{ 0x00000080, 0x00000018 },
-	{ 0x00000054, 0x00000004 },
-	{ 0x00007576, 0x00000002 },
-	{ 0x00065000, 0x00000002 },
-	{ 0x00009000, 0x00000002 },
-	{ 0x00041000, 0x00000002 },
-	{ 0x0c00350e, 0x00000002 },
-	{ 0x00049000, 0x00000002 },
-	{ 0x00051000, 0x00000002 },
-	{ 0x01e785f8, 0x00000002 },
-	{ 0x00200000, 0x00000002 },
-	{ 0x00600073, 0x0000000c },
-	{ 0x00007563, 0x00000002 },
-	{ 0x006075f0, 0x00000021 },
-	{ 0x20007068, 0x00000004 },
-	{ 0x00005068, 0x00000004 },
-	{ 0x00007576, 0x00000002 },
-	{ 0x00007577, 0x00000002 },
-	{ 0x0000750e, 0x00000002 },
-	{ 0x0000750f, 0x00000002 },
-	{ 0x00a05000, 0x00000002 },
-	{ 0x00600076, 0x0000000c },
-	{ 0x006075f0, 0x00000021 },
-	{ 0x000075f8, 0x00000002 },
-	{ 0x00000076, 0x00000004 },
-	{ 0x000a750e, 0x00000002 },
-	{ 0x0020750f, 0x00000002 },
-	{ 0x00600079, 0x00000004 },
-	{ 0x00007570, 0x00000002 },
-	{ 0x00007571, 0x00000002 },
-	{ 0x00007572, 0x00000006 },
-	{ 0x00005000, 0x00000002 },
-	{ 0x00a05000, 0x00000002 },
-	{ 0x00007568, 0x00000002 },
-	{ 0x00061000, 0x00000002 },
-	{ 0x00000084, 0x0000000c },
-	{ 0x00058000, 0x00000002 },
-	{ 0x0c607562, 0x00000002 },
-	{ 0x00000086, 0x00000004 },
-	{ 0x00600085, 0x00000004 },
-	{ 0x400070dd, 0000000000 },
-	{ 0x000380dd, 0x00000002 },
-	{ 0x00000093, 0x0000001c },
-	{ 0x00065095, 0x00000018 },
-	{ 0x040025bb, 0x00000002 },
-	{ 0x00061096, 0x00000018 },
-	{ 0x040075bc, 0000000000 },
-	{ 0x000075bb, 0x00000002 },
-	{ 0x000075bc, 0000000000 },
-	{ 0x00090000, 0x00000006 },
-	{ 0x00090000, 0x00000002 },
-	{ 0x000d8002, 0x00000006 },
-	{ 0x00005000, 0x00000002 },
-	{ 0x00007821, 0x00000002 },
-	{ 0x00007800, 0000000000 },
-	{ 0x00007821, 0x00000002 },
-	{ 0x00007800, 0000000000 },
-	{ 0x01665000, 0x00000002 },
-	{ 0x000a0000, 0x00000002 },
-	{ 0x000671cc, 0x00000002 },
-	{ 0x0286f1cd, 0x00000002 },
-	{ 0x000000a3, 0x00000010 },
-	{ 0x21007000, 0000000000 },
-	{ 0x000000aa, 0x0000001c },
-	{ 0x00065000, 0x00000002 },
-	{ 0x000a0000, 0x00000002 },
-	{ 0x00061000, 0x00000002 },
-	{ 0x000b0000, 0x00000002 },
-	{ 0x38067000, 0x00000002 },
-	{ 0x000a00a6, 0x00000004 },
-	{ 0x20007000, 0000000000 },
-	{ 0x01200000, 0x00000002 },
-	{ 0x20077000, 0x00000002 },
-	{ 0x01200000, 0x00000002 },
-	{ 0x20007000, 0000000000 },
-	{ 0x00061000, 0x00000002 },
-	{ 0x0120751b, 0x00000002 },
-	{ 0x8040750a, 0x00000002 },
-	{ 0x8040750b, 0x00000002 },
-	{ 0x00110000, 0x00000002 },
-	{ 0x000380dd, 0x00000002 },
-	{ 0x000000bd, 0x0000001c },
-	{ 0x00061096, 0x00000018 },
-	{ 0x844075bd, 0x00000002 },
-	{ 0x00061095, 0x00000018 },
-	{ 0x840075bb, 0x00000002 },
-	{ 0x00061096, 0x00000018 },
-	{ 0x844075bc, 0x00000002 },
-	{ 0x000000c0, 0x00000004 },
-	{ 0x804075bd, 0x00000002 },
-	{ 0x800075bb, 0x00000002 },
-	{ 0x804075bc, 0x00000002 },
-	{ 0x00108000, 0x00000002 },
-	{ 0x01400000, 0x00000002 },
-	{ 0x006000c4, 0x0000000c },
-	{ 0x20c07000, 0x00000020 },
-	{ 0x000000c6, 0x00000012 },
-	{ 0x00800000, 0x00000006 },
-	{ 0x0080751d, 0x00000006 },
-	{ 0x000025bb, 0x00000002 },
-	{ 0x000040c0, 0x00000004 },
-	{ 0x0000775c, 0x00000002 },
-	{ 0x00a05000, 0x00000002 },
-	{ 0x00661000, 0x00000002 },
-	{ 0x0460275d, 0x00000020 },
-	{ 0x00004000, 0000000000 },
-	{ 0x00007999, 0x00000002 },
-	{ 0x00a05000, 0x00000002 },
-	{ 0x00661000, 0x00000002 },
-	{ 0x0460299b, 0x00000020 },
-	{ 0x00004000, 0000000000 },
-	{ 0x01e00830, 0x00000002 },
-	{ 0x21007000, 0000000000 },
-	{ 0x00005000, 0x00000002 },
-	{ 0x00038042, 0x00000002 },
-	{ 0x040025e0, 0x00000002 },
-	{ 0x000075e1, 0000000000 },
-	{ 0x00000001, 0000000000 },
-	{ 0x000380d9, 0x00000002 },
-	{ 0x04007394, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-};
-
-
-static u32 radeon_cp_microcode[][2] = {
-	{ 0x21007000, 0000000000 },
-	{ 0x20007000, 0000000000 },
-	{ 0x000000b4, 0x00000004 },
-	{ 0x000000b8, 0x00000004 },
-	{ 0x6f5b4d4c, 0000000000 },
-	{ 0x4c4c427f, 0000000000 },
-	{ 0x5b568a92, 0000000000 },
-	{ 0x4ca09c6d, 0000000000 },
-	{ 0xad4c4c4c, 0000000000 },
-	{ 0x4ce1af3d, 0000000000 },
-	{ 0xd8afafaf, 0000000000 },
-	{ 0xd64c4cdc, 0000000000 },
-	{ 0x4cd10d10, 0000000000 },
-	{ 0x000f0000, 0x00000016 },
-	{ 0x362f242d, 0000000000 },
-	{ 0x00000012, 0x00000004 },
-	{ 0x000f0000, 0x00000016 },
-	{ 0x362f282d, 0000000000 },
-	{ 0x000380e7, 0x00000002 },
-	{ 0x04002c97, 0x00000002 },
-	{ 0x000f0001, 0x00000016 },
-	{ 0x333a3730, 0000000000 },
-	{ 0x000077ef, 0x00000002 },
-	{ 0x00061000, 0x00000002 },
-	{ 0x00000021, 0x0000001a },
-	{ 0x00004000, 0x0000001e },
-	{ 0x00061000, 0x00000002 },
-	{ 0x00000021, 0x0000001a },
-	{ 0x00004000, 0x0000001e },
-	{ 0x00061000, 0x00000002 },
-	{ 0x00000021, 0x0000001a },
-	{ 0x00004000, 0x0000001e },
-	{ 0x00000017, 0x00000004 },
-	{ 0x0003802b, 0x00000002 },
-	{ 0x040067e0, 0x00000002 },
-	{ 0x00000017, 0x00000004 },
-	{ 0x000077e0, 0x00000002 },
-	{ 0x00065000, 0x00000002 },
-	{ 0x000037e1, 0x00000002 },
-	{ 0x040067e1, 0x00000006 },
-	{ 0x000077e0, 0x00000002 },
-	{ 0x000077e1, 0x00000002 },
-	{ 0x000077e1, 0x00000006 },
-	{ 0xffffffff, 0000000000 },
-	{ 0x10000000, 0000000000 },
-	{ 0x0003802b, 0x00000002 },
-	{ 0x040067e0, 0x00000006 },
-	{ 0x00007675, 0x00000002 },
-	{ 0x00007676, 0x00000002 },
-	{ 0x00007677, 0x00000002 },
-	{ 0x00007678, 0x00000006 },
-	{ 0x0003802c, 0x00000002 },
-	{ 0x04002676, 0x00000002 },
-	{ 0x00007677, 0x00000002 },
-	{ 0x00007678, 0x00000006 },
-	{ 0x0000002f, 0x00000018 },
-	{ 0x0000002f, 0x00000018 },
-	{ 0000000000, 0x00000006 },
-	{ 0x00000030, 0x00000018 },
-	{ 0x00000030, 0x00000018 },
-	{ 0000000000, 0x00000006 },
-	{ 0x01605000, 0x00000002 },
-	{ 0x00065000, 0x00000002 },
-	{ 0x00098000, 0x00000002 },
-	{ 0x00061000, 0x00000002 },
-	{ 0x64c0603e, 0x00000004 },
-	{ 0x000380e6, 0x00000002 },
-	{ 0x040025c5, 0x00000002 },
-	{ 0x00080000, 0x00000016 },
-	{ 0000000000, 0000000000 },
-	{ 0x0400251d, 0x00000002 },
-	{ 0x00007580, 0x00000002 },
-	{ 0x00067581, 0x00000002 },
-	{ 0x04002580, 0x00000002 },
-	{ 0x00067581, 0x00000002 },
-	{ 0x00000049, 0x00000004 },
-	{ 0x00005000, 0000000000 },
-	{ 0x000380e6, 0x00000002 },
-	{ 0x040025c5, 0x00000002 },
-	{ 0x00061000, 0x00000002 },
-	{ 0x0000750e, 0x00000002 },
-	{ 0x00019000, 0x00000002 },
-	{ 0x00011055, 0x00000014 },
-	{ 0x00000055, 0x00000012 },
-	{ 0x0400250f, 0x00000002 },
-	{ 0x0000504f, 0x00000004 },
-	{ 0x000380e6, 0x00000002 },
-	{ 0x040025c5, 0x00000002 },
-	{ 0x00007565, 0x00000002 },
-	{ 0x00007566, 0x00000002 },
-	{ 0x00000058, 0x00000004 },
-	{ 0x000380e6, 0x00000002 },
-	{ 0x040025c5, 0x00000002 },
-	{ 0x01e655b4, 0x00000002 },
-	{ 0x4401b0e4, 0x00000002 },
-	{ 0x01c110e4, 0x00000002 },
-	{ 0x26667066, 0x00000018 },
-	{ 0x040c2565, 0x00000002 },
-	{ 0x00000066, 0x00000018 },
-	{ 0x04002564, 0x00000002 },
-	{ 0x00007566, 0x00000002 },
-	{ 0x0000005d, 0x00000004 },
-	{ 0x00401069, 0x00000008 },
-	{ 0x00101000, 0x00000002 },
-	{ 0x000d80ff, 0x00000002 },
-	{ 0x0080006c, 0x00000008 },
-	{ 0x000f9000, 0x00000002 },
-	{ 0x000e00ff, 0x00000002 },
-	{ 0000000000, 0x00000006 },
-	{ 0x0000008f, 0x00000018 },
-	{ 0x0000005b, 0x00000004 },
-	{ 0x000380e6, 0x00000002 },
-	{ 0x040025c5, 0x00000002 },
-	{ 0x00007576, 0x00000002 },
-	{ 0x00065000, 0x00000002 },
-	{ 0x00009000, 0x00000002 },
-	{ 0x00041000, 0x00000002 },
-	{ 0x0c00350e, 0x00000002 },
-	{ 0x00049000, 0x00000002 },
-	{ 0x00051000, 0x00000002 },
-	{ 0x01e785f8, 0x00000002 },
-	{ 0x00200000, 0x00000002 },
-	{ 0x0060007e, 0x0000000c },
-	{ 0x00007563, 0x00000002 },
-	{ 0x006075f0, 0x00000021 },
-	{ 0x20007073, 0x00000004 },
-	{ 0x00005073, 0x00000004 },
-	{ 0x000380e6, 0x00000002 },
-	{ 0x040025c5, 0x00000002 },
-	{ 0x00007576, 0x00000002 },
-	{ 0x00007577, 0x00000002 },
-	{ 0x0000750e, 0x00000002 },
-	{ 0x0000750f, 0x00000002 },
-	{ 0x00a05000, 0x00000002 },
-	{ 0x00600083, 0x0000000c },
-	{ 0x006075f0, 0x00000021 },
-	{ 0x000075f8, 0x00000002 },
-	{ 0x00000083, 0x00000004 },
-	{ 0x000a750e, 0x00000002 },
-	{ 0x000380e6, 0x00000002 },
-	{ 0x040025c5, 0x00000002 },
-	{ 0x0020750f, 0x00000002 },
-	{ 0x00600086, 0x00000004 },
-	{ 0x00007570, 0x00000002 },
-	{ 0x00007571, 0x00000002 },
-	{ 0x00007572, 0x00000006 },
-	{ 0x000380e6, 0x00000002 },
-	{ 0x040025c5, 0x00000002 },
-	{ 0x00005000, 0x00000002 },
-	{ 0x00a05000, 0x00000002 },
-	{ 0x00007568, 0x00000002 },
-	{ 0x00061000, 0x00000002 },
-	{ 0x00000095, 0x0000000c },
-	{ 0x00058000, 0x00000002 },
-	{ 0x0c607562, 0x00000002 },
-	{ 0x00000097, 0x00000004 },
-	{ 0x000380e6, 0x00000002 },
-	{ 0x040025c5, 0x00000002 },
-	{ 0x00600096, 0x00000004 },
-	{ 0x400070e5, 0000000000 },
-	{ 0x000380e6, 0x00000002 },
-	{ 0x040025c5, 0x00000002 },
-	{ 0x000380e5, 0x00000002 },
-	{ 0x000000a8, 0x0000001c },
-	{ 0x000650aa, 0x00000018 },
-	{ 0x040025bb, 0x00000002 },
-	{ 0x000610ab, 0x00000018 },
-	{ 0x040075bc, 0000000000 },
-	{ 0x000075bb, 0x00000002 },
-	{ 0x000075bc, 0000000000 },
-	{ 0x00090000, 0x00000006 },
-	{ 0x00090000, 0x00000002 },
-	{ 0x000d8002, 0x00000006 },
-	{ 0x00007832, 0x00000002 },
-	{ 0x00005000, 0x00000002 },
-	{ 0x000380e7, 0x00000002 },
-	{ 0x04002c97, 0x00000002 },
-	{ 0x00007820, 0x00000002 },
-	{ 0x00007821, 0x00000002 },
-	{ 0x00007800, 0000000000 },
-	{ 0x01200000, 0x00000002 },
-	{ 0x20077000, 0x00000002 },
-	{ 0x01200000, 0x00000002 },
-	{ 0x20007000, 0x00000002 },
-	{ 0x00061000, 0x00000002 },
-	{ 0x0120751b, 0x00000002 },
-	{ 0x8040750a, 0x00000002 },
-	{ 0x8040750b, 0x00000002 },
-	{ 0x00110000, 0x00000002 },
-	{ 0x000380e5, 0x00000002 },
-	{ 0x000000c6, 0x0000001c },
-	{ 0x000610ab, 0x00000018 },
-	{ 0x844075bd, 0x00000002 },
-	{ 0x000610aa, 0x00000018 },
-	{ 0x840075bb, 0x00000002 },
-	{ 0x000610ab, 0x00000018 },
-	{ 0x844075bc, 0x00000002 },
-	{ 0x000000c9, 0x00000004 },
-	{ 0x804075bd, 0x00000002 },
-	{ 0x800075bb, 0x00000002 },
-	{ 0x804075bc, 0x00000002 },
-	{ 0x00108000, 0x00000002 },
-	{ 0x01400000, 0x00000002 },
-	{ 0x006000cd, 0x0000000c },
-	{ 0x20c07000, 0x00000020 },
-	{ 0x000000cf, 0x00000012 },
-	{ 0x00800000, 0x00000006 },
-	{ 0x0080751d, 0x00000006 },
-	{ 0000000000, 0000000000 },
-	{ 0x0000775c, 0x00000002 },
-	{ 0x00a05000, 0x00000002 },
-	{ 0x00661000, 0x00000002 },
-	{ 0x0460275d, 0x00000020 },
-	{ 0x00004000, 0000000000 },
-	{ 0x01e00830, 0x00000002 },
-	{ 0x21007000, 0000000000 },
-	{ 0x6464614d, 0000000000 },
-	{ 0x69687420, 0000000000 },
-	{ 0x00000073, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0x00005000, 0x00000002 },
-	{ 0x000380d0, 0x00000002 },
-	{ 0x040025e0, 0x00000002 },
-	{ 0x000075e1, 0000000000 },
-	{ 0x00000001, 0000000000 },
-	{ 0x000380e0, 0x00000002 },
-	{ 0x04002394, 0x00000002 },
-	{ 0x00005000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0x00000008, 0000000000 },
-	{ 0x00000004, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-	{ 0000000000, 0000000000 },
-};
-
-
 int RADEON_READ_PLL(drm_device_t *dev, int addr)
 {
 	drm_radeon_private_t *dev_priv = dev->dev_private;
@@ -641,7 +120,7 @@
 	return DRM_ERR(EBUSY);
 }
 
-static int radeon_do_wait_for_idle( drm_radeon_private_t *dev_priv )
+int radeon_do_wait_for_idle( drm_radeon_private_t *dev_priv )
 {
 	int i, ret;
 
@@ -671,38 +150,6 @@
  * CP control, initialization
  */
 
-/* Load the microcode for the CP */
-static void radeon_cp_load_microcode( drm_radeon_private_t *dev_priv )
-{
-	int i;
-	DRM_DEBUG( "\n" );
-
-	radeon_do_wait_for_idle( dev_priv );
-
-	RADEON_WRITE( RADEON_CP_ME_RAM_ADDR, 0 );
-
-	if (dev_priv->is_r200)
-	{
-		DRM_INFO("Loading R200 Microcode\n");
-		for ( i = 0 ; i < 256 ; i++ ) 
-		{
-			RADEON_WRITE( RADEON_CP_ME_RAM_DATAH,
-				      R200_cp_microcode[i][1] );
-			RADEON_WRITE( RADEON_CP_ME_RAM_DATAL,
-				      R200_cp_microcode[i][0] );
-		}
-	}
-	else
-	{
-		for ( i = 0 ; i < 256 ; i++ ) {
-			RADEON_WRITE( RADEON_CP_ME_RAM_DATAH,
-				      radeon_cp_microcode[i][1] );
-			RADEON_WRITE( RADEON_CP_ME_RAM_DATAL,
-				      radeon_cp_microcode[i][0] );
-		}
-	}
-}
-
 /* Flush any pending commands to the CP.  This should only be used just
  * prior to a wait for idle, as it informs the engine that the command
  * stream is ending.
@@ -1002,6 +449,7 @@
 
 static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
 {
+	int err;
 	drm_radeon_private_t *dev_priv;
 	DRM_DEBUG( "\n" );
 
@@ -1255,7 +703,13 @@
 		radeon_set_pcigart( dev_priv, 1 );
 	}
 
-	radeon_cp_load_microcode( dev_priv );
+	err = radeon_cp_load_microcode( dev, dev_priv );
+	if (err) {
+		dev->dev_private = (void *)dev_priv;
+		radeon_do_cleanup_cp(dev);
+		return err;
+	}
+
 	radeon_cp_init_ring_buffer( dev, dev_priv );
 
 	dev_priv->last_buf = 0;
@@ -1316,6 +770,7 @@
  */
 static int radeon_do_resume_cp( drm_device_t *dev )
 {
+	int err;
 	drm_radeon_private_t *dev_priv = dev->dev_private;
 
 	if ( !dev_priv ) {
@@ -1336,7 +791,11 @@
 		radeon_set_pcigart( dev_priv, 1 );
 	}
 
-	radeon_cp_load_microcode( dev_priv );
+	err = radeon_cp_load_microcode( dev, dev_priv);
+	if (err) {
+		return err;
+	}
+
 	radeon_cp_init_ring_buffer( dev, dev_priv );
 
 	radeon_do_engine_reset( dev );
diff -ruN linux-2.6.5/drivers/char/drm-old/radeon_drv.h linux-2.6.5/drivers/char/drm/radeon_drv.h
--- linux-2.6.5/drivers/char/drm-old/radeon_drv.h	2004-04-18 15:45:08.000000000 -0400
+++ linux-2.6.5/drivers/char/drm/radeon_drv.h	2004-04-23 14:33:26.000000000 -0400
@@ -169,6 +169,7 @@
 
 extern int radeon_wait_ring( drm_radeon_private_t *dev_priv, int n );
 
+extern int radeon_do_wait_for_idle (drm_radeon_private_t *dev_priv);
 extern int radeon_do_cp_idle( drm_radeon_private_t *dev_priv );
 extern int radeon_do_cleanup_cp( drm_device_t *dev );
 extern int radeon_do_cleanup_pageflip( drm_device_t *dev );
@@ -202,6 +203,11 @@
 
 extern void radeon_do_release(drm_device_t *dev);
 
+				/* radeon_firmware_loader.c
+				or radeon_firmware.c */
+extern int radeon_cp_load_microcode( drm_device_t *dev,
+				     drm_radeon_private_t *dev_priv);
+
 /* Flags for stats.boxes
  */
 #define RADEON_BOX_DMA_IDLE      0x1
diff -ruN linux-2.6.5/drivers/char/drm-old/radeon_firmware.c linux-2.6.5/drivers/char/drm/radeon_firmware.c
--- linux-2.6.5/drivers/char/drm-old/radeon_firmware.c	1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.5/drivers/char/drm/radeon_firmware.c	2004-04-23 14:31:05.000000000 -0400
@@ -0,0 +1,594 @@
+/* radeon_firmware.c -- Firmware for Radeon -*- linux-c -*-
+ *
+ * Firmware probably copyright ATI.  (No clear license.)
+ *
+ * The remainder:
+ * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas.
+ * Copyright 2000 VA Linux Systems, Inc., Fremont, California.
+ * Copyright 2004 Nathanael Nerode.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Kevin E. Martin <martin@valinux.com>
+ *    Gareth Hughes <gareth@valinux.com>
+ *    Nathanael Nerode <neroden@gcc.gnu.org>
+ *    And whoever wrote the firmware.
+ */
+
+#include "radeon.h"
+#include "drmP.h"
+#include "drm.h"
+#include "radeon_drm.h"
+#include "radeon_drv.h"
+
+/* CP microcode (from ATI) */
+static u32 R200_cp_microcode[][2] = {
+	{ 0x21007000, 0000000000 },        
+	{ 0x20007000, 0000000000 }, 
+	{ 0x000000ab, 0x00000004 },
+	{ 0x000000af, 0x00000004 },
+	{ 0x66544a49, 0000000000 },
+	{ 0x49494174, 0000000000 },
+	{ 0x54517d83, 0000000000 },
+	{ 0x498d8b64, 0000000000 },
+	{ 0x49494949, 0000000000 },
+	{ 0x49da493c, 0000000000 },
+	{ 0x49989898, 0000000000 },
+	{ 0xd34949d5, 0000000000 },
+	{ 0x9dc90e11, 0000000000 },
+	{ 0xce9b9b9b, 0000000000 },
+	{ 0x000f0000, 0x00000016 },
+	{ 0x352e232c, 0000000000 },
+	{ 0x00000013, 0x00000004 },
+	{ 0x000f0000, 0x00000016 },
+	{ 0x352e272c, 0000000000 },
+	{ 0x000f0001, 0x00000016 },
+	{ 0x3239362f, 0000000000 },
+	{ 0x000077ef, 0x00000002 },
+	{ 0x00061000, 0x00000002 },
+	{ 0x00000020, 0x0000001a },
+	{ 0x00004000, 0x0000001e },
+	{ 0x00061000, 0x00000002 },
+	{ 0x00000020, 0x0000001a },
+	{ 0x00004000, 0x0000001e },
+	{ 0x00061000, 0x00000002 },
+	{ 0x00000020, 0x0000001a },
+	{ 0x00004000, 0x0000001e },
+	{ 0x00000016, 0x00000004 },
+	{ 0x0003802a, 0x00000002 },
+	{ 0x040067e0, 0x00000002 },
+	{ 0x00000016, 0x00000004 },
+	{ 0x000077e0, 0x00000002 },
+	{ 0x00065000, 0x00000002 },
+	{ 0x000037e1, 0x00000002 },
+	{ 0x040067e1, 0x00000006 },
+	{ 0x000077e0, 0x00000002 },
+	{ 0x000077e1, 0x00000002 },
+	{ 0x000077e1, 0x00000006 },
+	{ 0xffffffff, 0000000000 },
+	{ 0x10000000, 0000000000 },
+	{ 0x0003802a, 0x00000002 },
+	{ 0x040067e0, 0x00000006 },
+	{ 0x00007675, 0x00000002 },
+	{ 0x00007676, 0x00000002 },
+	{ 0x00007677, 0x00000002 },
+	{ 0x00007678, 0x00000006 },
+	{ 0x0003802b, 0x00000002 },
+	{ 0x04002676, 0x00000002 },
+	{ 0x00007677, 0x00000002 },
+	{ 0x00007678, 0x00000006 },
+	{ 0x0000002e, 0x00000018 },
+	{ 0x0000002e, 0x00000018 },
+	{ 0000000000, 0x00000006 },
+	{ 0x0000002f, 0x00000018 },
+	{ 0x0000002f, 0x00000018 },
+	{ 0000000000, 0x00000006 },
+	{ 0x01605000, 0x00000002 },
+	{ 0x00065000, 0x00000002 },
+	{ 0x00098000, 0x00000002 },
+	{ 0x00061000, 0x00000002 },
+	{ 0x64c0603d, 0x00000004 },
+	{ 0x00080000, 0x00000016 },
+	{ 0000000000, 0000000000 },
+	{ 0x0400251d, 0x00000002 },
+	{ 0x00007580, 0x00000002 },
+	{ 0x00067581, 0x00000002 },
+	{ 0x04002580, 0x00000002 },
+	{ 0x00067581, 0x00000002 },
+	{ 0x00000046, 0x00000004 },
+	{ 0x00005000, 0000000000 },
+	{ 0x00061000, 0x00000002 },
+	{ 0x0000750e, 0x00000002 },
+	{ 0x00019000, 0x00000002 },
+	{ 0x00011055, 0x00000014 },
+	{ 0x00000055, 0x00000012 },
+	{ 0x0400250f, 0x00000002 },
+	{ 0x0000504a, 0x00000004 },
+	{ 0x00007565, 0x00000002 },
+	{ 0x00007566, 0x00000002 },
+	{ 0x00000051, 0x00000004 },
+	{ 0x01e655b4, 0x00000002 },
+	{ 0x4401b0dc, 0x00000002 },
+	{ 0x01c110dc, 0x00000002 },
+	{ 0x2666705d, 0x00000018 },
+	{ 0x040c2565, 0x00000002 },
+	{ 0x0000005d, 0x00000018 },
+	{ 0x04002564, 0x00000002 },
+	{ 0x00007566, 0x00000002 },
+	{ 0x00000054, 0x00000004 },
+	{ 0x00401060, 0x00000008 },
+	{ 0x00101000, 0x00000002 },
+	{ 0x000d80ff, 0x00000002 },
+	{ 0x00800063, 0x00000008 },
+	{ 0x000f9000, 0x00000002 },
+	{ 0x000e00ff, 0x00000002 },
+	{ 0000000000, 0x00000006 },
+	{ 0x00000080, 0x00000018 },
+	{ 0x00000054, 0x00000004 },
+	{ 0x00007576, 0x00000002 },
+	{ 0x00065000, 0x00000002 },
+	{ 0x00009000, 0x00000002 },
+	{ 0x00041000, 0x00000002 },
+	{ 0x0c00350e, 0x00000002 },
+	{ 0x00049000, 0x00000002 },
+	{ 0x00051000, 0x00000002 },
+	{ 0x01e785f8, 0x00000002 },
+	{ 0x00200000, 0x00000002 },
+	{ 0x00600073, 0x0000000c },
+	{ 0x00007563, 0x00000002 },
+	{ 0x006075f0, 0x00000021 },
+	{ 0x20007068, 0x00000004 },
+	{ 0x00005068, 0x00000004 },
+	{ 0x00007576, 0x00000002 },
+	{ 0x00007577, 0x00000002 },
+	{ 0x0000750e, 0x00000002 },
+	{ 0x0000750f, 0x00000002 },
+	{ 0x00a05000, 0x00000002 },
+	{ 0x00600076, 0x0000000c },
+	{ 0x006075f0, 0x00000021 },
+	{ 0x000075f8, 0x00000002 },
+	{ 0x00000076, 0x00000004 },
+	{ 0x000a750e, 0x00000002 },
+	{ 0x0020750f, 0x00000002 },
+	{ 0x00600079, 0x00000004 },
+	{ 0x00007570, 0x00000002 },
+	{ 0x00007571, 0x00000002 },
+	{ 0x00007572, 0x00000006 },
+	{ 0x00005000, 0x00000002 },
+	{ 0x00a05000, 0x00000002 },
+	{ 0x00007568, 0x00000002 },
+	{ 0x00061000, 0x00000002 },
+	{ 0x00000084, 0x0000000c },
+	{ 0x00058000, 0x00000002 },
+	{ 0x0c607562, 0x00000002 },
+	{ 0x00000086, 0x00000004 },
+	{ 0x00600085, 0x00000004 },
+	{ 0x400070dd, 0000000000 },
+	{ 0x000380dd, 0x00000002 },
+	{ 0x00000093, 0x0000001c },
+	{ 0x00065095, 0x00000018 },
+	{ 0x040025bb, 0x00000002 },
+	{ 0x00061096, 0x00000018 },
+	{ 0x040075bc, 0000000000 },
+	{ 0x000075bb, 0x00000002 },
+	{ 0x000075bc, 0000000000 },
+	{ 0x00090000, 0x00000006 },
+	{ 0x00090000, 0x00000002 },
+	{ 0x000d8002, 0x00000006 },
+	{ 0x00005000, 0x00000002 },
+	{ 0x00007821, 0x00000002 },
+	{ 0x00007800, 0000000000 },
+	{ 0x00007821, 0x00000002 },
+	{ 0x00007800, 0000000000 },
+	{ 0x01665000, 0x00000002 },
+	{ 0x000a0000, 0x00000002 },
+	{ 0x000671cc, 0x00000002 },
+	{ 0x0286f1cd, 0x00000002 },
+	{ 0x000000a3, 0x00000010 },
+	{ 0x21007000, 0000000000 },
+	{ 0x000000aa, 0x0000001c },
+	{ 0x00065000, 0x00000002 },
+	{ 0x000a0000, 0x00000002 },
+	{ 0x00061000, 0x00000002 },
+	{ 0x000b0000, 0x00000002 },
+	{ 0x38067000, 0x00000002 },
+	{ 0x000a00a6, 0x00000004 },
+	{ 0x20007000, 0000000000 },
+	{ 0x01200000, 0x00000002 },
+	{ 0x20077000, 0x00000002 },
+	{ 0x01200000, 0x00000002 },
+	{ 0x20007000, 0000000000 },
+	{ 0x00061000, 0x00000002 },
+	{ 0x0120751b, 0x00000002 },
+	{ 0x8040750a, 0x00000002 },
+	{ 0x8040750b, 0x00000002 },
+	{ 0x00110000, 0x00000002 },
+	{ 0x000380dd, 0x00000002 },
+	{ 0x000000bd, 0x0000001c },
+	{ 0x00061096, 0x00000018 },
+	{ 0x844075bd, 0x00000002 },
+	{ 0x00061095, 0x00000018 },
+	{ 0x840075bb, 0x00000002 },
+	{ 0x00061096, 0x00000018 },
+	{ 0x844075bc, 0x00000002 },
+	{ 0x000000c0, 0x00000004 },
+	{ 0x804075bd, 0x00000002 },
+	{ 0x800075bb, 0x00000002 },
+	{ 0x804075bc, 0x00000002 },
+	{ 0x00108000, 0x00000002 },
+	{ 0x01400000, 0x00000002 },
+	{ 0x006000c4, 0x0000000c },
+	{ 0x20c07000, 0x00000020 },
+	{ 0x000000c6, 0x00000012 },
+	{ 0x00800000, 0x00000006 },
+	{ 0x0080751d, 0x00000006 },
+	{ 0x000025bb, 0x00000002 },
+	{ 0x000040c0, 0x00000004 },
+	{ 0x0000775c, 0x00000002 },
+	{ 0x00a05000, 0x00000002 },
+	{ 0x00661000, 0x00000002 },
+	{ 0x0460275d, 0x00000020 },
+	{ 0x00004000, 0000000000 },
+	{ 0x00007999, 0x00000002 },
+	{ 0x00a05000, 0x00000002 },
+	{ 0x00661000, 0x00000002 },
+	{ 0x0460299b, 0x00000020 },
+	{ 0x00004000, 0000000000 },
+	{ 0x01e00830, 0x00000002 },
+	{ 0x21007000, 0000000000 },
+	{ 0x00005000, 0x00000002 },
+	{ 0x00038042, 0x00000002 },
+	{ 0x040025e0, 0x00000002 },
+	{ 0x000075e1, 0000000000 },
+	{ 0x00000001, 0000000000 },
+	{ 0x000380d9, 0x00000002 },
+	{ 0x04007394, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+};
+
+
+static u32 radeon_cp_microcode[][2] = {
+	{ 0x21007000, 0000000000 },
+	{ 0x20007000, 0000000000 },
+	{ 0x000000b4, 0x00000004 },
+	{ 0x000000b8, 0x00000004 },
+	{ 0x6f5b4d4c, 0000000000 },
+	{ 0x4c4c427f, 0000000000 },
+	{ 0x5b568a92, 0000000000 },
+	{ 0x4ca09c6d, 0000000000 },
+	{ 0xad4c4c4c, 0000000000 },
+	{ 0x4ce1af3d, 0000000000 },
+	{ 0xd8afafaf, 0000000000 },
+	{ 0xd64c4cdc, 0000000000 },
+	{ 0x4cd10d10, 0000000000 },
+	{ 0x000f0000, 0x00000016 },
+	{ 0x362f242d, 0000000000 },
+	{ 0x00000012, 0x00000004 },
+	{ 0x000f0000, 0x00000016 },
+	{ 0x362f282d, 0000000000 },
+	{ 0x000380e7, 0x00000002 },
+	{ 0x04002c97, 0x00000002 },
+	{ 0x000f0001, 0x00000016 },
+	{ 0x333a3730, 0000000000 },
+	{ 0x000077ef, 0x00000002 },
+	{ 0x00061000, 0x00000002 },
+	{ 0x00000021, 0x0000001a },
+	{ 0x00004000, 0x0000001e },
+	{ 0x00061000, 0x00000002 },
+	{ 0x00000021, 0x0000001a },
+	{ 0x00004000, 0x0000001e },
+	{ 0x00061000, 0x00000002 },
+	{ 0x00000021, 0x0000001a },
+	{ 0x00004000, 0x0000001e },
+	{ 0x00000017, 0x00000004 },
+	{ 0x0003802b, 0x00000002 },
+	{ 0x040067e0, 0x00000002 },
+	{ 0x00000017, 0x00000004 },
+	{ 0x000077e0, 0x00000002 },
+	{ 0x00065000, 0x00000002 },
+	{ 0x000037e1, 0x00000002 },
+	{ 0x040067e1, 0x00000006 },
+	{ 0x000077e0, 0x00000002 },
+	{ 0x000077e1, 0x00000002 },
+	{ 0x000077e1, 0x00000006 },
+	{ 0xffffffff, 0000000000 },
+	{ 0x10000000, 0000000000 },
+	{ 0x0003802b, 0x00000002 },
+	{ 0x040067e0, 0x00000006 },
+	{ 0x00007675, 0x00000002 },
+	{ 0x00007676, 0x00000002 },
+	{ 0x00007677, 0x00000002 },
+	{ 0x00007678, 0x00000006 },
+	{ 0x0003802c, 0x00000002 },
+	{ 0x04002676, 0x00000002 },
+	{ 0x00007677, 0x00000002 },
+	{ 0x00007678, 0x00000006 },
+	{ 0x0000002f, 0x00000018 },
+	{ 0x0000002f, 0x00000018 },
+	{ 0000000000, 0x00000006 },
+	{ 0x00000030, 0x00000018 },
+	{ 0x00000030, 0x00000018 },
+	{ 0000000000, 0x00000006 },
+	{ 0x01605000, 0x00000002 },
+	{ 0x00065000, 0x00000002 },
+	{ 0x00098000, 0x00000002 },
+	{ 0x00061000, 0x00000002 },
+	{ 0x64c0603e, 0x00000004 },
+	{ 0x000380e6, 0x00000002 },
+	{ 0x040025c5, 0x00000002 },
+	{ 0x00080000, 0x00000016 },
+	{ 0000000000, 0000000000 },
+	{ 0x0400251d, 0x00000002 },
+	{ 0x00007580, 0x00000002 },
+	{ 0x00067581, 0x00000002 },
+	{ 0x04002580, 0x00000002 },
+	{ 0x00067581, 0x00000002 },
+	{ 0x00000049, 0x00000004 },
+	{ 0x00005000, 0000000000 },
+	{ 0x000380e6, 0x00000002 },
+	{ 0x040025c5, 0x00000002 },
+	{ 0x00061000, 0x00000002 },
+	{ 0x0000750e, 0x00000002 },
+	{ 0x00019000, 0x00000002 },
+	{ 0x00011055, 0x00000014 },
+	{ 0x00000055, 0x00000012 },
+	{ 0x0400250f, 0x00000002 },
+	{ 0x0000504f, 0x00000004 },
+	{ 0x000380e6, 0x00000002 },
+	{ 0x040025c5, 0x00000002 },
+	{ 0x00007565, 0x00000002 },
+	{ 0x00007566, 0x00000002 },
+	{ 0x00000058, 0x00000004 },
+	{ 0x000380e6, 0x00000002 },
+	{ 0x040025c5, 0x00000002 },
+	{ 0x01e655b4, 0x00000002 },
+	{ 0x4401b0e4, 0x00000002 },
+	{ 0x01c110e4, 0x00000002 },
+	{ 0x26667066, 0x00000018 },
+	{ 0x040c2565, 0x00000002 },
+	{ 0x00000066, 0x00000018 },
+	{ 0x04002564, 0x00000002 },
+	{ 0x00007566, 0x00000002 },
+	{ 0x0000005d, 0x00000004 },
+	{ 0x00401069, 0x00000008 },
+	{ 0x00101000, 0x00000002 },
+	{ 0x000d80ff, 0x00000002 },
+	{ 0x0080006c, 0x00000008 },
+	{ 0x000f9000, 0x00000002 },
+	{ 0x000e00ff, 0x00000002 },
+	{ 0000000000, 0x00000006 },
+	{ 0x0000008f, 0x00000018 },
+	{ 0x0000005b, 0x00000004 },
+	{ 0x000380e6, 0x00000002 },
+	{ 0x040025c5, 0x00000002 },
+	{ 0x00007576, 0x00000002 },
+	{ 0x00065000, 0x00000002 },
+	{ 0x00009000, 0x00000002 },
+	{ 0x00041000, 0x00000002 },
+	{ 0x0c00350e, 0x00000002 },
+	{ 0x00049000, 0x00000002 },
+	{ 0x00051000, 0x00000002 },
+	{ 0x01e785f8, 0x00000002 },
+	{ 0x00200000, 0x00000002 },
+	{ 0x0060007e, 0x0000000c },
+	{ 0x00007563, 0x00000002 },
+	{ 0x006075f0, 0x00000021 },
+	{ 0x20007073, 0x00000004 },
+	{ 0x00005073, 0x00000004 },
+	{ 0x000380e6, 0x00000002 },
+	{ 0x040025c5, 0x00000002 },
+	{ 0x00007576, 0x00000002 },
+	{ 0x00007577, 0x00000002 },
+	{ 0x0000750e, 0x00000002 },
+	{ 0x0000750f, 0x00000002 },
+	{ 0x00a05000, 0x00000002 },
+	{ 0x00600083, 0x0000000c },
+	{ 0x006075f0, 0x00000021 },
+	{ 0x000075f8, 0x00000002 },
+	{ 0x00000083, 0x00000004 },
+	{ 0x000a750e, 0x00000002 },
+	{ 0x000380e6, 0x00000002 },
+	{ 0x040025c5, 0x00000002 },
+	{ 0x0020750f, 0x00000002 },
+	{ 0x00600086, 0x00000004 },
+	{ 0x00007570, 0x00000002 },
+	{ 0x00007571, 0x00000002 },
+	{ 0x00007572, 0x00000006 },
+	{ 0x000380e6, 0x00000002 },
+	{ 0x040025c5, 0x00000002 },
+	{ 0x00005000, 0x00000002 },
+	{ 0x00a05000, 0x00000002 },
+	{ 0x00007568, 0x00000002 },
+	{ 0x00061000, 0x00000002 },
+	{ 0x00000095, 0x0000000c },
+	{ 0x00058000, 0x00000002 },
+	{ 0x0c607562, 0x00000002 },
+	{ 0x00000097, 0x00000004 },
+	{ 0x000380e6, 0x00000002 },
+	{ 0x040025c5, 0x00000002 },
+	{ 0x00600096, 0x00000004 },
+	{ 0x400070e5, 0000000000 },
+	{ 0x000380e6, 0x00000002 },
+	{ 0x040025c5, 0x00000002 },
+	{ 0x000380e5, 0x00000002 },
+	{ 0x000000a8, 0x0000001c },
+	{ 0x000650aa, 0x00000018 },
+	{ 0x040025bb, 0x00000002 },
+	{ 0x000610ab, 0x00000018 },
+	{ 0x040075bc, 0000000000 },
+	{ 0x000075bb, 0x00000002 },
+	{ 0x000075bc, 0000000000 },
+	{ 0x00090000, 0x00000006 },
+	{ 0x00090000, 0x00000002 },
+	{ 0x000d8002, 0x00000006 },
+	{ 0x00007832, 0x00000002 },
+	{ 0x00005000, 0x00000002 },
+	{ 0x000380e7, 0x00000002 },
+	{ 0x04002c97, 0x00000002 },
+	{ 0x00007820, 0x00000002 },
+	{ 0x00007821, 0x00000002 },
+	{ 0x00007800, 0000000000 },
+	{ 0x01200000, 0x00000002 },
+	{ 0x20077000, 0x00000002 },
+	{ 0x01200000, 0x00000002 },
+	{ 0x20007000, 0x00000002 },
+	{ 0x00061000, 0x00000002 },
+	{ 0x0120751b, 0x00000002 },
+	{ 0x8040750a, 0x00000002 },
+	{ 0x8040750b, 0x00000002 },
+	{ 0x00110000, 0x00000002 },
+	{ 0x000380e5, 0x00000002 },
+	{ 0x000000c6, 0x0000001c },
+	{ 0x000610ab, 0x00000018 },
+	{ 0x844075bd, 0x00000002 },
+	{ 0x000610aa, 0x00000018 },
+	{ 0x840075bb, 0x00000002 },
+	{ 0x000610ab, 0x00000018 },
+	{ 0x844075bc, 0x00000002 },
+	{ 0x000000c9, 0x00000004 },
+	{ 0x804075bd, 0x00000002 },
+	{ 0x800075bb, 0x00000002 },
+	{ 0x804075bc, 0x00000002 },
+	{ 0x00108000, 0x00000002 },
+	{ 0x01400000, 0x00000002 },
+	{ 0x006000cd, 0x0000000c },
+	{ 0x20c07000, 0x00000020 },
+	{ 0x000000cf, 0x00000012 },
+	{ 0x00800000, 0x00000006 },
+	{ 0x0080751d, 0x00000006 },
+	{ 0000000000, 0000000000 },
+	{ 0x0000775c, 0x00000002 },
+	{ 0x00a05000, 0x00000002 },
+	{ 0x00661000, 0x00000002 },
+	{ 0x0460275d, 0x00000020 },
+	{ 0x00004000, 0000000000 },
+	{ 0x01e00830, 0x00000002 },
+	{ 0x21007000, 0000000000 },
+	{ 0x6464614d, 0000000000 },
+	{ 0x69687420, 0000000000 },
+	{ 0x00000073, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0x00005000, 0x00000002 },
+	{ 0x000380d0, 0x00000002 },
+	{ 0x040025e0, 0x00000002 },
+	{ 0x000075e1, 0000000000 },
+	{ 0x00000001, 0000000000 },
+	{ 0x000380e0, 0x00000002 },
+	{ 0x04002394, 0x00000002 },
+	{ 0x00005000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0x00000008, 0000000000 },
+	{ 0x00000004, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+	{ 0000000000, 0000000000 },
+};
+
+/* Load the microcode for the CP */
+int radeon_cp_load_microcode( drm_device_t *dev,
+			     drm_radeon_private_t *dev_priv)
+{
+	int i;
+	DRM_DEBUG( "\n" );
+
+	radeon_do_wait_for_idle( dev_priv );
+
+	RADEON_WRITE( RADEON_CP_ME_RAM_ADDR, 0 );
+	
+	if (dev_priv->is_r200)
+	{
+		DRM_INFO("Loading R200 Microcode\n");
+		for ( i = 0 ; i < 256 ; i++ ) 
+		{
+			RADEON_WRITE( RADEON_CP_ME_RAM_DATAH,
+				      R200_cp_microcode[i][1] );
+			RADEON_WRITE( RADEON_CP_ME_RAM_DATAL,
+				      R200_cp_microcode[i][0] );
+		}
+	}
+	else
+	{
+		for ( i = 0 ; i < 256 ; i++ ) {
+			RADEON_WRITE( RADEON_CP_ME_RAM_DATAH,
+				      radeon_cp_microcode[i][1] );
+			RADEON_WRITE( RADEON_CP_ME_RAM_DATAL,
+				      radeon_cp_microcode[i][0] );
+		}
+	}
+}
diff -ruN linux-2.6.5/drivers/char/drm-old/radeon_firmware_loader.c linux-2.6.5/drivers/char/drm/radeon_firmware_loader.c
--- linux-2.6.5/drivers/char/drm-old/radeon_firmware_loader.c	1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.5/drivers/char/drm/radeon_firmware_loader.c	2004-04-23 14:42:32.000000000 -0400
@@ -0,0 +1,108 @@
+/* radeon_firmware_loader.c -- Firmware loader for Radeon -*- linux-c -*-
+ *
+ * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas.
+ * Copyright 2000 VA Linux Systems, Inc., Fremont, California.
+ * Copyright 2004 Nathanael Nerode.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Kevin E. Martin <martin@valinux.com>
+ *    Gareth Hughes <gareth@valinux.com>
+ *    Nathanael Nerode <neroden@gcc.gnu.org>
+ */
+
+/* One and only one of this and radeon_firmware.c should be linked in */
+
+/* TO DO: There's an awful lot of similarity between the Radeon and
+   r128 drivers; unfortunately the few differences prevent unification
+   of the firmware_loader files at the moment. */
+
+#include <asm/byteorder.h>
+#include <linux/string.h>
+
+#include <linux/device.h>
+#include <linux/firmware.h>
+
+#include "radeon.h"
+#include "drmP.h"
+#include "drm.h"
+#include "radeon_drm.h"
+#include "radeon_drv.h"
+
+/* Load the microcode for the CP */
+int radeon_cp_load_microcode( drm_device_t *dev,
+			      drm_radeon_private_t *dev_priv)
+{
+	int i, err;
+	u32 temp_h, temp_l;
+	const struct firmware *fw_entry = NULL;
+	char* filename;
+
+	if (dev_priv->is_r200)
+		filename="r200_cp_microcode";
+	else
+		filename="radeon_cp_microcode";
+
+	/* The 'dev' thing is uncovering the struct device buried in
+	   drm_device_t (via pci_device) */
+	err = request_firmware( &fw_entry, filename, &(dev->pdev->dev) );
+	if (err) {
+		DRM_ERROR("Firmware file \"%s\" not available.\n", filename);
+		return err;
+	}
+
+	/* Assumes 256 x 2 x 32 bits of data */
+	if (fw_entry->size != 256 * 4 * 2) {
+		DRM_ERROR("Firmware file \"%s\" wrong size!\n", filename);
+		release_firmware(fw_entry);
+		return DRM_ERR(EINVAL);
+	}
+
+	DRM_DEBUG( "\n" );
+
+	radeon_do_wait_for_idle( dev_priv );
+
+	RADEON_WRITE( RADEON_CP_ME_RAM_ADDR, 0 );
+
+	for ( i = 0 ; i < 256 ; i++ ) {
+
+		/* We assume the incoming data is in little-endian byte order,
+		   since we would like the firmware file to be
+		   architecture-independent.  Data will likely be swapped
+		   twice on big-endian machines (once here, and
+		   once in writel); with luck the compiler will optimize
+		   that away. */
+		/* For historical reasons we store the microcode in the same
+		   order as the built-in-driver version did, even though
+		   that's not the order the writes are made in. */
+
+		memcpy(&temp_l, &(fw_entry->data[i*8]), 4);
+		memcpy(&temp_h, &(fw_entry->data[i*8 + 4]), 4);
+
+		RADEON_WRITE( RADEON_CP_ME_RAM_DATAH, le32_to_cpu(temp_h) );
+		RADEON_WRITE( RADEON_CP_ME_RAM_DATAL, le32_to_cpu(temp_l) );
+
+	}
+	release_firmware(fw_entry);
+
+	return 0;
+}

Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Nathanael Nerode <neroden@twcny.rr.com>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #38 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Nathanael Nerode <neroden@twcny.rr.com>
To: 242866@bugs.debian.org
Subject: tg3 userland firmware loading
Date: Fri, 23 Apr 2004 15:02:19 -0400
[Message part 1 (text/plain, inline)]
Attached is the tg3 patch.
[tg3-irq-d.diff (text/x-diff, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #43 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: Bug#245217: Radeon/R128 userland firmware loading patch, microcode files
Date: Sat, 24 Apr 2004 15:19:43 +1000
On Fri, Apr 23, 2004 at 02:45:54PM -0400, Nathanael Nerode wrote:
> 
> OK.  That's actually harder and more annoying to do than you might 
> imagine; it was done this way to avoid code duplication, and hopefully 
> make easier to merge the r128 and radeon versions.  See the changes.  I 
> made the parallel change to the r128 version for consistency.  Most of 
> the substantive change in the new patch is due to this change.

Well this doesn't have to prevent you from merging the two functions
later on.  You can always have another function that had the check for
radeon chips which called the common firmware loading function.

> Attached is the new version.  It compiles.  I haven't been able to test 
> it, but I hope it works.

Thank you very much.  I've merged it into my 2.6 tree and 2.4 tree.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #48 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: Bug#245217: Radeon/R128 userland firmware loading patch, microcode files
Date: Sat, 24 Apr 2004 15:22:10 +1000
On Sat, Apr 24, 2004 at 03:19:43PM +1000, herbert wrote:
> 
> Thank you very much.  I've merged it into my 2.6 tree and 2.4 tree.

BTW, I got rid of the memcpy's since the firmware data should already
be aligned.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Nathanael Nerode <neroden@twcny.rr.com>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #53 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Nathanael Nerode <neroden@twcny.rr.com>
To: 242866@bugs.debian.org
Subject: Re: driver patch/memory alignment
Date: Sat, 24 Apr 2004 02:19:36 -0400
>On Sat, Apr 24, 2004 at 03:19:43PM +1000, herbert wrote:
>> 
>> Thank you very much.  I've merged it into my 2.6 tree and 2.4 tree.
>
>BTW, I got rid of the memcpy's since the firmware data should already
>be aligned.

I wasn't clear on that; for my edification, do you think you could point out 
where in firmware_class.c it guarantees that the char array will be 
sufficiently (32-bit) aligned?  The buffer appears to be allocated with 
'vmalloc' in page-sized increments; is vmalloc guaranteed to return areas 
starting at 'maximally aligned' points, or what?



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #58 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: driver patch/memory alignment
Date: Sat, 24 Apr 2004 17:27:31 +1000
On Sat, Apr 24, 2004 at 02:19:36AM -0400, Nathanael Nerode wrote:
> 
> I wasn't clear on that; for my edification, do you think you could point out 
> where in firmware_class.c it guarantees that the char array will be 
> sufficiently (32-bit) aligned?  The buffer appears to be allocated with 
> 'vmalloc' in page-sized increments; is vmalloc guaranteed to return areas 
> starting at 'maximally aligned' points, or what?

It's page-aligned.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to neroden@twcny.rr.com (Nathanael Nerode):
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #63 received at 242866@bugs.debian.org (full text, mbox, reply):

From: neroden@twcny.rr.com (Nathanael Nerode)
To: 242866@bugs.debian.org
Cc: jgarzik@pobox.com
Subject: Revised tg3 userland firmware loading patch
Date: Thu, 29 Apr 2004 20:53:06 -0400
This one cleans up the tg3 driver a bit more and changes the chosen firmware
name to use a version (in fact, the version from the original firmware).

I also have made a .deb containing the firmware files, available for testing
at http://home.twcny.rr.com/nerode/neroden/debian/ .

--- linux-2.6.5/drivers/net/tg3.c.original	2004-04-20 21:43:05.000000000 -0400
+++ linux-2.6.5/drivers/net/tg3.c.new	2004-04-29 20:32:33.000000000 -0400
@@ -3,6 +3,7 @@
  *
  * Copyright (C) 2001, 2002, 2003 David S. Miller (davem@redhat.com)
  * Copyright (C) 2001, 2002, 2003 Jeff Garzik (jgarzik@pobox.com)
+ * Portions copyright 2004 Nathanael Nerode  <neroden@gcc.gnu.org>
  */
 
 #include <linux/config.h>
@@ -27,6 +28,8 @@
 #include <linux/tcp.h>
 #include <linux/workqueue.h>
 
+#include <linux/firmware.h>
+
 #include <net/checksum.h>
 
 #include <asm/system.h>
@@ -3541,130 +3544,6 @@
 	return 0;
 }
 
-#define TG3_FW_RELEASE_MAJOR	0x0
-#define TG3_FW_RELASE_MINOR	0x0
-#define TG3_FW_RELEASE_FIX	0x0
-#define TG3_FW_START_ADDR	0x08000000
-#define TG3_FW_TEXT_ADDR	0x08000000
-#define TG3_FW_TEXT_LEN		0x9c0
-#define TG3_FW_RODATA_ADDR	0x080009c0
-#define TG3_FW_RODATA_LEN	0x60
-#define TG3_FW_DATA_ADDR	0x08000a40
-#define TG3_FW_DATA_LEN		0x20
-#define TG3_FW_SBSS_ADDR	0x08000a60
-#define TG3_FW_SBSS_LEN		0xc
-#define TG3_FW_BSS_ADDR		0x08000a70
-#define TG3_FW_BSS_LEN		0x10
-
-static u32 tg3FwText[(TG3_FW_TEXT_LEN / sizeof(u32)) + 1] = {
-	0x00000000, 0x10000003, 0x00000000, 0x0000000d, 0x0000000d, 0x3c1d0800,
-	0x37bd3ffc, 0x03a0f021, 0x3c100800, 0x26100000, 0x0e000018, 0x00000000,
-	0x0000000d, 0x3c1d0800, 0x37bd3ffc, 0x03a0f021, 0x3c100800, 0x26100034,
-	0x0e00021c, 0x00000000, 0x0000000d, 0x00000000, 0x00000000, 0x00000000,
-	0x27bdffe0, 0x3c1cc000, 0xafbf0018, 0xaf80680c, 0x0e00004c, 0x241b2105,
-	0x97850000, 0x97870002, 0x9782002c, 0x9783002e, 0x3c040800, 0x248409c0,
-	0xafa00014, 0x00021400, 0x00621825, 0x00052c00, 0xafa30010, 0x8f860010,
-	0x00e52825, 0x0e000060, 0x24070102, 0x3c02ac00, 0x34420100, 0x3c03ac01,
-	0x34630100, 0xaf820490, 0x3c02ffff, 0xaf820494, 0xaf830498, 0xaf82049c,
-	0x24020001, 0xaf825ce0, 0x0e00003f, 0xaf825d00, 0x0e000140, 0x00000000,
-	0x8fbf0018, 0x03e00008, 0x27bd0020, 0x2402ffff, 0xaf825404, 0x8f835400,
-	0x34630400, 0xaf835400, 0xaf825404, 0x3c020800, 0x24420034, 0xaf82541c,
-	0x03e00008, 0xaf805400, 0x00000000, 0x00000000, 0x3c020800, 0x34423000,
-	0x3c030800, 0x34633000, 0x3c040800, 0x348437ff, 0x3c010800, 0xac220a64,
-	0x24020040, 0x3c010800, 0xac220a68, 0x3c010800, 0xac200a60, 0xac600000,
-	0x24630004, 0x0083102b, 0x5040fffd, 0xac600000, 0x03e00008, 0x00000000,
-	0x00804821, 0x8faa0010, 0x3c020800, 0x8c420a60, 0x3c040800, 0x8c840a68,
-	0x8fab0014, 0x24430001, 0x0044102b, 0x3c010800, 0xac230a60, 0x14400003,
-	0x00004021, 0x3c010800, 0xac200a60, 0x3c020800, 0x8c420a60, 0x3c030800,
-	0x8c630a64, 0x91240000, 0x00021140, 0x00431021, 0x00481021, 0x25080001,
-	0xa0440000, 0x29020008, 0x1440fff4, 0x25290001, 0x3c020800, 0x8c420a60,
-	0x3c030800, 0x8c630a64, 0x8f84680c, 0x00021140, 0x00431021, 0xac440008,
-	0xac45000c, 0xac460010, 0xac470014, 0xac4a0018, 0x03e00008, 0xac4b001c,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0,
-	0x02000008, 0x00000000, 0x0a0001e3, 0x3c0a0001, 0x0a0001e3, 0x3c0a0002,
-	0x0a0001e3, 0x00000000, 0x0a0001e3, 0x00000000, 0x0a0001e3, 0x00000000,
-	0x0a0001e3, 0x00000000, 0x0a0001e3, 0x00000000, 0x0a0001e3, 0x00000000,
-	0x0a0001e3, 0x00000000, 0x0a0001e3, 0x00000000, 0x0a0001e3, 0x00000000,
-	0x0a0001e3, 0x3c0a0007, 0x0a0001e3, 0x3c0a0008, 0x0a0001e3, 0x3c0a0009,
-	0x0a0001e3, 0x00000000, 0x0a0001e3, 0x00000000, 0x0a0001e3, 0x3c0a000b,
-	0x0a0001e3, 0x3c0a000c, 0x0a0001e3, 0x3c0a000d, 0x0a0001e3, 0x00000000,
-	0x0a0001e3, 0x00000000, 0x0a0001e3, 0x3c0a000e, 0x0a0001e3, 0x00000000,
-	0x0a0001e3, 0x00000000, 0x0a0001e3, 0x00000000, 0x0a0001e3, 0x00000000,
-	0x0a0001e3, 0x00000000, 0x0a0001e3, 0x00000000, 0x0a0001e3, 0x00000000,
-	0x0a0001e3, 0x00000000, 0x0a0001e3, 0x3c0a0013, 0x0a0001e3, 0x3c0a0014,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0x27bdffe0, 0x00001821, 0x00001021, 0xafbf0018, 0xafb10014, 0xafb00010,
-	0x3c010800, 0x00220821, 0xac200a70, 0x3c010800, 0x00220821, 0xac200a74,
-	0x3c010800, 0x00220821, 0xac200a78, 0x24630001, 0x1860fff5, 0x2442000c,
-	0x24110001, 0x8f906810, 0x32020004, 0x14400005, 0x24040001, 0x3c020800,
-	0x8c420a78, 0x18400003, 0x00002021, 0x0e000182, 0x00000000, 0x32020001,
-	0x10400003, 0x00000000, 0x0e000169, 0x00000000, 0x0a000153, 0xaf915028,
-	0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x03e00008, 0x27bd0020, 0x3c050800,
-	0x8ca50a70, 0x3c060800, 0x8cc60a80, 0x3c070800, 0x8ce70a78, 0x27bdffe0,
-	0x3c040800, 0x248409d0, 0xafbf0018, 0xafa00010, 0x0e000060, 0xafa00014,
-	0x0e00017b, 0x00002021, 0x8fbf0018, 0x03e00008, 0x27bd0020, 0x24020001,
-	0x8f836810, 0x00821004, 0x00021027, 0x00621824, 0x03e00008, 0xaf836810,
-	0x27bdffd8, 0xafbf0024, 0x1080002e, 0xafb00020, 0x8f825cec, 0xafa20018,
-	0x8f825cec, 0x3c100800, 0x26100a78, 0xafa2001c, 0x34028000, 0xaf825cec,
-	0x8e020000, 0x18400016, 0x00000000, 0x3c020800, 0x94420a74, 0x8fa3001c,
-	0x000221c0, 0xac830004, 0x8fa2001c, 0x3c010800, 0x0e000201, 0xac220a74,
-	0x10400005, 0x00000000, 0x8e020000, 0x24420001, 0x0a0001df, 0xae020000,
-	0x3c020800, 0x8c420a70, 0x00021c02, 0x000321c0, 0x0a0001c5, 0xafa2001c,
-	0x0e000201, 0x00000000, 0x1040001f, 0x00000000, 0x8e020000, 0x8fa3001c,
-	0x24420001, 0x3c010800, 0xac230a70, 0x3c010800, 0xac230a74, 0x0a0001df,
-	0xae020000, 0x3c100800, 0x26100a78, 0x8e020000, 0x18400028, 0x00000000,
-	0x0e000201, 0x00000000, 0x14400024, 0x00000000, 0x8e020000, 0x3c030800,
-	0x8c630a70, 0x2442ffff, 0xafa3001c, 0x18400006, 0xae020000, 0x00031402,
-	0x000221c0, 0x8c820004, 0x3c010800, 0xac220a70, 0x97a2001e, 0x2442ff00,
-	0x2c420300, 0x1440000b, 0x24024000, 0x3c040800, 0x248409dc, 0xafa00010,
-	0xafa00014, 0x8fa6001c, 0x24050008, 0x0e000060, 0x00003821, 0x0a0001df,
-	0x00000000, 0xaf825cf8, 0x3c020800, 0x8c420a40, 0x8fa3001c, 0x24420001,
-	0xaf835cf8, 0x3c010800, 0xac220a40, 0x8fbf0024, 0x8fb00020, 0x03e00008,
-	0x27bd0028, 0x27bdffe0, 0x3c040800, 0x248409e8, 0x00002821, 0x00003021,
-	0x00003821, 0xafbf0018, 0xafa00010, 0x0e000060, 0xafa00014, 0x8fbf0018,
-	0x03e00008, 0x27bd0020, 0x8f82680c, 0x8f85680c, 0x00021827, 0x0003182b,
-	0x00031823, 0x00431024, 0x00441021, 0x00a2282b, 0x10a00006, 0x00000000,
-	0x00401821, 0x8f82680c, 0x0043102b, 0x1440fffd, 0x00000000, 0x03e00008,
-	0x00000000, 0x3c040800, 0x8c840000, 0x3c030800, 0x8c630a40, 0x0064102b,
-	0x54400002, 0x00831023, 0x00641023, 0x2c420008, 0x03e00008, 0x38420001,
-	0x27bdffe0, 0x00802821, 0x3c040800, 0x24840a00, 0x00003021, 0x00003821,
-	0xafbf0018, 0xafa00010, 0x0e000060, 0xafa00014, 0x0a000216, 0x00000000,
-	0x8fbf0018, 0x03e00008, 0x27bd0020, 0x00000000, 0x27bdffe0, 0x3c1cc000,
-	0xafbf0018, 0x0e00004c, 0xaf80680c, 0x3c040800, 0x24840a10, 0x03802821,
-	0x00003021, 0x00003821, 0xafa00010, 0x0e000060, 0xafa00014, 0x2402ffff,
-	0xaf825404, 0x3c0200aa, 0x0e000234, 0xaf825434, 0x8fbf0018, 0x03e00008,
-	0x27bd0020, 0x00000000, 0x00000000, 0x00000000, 0x27bdffe8, 0xafb00010,
-	0x24100001, 0xafbf0014, 0x3c01c003, 0xac200000, 0x8f826810, 0x30422000,
-	0x10400003, 0x00000000, 0x0e000246, 0x00000000, 0x0a00023a, 0xaf905428,
-	0x8fbf0014, 0x8fb00010, 0x03e00008, 0x27bd0018, 0x27bdfff8, 0x8f845d0c,
-	0x3c0200ff, 0x3c030800, 0x8c630a50, 0x3442fff8, 0x00821024, 0x1043001e,
-	0x3c0500ff, 0x34a5fff8, 0x3c06c003, 0x3c074000, 0x00851824, 0x8c620010,
-	0x3c010800, 0xac230a50, 0x30420008, 0x10400005, 0x00871025, 0x8cc20000,
-	0x24420001, 0xacc20000, 0x00871025, 0xaf825d0c, 0x8fa20000, 0x24420001,
-	0xafa20000, 0x8fa20000, 0x8fa20000, 0x24420001, 0xafa20000, 0x8fa20000,
-	0x8f845d0c, 0x3c030800, 0x8c630a50, 0x00851024, 0x1443ffe8, 0x00851824,
-	0x27bd0008, 0x03e00008, 0x00000000, 0x00000000, 0x00000000
-};
-
-static u32 tg3FwRodata[(TG3_FW_RODATA_LEN / sizeof(u32)) + 1] = {
-	0x35373031, 0x726c7341, 0x00000000, 0x00000000, 0x53774576, 0x656e7430,
-	0x00000000, 0x726c7045, 0x76656e74, 0x31000000, 0x556e6b6e, 0x45766e74,
-	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x66617461, 0x6c457272,
-	0x00000000, 0x00000000, 0x4d61696e, 0x43707542, 0x00000000, 0x00000000,
-	0x00000000
-};
-
-#if 0 /* All zeros, don't eat up space with it. */
-u32 tg3FwData[(TG3_FW_DATA_LEN / sizeof(u32)) + 1] = {
-	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-	0x00000000, 0x00000000, 0x00000000, 0x00000000
-};
-#endif
-
 #define RX_CPU_SCRATCH_BASE	0x30000
 #define RX_CPU_SCRATCH_SIZE	0x04000
 #define TX_CPU_SCRATCH_BASE	0x34000
@@ -3721,6 +3600,166 @@
 	u32 *data_data;
 };
 
+/* We are forced to store these firmware bits in memory for the duration
+   of the module load, because they are loaded to hardware in a context
+   where it is unsafe to sleep, and fixing this would require a lot of
+   code refactoring.  :-P  However, they're only filled if the hardware
+   needs them; otherwise they are NULL and do not need to be dealt with.
+   */
+
+static struct fw_info* tg3_fw_5701_a0 = NULL;
+
+#if TG3_TSO_SUPPORT != 0
+static struct fw_info* tg3_fw_tso = NULL;
+
+static struct fw_info* tg3_fw_tso5 = NULL;
+/* 5705 needs a special version of the TSO firmware, and needs
+   to know the complete length, including the sbss and bss sections.  */
+#define TG3_TSO5_FW_SBSS_LEN		0x28
+#define TG3_TSO5_FW_BSS_LEN		0x88
+
+#endif /* TG3_TSO_SUPPORT */
+
+/* Allocate and fill 'info' from a file in userspace.
+   This *must* be called in user context where sleeping is allowed. */
+/* We require the firmware file to be in a certain binary format:
+   * little-endian (so that it's platform-independent -- heh)
+   * struct fw_info fields in this order:
+   * text_base, text_len, rodata_base, rodata_len, data_base, data_len
+   * ('unsigned int' fields as 32-bit integers)
+   * text_data, rodata_data, data_data
+   * ('u32*' fields as a whole bunch of 32-bit integers)
+ */
+static int __devinit tg3_request_firmware(struct fw_info **info_ptr,
+					  const char *filename,
+					  const struct tg3 *tp)
+{
+	int err, i;
+	const struct firmware *fw_entry = NULL;
+	u32 temp;
+
+	/* The messy dev bit is extracting a struct device from
+	   struct tg3 (via pci_dev) */
+	err = request_firmware(&fw_entry, filename, &tp->pdev->dev);
+	if (err) {
+		printk(KERN_WARNING PFX "tg3_request_firmware (%s): "
+		       "Couldn't get firmware \"%s\".\n",
+		       tp->dev->name, filename);
+		goto cleanup_out;
+	}
+	if (fw_entry->size < 24) {
+		printk(KERN_WARNING PFX "tg3_request_firmware (%s): "
+		       "Firmware \"%s\"too short.\n",
+		       tp->dev->name, filename);
+		err=-EINVAL;
+		goto cleanup_firmware;
+	}
+
+
+	/* In order to avoid alignment and strict-aliasing problems,
+	   we have to copy from the data array to our private version. */
+
+	/* Alloc and blank out (*info_ptr). */
+	*info_ptr = kmalloc(sizeof(**info_ptr), GFP_KERNEL);
+	if (!*info_ptr) {
+		err=-ENOMEM;
+		goto cleanup_firmware;
+	}
+	memset(*info_ptr, 0, sizeof(**info_ptr));
+
+	/* Copy in the non-pointer members of *info_ptr, and byteswap. */
+	memcpy(&temp, &fw_entry->data[0], 4);
+	(*info_ptr)->text_base=le32_to_cpu(temp);
+	memcpy(&temp, &fw_entry->data[4], 4);
+	(*info_ptr)->text_len=le32_to_cpu(temp);
+
+	memcpy(&temp, &fw_entry->data[8], 4);
+	(*info_ptr)->rodata_base=le32_to_cpu(temp);
+	memcpy(&temp, &fw_entry->data[12], 4);
+	(*info_ptr)->rodata_len=le32_to_cpu(temp);
+
+	memcpy(&temp, &fw_entry->data[16], 4);
+	(*info_ptr)->data_base=le32_to_cpu(temp);
+	memcpy(&temp, &fw_entry->data[20], 4);
+	(*info_ptr)->data_len=le32_to_cpu(temp);
+
+	/* Sanity check the size of the remaining firmware */
+	if (fw_entry->size 
+	    != (*info_ptr)->text_len + (*info_ptr)->rodata_len + (*info_ptr)->data_len + 24) {
+		printk(KERN_WARNING PFX "tg3_request_firmware (%s): "
+		       "Firmware \"%s\" length doesn't add up.\n",
+		       tp->dev->name, filename);
+		err = -EINVAL;
+		goto cleanup_info;
+	}
+
+	/* Copy appropriate stuff into text_data and byte-swap in place */
+	(*info_ptr)->text_data=kmalloc((*info_ptr)->text_len, GFP_KERNEL);
+	if ((*info_ptr)->text_data == NULL) {
+		err = -ENOMEM;
+		goto cleanup_info;
+	}
+	memcpy((*info_ptr)->text_data,
+	       &fw_entry->data[24],
+	       (*info_ptr)->text_len);
+	for (i = 0; i < ((*info_ptr)->text_len/4); i++) {
+		le32_to_cpus(&(*info_ptr)->text_data[i]);
+	}
+
+	/* Copy appropriate stuff into rodata_data and byte-swap in place */
+	(*info_ptr)->rodata_data=kmalloc((*info_ptr)->rodata_len, GFP_KERNEL);
+	if ((*info_ptr)->rodata_data == NULL) {
+		err = -ENOMEM;
+		goto cleanup_text;
+	}
+	memcpy((*info_ptr)->rodata_data,
+	       &fw_entry->data[24 + (*info_ptr)->text_len],
+	       (*info_ptr)->rodata_len);
+	for (i = 0; i < ((*info_ptr)->rodata_len/4); i++) {
+		le32_to_cpus(&(*info_ptr)->rodata_data[i]);
+	}
+
+	/* Copy appropriate stuff into data_data and byte-swap in place */
+	(*info_ptr)->data_data=kmalloc((*info_ptr)->data_len, GFP_KERNEL);
+	if ((*info_ptr)->data_data == NULL) {
+		err = -ENOMEM;
+		goto cleanup_rodata;
+	}
+	memcpy((*info_ptr)->data_data,
+	       &fw_entry->data[24 + (*info_ptr)->text_len + (*info_ptr)->rodata_len],
+	       (*info_ptr)->data_len);
+	for (i = 0; i < ((*info_ptr)->data_len/4); i++) {
+		le32_to_cpus(&(*info_ptr)->data_data[i]);
+	}
+
+	/* Finally, we're done.  (Unless we bailed out.)  Since
+	   we copied the entire contents of the firmware, release it
+	   now. */
+	release_firmware(fw_entry);
+	return 0;
+
+cleanup_rodata:
+	kfree((*info_ptr)->rodata_data);
+cleanup_text:
+	kfree((*info_ptr)->text_data);
+cleanup_info:
+	kfree(*info_ptr);
+	info_ptr=NULL;
+cleanup_firmware:
+	release_firmware(fw_entry);
+cleanup_out:
+	return err;
+}
+
+/* Wipe out one fw_info structure; it must be fully allocated */
+static void tg3_release_firmware(struct fw_info** info_ptr) {
+	kfree((*info_ptr)->data_data);
+	kfree((*info_ptr)->rodata_data);
+	kfree((*info_ptr)->text_data);
+	kfree(*info_ptr);
+	info_ptr = NULL;
+}
+
 /* tp->lock is held. */
 static int tg3_load_firmware_cpu(struct tg3 *tp, u32 cpu_base, u32 cpu_scratch_base,
 				 int cpu_scratch_size, struct fw_info *info)
@@ -3784,48 +3823,37 @@
 /* tp->lock is held. */
 static int tg3_load_5701_a0_firmware_fix(struct tg3 *tp)
 {
-	struct fw_info info;
 	int err, i;
 
-	info.text_base = TG3_FW_TEXT_ADDR;
-	info.text_len = TG3_FW_TEXT_LEN;
-	info.text_data = &tg3FwText[0];
-	info.rodata_base = TG3_FW_RODATA_ADDR;
-	info.rodata_len = TG3_FW_RODATA_LEN;
-	info.rodata_data = &tg3FwRodata[0];
-	info.data_base = TG3_FW_DATA_ADDR;
-	info.data_len = TG3_FW_DATA_LEN;
-	info.data_data = NULL;
-
 	err = tg3_load_firmware_cpu(tp, RX_CPU_BASE,
 				    RX_CPU_SCRATCH_BASE, RX_CPU_SCRATCH_SIZE,
-				    &info);
+				    tg3_fw_5701_a0);
 	if (err)
 		return err;
 
 	err = tg3_load_firmware_cpu(tp, TX_CPU_BASE,
 				    TX_CPU_SCRATCH_BASE, TX_CPU_SCRATCH_SIZE,
-				    &info);
+				    tg3_fw_5701_a0);
 	if (err)
 		return err;
 
 	/* Now startup only the RX cpu. */
 	tw32(RX_CPU_BASE + CPU_STATE, 0xffffffff);
-	tw32_f(RX_CPU_BASE + CPU_PC,    TG3_FW_TEXT_ADDR);
+	tw32_f(RX_CPU_BASE + CPU_PC, (tg3_fw_5701_a0->text_base));
 
 	for (i = 0; i < 5; i++) {
-		if (tr32(RX_CPU_BASE + CPU_PC) == TG3_FW_TEXT_ADDR)
+		if (tr32(RX_CPU_BASE + CPU_PC) == (tg3_fw_5701_a0->text_base))
 			break;
 		tw32(RX_CPU_BASE + CPU_STATE, 0xffffffff);
 		tw32(RX_CPU_BASE + CPU_MODE,  CPU_MODE_HALT);
-		tw32_f(RX_CPU_BASE + CPU_PC,    TG3_FW_TEXT_ADDR);
+		tw32_f(RX_CPU_BASE + CPU_PC, (tg3_fw_5701_a0->text_base));
 		udelay(1000);
 	}
 	if (i >= 5) {
 		printk(KERN_ERR PFX "tg3_load_firmware fails for %s "
 		       "to set RX CPU PC, is %08x should be %08x\n",
 		       tp->dev->name, tr32(RX_CPU_BASE + CPU_PC),
-		       TG3_FW_TEXT_ADDR);
+		       (tg3_fw_5701_a0->text_base));
 		return -ENODEV;
 	}
 	tw32(RX_CPU_BASE + CPU_STATE, 0xffffffff);
@@ -3836,544 +3864,24 @@
 
 #if TG3_TSO_SUPPORT != 0
 
-#define TG3_TSO_FW_RELEASE_MAJOR	0x1
-#define TG3_TSO_FW_RELASE_MINOR		0x4
-#define TG3_TSO_FW_RELEASE_FIX		0x0
-#define TG3_TSO_FW_START_ADDR		0x08000000
-#define TG3_TSO_FW_TEXT_ADDR		0x08000000
-#define TG3_TSO_FW_TEXT_LEN		0x1a90
-#define TG3_TSO_FW_RODATA_ADDR		0x08001a900
-#define TG3_TSO_FW_RODATA_LEN		0x60
-#define TG3_TSO_FW_DATA_ADDR		0x08001b20
-#define TG3_TSO_FW_DATA_LEN		0x20
-#define TG3_TSO_FW_SBSS_ADDR		0x08001b40
-#define TG3_TSO_FW_SBSS_LEN		0x2c
-#define TG3_TSO_FW_BSS_ADDR		0x08001b70
-#define TG3_TSO_FW_BSS_LEN		0x894
-
-static u32 tg3TsoFwText[] = {
-	0x00000000, 0x10000003, 0x00000000, 0x0000000d, 0x0000000d, 0x3c1d0800,
-	0x37bd4000, 0x03a0f021, 0x3c100800, 0x26100000, 0x0e000010, 0x00000000,
-	0x0000000d, 0x00000000, 0x00000000, 0x00000000, 0x27bdffe0, 0x3c04fefe,
-	0xafbf0018, 0x0e0005d4, 0x34840002, 0x0e000664, 0x00000000, 0x3c030800,
-	0x90631b58, 0x24020002, 0x3c040800, 0x24841a9c, 0x14620003, 0x24050001,
-	0x3c040800, 0x24841a90, 0x24060003, 0x00003821, 0xafa00010, 0x0e000678,
-	0xafa00014, 0x8f625c50, 0x34420001, 0xaf625c50, 0x8f625c90, 0x34420001,
-	0xaf625c90, 0x2402ffff, 0x0e000034, 0xaf625404, 0x8fbf0018, 0x03e00008,
-	0x27bd0020, 0x00000000, 0x00000000, 0x00000000, 0x27bdffe0, 0xafbf001c,
-	0xafb20018, 0xafb10014, 0x0e00005b, 0xafb00010, 0x24120002, 0x24110001,
-	0x8f706820, 0x32020100, 0x10400003, 0x00000000, 0x0e0000bb, 0x00000000,
-	0x8f706820, 0x32022000, 0x10400004, 0x32020001, 0x0e0001ef, 0x24040001,
-	0x32020001, 0x10400003, 0x00000000, 0x0e0000a3, 0x00000000, 0x3c020800,
-	0x90421b88, 0x14520003, 0x00000000, 0x0e0004bf, 0x00000000, 0x0a00003c,
-	0xaf715028, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x03e00008,
-	0x27bd0020, 0x27bdffe0, 0x3c040800, 0x24841ab0, 0x00002821, 0x00003021,
-	0x00003821, 0xafbf0018, 0xafa00010, 0x0e000678, 0xafa00014, 0x3c040800,
-	0x248423c8, 0xa4800000, 0x3c010800, 0xa0201b88, 0x3c010800, 0xac201b8c,
-	0x3c010800, 0xac201b90, 0x3c010800, 0xac201b94, 0x3c010800, 0xac201b9c,
-	0x3c010800, 0xac201ba8, 0x3c010800, 0xac201bac, 0x8f624434, 0x3c010800,
-	0xac221b78, 0x8f624438, 0x3c010800, 0xac221b7c, 0x8f624410, 0xac80f7a8,
-	0x3c010800, 0xac201b74, 0x3c010800, 0xac2023d0, 0x3c010800, 0xac2023b8,
-	0x3c010800, 0xac2023bc, 0x3c010800, 0xac2023f0, 0x3c010800, 0xac221b80,
-	0x8f620068, 0x24030007, 0x00021702, 0x10430005, 0x00000000, 0x8f620068,
-	0x00021702, 0x14400004, 0x24020001, 0x3c010800, 0x0a000097, 0xac2023fc,
-	0xac820034, 0x3c040800, 0x24841abc, 0x3c050800, 0x8ca523fc, 0x00003021,
-	0x00003821, 0xafa00010, 0x0e000678, 0xafa00014, 0x8fbf0018, 0x03e00008,
-	0x27bd0020, 0x27bdffe0, 0x3c040800, 0x24841ac8, 0x00002821, 0x00003021,
-	0x00003821, 0xafbf0018, 0xafa00010, 0x0e000678, 0xafa00014, 0x0e00005b,
-	0x00000000, 0x0e0000b4, 0x00002021, 0x8fbf0018, 0x03e00008, 0x27bd0020,
-	0x24020001, 0x8f636820, 0x00821004, 0x00021027, 0x00621824, 0x03e00008,
-	0xaf636820, 0x27bdffd0, 0xafbf002c, 0xafb60028, 0xafb50024, 0xafb40020,
-	0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0x8f675c5c, 0x3c030800,
-	0x24631bac, 0x8c620000, 0x14470005, 0x3c0200ff, 0x3c020800, 0x90421b88,
-	0x14400118, 0x3c0200ff, 0x3442fff8, 0x00e28824, 0xac670000, 0x00111902,
-	0x306300ff, 0x30e20003, 0x000211c0, 0x00622825, 0x00a04021, 0x00071602,
-	0x3c030800, 0x90631b88, 0x3044000f, 0x14600036, 0x00804821, 0x24020001,
-	0x3c010800, 0xa0221b88, 0x00051100, 0x00821025, 0x3c010800, 0xac201b8c,
-	0x3c010800, 0xac201b90, 0x3c010800, 0xac201b94, 0x3c010800, 0xac201b9c,
-	0x3c010800, 0xac201ba8, 0x3c010800, 0xac201ba0, 0x3c010800, 0xac201ba4,
-	0x3c010800, 0xa42223c8, 0x9622000c, 0x30437fff, 0x3c010800, 0xa4222400,
-	0x30428000, 0x3c010800, 0xa4231bb6, 0x10400005, 0x24020001, 0x3c010800,
-	0xac2223e4, 0x0a000102, 0x2406003e, 0x24060036, 0x3c010800, 0xac2023e4,
-	0x9622000a, 0x3c030800, 0x94631bb6, 0x3c010800, 0xac2023e0, 0x3c010800,
-	0xac2023e8, 0x00021302, 0x00021080, 0x00c21021, 0x00621821, 0x3c010800,
-	0xa42223c0, 0x3c010800, 0x0a000115, 0xa4231b86, 0x9622000c, 0x3c010800,
-	0xa42223dc, 0x3c040800, 0x24841b8c, 0x8c820000, 0x00021100, 0x3c010800,
-	0x00220821, 0xac311bb8, 0x8c820000, 0x00021100, 0x3c010800, 0x00220821,
-	0xac271bbc, 0x8c820000, 0x25030001, 0x306601ff, 0x00021100, 0x3c010800,
-	0x00220821, 0xac261bc0, 0x8c820000, 0x00021100, 0x3c010800, 0x00220821,
-	0xac291bc4, 0x96230008, 0x3c020800, 0x8c421b9c, 0x00432821, 0x3c010800,
-	0xac251b9c, 0x9622000a, 0x30420004, 0x14400018, 0x00061100, 0x8f630c14,
-	0x3063000f, 0x2c620002, 0x1440000b, 0x3c02c000, 0x8f630c14, 0x3c020800,
-	0x8c421b30, 0x3063000f, 0x24420001, 0x3c010800, 0xac221b30, 0x2c620002,
-	0x1040fff7, 0x3c02c000, 0x00e21825, 0xaf635c5c, 0x8f625c50, 0x30420002,
-	0x10400014, 0x00000000, 0x0a000147, 0x00000000, 0x3c030800, 0x8c631b70,
-	0x3c040800, 0x94841b84, 0x01221025, 0x3c010800, 0xa42223ca, 0x24020001,
-	0x3c010800, 0xac221ba8, 0x24630001, 0x0085202a, 0x3c010800, 0x10800003,
-	0xac231b70, 0x3c010800, 0xa4251b84, 0x3c060800, 0x24c61b8c, 0x8cc20000,
-	0x24420001, 0xacc20000, 0x28420080, 0x14400005, 0x00000000, 0x0e000652,
-	0x24040002, 0x0a0001e5, 0x00000000, 0x3c020800, 0x8c421ba8, 0x10400077,
-	0x24020001, 0x3c050800, 0x90a51b88, 0x14a20071, 0x00000000, 0x3c150800,
-	0x96b51b86, 0x3c040800, 0x8c841b9c, 0x32a3ffff, 0x0083102a, 0x1440006b,
-	0x00000000, 0x14830003, 0x00000000, 0x3c010800, 0xac2523e0, 0x1060005b,
-	0x00009021, 0x24d60004, 0x0060a021, 0x24d30014, 0x8ec20000, 0x00028100,
-	0x3c110800, 0x02308821, 0x0e000621, 0x8e311bb8, 0x00402821, 0x10a00053,
-	0x00000000, 0x9628000a, 0x31020040, 0x10400004, 0x2407180c, 0x8e22000c,
-	0x2407188c, 0xaca20018, 0x3c030800, 0x00701821, 0x8c631bc0, 0x3c020800,
-	0x00501021, 0x8c421bc4, 0x00031d00, 0x00021400, 0x00621825, 0xaca30014,
-	0x8ec30004, 0x96220008, 0x00432023, 0x3242ffff, 0x3083ffff, 0x00431021,
-	0x0282102a, 0x14400002, 0x02b23023, 0x00803021, 0x8e620000, 0x30c4ffff,
-	0x00441021, 0xae620000, 0x8e220000, 0xaca20000, 0x8e220004, 0x8e63fff4,
-	0x00431021, 0xaca20004, 0xa4a6000e, 0x8e62fff4, 0x00441021, 0xae62fff4,
-	0x96230008, 0x0043102a, 0x14400005, 0x02469021, 0x8e62fff0, 0xae60fff4,
-	0x24420001, 0xae62fff0, 0xaca00008, 0x3242ffff, 0x14540008, 0x24020305,
-	0x31020080, 0x54400001, 0x34e70010, 0x24020905, 0xa4a2000c, 0x0a0001ca,
-	0x34e70020, 0xa4a2000c, 0x3c020800, 0x8c4223e0, 0x10400003, 0x3c024b65,
-	0x0a0001d2, 0x34427654, 0x3c02b49a, 0x344289ab, 0xaca2001c, 0x30e2ffff,
-	0xaca20010, 0x0e00059f, 0x00a02021, 0x3242ffff, 0x0054102b, 0x1440ffaa,
-	0x00000000, 0x24020002, 0x3c010800, 0x0a0001e5, 0xa0221b88, 0x8ec2083c,
-	0x24420001, 0x0a0001e5, 0xaec2083c, 0x0e0004bf, 0x00000000, 0x8fbf002c,
-	0x8fb60028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014,
-	0x8fb00010, 0x03e00008, 0x27bd0030, 0x27bdffd0, 0xafbf0028, 0xafb30024,
-	0xafb20020, 0xafb1001c, 0xafb00018, 0x8f725c9c, 0x3c0200ff, 0x3442fff8,
-	0x3c060800, 0x24c61ba4, 0x02428824, 0x9623000e, 0x8cc20000, 0x00431021,
-	0xacc20000, 0x8e220010, 0x30420020, 0x14400011, 0x00809821, 0x0e000637,
-	0x02202021, 0x3c02c000, 0x02421825, 0xaf635c9c, 0x8f625c90, 0x30420002,
-	0x10400121, 0x00000000, 0xaf635c9c, 0x8f625c90, 0x30420002, 0x1040011c,
-	0x00000000, 0x0a00020c, 0x00000000, 0x8e240008, 0x8e230014, 0x00041402,
-	0x000241c0, 0x00031502, 0x304201ff, 0x2442ffff, 0x3042007f, 0x00031942,
-	0x30637800, 0x00021100, 0x24424000, 0x00625021, 0x9542000a, 0x3084ffff,
-	0x30420008, 0x104000b3, 0x000429c0, 0x3c020800, 0x8c4223f0, 0x1440002d,
-	0x25050008, 0x95020014, 0x3c010800, 0xa42223c0, 0x8d070010, 0x00071402,
-	0x3c010800, 0xa42223c2, 0x3c010800, 0xa42723c4, 0x9502000e, 0x30e3ffff,
-	0x00431023, 0x3c010800, 0xac2223f8, 0x8f626800, 0x3c030010, 0x00431024,
-	0x10400005, 0x00000000, 0x9503001a, 0x9502001c, 0x0a000241, 0x00431021,
-	0x9502001a, 0x3c010800, 0xac2223ec, 0x3c02c000, 0x02421825, 0x3c010800,
-	0xac2823f0, 0x3c010800, 0xac3223f4, 0xaf635c9c, 0x8f625c90, 0x30420002,
-	0x104000df, 0x00000000, 0xaf635c9c, 0x8f625c90, 0x30420002, 0x104000da,
-	0x00000000, 0x0a00024e, 0x00000000, 0x9502000e, 0x3c030800, 0x946323c4,
-	0x00434823, 0x3123ffff, 0x2c620008, 0x1040001c, 0x00000000, 0x95020014,
-	0x24420028, 0x00a22821, 0x00031042, 0x1840000b, 0x00002021, 0x24c60848,
-	0x00403821, 0x94a30000, 0x8cc20000, 0x24840001, 0x00431021, 0xacc20000,
-	0x0087102a, 0x1440fff9, 0x24a50002, 0x31220001, 0x1040001f, 0x3c024000,
-	0x3c040800, 0x248423ec, 0xa0a00001, 0x94a30000, 0x8c820000, 0x00431021,
-	0x0a00028d, 0xac820000, 0x8f626800, 0x3c030010, 0x00431024, 0x10400009,
-	0x00000000, 0x9502001a, 0x3c030800, 0x8c6323ec, 0x00431021, 0x3c010800,
-	0xac2223ec, 0x0a00028e, 0x3c024000, 0x9502001a, 0x9504001c, 0x3c030800,
-	0x8c6323ec, 0x00441023, 0x00621821, 0x3c010800, 0xac2323ec, 0x3c024000,
-	0x02421825, 0xaf635c9c, 0x8f625c90, 0x30420002, 0x1440fffc, 0x00000000,
-	0x9542000a, 0x30420010, 0x10400095, 0x00000000, 0x3c060800, 0x24c623f0,
-	0x3c020800, 0x944223c4, 0x8cc50000, 0x3c040800, 0x8c8423f8, 0x24420030,
-	0x00a22821, 0x94a20004, 0x3c030800, 0x8c6323ec, 0x00441023, 0x00621821,
-	0x00603821, 0x00032402, 0x30e2ffff, 0x00823821, 0x00071402, 0x00e23821,
-	0x00071027, 0x3c010800, 0xac2323ec, 0xa4a20006, 0x3c030800, 0x8c6323f4,
-	0x3c0200ff, 0x3442fff8, 0x00628824, 0x96220008, 0x24040001, 0x24034000,
-	0x000241c0, 0x00e01021, 0xa502001a, 0xa500001c, 0xacc00000, 0x3c010800,
-	0xac241b50, 0xaf635cb8, 0x8f625cb0, 0x30420002, 0x10400003, 0x00000000,
-	0x3c010800, 0xac201b50, 0x8e220008, 0xaf625cb8, 0x8f625cb0, 0x30420002,
-	0x10400003, 0x00000000, 0x3c010800, 0xac201b50, 0x3c020800, 0x8c421b50,
-	0x1040ffec, 0x00000000, 0x3c040800, 0x0e000637, 0x8c8423f4, 0x0a00032c,
-	0x00000000, 0x3c030800, 0x90631b88, 0x24020002, 0x14620003, 0x3c034b65,
-	0x0a0002e3, 0x00008021, 0x8e22001c, 0x34637654, 0x10430002, 0x24100002,
-	0x24100001, 0x01002021, 0x0e000352, 0x02003021, 0x24020003, 0x3c010800,
-	0xa0221b88, 0x24020002, 0x1202000a, 0x24020001, 0x3c030800, 0x8c6323e0,
-	0x10620006, 0x00000000, 0x3c020800, 0x944223c8, 0x00021400, 0x0a000321,
-	0xae220014, 0x3c040800, 0x248423ca, 0x94820000, 0x00021400, 0xae220014,
-	0x3c020800, 0x8c421bac, 0x3c03c000, 0x3c010800, 0xa0201b88, 0x00431025,
-	0xaf625c5c, 0x8f625c50, 0x30420002, 0x10400009, 0x00000000, 0x2484f7e2,
-	0x8c820000, 0x00431025, 0xaf625c5c, 0x8f625c50, 0x30420002, 0x1440fffa,
-	0x00000000, 0x3c020800, 0x24421b74, 0x8c430000, 0x24630001, 0xac430000,
-	0x8f630c14, 0x3063000f, 0x2c620002, 0x1440000c, 0x3c024000, 0x8f630c14,
-	0x3c020800, 0x8c421b30, 0x3063000f, 0x24420001, 0x3c010800, 0xac221b30,
-	0x2c620002, 0x1040fff7, 0x00000000, 0x3c024000, 0x02421825, 0xaf635c9c,
-	0x8f625c90, 0x30420002, 0x1440fffc, 0x00000000, 0x12600003, 0x00000000,
-	0x0e0004bf, 0x00000000, 0x8fbf0028, 0x8fb30024, 0x8fb20020, 0x8fb1001c,
-	0x8fb00018, 0x03e00008, 0x27bd0030, 0x8f634450, 0x3c040800, 0x24841b78,
-	0x8c820000, 0x00031c02, 0x0043102b, 0x14400007, 0x3c038000, 0x8c840004,
-	0x8f624450, 0x00021c02, 0x0083102b, 0x1040fffc, 0x3c038000, 0xaf634444,
-	0x8f624444, 0x00431024, 0x1440fffd, 0x00000000, 0x8f624448, 0x03e00008,
-	0x3042ffff, 0x3c024000, 0x00822025, 0xaf645c38, 0x8f625c30, 0x30420002,
-	0x1440fffc, 0x00000000, 0x03e00008, 0x00000000, 0x27bdffe0, 0x00805821,
-	0x14c00011, 0x256e0008, 0x3c020800, 0x8c4223e4, 0x10400007, 0x24020016,
-	0x3c010800, 0xa42223c2, 0x2402002a, 0x3c010800, 0x0a000366, 0xa42223c4,
-	0x8d670010, 0x00071402, 0x3c010800, 0xa42223c2, 0x3c010800, 0xa42723c4,
-	0x3c040800, 0x948423c4, 0x3c030800, 0x946323c2, 0x95cf0006, 0x3c020800,
-	0x944223c0, 0x00832023, 0x01e2c023, 0x3065ffff, 0x24a20028, 0x01c24821,
-	0x3082ffff, 0x14c0001a, 0x01226021, 0x9582000c, 0x3042003f, 0x3c010800,
-	0xa42223c6, 0x95820004, 0x95830006, 0x3c010800, 0xac2023d4, 0x3c010800,
-	0xac2023d8, 0x00021400, 0x00431025, 0x3c010800, 0xac221bb0, 0x95220004,
-	0x3c010800, 0xa4221bb4, 0x95230002, 0x01e51023, 0x0043102a, 0x10400010,
-	0x24020001, 0x3c010800, 0x0a00039a, 0xac2223e8, 0x3c030800, 0x8c6323d8,
-	0x3c020800, 0x94421bb4, 0x00431021, 0xa5220004, 0x3c020800, 0x94421bb0,
-	0xa5820004, 0x3c020800, 0x8c421bb0, 0xa5820006, 0x3c020800, 0x8c4223e0,
-	0x3c0d0800, 0x8dad23d4, 0x3c0a0800, 0x144000e5, 0x8d4a23d8, 0x3c020800,
-	0x94421bb4, 0x004a1821, 0x3063ffff, 0x0062182b, 0x24020002, 0x10c2000d,
-	0x01435023, 0x3c020800, 0x944223c6, 0x30420009, 0x10400008, 0x00000000,
-	0x9582000c, 0x3042fff6, 0xa582000c, 0x3c020800, 0x944223c6, 0x30420009,
-	0x01a26823, 0x3c020800, 0x8c4223e8, 0x1040004a, 0x01203821, 0x3c020800,
-	0x944223c2, 0x00004021, 0xa520000a, 0x01e21023, 0xa5220002, 0x3082ffff,
-	0x00021042, 0x18400008, 0x00003021, 0x00401821, 0x94e20000, 0x25080001,
-	0x00c23021, 0x0103102a, 0x1440fffb, 0x24e70002, 0x00061c02, 0x30c2ffff,
-	0x00623021, 0x00061402, 0x00c23021, 0x00c02821, 0x00061027, 0xa522000a,
-	0x00003021, 0x2527000c, 0x00004021, 0x94e20000, 0x25080001, 0x00c23021,
-	0x2d020004, 0x1440fffb, 0x24e70002, 0x95220002, 0x00004021, 0x91230009,
-	0x00442023, 0x01803821, 0x3082ffff, 0xa4e00010, 0x00621821, 0x00021042,
-	0x18400010, 0x00c33021, 0x00404821, 0x94e20000, 0x24e70002, 0x00c23021,
-	0x30e2007f, 0x14400006, 0x25080001, 0x8d630000, 0x3c02007f, 0x3442ff80,
-	0x00625824, 0x25670008, 0x0109102a, 0x1440fff3, 0x00000000, 0x30820001,
-	0x10400005, 0x00061c02, 0xa0e00001, 0x94e20000, 0x00c23021, 0x00061c02,
-	0x30c2ffff, 0x00623021, 0x00061402, 0x00c23021, 0x0a00047f, 0x30c6ffff,
-	0x24020002, 0x14c20081, 0x00000000, 0x3c020800, 0x8c4223fc, 0x14400007,
-	0x00000000, 0x3c020800, 0x944223c2, 0x95230002, 0x01e21023, 0x10620077,
-	0x00000000, 0x3c020800, 0x944223c2, 0x01e21023, 0xa5220002, 0x3c020800,
-	0x8c4223fc, 0x1040001a, 0x31e3ffff, 0x8dc70010, 0x3c020800, 0x94421b86,
-	0x00e04021, 0x00072c02, 0x00aa2021, 0x00431023, 0x00823823, 0x00072402,
-	0x30e2ffff, 0x00823821, 0x00071027, 0xa522000a, 0x3102ffff, 0x3c040800,
-	0x948423c4, 0x00453023, 0x00e02821, 0x00641823, 0x006d1821, 0x00c33021,
-	0x00061c02, 0x30c2ffff, 0x0a00047f, 0x00623021, 0x01203821, 0x00004021,
-	0x3082ffff, 0x00021042, 0x18400008, 0x00003021, 0x00401821, 0x94e20000,
-	0x25080001, 0x00c23021, 0x0103102a, 0x1440fffb, 0x24e70002, 0x00061c02,
-	0x30c2ffff, 0x00623021, 0x00061402, 0x00c23021, 0x00c02821, 0x00061027,
-	0xa522000a, 0x00003021, 0x2527000c, 0x00004021, 0x94e20000, 0x25080001,
-	0x00c23021, 0x2d020004, 0x1440fffb, 0x24e70002, 0x95220002, 0x00004021,
-	0x91230009, 0x00442023, 0x01803821, 0x3082ffff, 0xa4e00010, 0x3c040800,
-	0x948423c4, 0x00621821, 0x00c33021, 0x00061c02, 0x30c2ffff, 0x00623021,
-	0x00061c02, 0x3c020800, 0x944223c0, 0x00c34821, 0x00441023, 0x00021fc2,
-	0x00431021, 0x00021043, 0x18400010, 0x00003021, 0x00402021, 0x94e20000,
-	0x24e70002, 0x00c23021, 0x30e2007f, 0x14400006, 0x25080001, 0x8d630000,
-	0x3c02007f, 0x3442ff80, 0x00625824, 0x25670008, 0x0104102a, 0x1440fff3,
-	0x00000000, 0x3c020800, 0x944223dc, 0x00c23021, 0x3122ffff, 0x00c23021,
-	0x00061c02, 0x30c2ffff, 0x00623021, 0x00061402, 0x00c23021, 0x00c04021,
-	0x00061027, 0xa5820010, 0xadc00014, 0x0a00049f, 0xadc00000, 0x8dc70010,
-	0x00e04021, 0x11400007, 0x00072c02, 0x00aa3021, 0x00061402, 0x30c3ffff,
-	0x00433021, 0x00061402, 0x00c22821, 0x00051027, 0xa522000a, 0x3c030800,
-	0x946323c4, 0x3102ffff, 0x01e21021, 0x00433023, 0x00cd3021, 0x00061c02,
-	0x30c2ffff, 0x00623021, 0x00061402, 0x00c23021, 0x00c04021, 0x00061027,
-	0xa5820010, 0x3102ffff, 0x00051c00, 0x00431025, 0xadc20010, 0x3c020800,
-	0x8c4223e4, 0x10400002, 0x25e2fff2, 0xa5c20034, 0x3c020800, 0x8c4223d8,
-	0x3c040800, 0x8c8423d4, 0x24420001, 0x3c010800, 0xac2223d8, 0x3c020800,
-	0x8c421bb0, 0x3303ffff, 0x00832021, 0x3c010800, 0xac2423d4, 0x00431821,
-	0x0062102b, 0x10400003, 0x2482ffff, 0x3c010800, 0xac2223d4, 0x3c010800,
-	0xac231bb0, 0x03e00008, 0x27bd0020, 0x27bdffb8, 0x3c050800, 0x24a51b86,
-	0xafbf0044, 0xafbe0040, 0xafb7003c, 0xafb60038, 0xafb50034, 0xafb40030,
-	0xafb3002c, 0xafb20028, 0xafb10024, 0xafb00020, 0x94a90000, 0x3c020800,
-	0x944223c0, 0x3c030800, 0x8c631ba0, 0x3c040800, 0x8c841b9c, 0x01221023,
-	0x0064182a, 0xa7a9001e, 0x106000bc, 0xa7a20016, 0x24be0022, 0x97b6001e,
-	0x24b3001a, 0x24b70016, 0x8fc20000, 0x14400008, 0x00000000, 0x8fc2fff8,
-	0x97a30016, 0x8fc4fff4, 0x00431021, 0x0082202a, 0x148000ae, 0x00000000,
-	0x97d50818, 0x32a2ffff, 0x104000a1, 0x00009021, 0x0040a021, 0x00008821,
-	0x0e000621, 0x00000000, 0x00403021, 0x14c00007, 0x00000000, 0x3c020800,
-	0x8c4223cc, 0x24420001, 0x3c010800, 0x0a000593, 0xac2223cc, 0x3c100800,
-	0x02118021, 0x8e101bb8, 0x9608000a, 0x31020040, 0x10400004, 0x2407180c,
-	0x8e02000c, 0x2407188c, 0xacc20018, 0x31020080, 0x54400001, 0x34e70010,
-	0x3c020800, 0x00511021, 0x8c421bc0, 0x3c030800, 0x00711821, 0x8c631bc4,
-	0x00021500, 0x00031c00, 0x00431025, 0xacc20014, 0x96040008, 0x3242ffff,
-	0x00821021, 0x0282102a, 0x14400002, 0x02b22823, 0x00802821, 0x8e020000,
-	0x02459021, 0xacc20000, 0x8e020004, 0x00c02021, 0x26310010, 0xac820004,
-	0x30e2ffff, 0xac800008, 0xa485000e, 0xac820010, 0x24020305, 0x0e00059f,
-	0xa482000c, 0x3242ffff, 0x0054102b, 0x1440ffc6, 0x3242ffff, 0x0a00058b,
-	0x00000000, 0x8e620000, 0x8e63fffc, 0x0043102a, 0x10400066, 0x00000000,
-	0x8e62fff0, 0x00028900, 0x3c100800, 0x02118021, 0x0e000621, 0x8e101bb8,
-	0x00403021, 0x14c00005, 0x00000000, 0x8e62082c, 0x24420001, 0x0a000593,
-	0xae62082c, 0x9608000a, 0x31020040, 0x10400004, 0x2407180c, 0x8e02000c,
-	0x2407188c, 0xacc20018, 0x3c020800, 0x00511021, 0x8c421bc0, 0x3c030800,
-	0x00711821, 0x8c631bc4, 0x00021500, 0x00031c00, 0x00431025, 0xacc20014,
-	0x8e63fff4, 0x96020008, 0x00432023, 0x3242ffff, 0x3083ffff, 0x00431021,
-	0x02c2102a, 0x10400003, 0x00802821, 0x97a9001e, 0x01322823, 0x8e620000,
-	0x30a4ffff, 0x00441021, 0xae620000, 0xa4c5000e, 0x8e020000, 0xacc20000,
-	0x8e020004, 0x8e63fff4, 0x00431021, 0xacc20004, 0x8e63fff4, 0x96020008,
-	0x00641821, 0x0062102a, 0x14400006, 0x02459021, 0x8e62fff0, 0xae60fff4,
-	0x24420001, 0x0a00056e, 0xae62fff0, 0xae63fff4, 0xacc00008, 0x3242ffff,
-	0x10560003, 0x31020004, 0x10400006, 0x24020305, 0x31020080, 0x54400001,
-	0x34e70010, 0x34e70020, 0x24020905, 0xa4c2000c, 0x8ee30000, 0x8ee20004,
-	0x14620007, 0x3c02b49a, 0x8ee20860, 0x54400001, 0x34e70400, 0x3c024b65,
-	0x0a000585, 0x34427654, 0x344289ab, 0xacc2001c, 0x30e2ffff, 0xacc20010,
-	0x0e00059f, 0x00c02021, 0x3242ffff, 0x0056102b, 0x1440ff9c, 0x00000000,
-	0x8e620000, 0x8e63fffc, 0x0043102a, 0x1440ff4a, 0x00000000, 0x8fbf0044,
-	0x8fbe0040, 0x8fb7003c, 0x8fb60038, 0x8fb50034, 0x8fb40030, 0x8fb3002c,
-	0x8fb20028, 0x8fb10024, 0x8fb00020, 0x03e00008, 0x27bd0048, 0x27bdffe8,
-	0xafbf0014, 0xafb00010, 0x8f624450, 0x8f634410, 0x0a0005ae, 0x00808021,
-	0x8f626820, 0x30422000, 0x10400003, 0x00000000, 0x0e0001ef, 0x00002021,
-	0x8f624450, 0x8f634410, 0x3042ffff, 0x0043102b, 0x1440fff5, 0x00000000,
-	0x8f630c14, 0x3063000f, 0x2c620002, 0x1440000b, 0x00000000, 0x8f630c14,
-	0x3c020800, 0x8c421b30, 0x3063000f, 0x24420001, 0x3c010800, 0xac221b30,
-	0x2c620002, 0x1040fff7, 0x00000000, 0xaf705c18, 0x8f625c10, 0x30420002,
-	0x10400009, 0x00000000, 0x8f626820, 0x30422000, 0x1040fff8, 0x00000000,
-	0x0e0001ef, 0x00002021, 0x0a0005c1, 0x00000000, 0x8fbf0014, 0x8fb00010,
-	0x03e00008, 0x27bd0018, 0x00000000, 0x00000000, 0x27bdffe8, 0x3c1bc000,
-	0xafbf0014, 0xafb00010, 0xaf60680c, 0x8f626804, 0x34420082, 0xaf626804,
-	0x8f634000, 0x24020b50, 0x3c010800, 0xac221b44, 0x24020b78, 0x3c010800,
-	0xac221b54, 0x34630002, 0xaf634000, 0x0e000601, 0x00808021, 0x3c010800,
-	0xa0221b58, 0x304200ff, 0x24030002, 0x14430005, 0x00000000, 0x3c020800,
-	0x8c421b44, 0x0a0005f4, 0xac5000c0, 0x3c020800, 0x8c421b44, 0xac5000bc,
-	0x8f624434, 0x8f634438, 0x8f644410, 0x3c010800, 0xac221b4c, 0x3c010800,
-	0xac231b5c, 0x3c010800, 0xac241b48, 0x8fbf0014, 0x8fb00010, 0x03e00008,
-	0x27bd0018, 0x3c040800, 0x8c870000, 0x3c03aa55, 0x3463aa55, 0x3c06c003,
-	0xac830000, 0x8cc20000, 0x14430007, 0x24050002, 0x3c0355aa, 0x346355aa,
-	0xac830000, 0x8cc20000, 0x50430001, 0x24050001, 0x3c020800, 0xac470000,
-	0x03e00008, 0x00a01021, 0x27bdfff8, 0x18800009, 0x00002821, 0x8f63680c,
-	0x8f62680c, 0x1043fffe, 0x00000000, 0x24a50001, 0x00a4102a, 0x1440fff9,
-	0x00000000, 0x03e00008, 0x27bd0008, 0x8f634450, 0x3c020800, 0x8c421b4c,
-	0x00031c02, 0x0043102b, 0x14400008, 0x3c038000, 0x3c040800, 0x8c841b5c,
-	0x8f624450, 0x00021c02, 0x0083102b, 0x1040fffc, 0x3c038000, 0xaf634444,
-	0x8f624444, 0x00431024, 0x1440fffd, 0x00000000, 0x8f624448, 0x03e00008,
-	0x3042ffff, 0x3082ffff, 0x2442e000, 0x2c422001, 0x14400003, 0x3c024000,
-	0x0a000644, 0x2402ffff, 0x00822025, 0xaf645c38, 0x8f625c30, 0x30420002,
-	0x1440fffc, 0x00001021, 0x03e00008, 0x00000000, 0x8f624450, 0x3c030800,
-	0x8c631b48, 0x0a00064d, 0x3042ffff, 0x8f624450, 0x3042ffff, 0x0043102b,
-	0x1440fffc, 0x00000000, 0x03e00008, 0x00000000, 0x27bdffe0, 0x00802821,
-	0x3c040800, 0x24841ae0, 0x00003021, 0x00003821, 0xafbf0018, 0xafa00010,
-	0x0e000678, 0xafa00014, 0x0a00065c, 0x00000000, 0x8fbf0018, 0x03e00008,
-	0x27bd0020, 0x00000000, 0x00000000, 0x00000000, 0x3c020800, 0x34423000,
-	0x3c030800, 0x34633000, 0x3c040800, 0x348437ff, 0x3c010800, 0xac221b64,
-	0x24020040, 0x3c010800, 0xac221b68, 0x3c010800, 0xac201b60, 0xac600000,
-	0x24630004, 0x0083102b, 0x5040fffd, 0xac600000, 0x03e00008, 0x00000000,
-	0x00804821, 0x8faa0010, 0x3c020800, 0x8c421b60, 0x3c040800, 0x8c841b68,
-	0x8fab0014, 0x24430001, 0x0044102b, 0x3c010800, 0xac231b60, 0x14400003,
-	0x00004021, 0x3c010800, 0xac201b60, 0x3c020800, 0x8c421b60, 0x3c030800,
-	0x8c631b64, 0x91240000, 0x00021140, 0x00431021, 0x00481021, 0x25080001,
-	0xa0440000, 0x29020008, 0x1440fff4, 0x25290001, 0x3c020800, 0x8c421b60,
-	0x3c030800, 0x8c631b64, 0x8f64680c, 0x00021140, 0x00431021, 0xac440008,
-	0xac45000c, 0xac460010, 0xac470014, 0xac4a0018, 0x03e00008, 0xac4b001c,
-	0x00000000, 0x00000000,
-};
-
-u32 tg3TsoFwRodata[] = {
-	0x4d61696e, 0x43707542, 0x00000000, 0x4d61696e, 0x43707541, 0x00000000,
-	0x00000000, 0x00000000, 0x73746b6f, 0x66666c64, 0x496e0000, 0x73746b6f,
-	0x66662a2a, 0x00000000, 0x53774576, 0x656e7430, 0x00000000, 0x00000000,
-	0x00000000, 0x00000000, 0x66617461, 0x6c457272, 0x00000000, 0x00000000,
-};
-
-#if 0 /* All zeros, don't eat up space with it. */
-u32 tg3TsoFwData[] = {
-	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-	0x00000000, 0x00000000, 0x00000000
-};
-#endif
-
-/* 5705 needs a special version of the TSO firmware.  */
-#define TG3_TSO5_FW_RELEASE_MAJOR	0x1
-#define TG3_TSO5_FW_RELASE_MINOR	0x1
-#define TG3_TSO5_FW_RELEASE_FIX		0x0
-#define TG3_TSO5_FW_START_ADDR		0x00010000
-#define TG3_TSO5_FW_TEXT_ADDR		0x00010000
-#define TG3_TSO5_FW_TEXT_LEN		0xeb0
-#define TG3_TSO5_FW_RODATA_ADDR		0x00010eb0
-#define TG3_TSO5_FW_RODATA_LEN		0x50
-#define TG3_TSO5_FW_DATA_ADDR		0x00010f20
-#define TG3_TSO5_FW_DATA_LEN		0x20
-#define TG3_TSO5_FW_SBSS_ADDR		0x00010f40
-#define TG3_TSO5_FW_SBSS_LEN		0x28
-#define TG3_TSO5_FW_BSS_ADDR		0x00010f70
-#define TG3_TSO5_FW_BSS_LEN		0x88
-
-static u32 tg3Tso5FwText[] = {
-	0x0c004003, 0x00000000, 0x00010f30, 0x00000000, 0x10000003, 0x00000000,
-	0x0000000d, 0x0000000d, 0x3c1d0001, 0x37bde000, 0x03a0f021, 0x3c100001,
-	0x26100000, 0x0c004010, 0x00000000, 0x0000000d, 0x27bdffe0, 0x3c04fefe,
-	0xafbf0018, 0x0c0042f0, 0x34840002, 0x0c00436c, 0x00000000, 0x3c030001,
-	0x90630f54, 0x24020002, 0x3c040001, 0x24840ebc, 0x14620003, 0x24050001,
-	0x3c040001, 0x24840eb0, 0x24060001, 0x00003821, 0xafa00010, 0x0c004380,
-	0xafa00014, 0x0c00402c, 0x00000000, 0x8fbf0018, 0x03e00008, 0x27bd0020,
-	0x00000000, 0x00000000, 0x27bdffe0, 0xafbf001c, 0xafb20018, 0xafb10014,
-	0x0c0042d3, 0xafb00010, 0x3c128000, 0x24110001, 0x8f706810, 0x32020400,
-	0x10400007, 0x00000000, 0x8f641008, 0x00921024, 0x14400003, 0x00000000,
-	0x0c004064, 0x00000000, 0x3c020001, 0x90420f76, 0x10510003, 0x32020200,
-	0x1040fff1, 0x00000000, 0x0c0041b4, 0x00000000, 0x08004034, 0x00000000,
-	0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x03e00008, 0x27bd0020,
-	0x27bdffe0, 0x3c040001, 0x24840ed0, 0x00002821, 0x00003021, 0x00003821,
-	0xafbf0018, 0xafa00010, 0x0c004380, 0xafa00014, 0x0000d021, 0x24020130,
-	0xaf625000, 0x3c010001, 0xa4200f70, 0x3c010001, 0xa0200f77, 0x8fbf0018,
-	0x03e00008, 0x27bd0020, 0x00000000, 0x00000000, 0x3c030001, 0x24630f80,
-	0x90620000, 0x27bdfff0, 0x14400003, 0x0080c021, 0x08004073, 0x00004821,
-	0x3c022000, 0x03021024, 0x10400003, 0x24090002, 0x08004073, 0xa0600000,
-	0x24090001, 0x00181040, 0x30431f80, 0x346f8008, 0x1520004b, 0x25eb0028,
-	0x3c040001, 0x00832021, 0x8c848010, 0x3c050001, 0x24a50f9a, 0x00041402,
-	0xa0a20000, 0x3c010001, 0xa0240f9b, 0x3c020001, 0x00431021, 0x94428014,
-	0x3c010001, 0xa0220f9c, 0x3c0c0001, 0x01836021, 0x8d8c8018, 0x304200ff,
-	0x24420008, 0x000220c3, 0x24020001, 0x3c010001, 0xa0220f80, 0x0124102b,
-	0x1040000c, 0x00003821, 0x24a6000e, 0x01602821, 0x8ca20000, 0x8ca30004,
-	0x24a50008, 0x24e70001, 0xacc20000, 0xacc30004, 0x00e4102b, 0x1440fff8,
-	0x24c60008, 0x00003821, 0x3c080001, 0x25080f9b, 0x91060000, 0x3c020001,
-	0x90420f9c, 0x2503000d, 0x00c32821, 0x00461023, 0x00021fc2, 0x00431021,
-	0x00021043, 0x1840000c, 0x00002021, 0x91020001, 0x00461023, 0x00021fc2,
-	0x00431021, 0x00021843, 0x94a20000, 0x24e70001, 0x00822021, 0x00e3102a,
-	0x1440fffb, 0x24a50002, 0x00041c02, 0x3082ffff, 0x00622021, 0x00041402,
-	0x00822021, 0x3c02ffff, 0x01821024, 0x3083ffff, 0x00431025, 0x3c010001,
-	0x080040fa, 0xac220fa0, 0x3c050001, 0x24a50f9c, 0x90a20000, 0x3c0c0001,
-	0x01836021, 0x8d8c8018, 0x000220c2, 0x1080000e, 0x00003821, 0x01603021,
-	0x24a5000c, 0x8ca20000, 0x8ca30004, 0x24a50008, 0x24e70001, 0xacc20000,
-	0xacc30004, 0x00e4102b, 0x1440fff8, 0x24c60008, 0x3c050001, 0x24a50f9c,
-	0x90a20000, 0x30430007, 0x24020004, 0x10620011, 0x28620005, 0x10400005,
-	0x24020002, 0x10620008, 0x000710c0, 0x080040fa, 0x00000000, 0x24020006,
-	0x1062000e, 0x000710c0, 0x080040fa, 0x00000000, 0x00a21821, 0x9463000c,
-	0x004b1021, 0x080040fa, 0xa4430000, 0x000710c0, 0x00a21821, 0x8c63000c,
-	0x004b1021, 0x080040fa, 0xac430000, 0x00a21821, 0x8c63000c, 0x004b2021,
-	0x00a21021, 0xac830000, 0x94420010, 0xa4820004, 0x95e70006, 0x3c020001,
-	0x90420f9c, 0x3c030001, 0x90630f9a, 0x00e2c823, 0x3c020001, 0x90420f9b,
-	0x24630028, 0x01e34021, 0x24420028, 0x15200012, 0x01e23021, 0x94c2000c,
-	0x3c010001, 0xa4220f98, 0x94c20004, 0x94c30006, 0x3c010001, 0xa4200f96,
-	0x3c010001, 0xa4200f92, 0x00021400, 0x00431025, 0x3c010001, 0xac220f8c,
-	0x95020004, 0x3c010001, 0x08004124, 0xa4220f90, 0x3c020001, 0x94420f90,
-	0x3c030001, 0x94630f92, 0x00431021, 0xa5020004, 0x3c020001, 0x94420f8c,
-	0xa4c20004, 0x3c020001, 0x8c420f8c, 0xa4c20006, 0x3c040001, 0x94840f92,
-	0x3c020001, 0x94420f90, 0x3c0a0001, 0x954a0f96, 0x00441821, 0x3063ffff,
-	0x0062182a, 0x24020002, 0x1122000b, 0x00832023, 0x3c030001, 0x94630f98,
-	0x30620009, 0x10400006, 0x3062fff6, 0xa4c2000c, 0x3c020001, 0x94420f98,
-	0x30420009, 0x01425023, 0x24020001, 0x1122001b, 0x29220002, 0x50400005,
-	0x24020002, 0x11200007, 0x31a2ffff, 0x08004197, 0x00000000, 0x1122001d,
-	0x24020016, 0x08004197, 0x31a2ffff, 0x3c0e0001, 0x95ce0fa0, 0x10800005,
-	0x01806821, 0x01c42021, 0x00041c02, 0x3082ffff, 0x00627021, 0x000e1027,
-	0xa502000a, 0x3c030001, 0x90630f9b, 0x31a2ffff, 0x00e21021, 0x0800418d,
-	0x00432023, 0x3c020001, 0x94420fa0, 0x00442021, 0x00041c02, 0x3082ffff,
-	0x00622021, 0x00807021, 0x00041027, 0x08004185, 0xa502000a, 0x3c050001,
-	0x24a50f9a, 0x90a30000, 0x14620002, 0x24e2fff2, 0xa5e20034, 0x90a20000,
-	0x00e21023, 0xa5020002, 0x3c030001, 0x94630fa0, 0x3c020001, 0x94420f7a,
-	0x30e5ffff, 0x00641821, 0x00451023, 0x00622023, 0x00041c02, 0x3082ffff,
-	0x00622021, 0x00041027, 0xa502000a, 0x3c030001, 0x90630f9c, 0x24620001,
-	0x14a20005, 0x00807021, 0x01631021, 0x90420000, 0x08004185, 0x00026200,
-	0x24620002, 0x14a20003, 0x306200fe, 0x004b1021, 0x944c0000, 0x3c020001,
-	0x94420fa2, 0x3183ffff, 0x3c040001, 0x90840f9b, 0x00431021, 0x00e21021,
-	0x00442023, 0x008a2021, 0x00041c02, 0x3082ffff, 0x00622021, 0x00041402,
-	0x00822021, 0x00806821, 0x00041027, 0xa4c20010, 0x31a2ffff, 0x000e1c00,
-	0x00431025, 0x3c040001, 0x24840f92, 0xade20010, 0x94820000, 0x3c050001,
-	0x94a50f96, 0x3c030001, 0x8c630f8c, 0x24420001, 0x00b92821, 0xa4820000,
-	0x3322ffff, 0x00622021, 0x0083182b, 0x3c010001, 0xa4250f96, 0x10600003,
-	0x24a2ffff, 0x3c010001, 0xa4220f96, 0x3c024000, 0x03021025, 0x3c010001,
-	0xac240f8c, 0xaf621008, 0x03e00008, 0x27bd0010, 0x3c030001, 0x90630f76,
-	0x27bdffe8, 0x24020001, 0xafbf0014, 0x10620026, 0xafb00010, 0x8f620cf4,
-	0x2442ffff, 0x3042007f, 0x00021100, 0x8c434000, 0x3c010001, 0xac230f84,
-	0x8c434008, 0x24444000, 0x8c5c4004, 0x30620040, 0x14400002, 0x24020088,
-	0x24020008, 0x3c010001, 0xa4220f88, 0x30620004, 0x10400005, 0x24020001,
-	0x3c010001, 0xa0220f77, 0x080041d5, 0x00031402, 0x3c010001, 0xa0200f77,
-	0x00031402, 0x3c010001, 0xa4220f74, 0x9483000c, 0x24020001, 0x3c010001,
-	0xa4200f70, 0x3c010001, 0xa0220f76, 0x3c010001, 0xa4230f82, 0x24020001,
-	0x1342001e, 0x00000000, 0x13400005, 0x24020003, 0x13420067, 0x00000000,
-	0x080042cf, 0x00000000, 0x3c020001, 0x94420f82, 0x241a0001, 0x3c010001,
-	0xa4200f7e, 0x3c010001, 0xa4200f72, 0x304407ff, 0x00021bc2, 0x00031823,
-	0x3063003e, 0x34630036, 0x00021242, 0x3042003c, 0x00621821, 0x3c010001,
-	0xa4240f78, 0x00832021, 0x24630030, 0x3c010001, 0xa4240f7a, 0x3c010001,
-	0xa4230f7c, 0x3c060001, 0x24c60f72, 0x94c50000, 0x94c30002, 0x3c040001,
-	0x94840f7a, 0x00651021, 0x0044102a, 0x10400013, 0x3c108000, 0x00a31021,
-	0xa4c20000, 0x3c02a000, 0xaf620cf4, 0x3c010001, 0xa0200f76, 0x8f641008,
-	0x00901024, 0x14400003, 0x00000000, 0x0c004064, 0x00000000, 0x8f620cf4,
-	0x00501024, 0x104000b7, 0x00000000, 0x0800420f, 0x00000000, 0x3c030001,
-	0x94630f70, 0x00851023, 0xa4c40000, 0x00621821, 0x3042ffff, 0x3c010001,
-	0xa4230f70, 0xaf620ce8, 0x3c020001, 0x94420f88, 0x34420024, 0xaf620cec,
-	0x94c30002, 0x3c020001, 0x94420f70, 0x14620012, 0x3c028000, 0x3c108000,
-	0x3c02a000, 0xaf620cf4, 0x3c010001, 0xa0200f76, 0x8f641008, 0x00901024,
-	0x14400003, 0x00000000, 0x0c004064, 0x00000000, 0x8f620cf4, 0x00501024,
-	0x1440fff7, 0x00000000, 0x080042cf, 0x241a0003, 0xaf620cf4, 0x3c108000,
-	0x8f641008, 0x00901024, 0x14400003, 0x00000000, 0x0c004064, 0x00000000,
-	0x8f620cf4, 0x00501024, 0x1440fff7, 0x00000000, 0x080042cf, 0x241a0003,
-	0x3c070001, 0x24e70f70, 0x94e20000, 0x03821021, 0xaf620ce0, 0x3c020001,
-	0x8c420f84, 0xaf620ce4, 0x3c050001, 0x94a50f74, 0x94e30000, 0x3c040001,
-	0x94840f78, 0x3c020001, 0x94420f7e, 0x00a32823, 0x00822023, 0x30a6ffff,
-	0x3083ffff, 0x00c3102b, 0x14400043, 0x00000000, 0x3c020001, 0x94420f7c,
-	0x00021400, 0x00621025, 0xaf620ce8, 0x94e20000, 0x3c030001, 0x94630f74,
-	0x00441021, 0xa4e20000, 0x3042ffff, 0x14430021, 0x3c020008, 0x3c020001,
-	0x90420f77, 0x10400006, 0x3c03000c, 0x3c020001, 0x94420f88, 0x34630624,
-	0x0800427c, 0x0000d021, 0x3c020001, 0x94420f88, 0x3c030008, 0x34630624,
-	0x00431025, 0xaf620cec, 0x3c108000, 0x3c02a000, 0xaf620cf4, 0x3c010001,
-	0xa0200f76, 0x8f641008, 0x00901024, 0x14400003, 0x00000000, 0x0c004064,
-	0x00000000, 0x8f620cf4, 0x00501024, 0x10400015, 0x00000000, 0x08004283,
-	0x00000000, 0x3c030001, 0x94630f88, 0x34420624, 0x3c108000, 0x00621825,
-	0x3c028000, 0xaf630cec, 0xaf620cf4, 0x8f641008, 0x00901024, 0x14400003,
-	0x00000000, 0x0c004064, 0x00000000, 0x8f620cf4, 0x00501024, 0x1440fff7,
-	0x00000000, 0x3c010001, 0x080042cf, 0xa4200f7e, 0x3c020001, 0x94420f7c,
-	0x00021400, 0x00c21025, 0xaf620ce8, 0x3c020001, 0x90420f77, 0x10400009,
-	0x3c03000c, 0x3c020001, 0x94420f88, 0x34630624, 0x0000d021, 0x00431025,
-	0xaf620cec, 0x080042c1, 0x3c108000, 0x3c020001, 0x94420f88, 0x3c030008,
-	0x34630604, 0x00431025, 0xaf620cec, 0x3c020001, 0x94420f7e, 0x00451021,
-	0x3c010001, 0xa4220f7e, 0x3c108000, 0x3c02a000, 0xaf620cf4, 0x3c010001,
-	0xa0200f76, 0x8f641008, 0x00901024, 0x14400003, 0x00000000, 0x0c004064,
-	0x00000000, 0x8f620cf4, 0x00501024, 0x1440fff7, 0x00000000, 0x8fbf0014,
-	0x8fb00010, 0x03e00008, 0x27bd0018, 0x27bdffe0, 0x3c040001, 0x24840ee0,
-	0x00002821, 0x00003021, 0x00003821, 0xafbf0018, 0xafa00010, 0x0c004380,
-	0xafa00014, 0x0000d021, 0x24020130, 0xaf625000, 0x3c010001, 0xa4200f70,
-	0x3c010001, 0xa0200f77, 0x8f636804, 0x3c020001, 0x3442e000, 0x00621824,
-	0x3c020001, 0x14620003, 0x00000000, 0x080042eb, 0x00000000, 0x8fbf0018,
-	0x03e00008, 0x27bd0020, 0x27bdffe8, 0x3c1bc000, 0xafbf0014, 0xafb00010,
-	0xaf60680c, 0x8f626804, 0x34420082, 0xaf626804, 0x8f634000, 0x24020b50,
-	0x3c010001, 0xac220f40, 0x24020b78, 0x3c010001, 0xac220f50, 0x34630002,
-	0xaf634000, 0x0c00431d, 0x00808021, 0x3c010001, 0xa0220f54, 0x304200ff,
-	0x24030002, 0x14430005, 0x00000000, 0x3c020001, 0x8c420f40, 0x08004310,
-	0xac5000c0, 0x3c020001, 0x8c420f40, 0xac5000bc, 0x8f624434, 0x8f634438,
-	0x8f644410, 0x3c010001, 0xac220f48, 0x3c010001, 0xac230f58, 0x3c010001,
-	0xac240f44, 0x8fbf0014, 0x8fb00010, 0x03e00008, 0x27bd0018, 0x03e00008,
-	0x24020001, 0x27bdfff8, 0x18800009, 0x00002821, 0x8f63680c, 0x8f62680c,
-	0x1043fffe, 0x00000000, 0x24a50001, 0x00a4102a, 0x1440fff9, 0x00000000,
-	0x03e00008, 0x27bd0008, 0x8f634450, 0x3c020001, 0x8c420f48, 0x00031c02,
-	0x0043102b, 0x14400008, 0x3c038000, 0x3c040001, 0x8c840f58, 0x8f624450,
-	0x00021c02, 0x0083102b, 0x1040fffc, 0x3c038000, 0xaf634444, 0x8f624444,
-	0x00431024, 0x1440fffd, 0x00000000, 0x8f624448, 0x03e00008, 0x3042ffff,
-	0x3082ffff, 0x2442e000, 0x2c422001, 0x14400003, 0x3c024000, 0x0800434f,
-	0x2402ffff, 0x00822025, 0xaf645c38, 0x8f625c30, 0x30420002, 0x1440fffc,
-	0x00001021, 0x03e00008, 0x00000000, 0x8f624450, 0x3c030001, 0x8c630f44,
-	0x08004358, 0x3042ffff, 0x8f624450, 0x3042ffff, 0x0043102b, 0x1440fffc,
-	0x00000000, 0x03e00008, 0x00000000, 0x27bdffe0, 0x00802821, 0x3c040001,
-	0x24840ef0, 0x00003021, 0x00003821, 0xafbf0018, 0xafa00010, 0x0c004380,
-	0xafa00014, 0x08004367, 0x00000000, 0x8fbf0018, 0x03e00008, 0x27bd0020,
-	0x3c020001, 0x3442d600, 0x3c030001, 0x3463d600, 0x3c040001, 0x3484ddff,
-	0x3c010001, 0xac220f60, 0x24020040, 0x3c010001, 0xac220f64, 0x3c010001,
-	0xac200f5c, 0xac600000, 0x24630004, 0x0083102b, 0x5040fffd, 0xac600000,
-	0x03e00008, 0x00000000, 0x00804821, 0x8faa0010, 0x3c020001, 0x8c420f5c,
-	0x3c040001, 0x8c840f64, 0x8fab0014, 0x24430001, 0x0044102b, 0x3c010001,
-	0xac230f5c, 0x14400003, 0x00004021, 0x3c010001, 0xac200f5c, 0x3c020001,
-	0x8c420f5c, 0x3c030001, 0x8c630f60, 0x91240000, 0x00021140, 0x00431021,
-	0x00481021, 0x25080001, 0xa0440000, 0x29020008, 0x1440fff4, 0x25290001,
-	0x3c020001, 0x8c420f5c, 0x3c030001, 0x8c630f60, 0x8f64680c, 0x00021140,
-	0x00431021, 0xac440008, 0xac45000c, 0xac460010, 0xac470014, 0xac4a0018,
-	0x03e00008, 0xac4b001c, 0x00000000, 0x00000000,
-};
-
-u32 tg3Tso5FwRodata[] = {
-	0x4d61696e, 0x43707542, 0x00000000, 0x4d61696e, 0x43707541, 0x00000000,
-	0x00000000, 0x00000000, 0x73746b6f, 0x66666c64, 0x00000000, 0x00000000,
-	0x73746b6f, 0x66666c64, 0x00000000, 0x00000000, 0x66617461, 0x6c457272,
-	0x00000000, 0x00000000, 0x00000000
-};
-
-u32 tg3Tso5FwData[] = {
-	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x73746b6f, 
-	0x66666c64, 0x5f76312e, 0x312e3000, 0x00000000
-};
-
 /* tp->lock is held. */
 static int tg3_load_tso_firmware(struct tg3 *tp)
 {
-	struct fw_info info;
+	struct fw_info** fw_ptr;
 	unsigned long cpu_base, cpu_scratch_base, cpu_scratch_size;
 	int err, i;
 
 	if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5705) {
-		info.text_base = TG3_TSO5_FW_TEXT_ADDR;
-		info.text_len = TG3_TSO5_FW_TEXT_LEN;
-		info.text_data = &tg3Tso5FwText[0];
-		info.rodata_base = TG3_TSO5_FW_RODATA_ADDR;
-		info.rodata_len = TG3_TSO5_FW_RODATA_LEN;
-		info.rodata_data = &tg3Tso5FwRodata[0];
-		info.data_base = TG3_TSO5_FW_DATA_ADDR;
-		info.data_len = TG3_TSO5_FW_DATA_LEN;
-		info.data_data = &tg3Tso5FwData[0];
+		fw_ptr = &tg3_fw_tso5;
 		cpu_base = RX_CPU_BASE;
 		cpu_scratch_base = NIC_SRAM_MBUF_POOL_BASE5705;
-		cpu_scratch_size = (info.text_len +
-				    info.rodata_len +
-				    info.data_len +
+		cpu_scratch_size = ((*fw_ptr)->text_len +
+				    (*fw_ptr)->rodata_len +
+				    (*fw_ptr)->data_len +
 				    TG3_TSO5_FW_SBSS_LEN +
 				    TG3_TSO5_FW_BSS_LEN);
 	} else {
-		info.text_base = TG3_TSO_FW_TEXT_ADDR;
-		info.text_len = TG3_TSO_FW_TEXT_LEN;
-		info.text_data = &tg3TsoFwText[0];
-		info.rodata_base = TG3_TSO_FW_RODATA_ADDR;
-		info.rodata_len = TG3_TSO_FW_RODATA_LEN;
-		info.rodata_data = &tg3TsoFwRodata[0];
-		info.data_base = TG3_TSO_FW_DATA_ADDR;
-		info.data_len = TG3_TSO_FW_DATA_LEN;
-		info.data_data = NULL;
+		fw_ptr = &tg3_fw_tso;
 		cpu_base = TX_CPU_BASE;
 		cpu_scratch_base = TX_CPU_SCRATCH_BASE;
 		cpu_scratch_size = TX_CPU_SCRATCH_SIZE;
@@ -4381,27 +3889,27 @@
 
 	err = tg3_load_firmware_cpu(tp, cpu_base,
 				    cpu_scratch_base, cpu_scratch_size,
-				    &info);
+				    (*fw_ptr));
 	if (err)
 		return err;
 
 	/* Now startup the cpu. */
 	tw32(cpu_base + CPU_STATE, 0xffffffff);
-	tw32_f(cpu_base + CPU_PC,    info.text_base);
+	tw32_f(cpu_base + CPU_PC,    (*fw_ptr)->text_base);
 
 	for (i = 0; i < 5; i++) {
-		if (tr32(cpu_base + CPU_PC) == info.text_base)
+		if (tr32(cpu_base + CPU_PC) == (*fw_ptr)->text_base)
 			break;
 		tw32(cpu_base + CPU_STATE, 0xffffffff);
 		tw32(cpu_base + CPU_MODE,  CPU_MODE_HALT);
-		tw32_f(cpu_base + CPU_PC,    info.text_base);
+		tw32_f(cpu_base + CPU_PC,    (*fw_ptr)->text_base);
 		udelay(1000);
 	}
 	if (i >= 5) {
 		printk(KERN_ERR PFX "tg3_load_tso_firmware fails for %s "
 		       "to set CPU PC, is %08x should be %08x\n",
 		       tp->dev->name, tr32(cpu_base + CPU_PC),
-		       info.text_base);
+		       (*fw_ptr)->text_base);
 		return -ENODEV;
 	}
 	tw32(cpu_base + CPU_STATE, 0xffffffff);
@@ -4599,9 +4107,9 @@
 	else if (tp->tg3_flags2 & TG3_FLG2_TSO_CAPABLE) {
 		int fw_len;
 
-		fw_len = (TG3_TSO5_FW_TEXT_LEN +
-			  TG3_TSO5_FW_RODATA_LEN +
-			  TG3_TSO5_FW_DATA_LEN +
+		fw_len = (tg3_fw_tso5->text_len +
+			  tg3_fw_tso5->rodata_len +
+			  tg3_fw_tso5->data_len +
 			  TG3_TSO5_FW_SBSS_LEN +
 			  TG3_TSO5_FW_BSS_LEN);
 		fw_len = (fw_len + (0x80 - 1)) & ~(0x80 - 1);
@@ -7642,6 +7150,18 @@
 			DEFAULT_MB_HIGH_WATER_5705;
 	}
 
+	if (tp->pci_chip_rev_id == CHIPREV_ID_5701_A0) {
+		/* Ick.  This needs firmware loading. */
+		/* Clear existing firmware, just in case */
+		if (tg3_fw_5701_a0 != NULL)
+			tg3_release_firmware(&tg3_fw_5701_a0);
+		/* Get new firmware */
+		err = tg3_request_firmware(&tg3_fw_5701_a0,
+					   "tg3/5701_a0-0.0.0", tp);
+		if (err)
+			return err;
+	}
+
 #if TG3_TSO_SUPPORT != 0
 	if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5700 ||
 	    GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5701 ||
@@ -7649,8 +7169,40 @@
 	    (tp->tg3_flags & TG3_FLAG_ENABLE_ASF) != 0 ||
 	    (tp->tg3_flags2 & TG3_FLG2_IS_5788)) {
 		tp->tg3_flags2 &= ~TG3_FLG2_TSO_CAPABLE;
+	} else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5705) {
+		/* 5705 needs a special version of the TSO firmware.  */
+		/* Clear existing firmware, just in case */
+		if (tg3_fw_tso5 != NULL)
+			tg3_release_firmware(&tg3_fw_tso5);
+		/* Load new firmware */
+		err = tg3_request_firmware(&tg3_fw_tso5, "tg3/tso_5705-1.1.0", tp);
+		if (err) {
+			/* We can function without TSO; pretend it's
+			   not supported. */
+			printk(KERN_INFO PFX
+			      "%s: Firmware \"tg3/tso_5705-1.1.0\" not "
+			      "loaded; continuing without TSO.\n",
+			      tp->dev->name);
+			tp->tg3_flags2 &= ~TG3_FLG2_TSO_CAPABLE;
+		} else
+			tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE;
 	} else {
-		tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE;
+		/* Load TSO firmware */
+		/* Clear existing firmware, just in case */
+		if (tg3_fw_tso != NULL)
+			tg3_release_firmware(&tg3_fw_tso);
+		/* Load new firmware */
+		err = tg3_request_firmware(&tg3_fw_tso, "tg3/tso-1.4.0", tp);
+		if (err) {
+			/* We can function without TSO; pretend it's
+			   not supported. */
+			printk(KERN_INFO PFX
+			      "%s: Firmware \"tg3/tso-1.4.0\" not "
+			      "loaded; continuing without TSO.\n",
+			      tp->dev->name);
+			tp->tg3_flags2 &= ~TG3_FLG2_TSO_CAPABLE;
+		} else
+			tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE;
 	}
 
 	/* TSO is off by default, user can enable using ethtool.  */
@@ -7866,6 +7418,18 @@
 
 static void __exit tg3_cleanup(void)
 {
+	/* Clean up any leftover firmware.  We can't currently
+	   do this in tg3_remove_one, because we don't know whether
+	   any of the other devices need the firmware. */
+	if (tg3_fw_5701_a0 != NULL)
+		tg3_release_firmware(&tg3_fw_5701_a0);
+#if TG3_TSO_SUPPORT != 0
+	if (tg3_fw_tso5 != NULL)
+		tg3_release_firmware(&tg3_fw_tso5);
+	if (tg3_fw_tso != NULL)
+		tg3_release_firmware(&tg3_fw_tso);
+#endif /* TG3_TSO_SUPPORT */
+
 	pci_unregister_driver(&tg3_driver);
 }
 
--- linux-2.6.5/drivers/net/Kconfig.old	2004-04-21 00:24:23.000000000 -0400
+++ linux-2.6.5/drivers/net/Kconfig	2004-04-21 00:08:35.000000000 -0400
@@ -2054,6 +2054,7 @@
 config TIGON3
 	tristate "Broadcom Tigon3 support"
 	depends on PCI
+	select FW_LOADER
 	help
 	  This driver supports Broadcom Tigon3 based gigabit Ethernet cards.
 

-- 
There are none so blind as those who will not see.



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Nathanael Nerode <neroden@twcny.rr.com>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #68 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Nathanael Nerode <neroden@twcny.rr.com>
To: 242866@bugs.debian.org
Subject: Herbert's improvements on my radeon/r128 patch
Date: Thu, 29 Apr 2004 20:55:42 -0400
Herbert, could you send me your changes to my radeon/r128 patch, so that I can 
integrate them in my submissions upstream?  Thanks.



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #73 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: Herbert's improvements on my radeon/r128 patch
Date: Fri, 30 Apr 2004 18:47:08 +1000
On Thu, Apr 29, 2004 at 08:55:42PM -0400, Nathanael Nerode wrote:
> Herbert, could you send me your changes to my radeon/r128 patch, so that I can 
> integrate them in my submissions upstream?  Thanks.

As the recent bug reports showed that X is not able to deal with the
module without firmware properly, I've decided to revert your patch.

Please modify it so that it fails earlier if the firmware is not
available.  For example, you can do it at module load time or
perhaps PCI probe time.  Of course, you'll need to keep the firmware
around until it is actually needed.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Nathanael Nerode <neroden@twcny.rr.com>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #78 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Nathanael Nerode <neroden@twcny.rr.com>
To: 242866@bugs.debian.org
Subject: Radeon firmwarelessness failure
Date: Fri, 30 Apr 2004 13:27:15 -0400
>As the recent bug reports showed that X is not able to deal with the
>module without firmware properly, I've decided to revert your patch.
OK.  I'm sure you know that the radeon firmware is still of questionable 
*distributability*, let alone DFSG-freeness.  You may have to remove the 
Radeon and R128 modules from the kernel.

>Please modify it so that it fails earlier if the firmware is not
>available.  For example, you can do it at module load time or
>perhaps PCI probe time.
Unfortunately, there is no good way to do either of these, given the kooky 
design of the DRM modules.  Module load is in drm_drv.h (a multi-driver file) 
and has no usable hooks (the available ones must be written as macros and do 
not have access to  a struct device).  PCI probing is not really done at all.

Fixing these design issues is beyond my powers.  It would probably be easier 
to make XFree86 recover properly.  So I'm taking a look at that....

:-)
Quoting Michel Daenzer from bug 246627:
>The r128 and radeon 2D drivers don't deal gracefully with the DRM
>failing to load the firmware. That's a bug which has been fixed at least
>in the radeon driver in DRI CVS. I suggest those who insisted on
>inconveniencing users by crippling the kernel-image packages dig up the
>fix and provide it to the XSF.
So I will look for this and push it to the XSF; when this is done, I assume 
the kernel fix can go back in.

Michel Danzer continued
> Alternatively, they could provide the
>microcode in a convenient way.
As you know, I have not done this because I am worried about the actual 
legality of distributing it, given the questionable-on-its-face copyright 
statement  ("Copyright VA Linux... microcode (from ATI)...").  If you or 
someone else are not worried about that, please do provide it in a convenient 
form.



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #83 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: Radeon firmwarelessness failure
Date: Sat, 1 May 2004 08:10:57 +1000
On Fri, Apr 30, 2004 at 01:27:15PM -0400, Nathanael Nerode wrote:
>
> *distributability*, let alone DFSG-freeness.  You may have to remove the 
> Radeon and R128 modules from the kernel.

Depending on the outcome of the current GR, I will decide on whether
to remove these modules.

> So I will look for this and push it to the XSF; when this is done, I assume 
> the kernel fix can go back in.

Yes.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Nathanael Nerode <neroden@twcny.rr.com>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #88 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Nathanael Nerode <neroden@twcny.rr.com>
To: 242866@bugs.debian.org
Subject: tg3 firmware
Date: Thu, 6 May 2004 02:48:16 -0400
FYI, the last version of tg3 userland firmware loader patch is tested and 
works both with and without the firmware.

I may tweak it a little bit to give more verbose debugging messages in the 
kernel logs, but it should be good to go as is.



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #93 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: Revised tg3 userland firmware loading patch
Date: Tue, 11 May 2004 22:27:46 +1000
[Message part 1 (text/plain, inline)]
On Thu, Apr 29, 2004 at 08:53:06PM -0400, Nathanael Nerode wrote:
> This one cleans up the tg3 driver a bit more and changes the chosen firmware
> name to use a version (in fact, the version from the original firmware).
> 
> I also have made a .deb containing the firmware files, available for testing
> at http://home.twcny.rr.com/nerode/neroden/debian/ .

Thank you very much for the patch.

I've modified it a bit before including it.  In particular, I added
bss_len/sbss_len to the preamble as well as words indicating whether
the text/data/rodata sections are present or not.

Can you please update your firmware files accordingly?

Cheers,
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
[p (text/plain, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #98 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: Revised tg3 userland firmware loading patch
Date: Wed, 12 May 2004 09:07:00 +1000
[Message part 1 (text/plain, inline)]
On Tue, May 11, 2004 at 10:27:46PM +1000, herbert wrote:
> 
> I've modified it a bit before including it.  In particular, I added
> bss_len/sbss_len to the preamble as well as words indicating whether
> the text/data/rodata sections are present or not.

There was another bug in there where the firmware being freed on a
reload may still be used by another device.

The following patch removes the reloading of the firmware in tg3_open.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
[p (text/plain, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Nathanael Nerode <neroden@twcny.rr.com>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #103 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Nathanael Nerode <neroden@twcny.rr.com>
To: 242866@bugs.debian.org
Subject: [Fwd: Re: Bug#242866: Revised tg3 userland firmware loading patch]
Date: Fri, 14 May 2004 20:05:33 -0400

-------- Original Message --------
Subject: Re: Bug#242866: Revised tg3 userland firmware loading patch
Date: Fri, 14 May 2004 15:19:41 -0400
From: Nathanael Nerode <neroden@twcny.rr.com>
To: Herbert Xu <herbert@gondor.apana.org.au>
References: <20040430005306.GA14847@twcny.rr.com> 
<20040511122746.GA12070@gondor.apana.org.au>

Herbert Xu wrote:
> On Thu, Apr 29, 2004 at 08:53:06PM -0400, Nathanael Nerode wrote:
> 
>>This one cleans up the tg3 driver a bit more and changes the chosen firmware
>>name to use a version (in fact, the version from the original firmware).
>>
>>I also have made a .deb containing the firmware files, available for testing
>>at http://home.twcny.rr.com/nerode/neroden/debian/ .
> 
> 
> Thank you very much for the patch.
> 
> I've modified it a bit before including it.  In particular, I added
> bss_len/sbss_len to the preamble as well as words indicating whether
> the text/data/rodata sections are present or not.
> 
> Can you please update your firmware files accordingly?

Updated to match.

Package is Lintian-clean; gets a Linda error which is hotplug's fault.

I will look for a sponsor for the package now.  Or would you care to
sponsor it?  :-)




Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Nathanael Nerode <neroden@twcny.rr.com>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #108 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Nathanael Nerode <neroden@twcny.rr.com>
To: 242866@bugs.debian.org
Subject: [Fwd: Re: Bug#242866: Revised tg3 userland firmware loading patch]
Date: Fri, 14 May 2004 20:05:46 -0400

-------- Original Message --------
Subject: Re: Bug#242866: Revised tg3 userland firmware loading patch
Date: Fri, 14 May 2004 14:16:57 -0400
From: Nathanael Nerode <neroden@twcny.rr.com>
To: Herbert Xu <herbert@gondor.apana.org.au>
References: <20040430005306.GA14847@twcny.rr.com> 
<20040511122746.GA12070@gondor.apana.org.au> 
<20040511230700.GA15795@gondor.apana.org.au>

Herbert Xu wrote:
> On Tue, May 11, 2004 at 10:27:46PM +1000, herbert wrote:
> 
>>I've modified it a bit before including it.  In particular, I added
>>bss_len/sbss_len to the preamble as well as words indicating whether
>>the text/data/rodata sections are present or not.
Right.  I guess that means my comment regarding the format of the file
should be updated (or removed in favor of a line like "Read the code",
perhaps).

+ * We require the firmware file to be in a certain binary format:
+ * little-endian (so that it's platform-independent -- heh)
+ * struct fw_info fields in this order:
+ * text_base, text_len, rodata_base, rodata_len, data_base, data_len

Should now be:

text_base, text_len, text_zero,
rodata_base, rodata_len, rodata_zero,
data_base, data_len, data_zero,
sbss_len, bss_len

+ * ('unsigned int' fields as 32-bit integers)
+ * text_data, rodata_data, data_data
+ * ('u32*' fields as a whole bunch of 32-bit integers)
+ */

This comment is also inaccurate now:
/* Wipe out one fw_info structure; it must be fully allocated */

Should now be:
/* Wipe out one fw_info structure; it must be either fully allocated
 * or NULL */

> There was another bug in there where the firmware being freed on a
> reload may still be used by another device.
Lack of thread safety?  Right, I see.

> The following patch removes the reloading of the firmware in tg3_open.
It took me a few minutes to find the changes, both in this case and the
previous one.  Could you possibly provide diffs from my patched version
to yours in future?  :-)

This means a forced firmware change will require a driver unload/reload,
right?  OK.

I've also had a request to provide informational messages in the kernel
log indicating what firmware file was loaded, when firmware is loaded.




Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #113 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: [Fwd: Re: Bug#242866: Revised tg3 userland firmware loading patch]
Date: Sat, 15 May 2004 10:35:02 +1000
On Fri, May 14, 2004 at 08:05:33PM -0400, Nathanael Nerode wrote:
>
> Updated to match.

Thanks.

> Package is Lintian-clean; gets a Linda error which is hotplug's fault.
> 
> I will look for a sponsor for the package now.  Or would you care to
> sponsor it?  :-)

If you get it to mean before next Wednesday then I'll sponsor it.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #118 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: [Fwd: Re: Bug#242866: Revised tg3 userland firmware loading patch]
Date: Sat, 15 May 2004 10:52:42 +1000
[Message part 1 (text/plain, inline)]
On Fri, May 14, 2004 at 08:05:46PM -0400, Nathanael Nerode wrote:
> 
> Should now be:
> 
> text_base, text_len, text_zero,
> rodata_base, rodata_len, rodata_zero,
> data_base, data_len, data_zero,
> sbss_len, bss_len

Updated.  Thanks.

> This comment is also inaccurate now:
> /* Wipe out one fw_info structure; it must be fully allocated */
> 
> Should now be:
> /* Wipe out one fw_info structure; it must be either fully allocated
>  * or NULL */

It doesn't have to be fully allocated as each section can be NULL if 
they're entirely made up of zeros.

> >The following patch removes the reloading of the firmware in tg3_open.
> It took me a few minutes to find the changes, both in this case and the
> previous one.  Could you possibly provide diffs from my patched version
> to yours in future?  :-)

Sure.

> I've also had a request to provide informational messages in the kernel
> log indicating what firmware file was loaded, when firmware is loaded.

That would be good.  Please send a patch to this BTS entry.

Cheers,
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
[p (text/plain, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to neroden@twcny.rr.com (Nathanael Nerode):
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #123 received at 242866@bugs.debian.org (full text, mbox, reply):

From: neroden@twcny.rr.com (Nathanael Nerode)
To: 242866@bugs.debian.org
Subject: firmware-tg3
Date: Sun, 16 May 2004 11:36:17 -0400
The firmware-tg3 package (full what-I-would-have-uploaded) is
at http://home.twcny.rr.com/nerode/neroden/debian/, which is part of
my website.  Is this good enough to sponsor?

-- 
There are none so blind as those who will not see.



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Martin Michlmayr <tbm@cyrius.com>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #128 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Martin Michlmayr <tbm@cyrius.com>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: firmware-tg3
Date: Sun, 16 May 2004 17:53:36 +0100
* Nathanael Nerode <neroden@twcny.rr.com> [2004-05-16 11:36]:
> The firmware-tg3 package (full what-I-would-have-uploaded) is
> at http://home.twcny.rr.com/nerode/neroden/debian/, which is part of
> my website.  Is this good enough to sponsor?

The diff is empty; this is broken.  Either it's a native package and
you use proper native package version numbers and everything, or it's
not and the diff contains the debian change (I'd go with the latter).
-- 
Martin Michlmayr
tbm@cyrius.com



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Nathanael Nerode <neroden@twcny.rr.com>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #133 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Nathanael Nerode <neroden@twcny.rr.com>
To: 242866@bugs.debian.org
Subject: firmware-tg3
Date: Mon, 17 May 2004 05:17:10 -0400
Martin Michlmayr
>The diff is empty; this is broken.

Thanks for catching that; apparently a mess-up in my last build.  (sigh).

Fixed build is up at the same location.




Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #138 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Cc: Martin Michlmayr <tbm@cyrius.com>
Subject: Re: Bug#242866: firmware-tg3
Date: Mon, 17 May 2004 21:59:34 +1000
On Mon, May 17, 2004 at 05:17:10AM -0400, Nathanael Nerode wrote:
> Martin Michlmayr
> >The diff is empty; this is broken.
> 
> Thanks for catching that; apparently a mess-up in my last build.  (sigh).
> 
> Fixed build is up at the same location.

Thanks.

Since I won't be in this project for much longer, perhaps Martin
could sponsor this package instead.

Martin, would you like to do this?

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Martin Michlmayr <tbm@cyrius.com>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>. (full text, mbox, link).


Message #143 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Martin Michlmayr <tbm@cyrius.com>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Nathanael Nerode <neroden@twcny.rr.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: firmware-tg3
Date: Mon, 17 May 2004 13:12:26 +0100
* Herbert Xu <herbert@gondor.apana.org.au> [2004-05-17 21:59]:
> Martin, would you like to do this?

I doubt it.
-- 
Martin Michlmayr
tbm@cyrius.com



Tags removed: sarge Request was from Christoph Hellwig <hch@lst.de> to control@bugs.debian.org. (full text, mbox, link).


Severity set to `normal'. Request was from Christoph Hellwig <hch@lst.de> to control@bugs.debian.org. (full text, mbox, link).


Tags removed: sid Request was from Christoph Hellwig <hch@lst.de> to control@bugs.debian.org. (full text, mbox, link).


Tags added: upstream Request was from Christoph Hellwig <hch@lst.de> to control@bugs.debian.org. (full text, mbox, link).


Disconnected #240812 from all other report(s). Request was from Christoph Hellwig <hch@infradead.org> to control@bugs.debian.org. (full text, mbox, link).


Tags added: sarge Request was from Christoph Hellwig <hch@lst.de> to control@bugs.debian.org. (full text, mbox, link).


Tags added: sid Request was from Christoph Hellwig <hch@lst.de> to control@bugs.debian.org. (full text, mbox, link).


Tags removed: upstream Request was from Christoph Hellwig <hch@lst.de> to control@bugs.debian.org. (full text, mbox, link).


Severity set to `serious'. Request was from Christoph Hellwig <hch@lst.de> to control@bugs.debian.org. (full text, mbox, link).


Disconnected #242500 from all other report(s). Request was from Christoph Hellwig <hch@lst.de> to control@bugs.debian.org. (full text, mbox, link).


Reply sent to Jens Schmalzing <jensen@debian.org>:
You have taken responsibility. (full text, mbox, link).


Notification sent to Marco d'Itri <md@Linux.IT>:
Bug acknowledged by developer. (full text, mbox, link).


Message #168 received at 242895-close@bugs.debian.org (full text, mbox, reply):

From: Jens Schmalzing <jensen@debian.org>
To: 242895-close@bugs.debian.org
Subject: Bug#242895: fixed in kernel-source-2.6.7 2.6.7-2
Date: Fri, 02 Jul 2004 03:45:32 -0400
Source: kernel-source-2.6.7
Source-Version: 2.6.7-2

We believe that the bug you reported is fixed in the latest version of
kernel-source-2.6.7, which is due to be installed in the Debian FTP archive:

kernel-doc-2.6.7_2.6.7-2_all.deb
  to pool/main/k/kernel-source-2.6.7/kernel-doc-2.6.7_2.6.7-2_all.deb
kernel-patch-debian-2.6.7_2.6.7-2_all.deb
  to pool/main/k/kernel-source-2.6.7/kernel-patch-debian-2.6.7_2.6.7-2_all.deb
kernel-source-2.6.7_2.6.7-2.diff.gz
  to pool/main/k/kernel-source-2.6.7/kernel-source-2.6.7_2.6.7-2.diff.gz
kernel-source-2.6.7_2.6.7-2.dsc
  to pool/main/k/kernel-source-2.6.7/kernel-source-2.6.7_2.6.7-2.dsc
kernel-source-2.6.7_2.6.7-2_all.deb
  to pool/main/k/kernel-source-2.6.7/kernel-source-2.6.7_2.6.7-2_all.deb
kernel-tree-2.6.7_2.6.7-2_all.deb
  to pool/main/k/kernel-source-2.6.7/kernel-tree-2.6.7_2.6.7-2_all.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 242895@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Jens Schmalzing <jensen@debian.org> (supplier of updated kernel-source-2.6.7 package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.7
Date: Thu, 24 Jun 2004 09:56:13 +0200
Source: kernel-source-2.6.7
Binary: kernel-source-2.6.7 kernel-tree-2.6.7 kernel-patch-debian-2.6.7 kernel-doc-2.6.7
Architecture: source all
Version: 2.6.7-2
Distribution: unstable
Urgency: low
Maintainer: Debian kernel team <debian-kernel@lists.debian.org>
Changed-By: Jens Schmalzing <jensen@debian.org>
Description: 
 kernel-doc-2.6.7 - Linux kernel specific documentation for version 2.6.7
 kernel-patch-debian-2.6.7 - Debian patches to Linux 2.6.7
 kernel-source-2.6.7 - Linux kernel source for version 2.6.7 with Debian patches
 kernel-tree-2.6.7 - Linux kernel tree for building prepackaged Debian kernel images
Closes: 242895
Changes: 
 kernel-source-2.6.7 (2.6.7-2) unstable; urgency=low
 .
   * Removed another tainted driver (closes: Bug#242895), and amended
     remove-references-to-removed-drivers.dpatch accordingly.  Actually,
     this was done in the previous revision, but we forgot the changelog
     entry (Christoph Hellwig, Jens Schmalzing).
 .
   * Renamed debian/revision back to version.Debian.  Having it outside the
     debian/ directory is mandatory for kernel-tree to work (Jens Schmalzing).
 .
   * Added the drivers-net-tg3 patch.  It only adds firmware loading
     support, contrary to the drivers-net-tg3-readd patch which re-adds the
     whole driver.  As a consequence, the Debian patch also applies to the
     vanilla kernel again.  Note that this patch is only kept here for
     reference for the time being and will not be activated until the next
     upstream release (Jens Schmalzing).
 .
   * Added the fs-asfs patch by Marek Szyprowski, containing support for
     the Amiga Smart Filesystem.  Actually, the patch was already part of
     the kernel-patch-powerpc package and has been moved over from there
     (Jens Schmalzing).
Files: 
 c82fffb0324b3670507170da3ab6ed57 841 devel optional kernel-source-2.6.7_2.6.7-2.dsc
 a5a5f13ec86c84f6967efe82ccac1274 469513 devel optional kernel-source-2.6.7_2.6.7-2.diff.gz
 a4e9159006993a44deeacb3c141315d3 167466 devel optional kernel-patch-debian-2.6.7_2.6.7-2_all.deb
 b2c6caec412e732ce68da3bd4d1e8e0d 284032 devel optional kernel-tree-2.6.7_2.6.7-2_all.deb
 4b00a8cfa7521e6617e3e0c147d877ac 34371252 devel optional kernel-source-2.6.7_2.6.7-2_all.deb
 e78f5e7a399228ee9941514292d15ee5 6051710 doc optional kernel-doc-2.6.7_2.6.7-2_all.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFA2qKxqYZgyBJFIH4RAtquAKDD+ss29T5TUME1UJ8ijbZ9T9ajvwCgwKI1
7BfPat7Z9h9PJGzwOvw+4qY=
=Da9e
-----END PGP SIGNATURE-----




Disconnected #242895 from all other report(s). Request was from Christoph Hellwig <hch@lst.de> to control@bugs.debian.org. (full text, mbox, link).


Bug reopened, originator not changed. Request was from Christoph Hellwig <hch@lst.de> to control@bugs.debian.org. (full text, mbox, link).


Tags set to: sarge-ignore Request was from Steve Langasek <vorlon@debian.org> to control@bugs.debian.org. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Sam Johnston <samjie@gmail.com>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #179 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Sam Johnston <samjie@gmail.com>
To: pound@apsis.ch
Cc: 242866@bugs.debian.org
Subject: Re: [Pound Mailing List] PROPFIND 501 Not Implemented - after upgrading from 1.8.2 to 1.9.4
Date: Wed, 2 Nov 2005 11:55:02 +0000
> > I just upgraded pound-1.8.2 to pound-1.9.4-1 on a Debian 3.1 serving
> > up subversion repository.
> >
> > I verified that pound.cfg (unmodified)  still contains these 2 entries:
> >
> > ExtendedHTTP    1
> > WebDAV          1
> >
> > After restarting pound, I get PROFIND 501 Not Implemented errors when
> > I try to access the repository.
> >
> > I installed pound-1.9.4-1 using apt-get (did not compile from source).
> >
> Well, turns out the prior version was compiled from source with
> --enable-msdav added.

I don't recall this ever having been the case for the Debian package
(see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=242066), but it
would be easy enough to verify - it's public information :)

Here were my comments on the issue back in August:

#242066: please enable DAV support
Apparently one also needs a config setting, but to be sure I trawled
through the code and found that the list of characters matched in
regular expressions is more lenient with this option enabled, even
when the config file setting is disabled. The functionality seems
useful enough to be included in pound proper (eg for subversion
support), even if without the extra characters. Ideally they would be
separate runtime options. This would no doubt require an amount of
work upstream though.

> To fix, just use dpkg-source and then dpkg-buildpackage after modifying
> ./debian/rules in the unpacked directory.

I would like to support subversion by default. My understanding of the
situation is this:

 - we enforce RFC compliance. this is good and i agree with it.
 - subversion should be RFC compliant - is it?
 - MSDAV is not RFC compliant and needs workarounds which have to be
enabled at compile time
 - currently subversion and msdav are bundled together under the same
compile time and config directives and as such I can't make a
subversion friendly package without also introducing potential
security issues associated with allowing MSDAV.

Please let me know if these assumptions are accurate,

Sam



Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Sam Johnston <samjie@gmail.com>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #184 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Sam Johnston <samjie@gmail.com>
To: 242866@bugs.debian.org
Subject: Fwd: [Pound Mailing List] PROPFIND 501 Not Implemented - after upgrading from 1.8.2 to 1.9.4
Date: Wed, 2 Nov 2005 11:59:02 +0000
Obviously this message was not meant for you. Unfortunately it was
cc'd to a list so you may receive responses (despite my following up
to the list asking that they not respond). Of all the bugs to pick
(242866 instead of 242066) it would have to be a kernel bug that
points at the kernel team. Apologies.

---------- Forwarded message ----------
From: Sam Johnston <samjie@gmail.com>
Date: Nov 2, 2005 11:55 AM
Subject: Re: [Pound Mailing List] PROPFIND 501 Not Implemented - after
upgrading from 1.8.2 to 1.9.4
To: pound@apsis.ch
Cc: 242866@bugs.debian.org



Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to ldoolitt@recycle.lbl.gov:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #189 received at 242866@bugs.debian.org (full text, mbox, reply):

From: ldoolitt@recycle.lbl.gov
To: 242866@bugs.debian.org
Subject: updated tg3.c patch
Date: Thu, 17 Aug 2006 20:34:57 -0700
[Message part 1 (text/plain, inline)]
The most recent tg3.c patch posted here (by Herbert Xu on Tue, 11 May
2004) does not apply cleanly to linux-2.6.17.  No surprise, a lot has
changed in the last two years.  I applied it by hand (it wasn't hard),
and I can verify that the result (freshened patch attached) compiles
without error.  I can also set up tg3 files for the firmware-nonfree
package, and supply kernel images for i386 and/or amd64.  Testers?

    - Larry
[tg3.diff3 (text/plain, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package kernel. (full text, mbox, link).


Acknowledgement sent to Michael Olbrich <michael.olbrich@gmx.net>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #194 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Michael Olbrich <michael.olbrich@gmx.net>
To: ldoolitt@recycle.lbl.gov, 242866@bugs.debian.org
Subject: Re: Bug#242866: updated tg3.c patch
Date: Fri, 18 Aug 2006 09:14:34 +0200
[Message part 1 (text/plain, inline)]
On Thu, Aug 17, 2006 at 08:34:57PM -0700, ldoolitt@recycle.lbl.gov wrote:
> The most recent tg3.c patch posted here (by Herbert Xu on Tue, 11 May
> 2004) does not apply cleanly to linux-2.6.17.  No surprise, a lot has
> changed in the last two years.  I applied it by hand (it wasn't hard),
> and I can verify that the result (freshened patch attached) compiles
> without error.  I can also set up tg3 files for the firmware-nonfree
> package, and supply kernel images for i386 and/or amd64.  Testers?

I could test it. Where can I find the firmware files? I asume they were
created with the original patch.
I've never used a driver with external firmware before. Anything special
I have to take care off?

michael

[signature.asc (application/pgp-signature, inline)]

Bug reassigned from package `kernel' to `linux-2.6'. Request was from Nathanael Nerode <neroden@fastmail.fm> to control@bugs.debian.org. (full text, mbox, link).


Bug reassigned from package `linux-2.6' to `linux-2.6'. Request was from Nathanael Nerode <neroden@fastmail.fm> to control@bugs.debian.org. (full text, mbox, link).


Merged 242866 243022 383403. Request was from maximilian attems <maks@sternwelten.at> to control@bugs.debian.org. (full text, mbox, link).


Tags removed: confirmed Request was from maximilian attems <maks@sternwelten.at> to control@bugs.debian.org. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Acknowledgement sent to Andreas Barth <aba@not.so.argh.org>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #207 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Andreas Barth <aba@not.so.argh.org>
To: 242866@bugs.debian.org, 243022@bugs.debian.org, 383403@bugs.debian.org
Subject: remainings are etch-ignore
Date: Tue, 12 Dec 2006 20:42:52 +0100
tags 242866 + etch-ignore
tags 243022 + etch-ignore
tags 383403 + etch-ignore
thanks

Hi,

AFAICS, all items needing clean up prior to etch are cleaned up now, so
tagging these bug reports etch-ignore.


Cheers,
Andi
-- 
  http://home.arcor.de/andreas-barth/



Tags added: etch-ignore Request was from Andreas Barth <aba@not.so.argh.org> to control@bugs.debian.org. (full text, mbox, link).


Tags added: etch-ignore Request was from Andreas Barth <aba@not.so.argh.org> to control@bugs.debian.org. (full text, mbox, link).


Tags added: etch-ignore Request was from Andreas Barth <aba@not.so.argh.org> to control@bugs.debian.org. (full text, mbox, link).


Merged 242866 243022 383403 412950. Request was from Steve Langasek <vorlon@debian.org> to control@bugs.debian.org. (full text, mbox, link).


Disconnected #412950 from all other report(s). Request was from Sven Luther <sven.luther@wanadoo.fr> to control@bugs.debian.org. (full text, mbox, link).


Merged 242866 243022 383403 412950. Request was from Steve Langasek <vorlon@debian.org> to control@bugs.debian.org. (full text, mbox, link).


Tags removed: etch Request was from maximilian attems <maks@debian.org> to control@bugs.debian.org. (Thu, 05 Jul 2007 11:51:07 GMT) (full text, mbox, link).


Tags removed: sid Request was from maximilian attems <maks@debian.org> to control@bugs.debian.org. (Thu, 05 Jul 2007 11:51:09 GMT) (full text, mbox, link).


Reply sent to maximilian attems <max@stro.at>:
You have taken responsibility. (full text, mbox, link).


Notification sent to Marco d'Itri <md@Linux.IT>:
Bug acknowledged by developer. (full text, mbox, link).


Message #228 received at 242866-done@bugs.debian.org (full text, mbox, reply):

From: maximilian attems <max@stro.at>
To: 242866-done@bugs.debian.org
Subject: Re: drivers containing firmware blobs
Date: Thu, 15 May 2008 16:44:56 +0200
Version: 2.6.24-1


The Debian Kernel Team is guilty of uploading a disjointed kernel. For the
record Bastian Blank <waldi@debian.org> coded the infrastructure for the
stripping and the stripping itself. The FTP masters threatened to block
any future Linux uploads or alternatively would launch an NMU (non
maintainer upload) stripping the affected drivers.

I very strongly disagreed with that decision, but the Debian Developer
made their position clear in the General Resolution 2006-007, which is
binding for us. In the long run it might be a win for Free Software -
history will tell. In the short term this is an annoyance for existing
hardware driver support.

As expected none of the vocal minority, aka Mr. Nerode and Mr. Doolittle,
demanding DFSG freeness helped to work out this transition nor to cleanup
the created mess. The stripping presents an additional maintenance burden.
But I'm sick of the arguments. Rather then fighting I'd like to see people
working together to make things work, both on the licensing side
(BSD firmware) and on the code side (firmware_request()), neither is easy.

I'm thus closing the bug reports regarding firmware blobs and pointing the
reporters to the following wiki page in order to finaly help a bit
-> http://wiki.debian.org/KernelFirmwareLicensing
Possible DFSG violations in current and future linux-2.6 uploads should be
filed seperately.


kthxbye

-- 
maks




Reply sent to maximilian attems <max@stro.at>:
You have taken responsibility. (full text, mbox, link).


Notification sent to neroden@gcc.gnu.org:
Bug acknowledged by developer. (full text, mbox, link).


Reply sent to maximilian attems <max@stro.at>:
You have taken responsibility. (full text, mbox, link).


Notification sent to Larry Doolittle <ldoolitt@recycle.lbl.gov>:
Bug acknowledged by developer. (full text, mbox, link).


Reply sent to maximilian attems <max@stro.at>:
You have taken responsibility. (full text, mbox, link).


Notification sent to Sven Luther <luther@debian.org>:
Bug acknowledged by developer. (full text, mbox, link).


Bug marked as found in version 2.6.25-3 and reopened. Request was from Markus Laire <malaire@gmail.com> to control@bugs.debian.org. (Thu, 15 May 2008 16:15:04 GMT) (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Acknowledgement sent to Larry Doolittle <ldoolitt@recycle.lbl.gov>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #250 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Larry Doolittle <ldoolitt@recycle.lbl.gov>
To: 242866@bugs.debian.org
Subject: Closure
Date: Thu, 15 May 2008 16:11:15 -0700
On Thu, May 15, 2008 at 02:57:05PM +0000, maximilian attems wrote:
> The Debian Kernel Team is guilty of uploading a disjointed kernel.
> For the record Bastian Blank coded the infrastructure for the
> stripping and the stripping itself.
> [chop] In the long run it might be a win for Free Software -
> history will tell. In the short term this is an annoyance for existing
> hardware driver support.

I want to publicly congratulate the entire Kernel team for their
efforts, both on the firmware problem, and all the other issues
that come with dealing with such a large code base.  The results
are real and appreciated.

> As expected none of the vocal minority, aka Mr. Nerode and Mr.
> Doolittle, demanding DFSG freeness helped to work out this transition
> nor to cleanup the created mess. 

IANADD, and never pretend to be.  I help out as much as I can [*],
and if you don't like me acting as a messenger in this case, tough
noogies.  I didn't write the DFSG.  The real blame here lies with
Linus's historical sloppiness in accepting non-DFSG-free code.
I hear he has improved his process this past couple of years.

   - Larry Doolittle

[*] and yes, that includes developing, debugging, and releasing Free
Software, not just complaining.  Anyone with two minutes and Google
can confirm that.




Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Acknowledgement sent to dr@jones.dk:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #255 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Jonas Smedegaard <dr@jones.dk>
To: Larry Doolittle <ldoolitt@recycle.lbl.gov>, 242866@bugs.debian.org
Subject: Re: Bug#242866: Closure
Date: Fri, 16 May 2008 09:26:03 +0200
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Thu, May 15, 2008 at 04:11:15PM -0700, Larry Doolittle wrote:
>On Thu, May 15, 2008 at 02:57:05PM +0000, maximilian attems wrote:

>> As expected none of the vocal minority, aka Mr. Nerode and Mr. 
>> Doolittle, demanding DFSG freeness helped to work out this transition 
>> nor to cleanup the created mess.
>
>IANADD, and never pretend to be.  I help out as much as I can [*],
>and if you don't like me acting as a messenger in this case, tough
>noogies.  I didn't write the DFSG.  The real blame here lies with
>Linus's historical sloppiness in accepting non-DFSG-free code.
>I hear he has improved his process this past couple of years.

Rest assured that max speaks on behalf of the Debian _kernel_ team, not 
all of Debian.

With this I do not mean to say that I disagree with max' interpretation 
of the DFSG or dislike his hard work on maintaining the kernel - only 
that I (and others, I suspect) dislike his way of treating those being 
so kind as to help filing bugreports with our system.


  - Jonas

Former member of the kernel team

- -- 
* Jonas Smedegaard - idealist og Internet-arkitekt
* Tlf.: +45 40843136  Website: http://dr.jones.dk/

  - Enden er nær: http://www.shibumi.org/eoti.htm
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFILTcLn7DbMsAkQLgRAnogAJ9P0K8vwJEeCPKTF0pl3zEJEG8rQwCfVazk
EG3mMYMxCjq605jSVlXwkgY=
=ay/z
-----END PGP SIGNATURE-----




Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Acknowledgement sent to maximilian attems <maks@debian.org>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #260 received at 242866@bugs.debian.org (full text, mbox, reply):

From: maximilian attems <maks@debian.org>
To: control@bugs.debian.org
Cc: 242866@bugs.debian.org
Subject: closing 242866
Date: Fri, 16 May 2008 10:50:28 +0200
# Automatically generated email from bts, devscripts version 2.10.27
# stop stupid ping pong games
close 242866 





Bug closed, send any further explanations to Marco d'Itri <md@Linux.IT> Request was from maximilian attems <maks@debian.org> to control@bugs.debian.org. (Fri, 16 May 2008 08:54:11 GMT) (full text, mbox, link).


Bug reopened, originator not changed. Request was from Sven Luther <sven@powerlinux.fr> to control@bugs.debian.org. (Fri, 16 May 2008 09:09:05 GMT) (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Acknowledgement sent to Steve Langasek <vorlon@debian.org>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #269 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Steve Langasek <vorlon@debian.org>
To: dr@jones.dk, 242866@bugs.debian.org
Cc: Larry Doolittle <ldoolitt@recycle.lbl.gov>
Subject: Re: Bug#242866: Closure
Date: Fri, 16 May 2008 02:29:10 -0700
On Fri, May 16, 2008 at 09:26:03AM +0200, Jonas Smedegaard wrote:
> Rest assured that max speaks on behalf of the Debian _kernel_ team, not 
> all of Debian.

No, he speaks on behalf of himself.

-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
slangasek@ubuntu.com                                     vorlon@debian.org




Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Acknowledgement sent to Sven Luther <sven@powerlinux.fr>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #274 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Sven Luther <sven@powerlinux.fr>
To: Steve Langasek <vorlon@debian.org>, 242866@bugs.debian.org
Cc: dr@jones.dk, Larry Doolittle <ldoolitt@recycle.lbl.gov>
Subject: Re: Bug#242866: Closure
Date: Fri, 16 May 2008 13:56:38 +0200
On Fri, May 16, 2008 at 02:29:10AM -0700, Steve Langasek wrote:
> On Fri, May 16, 2008 at 09:26:03AM +0200, Jonas Smedegaard wrote:
> > Rest assured that max speaks on behalf of the Debian _kernel_ team, not 
> > all of Debian.
> 
> No, he speaks on behalf of himself.

Well, together with waldi, he is the kernel team, or what is left of it.
And since waldi doesn't speak much, ...

Friendly,

Sven Luther




Reply sent to maximilian attems <max@stro.at>:
You have taken responsibility. (full text, mbox, link).


Notification sent to Marco d'Itri <md@Linux.IT>:
Bug acknowledged by developer. (full text, mbox, link).


Message #279 received at 242866-done@bugs.debian.org (full text, mbox, reply):

From: maximilian attems <max@stro.at>
To: 242866-done@bugs.debian.org
Subject: Re: done mission over
Date: Fri, 16 May 2008 15:26:02 +0200
Version: 2.6.24-1

the "offended" firmware is stripped in linux-2.6 since
aboves metioned version.

stop reopening that bug if you are not a MAINTAINER
nor have any valid piece of info that it has *not* been
dealt with.

if you find additional DFSG violations report a new bug.

kthxbye

-- 
maks




Reply sent to maximilian attems <max@stro.at>:
You have taken responsibility. (full text, mbox, link).


Notification sent to neroden@gcc.gnu.org:
Bug acknowledged by developer. (full text, mbox, link).


Reply sent to maximilian attems <max@stro.at>:
You have taken responsibility. (full text, mbox, link).


Notification sent to Larry Doolittle <ldoolitt@recycle.lbl.gov>:
Bug acknowledged by developer. (full text, mbox, link).


Reply sent to maximilian attems <max@stro.at>:
You have taken responsibility. (full text, mbox, link).


Notification sent to Sven Luther <luther@debian.org>:
Bug acknowledged by developer. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Acknowledgement sent to Markus Laire <malaire@gmail.com>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #299 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Markus Laire <malaire@gmail.com>
To: 242866@bugs.debian.org, control@bugs.debian.org
Subject: info that it has *not* been dealt with
Date: Fri, 16 May 2008 19:17:04 +0300
found 242866 2.6.24-6
found 242866 2.6.25-3
thanks

maximilian attems wrote:
> Version: 2.6.24-1
>
> the "offended" firmware is stripped in linux-2.6 since
> aboves metioned version.
>
> stop reopening that bug if you are not a MAINTAINER
> nor have any valid piece of info that it has *not* been
> dealt with.

File drivers/net/pcmcia/ositech.h (which is mentioned in first message
and marked as "nondistributable" at
http://wiki.debian.org/KernelFirmwareLicensing ) has *not* been dealt
with yet.

It is present in both 2.6.24-6 [*] and 2.6.25-3, under GPL-license and
containing binary firmware.

[*] This is earliest version >= 2.6.24-1 which I could find for
downloading

ps. I recently sent additional information to bug #383403 (merged with
this bug) which shows that is has *not* been dealt with either.

> if you find additional DFSG violations report a new bug.

This clearly isn't additional DFSG violation.

I hope you don't continue closing bugs which has *not* been dealt with
yet (unless you can show that such behaviour is acceptable by
Debian, which I doubt.)

-- 
Markus Laire




Bug marked as found in version 2.6.24-6 and reopened. Request was from Markus Laire <malaire@gmail.com> to control@bugs.debian.org. (Fri, 16 May 2008 16:39:55 GMT) (full text, mbox, link).


Bug marked as found in version 2.6.25-3. Request was from Markus Laire <malaire@gmail.com> to control@bugs.debian.org. (Fri, 16 May 2008 16:39:56 GMT) (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Acknowledgement sent to maximilian attems <max@stro.at>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #308 received at 242866@bugs.debian.org (full text, mbox, reply):

From: maximilian attems <max@stro.at>
To: Markus Laire <malaire@gmail.com>, 242866@bugs.debian.org
Subject: Re: Bug#242866: info that it has *not* been dealt with
Date: Fri, 16 May 2008 19:13:13 +0200
On Fri, May 16, 2008 at 07:17:04PM +0300, Markus Laire wrote:
> 
> File drivers/net/pcmcia/ositech.h (which is mentioned in first message
> and marked as "nondistributable" at
> http://wiki.debian.org/KernelFirmwareLicensing ) has *not* been dealt
> with yet.

fine report a new bug against linux-2.6, we'll deal about it.
 
> It is present in both 2.6.24-6 [*] and 2.6.25-3, under GPL-license and
> containing binary firmware.
> 
> [*] This is earliest version >= 2.6.24-1 which I could find for
> downloading
> 
> ps. I recently sent additional information to bug #383403 (merged with
> this bug) which shows that is has *not* been dealt with either.
> 
> > if you find additional DFSG violations report a new bug.
> 
> This clearly isn't additional DFSG violation.
> 
> I hope you don't continue closing bugs which has *not* been dealt with
> yet (unless you can show that such behaviour is acceptable by
> Debian, which I doubt.)

stop playing with this bugs or i get your email blacklisted for the
Debian bug tracking system.  The bugs where about having a pruning
infrastructure aka disjointing the upstream linux-2.6 which is done.

file a separate report on each issue that you find and we'll analyse
your findings.

it be cooler if you'd asked the copyright holder of those firmware
files to license them under BSD. but i guess there your involvment
will not help out anymore.

over and out

-- 
maks




Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Acknowledgement sent to Markus Laire <malaire@gmail.com>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #313 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Markus Laire <malaire@gmail.com>
To: maximilian attems <max@stro.at>
Cc: Debian Kernel Team <debian-kernel@lists.debian.org>, 242866@bugs.debian.org, 243022@bugs.debian.org, 383403@bugs.debian.org, 412950@bugs.debian.org
Subject: Re: Processed: info that it has *not* been dealt with
Date: Fri, 16 May 2008 20:31:40 +0300
maximilian attems wrote:
> On Fri, May 16, 2008 at 04:39:58PM +0000, Debian Bug Tracking System
> wrote:
> > Processing commands for control@bugs.debian.org:
> > 
> > > found 242866 2.6.24-6
> > Bug#242866: drivers containing firmware blobs
> > Bug#243022: ymfpci_image.h: Sourceless microcode without permission
> > to redistribute Bug#383403: linux-2.6: includes nondistributable
> > and non-free binary firmware Bug#412950: linux-2.6: [legal] the
> > current kernel tarball doesn't respect the GR 2006-007 Bug marked
> > as found in version 2.6.24-6 and reopened.
> > 
> > > found 242866 2.6.25-3
> > Bug#242866: drivers containing firmware blobs
> > Bug#243022: ymfpci_image.h: Sourceless microcode without permission
> > to redistribute Bug#383403: linux-2.6: includes nondistributable
> > and non-free binary firmware Bug#412950: linux-2.6: [legal] the
> > current kernel tarball doesn't respect the GR 2006-007 Bug marked
> > as found in version 2.6.25-3.
> > 
> > > thanks
> > Stopping processing here.
> 
> stop this game or i get you blacklisted on debian bug tracking system.

I do not like such threats when I havn't done anything wrong (according
to my knowledge).

I was acting exactly as you requested. IMHO you said that
reopening should be done only by maintainer or by someone with info
that bug had not been dealt with.

I'm not a maintainer, but I did have info that bug had not been
dealt with, so I reopened the bug with that info.

I fail to see any reason to threaten me with blacklisting.

IMHO it is you who should've been threatened with blacklisting if
anyone, since you have insisted on closing bugs which clearly havn't
been fixed.

If I did something wrong, IMHO the right response would've been to point
out my mistake to me, and not to threaten with blacklisting without
giving any reason for it.

> it is up to the maintainer to decide if that is closed or not.

If maintainer decides that bug must not be reopened anymore, that
should be mentioned in the bug-report.

-- 
Markus Laire




Bug no longer marked as found in version 2.6.25-3. Request was from maximilian attems <maks@debian.org> to control@bugs.debian.org. (Fri, 16 May 2008 17:36:16 GMT) (full text, mbox, link).


Bug no longer marked as found in version 2.6.24-6. Request was from maximilian attems <maks@debian.org> to control@bugs.debian.org. (Fri, 16 May 2008 17:36:18 GMT) (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Message #320 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Robert Millan <rmh@aybabtu.com>
To: Markus Laire <malaire@gmail.com>
Cc: maximilian attems <max@stro.at>, Debian Kernel Team <debian-kernel@lists.debian.org>, 242866@bugs.debian.org, 243022@bugs.debian.org, 383403@bugs.debian.org, 412950@bugs.debian.org
Subject: Re: Processed: info that it has *not* been dealt with
Date: Sat, 17 May 2008 00:03:39 +0200
On Fri, May 16, 2008 at 08:31:40PM +0300, Markus Laire wrote:
> 
> I'm not a maintainer, but I did have info that bug had not been
> dealt with, so I reopened the bug with that info.

I see that you sent info, but only to the BTS control bot, which prevents it
from being reflected in the bug log.

I suggest you re-send it.

-- 
Robert Millan

<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call… if you are unable to speak?
(as seen on /.)




Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Message #323 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Robert Millan <rmh@aybabtu.com>
To: Markus Laire <malaire@gmail.com>
Cc: maximilian attems <max@stro.at>, Debian Kernel Team <debian-kernel@lists.debian.org>, 242866@bugs.debian.org, 243022@bugs.debian.org, 383403@bugs.debian.org, 412950@bugs.debian.org
Subject: Re: Processed: info that it has *not* been dealt with
Date: Sat, 17 May 2008 00:30:58 +0200
On Sat, May 17, 2008 at 12:03:39AM +0200, Robert Millan wrote:
> On Fri, May 16, 2008 at 08:31:40PM +0300, Markus Laire wrote:
> > 
> > I'm not a maintainer, but I did have info that bug had not been
> > dealt with, so I reopened the bug with that info.
> 
> I see that you sent info, but only to the BTS control bot, which prevents it
> from being reflected in the bug log.
> 
> I suggest you re-send it.

Btw, as for this BTS ping-pong game, Max asked that you file separate bugs
instead of reopening this one.  This doesn't sound like an unreasonable
request, so why not just do that?

It's probably helpful to the maintainers to have a separate bug for each
violation.  I can imagine that working with one [1] huge report while trying
to actually fix stuff can be a PITA.

[1] well, actually a few merged reports, but it amounts to the same.

-- 
Robert Millan

<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call… if you are unable to speak?
(as seen on /.)




Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Acknowledgement sent to Sven Luther <sven@powerlinux.fr>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #328 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Sven Luther <sven@powerlinux.fr>
To: Robert Millan <rmh@aybabtu.com>, leader@debian.org
Cc: Markus Laire <malaire@gmail.com>, maximilian attems <max@stro.at>, Debian Kernel Team <debian-kernel@lists.debian.org>, 242866@bugs.debian.org, 243022@bugs.debian.org, 383403@bugs.debian.org, 412950@bugs.debian.org
Subject: Re: Processed: info that it has *not* been dealt with
Date: Sat, 17 May 2008 09:13:34 +0200
On Sat, May 17, 2008 at 12:30:58AM +0200, Robert Millan wrote:
> On Sat, May 17, 2008 at 12:03:39AM +0200, Robert Millan wrote:
> > On Fri, May 16, 2008 at 08:31:40PM +0300, Markus Laire wrote:
> > > 
> > > I'm not a maintainer, but I did have info that bug had not been
> > > dealt with, so I reopened the bug with that info.
> > 
> > I see that you sent info, but only to the BTS control bot, which prevents it
> > from being reflected in the bug log.
> > 
> > I suggest you re-send it.
> 
> Btw, as for this BTS ping-pong game, Max asked that you file separate bugs
> instead of reopening this one.  This doesn't sound like an unreasonable
> request, so why not just do that?

Robert, i don't really see the reason why this should be done.

> It's probably helpful to the maintainers to have a separate bug for each
> violation.  I can imagine that working with one [1] huge report while trying
> to actually fix stuff can be a PITA.

Well, i suppose that callign the reporter stupid, as max did is not
helpful also. Nor threatenenign me to be blacklisted from the BTS. Max
should really calm down, i know he is not agreeing with the firmware
split, but this doesn't allow him to be impolite and threatening.

I suppose the right way would be to split the bug report, and retitle it
for each actual violation case, but hey ...

> [1] well, actually a few merged reports, but it amounts to the same.

Sadly,

Sven Luther




Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Message #331 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Robert Millan <rmh@aybabtu.com>
To: Sven Luther <sven@powerlinux.fr>
Cc: leader@debian.org, Markus Laire <malaire@gmail.com>, maximilian attems <max@stro.at>, Debian Kernel Team <debian-kernel@lists.debian.org>, 242866@bugs.debian.org, 243022@bugs.debian.org, 383403@bugs.debian.org, 412950@bugs.debian.org
Subject: Re: Processed: info that it has *not* been dealt with
Date: Sat, 17 May 2008 11:21:18 +0200
On Sat, May 17, 2008 at 09:13:34AM +0200, Sven Luther wrote:
> On Sat, May 17, 2008 at 12:30:58AM +0200, Robert Millan wrote:
> > On Sat, May 17, 2008 at 12:03:39AM +0200, Robert Millan wrote:
> > > On Fri, May 16, 2008 at 08:31:40PM +0300, Markus Laire wrote:
> > > > 
> > > > I'm not a maintainer, but I did have info that bug had not been
> > > > dealt with, so I reopened the bug with that info.
> > > 
> > > I see that you sent info, but only to the BTS control bot, which prevents it
> > > from being reflected in the bug log.
> > > 
> > > I suggest you re-send it.
> > 
> > Btw, as for this BTS ping-pong game, Max asked that you file separate bugs
> > instead of reopening this one.  This doesn't sound like an unreasonable
> > request, so why not just do that?
> 
> Robert, i don't really see the reason why this should be done.

But the maintainer does, and for a change this request doesn't conflict with
the Social Contract.  Why are we discussing on whether we prefer one bug or
multiple bugs when we have actual SC violations right now that need fixing?

> > It's probably helpful to the maintainers to have a separate bug for each
> > violation.  I can imagine that working with one [1] huge report while trying
> > to actually fix stuff can be a PITA.
> 
> Well, i suppose that callign the reporter stupid, as max did is not
> helpful also. Nor threatenenign me to be blacklisted from the BTS. Max
> should really calm down, i know he is not agreeing with the firmware
> split, but this doesn't allow him to be impolite and threatening.

IIRC he was threatening Markus, not you.  Anyway, I suppose by now he realises
that was completely inappropiate, and actually counterproductive.  Now can we
please get this over with?

-- 
Robert Millan

<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call… if you are unable to speak?
(as seen on /.)




Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Acknowledgement sent to Sven Luther <sven@powerlinux.fr>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (full text, mbox, link).


Message #336 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Sven Luther <sven@powerlinux.fr>
To: Robert Millan <rmh@aybabtu.com>
Cc: leader@debian.org, Markus Laire <malaire@gmail.com>, maximilian attems <max@stro.at>, Debian Kernel Team <debian-kernel@lists.debian.org>, 242866@bugs.debian.org, 243022@bugs.debian.org, 383403@bugs.debian.org, 412950@bugs.debian.org
Subject: Re: Processed: info that it has *not* been dealt with
Date: Sat, 17 May 2008 11:33:03 +0200
On Sat, May 17, 2008 at 11:21:18AM +0200, Robert Millan wrote:
> On Sat, May 17, 2008 at 09:13:34AM +0200, Sven Luther wrote:
> > On Sat, May 17, 2008 at 12:30:58AM +0200, Robert Millan wrote:
> > > On Sat, May 17, 2008 at 12:03:39AM +0200, Robert Millan wrote:
> > > > On Fri, May 16, 2008 at 08:31:40PM +0300, Markus Laire wrote:
> > > > > 
> > > > > I'm not a maintainer, but I did have info that bug had not been
> > > > > dealt with, so I reopened the bug with that info.
> > > > 
> > > > I see that you sent info, but only to the BTS control bot, which prevents it
> > > > from being reflected in the bug log.
> > > > 
> > > > I suggest you re-send it.
> > > 
> > > Btw, as for this BTS ping-pong game, Max asked that you file separate bugs
> > > instead of reopening this one.  This doesn't sound like an unreasonable
> > > request, so why not just do that?
> > 
> > Robert, i don't really see the reason why this should be done.
> 
> But the maintainer does, and for a change this request doesn't conflict with
> the Social Contract.  Why are we discussing on whether we prefer one bug or
> multiple bugs when we have actual SC violations right now that need fixing?

What does it gain to close the bug that contains the history of the
problem ? 

> > > It's probably helpful to the maintainers to have a separate bug for each
> > > violation.  I can imagine that working with one [1] huge report while trying
> > > to actually fix stuff can be a PITA.
> > 
> > Well, i suppose that callign the reporter stupid, as max did is not
> > helpful also. Nor threatenenign me to be blacklisted from the BTS. Max
> > should really calm down, i know he is not agreeing with the firmware
> > split, but this doesn't allow him to be impolite and threatening.
> 
> IIRC he was threatening Markus, not you. 

15:22:53 < maks> svenl: don't fuck with the bts or get your email blacklisted kthx

> Anyway, I suppose by now he realises
> that was completely inappropiate, and actually counterproductive.

Nice of you to have such good faith in the socialness of the members of
the kernel team. I have learned not to have such faith myself though.

> Now can we please get this over with?

fine with me, but then, as always, the other side will never forget, and
issues will not improve until they recognize that their behaviour is not
appropriate, which i have some serious doubt they have the strength of
character to do.

Sadly,

Sven Luther




Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (full text, mbox, link).


Message #339 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Robert Millan <rmh@aybabtu.com>
To: Sven Luther <sven@powerlinux.fr>
Cc: leader@debian.org, Markus Laire <malaire@gmail.com>, maximilian attems <max@stro.at>, Debian Kernel Team <debian-kernel@lists.debian.org>, 242866@bugs.debian.org, 243022@bugs.debian.org, 383403@bugs.debian.org, 412950@bugs.debian.org
Subject: Re: Processed: info that it has *not* been dealt with
Date: Sat, 17 May 2008 14:12:20 +0200
On Sat, May 17, 2008 at 11:33:03AM +0200, Sven Luther wrote:
> > 
> > But the maintainer does, and for a change this request doesn't conflict with
> > the Social Contract.  Why are we discussing on whether we prefer one bug or
> > multiple bugs when we have actual SC violations right now that need fixing?
> 
> What does it gain to close the bug that contains the history of the
> problem ? 

My guess is that this makes it easier to track the problems, by closing stuff
in changelog when a partial fix is done.

-- 
Robert Millan

<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call… if you are unable to speak?
(as seen on /.)




Disconnected #243022 from all other report(s). Request was from Nathanael Nerode <neroden@fastmail.fm> to control@bugs.debian.org. (Mon, 03 Nov 2008 14:03:14 GMT) (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Debian Kernel Team <debian-kernel@lists.debian.org>:
Bug#242866; Package linux-2.6. (Sun, 22 Mar 2009 23:30:02 GMT) (full text, mbox, link).


Acknowledgement sent to Rudy Godoy Guillén <rudy@stone-head.org>:
Extra info received and forwarded to list. Copy sent to Debian Kernel Team <debian-kernel@lists.debian.org>. (Sun, 22 Mar 2009 23:30:03 GMT) (full text, mbox, link).


Message #346 received at 242866@bugs.debian.org (full text, mbox, reply):

From: Rudy Godoy Guillén <rudy@stone-head.org>
To: Debian Bug Tracking System <242866@bugs.debian.org>
Subject: linux-image-2.6.26-1-686: YMFPCI alsa firmware doesn't load
Date: Sun, 22 Mar 2009 18:38:17 -0500
Package: linux-image-2.6.26-1-686
Version: 2.6.26-13
Followup-For: Bug #242866

After upgrading to latest kernel I'm unable to load alsa's ymfpci firmware anymore. I get
the following error:

[   14.696499] firmware: requesting yamaha/ds1e_ctrl.fw
[   16.012014] AC'97 0 does not respond - RESET
[   16.020009] AC'97 0 access is not valid [0x0], removing mixer.
[   16.020453] ACPI: PCI interrupt for device 0000:00:06.0 disabled
[   16.020499] Yamaha DS-1 PCI: probe of 0000:00:06.0 failed with error -5
[   16.862560] Filesystem "dm-0": Disabling barriers, not supported by the underlying device


thanks

-- Package-specific info:
** Version:
Linux version 2.6.26-1-686 (Debian 2.6.26-13) (waldi@debian.org) (gcc version 4.1.3 20080704 (prerelease) (Debian 4.1.2-24)) #1 SMP Sat Jan 10 18:29:31 UTC 2009

** Command line:
root=/dev/mapper/Sys-root ro 

** Tainted: P (1)

** Kernel log:
[    5.239613] ACPI: PCI Interrupt 0000:00:0f.1[A] -> GSI 20 (level, low) -> IRQ 20
[    5.239635] VP_IDE: not 100% native mode: will probe irqs later
[    5.239661] VP_IDE: VIA vt8237 (rev 00) IDE UDMA133 controller on pci0000:00:0f.1
[    5.239678]     ide0: BM-DMA at 0xfc00-0xfc07
[    5.239691]     ide1: BM-DMA at 0xfc08-0xfc0f
[    5.239697] Probing IDE interface ide0...
[    5.528032] usb 1-1: device not accepting address 2, error -71
[    5.584043] hub 1-0:1.0: unable to enumerate USB device on port 1
[    5.808097] Probing IDE interface ide1...
[    6.672150] hdc: HL-DT-ST GCE-8400B, ATAPI CD/DVD-ROM drive
[    7.088015] usb 1-1: new low speed USB device using uhci_hcd and address 4
[    7.252004] usb 1-1: configuration #1 chosen from 1 choice
[    7.281158] usb 1-1: New USB device found, idVendor=0458, idProduct=001a
[    7.281169] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    7.281175] usb 1-1: Product: PowerScroll EYE
[    7.281178] usb 1-1: Manufacturer: KYE
[    7.307340] usbcore: registered new interface driver hiddev
[    7.324016] input: KYE PowerScroll EYE as /class/input/input1
[    7.324016] input,hidraw0: USB HID v1.10 Mouse [KYE PowerScroll EYE] on usb-0000:00:10.0-1
[    7.324016] usbcore: registered new interface driver usbhid
[    7.324016] usbhid: v2.6:USB HID core driver
[    7.456109] hdd: CREATIVE CD5250E, ATAPI CD/DVD-ROM drive
[    7.492004] hdc: host max PIO5 wanted PIO255(auto-tune) selected PIO4
[    7.492004] hdc: MWDMA2 mode selected
[    7.492004] hdd: host max PIO5 wanted PIO255(auto-tune) selected PIO4
[    7.492004] hdd: MWDMA2 mode selected
[    7.492004] ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
[    7.492004] ide1 at 0x170-0x177,0x376 on irq 15
[    7.583604] hdc: ATAPI 40X CD-ROM CD-R/RW drive, 8192kB Cache
[    7.583620] Uniform CD-ROM driver Revision: 3.20
[    7.587709] hdd: ATAPI 52X CD-ROM drive, 128kB Cache
[    7.798340] device-mapper: uevent: version 1.0.3
[    7.800381] device-mapper: ioctl: 4.13.0-ioctl (2007-10-18) initialised: dm-devel@redhat.com
[    8.345289] PM: Starting manual resume from disk
[    8.438244] SGI XFS with ACLs, security attributes, realtime, large block numbers, no debug enabled
[    8.440782] SGI XFS Quota Management subsystem
[    8.443762] Filesystem "dm-0": Disabling barriers, not supported by the underlying device
[    8.443996] XFS mounting filesystem dm-0
[    8.476029] Ending clean XFS mount for filesystem: dm-0
[   10.276035] udevd version 125 started
[   12.521288] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[   12.532062] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[   12.542491] Linux agpgart interface v0.103
[   12.545199] agpgart: Detected VIA KT400/KT400A/KT600 chipset
[   12.550660] agpgart: AGP aperture is 64M @ 0xe0000000
[   12.801986] ACPI: PCI Interrupt 0000:00:06.0[A] -> GSI 17 (level, low) -> IRQ 17
[   12.804039] firmware: requesting yamaha/ds1_dsp.fw
[   12.946033] input: Power Button (FF) as /class/input/input2
[   12.972603] ACPI: Power Button (FF) [PWRF]
[   12.972749] input: Power Button (CM) as /class/input/input3
[   13.000183] ACPI: Power Button (CM) [PWRB]
[   13.000363] input: Sleep Button (CM) as /class/input/input4
[   13.029894] ACPI: Sleep Button (CM) [SLPB]
[   14.228179] input: PC Speaker as /class/input/input5
[   14.613397] parport_pc 00:0a: reported by Plug and Play ACPI
[   14.613499] parport0: PC-style at 0x378 (0x778), irq 7 [PCSPP,TRISTATE,EPP]
[   14.696499] firmware: requesting yamaha/ds1e_ctrl.fw
[   16.012014] AC'97 0 does not respond - RESET
[   16.020009] AC'97 0 access is not valid [0x0], removing mixer.
[   16.020453] ACPI: PCI interrupt for device 0000:00:06.0 disabled
[   16.020499] Yamaha DS-1 PCI: probe of 0000:00:06.0 failed with error -5
[   16.862560] Filesystem "dm-0": Disabling barriers, not supported by the underlying device
[   18.114818] ide_generic: please use "probe_mask=0x3f" module parameter for probing all legacy ISA IDE ports
[   18.114838] ide_generic: I/O resource 0x1F0-0x1F7 not free.
[   18.114844] ide_generic: I/O resource 0x170-0x177 not free.
[   20.176139] fuse init (API version 7.9)
[   20.445773] kjournald starting.  Commit interval 5 seconds
[   20.446009] EXT3 FS on sda1, internal journal
[   20.446019] EXT3-fs: mounted filesystem with ordered data mode.
[   20.452576] Filesystem "dm-4": Disabling barriers, not supported by the underlying device
[   20.463433] XFS mounting filesystem dm-4
[   20.544831] Ending clean XFS mount for filesystem: dm-4
[   20.556098] Filesystem "dm-6": Disabling barriers, not supported by the underlying device
[   20.566310] XFS mounting filesystem dm-6
[   20.632004] Ending clean XFS mount for filesystem: dm-6
[   20.636005] Filesystem "dm-2": Disabling barriers, not supported by the underlying device
[   20.636005] XFS mounting filesystem dm-2
[   20.758424] Ending clean XFS mount for filesystem: dm-2
[   20.758424] Filesystem "dm-3": Disabling barriers, not supported by the underlying device
[   20.758424] XFS mounting filesystem dm-3
[   20.828620] Ending clean XFS mount for filesystem: dm-3
[   20.828620] Filesystem "dm-5": Disabling barriers, not supported by the underlying device
[   20.828620] XFS mounting filesystem dm-5
[   20.914517] Ending clean XFS mount for filesystem: dm-5
[   21.204317] Adding 815096k swap on /dev/mapper/Sys-Swap.  Priority:-1 extents:1 across:815096k
[   25.123862] NET: Registered protocol family 10
[   25.124665] lo: Disabled Privacy Extensions
[   25.126253] ADDRCONF(NETDEV_UP): eth0: link is not ready
[   26.816175] b44: eth0: Link is up at 100 Mbps, full duplex.
[   26.816186] b44: eth0: Flow control is off for TX and off for RX.
[   26.816307] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   31.740621] lp0: using parport0 (interrupt-driven).
[   31.781057] ppdev: user-space parallel port driver
[   37.032036] eth0: no IPv6 routers present
[   40.597723] nvidia: module license 'NVIDIA' taints kernel.
[   40.859112] ACPI: PCI Interrupt 0000:01:00.0[A] -> GSI 16 (level, low) -> IRQ 16
[   40.859950] NVRM: loading NVIDIA UNIX x86 Kernel Module  173.14.09  Wed Jun  4 23:43:17 PDT 2008
[   41.009917] agpgart: Found an AGP 3.5 compliant device at 0000:00:00.0.
[   41.009945] agpgart: Putting AGP V3 device at 0000:00:00.0 into 8x mode
[   41.010011] agpgart: Putting AGP V3 device at 0000:01:00.0 into 8x mode

** Loaded modules:
Module                  Size  Used by
nvidia               7086148  24 
ppdev                   6468  0 
lp                      8164  0 
ipv6                  235300  14 
ext3                  105512  1 
jbd                    39444  1 ext3
mbcache                 7108  1 ext3
fuse                   42908  1 
psmouse                32336  0 
ide_generic             2464  0 [permanent]
ide_disk               10496  0 
parport_pc             22500  1 
parport                30988  3 ppdev,lp,parport_pc
i2c_viapro              6836  0 
i2c_core               19828  2 nvidia,i2c_viapro
pcspkr                  2432  0 
button                  6096  0 
snd_ymfpci             28224  0 
gameport               10700  1 snd_ymfpci
snd_ac97_codec         88484  1 snd_ymfpci
ac97_bus                1728  1 snd_ac97_codec
snd_pcm_oss            32800  0 
snd_mixer_oss          12320  1 snd_pcm_oss
snd_pcm                62596  3 snd_ymfpci,snd_ac97_codec,snd_pcm_oss
snd_opl3_lib            9344  1 snd_ymfpci
snd_timer              17800  3 snd_ymfpci,snd_pcm,snd_opl3_lib
snd_hwdep               6212  1 snd_opl3_lib
snd_page_alloc          7816  2 snd_ymfpci,snd_pcm
snd_mpu401_uart         6368  1 snd_ymfpci
via_agp                 7744  1 
agpgart                28776  2 nvidia,via_agp
shpchp                 25528  0 
pci_hotplug            23460  1 shpchp
snd_rawmidi            18496  1 snd_mpu401_uart
snd_seq_device          6380  2 snd_opl3_lib,snd_rawmidi
snd                    45604  11 snd_ymfpci,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_opl3_lib,snd_timer,snd_hwdep,snd_mpu401_uart,snd_rawmidi,snd_seq_device
soundcore               6368  1 snd
joydev                  8480  0 
evdev                   8000  4 
xfs                   458072  6 
dm_mirror              15104  0 
dm_log                  8452  1 dm_mirror
dm_snapshot            14340  0 
dm_mod                 46184  18 dm_mirror,dm_log,dm_snapshot
ide_cd_mod             27652  0 
cdrom                  30176  1 ide_cd_mod
ata_generic             4676  0 
usbhid                 35904  0 
hid                    33184  1 usbhid
ff_memless              4392  1 usbhid
via82cxxx               6948  0 [permanent]
sd_mod                 22200  4 
floppy                 47716  0 
ehci_hcd               28428  0 
uhci_hcd               18672  0 
usbcore               118160  4 usbhid,ehci_hcd,uhci_hcd
ide_pci_generic         3908  0 [permanent]
ide_core               96168  5 ide_generic,ide_disk,ide_cd_mod,via82cxxx,ide_pci_generic
sata_via                6980  3 
libata                140384  2 ata_generic,sata_via
scsi_mod              129356  2 sd_mod,libata
dock                    8304  1 libata
b44                    22288  0 
ssb                    33476  1 b44
pcmcia                 29548  1 ssb
pcmcia_core            31892  2 ssb,pcmcia
firmware_class          6816  2 snd_ymfpci,pcmcia
mii                     4896  1 b44
thermal                15228  0 
processor              32576  1 thermal
fan                     4164  0 
thermal_sys            10856  3 thermal,processor,fan

** PCI devices:
00:00.0 Host bridge [0600]: VIA Technologies, Inc. VT8377 [KT400/KT600 AGP] Host Bridge [1106:3189] (rev 80)
	Subsystem: VIA Technologies, Inc. KT4AV motherboard (KT400A) [1106:0000]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
	Latency: 8
	Region 0: Memory at e0000000 (32-bit, prefetchable) [size=64M]
	Capabilities: <access denied>
	Kernel driver in use: agpgart-via
	Kernel modules: via-agp

00:01.0 PCI bridge [0604]: VIA Technologies, Inc. VT8237/VX700 PCI Bridge [1106:b198] (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
	Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
	Latency: 0
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	Memory behind bridge: dde00000-dfefffff
	Prefetchable memory behind bridge: cdd00000-ddcfffff
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR- NoISA+ VGA+ MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: <access denied>
	Kernel modules: shpchp

00:06.0 Multimedia audio controller [0401]: Yamaha Corporation YMF-754 [DS-1E Audio Controller] [1073:0012]
	Subsystem: Yamaha Corporation DS-XG PCI Audio Codec [1073:0012]
	Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 17
	Region 0: Memory at dfff0000 (32-bit, non-prefetchable) [size=32K]
	Region 1: I/O ports at d400 [size=64]
	Region 2: I/O ports at d000 [size=4]
	Capabilities: <access denied>
	Kernel modules: snd-ymfpci

00:0b.0 Ethernet controller [0200]: Broadcom Corporation BCM4401 100Base-T [14e4:4401] (rev 01)
	Subsystem: Micro-Star International Co., Ltd. Device [1462:590c]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 32
	Interrupt: pin A routed to IRQ 18
	Region 0: Memory at dfffa000 (32-bit, non-prefetchable) [size=8K]
	Capabilities: <access denied>
	Kernel driver in use: b44
	Kernel modules: b44

00:0f.0 RAID bus controller [0104]: VIA Technologies, Inc. VIA VT6420 SATA RAID Controller [1106:3149] (rev 80)
	Subsystem: Micro-Star International Co., Ltd. KT6 Delta-FIS2R (MS-6590) [1462:5901]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 32
	Interrupt: pin A routed to IRQ 20
	Region 0: I/O ports at ec00 [size=8]
	Region 1: I/O ports at e800 [size=4]
	Region 2: I/O ports at e400 [size=8]
	Region 3: I/O ports at e000 [size=4]
	Region 4: I/O ports at dc00 [size=16]
	Region 5: I/O ports at d800 [size=256]
	Capabilities: <access denied>
	Kernel driver in use: sata_via
	Kernel modules: sata_via

00:0f.1 IDE interface [0101]: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE [1106:0571] (rev 06) (prog-if 8a [Master SecP PriP])
	Subsystem: Micro-Star International Co., Ltd. KT6 Delta-FIS2R (MS-6590) [1462:5901]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 32
	Interrupt: pin A routed to IRQ 20
	Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [size=8]
	Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable) [size=1]
	Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [size=8]
	Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable) [size=1]
	Region 4: I/O ports at fc00 [size=16]
	Capabilities: <access denied>
	Kernel driver in use: VIA_IDE
	Kernel modules: via82cxxx

00:10.0 USB Controller [0c03]: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] (rev 81) (prog-if 00 [UHCI])
	Subsystem: Micro-Star International Co., Ltd. KT6 Delta-FIS2R (MS-6590) [1462:5901]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 32, Cache Line Size: 32 bytes
	Interrupt: pin A routed to IRQ 21
	Region 4: I/O ports at c000 [size=32]
	Capabilities: <access denied>
	Kernel driver in use: uhci_hcd
	Kernel modules: uhci-hcd

00:10.1 USB Controller [0c03]: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] (rev 81) (prog-if 00 [UHCI])
	Subsystem: Micro-Star International Co., Ltd. KT6 Delta-FIS2R (MS-6590) [1462:5901]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 32, Cache Line Size: 32 bytes
	Interrupt: pin A routed to IRQ 21
	Region 4: I/O ports at c400 [size=32]
	Capabilities: <access denied>
	Kernel driver in use: uhci_hcd
	Kernel modules: uhci-hcd

00:10.2 USB Controller [0c03]: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] (rev 81) (prog-if 00 [UHCI])
	Subsystem: Micro-Star International Co., Ltd. KT6 Delta-FIS2R (MS-6590) [1462:5901]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 32, Cache Line Size: 32 bytes
	Interrupt: pin B routed to IRQ 21
	Region 4: I/O ports at c800 [size=32]
	Capabilities: <access denied>
	Kernel driver in use: uhci_hcd
	Kernel modules: uhci-hcd

00:10.3 USB Controller [0c03]: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] (rev 81) (prog-if 00 [UHCI])
	Subsystem: Micro-Star International Co., Ltd. KT6 Delta-FIS2R (MS-6590) [1462:5901]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 32, Cache Line Size: 32 bytes
	Interrupt: pin B routed to IRQ 21
	Region 4: I/O ports at cc00 [size=32]
	Capabilities: <access denied>
	Kernel driver in use: uhci_hcd
	Kernel modules: uhci-hcd

00:10.4 USB Controller [0c03]: VIA Technologies, Inc. USB 2.0 [1106:3104] (rev 86) (prog-if 20 [EHCI])
	Subsystem: Micro-Star International Co., Ltd. KT6 Delta-FIS2R (MS-6590) [1462:5901]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 32, Cache Line Size: 64 bytes
	Interrupt: pin C routed to IRQ 21
	Region 0: Memory at dfff9e00 (32-bit, non-prefetchable) [size=256]
	Capabilities: <access denied>
	Kernel driver in use: ehci_hcd
	Kernel modules: ehci-hcd

00:11.0 ISA bridge [0601]: VIA Technologies, Inc. VT8237 ISA bridge [KT600/K8T800/K8T890 South] [1106:3227]
	Subsystem: VIA Technologies, Inc. Device [1106:0000]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Capabilities: <access denied>
	Kernel modules: i2c-viapro

01:00.0 VGA compatible controller [0300]: nVidia Corporation NV34 [GeForce FX 5200] [10de:0322] (rev a1) (prog-if 00 [VGA controller])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 248 (1250ns min, 250ns max)
	Interrupt: pin A routed to IRQ 16
	Region 0: Memory at de000000 (32-bit, non-prefetchable) [size=16M]
	Region 1: Memory at d0000000 (32-bit, prefetchable) [size=128M]
	[virtual] Expansion ROM at dfee0000 [disabled] [size=128K]
	Capabilities: <access denied>
	Kernel driver in use: nvidia
	Kernel modules: nvidiafb, nvidia



-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.26-1-686 (SMP w/1 CPU core)
Locale: LANG=es_PE.UTF-8, LC_CTYPE=es_PE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages linux-image-2.6.26-1-686 depends on:
ii  debconf [debconf-2.0]         1.5.25     Debian configuration management sy
ii  initramfs-tools [linux-initra 0.93       tools for generating an initramfs
ii  module-init-tools             3.4-1      tools for managing Linux kernel mo
ii  yaird [linux-initramfs-tool]  0.0.13-5   Yet Another mkInitRD

Versions of packages linux-image-2.6.26-1-686 recommends:
ii  libc6-i686                    2.9-6      GNU C Library: Shared libraries [i

Versions of packages linux-image-2.6.26-1-686 suggests:
ii  grub                       0.97-47lenny2 GRand Unified Bootloader (Legacy v
pn  linux-doc-2.6.26           <none>        (no description available)

-- debconf information:
  linux-image-2.6.26-1-686/preinst/abort-overwrite-2.6.26-1-686:
  linux-image-2.6.26-1-686/postinst/bootloader-error-2.6.26-1-686:
  linux-image-2.6.26-1-686/postinst/depmod-error-initrd-2.6.26-1-686: false
  linux-image-2.6.26-1-686/postinst/old-system-map-link-2.6.26-1-686: true
  linux-image-2.6.26-1-686/prerm/would-invalidate-boot-loader-2.6.26-1-686: true
  linux-image-2.6.26-1-686/preinst/elilo-initrd-2.6.26-1-686: true
  linux-image-2.6.26-1-686/postinst/kimage-is-a-directory:
  linux-image-2.6.26-1-686/postinst/old-dir-initrd-link-2.6.26-1-686: true
  linux-image-2.6.26-1-686/postinst/create-kimage-link-2.6.26-1-686: true
  linux-image-2.6.26-1-686/preinst/overwriting-modules-2.6.26-1-686: true
  linux-image-2.6.26-1-686/postinst/depmod-error-2.6.26-1-686: false
  shared/kernel-image/really-run-bootloader: true
  linux-image-2.6.26-1-686/prerm/removing-running-kernel-2.6.26-1-686: true
  linux-image-2.6.26-1-686/preinst/abort-install-2.6.26-1-686:
  linux-image-2.6.26-1-686/preinst/lilo-has-ramdisk:
  linux-image-2.6.26-1-686/preinst/bootloader-initrd-2.6.26-1-686: true
  linux-image-2.6.26-1-686/preinst/lilo-initrd-2.6.26-1-686: true
  linux-image-2.6.26-1-686/postinst/old-initrd-link-2.6.26-1-686: true
  linux-image-2.6.26-1-686/postinst/bootloader-test-error-2.6.26-1-686:
  linux-image-2.6.26-1-686/preinst/failed-to-move-modules-2.6.26-1-686:
  linux-image-2.6.26-1-686/preinst/initrd-2.6.26-1-686:




Reply sent to maximilian attems <max@stro.at>:
You have taken responsibility. (Wed, 25 Mar 2009 11:42:03 GMT) (full text, mbox, link).


Notification sent to Marco d'Itri <md@Linux.IT>:
Bug acknowledged by developer. (Wed, 25 Mar 2009 11:42:03 GMT) (full text, mbox, link).


Message #351 received at 242866-done@bugs.debian.org (full text, mbox, reply):

From: maximilian attems <max@stro.at>
To: 242866-done@bugs.debian.org
Subject: drivers containing firmware blobs
Date: Wed, 25 Mar 2009 12:41:28 +0100
Version: 2.6.29-1


allmost all drivers are now using request_firmware(),
just one or two that aren't, but are to be switched
are still disabled.

woow closing this, let's be happy we wont have a new
firmware dance on squeeze release.


-- 
maks




Reply sent to maximilian attems <max@stro.at>:
You have taken responsibility. (Wed, 25 Mar 2009 11:42:03 GMT) (full text, mbox, link).


Notification sent to Larry Doolittle <ldoolitt@recycle.lbl.gov>:
Bug acknowledged by developer. (Wed, 25 Mar 2009 11:42:03 GMT) (full text, mbox, link).


Reply sent to maximilian attems <max@stro.at>:
You have taken responsibility. (Wed, 25 Mar 2009 11:42:04 GMT) (full text, mbox, link).


Notification sent to Sven Luther <luther@debian.org>:
Bug acknowledged by developer. (Wed, 25 Mar 2009 11:42:04 GMT) (full text, mbox, link).


Bug archived. Request was from Debbugs Internal Request <owner@bugs.debian.org> to internal_control@bugs.debian.org. (Mon, 07 Mar 2011 07:38:02 GMT) (full text, mbox, link).


Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Sat Apr 15 21:13:48 2023; Machine Name: buxtehude

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.