James Ketrenos [Fri, 12 Aug 2005 14:36:32 +0000 (09:36 -0500)]
Switched firmware error dumping so that it will capture a log available
via sysfs even if debugging disabled. When a firmware error is
captured, it will be dumped to the kernel log (if debug enabled) and
captured in memory to be retrieved via sysfs.
If an error has already been captured, subsequent errors will be
dropped.
The existing error can be cleared by writing to the error log entry.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
James Ketrenos [Fri, 12 Aug 2005 14:17:04 +0000 (09:17 -0500)]
Modified ipw_config and STATUS_INIT setting to correct race condition
with request_scan being called before initialized if invoked from
insmod, resulting in no association occurring during boot until iwlist
scan is run.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Hong Liu [Fri, 5 Aug 2005 09:25:50 +0000 (17:25 +0800)]
Fixes the ad-hoc network WEP key list issue.
If we configure the wep keys after creating the ibss network, the
beacons of this network will not show correctly (it still shows "key
off" in iwlist scan report). This is because we don't update the
beacon info in firmware.
Signed-off-by: Hong Liu <hong.liu@intel.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com>
James Ketrenos [Thu, 4 Aug 2005 01:36:56 +0000 (20:36 -0500)]
Added more useful geography encoding so people's experience with
iwconfig matches what their hardware can actually do in regard to
supported channel maps, etc.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Zhu Yi [Wed, 13 Jul 2005 17:25:38 +0000 (12:25 -0500)]
[bug 667] Fix the notorious "No space for Tx" bug.
We send SYSTEM_CONFIG command after the TGI_KEY command if hardware
encryption is enabled. It sometimes causes a firmware stall (firmware
doesn't respond to any request) and finally bungs up the Tx send queue.
The solution is to send SYSTEM_CONFIG command in the post association
stage from a workqueue.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
James Ketrenos [Thu, 25 Aug 2005 05:05:33 +0000 (00:05 -0500)]
Catch ipw2200 up to equivelancy with v1.0.5
* Fixed #452 problem with setting retry limit (thanks to Hong Liu)
* Fixed #592 race condition during association causing firmware errors
* Fixed #602 problem with building in 64-bit environment
* Fixed #625 problem with SCAN_REQUEST_EXT sometimes failing
* Fixed #645 problem with bit rate not decreasing when moving laptop
farther from AP
* Fixed #656 problem with 'iwconfig eth1 mode auto' and 'modprobe'
locking the system
* Fixed #667 problem with "No space for Tx" for hwcrypto=1
* Fixed #685 kernel panic in rmmod caused by led work is still queued
* Fixed #695 problem with network doesn't reassociate after suspend/resume
* Fixed #701 problem with 'iwprvi sw_reset' not resetting the card from
monitor mode
* Fixed #710 problem with monitor mode being used after a WEP key has
been configured
* Fixed network->mode vs. priv->ieee->iw_mode checking (thanks to Ben Cahill)
* Fixed "Unknown management packet %d" warning
* Fixed setting channels multiple times in monitor mode causes scan stopped
* Fixed ipw_wx_sw_reset doesn't switch firmware if mode is changed.
* Add duplicate packet checking code (kill ping DUP! and TKIP replay warning)
* Fix hardware encryption (both WEP and AES) doesn't work with fragmentation.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
James Ketrenos [Thu, 25 Aug 2005 03:33:31 +0000 (22:33 -0500)]
Catch ipw2100 up to equivelancy with v1.1.1
* Added WE-18 support. This allows the use of -Dext with wpa_supplicant
> 0.4.x (thanks to Hong Liu)
* Fixed #339 problem with iwconfig set/get txpower (thanks to Hong Liu)
* Fixed #598 problem when with error messages when module loaded with
'disable=1' (thanks to Hong Liu)
* Fixed #640 problem with 'iwlist retry' now showing min/max retry
* Fixed compatibility with wpa_supplicant and the new -Dipw interface
(that included a fix for 64-bit compatibility)
* Added CFG_CRC_CHECK which allows passing through packets with bad
CRCs while in monitor mode.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
James Ketrenos [Thu, 25 Aug 2005 03:04:42 +0000 (22:04 -0500)]
Catch ipw2200 up to equivelancy with v1.0.4
* Fixed #627 problem with open APs not working with wpa_supplicant
* Fixed #632 problem with 'txpower auto' setting power incorrectly (thanks
to Kai Groner)
* Fixed #634 problem with 'iwconfig eth1 frag 0' hanging the shell
* Fixed problem with adapter not fully powering off during suspend to RAM or
when module unloaded.
* Fixed #645 problem with turning fixed rates off not taking effect until
you reload the driver
* Fixed problem with firmware restart if wpa_supplicant was used to set a key
that wasn't exactly 5 or 13 bytes in length.
* Fixed #623 Added iwpriv sw_reset extension to reset sw parameters
* Added managment frame export to user space with frame statistics
* Fixed #652 Modified the driver to load the EEPROM data even if RF KILL is
active during driver load
* Global s:CX2_:IPW_:g to make code more consistent
* Fixed #572 problem with setting txpower to auto
* Fixed #656 problem with kernel oops if mode auto; modprobe -r ipw2200
* Added QoS (CONFIG_IPW_QOS) support. This is being actively developed but
is the first step in getting WMM support into the driver and the kernel.
* Fixed some race conditions with channel changes, association, and scan
abort that could periodically cause a firmware restart.
* Added some extensions to export scan and network statistics to user space
(exposed through speed_scan and net_stats sysfs entries)
* Fixed a few bugs in how monitor mode was supported (scan lists
weren't quite right)
* Updated the firmware requirement from 2.2 to 2.3 which supports
monitor mode.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
James Ketrenos [Thu, 25 Aug 2005 02:56:24 +0000 (21:56 -0500)]
Catch ipw2200 up to equivelancy with v1.0.3
* Fix #616 problem with OOPS on module load (thanks to Yi Zhu)
* Fixed problem with led module parameter being described as
'auto_create'
* Added support to merge between adhoc networks (thanks to Mohamed Abbas)
* Added semaphore lock at the driver's entry points to protect against
re-entry (thanks to Mohamed Abbas)
* Added semaphore lock to background scheduled driver actions (thanks to
Mohamed Abbas)
* Changed how signal quality is reported for scan output (thanks to
Peter Jones)
* Fixed how high/low clamp values of signal quality are reported so a
more consistent ramp is provided (thanks to Bill Moss)
* Fix #624 problem with duplicate addresses (again) (thanks to Bernard
Blackham)
* Fix #385 problem with fragmentation and certain sized packets (thanks
to Mohamed Abbas)
* Modified iwconfig network name if RF kill is enabled to say 'radio off'
* Fix #382 problem with driver not responding to probe requests in Ad-Hoc
mode (thanks to Mohamed Abbas)
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
James Ketrenos [Thu, 25 Aug 2005 02:43:11 +0000 (21:43 -0500)]
Catch ipw2200 up to equivelancy with v1.0.2
Removed unneeded parenthesis around numeric constant defines
Added support for iwspy
Put in fix for Ad-Hoc mode not passing through all packets (thanks to KKH)
Put in fix for fragmentation not working for fragment sizes between
441-464 bytes (thanks to Mohamed Abbas)
Fixed #592 problem of CONFIG_IEEE80211_WPA_MODULE not including WPA
support into the driver -- fixed as a result of no longer limiting WPAs
inclusion
Fixed #594 problem with user rates mask causing lack of association if
AP mandatory rate is masked out. We now add back in as a supported rate
any mandatory rate.
Fixed #597 kernel oops due to calling dev_kfree_skb on an skb multiple times.
Added code to control LEDs that can be controlled through the wireless
NIC (vs. non-wireless HW interfaces) -- this is currently disabled by
default due to reports by some users of it hanging their laptop.
Added some more debug messages around fragmentation logic
Added locking around STATUS_HCMD_ACTIVE to prevent re-entry race
conditions
Moved ipw_adapter_restart to only execute on the priv->workqueue to
keep keyboard errors from occuring during adapter restart
Added CFG_BACKGROUND_SCAN to easily allow people to play with
background scanning implementations
Modified WPA logic to send WPA IE if one is set (vs. being based on
wpa_enabled)
Modified scan result logic to report WPA and RSN IEs if set (vs. being
based on wpa_enabled)
Fixed issues with endianess compatability between the host and
wireless adapter (thanks to York Liu and Yi Zhu)
Fixed problem with Ad-Hoc network creation causing a firmware error if
a scan was actively running (thanks to Mohamed Abbas)
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Volker Braun [Mon, 24 Oct 2005 15:15:36 +0000 (10:15 -0500)]
Fix problem with WEP unicast key > index 0
The functions ieee80211_wx_{get,set}_encodeext fail if one tries to set
unicast (IW_ENCODE_EXT_GROUP_KEY not set) keys at key indices>0. But at
least some Cisco APs dish out dynamic WEP unicast keys at index !=0.
Signed-off-by: Volker Braun <volker.braun@physik.hu-berlin.de> Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Francois Romieu [Mon, 7 Nov 2005 00:50:46 +0000 (01:50 +0100)]
[PATCH] b44: miscellaneous cleanup
- remove unneeded forward declarations
- s/kmalloc + memset/kzalloc/
- whitespace readjustement can't hurt
- wrong comment: b44_init_rings _is_ called with a spinlock held in
b44_{open/set_ringparam/set_pauseparam/etc}.
Actually, it does not need to be able to sleep
- b44_remove_one() can not be issued with a NULL device in its
private member: remove the test.
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Adds a new CONFIG_PPC_64K_PAGES which, when enabled, changes the kernel
base page size to 64K. The resulting kernel still boots on any
hardware. On current machines with 4K pages support only, the kernel
will maintain 16 "subpages" for each 64K page transparently.
Note that while real 64K capable HW has been tested, the current patch
will not enable it yet as such hardware is not released yet, and I'm
still verifying with the firmware architects the proper to get the
information from the newer hypervisors.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Russell King [Sun, 6 Nov 2005 21:41:08 +0000 (21:41 +0000)]
[ARM] Fix /proc/cpuinfo format for ARM SMP
glibc expects to count lines beginning with "processor" to determine
the number of processors, not lines beginning with "Processor". So,
give glibc the format it expects.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
We don't want to call dump_cpu_info() from cpu_init() after boot since
it produces a lot of unnecessary noise - since cpu_init() gets called
on resume and hotplug cpu insertion events.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King [Sun, 30 Oct 2005 21:42:11 +0000 (22:42 +0100)]
[PATCH] kbuild: permanently fix kernel configuration include mess
Include autoconf.h into every kernel compilation via the gcc command line
using -imacros. This ensures that we have the kernel configuration
included from the start, rather than relying on each file having #include
<linux/config.h> as appropriate. History has shown that this is something
which is difficult to get right.
Since we now include the kernel configuration automatically, make
configcheck becomes meaningless, so remove it.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Adrian Bunk [Sat, 5 Nov 2005 16:42:27 +0000 (17:42 +0100)]
[PATCH] airo.c/airo_cs.c: correct prototypes
This patch creates a file airo.h containing prototypes of the global
functions in airo.c used by airo_cs.c .
If you got strange problems with either airo_cs devices or in any other
completely unrelated part of the kernel shortly or long after a airo_cs
device was detected by the kernel, this might have been caused by the
fact that caller and callee disagreed regarding the size of the first
argument to init_airo_card()...
Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Michael Chan [Fri, 4 Nov 2005 16:53:48 +0000 (08:53 -0800)]
[PATCH] bnx2: refine bnx2_poll
Refine bnx2_poll() logic to write back the most up-to-date status tag
when all work has been processed. This eliminates some occasional
extra interrupts when a older status tag is written even though all
work has been processed.
The idea is to read the status tag just before exiting bnx2_poll() and
then check again for any new work. If no new work is pending, the
status tag written back will not generate any extra interrupt. This
logic is similar to the changes David Miller did to tg3_poll().
Signed-off-by: Michael Chan <mchan@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Daniel Drake [Thu, 3 Nov 2005 22:45:02 +0000 (22:45 +0000)]
[PATCH] prism54: Remove redundant assignment
The last patch I sent in ("prism54: Free skb after disabling
interrupts") included a redundant NULL assignment. Thanks to Herbert
Xu for pointing it out.
Signed-off-by: Daniel Drake <dsd@gentoo.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Adrian Bunk [Sun, 30 Oct 2005 15:53:34 +0000 (16:53 +0100)]
[PATCH] drivers/net/e1000/: possible cleanups
This patch contains the following possible cleanups:
- make needlessly global code static
- #if 0 the following unused global functions:
- e1000_hw.c: e1000_mc_addr_list_update
- e1000_hw.c: e1000_read_reg_io
- e1000_hw.c: e1000_enable_pciex_master
Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Bart Oldeman [Sat, 5 Nov 2005 23:54:07 +0000 (12:54 +1300)]
[PATCH] reset tss->io_bitmap_owner in sys_ioperm()
my patch "x86: initialise tss->io_bitmap_owner to something" (commit ID d5cd4aadd3d220afac8e3e6d922e333592551f7d) introduced a problem with a
program (DOSEMU) that called ioperm after already doing some port i/o.
The problem is that a process switch return causes tss->io_bitmap_base
to be set to IO_BITMAP_OFFSET so that the fault (that *really* sets the
io bitmap) never triggers.
Samuel Thibault [Sat, 5 Nov 2005 21:19:50 +0000 (22:19 +0100)]
[PATCH] Set the vga cursor even when hidden
Some visually impaired people use hardware devices which directly read
the vga screen. When newt for instance asks to hide the cursor for
better visual aspect, the kernel puts the vga cursor out of the screen,
so that the cursor position can't be read by the hardware device. This
is a great loss for such people.
Here is a patch which uses the same technique as CUR_NONE for hiding the
cursor while still moving it.
Mario, you should apply it to the speakup kernel for access floppies
asap. I'll submit a 2.4 patch too.
Russell King [Sat, 5 Nov 2005 21:22:39 +0000 (21:22 +0000)]
[DRIVER MODEL] Fix sgivwfb
Statically allocated devices in module data is a potential cause
of oopsen. The device may be in use by a userspace process, which
will keep a reference to the device. If the module is unloaded,
the module data will be freed. Subsequent use of the platform
device will cause a kernel oops.
Use generic platform device allocation/release code in modules.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Russell King [Sat, 5 Nov 2005 21:22:13 +0000 (21:22 +0000)]
[DRIVER MODEL] Fix gbefb
Statically allocated devices in module data is a potential cause
of oopsen. The device may be in use by a userspace process, which
will keep a reference to the device. If the module is unloaded,
the module data will be freed. Subsequent use of the platform
device will cause a kernel oops.
Use generic platform device allocation/release code in modules.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Russell King [Sat, 5 Nov 2005 21:21:38 +0000 (21:21 +0000)]
[DRIVER MODEL] Fix arcfb
Release code in driver modules is a potential cause of oopsen.
The device may be in use by a userspace process, which will keep
a reference to the device. If the module is unloaded, the module
text will be freed. Subsequently, when the last reference is
dropped, the release code will be called, which no longer exists.
Use generic platform device allocation/release code in modules.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Russell King [Sat, 5 Nov 2005 21:21:10 +0000 (21:21 +0000)]
[DRIVER MODEL] Fix macsonic
Release code in driver modules is a potential cause of oopsen.
The device may be in use by a userspace process, which will keep
a reference to the device. If the module is unloaded, the module
text will be freed. Subsequently, when the last reference is
dropped, the release code will be called, which no longer exists.
Use generic platform device allocation/release code in modules.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Russell King [Sat, 5 Nov 2005 21:20:47 +0000 (21:20 +0000)]
[DRIVER MODEL] Fix jazzsonic
Release code in driver modules is a potential cause of oopsen.
The device may be in use by a userspace process, which will keep
a reference to the device. If the module is unloaded, the module
text will be freed. Subsequently, when the last reference is
dropped, the release code will be called, which no longer exists.
Use generic platform device allocation/release code in modules.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Russell King [Sat, 5 Nov 2005 21:20:21 +0000 (21:20 +0000)]
[DRIVER MODEL] Fix depca
Release code in driver modules is a potential cause of oopsen.
The device may be in use by a userspace process, which will keep
a reference to the device. If the module is unloaded, the module
text will be freed. Subsequently, when the last reference is
dropped, the release code will be called, which no longer exists.
Use generic platform device allocation/release code in modules.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Matt Porter [Wed, 2 Nov 2005 23:13:06 +0000 (16:13 -0700)]
[PATCH] phy address mask support for generic phy layer
Adds a phy_mask field to struct mii_bus and uses it. This field
indicates each phy address to be ignored when probing the mdio bus.
This support is needed for the fs_enet and ibm_emac drivers to be
converted to the generic phy layer among other drivers. Many systems
lock up on probing certain phy addresses or probing doesn't return
0xffff when nothing is found at the address. A new driver I'm
working on also makes use of this mask.
Signed-off-by: Matt Porter <mporter@kernel.crashing.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Don Fry [Tue, 1 Nov 2005 21:13:35 +0000 (13:13 -0800)]
[PATCH] pcnet32: Prevent hang with 79c976
Some boards using the 79c976 pcnet32 chip will hang the system if the
ethtool --register-dump is performed with the device operational. The
request to read bcr30 is retried by the PCI device infinitely without
returning data, hanging the system.
Tested ia32 and ppc64.
Signed-off-by: Don Fry <brazilnut@us.ibm.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Don Fry [Tue, 1 Nov 2005 20:50:57 +0000 (12:50 -0800)]
[PATCH] pcnet32: AT2700/2701 and Bugzilla 2699 & 4551
This patch is a better fix for Allied Telesyn 2700/2701 FX boards than
the change made in early January this year. It allows the user to
select the speed/duplex via module_param, but if no selection is made,
forces the speed to 100 FD. It fixes both Bugzilla bugs 2669 and 4551.
Tested ia32 and ppc64 by myself, and by the originator of bug 2669.
Signed-off-by: Don Fry <brazilnut@us.ibm.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Don Fry [Tue, 1 Nov 2005 20:04:33 +0000 (12:04 -0800)]
[PATCH] pcnet32: show name of failing device
Display the name eth%d or pci_name() of device which fails to allocate
memory. When changing ring size via ethtool, it also releases the
lock before returning on error. Added comment that the caller of
pcnet32_alloc_ring must call pcnet32_free_ring on error, to avoid leak.
Tested ia32 by forcing allocation errors.
Signed-off-by: Don Fry <brazilnut@us.ibm.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Ananda Raju [Mon, 31 Oct 2005 21:55:31 +0000 (16:55 -0500)]
[PATCH] S2io: Multi buffer mode support
Hi,
This patch provides dynamic two buffer-mode and 3 buffer-mode options.
Previously 2 buffer-mode was compilation option. Now with this patch applied
one can load driver in 2 buffer-mode with module-load parameter
ie.
#insmod s2io.ko rx_ring_mode=2
This patch also provides 3 buffer-mode which provides header separation
functionality. In 3 buffer-mode skb->data will have L2/L3/L4 headers and
"skb_shinfo(skb)->frag_list->data" will have have L4 payload.
one can load driver in 3 buffer-mode with same above module-load parameter
ie.
#insmod s2io.ko rx_ring_mode=3
Please review the patch.
Signed-off-by: Ananda Raju <ananda.raju@neterion.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
fid is declared as a u32 (unsigned int), and then a few lines later, it is checked for a value < 0, which is clearly useless.
In the two locations this function is used, in one it is *explicitly* given a negative number, which would be ignored with the
current definition.
Thanks to LinuxICC (http://linuxicc.sf.net).
Signed-off-by: Gabriel A. Devenyi <ace@staticwave.ca> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Alan Stern [Fri, 4 Nov 2005 19:44:41 +0000 (14:44 -0500)]
[SCSI] sd: Fix refcounting
Currently the driver takes a reference only for requests coming by way
of the gendisk, not for requests coming by way of the struct device or
struct scsi_device. Such requests can arrive in the rescan, flush,
and shutdown pathways.
The patch also makes the scsi_disk keep a reference to the underlying
scsi_device, and it erases the scsi_device's pointer to the scsi_disk
when the scsi_device is removed (since the pointer should no longer be
used).
This resolves Bugzilla entry #5237.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Pierre Ossman [Sat, 5 Nov 2005 10:36:35 +0000 (10:36 +0000)]
[MMC] Use controller id instead of driver name for printks
The printks that aren't for debugging should use the name of the controller,
not the driver name. Multiple MMC controllers aren't that common today, but
this is the right way to do things.
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Pierre Ossman [Sat, 5 Nov 2005 10:16:50 +0000 (10:16 +0000)]
[MMC] Fix chip config in wbsd
There is a broken if clause in the wbsd driver that can cause the
driver to try and configure the chip even though none is found. This
results in i/o on invalid ports.
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
[PATCH] nvidiafb: Geforce 7800 series support added
This adds support for the Nvidia Geforce 7800 series of cards to the
nvidiafb framebuffer driver. All it does is add the PCI device id for
the 7800, 7800 GTX, 7800 GO, and 7800 GTX GO cards to the module device
table for the nvidiafb.ko driver, so that nvidiafb.ko will actually work
on these cards.
I also added the relevant PCI device ids to linux/pci_ids.h
I tested it on my 7800 GTX here and it works like a charm. I now can
get framebuffer support on this card! Woo hoo!! Nothing like 200x75 text
mode to make your eyes BLEED. ;)