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

[microblaze-uclinux] EmacLite compile error in kernel 2.6



Hello,

I have tried to compile the Linux Kernel 2.6 from the
"petalinux-v0.20-rc3.tar.gz" release without patches.

I have some bugs during bootup. So I enabled some "Kernel hacking"
options for better checking the problems. See the attached JPEG file for the
selected options. If I do so the emaclite ethernet driver doesn't
compile any longer due to a first wrong argument to the spin_lock_...
functions. The first argument to these functions must be a pointer to a
"spin_lock_t" variable.

Here is a patch to correct this bug in the emaclite driver. I think the
same problem is present in the full emac driver.

Hans
-- 
Dr. Johann Pfefferl   ------------   mailto j.pfefferl at eubus dot net
Eubus GmbH            http://www.eubus.net +++++ http://www.hydraxc.com
Gollierstr. 70
D-80339 Muenchen
Phone: +49 (0)89 45 22 578-67     Fax: +49 (0)89 45 22 578-55
Registergericht Muenchen HRB 145 336, Ust-Id Nr. DE 225 783 933
Geschaeftsfuehrer: Volker Ulrich, Peter Sibities
==
 -o)   A computer program does what you tell it to do,
 /\\        not what you want it to do.               
_\_v-                                                 

Attachment: kernel-hacking.jpg
Description: JPEG image

First argument to the spin_lock... functions must be a pointer

---
commit ebf733f041c02e8995de8e81b5d714bc3504b2f5
tree a7b3251e028619dbd245c562e1aba4ca9a1236a8
parent acb7bb088bf07d95de58af6b63a73691dff6c19b
author Dr. Johann Pfefferl <pfefferl@xxxxxxx> Thu, 25 Oct 2007 15:56:28 +0200
committer Dr. Johann Pfefferl <pfefferl@xxxxxxxxxxxxxxx> Thu, 25 Oct 2007 15:56:28 +0200

 .../drivers/net/xilinx_emaclite/adapter.c          |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/software/linux-2.6.x-petalogix/drivers/net/xilinx_emaclite/adapter.c b/software/linux-2.6.x-petalogix/drivers/net/xilinx_emaclite/adapter.c
index 962ac42..192d1b9 100644
--- a/software/linux-2.6.x-petalogix/drivers/net/xilinx_emaclite/adapter.c
+++ b/software/linux-2.6.x-petalogix/drivers/net/xilinx_emaclite/adapter.c
@@ -310,12 +310,12 @@ xemaclite_close(struct net_device *dev)
 
 	free_irq(dev->irq, dev);
 
-	spin_lock_irqsave(rcvSpin, flags);
+	spin_lock_irqsave(&rcvSpin, flags);
 	list_del(&(lp->rcv));
-	spin_unlock_irqrestore(rcvSpin, flags);
-	spin_lock_irqsave(xmitSpin, flags);
+	spin_unlock_irqrestore(&rcvSpin, flags);
+	spin_lock_irqsave(&xmitSpin, flags);
 	list_del(&(lp->xmit));
-	spin_unlock_irqrestore(xmitSpin, flags);
+	spin_unlock_irqrestore(&xmitSpin, flags);
 
 	return 0;
 }
@@ -338,14 +338,14 @@ xemaclite_Send(struct sk_buff *orig_skb, struct net_device *dev)
 
         new_skb = orig_skb;
 
-        spin_lock_irqsave(reset_lock, flags);
+        spin_lock_irqsave(&reset_lock, flags);
 	if (XEmacLite_Send(&lp->EmacLite, (u8 *) new_skb->data, len) != XST_SUCCESS) {
 		netif_stop_queue(dev);
 		lp->deferred_skb = new_skb;
-		spin_unlock_irqrestore(reset_lock, flags);
+		spin_unlock_irqrestore(&reset_lock, flags);
 		return 0;
 	}
-	spin_unlock_irqrestore(reset_lock, flags);
+	spin_unlock_irqrestore(&reset_lock, flags);
 
 	lp->stats.tx_bytes += len;
         dev_kfree_skb(new_skb);
@@ -383,9 +383,9 @@ xemaclite_tx_timeout(struct net_device *dev)
 	       dev->name, TX_TIMEOUT * 1000UL / HZ);
 
 	lp->stats.tx_errors++;
-	spin_lock_irqsave(reset_lock, flags);
+	spin_lock_irqsave(&reset_lock, flags);
 	reset(dev, UNKNOWN_DUPLEX);
-	spin_unlock_irqrestore(reset_lock, flags);
+	spin_unlock_irqrestore(&reset_lock, flags);
 }
 
 /* The callback function for frames received. */
@@ -425,9 +425,9 @@ RecvHandler(void *CallbackRef)
 		lp->stats.rx_errors++;
 		dev_kfree_skb(skb);
 		//printk(KERN_ERR "%s: Could not receive buffer\n",dev->name);
-		spin_lock(reset_lock);
+		spin_lock(&reset_lock);
 		//reset(dev, UNKNOWN_DUPLEX);
-		spin_unlock(reset_lock);
+		spin_unlock(&reset_lock);
 
 		return;
 	}