|
配置:Slackware 11+Kernel 2.6.20.2、Core Duo T2300、512M、945+950、60G-ATA
这几天一直在弄,DMA的问题,内核也重新编绎过多次,ATA_PIIX也全部加入:
- #hdparm -i /dev/hda
- /dev/hda:
- Model=TOSHIBA MK6034GAX, FwRev=AC101A, SerialNo=16CO0574S
- Config={ Fixed }
- RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
- BuffType=unknown, BuffSize=0kB, MaxMultSect=16, MultSect=16
- CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=117210240
- IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
- PIO modes: pio0 pio1 pio2 pio3 pio4
- DMA modes: sdma0 sdma1 sdma2 mdma0 mdma1 mdma2
- UDMA modes: udma0 udma1 *udma2
- AdvancedPM=yes: unknown setting WriteCache=enabled
- Drive conforms to: Unspecified: ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5 ATA/ATAPI-6
- * signifies the current active mode
- #hdparm /dev/hda
- /dev/hda:
- multcount = 16 (on)
- IO_support = 3 (32-bit w/sync)
- unmaskirq = 1 (on)
- using_dma = 0 (off)
- keepsettings = 0 (off)
- readonly = 0 (off)
- readahead = 256 (on)
- geometry = 16383/255/63, sectors = 117210240, start = 0
- #lspci |grep ATA
- 00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE (rev 02)
复制代码
问题信息:
- #hdparm -d1 /dev/hda
- /dev/hda:
- setting using_dma to 1 (on)
- HDIO_SET_DMA failed: Operation not permitted
- using_dma = 0 (off)
复制代码
看网上说可能与ALi芯片有关,可是kernel 2.6.20.2中关于intel SATA\ATA piix及ALi PATA的项(可以说是关于这些的项,我无论是不是Intel或ALi)全都编绎到内核中去了,还是打不开!
这后,听说suse对这些支持较好,所以用suse10.2的修复盘试了试(想判定问题是不是在PATA这块)。修复盘一引导,就认出硬盘为sda,说明已经正确识别了!
之后,从网上下载了suse的kerenl-source-2.6.18.8-0.1的rpm包(suse10.2所用),解包后,在pathches.fixes中找到libata-ata_piix-acer-aspire-fix:
- # more libata-ata_piix-acer-aspire-fix
- From: jakub007@go2.pl
- Subject: HDD on Acer Aspire 3682 WLMi limited to UDMA33
- References: 227477
- In Acer Aspire hdd is connected to ICH7 via 40c cable, however it is
- short cable and it is UDMA66 capable.
- Signed-off-by: Tejun Heo <teheo@novell.com>
- Signed-off-by: Hannes Reinecke <hare@suse.de>
- diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
- index 7959e4c..aadfcb3 100644
- --- a/drivers/ata/ata_piix.c
- +++ b/drivers/ata/ata_piix.c
- @@ -569,6 +569,7 @@ struct ich_laptop {
- static const struct ich_laptop ich_laptop[] = {
- /* devid, subvendor, subdev */
- { 0x27DF, 0x0005, 0x0280 }, /* ICH7 on Acer 5602WLMi */
- + { 0x27DF, 0x1025, 0x0110 }, /* ICH7 on Acer 3682WLMi */
- /* end marker */
- { 0, }
- };
复制代码
按此内容进行修改后,还是无法正确认出硬盘!
之后,又对比其它几个patch,2.6.20.2的内核中匀已修复!!!
实在没有想法了,希望大家和版主帮帮忙呀!
不想因为这个而在本本上放弃slackware···至从使用slackware,就再也没有使用过其它了···
如果,大家需要其它信息,请回复,我将及时提供··· |
|