aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [ARM] 5238/2: Very basic Palm Zire 72 supportSergey Lapin2008-09-266-0/+1515
| | | | | | | | This patch contains very basic support of Palm Zire 72. Signed-off-by: Sergey Lapin <slapin@ossfans.org> Acked-by: Eric Miao <eric.miao@marvell.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] 5184/1: Split ucb1400_ts into core and touchscreenMarek Vašut2008-08-206-248/+412
| | | | | | | | | | | | This patch splits ucb1400_ts into ucb1400_ts and ucb1400_core. Since this chip supports more features than only touchscreen, it was necessary to prepare it for feature addition. The previous functionality is preserved by applying this patch. [Build fixes for non-ARM by Stephen Rothwell and Takashi Iwai] Signed-off-by: Marek Vasut <marek.vasut@gmail.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] 5199/1: PalmLD: PCMCIA driverMarek Vašut2008-08-162-1/+153
| | | | | | | PCMCIA driver for Palm LifeDrive Signed-off-by: Marek Vasut <marek.vasut@gmail.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] 5198/1: PalmTX: PCMCIA fixesMarek Vašut2008-08-161-2/+47
| | | | | | | Fix GPIO handling in the PCMCIA driver. Signed-off-by: Marek Vasut <marek.vasut@gmail.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] Fix a pile of broken watchdog driversAdrian Bunk2008-08-164-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These patches from Adrian fix: - ixp4xx_wdt: 20d35f3e50ea7e573f9568b9fce4e98523aaee5d CC drivers/watchdog/ixp4xx_wdt.o ixp4xx_wdt.c:32: error: expected '=', ',', ';', 'asm' or '__attribute__' ixp4xx_wdt.c: In function 'wdt_enable': ixp4xx_wdt.c:41: error: 'wdt_lock' undeclared (first use in this ixp4xx_wdt.c:41: error: (Each undeclared identifier is reported only ixp4xx_wdt.c:41: error: for each function it appears in.) ixp4xx_wdt.c: In function 'wdt_disable': ixp4xx_wdt.c:52: error: 'wdt_lock' undeclared (first use in this ixp4xx_wdt.c: In function 'ixp4xx_wdt_init': ixp4xx_wdt.c:186: error: 'wdt_lock' undeclared (first use in this make[3]: *** [drivers/watchdog/ixp4xx_wdt.o] Error 1 - at91rm9200_wdt: 2760600da2a13d5a2a335ba012d0f3ad5df4c098 CC drivers/watchdog/at91rm9200_wdt.o at91rm9200_wdt.c:188: error: 'at91_wdt_ioctl' undeclared here (not in a make[3]: *** [drivers/watchdog/at91rm9200_wdt.o] Error 1 - wdt285: d0e58eed05f9baf77c4f75e794ae245f6dae240a CC [M] drivers/watchdog/wdt285.o wdt285.c: In function 'footbridge_watchdog_init': wdt285.c:211: error: 'KERN_WARN' undeclared (first use in this function) wdt285.c:211: error: (Each undeclared identifier is reported only once wdt285.c:211: error: for each function it appears in.) wdt285.c:212: error: expected ')' before string constant make[3]: *** [drivers/watchdog/wdt285.o] Error 1 And this patch from rmk: - s3c2410_wdt: 41dc8b72e37c514f7332cbc3f3dd864910c2a1fa CC drivers/watchdog/s3c2410_wdt.o s3c2410_wdt.c: In function `s3c2410wdt_start': s3c2410_wdt.c:161: warning: `return' with a value, in function returning void Reported-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] update mach-typesRussell King2008-08-161-6/+47
| | | | Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] 5196/1: fix inline asm constraints for preloadNicolas Pitre2008-08-161-2/+2
| | | | | | | | | | | | | | | | | | | | With gcc 4.3 and later, a pointer that has already been dereferenced is assumed not to be null since it should have caused a segmentation fault otherwise, hence any subsequent test against NULL is optimized away. Current inline asm constraint used in the implementation of prefetch() makes gcc believe that the pointer is dereferenced even though the PLD instruction does not load any data and does not cause a segmentation fault on null pointers, which causes all sorts of interesting results when reaching the end of a linked lists for example. Let's use a better constraint to properly represent the actual usage of the pointer value. Problem reported by Chris Steel. Signed-off-by: Nicolas Pitre <nico@marvell.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] 5194/1: update .gitignoreNicolas Pitre2008-08-122-1/+3
| | | | | Signed-off-by: Nicolas Pitre <nico@marvell.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] add proc-macros.S include to proc-arm940 and proc-arm946Russell King2008-08-122-0/+2
| | | | | | ... otherwise these fail to build. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] 5192/1: ARM TLB: add v7wbi_{possible,always}_flags to ↵Paul Walmsley2008-08-121-2/+5
| | | | | | | | | | | | | | | {possible,always}_tlb_flags Commit 2ccdd1e77da52ad494e9af46bf272d816830cb28 doesn't add v7wbi_possible_flags and v7wbi_always_flags to possible_tlb_flags and always_tlb_flags. This causes the L2 cache flush in clean_pmd_entry() (intended for Feroceon only) to execute on ARMv7, and the CPU hangs. This patch is required for OMAP3 boards to boot. Signed-off-by: Paul Walmsley <paul@pwsan.com> Acked-by: Lennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] 5193/1: Wire up missing syscallsStefan Schmidt2008-08-122-2/+14
| | | | | | | | Setup some missing syscall pointed out by the checksyscalls.sh script. Fix two small whitespace issues while being there. Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] traps: don't call undef hook functions with spinlock heldRussell King2008-08-121-13/+18
| | | | | | | Calling the undefined instruction handler functions with a spinlock held is a recipe for must_sleep() warnings. Avoid it. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] 5183/2: Provide Poodle LoCoMo GPIO namesDmitry Baryshkov2008-08-121-0/+6
| | | | | | | | | Fix Poodle ASoC compilation by providing Poodle LoCoMo GPIO names. Cc: Richard Purdie <rpurdie@rpsys.net> Cc: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] dma-mapping: provide sync_range APIsRussell King2008-08-102-29/+48
| | | | | | | Convert the existing dma_sync_single_for_* APIs to the new range based APIs, and make the dma_sync_single_for_* API a superset of it. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] dma-mapping: improve type-safeness of DMA translationsRussell King2008-08-104-37/+61
| | | | | | | | | | | | | | OMAP at least gets the return type(s) for the DMA translation functions wrong, which can lead to subtle errors. Avoid this by moving the DMA translation functions to asm/dma-mapping.h, and converting them to inline functions. Fix the OMAP DMA translation macros to use the correct argument and result types. Also, remove the unnecessary casts in dmabounce.c. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* Merge branch 'for-rmk' of git://git.marvell.com/orionRussell King2008-08-0942-52/+575
|\
| * [ARM] Kirkwood: instantiate the orion_spi driver in the platform codeLennert Buytenhek2008-08-093-0/+54
| | | | | | | | Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| * [ARM] prevent crashing when too much RAM installedLennert Buytenhek2008-08-093-0/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch will truncate and/or ignore memory banks if their kernel direct mappings would (partially) overlap with the vmalloc area or the mappings between the vmalloc area and the address space top, to prevent crashing during early boot if there happens to be more RAM installed than we are expecting. Since the start of the vmalloc area is not at a fixed address (but the vmalloc end address is, via the per-platform VMALLOC_END define), a default area of 128M is reserved for vmalloc mappings, which can be shrunk or enlarged by passing an appropriate vmalloc= command line option as it is done on x86. On a board with a 3:1 user:kernel split, VMALLOC_END at 0xfe000000, two 512M RAM banks and vmalloc=128M (the default), this patch gives: Truncating RAM at 20000000-3fffffff to -35ffffff (vmalloc region overlap). Memory: 512MB 352MB = 864MB total On a board with a 3:1 user:kernel split, VMALLOC_END at 0xfe800000, two 256M RAM banks and vmalloc=768M, this patch gives: Truncating RAM at 00000000-0fffffff to -0e7fffff (vmalloc region overlap). Ignoring RAM at 10000000-1fffffff (vmalloc region overlap). Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Tested-by: Riku Voipio <riku.voipio@iki.fi>
| * [ARM] Kirkwood: Instantiate mv_xor driverSaeed Bishara2008-08-094-0/+220
| | | | | | | | | | Signed-off-by: Saeed Bishara <saeed@marvell.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| * [ARM] Orion: Instantiate mv_xor driver for 5182Saeed Bishara2008-08-099-0/+109
| | | | | | | | | | Signed-off-by: Saeed Bishara <saeed@marvell.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| * [ARM] Orion: enable CONFIG_RTC_DRV_S35390A in the defconfg for QNAP devicesMartin Michlmayr2008-08-091-1/+1
| | | | | | | | | | | | | | The QNAP TS-109/TS-209 and TS-409 devices need RTC_DRV_S35390A. Signed-off-by: Martin Michlmayr <tbm@cyrius.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| * [ARM] Orion: enable RTC_DRV_PCF8563 in the defconfig for HP mv2120Martin Michlmayr2008-08-091-1/+1
| | | | | | | | | | | | | | | | Enable RTC_DRV_PCF8563 in the Orion defconfig since this driver is needed by the HP mv2120. Signed-off-by: Martin Michlmayr <tbm@cyrius.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| * [ARM] Orion: enable KEYBOARD_GPIO in the defconfgMartin Michlmayr2008-08-091-1/+8
| | | | | | | | | | | | | | | | Enable KEYBOARD_GPIO in the Orion defconfig because a number of Orion devices, such as the HP mv2120, define gpio-keys buttons. Signed-off-by: Martin Michlmayr <tbm@cyrius.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| * [ARM] Orion: Export the reset button of the QNAP TS-409Martin Michlmayr2008-08-091-0/+6
| | | | | | | | | | | | | | The reset button on the QNAP TS-409 is available through gpio. Signed-off-by: Martin Michlmayr <tbm@cyrius.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| * [ARM] Orion: use better key codes for the TS-209/TS-409 buttonsMartin Michlmayr2008-08-092-3/+3
| | | | | | | | | | | | | | | | | | Use key codes for the buttons on the TS-209/TS-409 that make more sense than the current values. Signed-off-by: Martin Michlmayr <tbm@cyrius.com> Acked-by: Byron Bradley <byron.bbradley@gmail.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| * [ARM] Orion: export red SATA lights on TS-409, fix SATA presence/activityMartin Michlmayr2008-08-091-0/+42
| | | | | | | | | | | | | | | | | | | | | | | | Export the four red SATA LEDs on the QNAP TS-409 that are connected through gpio. Since the boot loader apparently sets the SATA LEDs 2-4 to red and the SATA LED can only be red or green (but not both), exporting the red SATA LEDs (which automatically turns them off upon boot) makes the green SATA presence/activity indication visible. Signed-off-by: Martin Michlmayr <tbm@cyrius.com> Acked-by: Sylver Bruneau <sylver.bruneau@googlemail.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| * [ARM] Orion: support D0 5281 siliconLennert Buytenhek2008-08-092-0/+12
| | | | | | | | | | | | | | | | | | On D0 5281 SoCs, we need to disable the wait-for-interrupt instruction due to an erratum. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: Nicolas Pitre <nico@marvell.com> Acked-by: Martin Michlmayr <tbm@cyrius.com>
| * [ARM] Move include/asm-arm/plat-orion to arch/arm/plat-orion/include/platLennert Buytenhek2008-08-0927-47/+49
| | | | | | | | | | | | | | This patch performs the equivalent include directory shuffle for plat-orion, and fixes up all users. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* | Merge branch 'for-rmk' of git://aeryn.fluff.org.uk/bjdooks/linuxRussell King2008-08-0911-14/+59
|\ \
| * | [ARM] S3C24XX: Documentation: Update GPIO statusBen Dooks2008-08-092-0/+18
| | | | | | | | | | | | | | | | | | | | | Update the status of the S3C24XX GPIO now we have moved to supporting GPIOLIB Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * | [ARM] S3C24XX: Documentation: update SD/MMC statusBen Dooks2008-08-091-0/+11
| | | | | | | | | | | | | | | | | | Update SD/MMC status now that the driver is merged. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * | [ARM] S3C24XX: Documentation: Update suported CPU listBen Dooks2008-08-091-2/+2
| | | | | | | | | | | | | | | | | | Update supported and in-progress cpu list. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * | [ARM] S3C24XX: Documentation: update platform docsBen Dooks2008-08-091-0/+17
| | | | | | | | | | | | | | | | | | Update documentation in arch/arm/plat-s3c24xx Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * | [ARM] S3C24XX: Fix section mismatch for s3c_lookup_cpuBen Dooks2008-08-091-3/+1
| | | | | | | | | | | | | | | | | | | | | s3c_lookup_cpu is only used at init time, so make it __init. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * | [ARM] CATS: Do not try and map bad PCI IRQ numbersBen Dooks2008-08-091-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The cats_map_irq() function in the Simtec CATS support code is mapping IRQ 255 (invalid IRQ) into what is a supposedly valid interrupt numner which can cause problems with other devices then seeing an interrupt they cannot claim. If the IRQ number if >= 255, then return -1 as this is not something we can map. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * | [ARM] JIVE: Remove duplicated mtd includesHuang Weiyi2008-08-091-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | Removed duplicated include file <linux/mtd/mtd.h> and <linux/mtd/partitions.h> in arch/arm/mach-s3c2412/mach-jive.c. Signed-off-by: Huang Weiyi <weiyi.huang@gmail.com> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * | [ARM] S3C24XX: Compilation fix if s3c2410 is not selectedKrzysztof Helt2008-08-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes compilation error if no s3c2410 processor is selected but the s3c244x is selected. The function s3c2410_baseclk_add() is now available for all Samsung cpus. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> [ben-linux@fluff.org: Whitespace and description fixups] Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * | Merge http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm ↵Ben Dooks2008-08-0810746-525146/+597935
| |\ \ | | | | | | | | | | | | into for-rmk
| * \ \ Merge branch 'master' of ↵Ben Dooks2008-07-152635-95913/+167869
| |\ \ \ | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-rmk
| * | | | [ARM] S3C24XX: Fix SERIAL_SAMSUNG entryArnaud Patard (Rtp2008-07-151-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The SERIAL_SAMSUNG needs SERIAL_CORE but doesn't select it, leading to a build failure. Adding a 'select SERIAL_CORE' cure the trouble. Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * | | | [ARM] S3C24XX: s3c243xx_clock_register() data can be __initdataBen Dooks2008-07-154-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Any data being passed to s3c243xx_clock_register() can be marked as __initdata as it is an array of pointers to 'struct clk' that are to be registered on initialisation. The s3c243xx_clock_register function uses this array to register clocks and does not require it to stay around after exit. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | | | | Merge branch 'fixes' of ↵Linus Torvalds2008-08-086-54/+89
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq: [CPUFREQ][2/2] preregister support for powernow-k8 [CPUFREQ][1/2] whitespace fix for powernow-k8 [CPUFREQ] Update MAINTAINERS to reflect new mailing list. [CPUFREQ] Fix warning in elanfreq [CPUFREQ] Fix -Wshadow warning in conservative governor. [CPUFREQ] Remove EXPERIMENTAL annotation from VIA C7 powersaver kconfig.
| * | | | | [CPUFREQ][2/2] preregister support for powernow-k8Mark Langsdorf2008-08-082-37/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch provides support for the _PSD ACPI object in the Powernow-k8 driver. Although it looks like an invasive patch, most of it is simply the consequence of turning the static acpi_performance_data structure into a pointer. AMD has tested it on several machines over the past few days without issue. [trivial checkpatch warnings fixed up by davej] [X86_POWERNOW_K8_ACPI=n buildfix from Randy Dunlap] Signed-off-by: Mark Langsdorf <mark.langsdorf@amd.com> Tested-by: Frank Arnold <frank.arnold@amd.com> Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Dave Jones <davej@redhat.com>
| * | | | | [CPUFREQ][1/2] whitespace fix for powernow-k8Mark Langsdorf2008-08-081-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Trivial whitespace fix for powernow-k8. Signed-off-by: Mark Langsdorf <mark.langsdorf@amd.com> Signed-off-by: Dave Jones <davej@redhat.com>
| * | | | | [CPUFREQ] Update MAINTAINERS to reflect new mailing list.Dave Jones2008-08-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mailing list moved to vger. Signed-off-by: Dave Jones <davej@redhat.com>
| * | | | | [CPUFREQ] Fix warning in elanfreqDave Jones2008-08-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | arch/x86/kernel/cpu/cpufreq/elanfreq.c:47:26: warning: symbol 'elan_multiplier' was not declared. Should it be static? Yes, yes it should. Signed-off-by: Dave Jones <davej@redhat.com>
| * | | | | [CPUFREQ] Fix -Wshadow warning in conservative governor.Dave Jones2008-08-081-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | drivers/cpufreq/cpufreq_conservative.c:336:15: warning: symbol 'freq_step' shadows an earlier one Just rename the local variable. Signed-off-by: Dave Jones <davej@redhat.com>
| * | | | | [CPUFREQ] Remove EXPERIMENTAL annotation from VIA C7 powersaver kconfig.Dave Jones2008-08-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This has been pretty solid, and doesn't see much change at all. Noticed by Harald Welte. Signed-off-by: Dave Jones <davej@redhat.com>
* | | | | | Merge branch 'master' of ↵Linus Torvalds2008-08-0814-509/+652
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 * 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: [CIFS] list entry can not return null turn cifs_setattr into a multiplexor that calls the correct function move file time and dos attribute setting logic into new function spin off cifs_setattr with unix extensions to its own function [CIFS] Code cleanup in old sessionsetup code [CIFS] cifs_mkdir and cifs_create should respect the setgid bit on parent dir Rename CIFSSMBSetFileTimes to CIFSSMBSetFileInfo and add PID arg change CIFSSMBSetTimes to CIFSSMBSetPathInfo [CIFS] fix trailing whitespace bundle up Unix SET_PATH_INFO args into a struct and change name Fix missing braces in cifs_revalidate() remove locking around tcpSesAllocCount atomic variable [CIFS] properly account for new user= field in SPNEGO upcall string allocation [CIFS] remove level of indentation from decode_negTokenInit [CIFS] cifs send2 not retrying enough in some cases on full socket [CIFS] oid should also be checked against class in cifs asn
| * | | | | | [CIFS] list entry can not return nullSteve French2008-08-084-74/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Steve French <sfrench@us.ibm.com>