linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Fix HPA handling regression
@ 2007-09-26 17:02 Alan Cox
  2007-09-28 13:31 ` Tejun Heo
  0 siblings, 1 reply; 3+ messages in thread
From: Alan Cox @ 2007-09-26 17:02 UTC (permalink / raw)
  To: linux-ide, akpm, jeff

Restore the support for handling drives that report one sector too many
(ie SCSI not ATA style). This worked before the HPA update but was
removed in that process

Signed-off-by: Alan Cox <alan@redhat.com>

diff -u --new-file --exclude-from /usr/src/exclude --recursive linux.vanilla-2.6.23rc8-mm1/drivers/ata/libata-core.c linux-2.6.23rc8-mm1/drivers/ata/libata-core.c
--- linux.vanilla-2.6.23rc8-mm1/drivers/ata/libata-core.c	2007-09-26 16:46:48.515293608 +0100
+++ linux-2.6.23rc8-mm1/drivers/ata/libata-core.c	2007-09-26 17:02:06.530734048 +0100
@@ -921,7 +921,8 @@
 		*max_sectors = ata_tf_to_lba48(&tf);
 	else
 		*max_sectors = ata_tf_to_lba(&tf);
-
+        if (dev->horkage & ATA_HORKAGE_HPA_SIZE)
+		(*max_sectors)--;
 	return 0;
 }
 
@@ -3957,6 +3958,10 @@
 	{ "WDC WD2500JD-00HBB0", "WD-WMAL71490727", ATA_HORKAGE_BROKEN_HPA },
 	{ "MAXTOR 6L080L4",	"A93.0500",	ATA_HORKAGE_BROKEN_HPA },
 
+	/* Devices which report 1 sector over size HPA */
+	{ "ST340823A",		NULL,		ATA_HORKAGE_HPA_SIZE, },
+	{ "ST320413A",		NULL,		ATA_HORKAGE_HPA_SIZE, },
+
 	/* End Marker */
 	{ }
 };
diff -u --new-file --exclude-from /usr/src/exclude --recursive linux.vanilla-2.6.23rc8-mm1/include/linux/libata.h linux-2.6.23rc8-mm1/include/linux/libata.h
--- linux.vanilla-2.6.23rc8-mm1/include/linux/libata.h	2007-09-26 16:46:57.844875296 +0100
+++ linux-2.6.23rc8-mm1/include/linux/libata.h	2007-09-26 17:11:56.215088400 +0100
@@ -315,7 +315,8 @@
 	ATA_HORKAGE_NONCQ	= (1 << 2),	/* Don't use NCQ */
 	ATA_HORKAGE_MAX_SEC_128	= (1 << 3),	/* Limit max sects to 128 */
 	ATA_HORKAGE_BROKEN_HPA	= (1 << 4),	/* Broken HPA */
-	ATA_HORKAGE_DRQ		= (1 << 5),	/* Device forgets to clear DRQ on error */
+	ATA_HORKAGE_HPA_SIZE	= (1 << 5), 	/* Reports native size off by one */
+	ATA_HORKAGE_DRQ		= (1 << 6),	/* Device forgets to clear DRQ on error */
 
 	/* DMA mask for user DMA control: User visible values do not
 	   renumber */

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Fix HPA handling regression
  2007-09-26 17:02 [PATCH] Fix HPA handling regression Alan Cox
@ 2007-09-28 13:31 ` Tejun Heo
  2007-09-29  1:03   ` Jeff Garzik
  0 siblings, 1 reply; 3+ messages in thread
From: Tejun Heo @ 2007-09-28 13:31 UTC (permalink / raw)
  To: Alan Cox; +Cc: linux-ide, akpm, jeff

Alan Cox wrote:
> Restore the support for handling drives that report one sector too many
> (ie SCSI not ATA style). This worked before the HPA update but was
> removed in that process
> 
> Signed-off-by: Alan Cox <alan@redhat.com>

Acked-by: Tejun Heo <htejun@gmail.com>

> diff -u --new-file --exclude-from /usr/src/exclude --recursive linux.vanilla-2.6.23rc8-mm1/include/linux/libata.h linux-2.6.23rc8-mm1/include/linux/libata.h
> --- linux.vanilla-2.6.23rc8-mm1/include/linux/libata.h	2007-09-26 16:46:57.844875296 +0100
> +++ linux-2.6.23rc8-mm1/include/linux/libata.h	2007-09-26 17:11:56.215088400 +0100
> @@ -315,7 +315,8 @@
>  	ATA_HORKAGE_NONCQ	= (1 << 2),	/* Don't use NCQ */
>  	ATA_HORKAGE_MAX_SEC_128	= (1 << 3),	/* Limit max sects to 128 */
>  	ATA_HORKAGE_BROKEN_HPA	= (1 << 4),	/* Broken HPA */
> -	ATA_HORKAGE_DRQ		= (1 << 5),	/* Device forgets to clear DRQ on error */
> +	ATA_HORKAGE_HPA_SIZE	= (1 << 5), 	/* Reports native size off by one */
> +	ATA_HORKAGE_DRQ		= (1 << 6),	/* Device forgets to clear DRQ on error */
>  
>  	/* DMA mask for user DMA control: User visible values do not
>  	   renumber */

But Jeff might not like adding new constant and shifting the existing
one at the same time.
-- 
tejun

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Fix HPA handling regression
  2007-09-28 13:31 ` Tejun Heo
@ 2007-09-29  1:03   ` Jeff Garzik
  0 siblings, 0 replies; 3+ messages in thread
From: Jeff Garzik @ 2007-09-29  1:03 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Alan Cox, linux-ide, akpm

Tejun Heo wrote:
> Alan Cox wrote:
>> Restore the support for handling drives that report one sector too many
>> (ie SCSI not ATA style). This worked before the HPA update but was
>> removed in that process
>>
>> Signed-off-by: Alan Cox <alan@redhat.com>
> 
> Acked-by: Tejun Heo <htejun@gmail.com>
> 
>> diff -u --new-file --exclude-from /usr/src/exclude --recursive linux.vanilla-2.6.23rc8-mm1/include/linux/libata.h linux-2.6.23rc8-mm1/include/linux/libata.h
>> --- linux.vanilla-2.6.23rc8-mm1/include/linux/libata.h	2007-09-26 16:46:57.844875296 +0100
>> +++ linux-2.6.23rc8-mm1/include/linux/libata.h	2007-09-26 17:11:56.215088400 +0100
>> @@ -315,7 +315,8 @@
>>  	ATA_HORKAGE_NONCQ	= (1 << 2),	/* Don't use NCQ */
>>  	ATA_HORKAGE_MAX_SEC_128	= (1 << 3),	/* Limit max sects to 128 */
>>  	ATA_HORKAGE_BROKEN_HPA	= (1 << 4),	/* Broken HPA */
>> -	ATA_HORKAGE_DRQ		= (1 << 5),	/* Device forgets to clear DRQ on error */
>> +	ATA_HORKAGE_HPA_SIZE	= (1 << 5), 	/* Reports native size off by one */
>> +	ATA_HORKAGE_DRQ		= (1 << 6),	/* Device forgets to clear DRQ on error */
>>  
>>  	/* DMA mask for user DMA control: User visible values do not
>>  	   renumber */
> 
> But Jeff might not like adding new constant and shifting the existing
> one at the same time.

That's definitely annoying and unnecessary patch noise...

	Jeff



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-09-29  1:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-09-26 17:02 [PATCH] Fix HPA handling regression Alan Cox
2007-09-28 13:31 ` Tejun Heo
2007-09-29  1:03   ` Jeff Garzik

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).