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

Re: Default kernel for powerpc may change



Hi!

> I'm curious if the pmac/chrp community has any feelings on this.  I'm really
> concerned about the pmac community since I don't have any good feedback

Will your kernel include the de4x5 Patch for 6500 machines? If not, your
kernel will break in funny ways on that machine, as I discovered with a
self-compiled stock 2.2.13.

I did attach one for 2.2.8 that flawlessly patches the stock 2.2.13
kernel. Might work with newer ones, too (if they don't already contain
the patch). It's a patch by Paul Msomething (sorry, still can't remember
the name and how to write it), you know who I am talking about, the
pmac-kernel-guy :-)

bye, Georg
diff -ru linux-2.2.8/drivers/net/de4x5.c linux-2.2.8-macx-de4x5/drivers/net/de4x5.c
--- linux-2.2.8/drivers/net/de4x5.c	Mon Jun  7 01:32:18 1999
+++ linux-2.2.8-macx-de4x5/drivers/net/de4x5.c	Mon Jun  7 01:19:50 1999
@@ -653,12 +653,20 @@
 #define ALIGN64     ((u_long)64 - 1)    /* 16 longword align */
 #define ALIGN128    ((u_long)128 - 1)   /* 32 longword align */
 
+#ifndef __powerpc__
 #define ALIGN         ALIGN32           /* Keep the DC21040 happy... */
 #define CACHE_ALIGN   CAL_16LONG
 #define DESC_SKIP_LEN DSL_0             /* Must agree with DESC_ALIGN */
 /*#define DESC_ALIGN    u32 dummy[4];  / * Must agree with DESC_SKIP_LEN */
 #define DESC_ALIGN
 
+#else /* __powerpc__ */
+#define ALIGN         ALIGN32           /* Keep the DC21040 happy... */
+#define CACHE_ALIGN   CAL_8LONG
+#define DESC_SKIP_LEN DSL_4             /* Must agree with DESC_ALIGN */
+#define DESC_ALIGN    u32 dummy[4];  	/* Must agree with DESC_SKIP_LEN */
+#endif /* __powerpc__ */
+
 #ifndef DEC_ONLY                        /* See README.de4x5 for using this */
 static int dec_only = 0;
 #else
@@ -763,6 +771,9 @@
 struct de4x5_private {
     char adapter_name[80];                  /* Adapter name                 */
     u_long interrupt;                       /* Aligned ISR flag             */
+#ifdef __powerpc__
+    u_long dummy[3];			    /* Keep rx_ring 32-byte aligned */
+#endif
     struct de4x5_desc rx_ring[NUM_RX_DESC]; /* RX descriptor ring           */
     struct de4x5_desc tx_ring[NUM_TX_DESC]; /* TX descriptor ring           */
     struct sk_buff *tx_skb[NUM_TX_DESC];    /* TX skb for freeing when sent */
@@ -1571,6 +1582,7 @@
 	if (skb) de4x5_putb_cache(dev, skb);
     }
     
+    if (!lp->interrupt)
     lp->cache.lock = 0;
 
     return status;

Reply to: