3c59x with linuxppc

Andreas Tobler toa@pop.agri.ch
Mon May 8 14:47:29 2000



Bogdan Costescu wrote:
> 
> On Sat, 6 May 2000, Andreas Tobler wrote:
> 
> > In vortex_timer I had the blocker. At the end of the function I put the
> > following snippet in an if clause as it was before the patch. Doing so,
> > the machine doesn't hang anymore.
> >
> > if (next_tick) {                                      <---- added by me
> >       vp->timer.expires = RUN_AT(next_tick);
> >       add_timer(&vp->timer);
> > }                                                     <---- added by me
> 
> I don't quite understand how you got into this situation, because my
> source has these lines in it... I downloaded the whole driver (not the
> patch) - so there might be the difference. Please note that 0.99H that
> comes with kernels up to 2.2.15 is different from "clean" 0.99H that you
> get from Mr. Becker's site (timer handling included).
> 
???
I got the patch first, then the driver itself. Both are missing these
lines. 
And at last I got the 2.2.15 vanilla and patched with Alan's 2.2.16pre2.
Also missing these lines.

> On the other hand, I don't know why it gets there. next_tick is
> initialized ( 0 ) in the first lines of vortex_timer, but it should be set
> by the media handling according to the media table. Can you run the driver
> with vortex_debug > 2 and send the logs produced by vortex_timer?

Debug set to three.

May  8 20:38:52 pm7200 kernel: 3c59x.c:v0.99H 11/17/98 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html 
May  8 20:38:52 pm7200 kernel:   The PCI BIOS has not enabled the device
at 0/104. Updating PCI command 0004->0005. 
May  8 20:38:52 pm7200 kernel: eth1: 3Com 3c590 Vortex 10Mbps at 0x480, 
00:a0:24:7e:38:ab, IRQ 23 
May  8 20:38:52 pm7200 kernel:   Internal config register is 1020010,
transceivers 0xe138. 
May  8 20:38:52 pm7200 kernel:   8K byte-wide RAM 5:3 Rx:Tx split,
10baseT interface. 
May  8 20:38:52 pm7200 kernel: eth1: Overriding PCI latency timer (CFLT)
setting of 32, new value is 248. 
May  8 20:38:52 pm7200 kernel:   The PCI BIOS has not enabled the device
at 0/120. Updating PCI command 0014->0015. 
May  8 20:38:52 pm7200 kernel: eth2: 3Com 3c905B Cyclone 100baseTx at
0x400,  00:50:da:43:59:fd, IRQ 25 
May  8 20:38:52 pm7200 kernel:   Internal config register is 1800000,
transceivers 0xa. 
May  8 20:38:52 pm7200 kernel:   8K byte-wide RAM 5:3 Rx:Tx split,
10baseT interface. 
May  8 20:38:52 pm7200 kernel:   Enabling bus-master transmits and
whole-frame receives. 
May  8 20:38:52 pm7200 kernel: Partition check: 
May  8 20:38:52 pm7200 kernel:  sda: sda1 sda2 sda3 sda4 sda5 sda6 sda7 
May  8 20:38:52 pm7200 kernel:  sdb: sdb1 sdb2 sdb3 sdb4 sdb5 sdb6 sdb7
sdb8 
May  8 20:38:52 pm7200 kernel: VFS: Mounted root (ext2 filesystem)
readonly. 
May  8 20:38:52 pm7200 kernel: Freeing unused kernel memory: 144k init
32k prep 
May  8 20:38:52 pm7200 kernel: Adding Swap: 100412k swap-space (priority
-1) 
May  8 20:39:04 pm7200 kernel: nfsd_fh_init : initialized fhcache,
entries=1024 
May  8 20:39:51 pm7200 kernel: eth1: Initial media type 10baseT. 
May  8 20:39:51 pm7200 kernel: eth1: vortex_open() InternalConfig
01020010. 
May  8 20:39:51 pm7200 kernel: eth1: vortex_open() irq 23 media status
8800. 
May  8 20:39:53 pm7200 kernel: eth1: Media selection timer tick
happened, 10baseT. 
May  8 20:39:53 pm7200 kernel: eth1: Media 10baseT has link beat, 88c0. 
May  8 20:39:53 pm7200 kernel: eth1: Media selection timer finished,
10baseT. 
---> nothing more

> (One should appear very soon after the driver initialization and others
> every 1 minute - if things are working as they should...)
> A working vortex_timer (i.e. one that sets this variable correctly) is
> important for media change handling; what you have done with these lines
> is avoiding updating with wrong data - but we need to find out how that
> wrong data was produced. In your case, I would say that the timer is not
> updated, meaning that vortex_timer will not be run a second time... And
> there is a place in vortex_interrupt with a comment like this:
> 
> /* The timer will reenable interrupts. */
> 
> Only if it runs 8-)

Have to study the code again.
> 
> > But one more Q I have, why does this blocks only me with PPC and not the others?
> 
> The reason should be obvious now. 8-)
> Are you able to run the new driver (with spinlocks) with your
> modification?

My mods are the insl/outsl raplacements for PPC and the two lines above.
Means yes with spinlocking etc. (driver for kernel 2.2)

Thanks so far,

and best Regards,

Andreas
-------------------------------------------------------------------
To unsubscribe send a message body containing "unsubscribe"
to linux-vortex-request@beowulf.org