Re: MIPS Malta and PCNet32 Driver

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

 



On Sat, 8 Jan 2011, Kevin D. Kissell wrote:

> >  With the Bonito I'd have assumed it was some low-level PCI code rewrite 
> > -- that seem to keep happening over and over again -- that missed a bit in 
> > the Bonito driver or the driver altogether.  With the Bonito core cards 
> > limited to the MIPS 20Kc core and some exotic (for the Malta) QED CPU 
> > options that would be no surprise at all to me.
> I don't think it's a "classic" Bonito, YAMON calls out:
> 
> MIPS SOC-it 101 OCP / 1.3   SDR-FW-1:1

 If it doesn't say "Bonito", then it's not a Bonito. ;)

 I've had a peek at the driver and I bet it's related to the "PCI iomap" 
thing.  The PCNet32 driver doesn't use it and goes for the traditional 
direct inw()/outw()/etc. approach.  I haven't been following the relevant 
discussions, so I can't say offhand whether PCI iomap has become mandatory 
now or not, but what I think is happening is that inw()/outw()/etc. no 
longer reach the PCI port I/O space from the driver on your system by 
default.

 Now the other driver presumably does use PCI iomap and when it 
initialises, it maps a piece of PCI port I/O space somewhere in the 
virtual address space (or initialises a KSEG/XKPHYS mapping in kernel's 
structures) making inw()/outw()/etc. see it.  And given due to PC/AT 
legacy PCI port I/O space ranges requested are typically small (256 
contiguous bytes are the guaranteed maximum on PC/AT-compatible systems), 
one MMU page spans more than one (as does obviously a kernel segment) 
making the other driver's mapping inadvertently valid for this driver too.  
This in turn magically makes it work.

 Note, while a plausible explanation, this is a pure guess on my side.  If 
it is indeed valid, then where the bug lies will depend on whether PCI 
iomap has become mandatory or not.

  Maciej



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux