From: Jeff Garzik <jgarzik@pobox.com>
To: Albert Lee <albertcc@tw.ibm.com>
Cc: Linux IDE <linux-ide@vger.kernel.org>,
Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>,
Doug Maxey <dwm@maxeymade.com>, Tejun Heo <htejun@gmail.com>
Subject: Re: [PATCH RFC] libata: interrupt driven pio
Date: Fri, 09 Sep 2005 13:35:25 -0400 [thread overview]
Message-ID: <4321C7DD.5050503@pobox.com> (raw)
In-Reply-To: <4321B4E0.8020801@tw.ibm.com>
Albert Lee wrote:
> Dear all,
>
> The interrupt driven PIO draft patch is ready for your review.
>
> Changes:
> - add PIO_ST_FIRST for the state before sending ATAPI CDB or sending
> "ATA PIO data out" first data block.
> - remove the ATA_FLAG_NOINTR flag since the interrupt handler is now
> aware of the states
> - modify ata_pio_sector() and atapi_pio_bytes() to work in the interrupt
> context
> - modify the ata_host_intr() to handle PIO interrupts
> - modify ata_qc_issue_prot() to initialize states
> - atapi_packet_task() changed to handle "ATA PIO data out" first data block
> - support the pre-ATA4 ATAPI device which raise interrupt when ready to
> receive CDB
>
> Patch against 2.6.13 (80ac2912f846c01d702774bb6aa7100ec71e88b9).
Very nice, thanks for working on this.
Comments:
1) With this work, PIO_ST_xxx is no longer an appropriate name. I
suggest s/PIO_ST_/HSM_ST_/
2) ditto with s/pio_task_state/hsm_task_state/
3) Don't bother with in_atomic(), since we mix contexts in libata.
Causes more trouble than its worth. Just use *map_atomic()
4) prefer 'ata_id_cdb_intr' to 'atapi_...'
5) please don't put braces around single-line C statements:
+ if (status & ATA_BUSY) {
+ goto idle_irq;
+ }
6) the following locking is questionable. AFAICS this should be
resolved elsewhere, and if you have to take the lock here, you already
have problems
+ /* PIO data out protocol.
+ * send first data block.
+ */
+ ata_pio_sector(qc);
- /* PIO commands are handled by polling */
+ spin_lock_irqsave(&ap->host_set->lock, flags);
ap->pio_task_state = PIO_ST;
- queue_work(ata_wq, &ap->pio_task);
+ spin_unlock_irqrestore(&ap->host_set->lock, flags);
+
+ /* interrupt handler takes over from here */
ie. why queue the task at all, if the intr handler takes over?
7) Overall, looks pretty good at first glance. This patch will require
much testing before global deployment. Once you have a final patch,
we'll let it simmer in libata-dev.git for a while, allowing -mm users
plenty of time for testing. Possibly a 2.6.16 version target.
next prev parent reply other threads:[~2005-09-09 17:35 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 [this message]
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
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=4321C7DD.5050503@pobox.com \
--to=jgarzik@pobox.com \
--cc=albertcc@tw.ibm.com \
--cc=bzolnier@gmail.com \
--cc=dwm@maxeymade.com \
--cc=htejun@gmail.com \
--cc=linux-ide@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).