]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/ata/libata-sff.c
libata-sff: remove harmful BUG_ON from ata_bmdma_qc_issue
[net-next-2.6.git] / drivers / ata / libata-sff.c
index efa4a18cfb9d92fb9a79670abf69669f96f2d436..3b82d8ef76f0ffc81e6bb62e9d3ea19d1be57195 100644 (file)
@@ -2735,10 +2735,6 @@ unsigned int ata_bmdma_qc_issue(struct ata_queued_cmd *qc)
 {
        struct ata_port *ap = qc->ap;
 
-       /* see ata_dma_blacklisted() */
-       BUG_ON((ap->flags & ATA_FLAG_PIO_POLLING) &&
-              qc->tf.protocol == ATAPI_PROT_DMA);
-
        /* defer PIO handling to sff_qc_issue */
        if (!ata_is_dma(qc->tf.protocol))
                return ata_sff_qc_issue(qc);
@@ -3318,14 +3314,7 @@ void ata_sff_port_init(struct ata_port *ap)
 
 int __init ata_sff_init(void)
 {
-       /*
-        * FIXME: In UP case, there is only one workqueue thread and if you
-        * have more than one PIO device, latency is bloody awful, with
-        * occasional multi-second "hiccups" as one PIO device waits for
-        * another.  It's an ugly wart that users DO occasionally complain
-        * about; luckily most users have at most one PIO polled device.
-        */
-       ata_sff_wq = create_workqueue("ata_sff");
+       ata_sff_wq = alloc_workqueue("ata_sff", WQ_RESCUER, WQ_MAX_ACTIVE);
        if (!ata_sff_wq)
                return -ENOMEM;