Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Mar 1998 10:37:23 -0800
From:      "Fred L. Templin" <templin@erg.sri.com>
To:        freebsd-hackers@FreeBSD.ORG, freebsd-hardware@FreeBSD.ORG
Cc:        templin@erg.sri.com
Subject:   L2 cache problems (??) on ThinkPad 560E
Message-ID:  <199803181837.KAA02717@grayling.erg.sri.com>

next in thread | raw e-mail | index | archive | help
Hello,

I'm trying to debug a problem with a device driver I wrote for the Netwave
PCMCIA radio networking card on an IBM ThinkPad 560E. The Netwave card is
configured as both a memory and I/O mapped card (i.e. 33KB of control store
on the card are memory-mapped into ISA bus memory space, and a block of
registers on the card are mapped into ISA I/O port space.) The card and
driver work fine on a wide variety of laptop and desktop systems, but when
I tried it on the 560E I ran into problems which "smell" like cache coherency
issues.

Basically, reads from the card's memory work fine on the 560E; I can receive 
network packets and even display them with tcpdump to show that data integrity
is preserved. But, writes to the card's memory (as the result of transmit
packets) result in either corrupted data over the radio link or a loss of
synchronization between the driver and card - which strongly suggests to me
that the writes are being cached and not flushed out to the card's control
store memory. I have declared all data structures which are written to the
card as "volatile" in my driver - which I thought should have obviated any
caching issues. But, are there any other low-level system primitives I might
need to use to either flush the cache or avoid caching alltogether? Finally,
I may be making a dangerous leap of faith here in assuming that caching is
at the heart of the issue. Can anyone think of another scenario which might
be causing the problems I'm seeing?

Thanks much,

Fred
templin@erg.sri.com

P.S. Another factor which makes me believe that caching is the issue is
     the fact that the 560E includes a L2 cache chip which I don't see on
     any of my other laptops (see the "dmesg" output below):


> FreeBSD 2.2.5-RELEASE #29: Tue Mar 17 10:00:06 GMT 1998
>     templin@gloom.erg.sri.com:/usr/src/sys/compile/RAPI
> CPU: Pentium (166.19-MHz 586-class CPU)
>   Origin = "GenuineIntel"  Id = 0x543  Stepping=3
>   Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8>
> real memory  = 50331648 (49152K bytes)
> avail memory = 46112768 (45032K bytes)
> Initializing PC-card drivers: aic gmc ed ep fe nw sn sio wdc ncv stg 
> Probing for devices on PCI bus 0:
> chip0 <Intel 82437MX mobile PCI cache memory controller> rev 2 on pci0:0
> chip1 <Intel 82371MX mobile PCI I/O IDE accelerator (MPIIX)> rev 3 on pci0:1
> vga0 <VGA-compatible display device> rev 211 int a irq ?? on pci0:3
> pcic0 <Cirrus Logic PD6729/6730 PC-card to PCI Bridge> rev 226 int a irq ?? on pci0:19

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hardware" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199803181837.KAA02717>