Messages in this thread | | | Date | Wed, 17 May 2006 00:36:09 +0900 | From | Tejun Heo <> | Subject | Re: PATCH: Fix broken PIO with libata |
| |
Alan Cox wrote: > #2 The core sets ATA_DFLAG_PIO to indicate PIO commands should be used > on this channel. This same information is available in dev->dma_mode but > for some reason we get two sources of the info. The ATA_DFLAG_PIO is set > once during setup and then cleared but not re-computed by the revalidate > function. This causes DMA commands to be issued when PIO would be and > usually an Oops or hang
Hmmm... I tried to fix this problem in the following commit. With it, ATA_DFLAG_PIO isn't cleared over ata_dev_configure(). Only ata_dev_set_mode() is allowed to diddle with it and does about the same thing as your patch does.
diff-tree ea1dd4e13010eb9dd5ffb4bfabbb472bc238bebb (from 198e0fed9e59461fc1890dd Author: Tejun Heo <htejun@gmail.com> Date: Sun Apr 2 18:51:53 2006 +0900
[PATCH] libata: clear only affected flags during ata_dev_configure()
ata_dev_configure() should not clear dynamic device flags determined elsewhere. Lower eight bits are reserved for feature flags, define ATA_DFLAG_CFG_MASK and clear only those bits before configuring device. Without this patch, ATA_DFLAG_PIO gets turned off during revalidation making PIO mode unuseable.
Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
> Also contains a related bracketing fix
Is this agreed upon? I tend to omit almost all unnecessary (by operator precedence) parenthesis, so in new EH and all other stuff, the "a && b & c" sort of lines are abundant. If this is something that's agreed upon, I can do a clean sweep over those.
-- tejun - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |