From: Pascal CHAPPERON <pascal.chapperon@wanadoo.fr>
To: Francois Romieu <romieu@fr.zoreil.com>
Cc: Juha Laiho <Juha.Laiho@iki.fi>,
Andrew Hutchings <info@a-wing.co.uk>,
linux-kernel@vger.kernel.org, vinay kumar <b4uvin@yahoo.co.in>,
jgarzik@pobox.com, pascal.chapperon@wanadoo.fr
Subject: Re: sis190
Date: Sun, 26 Jun 2005 14:39:54 +0200 (CEST) [thread overview]
Message-ID: <20935204.1119789594907.JavaMail.www@wwinf0901> (raw)
> Message du 22/06/05 01:02
> De : "Francois Romieu" <romieu@fr.zoreil.com>
[...]
> I have copied the sis190 patches at http://www.zoreil.com/~romieu/sis190
> if someone wants to hack them in the meantime.
1) sis190 freezes the box when kernel PREEMPT is enabled :
I made many tries, but i could not solve it;
- it does not occur while receiving huge files.
- it does not occur when only a few packets are
transmitted (remote connection, ls, find)
- it occurs only while transmiting huge files AND
trying to do someting else (open a new term,...)
- I could transfer a huge file (700MB) several times
as i was at the console (and i could switch to another
console to perform find, ls,... during the transfer).
I managed the system so the sis190 had its own IRQ, but it
made no difference.
As i suspected nvidia driver, i switched to nv driver : no result.
It seems to me that a task inside the sis190_tx_interrupt() is
not protected against preemption (and it is probably the same
on a SMP not prempted).
I tried to play with spinlocks, but with no result :
@@ -621,6 +621,7 @@ static irqreturn_t sis190_interrupt(int
void __iomem *ioaddr = tp->mmio_addr;
int handled = 0;
int boguscnt;
+ unsigned long flags;
for (boguscnt = max_interrupt_work; boguscnt > 0; boguscnt--) {
u32 status = SIS_R32(IntrStatus);
@@ -651,9 +652,9 @@ static irqreturn_t sis190_interrupt(int
sis190_rx_interrupt(dev, tp, ioaddr);
if (status & TxQ0Int) {
- spin_lock(&tp->lock);
+ spin_lock_irqsave(&tp->lock, flags);
sis190_tx_interrupt(dev, tp, ioaddr);
- spin_unlock(&tp->lock);
+ spin_unlock_irqrestore(&tp->lock, flags);
}
}
or :
@@ -581,6 +581,7 @@ static void sis190_tx_interrupt(struct n
struct sis190_private *tp, void __iomem *ioaddr)
{
unsigned int tx_left, dirty_tx = tp->dirty_tx;
+ unsigned long flags;
for (tx_left = tp->cur_tx - dirty_tx; tx_left > 0; tx_left--) {
unsigned int entry = dirty_tx % NUM_TX_DESC;
@@ -604,10 +605,12 @@ static void sis190_tx_interrupt(struct n
dirty_tx++;
}
+ spin_lock_irqsave(&tp->lock, flags);
if (tp->dirty_tx != dirty_tx) {
tp->dirty_tx = dirty_tx;
netif_wake_queue(dev);
}
+ spin_unlock_irqrestore(&tp->lock, flags);
}
/*
@@ -651,9 +654,7 @@ static irqreturn_t sis190_interrupt(int
sis190_rx_interrupt(dev, tp, ioaddr);
if (status & TxQ0Int) {
- spin_lock(&tp->lock);
sis190_tx_interrupt(dev, tp, ioaddr);
- spin_unlock(&tp->lock);
}
}
In fact, i don't know where are the critical sections...
2) sis190 freezes the box when the link partner is
a r8169 forced in 10 full autoneg off (preempted or not
preempted kernel) :
it is probably for the same reason, as it occurs only when
transmitting a big file.
3) poor TX performances when link partner is forced to
autoneg off (not preempted kernel):
Once again it seems that something goes wrong with TX tasks...
Regards
Pascal
next reply other threads:[~2005-06-26 12:41 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-26 12:39 Pascal CHAPPERON [this message]
2005-06-30 23:37 ` sis190 Francois Romieu
-- strict thread matches above, loose matches on Subject: below --
2005-07-10 13:23 sis190 Pascal CHAPPERON
2005-07-09 13:25 sis190 Pascal CHAPPERON
2005-07-09 20:57 ` sis190 Francois Romieu
2005-07-06 15:58 sis190 Pascal CHAPPERON
2005-07-06 21:29 ` sis190 Francois Romieu
2005-07-02 10:52 sis190 Pascal CHAPPERON
2005-07-02 11:33 ` sis190 Francois Romieu
2005-07-04 23:30 ` sis190 Francois Romieu
2005-06-19 10:17 sis190 Pascal CHAPPERON
2005-06-21 23:02 ` sis190 Francois Romieu
2005-06-17 11:14 sis190 Pascal CHAPPERON
2005-06-17 18:22 ` sis190 Francois Romieu
2005-06-15 15:22 sis190 Pascal CHAPPERON
2005-06-16 22:34 ` sis190 Francois Romieu
2005-06-14 14:14 sis190 Pascal CHAPPERON
2005-06-14 20:04 ` sis190 Francois Romieu
2005-06-13 8:19 sis190 Pascal CHAPPERON
2005-06-13 21:39 ` sis190 Francois Romieu
2005-06-11 9:39 sis190 Pascal CHAPPERON
2005-06-11 10:56 ` sis190 Francois Romieu
2005-06-07 22:37 sis5513.c patch Andrew Hutchings
2005-06-07 22:57 ` Francois Romieu
2005-06-07 23:20 ` Andrew Hutchings
2005-06-08 22:51 ` sis190 (was: Re: sis5513.c patch) Francois Romieu
2005-06-09 4:54 ` sis190 Andrew Hutchings
2005-06-09 12:02 ` sis190 Andrew Hutchings
2005-06-09 21:18 ` sis190 Francois Romieu
2005-06-10 13:55 ` sis190 Andrew Hutchings
2005-06-10 23:41 ` sis190 Francois Romieu
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=20935204.1119789594907.JavaMail.www@wwinf0901 \
--to=pascal.chapperon@wanadoo.fr \
--cc=Juha.Laiho@iki.fi \
--cc=b4uvin@yahoo.co.in \
--cc=info@a-wing.co.uk \
--cc=jgarzik@pobox.com \
--cc=linux-kernel@vger.kernel.org \
--cc=romieu@fr.zoreil.com \
/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.