Hello all,
I have been stuck on a strange problem since last 4 weeks. The problem has to do with enabling DMA for my AMD CS5536 chipset. Here is my problem description:
The output for the IDE controller driver(AMD74xx) shows the following in dmesg:
#dmesg
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
AMD5536: IDE controller at PCI slot 0000:00:0f.2
AMD5536: chipset revision 1
AMD5536: not 100% native mode: will probe irqs later
AMD5536: 0000:00:0f.2 (rev 01) UDMA100 controller
AMD5536: neither IDE port enabled (BIOS)
This shows that the driver is properly recognized(AMD5536) for the device (AMD CS5536 Geode Companion chipset). But the culprit is the line "neither IDE port enabled (BIOS)" which usually suggest that DMA will not work and which turns out to be true because my hdparm shows the following:
#hdparm /dev/hda
/dev/hda:
multcount = 16 (on)
IO_support = 1 (32-bit)
unmaskirq = 1 (on)
using_dma = 0 (off)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 8355/16/63, sectors = 8421840, start = 0
Clearly the DMA is turned off.
Now when I try to enable the DMA I get the following error message:
#hdparm -d1 /dev/hda
/dev/hda:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
using_dma = 0 (off)
Although when you try to print the general information for the drive it shows that it is using udma2(which is what I wanted) but I know it is reporting false as there are tons of similar observation on the Internet and it is believed to be false output:
#hdparm -i /dev/hda
/dev/hda:
Model=WDC WD43AA, FwRev=29.05T29, SerialNo=WD-WM9020138788
Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
RawCHS=8355/16/63, TrkSize=57600, SectSize=600, ECCbytes=40
BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=16
CurCHS=8355/16/63, CurSects=8421840, LBA=yes, LBAsects=8421840
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 *udma2
AdvancedPM=no WriteCache=enabled
Drive conforms to: Unspecified: ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4
* signifies the current active mode
Ok, I have compiled my driver (AMD and nVidia PCI chipset option) INTO the kernel and NOT AS a module but still this happens.
Here are some suggestions that I have got from people about this problem:
1. Bus Master is not enabled in the BIOS
2.Referring to the output of the dmesg pasted above here is another response:
"Thats what you want to see - that shows that the driver installed, which means that it identfied the part correctly, but the ports were not configured probably because the enable bits have been turned off in the PCI config space. Try restoring the defaults in your BIOS setup screen and trying again."
http://geode.insideo.net/info-linux_archives/msg00192.html
3.DMA_BASE address is not getting initialized properly.
4. May be a kernel issue?
Here are some details of my system:
1. AMD Geode GX2/CS5536 processor
2. Debian (testing)
3. Debian Kernel 2.6.16
Here are my questions:
1. Now is there any way(setpci,scanpci,lspci,etc) by which we can enable the IDE port which the kernel is complaining because it thinks that it is disabled? Although DMA works fine on Windows XP
2. Also from where can I know which register is responsible for the IDE port? Is there any standard address in the PCI configuration space for the IDE/DMA register?
3. Is this some issue which can be only solved at BIOS level? Can we change the values of the PCI device register through linux?
Any help will be highly appreciated. Please help.
Thanks
Below I am attaching some detailed output of some commands like lspci,dmesg.
Detailed output of lspci command:
#lspci -vvvxxx
0000:00:01.0 Host bridge: National Semiconductor Corporation Geode GX2 Host Bridge (rev 21)
Subsystem: National Semiconductor Corporation Geode GX2 Host Bridge
Flags: bus master, 66MHz, medium devsel, latency 248
00: 0b 10 28 00 05 00 20 02 21 00 00 06 08 f8 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 0b 10 28 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000:00:01.1 VGA compatible controller: National Semiconductor Corporation Geode GX2 Graphics Processor (prog-if 00 [VGA])
Subsystem: National Semiconductor Corporation Geode GX2 Graphics Processor
Flags: 66MHz, medium devsel
Memory at e0000000 (32-bit, non-prefetchable) [size=16M]
Memory at e1000000 (32-bit, non-prefetchable) [size=16K]
Memory at e1004000 (32-bit, non-prefetchable) [size=16K]
Memory at e1008000 (32-bit, non-prefetchable) [size=16K]
00: 0b 10 30 00 03 00 20 02 00 00 00 03 08 00 00 00
10: 00 00 00 e0 00 00 00 e1 00 40 00 e1 00 80 00 e1
20: 00 00 00 00 00 00 00 00 00 00 00 00 0b 10 30 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: d0 03 00 00 c0 03 00 00 00 00 0a 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000:00:0e.0 Ethernet controller: Intel Corporation 8255xER/82551IT Fast Ethernet Controller (rev 10)
Subsystem: Intel Corporation: Unknown device 0000
Flags: bus master, medium devsel, latency 64, IRQ 11
Memory at e100c000 (32-bit, non-prefetchable) [size=4K]
I/O ports at f800 [size=64]
Memory at e1020000 (32-bit, non-prefetchable) [size=128K]
Capabilities: [dc] Power Management version 2
00: 86 80 09 12 07 00 90 02 10 00 00 02 08 40 00 00
10: 00 c0 00 e1 01 f8 00 00 00 00 02 e1 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 00 00
30: 00 00 00 00 dc 00 00 00 00 00 00 00 0b 01 08 38
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 22 fe
e0: 00 40 00 4b 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000:00:0f.0 ISA bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] ISA (rev 02)
Subsystem: Advanced Micro Devices [AMD] CS5536 [Geode companion] ISA
Flags: 66MHz, medium devsel
I/O ports at f400 [size=8]
I/O ports at f000 [size=256]
I/O ports at ec00 [size=64]
I/O ports at e800 [size=32]
I/O ports at e400 [size=128]
I/O ports at 9c40 [size=64]
00: 22 10 90 20 09 00 a0 02 02 00 01 06 08 40 80 00
10: 01 f4 00 00 01 f0 00 00 01 ec 00 00 01 e8 00 00
20: 01 e4 00 00 41 9c 00 00 00 00 00 00 22 10 90 20
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 5b 90 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000:00:0f.2 IDE interface: Advanced Micro Devices [AMD] CS5536 [Geode companion] IDE (rev 01) (prog-if 80 [Master])
Subsystem: Advanced Micro Devices [AMD] CS5536 [Geode companion] IDE
Flags: bus master, 66MHz, medium devsel, latency 0
I/O ports at dc00 [size=16]
00: 22 10 9a 20 05 00 a0 02 01 80 01 01 08 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 01 dc 00 00 00 00 00 00 00 00 00 00 22 10 9a 20
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000:00:0f.3 Multimedia audio controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] Audio (rev 01)
Subsystem: Advanced Micro Devices [AMD] CS5536 [Geode companion] Audio
Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 5
I/O ports at d800 [size=128]
00: 22 10 93 20 05 00 a0 02 01 00 01 04 08 00 00 00
10: 01 d8 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 93 20
30: 00 00 00 00 00 00 00 00 00 00 00 00 05 02 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000:00:0f.4 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] OHC (rev 02) (prog-if 10 [OHCI])
Subsystem: Advanced Micro Devices [AMD] CS5536 [Geode companion] OHC
Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 9
Memory at e1040000 (32-bit, non-prefetchable) [size=4K]
00: 22 10 94 20 07 00 20 02 02 10 03 0c 08 00 00 00
10: 00 00 04 e1 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 94 20
30: 00 00 00 00 00 00 00 00 00 00 00 00 09 04 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000:00:0f.5 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] EHC (rev 02) (prog-if 20 [EHCI])
Subsystem: Advanced Micro Devices [AMD] CS5536 [Geode companion] EHC
Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 9
Memory at e1041000 (32-bit, non-prefetchable) [size=4K]
00: 22 10 95 20 17 00 20 02 02 20 03 0c 08 00 00 00
10: 00 10 04 e1 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 95 20
30: 00 00 00 00 00 00 00 00 00 00 00 00 09 04 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Detailed output of dmesg command:
#dmesg
Linux version 2.6.16-gx2-epm-pcidevid (2.6.16-gx2-epm-pcidevid-10.00.Custom) (root@debian) (gcc version 4.0.4 20060507 (prerelease) (Debian 4.0.3-3)) #1 PREEMPT Thu Jun 29 14:04:43 PDT 2006
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009e000 (usable)
BIOS-e820: 000000000009e000 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000000ebe5c00 (usable)
BIOS-e820: 000000000ebe5c00 - 000000000ebe8c00 (ACPI data)
BIOS-e820: 000000000ebe8c00 - 000000000ebe9000 (ACPI NVS)
BIOS-e820: 000000000ebe9000 - 0000000010000000 (reserved)
BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved)
0MB HIGHMEM available.
235MB LOWMEM available.
On node 0 totalpages: 60389
DMA zone: 4096 pages, LIFO batch:0
DMA32 zone: 0 pages, LIFO batch:0
Normal zone: 56293 pages, LIFO batch:15
HighMem zone: 0 pages, LIFO batch:0
DMI 2.1 present.
ACPI: RSDP (v000 GENSW1 ) @ 0x000f5710
ACPI: RSDT (v001 GENSW OEM00001 0x0fe60019 MSFT 0x0fe60097) @ 0x0ebe8400
ACPI: FADT (v001 GENSW OEM00001 0x0fe60019 MSFT 0x0fe60097) @ 0x0ebe8000
ACPI: BOOT (v001 GENSW OEM00001 0x0fe60019 MSFT 0x0fe60097) @ 0x0ebe8800
ACPI: DSDT (v001 GEN_SW DSDT0001 0x00000001 MSFT 0x02000001) @ 0x00000000
ACPI: PM-Timer IO Port: 0x9c10
Allocating PCI resources starting at 20000000 (gap: 10000000:eff00000)
Built 1 zonelists
Kernel command line: root=/dev/hda7 ro vga=791
No local APIC present or hardware disabled
mapped APIC to ffffd000 (011d9000)
Initializing CPU#0
PID hash table entries: 1024 (order: 10, 16384 bytes)
Detected 332.083 MHz processor.
Using pmtmr for high-res timesource
Console: colour dummy device 80x25
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 231624k/241556k available (1611k kernel code, 9324k reserved, 727k data, 244k init, 0k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 666.77 BogoMIPS (lpj=1333550)
Security Framework v1.0.0 initialized
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 0080a13d c0c0a13d 00000000 00000000 00000000 00000000 00000000
CPU: After vendor identify, caps: 0080a13d c0c0a13d 00000000 00000000 00000000 00000000 00000000
CPU: L1 I Cache: 16K (32 bytes/line), D cache 16K (32 bytes/line)
CPU: After all inits, caps: 0080a13d c0c0a13d 00000000 00000000 00000000 00000000 00000000
CPU: NSC Geode(TM) Integrated Processor by National Semi stepping 02
Checking 'hlt' instruction... OK.
ACPI: setting ELCR to 0200 (from 0e00)
checking if image is initramfs...it isn't (bad gzip magic numbers); looks like an initrd
Freeing initrd memory: 4344k freed
NET: Registered protocol family 16
EISA bus registered
ACPI: bus type pci registered
PCI: PCI BIOS revision 2.10 entry at 0xff699, last bus=0
PCI: Using configuration type 1
ACPI: Subsystem revision 20060127
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
ACPI: Assume root bridge [\_SB_.PCI0] bus is 0
Boot video device is 0000:00:01.1
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Link [LN_A] (IRQs 5 9 10 *11)
ACPI: PCI Interrupt Link [LN_B] (IRQs 5 9 *10 11)
ACPI: PCI Interrupt Link [LN_C] (IRQs 5 9 10 11) *0, disabled.
ACPI: PCI Interrupt Link [LN_D] (IRQs 5 *9 10 11)
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
pnp: PnP ACPI: found 13 devices
PnPBIOS: Disabled by ACPI PNP
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
TC classifier action (bugs to netdev@vger.kernel.org cc hadi@cyberus.ca)
pnp: 00:01: ioport range 0x481-0x483 has been reserved
pnp: 00:01: ioport range 0x487-0x487 has been reserved
pnp: 00:01: ioport range 0x489-0x489 has been reserved
pnp: 00:01: ioport range 0x48a-0x48b has been reserved
pnp: 00:01: ioport range 0x48f-0x48f has been reserved
pnp: 00:01: ioport range 0x4d0-0x4d1 has been reserved
pnp: 00:01: ioport range 0xac18-0xac1f has been reserved
pnp: 00:06: ioport range 0xffff-0x10000 could not be reserved
PCI: Ignore bogus resource 6 [0:0] of 0000:00:01.1
Simple Boot Flag at 0x49 set to 0x1
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
Initializing Cryptographic API
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
vesafb: framebuffer at 0xe0000000, mapped to 0xcf880000, using 3072k, total 16384k
vesafb: mode is 1024x768x16, linelength=2048, pages=2
vesafb: protected mode interface info at c000:6d96
vesafb: scrolling: redraw
vesafb: Truecolor: size=0:5:6:5, shift=0:11:5:0
Console: switching to colour frame buffer device 128x48
fb0: VESA VGA frame buffer device
ACPI: Power Button (FF) [PWRF]
ACPI: Power Button (CM) [PWRB]
ACPI: Sleep Button (CM) [SLPB]
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
cs5535_gpio: base=0xf000 mask=0xb003c66 major=254
Linux agpgart interface v0.101 (c) Dave Jones
PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
AMD5536: IDE controller at PCI slot 0000:00:0f.2
AMD5536: chipset revision 1
AMD5536: not 100% native mode: will probe irqs later
AMD5536: 0000:00:0f.2 (rev 01) UDMA100 controller
AMD5536: neither IDE port enabled (BIOS)
atkbd.c: Failed to enable keyboard on isa0060/serio0
input: AT Translated Set 2 keyboard as /class/input/input0
input: PC Speaker as /class/input/input1
EISA: Probing bus 0 at eisa.0
EISA: Detected 0 cards.
GACT probability on
Mirror/redirect action on
Simple TC action Loaded
NET: Registered protocol family 2
IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
TCP established hash table entries: 8192 (order: 3, 32768 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP reno registered
TCP bic registered
NET: Registered protocol family 8
NET: Registered protocol family 20
Using IPI Shortcut mode
ACPI wakeup devices:
SLPB PCI0
ACPI: (supports S0 S1 S3 S4 S5)
RAMDISK: cramfs filesystem found at block 0
RAMDISK: Loading 4344KiB [1 disk] into ram disk... |/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\
|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\
|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\
|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\
|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\
|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\
|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\
|/-\|/-\|/-\|/-\|/-\done.
VFS: Mounted root (cramfs filesystem) readonly.
Freeing unused kernel memory: 244k freed
NET: Registered protocol family 1
Probing IDE interface ide0...
hda: WDC WD800BB-00JHC0, ATA DISK drive
hdb: SONY CD-RW CRX320E, ATAPI CD/DVD-ROM drive
Probing IDE interface ide1...
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: max request size: 128KiB
hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=65535/16/63
hda: cache flushes supported
hda: hda1 hda2 < hda5 hda6 hda7 hda8 hda9 hda10 hda11 hda12 >
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
input: PS/2 Generic Mouse as /class/input/input2
Real Time Clock Driver v1.12ac
hdb: ATAPI 40X DVD-ROM CD-R/RW drive, 2048kB Cache
Uniform CD-ROM driver Revision: 3.20
pnp: Device 00:08 disabled.
parport_pc: probe of 00:08 failed with error -22
usbcore: registered new driver usbfs
usbcore: registered new driver hub
ACPI: PCI Interrupt Link [LN_B] enabled at IRQ 10
PCI: setting IRQ 10 as level-triggered
ACPI: PCI Interrupt 0000:00:0f.3[B] -> Link [LN_B] -> GSI 10 (level, low) -> IRQ 10
PCI: Setting latency timer of device 0000:00:0f.3 to 64
ohci_hcd: 2005 April 22 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
8139too Fast Ethernet driver 0.9.27
floppy0: no floppy controllers found
floppy0: no floppy controllers found
ACPI: PCI Interrupt Link [LN_D] enabled at IRQ 9
PCI: setting IRQ 9 as level-triggered
ACPI: PCI Interrupt 0000:00:0f.4[D] -> Link [LN_D] -> GSI 9 (level, low) -> IRQ 9
PCI: Setting latency timer of device 0000:00:0f.4 to 64
ohci_hcd 0000:00:0f.4: OHCI Host Controller
ohci_hcd 0000:00:0f.4: new USB bus registered, assigned bus number 1
ohci_hcd 0000:00:0f.4: irq 9, io mem 0xe100d000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 4 ports detected
ACPI: PCI Interrupt 0000:00:0f.5[D] -> Link [LN_D] -> GSI 9 (level, low) -> IRQ 9
PCI: Setting latency timer of device 0000:00:0f.5 to 64
ehci_hcd 0000:00:0f.5: EHCI Host Controller
ehci_hcd 0000:00:0f.5: new USB bus registered, assigned bus number 2
ehci_hcd 0000:00:0f.5: irq 9, io mem 0xe100e000
ehci_hcd 0000:00:0f.5: USB 0.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 4 ports detected
ACPI: PCI Interrupt Link [LN_A] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
ACPI: PCI Interrupt 0000:00:0d.0[A] -> Link [LN_A] -> GSI 11 (level, low) -> IRQ 11
eth0: RealTek RTL8139 at 0xf800, 00:50:f6:29:37:3c, IRQ 11
eth0: Identified 8139 chip type 'RTL-8100B/8139D'
8139cp: 10/100 PCI Ethernet driver v1.2 (Mar 22, 2004)
usb 1-2: new low speed USB device using ohci_hcd and address 3
usb 1-2: configuration #1 chosen from 1 choice
usb 1-4: new low speed USB device using ohci_hcd and address 4
usb 1-4: configuration #1 chosen from 1 choice
ts: Compaq touchscreen protocol output
mice: PS/2 mouse device common for all mice
usbcore: registered new driver hiddev
input: CHESEN PS2 to USB Converter as /class/input/input3
input: USB HID v1.10 Keyboard [CHESEN PS2 to USB Converter] on usb-0000:00:0f.4-2
input: CHESEN PS2 to USB Converter as /class/input/input4
input: USB HID v1.10 Mouse [CHESEN PS2 to USB Converter] on usb-0000:00:0f.4-2
input: Logitech Optical USB Mouse as /class/input/input5
input: USB HID v1.10 Mouse [Logitech Optical USB Mouse] on usb-0000:00:0f.4-4
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.6:USB HID core driver
hda: status timeout: status=0x80 { Busy }
ide: failed opcode was: unknown
hda: drive not ready for command
ide0: reset: success
Adding 4882712k swap on /dev/hda9. Priority:-1 extents:1 across:4882712k
EXT3 FS on hda7, internal journal
eth0: link down
NET: Registered protocol family 17
usb 1-4: USB disconnect, address 4
usb 2-4: new high speed USB device using ehci_hcd and address 4
usb 2-4: configuration #1 chosen from 1 choice
SCSI subsystem initialized
Initializing USB Mass Storage driver...
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 4
usb-storage: waiting for device to settle before scanning
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
Vendor: LEXAR Model: JUMPDRIVE ELITE Rev: 1000
Type: Direct-Access ANSI SCSI revision: 00
usb-storage: device scan complete
SCSI device sda: 506880 512-byte hdwr sectors (260 MB)
sda: Write Protect is off
sda: Mode Sense: 43 00 00 00
sda: assuming drive cache: write through
SCSI device sda: 506880 512-byte hdwr sectors (260 MB)
sda: Write Protect is off
sda: Mode Sense: 43 00 00 00
sda: assuming drive cache: write through
sda: sda1
sd 0:0:0:0: Attached scsi removable disk sda
Intel ISA PCIC probe: not found.
ds: ds_open(socket 0)
ds: ds_open(socket 0)
NET: Registered protocol family 10
lo: Disabled Privacy Extensions
ADDRCONF(NETDEV_UP): eth0: link is not ready
IPv6 over IPv4 tunneling driver
Output of lspci command:
#lspci
0000:00:01.0 Host bridge: National Semiconductor Corporation Geode GX2 Host Bridge (rev 21)
0000:00:01.1 VGA compatible controller: National Semiconductor Corporation Geode GX2 Graphics Processor
0000:00:0d.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
0000:00:0f.0 ISA bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] ISA (rev 02)
0000:00:0f.2 IDE interface: Advanced Micro Devices [AMD]: Unknown device 2092 (rev 01)
0000:00:0f.3 Multimedia audio controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] Audio (rev 01)
0000:00:0f.4 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] OHC (rev 02)
0000:00:0f.5 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] EHC (rev 02)
Your BIOS is just heinously b
Your BIOS is just heinously broken.
What board is this? Who did you buy it from? Do they have an updated BIOS?
You *need* to get an updated BIOS from the board manufacturer. From you ACPI dump in dmesg, it looks like General Software is your BIOS provider. Ask first your board provider for a new BIOS, then ask General Software.
There are several things wrong in this dump:
0000:00:0f.2 IDE interface: Advanced Micro Devices [AMD] CS5536 [Geode companion] IDE (rev 01) (prog-if 80 [Master])
Subsystem: Advanced Micro Devices [AMD] CS5536 [Geode companion] IDE
Flags: bus master, 66MHz, medium devsel, latency 0
I/O ports at dc00 [size=16]
00: 22 10 9a 20 05 00 a0 02 01 80 01 01 08 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 01 dc 00 00 00 00 00 00 00 00 00 00 22 10 9a 20
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
The first problem you complain about is:
AMD5536: neither IDE port enabled (BIOS)
This is because offset 40, bit 2 is not set. Even if you set that manually somehow, you have even *more* problems. Offsets 48, 4c, and 50 all should have values in them, as they are the timing registers.
You could try and take the common Linux tack of "the BIOS is broken, let's fix it", but the better answer is to get a good BIOS. Your board vendor should give you one.
What are these registers
First of all thanks a lot for replying. to be honest this is one of the best detailed reply that I have got so far which actually makes sense. Now as you mentioned that offset 40 bit 2 is not set, what is that register called? is there any reference manual which explains what registers are there and what are they called in the PCI config space of IDE controller.
Also I have a another similar board with chipset CS5535 instead of CS5536 and on that the DMA works fine although it uses a driver specifically for "AMD CS5535 chipset" under Kernel config. The PCI dump for the IDE controller is almost the same specially the rows from 10 to 50. So does that mean that different IDE controller has different bits to enable the DMA?
Also can you tell me how can I set the bit 40 as you suggested. An example would be really good. Also what do I do about the timing registers?
Thanks a lot once again.....You are awesome dude.
Hm, you didn't read my reply
Hm, you didn't read my reply closely.
What board is this? Where did you buy it? Did you ask them for a new BIOS?
You can look at the AMD 8111 data sheet (its on the web) to see where the registers are defined. The 5536 data sheet is also available on AMD's website.
5535 and 5536 have completely different IDE controllers. The config space and timing registers are all different.
Let me be clear, since you obviously didn't get it from my earlier post: Don't waste your time trying to fix up the config space. It is just wrong.
Get a new BIOS.
This is a Geode GX2 Processor
This is a Geode GX2 Processor board with CS5536 chipset. For the BIOS I think it will be some time before General software gives the new BIOS. And I wanted to get the DMA working on this board as soon as possible for some project and hence I was wondering if anything can be done at the OS/Kernel level.
I have the BIOS code for this board and I am not a BIOS expert in any sense but if you can give me some guideline as to what needs to get changed(like what values should be set in which registers) in BIOS in order to get the DMA working then I can give it a shot? Also if you think that it will require a lot of work and will be quite complicated this then I have no other option then to wait for a new BIOS from General Software.
Again thanks a lot for all your help.
anyone???
anyone???
This is low level - if you need to ask, don't do it
At this low level, if you need to ask the Internet for help, you're badly out of your depth; pester your vendor for a BIOS update, as you're likely to end up in a bad state if you try and fix things yourself. You can end up with a board that's not bootable on some chipsets if you poke registers you shouldn't, and you're at risk of (e.g.) accidentally poking the registers that let you wipe the BIOS ready for a reflash.
Basically, get your vendor to help. You paid them, they've got to deliver.
Thank you guys for your sugge
Thank you guys for your suggestion. I have requested the BIOS vendor to give a new BIOS. But I have something to add. Actually for my own knowledge I would like to know what values should in the Base Registers in the PCI configuration space of a particular device. Are these values same for all the IDE controllers? Also from where I can find what values should the registers have when the device is working properly. Is there some sort of manual for the device which explains the registers and the values that they should contain?
There is a manual for the device
The values differ from PCI device to PCI device; some are defined in the PCI spec, but most of the registers are only defined in the device's data sheet. If you want to find out what values should be in the config registers for a device, grab the PCI specification, and the datasheet for that device, and you should be able to work it out from there.
You purchase the PCI spec from the PCI-SIG, who define it; individual parts of the PCI spec are $100 in hardcopy, while a CD with PDFs of the entire set of PCI specs is $1500. You'll then need to contact the device manufacturer, and ask them how you get the datasheet for the device.
Difference between PCI specification and PCI device datasheet
Thanks franz a lot!!! Actually I have an extension question based on what you replied. You said to get the PCI spec + Device's Data Sheet. What is the difference in information between the two? Is PCI spec a kind of generic information about the standard Registers and Data Sheet is specifically for that particular PCI device?
Thanks
You're out of your depth - STOP NOW
At this point, you are completely out of your depth. I must reiterate that if you have to ask this sort of question, you simply do not yet have the knowledge or experience to avoid completely trashing your board beyond repair. As a result, this is the final question I am going to answer on this topic.
The PCI spec defines PCI. The device's data sheet will reference PCI in various ways, depending on the device, and tell you how to handle the device. Between the device's data sheet, and the relevant parts of the PCI spec, you will be able to determine everything you need to know, from the physical characteristics of the device (what temperatures it can handle, how large it is, what pins it has) through the electrical characteristics (what sort of signals it can handle, what sorts of current and voltage levels it copes with etc), through to the software interface (which registers do what, how to program the registers, how to read and write data to and from the chip etc).
I must repeat that poking at this low level without a colleague able to help you is dangerous. If your colleagues are not able to help (e.g. because this is a personal project), find a local higher education institute or suitable hobby group, explain what you think you need to know, and go on courses to teach you the basics of hardware interfacing.
Alright
Alright I got your message and I think your point is very valid. I have already asked my vendor to give me a new BIOS. The only mystery that remains is even if the BIOS is broken how come DMA mode is working on Windows XP? I always thought Windows XP talks to BIOS to get some information about the resources allocated to the devices.
Anywords on this.
thanks