- 09 11月, 2016 1 次提交
-
-
由 Finn Thain 提交于
The various 5380 drivers inconsistently store register pointers either in the Scsi_Host struct "legacy crap" area or in special, board-specific members of the NCR5380_hostdata struct. Uniform use of the latter struct makes for simpler and faster code (see the following patches) and helps to reduce use of the NCR5380_implementation_fields macro. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Acked-by: NRussell King <rmk+kernel@armlinux.org.uk> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 12 4月, 2016 6 次提交
-
-
由 Finn Thain 提交于
Fix various issues: Comments about bus errors are incorrect. The PDMA asm must return the size of the memory access that faulted so the transfer count can be adjusted accordingly. A phase change may cause a bus error but should not be treated as failure. A bus error does not always imply a phase change and generally the transfer may continue. Scatter/gather doesn't seem to work with PDMA due to overruns. This is a pity because peak throughput seems to double with SG_ALL. Tested on a Mac LC III and a PowerBook 520. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Finn Thain 提交于
Now that atari_scsi and sun3_scsi have been converted to use the NCR5380.c core driver, remove atari_NCR5380.c. Also remove the last vestiges of its Tagged Command Queueing implementation from the wrapper drivers. The TCQ support in atari_NCR5380.c is abandoned by this patch. It is not merged into the remaining core driver because, 1) atari_scsi defines SUPPORT_TAGS but leaves FLAG_TAGGED_QUEUING disabled by default, which indicates that it is mostly undesirable. 2) I'm told that it doesn't work correctly when enabled. 3) The algorithm does not make use of block layer tags which it will have to do because scmd->tag is deprecated. 4) sun3_scsi doesn't define SUPPORT_TAGS at all, yet the the SUPPORT_TAGS macro interacts with the CONFIG_SUN3 macro in 'interesting' ways. 5) Compile-time configuration with macros like SUPPORT_TAGS caused the configuration space to explode, leading to untestable and unmaintainable code that is too hard to reason about. The merge_contiguous_buffers() code is also abandoned. This was unused by sun3_scsi. Only atari_scsi used it and then only on TT, because only TT supports scatter/gather. I suspect that the TT would work fine with ENABLE_CLUSTERING instead. If someone can benchmark the difference then perhaps the merge_contiguous_buffers() code can be be justified. Until then we are better off without the extra complexity. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Finn Thain 提交于
Adopt the DMA implementation from atari_NCR5380.c. This means that atari_scsi and sun3_scsi can make use of the NCR5380.c core driver and the atari_NCR5380.c driver fork can be made redundant. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Finn Thain 提交于
Those wrapper drivers which use DMA define the REAL_DMA macro and those which use pseudo DMA define PSEUDO_DMA. These macros need to be removed for a number of reasons, not least of which is to have drivers share more code. Redefine the PDMA send and receive hooks as DMA setup hooks, so that the DMA code can be shared by all 5380 wrapper drivers. This will help to reunify the forked core driver. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Finn Thain 提交于
For those wrapper drivers which only implement Programmed IO, have NCR5380_dma_xfer_len() evaluate to zero. That allows PDMA to be easily disabled at run-time and so the PSEUDO_DMA macro is no longer needed. Also remove the spin counters used for debugging pseudo DMA drivers. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Finn Thain 提交于
Drivers that define PSEUDO_DMA also define NCR5380_dma_xfer_len. The core driver must call NCR5380_dma_xfer_len which means FLAG_NO_PSEUDO_DMA can be eradicated from the core driver. dmx3191d doesn't define PSEUDO_DMA and has no use for FLAG_NO_PSEUDO_DMA, so remove it there also. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 07 1月, 2016 8 次提交
-
-
由 Finn Thain 提交于
Because of the rudimentary design of the chip, it is necessary to poll the SCSI bus signals during PIO and this tends to hog the CPU. The driver will accept new commands while others execute, and this causes a soft lockup because the workqueue item will not terminate until the issue queue is emptied. When exercising dmx3191d using sequential IO from dd, the driver is sent 512 KiB WRITE commands and 128 KiB READs. For a PIO transfer, the rate is is only about 300 KiB/s, so these are long-running commands. And although PDMA may run at several MiB/s, interrupts are disabled for the duration of the transfer. Fix the unresponsiveness and soft lockup issues by calling cond_resched() after each command is completed and by limiting max_sectors for drivers that don't implement real DMA. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Finn Thain 提交于
The NCR5380 drivers have a home-spun linked list implementation for scsi_cmnd structs that uses cmd->host_scribble as a 'next' pointer. Adopt the standard list_head data structure and list operations instead. Remove the eh_abort_handler rather than convert it. Doing the conversion would only be churn because the existing EH handlers don't work and get replaced in a subsequent patch. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Finn Thain 提交于
Add missing .module initializer. Use distinct .proc_name values for the g_NCR5380 and g_NCR5380_mmio modules. Remove pointless CAN_QUEUE and CMD_PER_LUN override macros. Cleanup whitespace and code style. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Finn Thain 提交于
Remove unused includes (stat.h, signal.h, proc_fs.h) and move includes needed by the core drivers into the common header (delay.h etc). Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Finn Thain 提交于
Follow the example of the atari_NCR5380.c core driver and adopt the NCR5380_dma_xfer_len() hook. Implement NCR5380_dma_xfer_len() for dtc.c and g_NCR5380.c to take care of the limitations of these cards. Keep the default for drivers using PSEUDO_DMA. Eliminate the unused macro LIMIT_TRANSFERSIZE. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Finn Thain 提交于
Allocate a work queue that will permit busy waiting and sleeping. This means NCR5380_init() can potentially fail, so add this error path. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Finn Thain 提交于
The atari_NCR5380.c core driver now takes care of bus reset upon driver initialization if required (same as NCR5380.c). Move the Toshiba CD-ROM support into the core driver, enabled with a host flag, so that all NCR5380 drivers can make use of it. Drop the RESET_BOOT macros and the ATARI_SCSI_RESET_BOOT and ATARI_SCSI_TOSHIBA_DELAY Kconfig symbols, which are now redundant. Remove the atari_scsi_reset_boot(), mac_scsi_reset_boot() and sun3_scsi_reset_boot() routines. None of this duplicated code is needed now that all drivers can use NCR5380_maybe_reset_bus(). This brings atari_scsi, mac_scsi and sun3_scsi into line with all of the other NCR5380 drivers. The bus reset may raise an interrupt. That would be new behaviour for atari_scsi only when CONFIG_ATARI_SCSI_RESET_BOOT=n. The ST DMA interrupt is not assigned to atari_scsi at this stage, so CONFIG_ATARI_SCSI_RESET_BOOT=y may well be problematic already. Regardless, do_reset() now raises and clears the interrupt within local_irq_save/restore which should avoid problems. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Finn Thain 提交于
The NCR5380_local_declare and NCR5380_setup macros exist to define and initialize a particular local variable, to provide the address of the chip registers needed for the driver's implementation of its NCR5380_read/write register access macros. In cumana_1 and macscsi, these macros generate pointless code like this, struct Scsi_Host *_instance; _instance = instance; In pas16, the use of NCR5380_read/write in pas16_hw_detect() requires that the io_port local variable has been defined and initialized, but the NCR5380_local_declare and NCR5380_setup macros can't be used for that purpose because the Scsi_Host struct has not yet been instantiated. Moreover, these macros were removed from atari_NCR5380.c long ago and now they constitute yet another discrepancy between the two core driver forks. Remove these "optimizations". Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.com> Tested-by: NOndrej Zary <linux@rainbow-software.org> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 09 3月, 2015 1 次提交
-
-
由 Wolfram Sang 提交于
This platform_driver does not need to set an owner, it will be populated by the driver core. Signed-off-by: NWolfram Sang <wsa@the-dreams.de> Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 20 11月, 2014 15 次提交
-
-
由 Finn Thain 提交于
The static variable setup_use_tagged_queuing is declared in mac_scsi.c, sun3_scsi.c and atari_scsi.c and doesn't belong in the core driver. None of the other NCR5380 drivers suffer from this layering issue which makes merging the core drivers more difficult and will likely hinder plans for future use of platform data to configure the driver. Replace the static variable with a host flag. This way it can be reported along with the other flags. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
Convert mac_scsi to platform device and eliminate scsi_register(). Platform resources for chip registers now follow the documentation. This should fix issues with the Mac IIci (and possibly other models too). Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Acked-by: NGeert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
Fix whitespace, remove pointless volatile qualifiers and improve code style by use of INPUT_DATA_REG and OUTPUT_DATA_REG macros. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
Allow mac_scsi to be built as a module. Replace the old validation of __setup options with code that validates both module and __setup options. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
The #defines in mac_scsi.h are intended to influence subsequent #includes in mac_scsi.c. IMHO, that's too convoluted. Remove mac_scsi.h by moving those macro definitions to mac_scsi.c, consistent with other NCR5380 drivers. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
Convert Scsi_Cmnd to struct scsi_cmnd and drop the #include "scsi.h". The sun3_NCR5380.c core driver already uses struct scsi_cmnd so converting the other core drivers reduces the diff which makes them easier to unify. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
The *_RELEASE macros don't tell me anything. In some cases the version in the macro contradicts the version in the comments. Anyway, the Linux kernel version is sufficient information. Remove these macros to improve readability. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
Compile-time override of scsi host defaults is pointless for drivers that provide module parameters and __setup options for that. Too many macros make the code hard to read so remove them. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
If the host->info() method is not set, then host->name is used by default. For atari_scsi, that is exactly the same text. So remove the redundant info() method. Keep sun3_scsi.c in line with atari_scsi. Some NCR5380 drivers return an empty string from the info() method (arm/cumana_1.c arm/oak.c mac_scsi.c) while other drivers use the default (dmx3191d dtc.c g_NCR5380.c pas16.c t128.c). Implement a common info() method to replace a lot of duplicated code which the various drivers use to announce the same information. This replaces most of the (deprecated) show_info() output and all of the NCR5380_print_info() output. This also eliminates a bunch of code in g_NCR5380 which just duplicates functionality in the core driver. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
Oak scsi doesn't use any IRQ, but it sets irq = IRQ_NONE rather than SCSI_IRQ_NONE. Problem is, the core NCR5380 driver expects SCSI_IRQ_NONE if it is to issue IDENTIFY commands that prevent target disconnection. And, as Geert points out, IRQ_NONE is part of enum irqreturn. Other drivers, when they can't get an IRQ or can't use one, will set host->irq = SCSI_IRQ_NONE (that is, 255). But when they exit they will attempt to free IRQ 255 which was never requested. Fix these bugs by using NO_IRQ in place of SCSI_IRQ_NONE and IRQ_NONE. That means IRQ 0 is no longer probed by ISA drivers but I don't think this matters. Setting IRQ = 255 for these ISA drivers is understood to mean no IRQ. This remains supported so as to avoid breaking existing ISA setups (which can be difficult to get working) and because existing documentation (SANE, TLDP etc) describes this usage for the ISA NCR5380 driver options. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
The LIMIT_TRANSFERSIZE, PSEUDO_DMA, PARITY and UNSAFE options are all documented in the core drivers where they are used. The same goes for the chip databook reference. Remove the duplicate comments. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
Every NCR5380 driver sets AUTOSENSE so it need not be optional (and the mid-layer expects it). Remove this redundant macro to improve readability. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
Add missing static qualifiers and remove the now pointless prototypes. The NCR5380_* prototypes are all declared in NCR5380.h and renamed using macros. Further declarations are redundant (some are completely unused). Remove them. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
Some macros are never evaluated (i.e. FOO, USLEEP, SCSI2 and USE_WRAPPER; and in some drivers, NCR5380_intr and NCR5380_proc_info). DRIVER_SETUP serves no purpose anymore. Remove these macro definitions. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Tested-by: NMichael Schmitz <schmitzmic@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
Remove unused fields from hostdata structs declared with the NCR5380_implementation_fields macro. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 29 10月, 2014 1 次提交
-
-
由 Finn Thain 提交于
Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJiri Kosina <jkosina@suse.cz>
-
- 28 5月, 2014 2 次提交
-
-
由 Finn Thain 提交于
All three NCR5380 core driver implementations share the same NCR5380.h header file so they need to agree on certain macro definitions. The flag bit used by the NDEBUG_MERGING macro in atari_NCR5380 and sun3_NCR5380 collides with the bit used by NDEBUG_LISTS. Moreover, NDEBUG_ABORT appears in NCR5380.c so it should be defined in NCR5380.h rather than in each of the many drivers using that core. An undefined NDEBUG_ABORT macro caused compiler errors and led to dodgy workarounds in the core driver that can now be removed. (See commits f566a576 and 185a7a1c.) Move all of the NDEBUG_ABORT, NDEBUG_TAGS and NDEBUG_MERGING macro definitions into NCR5380.h where all the other NDEBUG macros live. Also, incorrect "#ifdef NDEBUG" becomes "#if NDEBUG" to fix the warning: drivers/scsi/mac_scsi.c: At top level: drivers/scsi/NCR5380.c:418: warning: 'NCR5380_print' defined but not used drivers/scsi/NCR5380.c:459: warning: 'NCR5380_print_phase' defined but not used The debugging code is now enabled when NDEBUG != 0. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Acked-by: NSam Creasey <sammy@sammy.net> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Finn Thain 提交于
Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Acked-by: NSam Creasey <sammy@sammy.net> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 20 12月, 2013 1 次提交
-
-
由 Alan 提交于
Missing check on scsi_register Signed-off-by: NAlan Cox <gnomes@lxorguk.ukuu.org.uk> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 10 4月, 2013 1 次提交
-
-
由 Al Viro 提交于
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
-
- 29 3月, 2012 1 次提交
-
-
由 David Howells 提交于
Remove all #inclusions of asm/system.h preparatory to splitting and killing it. Performed with the following command: perl -p -i -e 's!^#\s*include\s*<asm/system[.]h>.*\n!!' `grep -Irl '^#\s*include\s*<asm/system[.]h>' *` Signed-off-by: NDavid Howells <dhowells@redhat.com>
-
- 22 1月, 2012 1 次提交
-
-
由 Finn Thain 提交于
Don't enable the SCSI irq when initialising the chip -- the irq has no handler yet. Signed-off-by: NFinn Thain <fthain@telegraphics.com.au> Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org>
-
- 15 12月, 2011 1 次提交
-
-
由 Geert Uytterhoeven 提交于
The m68k core irq code stopped honoring these flags during the irq restructuring in 2006. Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 30 6月, 2011 1 次提交
-
-
由 Geert Uytterhoeven 提交于
This fixes: drivers/scsi/mac_scsi.c:220:5: warning: "NDEBUG_ABORT" is not defined drivers/scsi/mac_scsi.c:271:5: warning: "NDEBUG_ABORT" is not defined Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-