All of lore.kernel.org
 help / color / mirror / Atom feed
From: Albert Lee <albertcc@tw.ibm.com>
To: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Cc: Jeff Garzik <jgarzik@pobox.com>,
	Linux IDE <linux-ide@vger.kernel.org>,
	Doug Maxey <dwm@maxeymade.com>, Tejun Heo <htejun@gmail.com>,
	Mark Lord <mlord@pobox.com>, Brett Russ <russb@emc.com>
Subject: Re: [PATCH/RFC 3/4] libata: interrupt driven pio for libata-core
Date: Fri, 30 Sep 2005 19:28:28 +0800	[thread overview]
Message-ID: <433D215C.6080206@tw.ibm.com> (raw)
In-Reply-To: <58cb370e0509300228h7ab212ebg3916e89c637bed53@mail.gmail.com>

Hi Bart,:

>
>>When the state is HSM_ST_FIRST,  ata_host_intr() checks the
>>(qc->dev->flags & ATA_DFLAG_CDB_INTR) flag.
>>Also in atapi_packet_task(), the host lock is aquired during the state
>>transition from HSM_ST_FIRST to next state.
>>So, the race between the irq handler and atapi_packet_task() is avoided.
>>    
>>
>
>What about ATAPI device with !dev->flags & ATA_DFLAG_CDB_INTR)?
>
>Shouldn't we do spin_lock_irqsave() in atapi_packet_task() before
>actually touching hardware?
>
>  
>
For the ATAPI devices that don't raise CDB interrupes,
when atapi_packet_task() is entered, the state is HSM_ST_FIRST.
 In this state, the irq handler will check the ATA_DFLAG_CDB_INTR flag 
and skip touching the hardware.
atapi_packet_task() is safe to read the device status register at this 
state.
atapi_packet_task() does spin_lock_irqsave() when changing the states 
from HSM_ST_FIRST to say, HSM_ST and sending out the data.

For the ATAPI devices that raise CDB interrupes,
ata_qc_issue_prot() won't queue an new atapi_packet_task().
The irq handler takes over after ata_qc_issue_prot() and can touch the 
hardware.

Thanks for the comments,

Albert


  reply	other threads:[~2005-09-30 11:28 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-09 16:14 [PATCH RFC] libata: interrupt driven pio Albert Lee
2005-09-09 17:35 ` Jeff Garzik
2005-09-09 18:14   ` Doug Maxey
2005-09-22  4:00   ` [PATCH/RFC 0/3] libata: interrupt driven pio (revised) Albert Lee
2005-09-22  4:09     ` [PATCH/RFC 1/3] libata: interrupt driven pio for libata-core Albert Lee
2005-09-23  9:25       ` Albert Lee
2005-09-22  4:11     ` [PATCH/RFC 2/3] libata: rename task states/variables Albert Lee
2005-09-23  9:34       ` Albert Lee
2005-09-22  4:14     ` [PATCH/RFC 3/3] libata: interrupt driven pio for LLD Albert Lee
2005-09-22 12:56       ` Mark Lord
2005-09-23  2:40         ` Albert Lee
2005-09-23  9:46     ` [PATCH/RFC 0/3] libata: interrupt driven pio (revised) Jeff Garzik
2005-09-27  9:31       ` [PATCH/RFC 0/4] libata: interrupt driven pio (revised 2) Albert Lee
2005-09-27  9:34         ` [PATCH/RFC 1/4] libata: indent and whitespace change Albert Lee
2005-09-27  9:36         ` [PATCH/RFC 2/4] libata: rename host states Albert Lee
2005-09-28 15:59           ` Jeff Garzik
2005-09-27  9:38         ` [PATCH/RFC 3/4] libata: interrupt driven pio for libata-core Albert Lee
2005-09-28 16:09           ` Jeff Garzik
2005-09-29 10:08           ` Bartlomiej Zolnierkiewicz
2005-09-30  8:02             ` Albert Lee
2005-09-30  9:28               ` Bartlomiej Zolnierkiewicz
2005-09-30 11:28                 ` Albert Lee [this message]
2005-09-30 12:00                   ` Bartlomiej Zolnierkiewicz
2005-09-30 11:04             ` [PATCH/RFC 0/4] libata: irq driven pio follow-up patches Albert Lee
2005-09-30 11:07               ` [PATCH/RFC 1/4] irq-pio: add comments and cleanup Albert Lee
2005-09-30 11:09               ` [PATCH/RFC 2/4] irq-pio: rename atapi_packet_task() and comments Albert Lee
2005-09-30 11:11               ` [PATCH/RFC 3/4] irq-pio: simplify if condition in ata_dataout_task() Albert Lee
2005-09-30 11:14               ` [PATCH/RFC 4/4] irq-pio: cleanup ata_qc_issue_prot() Albert Lee
2005-09-30 11:21               ` [PATCH/RFC 0/4] libata: irq driven pio follow-up patches Jeff Garzik
2005-10-03 11:46                 ` [PATCH/RFC 0/4] libata: more " Albert Lee
2005-10-03 13:00                   ` [PATCH/RFC 1/4] irq-pio: move functions Albert Lee
2005-10-03 13:02                   ` [PATCH/RFC 2/4] irq-pio: remove ap->dataout_task Albert Lee
2005-10-04 10:09                     ` Jeff Garzik
2005-10-04 11:54                       ` Albert Lee
2005-10-03 13:18                   ` [PATCH/RFC 3/4] irq-pio: integrate ata_pio_first_block() with ata_pio_task() Albert Lee
2005-10-04 10:10                     ` Jeff Garzik
2005-10-03 13:19                   ` [PATCH/RFC 4/4] irq-pio: add read/write multiple support Albert Lee
2005-10-03 13:35                     ` Mark Lord
2005-10-04  9:43                       ` Jeff Garzik
2005-10-04 12:00                         ` Albert Lee
2005-10-04 12:07                           ` Jeff Garzik
2005-10-04 12:22                             ` [PATCH/RFC 0/4] libata: CHS follow-up patches Albert Lee
2005-10-04 12:27                               ` [PATCH/RFC 1/4] CHS: white space beautification Albert Lee
2005-10-04 12:49                                 ` Jeff Garzik
2005-10-04 12:29                               ` [PATCH/RFC 2/4] CHS: tidy up SCSI lba and transfer length calculation Albert Lee
2005-10-04 12:30                               ` [PATCH/RFC 3/4] CHS: add CHS support to ata_scsi_start_stop_xlat() Albert Lee
2005-10-04 12:34                               ` [PATCH/RFC 4/4] CHS: calculate LBA28/LBA48 commands and protocol on the fly Albert Lee
2005-10-04 12:52                                 ` Jeff Garzik
2005-10-05 11:16                                   ` [PATCH/RFC 0/4] libata: more CHS follow-up patches Albert Lee
2005-10-05 11:20                                     ` [PATCH/RFC 1/4] CHS: move the initialization of taskfile LBA flags Albert Lee
2005-10-05 11:23                                     ` [PATCH/RFC 2/4] CHS: calculate read/write commands and protocol on the fly Albert Lee
2005-10-05 11:25                                     ` [PATCH/RFC 3/4] CHS: support overriding the ata_rwcmd_protocol() function Albert Lee
2005-10-05 11:27                                     ` [PATCH/RFC 4/4] CHS: optimize LBA28/LBA48 usage Albert Lee
2005-10-05 11:59                                     ` [PATCH/RFC 1/4] CHS: move the initialization of taskfile LBA flags (resend) Albert Lee
2005-10-05 12:02                                     ` [PATCH/RFC 2/4] CHS: calculate read/write commands and protocol on the fly (resend) Albert Lee
2005-10-05 12:03                                     ` [PATCH/RFC 3/4] CHS: support overriding the ata_rwcmd_protocol() function (resend) Albert Lee
2005-10-05 12:04                                     ` [PATCH/RFC 4/4] CHS: optimize LBA28/LBA48 usage (resend) Albert Lee
2005-10-06 11:26                                     ` [PATCH/RFC 0/4] libata: more CHS follow-up patches Jeff Garzik
2005-10-07  6:53                                       ` [PATCH 0/3] libata: CHS follow-up patches (resend #2) Albert Lee
2005-10-07  6:58                                         ` [PATCH 1/3] CHS: move the initialization of taskfile LBA flags Albert Lee
2005-10-07  7:01                                         ` [PATCH 2/3] CHS: calculate read/write commands and protocol on the fly Albert Lee
2005-10-07  7:04                                         ` [PATCH 3/3] CHS: LBA28/LBA48 optimization Albert Lee
2005-10-07  8:32                                         ` [PATCH 0/3] libata: CHS follow-up patches (resend #4) Albert Lee
2005-10-07  8:34                                           ` [PATCH 1/3] CHS: move the initialization of taskfile LBA flags " Albert Lee
2005-10-07  8:36                                           ` [PATCH 2/3] CHS: calculate read/write commands and protocol on the fly " Albert Lee
2005-10-07  8:37                                           ` [PATCH 3/3] CHS: LBA28/LBA48 optimization " Albert Lee
2005-10-09 13:41                                           ` [PATCH 0/3] libata: CHS follow-up patches " Jeff Garzik
2005-10-11 11:05                                             ` [PATCH 0/4] libata: CHS follow-up patches (resend #5) Albert Lee
2005-10-11 11:09                                               ` [PATCH 1/4] CHS: move the initialization of taskfile LBA flags " Albert Lee
2005-10-11 11:11                                               ` [PATCH 2/4] CHS: calculate read/write commands and protocol on the fly " Albert Lee
2005-10-11 11:21                                               ` [PATCH 4/4] CHS: LBA28/LBA48 optimization " Albert Lee
2005-10-11 13:09                                                 ` Mark Lord
2005-10-11 13:12                                                 ` Mark Lord
2005-10-12  5:05                                                   ` Albert Lee
2005-10-04 15:48                                 ` [PATCH/RFC 4/4] CHS: calculate LBA28/LBA48 commands and protocol on the fly Alan Cox
2005-10-04 10:19                     ` [PATCH/RFC 4/4] irq-pio: add read/write multiple support Jeff Garzik
2005-09-27  9:39         ` [PATCH/RFC 4/4] libata: interrupt driven pio for LLD Albert Lee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=433D215C.6080206@tw.ibm.com \
    --to=albertcc@tw.ibm.com \
    --cc=bzolnier@gmail.com \
    --cc=dwm@maxeymade.com \
    --cc=htejun@gmail.com \
    --cc=jgarzik@pobox.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=mlord@pobox.com \
    --cc=russb@emc.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.