All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Gérard Roudier" <groudier@free.fr>
To: Anton Blanchard <anton@samba.org>
Cc: <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] small sym-2 fix
Date: Thu, 15 Nov 2001 20:46:34 +0100 (CET)	[thread overview]
Message-ID: <20011115203852.M2136-100000@gerard> (raw)
In-Reply-To: <20011115172204.B1589-100000@gerard>



On Thu, 15 Nov 2001, Gérard Roudier wrote:

> On Thu, 15 Nov 2001, Anton Blanchard wrote:
>
> >
> > Hi,
> >
> > I tested the sym-2 driver on ppc64 and found that hcb_p can be > 1 page
> > but __sym_malloc fails for allocations over 1 page. This means we
> > die in sym_attach.
>
> The driver should not need more than 4096 bytes for a single allocation.
> If the ppc64 page size is smaller, your patch is ok, otherwise something
> may have to be fixed, likely in the driver. I cannot access to kernel
> source immediately but I will check what kind of page size ppc64 is using
> asap.

Could you revert your change and give my patch below a try. Btw, you will
be in sync with my current sources. Booting with sym53c8xx=debug:1 will
let the driver print all memory allocations to the syslog. You may send me
the drivers messages related to these allocations for information.

  Gérard.

PS: I do have tried the patch on a IA32 machine under linux-2.4.13.

> > With this patch the sym-2 works on ppc64. BTW so far it looks solid :)
>
> Great!
>
> Thanks for your report.
>
> Regards,
>   Gérard.
> >
> > Anton
> >
> > diff -urN 2.4.15-pre4/drivers/scsi/sym53c8xx_2/sym_glue.h linuxppc_2_4_devel_work/drivers/scsi/sym53c8xx_2/sym_glue.h
> > --- 2.4.15-pre4/drivers/scsi/sym53c8xx_2/sym_glue.h	Thu Nov 15 13:38:02 2001
> > +++ linuxppc_2_4_devel_work/drivers/scsi/sym53c8xx_2/sym_glue.h	Tue Nov 13 18:03:07 2001
> > @@ -526,7 +526,7 @@
> >   *  couple of things related to the memory allocator.
> >   */
> >  typedef u_long m_addr_t;	/* Enough bits to represent any address */
> > -#define SYM_MEM_PAGE_ORDER 0	/* 1 PAGE  maximum */
> > +#define SYM_MEM_PAGE_ORDER 1	/* 2 PAGE  maximum */
> >  #define SYM_MEM_CLUSTER_SHIFT	(PAGE_SHIFT+SYM_MEM_PAGE_ORDER)
> >  #ifdef	MODULE
> >  #define SYM_MEM_FREE_UNUSED	/* Free unused pages immediately */

diff -u ../sym-2-orig/sym_glue.h ./sym_glue.h
--- ../sym-2-orig/sym_glue.h	Thu Nov 15 22:53:34 2001
+++ ./sym_glue.h	Thu Nov 15 23:18:58 2001
@@ -77,7 +77,6 @@
 #include <linux/errno.h>
 #include <linux/pci.h>
 #include <linux/string.h>
-#include <linux/malloc.h>
 #include <linux/mm.h>
 #include <linux/ioport.h>
 #include <linux/time.h>
Only in .: sym_glue.o
diff -u ../sym-2-orig/sym_hipd.c ./sym_hipd.c
--- ../sym-2-orig/sym_hipd.c	Thu Nov 15 22:53:28 2001
+++ ./sym_hipd.c	Thu Nov 15 23:16:03 2001
@@ -4691,6 +4691,7 @@
 	OUTL_DSP (SCRIPTA_BA (np, clrack));
 	return;
 out_stuck:
+	return;
 }

 /*
@@ -5226,6 +5227,7 @@

 	return;
 fail:
+	return;
 }

 /*
@@ -5788,6 +5790,13 @@
 		goto attach_failed;

 	/*
+	 *  Allocate the array of lists of CCBs hashed by DSA.
+	 */
+	np->ccbh = sym_calloc(sizeof(ccb_p *)*CCB_HASH_SIZE, "CCBH");
+	if (!np->ccbh)
+		goto attach_failed;
+
+	/*
 	 *  Initialyze the CCB free and busy queues.
 	 */
 	sym_que_init(&np->free_ccbq);
@@ -5978,6 +5987,8 @@
 			sym_mfree_dma(cp, sizeof(*cp), "CCB");
 		}
 	}
+	if (np->ccbh)
+		sym_mfree(np->ccbh, sizeof(ccb_p *)*CCB_HASH_SIZE, "CCBH");

 	if (np->badluntbl)
 		sym_mfree_dma(np->badluntbl, 256,"BADLUNTBL");
diff -u ../sym-2-orig/sym_hipd.h ./sym_hipd.h
--- ../sym-2-orig/sym_hipd.h	Thu Nov 15 22:53:34 2001
+++ ./sym_hipd.h	Thu Nov 15 22:54:31 2001
@@ -1068,7 +1068,8 @@
 	/*
 	 *  CCB lists and queue.
 	 */
-	ccb_p ccbh[CCB_HASH_SIZE];	/* CCB hashed by DSA value	*/
+	ccb_p *ccbh;			/* CCBs hashed by DSA value	*/
+					/* CCB_HASH_SIZE lists of CCBs	*/
 	SYM_QUEHEAD	free_ccbq;	/* Queue of available CCBs	*/
 	SYM_QUEHEAD	busy_ccbq;	/* Queue of busy CCBs		*/

diff -u ../sym-2-orig/sym_nvram.c ./sym_nvram.c
--- ../sym-2-orig/sym_nvram.c	Thu Nov 15 22:53:28 2001
+++ ./sym_nvram.c	Thu Nov 15 22:54:25 2001
@@ -505,10 +505,10 @@
 	return retv;
 }

-#undef SET_BIT 0
-#undef CLR_BIT 1
-#undef SET_CLK 2
-#undef CLR_CLK 3
+#undef SET_BIT
+#undef CLR_BIT
+#undef SET_CLK
+#undef CLR_CLK

 /*
  *  Try reading Symbios NVRAM.


  parent reply	other threads:[~2001-11-15 22:32 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-11-15  4:36 [PATCH] small sym-2 fix Anton Blanchard
2001-11-15 10:19 ` David S. Miller
2001-11-15 11:35   ` Anton Blanchard
2001-11-15 11:41     ` David S. Miller
2001-11-15 12:17       ` Anton Blanchard
2001-11-15 16:27 ` Gérard Roudier
2001-11-15 19:26   ` David S. Miller
2001-11-15 18:07     ` Gérard Roudier
2001-11-15 21:22       ` Hugh Dickins
2001-11-15 20:22         ` Gérard Roudier
2001-11-15 19:46   ` Gérard Roudier [this message]
2001-11-15 22:39     ` David S. Miller
2001-11-15 20:41       ` Gérard Roudier
2001-11-15 22:44       ` David S. Miller
2001-11-20  6:02     ` Anton Blanchard
2001-11-20 17:26       ` Gérard Roudier
2001-11-21  2:19         ` Anton Blanchard
2001-11-21  3:49           ` David S. Miller
2001-11-21 17:19           ` Gérard Roudier
2001-11-22  5:19             ` Paul Mackerras

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20011115203852.M2136-100000@gerard \
    --to=groudier@free.fr \
    --cc=anton@samba.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.