read[bwl] and ioremap problem

Riley Williams (rhw@MemAlpha.CX)
Wed, 15 Dec 1999 20:26:10 +0000 (GMT)


Hi Linus, Alan.

> In short, the way to recognize a broken driver is to basically
> search for drivers that use the non-ISA read/write functions,
> WITHOUT using ioremap(). They need to be converted to either use
> ioremap() OR to use the isa_ versions of the functions.

> Somebody could probably write a simple shell-script with a few
> greps to easily highlight "suspicious" files.

Here's a script I wrote and ran through the linux-2.3.33/drivers
directory. It should list all files containing read[bwl] that do not
also contain ioremap and that's probably the first place to look...

===8<=== CUT ===>8===

#!/bin/bash
cd /usr/src

function locate() {
find linux-*/drivers -name '*.[ch]' $*
}

function readdwl() {
locate -exec grep 'read[bwl]' '{}' /dev/null ';' \
| cut -d : -f 1 | uniq | sort
}

function process() {
for Z in `readdwl` ; do
if ! fgrep ioremap $Z > /dev/null ; then
echo $Z
fi
done
}

process | tee ~/ioremap
exit 0

===8<=== CUT ===>8===

...and here's the output it gave me...

===8<=== CUT ===>8===

linux-2.3.33/drivers/acorn/net/ether1.c
linux-2.3.33/drivers/acorn/net/ether3.c
linux-2.3.33/drivers/atm/nicstarmac.c
linux-2.3.33/drivers/block/macide.c
linux-2.3.33/drivers/block/ps2esdi.c
linux-2.3.33/drivers/block/smart1,2.h
linux-2.3.33/drivers/block/xd.c
linux-2.3.33/drivers/block/xd.h
linux-2.3.33/drivers/char/agp/agp.h
linux-2.3.33/drivers/char/bttv.h
linux-2.3.33/drivers/char/buz.h
linux-2.3.33/drivers/char/bw-qcam.c
linux-2.3.33/drivers/char/console.c
linux-2.3.33/drivers/char/i2c.c
linux-2.3.33/drivers/char/ip2/i2hw.h
linux-2.3.33/drivers/char/lp.c
linux-2.3.33/drivers/char/msp3400.c
linux-2.3.33/drivers/char/radio-cadet.c
linux-2.3.33/drivers/char/saa5249.c
linux-2.3.33/drivers/char/saa7110.c
linux-2.3.33/drivers/char/saa7111.c
linux-2.3.33/drivers/char/saa7146.h
linux-2.3.33/drivers/char/vc_screen.c
linux-2.3.33/drivers/char/zr36120.h
linux-2.3.33/drivers/dio/dio.c
linux-2.3.33/drivers/isdn/act2000/act2000_isa.c
linux-2.3.33/drivers/isdn/eicon/eicon_io.c
linux-2.3.33/drivers/isdn/eicon/eicon_isa.c
linux-2.3.33/drivers/isdn/icn/icn.c
linux-2.3.33/drivers/isdn/icn/icn.h
linux-2.3.33/drivers/isdn/isdn_common.c
linux-2.3.33/drivers/isdn/isdn_common.h
linux-2.3.33/drivers/isdn/isdn_tty.c
linux-2.3.33/drivers/isdn/pcbit/layer2.c
linux-2.3.33/drivers/isdn/pcbit/layer2.h
linux-2.3.33/drivers/isdn/sc/init.c
linux-2.3.33/drivers/net/3c503.c
linux-2.3.33/drivers/net/3c507.c
linux-2.3.33/drivers/net/acenic.h
linux-2.3.33/drivers/net/am79c961a.c
linux-2.3.33/drivers/net/apne.c
linux-2.3.33/drivers/net/arc-rimi.c
linux-2.3.33/drivers/net/ariadne2.c
linux-2.3.33/drivers/net/arlan.h
linux-2.3.33/drivers/net/cs89x0.c
linux-2.3.33/drivers/net/depca.c
linux-2.3.33/drivers/net/e2100.c
linux-2.3.33/drivers/net/ewrk3.c
linux-2.3.33/drivers/net/fc/iph5526_novram.c
linux-2.3.33/drivers/net/hplance.c
linux-2.3.33/drivers/net/lance.c
linux-2.3.33/drivers/net/pcmcia/wavelan_cs.h
linux-2.3.33/drivers/net/sk98lin/h/skdrv1st.h
linux-2.3.33/drivers/net/sk_g16.c
linux-2.3.33/drivers/net/sk_mca.c
linux-2.3.33/drivers/net/smc-mca.c
linux-2.3.33/drivers/net/smc-ultra.c
linux-2.3.33/drivers/net/smc-ultra32.c
linux-2.3.33/drivers/net/sunhme.c
linux-2.3.33/drivers/net/sunhme.h
linux-2.3.33/drivers/net/tokenring/ibmtr.c
linux-2.3.33/drivers/net/tokenring/ibmtr.h
linux-2.3.33/drivers/net/wd.c
linux-2.3.33/drivers/sbus/audio/cs4231.c
linux-2.3.33/drivers/sbus/audio/cs4231.h
linux-2.3.33/drivers/sbus/char/envctrl.c
linux-2.3.33/drivers/sbus/char/sab82532.c
linux-2.3.33/drivers/scsi/53c7,8xx.h
linux-2.3.33/drivers/scsi/53c7xx.h
linux-2.3.33/drivers/scsi/dtc.h
linux-2.3.33/drivers/scsi/fdomain.c
linux-2.3.33/drivers/scsi/g_NCR5380.h
linux-2.3.33/drivers/scsi/in2000.c
linux-2.3.33/drivers/scsi/ips.c
linux-2.3.33/drivers/scsi/mac_esp.c
linux-2.3.33/drivers/scsi/seagate.c
linux-2.3.33/drivers/scsi/sim710.h
linux-2.3.33/drivers/scsi/sym53c8xx_defs.h
linux-2.3.33/drivers/scsi/t128.c
linux-2.3.33/drivers/scsi/t128.h
linux-2.3.33/drivers/sound/es1370.c
linux-2.3.33/drivers/sound/es1371.c
linux-2.3.33/drivers/sound/lowlevel/awe_wave.c
linux-2.3.33/drivers/sound/msnd.h
linux-2.3.33/drivers/sound/msnd_pinnacle.c
linux-2.3.33/drivers/sound/nm256.h
linux-2.3.33/drivers/usb/acm.c
linux-2.3.33/drivers/usb/ohci-debug.c
linux-2.3.33/drivers/usb/ohci-hcd.h
linux-2.3.33/drivers/usb/ohci-root-hub.c
linux-2.3.33/drivers/usb/ohci.h
linux-2.3.33/drivers/video/cgsixfb.c
linux-2.3.33/drivers/video/creatorfb.c
linux-2.3.33/drivers/video/cyber2000fb.h
linux-2.3.33/drivers/video/fbcon-afb.c
linux-2.3.33/drivers/video/fbcon-cfb16.c
linux-2.3.33/drivers/video/fbcon-cfb2.c
linux-2.3.33/drivers/video/fbcon-cfb24.c
linux-2.3.33/drivers/video/fbcon-cfb32.c
linux-2.3.33/drivers/video/fbcon-cfb4.c
linux-2.3.33/drivers/video/fbcon-cfb8.c
linux-2.3.33/drivers/video/fbcon-ilbm.c
linux-2.3.33/drivers/video/fbcon-iplan2p2.c
linux-2.3.33/drivers/video/fbcon-iplan2p4.c
linux-2.3.33/drivers/video/fbcon-iplan2p8.c
linux-2.3.33/drivers/video/fbcon-mac.c
linux-2.3.33/drivers/video/fbcon-mfb.c
linux-2.3.33/drivers/video/fbcon-vga-planes.c
linux-2.3.33/drivers/video/fbcon-vga.c
linux-2.3.33/drivers/video/fbcon.c
linux-2.3.33/drivers/video/hpfb.c
linux-2.3.33/drivers/video/leofb.c
linux-2.3.33/drivers/video/mdacon.c
linux-2.3.33/drivers/video/newport_con.c
linux-2.3.33/drivers/video/promcon.c
linux-2.3.33/drivers/video/tgafb.h
linux-2.3.33/drivers/video/vga.h
linux-2.3.33/drivers/video/vgacon.c

===8<=== CUT ===>8===

Hope that helps...

Best wishes from Riley.

* Copyright (C) 1999, Memory Alpha Systems.
* All rights and wrongs reserved.

+----------------------------------------------------------------------+
| There is something frustrating about the quality and speed of Linux |
| development, ie., the quality is too high and the speed is too high, |
| in other words, I can implement this XXXX feature, but I bet someone |
| else has already done so and is just about to release their patch. |
+----------------------------------------------------------------------+
* http://www.memalpha.cx/Linux/Kernel/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/