Re: Fix potential bug in au1xxx_ddma_add_device()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Domen,

On Tue, Jun 13, 2006 at 10:16:42AM +0200, Domen Puncer wrote:
> First a note, that your patch [dbdma.patch] doesn't make any
> difference for me.  Well... at least not an obvious one.

That's exactly what it should do, since it's a bug that I do not
yet expect to happen. So no difference is good for now.

Including the patch, so hopefully Ralf sees it again. :-)


> OK. I have an IDE drive connected now. It's a bit weird, with
> CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA I can't enable dma with
> hdparm, but if works on about 6 MB/sec.
> With CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA, I can enable DMA,
> but it works slow, like 1.7 MB/sec.
> 
> Seems odd to me.

Hmmmm, strange. You should at least expect the other way around.
Transferring you to the mailing list, hopefully somebody over
there has got a clue.


-- 
$ cat ~/.signature
Freddy Spierenburg <freddy@xxxxxxxxxxxxxxx>  http://freddy.snarl.nl/
GnuPG: 0x7941D1E1=C948 5851 26D2 FA5C 39F1  E588 6F17 FD5D 7941 D1E1
$ # Please read http://www.ietf.org/rfc/rfc2015.txt before complain!
--- linux-2.6.16-orig/include/asm-mips/mach-au1x00/au1xxx_dbdma.h	2006-03-20 11:35:39.000000000 +0000
+++ linux-2.6.16/include/asm-mips/mach-au1x00/au1xxx_dbdma.h	2006-03-31 14:31:56.000000000 +0000
@@ -200,7 +200,10 @@
 #define DSCR_CMD0_ALWAYS	31
 #define DSCR_NDEV_IDS		32
 /* THis macro is used to find/create custom device types */
-#define DSCR_DEV2CUSTOM_ID(x,d)	(((((x)&0xFFFF)<<8)|0x32000000)|((d)&0xFF))
+#define DSCR_ID_BASE 0x32000000
+#define DSCR_ID_OFFSET 0x1000
+#define DSCR_ID_FREE DSCR_ID_BASE
+#define DSCR_DEV2CUSTOM_ID(x,d)	(((((x)&0xFFFF)<<8)|DSCR_ID_BASE)|((d)&0xFF))
 #define DSCR_CUSTOM2DEV_ID(x)	((x)&0xFF)
 
 
--- linux-2.6.16-orig/arch/mips/au1000/common/dbdma.c	2006-03-20 11:35:39.000000000 +0000
+++ linux-2.6.16/arch/mips/au1000/common/dbdma.c	2006-03-31 14:31:58.000000000 +0000
@@ -162,22 +162,22 @@
 	{ DSCR_CMD0_ALWAYS, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
 
 	/* Provide 16 user definable device types */
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
-	{ 0, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
+	{ DSCR_ID_FREE, 0, 0, 0, 0, 0, 0 },
 };
 
 #define DBDEV_TAB_SIZE (sizeof(dbdev_tab) / sizeof(dbdev_tab_t))
@@ -208,9 +208,9 @@
 {
 	u32 ret = 0;
 	dbdev_tab_t *p=NULL;
-	static u16 new_id=0x1000;
+	static u16 new_id=DSCR_ID_OFFSET;
 
-	p = find_dbdev_id(0);
+	p = find_dbdev_id(DSCR_ID_FREE);
 	if ( NULL != p )
 	{
 		memcpy(p, dev, sizeof(dbdev_tab_t));

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux