On 12/22/2015 02:18 AM, Finn Thain wrote:
Introduce a new eh_abort_handler implementation. This one attempts to
follow all of the rules relating to EH handlers. There is still a known
bug: during selection, a command becomes invisible to the EH handlers
because it only appears in a pointer on the
On 12/22/2015 02:18 AM, Finn Thain wrote:
NCR5380_information_transfer() may re-queue a command for autosense,
after calling scsi_eh_prep_cmnd(). This creates several possibilities:
1. Reselection may intervene before the re-queued command gets processed.
If the reconnected command then unde
On 12/22/2015 02:18 AM, Finn Thain wrote:
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 conver
On 12/22/2015 02:18 AM, Finn Thain wrote:
Implement a 'complete_cmd' function to complete commands. This is needed
by the following patch; the new function provides a site for the logic
needed to correctly handle REQUEST SENSE commands.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c
On 12/22/2015 02:18 AM, Finn Thain wrote:
The hostdata struct is now protected by a spin lock so the volatile
qualifiers are redundant. Remove them.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.h | 12 ++--
drivers/scsi/atari_NCR5380.c |2 +-
2 files changed, 7 in
On 12/22/2015 02:18 AM, Finn Thain wrote:
Printing command pointers can be useful when debugging queues. Other than
that, the LIST and REMOVE macros are just clutter. These macros are
redundant now that NDEBUG_QUEUES causes pointers to be printed, so remove
them.
Signed-off-by: Finn Thain
---
On 12/22/2015 02:18 AM, Finn Thain wrote:
Print the command pointers in the log messages for debugging queue data
structures. The LIST and REMOVE macros can then be removed.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 36
drivers/scsi/
On 12/22/2015 02:18 AM, Finn Thain wrote:
Make use of the shost_priv() helper. Remove HOSTDATA and SETUP_HOSTDATA
macros because they harm readability.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 23 ++-
drivers/scsi/atari_NCR5380.c | 20 +++-
On 12/22/2015 02:18 AM, Finn Thain wrote:
Replace all H_NO and some HOSTNO macros (both peculiar to atari_NCR5380.c)
with a new dsprintk macro that's more useful and more consistent. The new
macro avoids a lot of boilerplate in new code in subsequent patches. Keep
NCR5380.c in sync. Remaining HOS
On 12/22/2015 02:18 AM, Finn Thain wrote:
Some NCR5380 hosts offer a .show_info method to access the contents of
the various command list data structures from a procfs file. When NDEBUG
is set, the same information is sent to the console during EH.
The two core drivers, atari_NCR5380.c and NCR53
On 12/22/2015 02:18 AM, Finn Thain wrote:
NCR5380.c presently uses the instance->host_lock spin lock. Convert this
to a new spin lock that protects the NCR5380_hostdata struct.
atari_NCR5380.c previously used local_irq_save/restore() rather than a
spin lock. Convert this to hostdata->lock in irq
On 12/22/2015 02:18 AM, Finn Thain wrote:
Remove FLAG_DTC3181E. It was used to suppress a final Arbitration Lost
(SEL asserted) test that isn't actually needed. The test was suppressed
because it causes problems for DTC436 and DTC536 chips. It takes place
after the host wins arbitration, so SEL h
On 12/22/2015 02:18 AM, Finn Thain wrote:
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: Finn Thain
---
drivers/scsi/at
On 12/22/2015 02:18 AM, Finn Thain wrote:
When a target reports a QUEUE_FULL condition it causes the driver to
update the 'queue_size' limit with the number of currently allocated tags.
At least, that's what's supposed to happen, according to the comments.
Unfortunately the terms in the assignmen
On 12/22/2015 02:18 AM, Finn Thain wrote:
NDEBUG_NO_DATAOUT should not disable DATA IN phases too. Fix this.
(This bug has long been fixed in atari_NCR5380.c.)
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c |2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Hannes
On 12/22/2015 02:18 AM, Finn Thain wrote:
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: Finn Thain
---
drivers/scsi/NCR5380.c |2 --
drivers/scsi/NCR5380.h |4
On 12/22/2015 02:18 AM, Finn Thain wrote:
Fix the array bounds check when transferring an extended message from the
target.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c |3 ++-
drivers/scsi/atari_NCR5380.c |4 ++--
2 files changed, 4 insertions(+), 3 deletions(-)
Re
On 12/22/2015 02:18 AM, Finn Thain wrote:
Bring the two NCR5380_reselect() implementations into agreement.
Replace infinite loops in atari_NCR5380.c with timeouts, as per NCR5380.c.
Remove 'abort' flag in NCR5380.c as per atari_NCR5380.c -- if reselection
fails, there may be no MESSAGE IN phase
On 12/22/2015 02:18 AM, Finn Thain wrote:
The workarounds for chip errata appear twice, in slightly different
forms. One is used when defined(REAL_DMA) || defined(REAL_DMA_POLL), the
other when defined(PSEUDO_DMA). In the PDMA case, the workarounds have
been made conditional on FLAG_NO_DMA_FIXUPS
On 12/22/2015 02:18 AM, Finn Thain wrote:
The flags DMA_WORKS_RIGHT, FLAG_NCR53C400 and FLAG_HAS_LAST_BYTE_SENT
all mean the same thing, i.e. the chip is not a 538[01]. (More recent
devices such as the 53C80 have a 'Last Byte Sent' bit in the Target
Command Register as well as other fixes for End
On 12/22/2015 02:18 AM, Finn Thain wrote:
SCSI bus protocol sometimes requires monitoring two related conditions
simultaneously. Enhance NCR5380_poll_politely() for this purpose, and
put it to use in the arbitration algorithm. It will also find use in
pseudo DMA.
Signed-off-by: Finn Thain
---
On 12/22/2015 02:18 AM, Finn Thain wrote:
Because interrupt handling is crucial to the core driver(s), all wrapper
drivers need to agree on this code. This patch removes discrepancies.
NCR5380_intr() in NCR5380.c has the following pointless loop that differs
from the code in atari_NCR5380.c.
On 12/22/2015 02:18 AM, Finn Thain wrote:
Configuring core drivers using macros like this one prevents re-unifying
the core driver forks, and prevents implementing the core driver as a
library or a platform driver.
The UNSAFE macro in particular is a poor workaround for the problem of
interrupt
On 12/22/2015 02:18 AM, Finn Thain wrote:
The complex main_running/queue_main mechanism is peculiar to
atari_NCR5380.c. It isn't SMP safe and offers little value given that
the work queue already offers concurrency management. Remove this
complexity to bring atari_NCR5380.c closer to NCR5380.c.
On 12/22/2015 02:18 AM, Finn Thain wrote:
Each host instance now has it's own work queue so the main() work item can
sleep when necessary. That means we can use a simple work item rather than
a delayed work item. This brings NCR5380.c closer to atari_NCR5380.c.
Signed-off-by: Finn Thain
---
On 12/22/2015 02:18 AM, Finn Thain wrote:
When there is a queued command and no connected command, NCR5380_select()
is called and arbitration begins. The chip waits for BUS FREE once the
MR_ARBITRATE bit in the mode register is enabled. That means there is
no need to wait for BUS FREE after disco
On 12/22/2015 02:18 AM, Finn Thain wrote:
Allow target selection to fail with a timeout instead of waiting in
infinite loops. This gets rid of the unused NCR_TIMEOUT macro, it is more
defensive and has proved helpful in debugging.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c |
On 12/22/2015 02:18 AM, Finn Thain wrote:
Use timeouts in do_abort() in atari_NCR5380.c instead of infinite loops.
Also fix the kernel-doc comment. Keep the two core driver forks in sync.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 26 +-
drivers/s
On 12/22/2015 02:18 AM, Finn Thain wrote:
NCR5380_poll_politely() returns either 0 (success) or -ETIMEDOUT. However,
in do_abort(), the return value is incorrectly taken to be the status
register value. This means that the bus is put into DATA OUT phase instead
of MESSAGE OUT. Fix this.
Signed-o
On 12/22/2015 02:18 AM, Finn Thain wrote:
NCR5380_poll_politely() never returns -1. That means do_abort() can fail
to handle a timeout after waiting for the target to negate REQ. Fix this
and cleanup other NCR5380_poll_politely() call sites.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380
On 12/22/2015 02:18 AM, Finn Thain wrote:
MESSAGE REJECT does not imply DISCONNECT: the target is about to enter
MESSAGE IN or MESSAGE OUT phase.
This bug fix comes from atari_NCR5380.c. Unfortunately it never made it
into the original NCR5380.c core driver.
Signed-off-by: Finn Thain
---
dr
On 12/22/2015 02:18 AM, Finn Thain wrote:
From: Hannes Reinecke
Some old drivers partially implemented support for linked commands using
a "proposed" next_link pointer in struct scsi_cmnd that never actually
existed. Remove this code.
Signed-off-by: Finn Thain
---
This is a modified version
On 12/22/2015 02:18 AM, Finn Thain wrote:
Remove the DEF_SCSI_QCMD macro (already removed from atari_NCR5380.c). The
lock provided by DEF_SCSI_QCMD is only needed for queue data structures.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 30 +++---
dri
On 12/22/2015 02:18 AM, Finn Thain wrote:
The host spin lock needs to be acquired by NCR5380_abort() before it calls
NCR5380_select(). This patch doesn't actually fix the EH issues in this
driver but it does avoid this:
BUG: spinlock already unlocked on CPU#0, kworker/u4:1/14
lock: 0xc0c0f834,
On 12/22/2015 02:18 AM, Finn Thain wrote:
According to the SCSI-2 draft revision 10L, atari_NCR5380.c is correct
when it says that the phase lines are valid up until ACK is negated
following the transmission of the last byte in MESSAGE IN phase. This is
true for all information transfer phases, f
On 12/22/2015 02:18 AM, Finn Thain wrote:
The atari_NCR5380.c and NCR5380.c core drivers differ in their handling of
target disconnection. This is partly because atari_NCR5380.c had all of
the polling and sleeping removed to become entirely interrupt-driven, and
it is partly because of damage don
On 12/22/2015 02:18 AM, Finn Thain wrote:
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.
Eli
On 12/22/2015 02:18 AM, Finn Thain wrote:
If NCR5380_select() returns -1, it means arbitration was lost or selection
failed and should be retried. If the main loop simply terminates when there
are still commands on the issue queue, they will remain queued until they
expire.
Fix this by clearing
On 12/22/2015 02:18 AM, Finn Thain wrote:
Linux v2.1.105 changed the algorithm for polling for the BSY signal
in NCR5380_select() and NCR5380_main().
Presently, this code has a bug. Back then, NCR5380_set_timer(hostdata, 1)
meant reschedule main() after sleeping for 10 ms. Repeated 25 times this
On 12/22/2015 02:17 AM, Finn Thain wrote:
When in process context, sleep during polling if doing so won't add
significant latency. In interrupt context or if the lock is held, poll
briefly then give up. Keep both core drivers in sync.
Calibrate busy-wait iterations to allow for variation in chip
On 12/22/2015 02:17 AM, Finn Thain wrote:
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: Finn Thain
---
In subsequent patches, the work function adopts this work queue so it
can sleep whi
On 12/22/2015 02:17 AM, Finn Thain wrote:
Commit 8b801ead3d7a ("[ARM] rpc: update Acorn SCSI drivers to modern ecard
interfaces") neglected to remove a request_region() call in cumana_1.c.
Commit eda32612f7b2 ("[PATCH] give all LLDD driver a ->release method") in
history/history.git added some p
On 12/22/2015 02:17 AM, Finn Thain wrote:
Linux 2.1.105 introduced the USLEEP_WAITLONG delay, apparently "needed for
Mustek scanners". It is intended to stall the issue queue for 5 seconds.
There are a number of problems with this.
1. Only g_NCR5380 enables the delay, which implies that the othe
On 12/22/2015 02:17 AM, Finn Thain wrote:
NCR5380.c is not compliant with the SCSI-2 standard (at least, not with
the draft revision 10L that I have to refer to). The selection algorithm
in atari_NCR5380.c is correct, so use that.
Signed-off-by: Finn Thain
Reviewed-by: Hannes Reinecke
Cheer
If you need help with anything please let me know I'd be more than happy to
contribute (with testing and a review if you want). I have a system with an
older LTO-3 tape drive that I can use any time (it doesn’t support partitioning
so if nothing else I can make sure partitioning attempts fail gr
On Sat, Dec 05 2015, Verma, Vishal L wrote:
> On Fri, 2015-12-04 at 15:30 -0800, James Bottomley wrote:
> [...]
>> > +ssize_t badblocks_store(struct badblocks *bb, const char *page,
>> > size_t len,
>> > + int unack)
>> [...]
>> > +int badblocks_init(struct badblocks *bb, int enab
Reviewed-by: Matthew R. Ochs
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
> On Dec 21, 2015, at 11:21 AM, Don Brace wrote:
>
> left off some changes from Rasmus Villemoes where he changed
> snprintf to scnprintf
>
> Suggested-by: Rasmus Villemoes
> Reviewed-by: Justin Lindley
> Reviewed-by: Kevin Barnett
> Reviewed-by: Scott Teel
> Reviewed-by: Rasmus Villemoes
>
> "James" == James Smart writes:
James> This patch set updates the lpfc driver to revision 11.0.0.10
James> The patches were cut against scsi-misc
Applied to 4.5/scsi-queue except for 3/17.
--
Martin K. Petersen Oracle Linux Engineering
--
To unsubscribe from this list: send the line
Like my previous work on the NCR5380 drivers, this patch series has bug
fixes, code cleanup and modernization. These drivers suffer from mistakes,
poor style and neglect and this long series addresses the worst of it,
covering all ten wrapper drivers and both of the core driver forks. The
combined
Replace {P,T,DTC}DEBUG_INIT with NDEBUG_INIT. Remove dead debugging
code, including code that's conditional upon *DEBUG_TRANSFER.
Signed-off-by: Finn Thain
Reviewed-by: Hannes Reinecke
---
drivers/scsi/dtc.c | 18 ++
drivers/scsi/dtc.h | 27 ---
ASM macro is never defined. rtrc in pas16.c is not used.
NCR5380_map_config, do_NCR5380_intr, do_t128_intr and do_pas16_intr
are unused. NCR_NOT_SET harms readability. Remove them.
Signed-off-by: Finn Thain
Reviewed-by: Hannes Reinecke
---
drivers/scsi/NCR5380.h |3 ---
drivers/scsi/g_NC
Move board-specific code like this,
NCR5380_write(C400_CONTROL_STATUS_REG, CSR_BASE);
from the core driver to the board driver. Eliminate the NCR53C400 macro
from the core driver. Removal of all macros like this one will be
necessary in order to have one core driver that can support all kin
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 pointl
Make use of do_reset() in the bus reset handler in atari_NCR5380.c. The
version in NCR5380.c already does so. Keep them in sync.
Signed-off-by: Finn Thain
Reviewed-by: Hannes Reinecke
---
Bus reset handlers in both core drivers still have serious problems for
EH purposes. Those problems are ad
This patch splits the NCR5380_init() function into two parts, similar
to the scheme used with atari_NCR5380.c. This avoids two problems.
Firstly, NCR5380_init() may perform a bus reset, which would cause the
chip to assert IRQ. The chip is unable to mask its bus reset interrupt.
Drivers can't call
This macro makes the code cryptic. Remove it.
Signed-off-by: Finn Thain
Reviewed-by: Hannes Reinecke
---
drivers/scsi/NCR5380.c |2 +-
drivers/scsi/g_NCR5380.c |7 ---
drivers/scsi/g_NCR5380.h |2 --
3 files changed, 5 insertions(+), 6 deletions(-)
Index: linux/drivers/scsi/
The aborted flag was introduced in v1.1.38 but never used. Remove it.
Signed-off-by: Finn Thain
Reviewed-by: Hannes Reinecke
---
drivers/scsi/NCR5380.c |2 --
drivers/scsi/NCR5380.h |1 -
drivers/scsi/atari_NCR5380.c |2 --
3 files changed, 5 deletions(-)
Index: linux/
Remove the duplicate write to the Select Enable Register that appeared
in v1.1.38.
Also remove the redundant write to Initiator Command Register prior to
calling do_abort().
Signed-off-by: Finn Thain
Reviewed-by: Hannes Reinecke
---
drivers/scsi/NCR5380.c |2 --
drivers/scsi/atari_N
Remove the restart_select and targets_present variables introduced in
Linux v1.1.38. The former was used only for a questionable debug printk
and the latter "so we can call a select failure a retryable condition".
Well, retrying select failure in general is a different problem to a
target that does
The "failed" label in NCR5380_select() is not helpful. Some failures
return 0, others -1. Use return instead of goto to improve clarity and
brevity, like atari_NCR5380.c does. Fix the relevant comments.
Signed-off-by: Finn Thain
Reviewed-by: Hannes Reinecke
---
drivers/scsi/NCR5380.c |
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_RESE
Merge the bus reset code from NCR5380.c into atari_NCR5380.c. This allows
for removal of a lot of duplicated code conditional on the RESET_BOOT
macro (in the next patch).
The atari_NCR5380.c fork lacks the do_reset() and NCR5380_poll_politely()
routines from NCR5380.c, so introduce them. They are
Allow target selection to fail with a timeout instead of waiting in
infinite loops. This gets rid of the unused NCR_TIMEOUT macro, it is more
defensive and has proved helpful in debugging.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 44 ++---
drive
Configuring core drivers using macros like this one prevents re-unifying
the core driver forks, and prevents implementing the core driver as a
library or a platform driver.
The UNSAFE macro in particular is a poor workaround for the problem of
interrupt latency. Releasing the locks complicates thi
The host spin lock needs to be acquired by NCR5380_abort() before it calls
NCR5380_select(). This patch doesn't actually fix the EH issues in this
driver but it does avoid this:
BUG: spinlock already unlocked on CPU#0, kworker/u4:1/14
lock: 0xc0c0f834, .magic: dead4ead, .owner: /-1, .owner_cpu: -
Bring the two NCR5380_reselect() implementations into agreement.
Replace infinite loops in atari_NCR5380.c with timeouts, as per NCR5380.c.
Remove 'abort' flag in NCR5380.c as per atari_NCR5380.c -- if reselection
fails, there may be no MESSAGE IN phase so don't attempt data transfer.
During sel
Use timeouts in do_abort() in atari_NCR5380.c instead of infinite loops.
Also fix the kernel-doc comment. Keep the two core driver forks in sync.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 26 +-
drivers/scsi/atari_NCR5380.c | 34 +++
SCSI bus protocol sometimes requires monitoring two related conditions
simultaneously. Enhance NCR5380_poll_politely() for this purpose, and
put it to use in the arbitration algorithm. It will also find use in
pseudo DMA.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 66 +++
NCR5380_poll_politely() returns either 0 (success) or -ETIMEDOUT. However,
in do_abort(), the return value is incorrectly taken to be the status
register value. This means that the bus is put into DATA OUT phase instead
of MESSAGE OUT. Fix this.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR538
Because interrupt handling is crucial to the core driver(s), all wrapper
drivers need to agree on this code. This patch removes discrepancies.
NCR5380_intr() in NCR5380.c has the following pointless loop that differs
from the code in atari_NCR5380.c.
done = 1;
do {
When there is a queued command and no connected command, NCR5380_select()
is called and arbitration begins. The chip waits for BUS FREE once the
MR_ARBITRATE bit in the mode register is enabled. That means there is
no need to wait for BUS FREE after disconnecting.
There is presently no polling for
NCR5380_poll_politely() never returns -1. That means do_abort() can fail
to handle a timeout after waiting for the target to negate REQ. Fix this
and cleanup other NCR5380_poll_politely() call sites.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 10 +-
1 file changed, 5 inser
When a target reports a QUEUE_FULL condition it causes the driver to
update the 'queue_size' limit with the number of currently allocated tags.
At least, that's what's supposed to happen, according to the comments.
Unfortunately the terms in the assignment are swapped. Fix this and
cleanup some obs
Each host instance now has it's own work queue so the main() work item can
sleep when necessary. That means we can use a simple work item rather than
a delayed work item. This brings NCR5380.c closer to atari_NCR5380.c.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 12 +---
d
From: Hannes Reinecke
Some old drivers partially implemented support for linked commands using
a "proposed" next_link pointer in struct scsi_cmnd that never actually
existed. Remove this code.
Signed-off-by: Finn Thain
---
This is a modified version of Hannes' patch so I have dropped his
sign
Replace all H_NO and some HOSTNO macros (both peculiar to atari_NCR5380.c)
with a new dsprintk macro that's more useful and more consistent. The new
macro avoids a lot of boilerplate in new code in subsequent patches. Keep
NCR5380.c in sync. Remaining HOSTNO macros are removed as side-effects
of su
Printing command pointers can be useful when debugging queues. Other than
that, the LIST and REMOVE macros are just clutter. These macros are
redundant now that NDEBUG_QUEUES causes pointers to be printed, so remove
them.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 19 ---
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: Finn Thain
---
drivers/scsi/atari_scsi.c |2 +-
drivers/scsi/dmx3191d.c
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 chu
The workarounds for chip errata appear twice, in slightly different
forms. One is used when defined(REAL_DMA) || defined(REAL_DMA_POLL), the
other when defined(PSEUDO_DMA). In the PDMA case, the workarounds have
been made conditional on FLAG_NO_DMA_FIXUPS. Do the same for the DMA case,
to eliminate
Make use of the shost_priv() helper. Remove HOSTDATA and SETUP_HOSTDATA
macros because they harm readability.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 23 ++-
drivers/scsi/atari_NCR5380.c | 20 +++-
2 files changed, 17 insertions(+), 2
Print the command pointers in the log messages for debugging queue data
structures. The LIST and REMOVE macros can then be removed.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 36
drivers/scsi/atari_NCR5380.c | 43 +++
NCR5380.c lacks a sane eh_bus_reset_handler. The atari_NCR5380.c code is
much better but it should not throw out the issue queue (that would be
a host reset) and it neglects to set the result code for commands that it
throws out. Fix these bugs and keep the two core drivers in sync.
Signed-off-by:
NCR5380_information_transfer() may re-queue a command for autosense,
after calling scsi_eh_prep_cmnd(). This creates several possibilities:
1. Reselection may intervene before the re-queued command gets processed.
If the reconnected command then undergoes autosense, this causes the
scsi_eh_s
Implement a 'complete_cmd' function to complete commands. This is needed
by the following patch; the new function provides a site for the logic
needed to correctly handle REQUEST SENSE commands.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 31 ++--
driv
The hostdata struct is now protected by a spin lock so the volatile
qualifiers are redundant. Remove them.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.h | 12 ++--
drivers/scsi/atari_NCR5380.c |2 +-
2 files changed, 7 insertions(+), 7 deletions(-)
Index: linux/drive
Remove FLAG_DTC3181E. It was used to suppress a final Arbitration Lost
(SEL asserted) test that isn't actually needed. The test was suppressed
because it causes problems for DTC436 and DTC536 chips. It takes place
after the host wins arbitration, so SEL has been asserted. These chips
can't seem to
Keep the two core driver forks in sync.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 71 +++--
drivers/scsi/atari_NCR5380.c | 102 +++
2 files changed, 84 insertions(+), 89 deletions(-)
Index: linux/drivers/scsi
From: Ondrej Zary
Add I/O register mapping for DTC chips and enable PDMA mode.
These chips have 16-bit wide HOST BUFFER register and it must be read
by 16-bit accesses (we lose data otherwise).
Large PIO transfers crash at least the DTCT-436P chip (all reads result
in 0xFF) so this patch actual
From: Ondrej Zary
Add I/O register mapping for NCR53C400A and enable PDMA mode to
improve performance and fix non-working IRQ.
Tested with HP C2502 (and user-space enabler).
Signed-off-by: Ondrej Zary
Signed-off-by: Finn Thain
---
Changes to Ondrej's version:
- An 'if' statement is now a 's
The CVS revision log is not nearly as useful as the history/history.git
repo, so remove it. Roman's commentary at the top of his driver repeats
the same information elsewhere in the file so remove it. Also remove
some other redundant or obsolete comments.
Both the driver and the datasheets confusi
From: Ondrej Zary
The check for 53C80 registers accessibility was commented out because
it was broken (inverted). Fix and enable it.
Signed-off-by: Ondrej Zary
Signed-off-by: Finn Thain
---
drivers/scsi/g_NCR5380.c | 37 ++---
1 file changed, 6 insertions(+)
Remove the HOSTNO macro that is peculiar to atari_NCR5380.c and
contributes to the problem of divergence of the NCR5380 core drivers.
Keep NCR5380.c in sync.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 17 +
drivers/scsi/atari_NCR5380.c | 23 +---
From: Ondrej Zary
Pseudo-DMA (PDMA) has been broken for ages, resulting in hangs on
53C400-based cards.
According to 53C400 datasheet, PDMA transfer length must be a multiple
of 128. Check if that's true and use PIO if it's not.
This makes PDMA work on 53C400 (Canon FG2-5202).
Signed-off-by: O
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 30 +++---
drivers/scsi/atari_NCR5380.c | 26 +-
2 files changed, 32 insertions(+), 24 deletions(-)
Index: linux/drivers/scsi/NCR5380.c
==
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: Finn Thain
---
In subsequent patches, the work function adopts this work queue so it
can sleep while polling, which allows the removal of some
In the past, NCR5380.c was overlooked by those working on atari_NCR5380.c
and this caused needless divergence. All of the changes in this patch were
taken from atari_NCR5380.c.
This removes some unimportant discrepancies between the two core driver
forks so that 'diff' can be used to reveal the im
The atari_NCR5380.c and NCR5380.c core drivers differ in their handling of
target disconnection. This is partly because atari_NCR5380.c had all of
the polling and sleeping removed to become entirely interrupt-driven, and
it is partly because of damage done to NCR5380.c after atari_NCR5380.c was
for
Remove the DEF_SCSI_QCMD macro (already removed from atari_NCR5380.c). The
lock provided by DEF_SCSI_QCMD is only needed for queue data structures.
Signed-off-by: Finn Thain
---
drivers/scsi/NCR5380.c | 30 +++---
drivers/scsi/atari_NCR5380.c |2 +-
2 files c
1 - 100 of 146 matches
Mail list logo