* libata-passthrough problem. @ 2005-11-12 10:55 James Courtier-Dutton 2005-11-12 15:18 ` Mark Lord 0 siblings, 1 reply; 22+ messages in thread From: James Courtier-Dutton @ 2005-11-12 10:55 UTC (permalink / raw) To: linux-ide I am using (at 12-Nov-2005) git clone rsync://rsync.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev.git uname -r 2.6.15-rc1-gcd52d1ee I have found that although smartctl correctly displays different information for /dev/sda and /dev/sdb, hdparm does not. hdparm displays the same info for /dev/sda and /dev/sdb i.e. hdparm -I /dev/sdb actually returns the information about /dev/sda See below for details. Is this a bug in hdparm or libata-devel ? James # smartctl -a /dev/sda smartctl version 5.33 [i686-pc-linux-gnu] Copyright (C) 2002-4 Bruce Allen Home page is http://smartmontools.sourceforge.net/ Device: ATA ST3300831AS Version: 3.01 # smartctl -a /dev/sdb smartctl version 5.33 [i686-pc-linux-gnu] Copyright (C) 2002-4 Bruce Allen Home page is http://smartmontools.sourceforge.net/ Device: ATA ST3160023AS Version: 3.18 # hdparm -I /dev/sda /dev/sda: ATA device, with non-removable media Model Number: ST3300831AS Serial Number: 3NF0A9CQ Firmware Revision: 3.01 ... # hdparm -I /dev/sdb /dev/sdb: ATA device, with non-removable media Model Number: ST3300831AS Serial Number: 3NF0A9CQ Firmware Revision: 3.01 ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: libata-passthrough problem. 2005-11-12 10:55 libata-passthrough problem James Courtier-Dutton @ 2005-11-12 15:18 ` Mark Lord 2005-11-12 17:57 ` Jeff Garzik 0 siblings, 1 reply; 22+ messages in thread From: Mark Lord @ 2005-11-12 15:18 UTC (permalink / raw) To: James Courtier-Dutton; +Cc: linux-ide James Courtier-Dutton wrote: > I am using (at 12-Nov-2005) > git clone rsync://rsync.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev.git > uname -r > 2.6.15-rc1-gcd52d1ee > I have found that although smartctl correctly displays different > information for /dev/sda and /dev/sdb, hdparm does not. > hdparm displays the same info for /dev/sda and /dev/sdb > i.e. hdparm -I /dev/sdb actually returns the information about /dev/sda > > See below for details. > > Is this a bug in hdparm or libata-devel ? ... > # hdparm -I /dev/sda > /dev/sda: > ATA device, with non-removable media > Model Number: ST3300831AS > Serial Number: 3NF0A9CQ > Firmware Revision: 3.01 > ... > # hdparm -I /dev/sdb > /dev/sdb: > ATA device, with non-removable media > Model Number: ST3300831AS > Serial Number: 3NF0A9CQ > Firmware Revision: 3.01 That would be a bug in libata passthru. The reason the two programs behave differently in this example, is that they likely use different HDIO_* ioctls, and libata/passthru must have a bug in setting the unit number for the HDIO_DRIVE_CMD call. We know it cannot be an hdparm bug, because HDIO_DRIVE_CMD does not have a unit# parameter (and it would not be valid for libata to accept one, either!). All it does is open the /dev/ node, and issue that call. Use strace to verify that the correct device is indeed being opened. Is there a tarball of the latest libata-dev-git available? Givent that, I could probably sift through libata/passthru and find/fix the bug, but keeping up with git technology is something I gave up trying to do ages ago --> it's really not for the casual developer. Cheers ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: libata-passthrough problem. 2005-11-12 15:18 ` Mark Lord @ 2005-11-12 17:57 ` Jeff Garzik 2005-11-12 19:53 ` Mark Lord 0 siblings, 1 reply; 22+ messages in thread From: Jeff Garzik @ 2005-11-12 17:57 UTC (permalink / raw) To: Mark Lord; +Cc: James Courtier-Dutton, linux-ide Mark Lord wrote: > Is there a tarball of the latest libata-dev-git available? > Givent that, I could probably sift through libata/passthru and find/fix > the bug, but keeping up with git technology is something I gave up > trying to do ages ago --> it's really not for the casual developer. Just download 2.6.15-rc1. Jeff ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: libata-passthrough problem. 2005-11-12 17:57 ` Jeff Garzik @ 2005-11-12 19:53 ` Mark Lord 2005-11-12 19:56 ` Mark Lord 2005-11-12 23:19 ` libata-passthrough problem Jeff Garzik 0 siblings, 2 replies; 22+ messages in thread From: Mark Lord @ 2005-11-12 19:53 UTC (permalink / raw) To: Jeff Garzik; +Cc: James Courtier-Dutton, linux-ide Jeff Garzik wrote: > > Just download 2.6.15-rc1. > Okay, got it. Jeff: I cannot find anywhere in libata code, where the ATA unit number gets ORed into tf->device. If this is not done, then no PATA slave devices will be addressed correctly, even for regular I/O. Where is setting that bit done? I'm sure it must be in there, I just don't see it. Cheers ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: libata-passthrough problem. 2005-11-12 19:53 ` Mark Lord @ 2005-11-12 19:56 ` Mark Lord 2005-11-12 23:19 ` Jeff Garzik 2005-11-12 23:19 ` libata-passthrough problem Jeff Garzik 1 sibling, 1 reply; 22+ messages in thread From: Mark Lord @ 2005-11-12 19:56 UTC (permalink / raw) To: Mark Lord; +Cc: Jeff Garzik, James Courtier-Dutton, linux-ide Speaking of which, these comments are wrong: /** * ata_tf_from_fis - Convert SATA FIS to ATA taskfile * @fis: Buffer from which data will be input * @tf: Taskfile to output * * Converts a standard ATA taskfile to a Serial ATA * FIS structure (Register - Host to Device). ... The second comment should probably read something like: * Converts a serial ATA FIS structure to a * standard ATA taskfile. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: libata-passthrough problem. 2005-11-12 19:56 ` Mark Lord @ 2005-11-12 23:19 ` Jeff Garzik 2005-11-12 23:54 ` [PATCH 2.6.15-rc1] libata: fix passthru for slave devices Mark Lord 0 siblings, 1 reply; 22+ messages in thread From: Jeff Garzik @ 2005-11-12 23:19 UTC (permalink / raw) To: Mark Lord; +Cc: James Courtier-Dutton, linux-ide Mark Lord wrote: > Speaking of which, these comments are wrong: > > /** > * ata_tf_from_fis - Convert SATA FIS to ATA taskfile > * @fis: Buffer from which data will be input > * @tf: Taskfile to output > * > * Converts a standard ATA taskfile to a Serial ATA > * FIS structure (Register - Host to Device). > ... > > The second comment should probably read something like: > > * Converts a serial ATA FIS structure to a > * standard ATA taskfile. submit a patch, pretty please... Jeff ^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 2.6.15-rc1] libata: fix passthru for slave devices 2005-11-12 23:19 ` Jeff Garzik @ 2005-11-12 23:54 ` Mark Lord 2005-11-12 23:55 ` [PATCH 2.6.15-rc1] libata: fix comments on ata_tf_from_fis() Mark Lord ` (3 more replies) 0 siblings, 4 replies; 22+ messages in thread From: Mark Lord @ 2005-11-12 23:54 UTC (permalink / raw) To: Jeff Garzik; +Cc: James Courtier-Dutton, linux-ide [-- Attachment #1: Type: text/plain, Size: 234 bytes --] This patch forces a correct master/slave unit bit when sending libata commands via SCSI passthru. The bit is left as-is for ports which do not support slave devices. Compiles, not tested. Signed-off-by: Mark Lord <mlord@pobox.com> [-- Attachment #2: passthru.patch --] [-- Type: text/x-patch, Size: 532 bytes --] --- linux-2.6.15-rc1/drivers/scsi/libata-scsi.c.orig 2005-11-11 20:43:36.000000000 -0500 +++ linux/drivers/scsi/libata-scsi.c 2005-11-12 18:45:43.000000000 -0500 @@ -2276,6 +2276,12 @@ tf->device = scsicmd[8]; tf->command = scsicmd[9]; } + /* + * If applicable, enforce a correct master/slave bit for this device: + */ + if ((qc->ap->flags & ATA_FLAG_SLAVE_POSS)) + tf->command = qc->dev->devno ? + (tf->command | ATA_DEV1) : (tf->command & ~ATA_DEV1); /* * Filter SET_FEATURES - XFER MODE command -- otherwise, ^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 2.6.15-rc1] libata: fix comments on ata_tf_from_fis() 2005-11-12 23:54 ` [PATCH 2.6.15-rc1] libata: fix passthru for slave devices Mark Lord @ 2005-11-12 23:55 ` Mark Lord 2005-11-13 0:15 ` [PATCH 2.6.15-rc1] libata: fix passthru for slave devices Jeff Garzik ` (2 subsequent siblings) 3 siblings, 0 replies; 22+ messages in thread From: Mark Lord @ 2005-11-12 23:55 UTC (permalink / raw) To: Jeff Garzik; +Cc: James Courtier-Dutton, linux-ide [-- Attachment #1: Type: text/plain, Size: 95 bytes --] Fix description on comments for ata_tf_from_fis(). Signed-off-by: Mark Lord <mlord@pobox.com> [-- Attachment #2: comments.patch --] [-- Type: text/x-patch, Size: 473 bytes --] --- linux-2.6.15-rc1/drivers/scsi/libata-core.c.orig 2005-11-11 20:43:36.000000000 -0500 +++ linux/drivers/scsi/libata-core.c 2005-11-12 18:46:40.000000000 -0500 @@ -532,8 +532,7 @@ * @fis: Buffer from which data will be input * @tf: Taskfile to output * - * Converts a standard ATA taskfile to a Serial ATA - * FIS structure (Register - Host to Device). + * Converts a serial ATA FIS structure to a standard ATA taskfile. * * LOCKING: * Inherited from caller. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 2.6.15-rc1] libata: fix passthru for slave devices 2005-11-12 23:54 ` [PATCH 2.6.15-rc1] libata: fix passthru for slave devices Mark Lord 2005-11-12 23:55 ` [PATCH 2.6.15-rc1] libata: fix comments on ata_tf_from_fis() Mark Lord @ 2005-11-13 0:15 ` Jeff Garzik 2005-11-13 2:50 ` Mark Lord 2005-11-13 0:16 ` Jeff Garzik 2005-11-13 3:04 ` Mark Lord 3 siblings, 1 reply; 22+ messages in thread From: Jeff Garzik @ 2005-11-13 0:15 UTC (permalink / raw) To: Mark Lord; +Cc: James Courtier-Dutton, linux-ide Mark Lord wrote: > This patch forces a correct master/slave unit bit > when sending libata commands via SCSI passthru. > The bit is left as-is for ports which do not > support slave devices. > > Compiles, not tested. > > Signed-off-by: Mark Lord <mlord@pobox.com> > > > ------------------------------------------------------------------------ > > --- linux-2.6.15-rc1/drivers/scsi/libata-scsi.c.orig 2005-11-11 20:43:36.000000000 -0500 > +++ linux/drivers/scsi/libata-scsi.c 2005-11-12 18:45:43.000000000 -0500 > @@ -2276,6 +2276,12 @@ > tf->device = scsicmd[8]; > tf->command = scsicmd[9]; > } > + /* > + * If applicable, enforce a correct master/slave bit for this device: > + */ > + if ((qc->ap->flags & ATA_FLAG_SLAVE_POSS)) kill the extra parens > + tf->command = qc->dev->devno ? > + (tf->command | ATA_DEV1) : (tf->command & ~ATA_DEV1); tf->command? ;-) Also, see if you figure out a way to send patches inline, without MIME attachments. Jeff ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 2.6.15-rc1] libata: fix passthru for slave devices 2005-11-13 0:15 ` [PATCH 2.6.15-rc1] libata: fix passthru for slave devices Jeff Garzik @ 2005-11-13 2:50 ` Mark Lord 2005-11-13 3:20 ` Jeff Garzik 0 siblings, 1 reply; 22+ messages in thread From: Mark Lord @ 2005-11-13 2:50 UTC (permalink / raw) To: Jeff Garzik; +Cc: James Courtier-Dutton, linux-ide Jeff Garzik wrote: > Mark Lord wrote: > >> + if ((qc->ap->flags & ATA_FLAG_SLAVE_POSS)) > > kill the extra parens No. Those parens are needed, to help gcc distinguish between a common programming error and intentional use of "&" rather than "&&". > + tf->command = qc->dev->devno ? > + (tf->command | ATA_DEV1) : (tf->command & ~ATA_DEV1); But I could kill *those* extran parens, while I do s/command/device/ . Cheers ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 2.6.15-rc1] libata: fix passthru for slave devices 2005-11-13 2:50 ` Mark Lord @ 2005-11-13 3:20 ` Jeff Garzik 2005-11-13 4:37 ` Mark Lord 0 siblings, 1 reply; 22+ messages in thread From: Jeff Garzik @ 2005-11-13 3:20 UTC (permalink / raw) To: Mark Lord; +Cc: James Courtier-Dutton, linux-ide Mark Lord wrote: > Jeff Garzik wrote: > >> Mark Lord wrote: >> >>> + if ((qc->ap->flags & ATA_FLAG_SLAVE_POSS)) >> >> >> kill the extra parens > > > No. Those parens are needed, to help gcc distinguish between > a common programming error and intentional use of "&" rather than "&&". How is this different from any other 'flags' test in libata? Jeff ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 2.6.15-rc1] libata: fix passthru for slave devices 2005-11-13 3:20 ` Jeff Garzik @ 2005-11-13 4:37 ` Mark Lord 0 siblings, 0 replies; 22+ messages in thread From: Mark Lord @ 2005-11-13 4:37 UTC (permalink / raw) To: Jeff Garzik; +Cc: James Courtier-Dutton, linux-ide Jeff Garzik wrote: > Mark Lord wrote: > >> No. Those parens are needed, to help gcc distinguish between >> a common programming error and intentional use of "&" rather than "&&". > > How is this different from any other 'flags' test in libata? ACK. Go for it. Cheers ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 2.6.15-rc1] libata: fix passthru for slave devices 2005-11-12 23:54 ` [PATCH 2.6.15-rc1] libata: fix passthru for slave devices Mark Lord 2005-11-12 23:55 ` [PATCH 2.6.15-rc1] libata: fix comments on ata_tf_from_fis() Mark Lord 2005-11-13 0:15 ` [PATCH 2.6.15-rc1] libata: fix passthru for slave devices Jeff Garzik @ 2005-11-13 0:16 ` Jeff Garzik 2005-11-13 2:48 ` Mark Lord 2005-11-13 3:04 ` Mark Lord 3 siblings, 1 reply; 22+ messages in thread From: Jeff Garzik @ 2005-11-13 0:16 UTC (permalink / raw) To: Mark Lord; +Cc: James Courtier-Dutton, linux-ide Mark Lord wrote: > This patch forces a correct master/slave unit bit > when sending libata commands via SCSI passthru. > The bit is left as-is for ports which do not > support slave devices. > > Compiles, not tested. > > Signed-off-by: Mark Lord <mlord@pobox.com> > > > ------------------------------------------------------------------------ > > --- linux-2.6.15-rc1/drivers/scsi/libata-scsi.c.orig 2005-11-11 20:43:36.000000000 -0500 > +++ linux/drivers/scsi/libata-scsi.c 2005-11-12 18:45:43.000000000 -0500 > @@ -2276,6 +2276,12 @@ > tf->device = scsicmd[8]; > tf->command = scsicmd[9]; > } > + /* > + * If applicable, enforce a correct master/slave bit for this device: > + */ > + if ((qc->ap->flags & ATA_FLAG_SLAVE_POSS)) > + tf->command = qc->dev->devno ? > + (tf->command | ATA_DEV1) : (tf->command & ~ATA_DEV1); also, I would think you'd want to ditch the ATA_FLAG_SLAVE_POSS test. Otherwise userspace could pass an invalid bit through unimpeded. Jeff ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 2.6.15-rc1] libata: fix passthru for slave devices 2005-11-13 0:16 ` Jeff Garzik @ 2005-11-13 2:48 ` Mark Lord 0 siblings, 0 replies; 22+ messages in thread From: Mark Lord @ 2005-11-13 2:48 UTC (permalink / raw) To: Jeff Garzik; +Cc: James Courtier-Dutton, linux-ide Jeff Garzik wrote: > Mark Lord wrote: > >> This patch forces a correct master/slave unit bit >> when sending libata commands via SCSI passthru. >> The bit is left as-is for ports which do not >> support slave devices. ... > also, I would think you'd want to ditch the ATA_FLAG_SLAVE_POSS test. > Otherwise userspace could pass an invalid bit through unimpeded. No. Since that bit is currently "undefined" for SATA, vendors may find a use for it in vendor-specific commands. Thus, pass it through unless the lower level drive says that it supports SLAVES. Cheers ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 2.6.15-rc1] libata: fix passthru for slave devices 2005-11-12 23:54 ` [PATCH 2.6.15-rc1] libata: fix passthru for slave devices Mark Lord ` (2 preceding siblings ...) 2005-11-13 0:16 ` Jeff Garzik @ 2005-11-13 3:04 ` Mark Lord 2005-11-13 3:11 ` Mark Lord 3 siblings, 1 reply; 22+ messages in thread From: Mark Lord @ 2005-11-13 3:04 UTC (permalink / raw) To: Jeff Garzik; +Cc: James Courtier-Dutton, linux-ide Mark Lord wrote: > This patch forces a correct master/slave unit bit > when sending libata commands via SCSI passthru. > The bit is left as-is for ports which do not > support slave devices. Revised version: apply bitfix to tf->device (duh!), and nuke extra parens. Compiles, not tested. Signed-off-by: Mark Lord <mlord@pobox.com> ------------------------------------------------------------------------ --- linux-2.6.15-rc1/drivers/scsi/libata-scsi.c.orig 2005-11-11 20:43:36.000000000 -0500 +++ linux/drivers/scsi/libata-scsi.c 2005-11-12 18:45:43.000000000 -0500 @@ -2276,6 +2276,12 @@ tf->device = scsicmd[8]; tf->command = scsicmd[9]; } + /* + * If slave is possible, enforce correct master/slave bit for this port: + */ + if ((qc->ap->flags & ATA_FLAG_SLAVE_POSS)) + tf->device = qc->dev->devno ? + tf->device | ATA_DEV1 : tf->command & ~ATA_DEV1; /* * Filter SET_FEATURES - XFER MODE command -- otherwise, ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 2.6.15-rc1] libata: fix passthru for slave devices 2005-11-13 3:04 ` Mark Lord @ 2005-11-13 3:11 ` Mark Lord 0 siblings, 0 replies; 22+ messages in thread From: Mark Lord @ 2005-11-13 3:11 UTC (permalink / raw) To: Jeff Garzik; +Cc: James Courtier-Dutton, linux-ide AGAIN, with *feeling*. (I'm in the middle of a complete distro-upgrade on my machine here, so my tools are only half functional now. Fix any residual formatting issues yourself, please.) - fixed whitespace, fixed third instance of "s/command/device". > Compiles, not tested. Signed-off-by: Mark Lord <mlord@pobox.com> --- linux-2.6.15-rc1/drivers/scsi/libata-scsi.c.orig 2005-11-11 20:43:36.000000000 -0500 +++ linux/drivers/scsi/libata-scsi.c 2005-11-12 18:45:43.000000000 -0500 @@ -2276,6 +2276,12 @@ tf->device = scsicmd[8]; tf->command = scsicmd[9]; } + /* + * If slave is possible, enforce correct master/slave bit for this port: + */ + if ((qc->ap->flags & ATA_FLAG_SLAVE_POSS)) + tf->device = qc->dev->devno ? + tf->device | ATA_DEV1 : tf->device & ~ATA_DEV1; /* * Filter SET_FEATURES - XFER MODE command -- otherwise, ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: libata-passthrough problem. 2005-11-12 19:53 ` Mark Lord 2005-11-12 19:56 ` Mark Lord @ 2005-11-12 23:19 ` Jeff Garzik 2005-11-12 23:40 ` Mark Lord 1 sibling, 1 reply; 22+ messages in thread From: Jeff Garzik @ 2005-11-12 23:19 UTC (permalink / raw) To: Mark Lord; +Cc: James Courtier-Dutton, linux-ide Mark Lord wrote: > Jeff Garzik wrote: > >> >> Just download 2.6.15-rc1. >> > > Okay, got it. > > Jeff: I cannot find anywhere in libata code, > where the ATA unit number gets ORed into tf->device. > > If this is not done, then no PATA slave devices will > be addressed correctly, even for regular I/O. > > Where is setting that bit done? > I'm sure it must be in there, I just don't see it. ata_tf_init() in include/linux/libata.h. I admit with guilt that I had to search around a bit for it, too :) Jeff ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: libata-passthrough problem. 2005-11-12 23:19 ` libata-passthrough problem Jeff Garzik @ 2005-11-12 23:40 ` Mark Lord 2005-11-13 15:13 ` James Courtier-Dutton 0 siblings, 1 reply; 22+ messages in thread From: Mark Lord @ 2005-11-12 23:40 UTC (permalink / raw) To: Jeff Garzik; +Cc: James Courtier-Dutton, linux-ide Jeff Garzik wrote: > > ata_tf_init() in include/linux/libata.h. > > I admit with guilt that I had to search around a bit for it, too :) Thanks, Jeff. In that case, the bug with passthru is obvious: static unsigned int ata_scsi_pass_thru(struct ata_queued_cmd *qc, const u8 *scsicmd) { ... tf->device = scsicmd[13]; <<--- always forces ATA "master" unit 0 ... tf->device = scsicmd[13]; <<--- always forces ATA "master" unit 0 ... Those lines should each do this instead: tf->device = qc->dev->devno ? (scsicmd[13] | ATA_DEV1) : (scsicmd[13] & ~ATA_DEV1); I'll see about a patch for that shortly. Cheers ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: libata-passthrough problem. 2005-11-12 23:40 ` Mark Lord @ 2005-11-13 15:13 ` James Courtier-Dutton 2005-11-13 17:01 ` Mark Lord 0 siblings, 1 reply; 22+ messages in thread From: James Courtier-Dutton @ 2005-11-13 15:13 UTC (permalink / raw) To: Mark Lord; +Cc: Jeff Garzik, linux-ide Mark Lord wrote: > Jeff Garzik wrote: > >> >> ata_tf_init() in include/linux/libata.h. >> >> I admit with guilt that I had to search around a bit for it, too :) > > > Thanks, Jeff. > > In that case, the bug with passthru is obvious: > > static unsigned int > ata_scsi_pass_thru(struct ata_queued_cmd *qc, const u8 *scsicmd) > { > ... > tf->device = scsicmd[13]; <<--- always forces ATA "master" > unit 0 > ... > tf->device = scsicmd[13]; <<--- always forces ATA "master" > unit 0 > ... > > > Those lines should each do this instead: > > tf->device = qc->dev->devno ? (scsicmd[13] | ATA_DEV1) > : (scsicmd[13] & ~ATA_DEV1); > > I'll see about a patch for that shortly. > > Cheers > > Please tell me when you have fixed this, so that I could try it. Please tell me where the fix will go, git libata-dev or linux-2.6 James ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: libata-passthrough problem. 2005-11-13 15:13 ` James Courtier-Dutton @ 2005-11-13 17:01 ` Mark Lord 2005-11-13 17:03 ` Mark Lord 0 siblings, 1 reply; 22+ messages in thread From: Mark Lord @ 2005-11-13 17:01 UTC (permalink / raw) To: James Courtier-Dutton; +Cc: Jeff Garzik, linux-ide James, This is the version that fixes the problem. Compiles, untested, no extraneous parenthesis. Please give it a try, and let us know how it performs for you. Signed-off-by: Mark Lord <mlord@pobox.com> --- linux-2.6.15-rc1/drivers/scsi/libata-scsi.c.orig 2005-11-11 20:43:36.000000000 -0500 +++ linux/drivers/scsi/libata-scsi.c 2005-11-12 18:45:43.000000000 -0500 @@ -2276,6 +2276,12 @@ tf->device = scsicmd[8]; tf->command = scsicmd[9]; } + /* + * If slave is possible, enforce correct master/slave bit for this port: + */ + if (qc->ap->flags & ATA_FLAG_SLAVE_POSS) + tf->device = qc->dev->devno ? + tf->device | ATA_DEV1 : tf->device & ~ATA_DEV1; /* * Filter SET_FEATURES - XFER MODE command -- otherwise, ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: libata-passthrough problem. 2005-11-13 17:01 ` Mark Lord @ 2005-11-13 17:03 ` Mark Lord 2005-11-13 20:17 ` James Courtier-Dutton 0 siblings, 1 reply; 22+ messages in thread From: Mark Lord @ 2005-11-13 17:03 UTC (permalink / raw) To: James Courtier-Dutton; +Cc: Jeff Garzik, linux-ide [-- Attachment #1: Type: text/plain, Size: 74 bytes --] And again, as an attachment, for people with modern mail clients. Cheers [-- Attachment #2: passthru.patch --] [-- Type: text/x-patch, Size: 526 bytes --] --- linux-2.6.15-rc1/drivers/scsi/libata-scsi.c.orig 2005-11-11 20:43:36.000000000 -0500 +++ linux/drivers/scsi/libata-scsi.c 2005-11-12 18:45:43.000000000 -0500 @@ -2276,6 +2276,12 @@ tf->device = scsicmd[8]; tf->command = scsicmd[9]; } + /* + * If slave is possible, enforce correct master/slave bit for this port: + */ + if (qc->ap->flags & ATA_FLAG_SLAVE_POSS) + tf->device = qc->dev->devno ? + tf->device | ATA_DEV1 : tf->device & ~ATA_DEV1; /* * Filter SET_FEATURES - XFER MODE command -- otherwise, ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: libata-passthrough problem. 2005-11-13 17:03 ` Mark Lord @ 2005-11-13 20:17 ` James Courtier-Dutton 0 siblings, 0 replies; 22+ messages in thread From: James Courtier-Dutton @ 2005-11-13 20:17 UTC (permalink / raw) To: Mark Lord; +Cc: Jeff Garzik, linux-ide Mark Lord wrote: > And again, as an attachment, for people with modern mail clients. > > Cheers > Thank you I have tested the patch against 2.6.15-rc1, and it seems to work fine. Notice the different model numbers and serial numbers below, when before they were identical. # hdparm -I /dev/sda /dev/sda: ATA device, with non-removable media Model Number: ST3300831AS Serial Number: 3NF0A9CQ Firmware Revision: 3.01 # hdparm -I /dev/sdb /dev/sdb: ATA device, with non-removable media Model Number: ST3160023AS Serial Number: 3JS2ZRPZ Firmware Revision: 3.18 ^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2005-11-13 21:17 UTC | newest] Thread overview: 22+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-11-12 10:55 libata-passthrough problem James Courtier-Dutton 2005-11-12 15:18 ` Mark Lord 2005-11-12 17:57 ` Jeff Garzik 2005-11-12 19:53 ` Mark Lord 2005-11-12 19:56 ` Mark Lord 2005-11-12 23:19 ` Jeff Garzik 2005-11-12 23:54 ` [PATCH 2.6.15-rc1] libata: fix passthru for slave devices Mark Lord 2005-11-12 23:55 ` [PATCH 2.6.15-rc1] libata: fix comments on ata_tf_from_fis() Mark Lord 2005-11-13 0:15 ` [PATCH 2.6.15-rc1] libata: fix passthru for slave devices Jeff Garzik 2005-11-13 2:50 ` Mark Lord 2005-11-13 3:20 ` Jeff Garzik 2005-11-13 4:37 ` Mark Lord 2005-11-13 0:16 ` Jeff Garzik 2005-11-13 2:48 ` Mark Lord 2005-11-13 3:04 ` Mark Lord 2005-11-13 3:11 ` Mark Lord 2005-11-12 23:19 ` libata-passthrough problem Jeff Garzik 2005-11-12 23:40 ` Mark Lord 2005-11-13 15:13 ` James Courtier-Dutton 2005-11-13 17:01 ` Mark Lord 2005-11-13 17:03 ` Mark Lord 2005-11-13 20:17 ` James Courtier-Dutton
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).