tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: SCSI changes - PR58452 for review
On Wed, 7 Aug 2024 10:21:28 Taylor R Campbell wrote:
> Instead of introducing scsipi_done_once, why not just freeze and thaw
> the channel around scsipi_done?
>
I tried the following and it resulted in a slew of error messages from the
kernel resetting the scsi bus/ aborting.
+ scsipi_channel_freeze(&sc->sc_channel, 1);
/* Tell common SCSI code it is done. */
scsipi_done(xs);
sc->sc_state = NCR_IDLE;
/* Now ncr5380_sched() may be called again. */
+ scsipi_channel_thaw(&sc->sc_channel, 1);
> Alternatively, is it critical for scsipi_done to happen before
> sc->sc_state = NCR_IDLE? Could we just swap the order of scsipi_done
> and sc->sc_state = NCR_IDLE?
>
I tried this also which resulted in similar error messages.
I guess in both cases another request is sent to the controller in
scsipi_run_queue, called from scsipi_done which results in an inconsistient
state.
scspi_done_once, and thaw with an argument of 0 to kick the queue as posted
earlier works great (with a noticable improvent - most shell commands
responding/starting twice as fast as usual).
> (I wonder why only this scsi driver seems to have the issue. Is it
> doing something wonky with maintaining its own copy of some kind of
> driver state that is inconsistent with the normal control flow of the
> scsi framework?)
Not sure I don't know if other scsi controller drivers have this issue (cjep@
reported to me that there was kernel message "Should have flushed the queue"
reported with bluescsi-v2 and esp(4) when used along with the dse(4) driver).
Home |
Main Index |
Thread Index |
Old Index