Messages in this thread Patch in this message | | | Date | Sat, 11 Sep 1999 02:15:19 +0200 (MET DST) | From | (Guest section DW) | Subject | Re: IBM Deskstar IDE 25gb not working. |
| |
From: Okke Timm <okke@komtel.net>
Magnus Ndslund(b) wrote: > I have an IBM deskstar IDE 25gb HD. > I get nothing but trouble when trying to install it. > I should report in hdparm (CHS) 16383,16,63 but i only get > 4096,16,63 ~= 2gb. When i force the 16383,16,63 setup (which > the label states) i get
I have an "IBM-DPTA-353750", it reports CHS=7144/16/63. I found no BIOS that would recognize this drive, they all hang. Only removing the drive from the BIOS works.
Yes, but this drive is much larger than the 25 GB disk that Magnus has. There are no problems with 25 GB disks, at least, I have never seen them, but the present kernels do not handle disks over 33.8 GB (because the number of cylinders overflows a short). See the large disk howto. I posted a patch that fixes some of the associated problems a week or so ago.
The current LBA-detection assumes that all drives report 16383,16,63 physically, the Desktar definitly does not do so.
I don't believe you. Can you back up this claim with hdparm -I output? (What generally happens is that the disk reports 16383,16,63 as the standards say it should [unless you put the `15-head' jumper on, and force 16383,15,63 or so] but that the BIOS reports something else because you selected some form of translation. Most BIOSes hang for such large disks. And if you find interesting ID values, is this then because you used the jumper to limit the drive to 33.8 GB ?
Without LBA, this behaviour is correct.
Try this patch against 2.2.12:
--- drivers/block/ide-disk.c.orig Thu Mar 11 02:49:43 1999 +++ drivers/block/ide-disk.c Fri Sep 10 17:10:39 1999 @@ -96,9 +96,15 @@ * very large drives (8GB+) may lie about the number of cylinders * This is a split test for drives 8 Gig and Bigger only. */ - if ((id->lba_capacity >= 16514064) && (id->cyls == 0x3fff) && - (id->heads == 16) && (id->sectors == 63)) { - id->cyls = lba_sects / (16 * 63); /* correct cyls */ + if ((id->lba_capacity >= 16514064) && (id->heads == 16) && + (id->sectors == 63)) { + if (id->cyls == 0x3fff) { + id->cyls = lba_sects / (16 * 63); /* correct cyls */ + } else if (id->lba_capacity <= 132118560) { + /* even larger drives may report wrong head count */ + id->heads = 32; /* correct bogus heads */ + id->cyls = lba_sects / (32 * 63); + } return 1; /* lba_capacity is our only option */ } /* perform a rough sanity check on lba_sects: within 10% is "okay" */ With this LBA-detection, you can change the geometry with fdisk to something with 32 head and get LBA. I get the geometry 38340/32/63.
Yes, I know, this patch is not perfect. But it works for me.
It is not perfect. You knew.
Andries
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |