netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* odd RTL8139 quirk.
@ 2008-04-29 17:14 Dave Jones
  2008-04-29 19:37 ` Jeff Garzik
  0 siblings, 1 reply; 30+ messages in thread
From: Dave Jones @ 2008-04-29 17:14 UTC (permalink / raw)
  To: netdev

I've just been playing with a model 2 OQO, which has an RTL8139.
It gets detected just fine, though it doesn't actually work..

eth0: RealTek RTL8139 at 0xf8830000, 00:00:00:00:00:00, IRQ 18
eth0:  Identified 8139 chip type 'RTL-8139'

The null MAC address being one clue.  Another oddity is that
ethtool reports that there's no link detected, even though there is.
(Enough for it to PXE boot a kernel from at least :)

Futzing with the debug= modparam didn't yield anything extra at all.

Any clues?

	Dave

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: odd RTL8139 quirk.
  2008-04-29 17:14 odd RTL8139 quirk Dave Jones
@ 2008-04-29 19:37 ` Jeff Garzik
  2008-04-29 19:47   ` Dave Jones
  2008-04-29 21:56   ` Dave Jones
  0 siblings, 2 replies; 30+ messages in thread
From: Jeff Garzik @ 2008-04-29 19:37 UTC (permalink / raw)
  To: Dave Jones; +Cc: netdev

Dave Jones wrote:
> I've just been playing with a model 2 OQO, which has an RTL8139.
> It gets detected just fine, though it doesn't actually work..
> 
> eth0: RealTek RTL8139 at 0xf8830000, 00:00:00:00:00:00, IRQ 18
> eth0:  Identified 8139 chip type 'RTL-8139'
> 
> The null MAC address being one clue.  Another oddity is that
> ethtool reports that there's no link detected, even though there is.
> (Enough for it to PXE boot a kernel from at least :)
> 
> Futzing with the debug= modparam didn't yield anything extra at all.
> 
> Any clues?

Sounds like a broken EEPROM.  Does supplying a MAC via ifconfig prior to 
'ifconfig ... up' help?

	Jeff




^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: odd RTL8139 quirk.
  2008-04-29 19:37 ` Jeff Garzik
@ 2008-04-29 19:47   ` Dave Jones
  2008-04-29 21:56   ` Dave Jones
  1 sibling, 0 replies; 30+ messages in thread
From: Dave Jones @ 2008-04-29 19:47 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

On Tue, Apr 29, 2008 at 03:37:41PM -0400, Jeff Garzik wrote:
 > Dave Jones wrote:
 > > I've just been playing with a model 2 OQO, which has an RTL8139.
 > > It gets detected just fine, though it doesn't actually work..
 > > 
 > > eth0: RealTek RTL8139 at 0xf8830000, 00:00:00:00:00:00, IRQ 18
 > > eth0:  Identified 8139 chip type 'RTL-8139'
 > > 
 > > The null MAC address being one clue.  Another oddity is that
 > > ethtool reports that there's no link detected, even though there is.
 > > (Enough for it to PXE boot a kernel from at least :)
 > > 
 > > Futzing with the debug= modparam didn't yield anything extra at all.
 > > 
 > > Any clues?
 > 
 > Sounds like a broken EEPROM.

Not that it counts for much, but the NIC works fine in the vista install
that it came with.

 >  Does supplying a MAC via ifconfig prior to 'ifconfig ... up' help?

That fails spectacularly with 'eth0: PCI Bus error 0290' after I do the 'up'
Someone suggested that the PHY isn't being detected.
I don't get any of the MII messages from rtl8139_init_one()
Which is odd (to me at least) as ethtool reports MII as a supported port,
(and even has it as the 'current' port).

	Dave

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: odd RTL8139 quirk.
  2008-04-29 19:37 ` Jeff Garzik
  2008-04-29 19:47   ` Dave Jones
@ 2008-04-29 21:56   ` Dave Jones
  2008-04-29 22:04     ` Jeff Garzik
  1 sibling, 1 reply; 30+ messages in thread
From: Dave Jones @ 2008-04-29 21:56 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

On Tue, Apr 29, 2008 at 03:37:41PM -0400, Jeff Garzik wrote:
 > Dave Jones wrote:
 > > I've just been playing with a model 2 OQO, which has an RTL8139.
 > > It gets detected just fine, though it doesn't actually work..
 > > 
 > > eth0: RealTek RTL8139 at 0xf8830000, 00:00:00:00:00:00, IRQ 18
 > > eth0:  Identified 8139 chip type 'RTL-8139'
 > > 
 > > The null MAC address being one clue.  Another oddity is that
 > > ethtool reports that there's no link detected, even though there is.
 > > (Enough for it to PXE boot a kernel from at least :)
 > > 
 > > Futzing with the debug= modparam didn't yield anything extra at all.
 > > 
 > > Any clues?
 > 
 > Sounds like a broken EEPROM.  Does supplying a MAC via ifconfig prior to 
 > 'ifconfig ... up' help?

Ah. This sounds enlightening: http://www.oqotalk.com/index.php/topic,1511.0.html
Seems a shame to have to choose PIO vs MMIO for a distro kernel though.
Would there be any objection to turning that into a modparam ?
(If we wanted to get really fancy, we could even quirk around it automatically
 when we detect broken hardware).

Thoughts?

	Dave

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: odd RTL8139 quirk.
  2008-04-29 21:56   ` Dave Jones
@ 2008-04-29 22:04     ` Jeff Garzik
  2008-04-29 22:10       ` Dave Jones
  2008-04-29 22:32       ` Andrew Morton
  0 siblings, 2 replies; 30+ messages in thread
From: Jeff Garzik @ 2008-04-29 22:04 UTC (permalink / raw)
  To: Dave Jones; +Cc: netdev, Andrew Morton

Dave Jones wrote:
> On Tue, Apr 29, 2008 at 03:37:41PM -0400, Jeff Garzik wrote:
>  > Dave Jones wrote:
>  > > I've just been playing with a model 2 OQO, which has an RTL8139.
>  > > It gets detected just fine, though it doesn't actually work..
>  > > 
>  > > eth0: RealTek RTL8139 at 0xf8830000, 00:00:00:00:00:00, IRQ 18
>  > > eth0:  Identified 8139 chip type 'RTL-8139'
>  > > 
>  > > The null MAC address being one clue.  Another oddity is that
>  > > ethtool reports that there's no link detected, even though there is.
>  > > (Enough for it to PXE boot a kernel from at least :)
>  > > 
>  > > Futzing with the debug= modparam didn't yield anything extra at all.
>  > > 
>  > > Any clues?
>  > 
>  > Sounds like a broken EEPROM.  Does supplying a MAC via ifconfig prior to 
>  > 'ifconfig ... up' help?
> 
> Ah. This sounds enlightening: http://www.oqotalk.com/index.php/topic,1511.0.html
> Seems a shame to have to choose PIO vs MMIO for a distro kernel though.
> Would there be any objection to turning that into a modparam ?
> (If we wanted to get really fancy, we could even quirk around it automatically
>  when we detect broken hardware).

Something like this?  :)

http://www.linux.sgi.com/archives/netdev/2004-11/msg00226.html

It did not go upstream but it needed some init-time bug fixing, IIRC. 
Maybe akpm remembers more why my patch sucked... :)

	Jeff




^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: odd RTL8139 quirk.
  2008-04-29 22:04     ` Jeff Garzik
@ 2008-04-29 22:10       ` Dave Jones
  2008-04-29 22:19         ` Jeff Garzik
  2008-04-29 22:32       ` Andrew Morton
  1 sibling, 1 reply; 30+ messages in thread
From: Dave Jones @ 2008-04-29 22:10 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev, Andrew Morton

On Tue, Apr 29, 2008 at 06:04:06PM -0400, Jeff Garzik wrote:
 > Dave Jones wrote:
 > > On Tue, Apr 29, 2008 at 03:37:41PM -0400, Jeff Garzik wrote:
 > >  > Dave Jones wrote:
 > >  > > I've just been playing with a model 2 OQO, which has an RTL8139.
 > >  > > It gets detected just fine, though it doesn't actually work..
 > >  > > 
 > >  > > eth0: RealTek RTL8139 at 0xf8830000, 00:00:00:00:00:00, IRQ 18
 > >  > > eth0:  Identified 8139 chip type 'RTL-8139'
 > >  > > 
 > >  > > The null MAC address being one clue.  Another oddity is that
 > >  > > ethtool reports that there's no link detected, even though there is.
 > >  > > (Enough for it to PXE boot a kernel from at least :)
 > >  > > 
 > >  > > Futzing with the debug= modparam didn't yield anything extra at all.
 > >  > > 
 > >  > > Any clues?
 > >  > 
 > >  > Sounds like a broken EEPROM.  Does supplying a MAC via ifconfig prior to 
 > >  > 'ifconfig ... up' help?
 > > 
 > > Ah. This sounds enlightening: http://www.oqotalk.com/index.php/topic,1511.0.html
 > > Seems a shame to have to choose PIO vs MMIO for a distro kernel though.
 > > Would there be any objection to turning that into a modparam ?
 > > (If we wanted to get really fancy, we could even quirk around it automatically
 > >  when we detect broken hardware).
 > 
 > Something like this?  :)
 > 
 > http://www.linux.sgi.com/archives/netdev/2004-11/msg00226.html

>From a quick eyeball, that would seem that it still requires a choice
to be made whether or not to enable CONFIG_8139TOO_PIO
What I had in mind was to make that whole USE_IO_OPS ifdef
(and related bits) if (modparm==.. instead of #ifdefs.

	Dave

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: odd RTL8139 quirk.
  2008-04-29 22:10       ` Dave Jones
@ 2008-04-29 22:19         ` Jeff Garzik
  2008-04-29 22:28           ` Dave Jones
  0 siblings, 1 reply; 30+ messages in thread
From: Jeff Garzik @ 2008-04-29 22:19 UTC (permalink / raw)
  To: Dave Jones; +Cc: netdev, Andrew Morton

Dave Jones wrote:
>>From a quick eyeball, that would seem that it still requires a choice
> to be made whether or not to enable CONFIG_8139TOO_PIO
> What I had in mind was to make that whole USE_IO_OPS ifdef
> (and related bits) if (modparm==.. instead of #ifdefs.


The patch is the requisite groundwork to add such a module param... 
iomap support is required to enable runtime rather than compile-time 
MMIO/PIO switching.

e100 does this with the 'use_io' module param.

	Jeff




^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: odd RTL8139 quirk.
  2008-04-29 22:19         ` Jeff Garzik
@ 2008-04-29 22:28           ` Dave Jones
  2008-04-29 22:33             ` Jeff Garzik
  0 siblings, 1 reply; 30+ messages in thread
From: Dave Jones @ 2008-04-29 22:28 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev, Andrew Morton

On Tue, Apr 29, 2008 at 06:19:46PM -0400, Jeff Garzik wrote:
 > Dave Jones wrote:
 > >>From a quick eyeball, that would seem that it still requires a choice
 > > to be made whether or not to enable CONFIG_8139TOO_PIO
 > > What I had in mind was to make that whole USE_IO_OPS ifdef
 > > (and related bits) if (modparm==.. instead of #ifdefs.
 > 
 > 
 > The patch is the requisite groundwork to add such a module param... 
 > iomap support is required to enable runtime rather than compile-time 
 > MMIO/PIO switching.
 > 
 > e100 does this with the 'use_io' module param.

Ah, in which case, I endorse this proposal heartily :)

	Dave

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: odd RTL8139 quirk.
  2008-04-29 22:04     ` Jeff Garzik
  2008-04-29 22:10       ` Dave Jones
@ 2008-04-29 22:32       ` Andrew Morton
  2008-04-30 11:13         ` Jeff Garzik
  1 sibling, 1 reply; 30+ messages in thread
From: Andrew Morton @ 2008-04-29 22:32 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: davej, netdev

On Tue, 29 Apr 2008 18:04:06 -0400
Jeff Garzik <jeff@garzik.org> wrote:

> Dave Jones wrote:
> > On Tue, Apr 29, 2008 at 03:37:41PM -0400, Jeff Garzik wrote:
> >  > Dave Jones wrote:
> >  > > I've just been playing with a model 2 OQO, which has an RTL8139.
> >  > > It gets detected just fine, though it doesn't actually work..
> >  > > 
> >  > > eth0: RealTek RTL8139 at 0xf8830000, 00:00:00:00:00:00, IRQ 18
> >  > > eth0:  Identified 8139 chip type 'RTL-8139'
> >  > > 
> >  > > The null MAC address being one clue.  Another oddity is that
> >  > > ethtool reports that there's no link detected, even though there is.
> >  > > (Enough for it to PXE boot a kernel from at least :)
> >  > > 
> >  > > Futzing with the debug= modparam didn't yield anything extra at all.
> >  > > 
> >  > > Any clues?
> >  > 
> >  > Sounds like a broken EEPROM.  Does supplying a MAC via ifconfig prior to 
> >  > 'ifconfig ... up' help?
> > 
> > Ah. This sounds enlightening: http://www.oqotalk.com/index.php/topic,1511.0.html
> > Seems a shame to have to choose PIO vs MMIO for a distro kernel though.
> > Would there be any objection to turning that into a modparam ?
> > (If we wanted to get really fancy, we could even quirk around it automatically
> >  when we detect broken hardware).
> 
> Something like this?  :)
> 
> http://www.linux.sgi.com/archives/netdev/2004-11/msg00226.html
> 
> It did not go upstream but it needed some init-time bug fixing, IIRC. 
> Maybe akpm remembers more why my patch sucked... :)

Apart from its From: address you mean? ;)

I can find no record, sorry.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: odd RTL8139 quirk.
  2008-04-29 22:28           ` Dave Jones
@ 2008-04-29 22:33             ` Jeff Garzik
  0 siblings, 0 replies; 30+ messages in thread
From: Jeff Garzik @ 2008-04-29 22:33 UTC (permalink / raw)
  To: Dave Jones; +Cc: netdev, Andrew Morton

Dave Jones wrote:
> On Tue, Apr 29, 2008 at 06:19:46PM -0400, Jeff Garzik wrote:
>  > Dave Jones wrote:
>  > >>From a quick eyeball, that would seem that it still requires a choice
>  > > to be made whether or not to enable CONFIG_8139TOO_PIO
>  > > What I had in mind was to make that whole USE_IO_OPS ifdef
>  > > (and related bits) if (modparm==.. instead of #ifdefs.
>  > 
>  > 
>  > The patch is the requisite groundwork to add such a module param... 
>  > iomap support is required to enable runtime rather than compile-time 
>  > MMIO/PIO switching.
>  > 
>  > e100 does this with the 'use_io' module param.
> 
> Ah, in which case, I endorse this proposal heartily :)

Is that endorsement perchance accompanied by the time to resurrect the 
patch?  :)

Also, specifically with your hardware, one would hope we could figure 
out some automatic way for the driver to detect the hardware and 
configure it accordingly.

	Jeff





^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: odd RTL8139 quirk.
  2008-04-29 22:32       ` Andrew Morton
@ 2008-04-30 11:13         ` Jeff Garzik
  2008-04-30 15:19           ` Stephen Hemminger
                             ` (3 more replies)
  0 siblings, 4 replies; 30+ messages in thread
From: Jeff Garzik @ 2008-04-30 11:13 UTC (permalink / raw)
  To: Andrew Morton; +Cc: davej, netdev

Andrew Morton wrote:
> On Tue, 29 Apr 2008 18:04:06 -0400
> Jeff Garzik <jeff@garzik.org> wrote:
> 
>> Dave Jones wrote:
>>> On Tue, Apr 29, 2008 at 03:37:41PM -0400, Jeff Garzik wrote:
>>>  > Dave Jones wrote:
>>>  > > I've just been playing with a model 2 OQO, which has an RTL8139.
>>>  > > It gets detected just fine, though it doesn't actually work..
>>>  > > 
>>>  > > eth0: RealTek RTL8139 at 0xf8830000, 00:00:00:00:00:00, IRQ 18
>>>  > > eth0:  Identified 8139 chip type 'RTL-8139'
>>>  > > 
>>>  > > The null MAC address being one clue.  Another oddity is that
>>>  > > ethtool reports that there's no link detected, even though there is.
>>>  > > (Enough for it to PXE boot a kernel from at least :)
>>>  > > 
>>>  > > Futzing with the debug= modparam didn't yield anything extra at all.
>>>  > > 
>>>  > > Any clues?
>>>  > 
>>>  > Sounds like a broken EEPROM.  Does supplying a MAC via ifconfig prior to 
>>>  > 'ifconfig ... up' help?
>>>
>>> Ah. This sounds enlightening: http://www.oqotalk.com/index.php/topic,1511.0.html
>>> Seems a shame to have to choose PIO vs MMIO for a distro kernel though.
>>> Would there be any objection to turning that into a modparam ?
>>> (If we wanted to get really fancy, we could even quirk around it automatically
>>>  when we detect broken hardware).
>> Something like this?  :)
>>
>> http://www.linux.sgi.com/archives/netdev/2004-11/msg00226.html
>>
>> It did not go upstream but it needed some init-time bug fixing, IIRC. 
>> Maybe akpm remembers more why my patch sucked... :)
> 
> Apart from its From: address you mean? ;)
> 
> I can find no record, sorry.

Yeah, it was in -mm for a while (via netdev-2.6.git#ALL most likely), 
and a -mm tester reported that it consistently oops for him, or 
something along those lines.

You continually (and rightly!) pestered me about it, and I withdrew the 
patch from -mm since I didn't have time to futz with it.

	Jeff



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: odd RTL8139 quirk.
  2008-04-30 11:13         ` Jeff Garzik
@ 2008-04-30 15:19           ` Stephen Hemminger
  2008-05-29 15:06           ` Dave Jones
                             ` (2 subsequent siblings)
  3 siblings, 0 replies; 30+ messages in thread
From: Stephen Hemminger @ 2008-04-30 15:19 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, davej, netdev

On Wed, 30 Apr 2008 07:13:48 -0400
Jeff Garzik <jeff@garzik.org> wrote:

> Andrew Morton wrote:
> > On Tue, 29 Apr 2008 18:04:06 -0400
> > Jeff Garzik <jeff@garzik.org> wrote:
> > 
> >> Dave Jones wrote:
> >>> On Tue, Apr 29, 2008 at 03:37:41PM -0400, Jeff Garzik wrote:
> >>>  > Dave Jones wrote:
> >>>  > > I've just been playing with a model 2 OQO, which has an RTL8139.
> >>>  > > It gets detected just fine, though it doesn't actually work..
> >>>  > > 
> >>>  > > eth0: RealTek RTL8139 at 0xf8830000, 00:00:00:00:00:00, IRQ 18
> >>>  > > eth0:  Identified 8139 chip type 'RTL-8139'
> >>>  > > 
> >>>  > > The null MAC address being one clue.  Another oddity is that
> >>>  > > ethtool reports that there's no link detected, even though there is.
> >>>  > > (Enough for it to PXE boot a kernel from at least :)
> >>>  > > 
> >>>  > > Futzing with the debug= modparam didn't yield anything extra at all.
> >>>  > > 
> >>>  > > Any clues?
> >>>  > 
> >>>  > Sounds like a broken EEPROM.  Does supplying a MAC via ifconfig prior to 
> >>>  > 'ifconfig ... up' help?
> >>>
> >>> Ah. This sounds enlightening: http://www.oqotalk.com/index.php/topic,1511.0.html
> >>> Seems a shame to have to choose PIO vs MMIO for a distro kernel though.
> >>> Would there be any objection to turning that into a modparam ?
> >>> (If we wanted to get really fancy, we could even quirk around it automatically
> >>>  when we detect broken hardware).
> >> Something like this?  :)
> >>
> >> http://www.linux.sgi.com/archives/netdev/2004-11/msg00226.html
> >>
> >> It did not go upstream but it needed some init-time bug fixing, IIRC. 
> >> Maybe akpm remembers more why my patch sucked... :)
> > 
> > Apart from its From: address you mean? ;)
> > 
> > I can find no record, sorry.
> 
> Yeah, it was in -mm for a while (via netdev-2.6.git#ALL most likely), 
> and a -mm tester reported that it consistently oops for him, or 
> something along those lines.
> 
> You continually (and rightly!) pestered me about it, and I withdrew the 
> patch from -mm since I didn't have time to futz with it.

Is there any possibility for the driver to discover broken MMIO at runtime?
Could it look for some portion like mac address or HW_REVID being all zeros or all ones?

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: odd RTL8139 quirk.
  2008-04-30 11:13         ` Jeff Garzik
  2008-04-30 15:19           ` Stephen Hemminger
@ 2008-05-29 15:06           ` Dave Jones
  2008-05-29 15:07           ` [PATCH 1/2] 8139too: Make PIO/MMIO a modparam Dave Jones
  2008-05-29 15:08           ` [PATCH 2/2] 8139too: Make the OQO2 automatically use PIO mode Dave Jones
  3 siblings, 0 replies; 30+ messages in thread
From: Dave Jones @ 2008-05-29 15:06 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, netdev

On Wed, Apr 30, 2008 at 07:13:48AM -0400, Jeff Garzik wrote:
 > Andrew Morton wrote:
 > > On Tue, 29 Apr 2008 18:04:06 -0400
 > > Jeff Garzik <jeff@garzik.org> wrote:
 > > 
 > >> Dave Jones wrote:
 > >>> On Tue, Apr 29, 2008 at 03:37:41PM -0400, Jeff Garzik wrote:
 > >>>  > Dave Jones wrote:
 > >>>  > > I've just been playing with a model 2 OQO, which has an RTL8139.
 > >>>  > > It gets detected just fine, though it doesn't actually work..
 > >>>  > > 
 > >>>  > > eth0: RealTek RTL8139 at 0xf8830000, 00:00:00:00:00:00, IRQ 18
 > >>>  > > eth0:  Identified 8139 chip type 'RTL-8139'
 > >>>  > > 
 > >>>  > > The null MAC address being one clue.  Another oddity is that
 > >>>  > > ethtool reports that there's no link detected, even though there is.
 > >>>  > > (Enough for it to PXE boot a kernel from at least :)
 > >>>  > > 
 > >>>  > > Futzing with the debug= modparam didn't yield anything extra at all.
 > >>>  > > 
 > >>>  > > Any clues?
 > >>>  > 
 > >>>  > Sounds like a broken EEPROM.  Does supplying a MAC via ifconfig prior to 
 > >>>  > 'ifconfig ... up' help?
 > >>>
 > >>> Ah. This sounds enlightening: http://www.oqotalk.com/index.php/topic,1511.0.html
 > >>> Seems a shame to have to choose PIO vs MMIO for a distro kernel though.
 > >>> Would there be any objection to turning that into a modparam ?
 > >>> (If we wanted to get really fancy, we could even quirk around it automatically
 > >>>  when we detect broken hardware).
 > >> Something like this?  :)
 > >>
 > >> http://www.linux.sgi.com/archives/netdev/2004-11/msg00226.html
 > >>
 > >> It did not go upstream but it needed some init-time bug fixing, IIRC. 
 > >> Maybe akpm remembers more why my patch sucked... :)
 > > 
 > > Apart from its From: address you mean? ;)
 > > 
 > > I can find no record, sorry.
 > 
 > Yeah, it was in -mm for a while (via netdev-2.6.git#ALL most likely), 
 > and a -mm tester reported that it consistently oops for him, or 
 > something along those lines.
 > 
 > You continually (and rightly!) pestered me about it, and I withdrew the 
 > patch from -mm since I didn't have time to futz with it.

So I got back to looking at this problem yesterday.
Turns out the patch you reference above was merged back in 2005 :-)
See commit 22f714b64b55012fa4e0d77132fa82719180f994

On top of this, it turns out to be really easy to make this a runtime
modparam.  I now have the OQO2 up and running with working ethernet.
Patches to follow.

	Dave

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-04-30 11:13         ` Jeff Garzik
  2008-04-30 15:19           ` Stephen Hemminger
  2008-05-29 15:06           ` Dave Jones
@ 2008-05-29 15:07           ` Dave Jones
  2008-05-29 18:18             ` Jeff Garzik
  2008-05-29 15:08           ` [PATCH 2/2] 8139too: Make the OQO2 automatically use PIO mode Dave Jones
  3 siblings, 1 reply; 30+ messages in thread
From: Dave Jones @ 2008-05-29 15:07 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, netdev

Make PIO/MMIO a runtime thing via a module parameter.
This is needed to support devices that only work with PIO
without penalising devices that work fine with MMIO in
distro kernels.

Signed-off-by: Dave Jones <davej@redhat.com>

diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
index 53bd903..09ace39 100644
--- a/drivers/net/8139too.c
+++ b/drivers/net/8139too.c
@@ -120,11 +120,6 @@
                                  NETIF_MSG_LINK)
 
 
-/* enable PIO instead of MMIO, if CONFIG_8139TOO_PIO is selected */
-#ifdef CONFIG_8139TOO_PIO
-#define USE_IO_OPS 1
-#endif
-
 /* define to 1, 2 or 3 to enable copious debugging info */
 #define RTL8139_DEBUG 0
 
@@ -156,6 +151,9 @@
 static int media[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
 static int full_duplex[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
 
+/* Whether to use MMIO or PIO. Default to MMIO. */
+static int use_pio;
+
 /* Maximum number of multicast addresses to filter (vs. Rx-all-multicast).
    The RTL chips use a 64 element hash table based on the Ethernet CRC.  */
 static int multicast_filter_limit = 32;
@@ -615,6 +613,7 @@ MODULE_DESCRIPTION ("RealTek RTL-8139 Fast Ethernet driver");
 MODULE_LICENSE("GPL");
 MODULE_VERSION(DRV_VERSION);
 
+module_param(use_pio, int, 0);
 module_param(multicast_filter_limit, int, 0);
 module_param_array(media, int, NULL, 0);
 module_param_array(full_duplex, int, NULL, 0);
@@ -710,14 +709,13 @@ static void __rtl8139_cleanup_dev (struct net_device *dev)
 	assert (tp->pci_dev != NULL);
 	pdev = tp->pci_dev;
 
-#ifdef USE_IO_OPS
-	if (tp->mmio_addr)
-		ioport_unmap (tp->mmio_addr);
-#else
-	if (tp->mmio_addr)
-		pci_iounmap (pdev, tp->mmio_addr);
-#endif /* USE_IO_OPS */
-
+	if (use_pio) {
+		if (tp->mmio_addr)
+			ioport_unmap (tp->mmio_addr);
+	} else {
+		if (tp->mmio_addr)
+			pci_iounmap (pdev, tp->mmio_addr);
+	}
 	/* it's ok to call this even if we have no regions to free */
 	pci_release_regions (pdev);
 
@@ -791,32 +789,32 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev,
 	DPRINTK("PIO region size == 0x%02X\n", pio_len);
 	DPRINTK("MMIO region size == 0x%02lX\n", mmio_len);
 
-#ifdef USE_IO_OPS
-	/* make sure PCI base addr 0 is PIO */
-	if (!(pio_flags & IORESOURCE_IO)) {
-		dev_err(&pdev->dev, "region #0 not a PIO resource, aborting\n");
-		rc = -ENODEV;
-		goto err_out;
-	}
-	/* check for weird/broken PCI region reporting */
-	if (pio_len < RTL_MIN_IO_SIZE) {
-		dev_err(&pdev->dev, "Invalid PCI I/O region size(s), aborting\n");
-		rc = -ENODEV;
-		goto err_out;
-	}
-#else
-	/* make sure PCI base addr 1 is MMIO */
-	if (!(mmio_flags & IORESOURCE_MEM)) {
-		dev_err(&pdev->dev, "region #1 not an MMIO resource, aborting\n");
-		rc = -ENODEV;
-		goto err_out;
-	}
-	if (mmio_len < RTL_MIN_IO_SIZE) {
-		dev_err(&pdev->dev, "Invalid PCI mem region size(s), aborting\n");
-		rc = -ENODEV;
-		goto err_out;
+	if (use_pio) {
+		/* make sure PCI base addr 0 is PIO */
+		if (!(pio_flags & IORESOURCE_IO)) {
+			dev_err(&pdev->dev, "region #0 not a PIO resource, aborting\n");
+			rc = -ENODEV;
+			goto err_out;
+		}
+		/* check for weird/broken PCI region reporting */
+		if (pio_len < RTL_MIN_IO_SIZE) {
+			dev_err(&pdev->dev, "Invalid PCI I/O region size(s), aborting\n");
+			rc = -ENODEV;
+			goto err_out;
+		}
+	} else {
+		/* make sure PCI base addr 1 is MMIO */
+		if (!(mmio_flags & IORESOURCE_MEM)) {
+			dev_err(&pdev->dev, "region #1 not an MMIO resource, aborting\n");
+			rc = -ENODEV;
+			goto err_out;
+		}
+		if (mmio_len < RTL_MIN_IO_SIZE) {
+			dev_err(&pdev->dev, "Invalid PCI mem region size(s), aborting\n");
+			rc = -ENODEV;
+			goto err_out;
+		}
 	}
-#endif
 
 	rc = pci_request_regions (pdev, DRV_NAME);
 	if (rc)
@@ -826,28 +824,28 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev,
 	/* enable PCI bus-mastering */
 	pci_set_master (pdev);
 
-#ifdef USE_IO_OPS
-	ioaddr = ioport_map(pio_start, pio_len);
-	if (!ioaddr) {
-		dev_err(&pdev->dev, "cannot map PIO, aborting\n");
-		rc = -EIO;
-		goto err_out;
-	}
-	dev->base_addr = pio_start;
-	tp->mmio_addr = ioaddr;
-	tp->regs_len = pio_len;
-#else
-	/* ioremap MMIO region */
-	ioaddr = pci_iomap(pdev, 1, 0);
-	if (ioaddr == NULL) {
-		dev_err(&pdev->dev, "cannot remap MMIO, aborting\n");
-		rc = -EIO;
-		goto err_out;
+	if (use_pio) {
+		ioaddr = ioport_map(pio_start, pio_len);
+		if (!ioaddr) {
+			dev_err(&pdev->dev, "cannot map PIO, aborting\n");
+			rc = -EIO;
+			goto err_out;
+		}
+		dev->base_addr = pio_start;
+		tp->mmio_addr = ioaddr;
+		tp->regs_len = pio_len;
+	} else {
+		/* ioremap MMIO region */
+		ioaddr = pci_iomap(pdev, 1, 0);
+		if (ioaddr == NULL) {
+			dev_err(&pdev->dev, "cannot remap MMIO, aborting\n");
+			rc = -EIO;
+			goto err_out;
+		}
+		dev->base_addr = (long) ioaddr;
+		tp->mmio_addr = ioaddr;
+		tp->regs_len = mmio_len;
 	}
-	dev->base_addr = (long) ioaddr;
-	tp->mmio_addr = ioaddr;
-	tp->regs_len = mmio_len;
-#endif /* USE_IO_OPS */
 
 	/* Bring old chips out of low-power mode. */
 	RTL_W8 (HltClk, 'R');
@@ -2383,20 +2381,24 @@ static void rtl8139_set_msglevel(struct net_device *dev, u32 datum)
 	np->msg_enable = datum;
 }
 
-/* TODO: we are too slack to do reg dumping for pio, for now */
-#ifdef CONFIG_8139TOO_PIO
-#define rtl8139_get_regs_len	NULL
-#define rtl8139_get_regs	NULL
-#else
 static int rtl8139_get_regs_len(struct net_device *dev)
 {
-	struct rtl8139_private *np = netdev_priv(dev);
+	struct rtl8139_private *np;
+	/* TODO: we are too slack to do reg dumping for pio, for now */
+	if (use_pio)
+		return 0;
+	np = netdev_priv(dev);
 	return np->regs_len;
 }
 
 static void rtl8139_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *regbuf)
 {
-	struct rtl8139_private *np = netdev_priv(dev);
+	struct rtl8139_private *np;
+
+	/* TODO: we are too slack to do reg dumping for pio, for now */
+	if (use_pio)
+		return;
+	np = netdev_priv(dev);
 
 	regs->version = RTL_REGS_VER;
 
@@ -2404,7 +2406,6 @@ static void rtl8139_get_regs(struct net_device *dev, struct ethtool_regs *regs,
 	memcpy_fromio(regbuf, np->mmio_addr, regs->len);
 	spin_unlock_irq(&np->lock);
 }
-#endif /* CONFIG_8139TOO_MMIO */
 
 static int rtl8139_get_sset_count(struct net_device *dev, int sset)
 {
@@ -2610,6 +2611,11 @@ static int __init rtl8139_init_module (void)
 	printk (KERN_INFO RTL8139_DRIVER_NAME "\n");
 #endif
 
+	/* enable PIO instead of MMIO, if CONFIG_8139TOO_PIO is selected */
+#ifdef CONFIG_8139TOO_PIO
+	use_pio = 1;
+#endif
+
 	return pci_register_driver(&rtl8139_pci_driver);
 }
 

-- 
http://www.codemonkey.org.uk

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 2/2] 8139too: Make the OQO2 automatically use PIO mode.
  2008-04-30 11:13         ` Jeff Garzik
                             ` (2 preceding siblings ...)
  2008-05-29 15:07           ` [PATCH 1/2] 8139too: Make PIO/MMIO a modparam Dave Jones
@ 2008-05-29 15:08           ` Dave Jones
  2008-05-29 18:21             ` Jeff Garzik
  3 siblings, 1 reply; 30+ messages in thread
From: Dave Jones @ 2008-05-29 15:08 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, netdev

The OQO model 2 has an RTL8139 from Atheros that doesn't like MMIO.
Force it to always use polled IO.

Signed-off-by: Dave Jones <davej@redhat.com>

--- linux-2.6.25.noarch/drivers/net/8139too.c~	2008-05-28 21:07:36.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/8139too.c	2008-05-28 21:19:57.000000000 -0400
@@ -951,6 +951,14 @@ static int __devinit rtl8139_init_one (s
 			   "Use the \"8139cp\" driver for improved performance and stability.\n");
 	}
 
+	if (pdev->vendor == PCI_VENDOR_ID_REALTEK &&
+	    pdev->device == PCI_DEVICE_ID_REALTEK_8139 &&
+	    pdev->subsystem_vendor == PCI_VENDOR_ID_ATHEROS &&
+	    pdev->subsystem_device == PCI_DEVICE_ID_REALTEK_8139) {
+		printk(KERN_INFO "8139too: OQO Model 2 detected. Forcing PIO\n");
+		use_pio = 1;
+	}
+
 	i = rtl8139_init_board (pdev, &dev);
 	if (i < 0)
 		return i;

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-05-29 15:07           ` [PATCH 1/2] 8139too: Make PIO/MMIO a modparam Dave Jones
@ 2008-05-29 18:18             ` Jeff Garzik
  2008-05-29 18:41               ` Dave Jones
  0 siblings, 1 reply; 30+ messages in thread
From: Jeff Garzik @ 2008-05-29 18:18 UTC (permalink / raw)
  To: Dave Jones; +Cc: Andrew Morton, netdev

Dave Jones wrote:
> Make PIO/MMIO a runtime thing via a module parameter.
> This is needed to support devices that only work with PIO
> without penalising devices that work fine with MMIO in
> distro kernels.
> 
> Signed-off-by: Dave Jones <davej@redhat.com>

two comments:

1) should use pci_iomap() for both PIO and MMIO

2) modparam should be "use_io" mirroring existing drivers



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 2/2] 8139too: Make the OQO2 automatically use PIO mode.
  2008-05-29 15:08           ` [PATCH 2/2] 8139too: Make the OQO2 automatically use PIO mode Dave Jones
@ 2008-05-29 18:21             ` Jeff Garzik
  0 siblings, 0 replies; 30+ messages in thread
From: Jeff Garzik @ 2008-05-29 18:21 UTC (permalink / raw)
  To: Dave Jones; +Cc: Andrew Morton, netdev

Dave Jones wrote:
> The OQO model 2 has an RTL8139 from Atheros that doesn't like MMIO.
> Force it to always use polled IO.
> 
> Signed-off-by: Dave Jones <davej@redhat.com>
> 
> --- linux-2.6.25.noarch/drivers/net/8139too.c~	2008-05-28 21:07:36.000000000 -0400
> +++ linux-2.6.25.noarch/drivers/net/8139too.c	2008-05-28 21:19:57.000000000 -0400
> @@ -951,6 +951,14 @@ static int __devinit rtl8139_init_one (s
>  			   "Use the \"8139cp\" driver for improved performance and stability.\n");
>  	}
>  
> +	if (pdev->vendor == PCI_VENDOR_ID_REALTEK &&
> +	    pdev->device == PCI_DEVICE_ID_REALTEK_8139 &&
> +	    pdev->subsystem_vendor == PCI_VENDOR_ID_ATHEROS &&
> +	    pdev->subsystem_device == PCI_DEVICE_ID_REALTEK_8139) {
> +		printk(KERN_INFO "8139too: OQO Model 2 detected. Forcing PIO\n");
> +		use_pio = 1;
> +	}
> +

these days we almost never hand-craft PCI ID checks like this...  Add 
this to the pci_device_id table, and create a new RTL8139_PIO entry for 
driver_data that has your desired end result

That way, it is trivial to expand the list simply by updating the PCI ID 
table

Table-driven approaches are really superior for things like this





^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-05-29 18:18             ` Jeff Garzik
@ 2008-05-29 18:41               ` Dave Jones
  2008-05-29 19:01                 ` Jeff Garzik
  0 siblings, 1 reply; 30+ messages in thread
From: Dave Jones @ 2008-05-29 18:41 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, netdev

On Thu, May 29, 2008 at 02:18:45PM -0400, Jeff Garzik wrote:
 > Dave Jones wrote:
 > > Make PIO/MMIO a runtime thing via a module parameter.
 > > This is needed to support devices that only work with PIO
 > > without penalising devices that work fine with MMIO in
 > > distro kernels.
 > > 
 > > Signed-off-by: Dave Jones <davej@redhat.com>
 > 
 > two comments:
 > 
 > 1) should use pci_iomap() for both PIO and MMIO
 > 
 > 2) modparam should be "use_io" mirroring existing drivers

Ok, I'll take a stab at those later today (and also your comment
from the other mail).

One other thing: I wasn't sure about my changes to rtl8139_get_regs
and rtl8139_get_regs_len.  Is what I did there safe?
Obviously actually implementing support for PIO reg dumping would
be better, but I think that's beyond the scope of what I'm trying
to do for now.

	Dave

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-05-29 18:41               ` Dave Jones
@ 2008-05-29 19:01                 ` Jeff Garzik
  2008-07-15 18:40                   ` Dave Jones
  0 siblings, 1 reply; 30+ messages in thread
From: Jeff Garzik @ 2008-05-29 19:01 UTC (permalink / raw)
  To: Dave Jones; +Cc: Andrew Morton, netdev

Dave Jones wrote:
> On Thu, May 29, 2008 at 02:18:45PM -0400, Jeff Garzik wrote:
>  > Dave Jones wrote:
>  > > Make PIO/MMIO a runtime thing via a module parameter.
>  > > This is needed to support devices that only work with PIO
>  > > without penalising devices that work fine with MMIO in
>  > > distro kernels.
>  > > 
>  > > Signed-off-by: Dave Jones <davej@redhat.com>
>  > 
>  > two comments:
>  > 
>  > 1) should use pci_iomap() for both PIO and MMIO
>  > 
>  > 2) modparam should be "use_io" mirroring existing drivers
> 
> Ok, I'll take a stab at those later today (and also your comment
> from the other mail).
> 
> One other thing: I wasn't sure about my changes to rtl8139_get_regs
> and rtl8139_get_regs_len.  Is what I did there safe?
> Obviously actually implementing support for PIO reg dumping would
> be better, but I think that's beyond the scope of what I'm trying
> to do for now.

Yeah, that should be reasonable

	Jeff




^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-05-29 19:01                 ` Jeff Garzik
@ 2008-07-15 18:40                   ` Dave Jones
  2008-07-15 22:18                     ` Jeff Garzik
  0 siblings, 1 reply; 30+ messages in thread
From: Dave Jones @ 2008-07-15 18:40 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, netdev

On Thu, May 29, 2008 at 03:01:35PM -0400, Jeff Garzik wrote:
 > Dave Jones wrote:
 > > On Thu, May 29, 2008 at 02:18:45PM -0400, Jeff Garzik wrote:
 > >  > Dave Jones wrote:
 > >  > > Make PIO/MMIO a runtime thing via a module parameter.
 > >  > > This is needed to support devices that only work with PIO
 > >  > > without penalising devices that work fine with MMIO in
 > >  > > distro kernels.
 > >  > > 
 > >  > > Signed-off-by: Dave Jones <davej@redhat.com>
 > >  > 
 > >  > two comments:
 > >  > 
 > >  > 1) should use pci_iomap() for both PIO and MMIO
 > >  > 
 > >  > 2) modparam should be "use_io" mirroring existing drivers
 > > 
 > > Ok, I'll take a stab at those later today (and also your comment
 > > from the other mail).
 > > 
 > > One other thing: I wasn't sure about my changes to rtl8139_get_regs
 > > and rtl8139_get_regs_len.  Is what I did there safe?
 > > Obviously actually implementing support for PIO reg dumping would
 > > be better, but I think that's beyond the scope of what I'm trying
 > > to do for now.
 > 
 > Yeah, that should be reasonable

Finally got back to this.  How does this look?

	Dave



Make PIO/MMIO a runtime thing via a module parameter.
This is needed to support devices that only work with PIO
without penalising devices that work fine with MMIO in
distro kernels.

Signed-off-by: Dave Jones <davej@redhat.com>

diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
index 53bd903..b620317 100644
--- a/drivers/net/8139too.c
+++ b/drivers/net/8139too.c
@@ -98,7 +98,6 @@
 #include <linux/compiler.h>
 #include <linux/pci.h>
 #include <linux/init.h>
-#include <linux/ioport.h>
 #include <linux/netdevice.h>
 #include <linux/etherdevice.h>
 #include <linux/rtnetlink.h>
@@ -120,11 +119,6 @@
                                  NETIF_MSG_LINK)
 
 
-/* enable PIO instead of MMIO, if CONFIG_8139TOO_PIO is selected */
-#ifdef CONFIG_8139TOO_PIO
-#define USE_IO_OPS 1
-#endif
-
 /* define to 1, 2 or 3 to enable copious debugging info */
 #define RTL8139_DEBUG 0
 
@@ -156,6 +150,9 @@
 static int media[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
 static int full_duplex[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
 
+/* Whether to use MMIO or PIO. Default to MMIO. */
+static int use_io;
+
 /* Maximum number of multicast addresses to filter (vs. Rx-all-multicast).
    The RTL chips use a 64 element hash table based on the Ethernet CRC.  */
 static int multicast_filter_limit = 32;
@@ -615,6 +612,7 @@ MODULE_DESCRIPTION ("RealTek RTL-8139 Fast Ethernet driver");
 MODULE_LICENSE("GPL");
 MODULE_VERSION(DRV_VERSION);
 
+module_param(use_io, int, 0);
 module_param(multicast_filter_limit, int, 0);
 module_param_array(media, int, NULL, 0);
 module_param_array(full_duplex, int, NULL, 0);
@@ -710,13 +708,8 @@ static void __rtl8139_cleanup_dev (struct net_device *dev)
 	assert (tp->pci_dev != NULL);
 	pdev = tp->pci_dev;
 
-#ifdef USE_IO_OPS
-	if (tp->mmio_addr)
-		ioport_unmap (tp->mmio_addr);
-#else
 	if (tp->mmio_addr)
 		pci_iounmap (pdev, tp->mmio_addr);
-#endif /* USE_IO_OPS */
 
 	/* it's ok to call this even if we have no regions to free */
 	pci_release_regions (pdev);
@@ -791,32 +784,32 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev,
 	DPRINTK("PIO region size == 0x%02X\n", pio_len);
 	DPRINTK("MMIO region size == 0x%02lX\n", mmio_len);
 
-#ifdef USE_IO_OPS
-	/* make sure PCI base addr 0 is PIO */
-	if (!(pio_flags & IORESOURCE_IO)) {
-		dev_err(&pdev->dev, "region #0 not a PIO resource, aborting\n");
-		rc = -ENODEV;
-		goto err_out;
-	}
-	/* check for weird/broken PCI region reporting */
-	if (pio_len < RTL_MIN_IO_SIZE) {
-		dev_err(&pdev->dev, "Invalid PCI I/O region size(s), aborting\n");
-		rc = -ENODEV;
-		goto err_out;
-	}
-#else
-	/* make sure PCI base addr 1 is MMIO */
-	if (!(mmio_flags & IORESOURCE_MEM)) {
-		dev_err(&pdev->dev, "region #1 not an MMIO resource, aborting\n");
-		rc = -ENODEV;
-		goto err_out;
-	}
-	if (mmio_len < RTL_MIN_IO_SIZE) {
-		dev_err(&pdev->dev, "Invalid PCI mem region size(s), aborting\n");
-		rc = -ENODEV;
-		goto err_out;
+	if (use_io) {
+		/* make sure PCI base addr 0 is PIO */
+		if (!(pio_flags & IORESOURCE_IO)) {
+			dev_err(&pdev->dev, "region #0 not a PIO resource, aborting\n");
+			rc = -ENODEV;
+			goto err_out;
+		}
+		/* check for weird/broken PCI region reporting */
+		if (pio_len < RTL_MIN_IO_SIZE) {
+			dev_err(&pdev->dev, "Invalid PCI I/O region size(s), aborting\n");
+			rc = -ENODEV;
+			goto err_out;
+		}
+	} else {
+		/* make sure PCI base addr 1 is MMIO */
+		if (!(mmio_flags & IORESOURCE_MEM)) {
+			dev_err(&pdev->dev, "region #1 not an MMIO resource, aborting\n");
+			rc = -ENODEV;
+			goto err_out;
+		}
+		if (mmio_len < RTL_MIN_IO_SIZE) {
+			dev_err(&pdev->dev, "Invalid PCI mem region size(s), aborting\n");
+			rc = -ENODEV;
+			goto err_out;
+		}
 	}
-#endif
 
 	rc = pci_request_regions (pdev, DRV_NAME);
 	if (rc)
@@ -826,28 +819,27 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev,
 	/* enable PCI bus-mastering */
 	pci_set_master (pdev);
 
-#ifdef USE_IO_OPS
-	ioaddr = ioport_map(pio_start, pio_len);
-	if (!ioaddr) {
-		dev_err(&pdev->dev, "cannot map PIO, aborting\n");
-		rc = -EIO;
-		goto err_out;
-	}
-	dev->base_addr = pio_start;
-	tp->mmio_addr = ioaddr;
-	tp->regs_len = pio_len;
-#else
-	/* ioremap MMIO region */
-	ioaddr = pci_iomap(pdev, 1, 0);
-	if (ioaddr == NULL) {
-		dev_err(&pdev->dev, "cannot remap MMIO, aborting\n");
-		rc = -EIO;
-		goto err_out;
+	if (use_io) {
+		ioaddr = pci_iomap(pdev, 0, 0);
+		if (!ioaddr) {
+			dev_err(&pdev->dev, "cannot map PIO, aborting\n");
+			rc = -EIO;
+			goto err_out;
+		}
+		dev->base_addr = pio_start;
+		tp->regs_len = pio_len;
+	} else {
+		/* ioremap MMIO region */
+		ioaddr = pci_iomap(pdev, 1, 0);
+		if (ioaddr == NULL) {
+			dev_err(&pdev->dev, "cannot remap MMIO, aborting\n");
+			rc = -EIO;
+			goto err_out;
+		}
+		dev->base_addr = (long) ioaddr;
+		tp->regs_len = mmio_len;
 	}
-	dev->base_addr = (long) ioaddr;
 	tp->mmio_addr = ioaddr;
-	tp->regs_len = mmio_len;
-#endif /* USE_IO_OPS */
 
 	/* Bring old chips out of low-power mode. */
 	RTL_W8 (HltClk, 'R');
@@ -2383,20 +2375,24 @@ static void rtl8139_set_msglevel(struct net_device *dev, u32 datum)
 	np->msg_enable = datum;
 }
 
-/* TODO: we are too slack to do reg dumping for pio, for now */
-#ifdef CONFIG_8139TOO_PIO
-#define rtl8139_get_regs_len	NULL
-#define rtl8139_get_regs	NULL
-#else
 static int rtl8139_get_regs_len(struct net_device *dev)
 {
-	struct rtl8139_private *np = netdev_priv(dev);
+	struct rtl8139_private *np;
+	/* TODO: we are too slack to do reg dumping for pio, for now */
+	if (use_io)
+		return 0;
+	np = netdev_priv(dev);
 	return np->regs_len;
 }
 
 static void rtl8139_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *regbuf)
 {
-	struct rtl8139_private *np = netdev_priv(dev);
+	struct rtl8139_private *np;
+
+	/* TODO: we are too slack to do reg dumping for pio, for now */
+	if (use_io)
+		return;
+	np = netdev_priv(dev);
 
 	regs->version = RTL_REGS_VER;
 
@@ -2404,7 +2400,6 @@ static void rtl8139_get_regs(struct net_device *dev, struct ethtool_regs *regs,
 	memcpy_fromio(regbuf, np->mmio_addr, regs->len);
 	spin_unlock_irq(&np->lock);
 }
-#endif /* CONFIG_8139TOO_MMIO */
 
 static int rtl8139_get_sset_count(struct net_device *dev, int sset)
 {
@@ -2610,6 +2605,11 @@ static int __init rtl8139_init_module (void)
 	printk (KERN_INFO RTL8139_DRIVER_NAME "\n");
 #endif
 
+	/* enable PIO instead of MMIO, if CONFIG_8139TOO_PIO is selected */
+#ifdef CONFIG_8139TOO_PIO
+	use_io = 1;
+#endif
+
 	return pci_register_driver(&rtl8139_pci_driver);
 }
 




-- 
http://www.codemonkey.org.uk

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-07-15 18:40                   ` Dave Jones
@ 2008-07-15 22:18                     ` Jeff Garzik
  2008-07-15 22:36                       ` Dave Jones
  2008-07-15 22:54                       ` Dave Jones
  0 siblings, 2 replies; 30+ messages in thread
From: Jeff Garzik @ 2008-07-15 22:18 UTC (permalink / raw)
  To: Dave Jones; +Cc: Andrew Morton, netdev

Dave Jones wrote:
> On Thu, May 29, 2008 at 03:01:35PM -0400, Jeff Garzik wrote:
>  > Dave Jones wrote:
>  > > On Thu, May 29, 2008 at 02:18:45PM -0400, Jeff Garzik wrote:
>  > >  > Dave Jones wrote:
>  > >  > > Make PIO/MMIO a runtime thing via a module parameter.
>  > >  > > This is needed to support devices that only work with PIO
>  > >  > > without penalising devices that work fine with MMIO in
>  > >  > > distro kernels.
>  > >  > > 
>  > >  > > Signed-off-by: Dave Jones <davej@redhat.com>
>  > >  > 
>  > >  > two comments:
>  > >  > 
>  > >  > 1) should use pci_iomap() for both PIO and MMIO
>  > >  > 
>  > >  > 2) modparam should be "use_io" mirroring existing drivers
>  > > 
>  > > Ok, I'll take a stab at those later today (and also your comment
>  > > from the other mail).
>  > > 
>  > > One other thing: I wasn't sure about my changes to rtl8139_get_regs
>  > > and rtl8139_get_regs_len.  Is what I did there safe?
>  > > Obviously actually implementing support for PIO reg dumping would
>  > > be better, but I think that's beyond the scope of what I'm trying
>  > > to do for now.
>  > 
>  > Yeah, that should be reasonable
> 
> Finally got back to this.  How does this look?
> 
> 	Dave
> 
> 
> 
> Make PIO/MMIO a runtime thing via a module parameter.
> This is needed to support devices that only work with PIO
> without penalising devices that work fine with MMIO in
> distro kernels.
> 
> Signed-off-by: Dave Jones <davej@redhat.com>

Looks great overall.

Minor nits:

* need module param text description

* [optional] if code not too ugly, change mod param description based on 
CONFIG_8139TOO_PIO to indicate the currently compiled default

* [optional] would prefer CONFIG_8139TOO_PIO be handled at compile time, 
by changing the initialized value

* [extra project] would be highly useful for MMIO to fall back to PIO, 
and vice versa, should any resource be unavailable.  Sometimes, mainly 
with MMIO and broken/weird BIOSen, only the PIO PCI BARs will be filled 
in with useful info.


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-07-15 22:18                     ` Jeff Garzik
@ 2008-07-15 22:36                       ` Dave Jones
  2008-07-15 22:55                         ` Jeff Garzik
  2008-07-15 22:54                       ` Dave Jones
  1 sibling, 1 reply; 30+ messages in thread
From: Dave Jones @ 2008-07-15 22:36 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, netdev

On Tue, Jul 15, 2008 at 06:18:30PM -0400, Jeff Garzik wrote:
 
 > > Make PIO/MMIO a runtime thing via a module parameter.
 > > This is needed to support devices that only work with PIO
 > > without penalising devices that work fine with MMIO in
 > > distro kernels.
 > > 
 > > Signed-off-by: Dave Jones <davej@redhat.com>
 > 
 > Looks great overall.
 > 
 > Minor nits:
 > 
 > * need module param text description

oops. will fix.
 
 > * [optional] if code not too ugly, change mod param description based on 
 > CONFIG_8139TOO_PIO to indicate the currently compiled default

Not sure of a non-icky way to do this other than ifdefs.
The best I could come up with is.

#ifdef CONFIG_8139TOO_PIO
MODULE_PARM_DESC(use_io, "PIO/MMIO switch.  0=MMIO 1=PIO default=PIO"); 
#else
MODULE_PARM_DESC(use_io, "PIO/MMIO switch.  0=MMIO 1=PIO default=MMIO"); 
#endif

palatable?

 > * [optional] would prefer CONFIG_8139TOO_PIO be handled at compile time, 
 > by changing the initialized value

This bit should be taken care of in rtl8139_init_module() at the bottom..

+       /* enable PIO instead of MMIO, if CONFIG_8139TOO_PIO is selected */
+#ifdef CONFIG_8139TOO_PIO
+       use_io = 1;
+#endif

 > * [extra project] would be highly useful for MMIO to fall back to PIO, 
 > and vice versa, should any resource be unavailable.  Sometimes, mainly 
 > with MMIO and broken/weird BIOSen, only the PIO PCI BARs will be filled 
 > in with useful info.

Sounds do-able. I'll add it to my rainy-day project list.

	Dave

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-07-15 22:18                     ` Jeff Garzik
  2008-07-15 22:36                       ` Dave Jones
@ 2008-07-15 22:54                       ` Dave Jones
  2008-07-15 23:03                         ` Jeff Garzik
  1 sibling, 1 reply; 30+ messages in thread
From: Dave Jones @ 2008-07-15 22:54 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, netdev

On Tue, Jul 15, 2008 at 06:18:30PM -0400, Jeff Garzik wrote:

 > * [extra project] would be highly useful for MMIO to fall back to PIO, 
 > and vice versa, should any resource be unavailable.  Sometimes, mainly 
 > with MMIO and broken/weird BIOSen, only the PIO PCI BARs will be filled 
 > in with useful info.

Hmm, this bit might actually be fairly trivial on top of my other patch..


--- linux-2.6.26.noarch/drivers/net/8139too.c~	2008-07-15 18:49:02.000000000 -0400
+++ linux-2.6.26.noarch/drivers/net/8139too.c	2008-07-15 18:53:07.000000000 -0400
@@ -784,6 +784,7 @@ static int __devinit rtl8139_init_board 
 	DPRINTK("PIO region size == 0x%02X\n", pio_len);
 	DPRINTK("MMIO region size == 0x%02lX\n", mmio_len);
 
+retry:
 	if (use_io) {
 		/* make sure PCI base addr 0 is PIO */
 		if (!(pio_flags & IORESOURCE_IO)) {
@@ -832,9 +833,10 @@ static int __devinit rtl8139_init_board 
 		/* ioremap MMIO region */
 		ioaddr = pci_iomap(pdev, 1, 0);
 		if (ioaddr == NULL) {
-			dev_err(&pdev->dev, "cannot remap MMIO, aborting\n");
-			rc = -EIO;
-			goto err_out;
+			dev_err(&pdev->dev, "cannot remap MMIO, trying PIO\n");
+			pci_release_regions(pdev);
+			use_ui = 1;
+			goto retry;
 		}
 		dev->base_addr = (long) ioaddr;
 		tp->regs_len = mmio_len;

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-07-15 22:36                       ` Dave Jones
@ 2008-07-15 22:55                         ` Jeff Garzik
  2008-07-15 23:14                           ` Dave Jones
  2008-07-16 10:03                           ` Peter Korsgaard
  0 siblings, 2 replies; 30+ messages in thread
From: Jeff Garzik @ 2008-07-15 22:55 UTC (permalink / raw)
  To: Dave Jones; +Cc: Andrew Morton, netdev

Dave Jones wrote:
> On Tue, Jul 15, 2008 at 06:18:30PM -0400, Jeff Garzik wrote:
>  
>  > > Make PIO/MMIO a runtime thing via a module parameter.
>  > > This is needed to support devices that only work with PIO
>  > > without penalising devices that work fine with MMIO in
>  > > distro kernels.
>  > > 
>  > > Signed-off-by: Dave Jones <davej@redhat.com>
>  > 
>  > Looks great overall.
>  > 
>  > Minor nits:
>  > 
>  > * need module param text description
> 
> oops. will fix.
>  
>  > * [optional] if code not too ugly, change mod param description based on 
>  > CONFIG_8139TOO_PIO to indicate the currently compiled default
> 
> Not sure of a non-icky way to do this other than ifdefs.
> The best I could come up with is.
> 
> #ifdef CONFIG_8139TOO_PIO
> MODULE_PARM_DESC(use_io, "PIO/MMIO switch.  0=MMIO 1=PIO default=PIO"); 
> #else
> MODULE_PARM_DESC(use_io, "PIO/MMIO switch.  0=MMIO 1=PIO default=MMIO"); 
> #endif
> 
> palatable?

best you can do AFAIK, so yes


>  > * [optional] would prefer CONFIG_8139TOO_PIO be handled at compile time, 
>  > by changing the initialized value
> 
> This bit should be taken care of in rtl8139_init_module() at the bottom..
> 
> +       /* enable PIO instead of MMIO, if CONFIG_8139TOO_PIO is selected */
> +#ifdef CONFIG_8139TOO_PIO
> +       use_io = 1;
> +#endif

Right, I was saying I prefer simply to set the initialized value 
appropriately, and avoid the extra code dollup during module load.


>  > * [extra project] would be highly useful for MMIO to fall back to PIO, 
>  > and vice versa, should any resource be unavailable.  Sometimes, mainly 
>  > with MMIO and broken/weird BIOSen, only the PIO PCI BARs will be filled 
>  > in with useful info.
> 
> Sounds do-able. I'll add it to my rainy-day project list.

Thanks :)  A few users out in the wild will definitely thank you.

	Jeff




^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-07-15 22:54                       ` Dave Jones
@ 2008-07-15 23:03                         ` Jeff Garzik
  2008-07-15 23:15                           ` Dave Jones
  0 siblings, 1 reply; 30+ messages in thread
From: Jeff Garzik @ 2008-07-15 23:03 UTC (permalink / raw)
  To: Dave Jones; +Cc: Andrew Morton, netdev

Dave Jones wrote:
> On Tue, Jul 15, 2008 at 06:18:30PM -0400, Jeff Garzik wrote:
> 
>  > * [extra project] would be highly useful for MMIO to fall back to PIO, 
>  > and vice versa, should any resource be unavailable.  Sometimes, mainly 
>  > with MMIO and broken/weird BIOSen, only the PIO PCI BARs will be filled 
>  > in with useful info.
> 
> Hmm, this bit might actually be fairly trivial on top of my other patch..
> 
> 
> --- linux-2.6.26.noarch/drivers/net/8139too.c~	2008-07-15 18:49:02.000000000 -0400
> +++ linux-2.6.26.noarch/drivers/net/8139too.c	2008-07-15 18:53:07.000000000 -0400
> @@ -784,6 +784,7 @@ static int __devinit rtl8139_init_board 
>  	DPRINTK("PIO region size == 0x%02X\n", pio_len);
>  	DPRINTK("MMIO region size == 0x%02lX\n", mmio_len);
>  
> +retry:
>  	if (use_io) {
>  		/* make sure PCI base addr 0 is PIO */
>  		if (!(pio_flags & IORESOURCE_IO)) {
> @@ -832,9 +833,10 @@ static int __devinit rtl8139_init_board 
>  		/* ioremap MMIO region */
>  		ioaddr = pci_iomap(pdev, 1, 0);
>  		if (ioaddr == NULL) {
> -			dev_err(&pdev->dev, "cannot remap MMIO, aborting\n");
> -			rc = -EIO;
> -			goto err_out;
> +			dev_err(&pdev->dev, "cannot remap MMIO, trying PIO\n");
> +			pci_release_regions(pdev);
> +			use_ui = 1;
> +			goto retry;

use_ui?  Are you sure this is not not an X.org patch?  :)

Yes, seems like that would do the trick quite nicely...

If you would be kind enough to post this as a separate patch from your 
use_io patch (since IMO its a separate logical change), that would be 
helpful.

	Jeff




^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-07-15 22:55                         ` Jeff Garzik
@ 2008-07-15 23:14                           ` Dave Jones
  2008-07-15 23:31                             ` Jeff Garzik
  2008-07-16 10:03                           ` Peter Korsgaard
  1 sibling, 1 reply; 30+ messages in thread
From: Dave Jones @ 2008-07-15 23:14 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, netdev

On Tue, Jul 15, 2008 at 06:55:42PM -0400, Jeff Garzik wrote:

 > >  > * [optional] would prefer CONFIG_8139TOO_PIO be handled at compile time, 
 > >  > by changing the initialized value
 > > 
 > > This bit should be taken care of in rtl8139_init_module() at the bottom..
 > > 
 > > +       /* enable PIO instead of MMIO, if CONFIG_8139TOO_PIO is selected */
 > > +#ifdef CONFIG_8139TOO_PIO
 > > +       use_io = 1;
 > > +#endif
 > 
 > Right, I was saying I prefer simply to set the initialized value 
 > appropriately, and avoid the extra code dollup during module load.

Oh, you mean something like..

static int use_io = CONFIG_8139TOO_PIO;

?

	Dave

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-07-15 23:03                         ` Jeff Garzik
@ 2008-07-15 23:15                           ` Dave Jones
  0 siblings, 0 replies; 30+ messages in thread
From: Dave Jones @ 2008-07-15 23:15 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, netdev

On Tue, Jul 15, 2008 at 07:03:50PM -0400, Jeff Garzik wrote:
 
 > > +			pci_release_regions(pdev);
 > > +			use_ui = 1;
 > > +			goto retry;
 > 
 > use_ui?  Are you sure this is not not an X.org patch?  :)

heh, who needs compilers ?

 > Yes, seems like that would do the trick quite nicely...
 > 
 > If you would be kind enough to post this as a separate patch from your 
 > use_io patch (since IMO its a separate logical change), that would be 
 > helpful.

Sure, I'll repost the series in a bit.

	Dave

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-07-15 23:14                           ` Dave Jones
@ 2008-07-15 23:31                             ` Jeff Garzik
  2008-07-15 23:40                               ` Dave Jones
  0 siblings, 1 reply; 30+ messages in thread
From: Jeff Garzik @ 2008-07-15 23:31 UTC (permalink / raw)
  To: Dave Jones; +Cc: Andrew Morton, netdev

Dave Jones wrote:
> On Tue, Jul 15, 2008 at 06:55:42PM -0400, Jeff Garzik wrote:
> 
>  > >  > * [optional] would prefer CONFIG_8139TOO_PIO be handled at compile time, 
>  > >  > by changing the initialized value
>  > > 
>  > > This bit should be taken care of in rtl8139_init_module() at the bottom..
>  > > 
>  > > +       /* enable PIO instead of MMIO, if CONFIG_8139TOO_PIO is selected */
>  > > +#ifdef CONFIG_8139TOO_PIO
>  > > +       use_io = 1;
>  > > +#endif
>  > 
>  > Right, I was saying I prefer simply to set the initialized value 
>  > appropriately, and avoid the extra code dollup during module load.
> 
> Oh, you mean something like..
> 
> static int use_io = CONFIG_8139TOO_PIO;
> 
> ?

Sorry for not being specific.  I would have guessed the uglier

	#ifdef CONFIG_8139TOO_PIO
		static int use_io = 1;
	#else
		static int use_io;
	#endif

since CONFIG_8139TOO_PIO doesn't convert to a 1 or 0 neatly in C AFAIK?


But, overall, yes.  You get the general idea.

	Jeff




^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-07-15 23:31                             ` Jeff Garzik
@ 2008-07-15 23:40                               ` Dave Jones
  0 siblings, 0 replies; 30+ messages in thread
From: Dave Jones @ 2008-07-15 23:40 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Andrew Morton, netdev

On Tue, Jul 15, 2008 at 07:31:16PM -0400, Jeff Garzik wrote:
 > Sorry for not being specific.  I would have guessed the uglier
 > 
 > 	#ifdef CONFIG_8139TOO_PIO
 > 		static int use_io = 1;
 > 	#else
 > 		static int use_io;
 > 	#endif
 > 
 > since CONFIG_8139TOO_PIO doesn't convert to a 1 or 0 neatly in C AFAIK?

Hm, yeah. that only works in the PIO=1 case. When not set, it doesn't
end up in autoconf.h.  I'll go with the fugly ifdefs.

	Dave

-- 
http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] 8139too: Make PIO/MMIO a modparam
  2008-07-15 22:55                         ` Jeff Garzik
  2008-07-15 23:14                           ` Dave Jones
@ 2008-07-16 10:03                           ` Peter Korsgaard
  1 sibling, 0 replies; 30+ messages in thread
From: Peter Korsgaard @ 2008-07-16 10:03 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Dave Jones, Andrew Morton, netdev

>>>>> "Jeff" == Jeff Garzik <jeff@garzik.org> writes:

 >> > * [optional] if code not too ugly, change mod param description
 >> based on  > CONFIG_8139TOO_PIO to indicate the currently compiled
 >> default
 >> 
 >> Not sure of a non-icky way to do this other than ifdefs.
 >> The best I could come up with is.
 >> 
 >> #ifdef CONFIG_8139TOO_PIO
 >> MODULE_PARM_DESC(use_io, "PIO/MMIO switch.  0=MMIO 1=PIO
 >> default=PIO"); #else
 >> MODULE_PARM_DESC(use_io, "PIO/MMIO switch.  0=MMIO 1=PIO
 >> default=MMIO"); #endif
 >> 
 >> palatable?

 Jeff> best you can do AFAIK, so yes

Something like:
#ifdef CONFIG_8139TOO_PIO
#define DEFAULTMODE "PIO"
#else
#define DEFAULTMODE "MMIO"
#endif

MODULE_PARM_DESC(use_io, "PIO/MMIO switch.  0=MMIO 1=PIO default=" DEFAULTMODE);

would be nicer.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2008-07-16 10:03 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-29 17:14 odd RTL8139 quirk Dave Jones
2008-04-29 19:37 ` Jeff Garzik
2008-04-29 19:47   ` Dave Jones
2008-04-29 21:56   ` Dave Jones
2008-04-29 22:04     ` Jeff Garzik
2008-04-29 22:10       ` Dave Jones
2008-04-29 22:19         ` Jeff Garzik
2008-04-29 22:28           ` Dave Jones
2008-04-29 22:33             ` Jeff Garzik
2008-04-29 22:32       ` Andrew Morton
2008-04-30 11:13         ` Jeff Garzik
2008-04-30 15:19           ` Stephen Hemminger
2008-05-29 15:06           ` Dave Jones
2008-05-29 15:07           ` [PATCH 1/2] 8139too: Make PIO/MMIO a modparam Dave Jones
2008-05-29 18:18             ` Jeff Garzik
2008-05-29 18:41               ` Dave Jones
2008-05-29 19:01                 ` Jeff Garzik
2008-07-15 18:40                   ` Dave Jones
2008-07-15 22:18                     ` Jeff Garzik
2008-07-15 22:36                       ` Dave Jones
2008-07-15 22:55                         ` Jeff Garzik
2008-07-15 23:14                           ` Dave Jones
2008-07-15 23:31                             ` Jeff Garzik
2008-07-15 23:40                               ` Dave Jones
2008-07-16 10:03                           ` Peter Korsgaard
2008-07-15 22:54                       ` Dave Jones
2008-07-15 23:03                         ` Jeff Garzik
2008-07-15 23:15                           ` Dave Jones
2008-05-29 15:08           ` [PATCH 2/2] 8139too: Make the OQO2 automatically use PIO mode Dave Jones
2008-05-29 18:21             ` Jeff Garzik

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).