Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Mar 2004 08:32:18 +0100
From:      =?KOI8-R?Q?S=3Fren_Schmidt?= <sos@DeepCore.dk>
To:        Roman Kurakin <rik@cronyx.ru>
Cc:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: ATA/CHS problem
Message-ID:  <40628B02.10909@DeepCore.dk>
In-Reply-To: <4061D498.4080007@cronyx.ru>
References:  <4061D498.4080007@cronyx.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
Roman Kurakin wrote:

> This is not an LBA request. ATA driver thinks that I have 80G CHS 
> device, cause it's ATA_FLAG_54_58
> is zero. (This decision is incorrect, we shouldn't relay on this flag). 
> I've checked another seagate 80G drive in
> CHS mode(by driver hacking), and problematic one with LBA mode. I get 
> the same behavior on both with CHS.
> And both work fine in LBA mode. It also should be mentioned that I get 
> this problem on machine with
> ICH2 controller, and it seems that I don't have such problem on other 
> machine with ICH5

Hmm, we could loosen up this check (Se patch below) but that will 
probably break support for real old ATA disks (note that those old 
systems most likely will have trouble with -current anyways).
If I coul dhave my ways, we wouldn't even try to support disks that 
doesn't support LBA....

> PS. If you have any ideas, or if you have any materials (standards for 
> example) about ATA/ATAPI and you
> can share them with me, please let me know. I am not ata developer, so 
> this is a bit difficalt for me to
> dig this problem.

Go to t13.org they are the standards body for ATA etc...

Index: ata-disk.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/ata/ata-disk.c,v
retrieving revision 1.171
diff -u -r1.171 ata-disk.c
--- ata-disk.c  1 Mar 2004 13:17:07 -0000       1.171
+++ ata-disk.c  25 Mar 2004 07:28:20 -0000
@@ -104,8 +104,7 @@
                ((u_int32_t)atadev->param->lba_size_2 << 16);

      /* does this device need oldstyle CHS addressing */
-    if (!ad_version(atadev->param->version_major) ||
-       !(atadev->param->atavalid & ATA_FLAG_54_58) || !lbasize)
+    if (!ad_version(atadev->param->version_major) || !lbasize)
         atadev->flags |= ATA_D_USE_CHS;

      /* use the 28bit LBA size if valid or bigger than the CHS mapping */


-S?ren



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?40628B02.10909>