Andrew Morton napsal(a): > On Wed, 06 Jun 2007 17:34:16 +0200 Jiri Slaby <[EMAIL PROTECTED]> wrote: > >> Mikael Pettersson napsal(a): >>> On Wed, 06 Jun 2007 15:04:00 +0200, Jiri Slaby wrote: >>>> Andrew Morton napsal(a): >>>>> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc4/2.6.22-rc4-mm1/ >>>> It freezes during bootup while searching for sata drives on sata_promise. >>>> There >>>> were 2 issues with sata_promise in -rc4 IIRC, one was fixed, the latter >>>> remains >>>> unresolved. Or, should be this solved too, Mikael, Tejun and is this yet >>>> eanother problem? (In this case I'll post dmesg and co.) >>> I know of only one sata_promise-specific issue in 2.6.22-rc4. >>> Tejun's "sata_promise: use TF interface for polling NODATA commands" >>> patch posted today fixes it. >> It's in that -mm, so I think, this seems to be another problem. > > No, it wasn't in 2.6.22-rc4-mm1.
Huh, what did I smoke? Something rejects to patch and now I don't know what. > Here it is - please test? Ok, this solves this problem, but LVM is broken. Seems similar to Re: 2.6.22-rc4-mm1 - 'lvm vgscan' busticated again... Message-ID: <[EMAIL PROTECTED]> Will try to play with this. > From: Tejun Heo <[EMAIL PROTECTED]> > > sata_promise uses two different command modes - packet and TF. Packet mode > is intelligent low-overhead mode while TF is the same old taskfile > interface. As with other advanced interface (ahci/sil24), > ATA_TFLAG_POLLING has no effect in packet mode. However, PIO commands are > issued using TF interface in polling mode, so pdc_interrupt() considers > interrupts spurious if ATA_TFLAG_POLLING is set. > > This is broken for polling NODATA commands because command is issued using > packet mode but the interrupt handler ignores it due to ATA_TFLAG_POLLING. > Fix pdc_qc_issue_prot() such that ATA/ATAPI NODATA commands are issued > using TF interface if ATA_TFLAG_POLLING is set. > > This patch fixes detection failure introduced by polling SETXFERMODE. > > Signed-off-by: Tejun Heo <[EMAIL PROTECTED]> > Acked-by: Mikael Pettersson <[EMAIL PROTECTED]> > Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> > --- > > drivers/ata/sata_promise.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff -puN > drivers/ata/sata_promise.c~sata_promise-use-tf-interface-for-polling-nodata-commands > drivers/ata/sata_promise.c > --- > a/drivers/ata/sata_promise.c~sata_promise-use-tf-interface-for-polling-nodata-commands > +++ a/drivers/ata/sata_promise.c > @@ -784,9 +784,12 @@ static unsigned int pdc_qc_issue_prot(st > if (qc->dev->flags & ATA_DFLAG_CDB_INTR) > break; > /*FALLTHROUGH*/ > + case ATA_PROT_NODATA: > + if (qc->tf.flags & ATA_TFLAG_POLLING) > + break; > + /*FALLTHROUGH*/ > case ATA_PROT_ATAPI_DMA: > case ATA_PROT_DMA: > - case ATA_PROT_NODATA: > pdc_packet_start(qc); > return 0; > > @@ -800,7 +803,7 @@ static unsigned int pdc_qc_issue_prot(st > static void pdc_tf_load_mmio(struct ata_port *ap, const struct ata_taskfile > *tf) > { > WARN_ON (tf->protocol == ATA_PROT_DMA || > - tf->protocol == ATA_PROT_NODATA); > + tf->protocol == ATA_PROT_ATAPI_DMA); > ata_tf_load(ap, tf); > } > > @@ -808,7 +811,7 @@ static void pdc_tf_load_mmio(struct ata_ > static void pdc_exec_command_mmio(struct ata_port *ap, const struct > ata_taskfile *tf) > { > WARN_ON (tf->protocol == ATA_PROT_DMA || > - tf->protocol == ATA_PROT_NODATA); > + tf->protocol == ATA_PROT_ATAPI_DMA); > ata_exec_command(ap, tf); > } regards, -- http://www.fi.muni.cz/~xslaby/ Jiri Slaby faculty of informatics, masaryk university, brno, cz e-mail: jirislaby gmail com, gpg pubkey fingerprint: B674 9967 0407 CE62 ACC8 22A0 32CC 55C3 39D4 7A7E - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/