[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: hdparm oder Kernel - wer sagt die Wahrheit?



> Ich habe mal ein wenig in den Kernel-Sourcen gegraben und folgendes 
> herausgefunden: 
> 
> Das Abschalten der HPA findet in der ide-disk.c in der Funktion 
> idedisk_set_max_address() bzw. in der idedisk_set_max_address_ext() statt.
> 
> Das Auslesen der Plattenparameter findet in 
> idedisk_read_native_max_address_ext() bzw. in 
> idedisk_read_native_max_address() statt.
> 
> In dem idedisk_read_*() ist in der Tat auch ein addr++ zu finden, das 
> einen um 1 erhöhten Wert des von der Platte gelieferten 
> maximalen Sektors zurückliefert. Auskommentieren von dem Inkrement ist 
> zwar eklig - aber etwas klügeres fiel mir erst mal nicht ein, da ich den 
> Wirkungszusammenhang in der ide-disk.c noch nicht so ganz im 
> Detail verstanden habe.


Egal ob eklig, unverstanden oder was auch immer: Der schnelle Erfolg gibt 
einem Recht. ;-)

Die Meldungen vom Boot:

SIS5513: SiS 962/963 MuTIOL IDE UDMA133 controller
    ide0: BM-DMA at 0xff00-0xff07, BIOS settings: hda:DMA, hdb:DMA
    ide1: BM-DMA at 0xff08-0xff0f, BIOS settings: hdc:DMA, hdd:DMA
Probing IDE interface ide0...
hda: ST340823A, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: JLMS XJ-HD165H, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 128KiB
hda: 78165360 sectors (40020 MB) w/1024KiB Cache, CHS=65535/16/63, 
UDMA(100)
 hda: hda1 hda2
hdc: ATAPI 48X DVD-ROM drive, 512kB Cache, UDMA(33)
Uniform CD-ROM driver Revision: 3.20
Attempting manual resume
ReiserFS: hda1: found reiserfs format "3.6" with standard journal
ReiserFS: hda1: using ordered data mode
ReiserFS: hda1: journal params: device hda1, size 8192, journal first 
block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
ReiserFS: hda1: checking transaction log (hda1)
ReiserFS: hda1: Using r5 hash to sort names


war die Wirkungsweise von:

static unsigned long idedisk_read_native_max_address(ide_drive_t *drive)
...
                /* addr++;      since the return value is (maxlba - 1), 

static unsigned long long idedisk_read_native_max_address_ext(ide_drive_t *drive)
...
                /* addr++;      since the return value is (maxlba - 1), 

in der drivers/ide/ide-disk.c vom Kernel-Source in den beiden genannten 
Funktionen.

Eigentlich gehört nun eine entsprechende Blacklist von Festplatten hier 
implementiert, die den maximalen Sektor bei 1 statt bei 0 anfangen zu 
zählen, aber für mich tut's der quick-fix wie oben angegeben.

Zu den in Frage kommenden Festplatten gehört mindestens mal die D540X-4K 
von Maxtor auch dazu.


	t++

Reply to: