public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* Regression of mtd/chips/jedec_probe.c in 2.6.0-test7
@ 2003-10-15 23:46 Christopher Hoover
  2003-10-16 14:08 ` Thayne Harbaugh
  0 siblings, 1 reply; 7+ messages in thread
From: Christopher Hoover @ 2003-10-15 23:46 UTC (permalink / raw)
  To: 'mtd list'


Perhaps this is already known, but it may serve as useful news to some. 

The version of mtd/chips/jedec_probe.c in 2.6.0-test7 (revision 1.29
according to $Id$) has suffered a regression.  That version fails to detect
AMD AM29LV800BB flash in 16-bit x 1 configuration.  Replacing it with
revision 1.32 from CVS or downgrading to revision 1.6 from 2.5.70-rmk1,
holding everything else constant, solves the problem.

Also, all versions of mtd/chips/jedec_probe.c need:

#include <linux/init.h>

for 2.6.0-test7.  (I cannot ssh from my current network location, otherwise
I'd make this change to CVS.)

Cheers,
-ch
ch(at)murgatroid.com
ch(at)hpl.hp.com

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

* Re: Regression of mtd/chips/jedec_probe.c in 2.6.0-test7
  2003-10-15 23:46 Regression of mtd/chips/jedec_probe.c in 2.6.0-test7 Christopher Hoover
@ 2003-10-16 14:08 ` Thayne Harbaugh
  2003-10-22 22:33   ` Christopher Hoover
  0 siblings, 1 reply; 7+ messages in thread
From: Thayne Harbaugh @ 2003-10-16 14:08 UTC (permalink / raw)
  To: ch; +Cc: 'mtd list'

On Wed, 2003-10-15 at 17:46, Christopher Hoover wrote:
> Perhaps this is already known, but it may serve as useful news to some. 
> 
> The version of mtd/chips/jedec_probe.c in 2.6.0-test7 (revision 1.29
> according to $Id$) has suffered a regression.  That version fails to detect
> AMD AM29LV800BB flash in 16-bit x 1 configuration.  Replacing it with
> revision 1.32 from CVS or downgrading to revision 1.6 from 2.5.70-rmk1,
> holding everything else constant, solves the problem.

Does that mean that 1.29 and 1.7 didn't work or did you just try those
versions because they were convenient for your?

> Also, all versions of mtd/chips/jedec_probe.c need:
> 
> #include <linux/init.h>

I fixed it moments before I read your email - thanks.

I'm concerned that the changes from 1.29 -> 1.33 are significant and
will meet resistance for inclusion in 2.6.0.  If you can narrow the
problem down to just a few lines that are obviously incorrect then the
patch should have a fighting chance.  There is a section that is an
obvious bug in jedec_match() that should be fixed:

@@ -1480,7 +1524,7 @@
 	DEBUG( MTD_DEBUG_LEVEL3,
 	       "MTD %s(): Check fit 0x%.8x + 0x%.8x = 0x%.8x\n",
 	       __func__, base, 1 << finfo->DevSize, base + (1 <<
finfo->DevSize) );
-	if ( base + ( 1 << finfo->DevSize ) > map->size ) {
+	if ( base + cfi->interleave * ( 1 << finfo->DevSize ) > map->size ) {
 		DEBUG( MTD_DEBUG_LEVEL3,
 		       "MTD %s(): 0x%.4x 0x%.4x %dKiB doesn't fit\n",
 		       __func__, finfo->mfr_id, finfo->dev_id,

The most likely problem, however is this chunk:

@@ -1538,10 +1582,10 @@
 	 */
 	DEBUG( MTD_DEBUG_LEVEL3, "MTD %s(): return to ID mode\n", __func__ );
 	if(cfi->addr_unlock1) {
-		cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
-		cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
+		cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi,
cfi->device_type, NULL);
+		cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi,
cfi->device_type, NULL);
 	}
-	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
+	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi,
cfi->device_type, NULL);
 	/* FIXME - should have a delay before continuing */
 
  match_done:	


Of course I can point to a few more chunks that should go into 2.6 (and
2.4 obviously), but the arguments are much weaker about why they have to
go in *now*.

If you figure out exactly what the regression is then we should lob it
at lkml.

Once again, thanks.

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

* RE: Regression of mtd/chips/jedec_probe.c in 2.6.0-test7
  2003-10-16 14:08 ` Thayne Harbaugh
@ 2003-10-22 22:33   ` Christopher Hoover
  2003-10-22 22:51     ` Thayne Harbaugh
  2003-10-23 16:13     ` Thayne Harbaugh
  0 siblings, 2 replies; 7+ messages in thread
From: Christopher Hoover @ 2003-10-22 22:33 UTC (permalink / raw)
  To: tharbaugh, ch; +Cc: 'mtd list'

> If you can narrow the problem down to just a few lines that 
> are obviously incorrect then the patch should have a fighting 
> chance.

Here's what I tried:

--- linux-2.6.0-test8-rmk1/drivers/mtd/chips/jedec_probe.c	2003-10-20
22:19:24.000000000 -0700
+++ linux-2.6.0-test8-rmk1-ceiva1/drivers/mtd/chips/jedec_probe.c
2003-10-22 15:24:55.000000000 -0700
@@ -1481,7 +1481,7 @@
 	DEBUG( MTD_DEBUG_LEVEL3,
 	       "MTD %s(): Check fit 0x%.8x + 0x%.8x = 0x%.8x\n",
 	       __func__, base, 1 << finfo->DevSize, base + (1 <<
finfo->DevSize) );
-	if ( base + ( 1 << finfo->DevSize ) > map->size ) {
+	if ( base + cfi->interleave * ( 1 << finfo->DevSize ) > map->size )
{
 		DEBUG( MTD_DEBUG_LEVEL3,
 		       "MTD %s(): 0x%.4x 0x%.4x %dKiB doesn't fit\n",
 		       __func__, finfo->mfr_id, finfo->dev_id,
@@ -1539,10 +1539,10 @@
 	 */
 	DEBUG( MTD_DEBUG_LEVEL3, "MTD %s(): return to ID mode\n", __func__
);
 	if(cfi->addr_unlock1) {
-		cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
-		cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
+		cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi,
cfi->device_type, NULL);
+		cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi,
cfi->device_type, NULL);
 	}
-	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
+	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi,
cfi->device_type, NULL);
 	/* FIXME - should have a delay before continuing */
 
  match_done:	

But it fails to find the chip:

Uncompressing Linux................................... done, booting the
kernel.Linux version 2.6.0-test8-rmk1-ceiva1 (ch@laptop-vmware) (gcc version
3.3.1) #33CPU: ARM720T [41807202] revision 2 (ARMv4T)
Machine: CEIVA/Polaroid Photo MAX Digital Picture Frame
Memory policy: ECC disabled, Data cache write back
On node 0 totalpages: 1024
  DMA zone: 1024 pages, LIFO batch:1
  Normal zone: 0 pages, LIFO batch:1
  HighMem zone: 0 pages, LIFO batch:1
Building zonelist for node : 0
Kernel command line: root=/dev/mtdblock3 rootfstype=cramfs console=ttyCL0
debug
Relocating machine vectors to 0xffff0000
PID hash table entries: 32 (order 5: 256 bytes)
Memory: 4MB = 4MB total
Memory: 2908KB available (921K code, 116K data, 52K init)
Calibrating delay loop... 36.76 BogoMIPS
Dentry cache hash table entries: 1024 (order: 0, 4096 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
POSIX conformance testing by UNIFIX
NET: Registered protocol family 16
Bluetooth: Core ver 2.3
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
epson1355fb: regs mapped at 0xc0800000, fb 2048 KiB mapped at 0xc0802000
epson1355fb: xres=640, yres=480, is_color=1, is_dual=1, is_tft=0
epson1355fb: bpp=16, lcd_bpp=16, crt_enabled=0, lcd_enabled=1
fb0: S1D13505 frame buffer device
Fast Floating Point Emulator V0.9 (c) Peter Teichmann.
JFFS2 version 2.2. (C) 2001-2003 Red Hat, Inc.
Serial: CLPS711x driver $Revision: 1.42 $
ttyCL0 at I/O 0x100 (irq = 12) is a CLPS711x
ttyCL1 at I/O 0x1100 (irq = 28) is a CLPS711x
Using noop io scheduler
Search for id:(01 225b) interleave(1) type(2)
Search for id:(01 225b) interleave(1) type(2)
Search for id:(70 e3a0) interleave(1) type(2)
Search for id:(01 5b) interleave(2) type(1)
Search for id:(01 5b) interleave(2) type(1)
Search for id:(70 a0) interleave(2) type(1)
Search for id:(70 f10) interleave(2) type(2)
Search for id:(70 f10) interleave(2) type(2)
Search for id:(70 f10) interleave(2) type(2)
JEDEC: Found no ceiva flash device at location zero
clps_setup_mtd: do_map_probe failed to find flash
Bluetooth: HCI UART driver ver 2.1
Bluetooth: HCI H4 protocol initialized
NET: Registered protocol family 1
Bluetooth: L2CAP ver 2.1
Bluetooth: L2CAP socket layer initialized
Bluetooth: RFCOMM ver 1.0
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM TTY layer initialized
VFS: Cannot open root device "mtdblock3" or unknown-block(0,0)
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on unknown-block(0,0)



Is there something else you'd like me to try to narrow this down?

-ch

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

* RE: Regression of mtd/chips/jedec_probe.c in 2.6.0-test7
  2003-10-22 22:33   ` Christopher Hoover
@ 2003-10-22 22:51     ` Thayne Harbaugh
  2003-10-23  0:43       ` Christopher Hoover
  2003-10-23 16:13     ` Thayne Harbaugh
  1 sibling, 1 reply; 7+ messages in thread
From: Thayne Harbaugh @ 2003-10-22 22:51 UTC (permalink / raw)
  To: ch; +Cc: ch, 'mtd list'

[-- Attachment #1: Type: text/plain, Size: 2594 bytes --]

On Wed, 2003-10-22 at 16:33, Christopher Hoover wrote:
> > If you can narrow the problem down to just a few lines that 
> > are obviously incorrect then the patch should have a fighting 
> > chance.
> 
> Here's what I tried:
> 
> --- linux-2.6.0-test8-rmk1/drivers/mtd/chips/jedec_probe.c	2003-10-20
> 22:19:24.000000000 -0700
> +++ linux-2.6.0-test8-rmk1-ceiva1/drivers/mtd/chips/jedec_probe.c
> 2003-10-22 15:24:55.000000000 -0700
> @@ -1481,7 +1481,7 @@
>  	DEBUG( MTD_DEBUG_LEVEL3,
>  	       "MTD %s(): Check fit 0x%.8x + 0x%.8x = 0x%.8x\n",
>  	       __func__, base, 1 << finfo->DevSize, base + (1 <<
> finfo->DevSize) );
> -	if ( base + ( 1 << finfo->DevSize ) > map->size ) {
> +	if ( base + cfi->interleave * ( 1 << finfo->DevSize ) > map->size )
> {
>  		DEBUG( MTD_DEBUG_LEVEL3,
>  		       "MTD %s(): 0x%.4x 0x%.4x %dKiB doesn't fit\n",
>  		       __func__, finfo->mfr_id, finfo->dev_id,

This is needed.

> @@ -1539,10 +1539,10 @@
>  	 */
>  	DEBUG( MTD_DEBUG_LEVEL3, "MTD %s(): return to ID mode\n", __func__
> );
>  	if(cfi->addr_unlock1) {
> -		cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi,
> CFI_DEVICETYPE_X8, NULL);
> -		cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi,
> CFI_DEVICETYPE_X8, NULL);
> +		cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi,
> cfi->device_type, NULL);
> +		cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi,
> cfi->device_type, NULL);
>  	}
> -	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi,
> CFI_DEVICETYPE_X8, NULL);
> +	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi,
> cfi->device_type, NULL);
>  	/* FIXME - should have a delay before continuing */
>  
>   match_done:	

There's one more fragment where cfi->device_type should revert back to
CFI_DEVICETYPE_X8

@@ -1674,10 +1674,10 @@
 
 	/* Autoselect Mode */
 	if(cfi->addr_unlock1) {
-		cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi,
cfi->device_type, NULL);
-		cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi,
cfi->device_type, NULL);
+		cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
+		cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
 	}
-	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi,
cfi->device_type, NULL);
+	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
 	/* FIXME - should have a delay before continuing */
 
 	if (!cfi->numchips) {


Let me know if this fixes it.

-- 
Thayne Harbaugh
Linux Networx

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

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

* RE: Regression of mtd/chips/jedec_probe.c in 2.6.0-test7
  2003-10-22 22:51     ` Thayne Harbaugh
@ 2003-10-23  0:43       ` Christopher Hoover
  2003-10-23 15:56         ` Thayne Harbaugh
  0 siblings, 1 reply; 7+ messages in thread
From: Christopher Hoover @ 2003-10-23  0:43 UTC (permalink / raw)
  To: tharbaugh; +Cc: ch, 'mtd list'

> There's one more fragment where cfi->device_type should
> revert back to CFI_DEVICETYPE_X8

OK, now I'm confused.  Revert *back* to CFI_DEVICETYPE_X8?

I though we were going the other direction.

Appended is the last diff (n.b., original vs new) I tried.  It changes that
last fragment *from* CFI_DEVICETYPE_X8 *to* cfi->device_type -- it still
fails.  

The boot messages show different ids:

Search for id:(70 e3a0) interleave(1) type(2)
Search for id:(70 e3a0) interleave(1) type(2)
Search for id:(70 e3a0) interleave(1) type(2)
Search for id:(01 5b) interleave(2) type(1)
Search for id:(01 5b) interleave(2) type(1)
Search for id:(70 a0) interleave(2) type(1)
Search for id:(70 f10) interleave(2) type(2)
Search for id:(70 f10) interleave(2) type(2)
Search for id:(70 f10) interleave(2) type(2)
JEDEC: Found no ceiva flash device at location zero
clps_setup_mtd: do_map_probe failed to find flash

And before we found it fails with that last fragment left as is (i.e.
CFI_DEVICETYPE_X8).

-ch


--- linux-2.6.0-test8-rmk1/drivers/mtd/chips/jedec_probe.c	2003-10-20
22:19:24.000000000 -0700
+++ linux-2.6.0-test8-rmk1-ceiva1/drivers/mtd/chips/jedec_probe.c
2003-10-22 17:26:35.000000000 -0700
@@ -1481,7 +1481,7 @@
 	DEBUG( MTD_DEBUG_LEVEL3,
 	       "MTD %s(): Check fit 0x%.8x + 0x%.8x = 0x%.8x\n",
 	       __func__, base, 1 << finfo->DevSize, base + (1 <<
finfo->DevSize) );
-	if ( base + ( 1 << finfo->DevSize ) > map->size ) {
+	if ( base + cfi->interleave * ( 1 << finfo->DevSize ) > map->size )
{
 		DEBUG( MTD_DEBUG_LEVEL3,
 		       "MTD %s(): 0x%.4x 0x%.4x %dKiB doesn't fit\n",
 		       __func__, finfo->mfr_id, finfo->dev_id,
@@ -1539,10 +1539,10 @@
 	 */
 	DEBUG( MTD_DEBUG_LEVEL3, "MTD %s(): return to ID mode\n", __func__
);
 	if(cfi->addr_unlock1) {
-		cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
-		cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
+		cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi,
cfi->device_type, NULL);
+		cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi,
cfi->device_type, NULL);
 	}
-	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
+	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi,
cfi->device_type, NULL);
 	/* FIXME - should have a delay before continuing */
 
  match_done:	
@@ -1614,10 +1614,10 @@
 
 	/* Autoselect Mode */
 	if(cfi->addr_unlock1) {
-		cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
-		cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
+		cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi,
cfi->device_type, NULL);
+		cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi,
cfi->device_type, NULL);
 	}
-	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi,
CFI_DEVICETYPE_X8, NULL);
+	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi,
cfi->device_type, NULL);
 	/* FIXME - should have a delay before continuing */
 
 	if (!cfi->numchips) {

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

* RE: Regression of mtd/chips/jedec_probe.c in 2.6.0-test7
  2003-10-23  0:43       ` Christopher Hoover
@ 2003-10-23 15:56         ` Thayne Harbaugh
  0 siblings, 0 replies; 7+ messages in thread
From: Thayne Harbaugh @ 2003-10-23 15:56 UTC (permalink / raw)
  To: ch; +Cc: 'mtd list'

[-- Attachment #1: Type: text/plain, Size: 600 bytes --]

On Wed, 2003-10-22 at 18:43, Christopher Hoover wrote:
> > There's one more fragment where cfi->device_type should
> > revert back to CFI_DEVICETYPE_X8
> 
> OK, now I'm confused.  Revert *back* to CFI_DEVICETYPE_X8?
> 
> I though we were going the other direction.

Okay, I didn't read the patch hunks very closely.  We really want to
move *from* cfi->device_type *to* CFI_DEVICETYPE_X8.  Do me a favor,
check out jedec_probe.c v1.36 from CVS and try that - yes, I know,
you've already mentioned that v1.32 worked, but trying 1.36 will be
helpful.

-- 
Thayne Harbaugh
Linux Networx

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

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

* RE: Regression of mtd/chips/jedec_probe.c in 2.6.0-test7
  2003-10-22 22:33   ` Christopher Hoover
  2003-10-22 22:51     ` Thayne Harbaugh
@ 2003-10-23 16:13     ` Thayne Harbaugh
  1 sibling, 0 replies; 7+ messages in thread
From: Thayne Harbaugh @ 2003-10-23 16:13 UTC (permalink / raw)
  To: ch; +Cc: ch, 'mtd list'

[-- Attachment #1: Type: text/plain, Size: 1224 bytes --]

Now that I've been unhelpful, if not confusing, I figure I should look
at your emails a bit closer.

On Wed, 2003-10-22 at 16:33, Christopher Hoover wrote:

> Search for id:(01 225b) interleave(1) type(2)
> Search for id:(01 225b) interleave(1) type(2)

This is the manufacturer and device id for the AM29LV800BB.

01 = AMD
225b = AM29LV800BB in x16 mode.

If that's correct, why doesn't it find it?  Have you tried turning on
debug and setting it to 3?

> Search for id:(70 e3a0) interleave(1) type(2)
> Search for id:(01 5b) interleave(2) type(1)
> Search for id:(01 5b) interleave(2) type(1)

01 = AMD
5b = AM29LV800BB in x8 mode.

Once again, why isn't the chip found?

> Search for id:(70 a0) interleave(2) type(1)
> Search for id:(70 f10) interleave(2) type(2)
> Search for id:(70 f10) interleave(2) type(2)
> Search for id:(70 f10) interleave(2) type(2)
> JEDEC: Found no ceiva flash device at location zero
                  ^^^^^
Looks like a Polaroid camera?

> clps_setup_mtd: do_map_probe failed to find flash

We nee the debug verbosity turned up for jedec_probe.  Hopefully that
will tell us why jedec_match() (I believe) is failing.

-- 
Thayne Harbaugh
Linux Networx

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

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

end of thread, other threads:[~2003-10-23 16:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-10-15 23:46 Regression of mtd/chips/jedec_probe.c in 2.6.0-test7 Christopher Hoover
2003-10-16 14:08 ` Thayne Harbaugh
2003-10-22 22:33   ` Christopher Hoover
2003-10-22 22:51     ` Thayne Harbaugh
2003-10-23  0:43       ` Christopher Hoover
2003-10-23 15:56         ` Thayne Harbaugh
2003-10-23 16:13     ` Thayne Harbaugh

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