In an earlier thread ("Can't get UDMA enabled on hard drive (Solaris 9
X86)", I think I kind of concluded that even though all the settings in
Solaris such as eeprom, etc. were configured to enable DMA, there was
some problem with the motherboard I'm using (an ASUS A7A266, with the
latest Award BIOS, 1013 beta 1) that was preventing DMA from working.

I know that DMA works fine with the board with other OS'es (e.g.,
Windows), so I think that maybe something during the booting is causing
Solaris to think that it should not use DMA.

I had kind of given up on the problem, but I ran across a couple of
older posts, e.g.:


That seemed to be talking about a patch that might resolve my problem.

I'm currently running Solaris 9 (9/05). Here's the display of the
"ata_devo_reset" from my system after my patch attempt:

physmem f859
ata_devo_reset: pushl %ebp
ata_devo_reset+1: movl %esp,%ebp
ata_devo_reset+3: subl $4,%esp
ata_devo_reset+6: pushl %ebx
ata_devo_reset+7: pushl %esi
ata_devo_reset+8: pushl %edi
ata_devo_reset+9: cmpl $0,+0xc(%ebp)
ata_devo_reset+0xd: je +0xb

ata_devo_reset+0xf: xorl %eax,%eax
ata_devo_reset+0x11: popl %edi
ata_devo_reset+0x12: popl %esi
ata_devo_reset+0x13: popl %ebx
ata_devo_reset+0x14: movl %ebp,%esp
ata_devo_reset+0x16: popl %ebp
ata_devo_reset+0x17: ret
ata_devo_reset+0x18: pushl +8(%ebp)
ata_devo_reset+0x1b: call -0x98ae3

ata_devo_reset+0x20: addl $4,%esp
ata_devo_reset+0x23: pushl %eax
ata_devo_reset+0x24: pushl 0xfed43524
ata_devo_reset+0x2a: call -0x96fc2

ata_devo_reset+0x2f: addl $8,%esp
ata_devo_reset+0x32: movl %eax,%edi
ata_devo_reset+0x34: testl %edi,%edi
ata_devo_reset+0x36: je +0x9a

ata_devo_reset+0x3c: movl $1,-4(%ebp)
ata_devo_reset+0x43: xorl %esi,%esi
ata_devo_reset+0x45: nop
ata_devo_reset+0x46: nop
ata_devo_reset+0x47: nop
ata_devo_reset+0x48: movl %esi,%eax
ata_devo_reset+0x4a: shll $6,%eax
ata_devo_reset+0x4d: movl +0xc(%edi,%eax),%ebx
ata_devo_reset+0x51: testl %ebx,%ebx
ata_devo_reset+0x53: je +0x5a

ata_devo_reset+0x55: movl +0x204(%ebx),%eax
ata_devo_reset+0x5b: andl $2,%eax
ata_devo_reset+0x5e: je +0x20

ata_devo_reset+0x60: movl +0x204(%ebx),%eax
ata_devo_reset+0x66: andl $0x100,%eax
ata_devo_reset+0x6b: jne +0x13

ata_devo_reset+0x6d: pushl $0
ata_devo_reset+0x6f: pushl $0x66 <-- This is where I
ata_devo_reset+0x74: pushl %ebx
ata_devo_reset+0x75: pushl %edi
ata_devo_reset+0x76: call +0x1869

ata_devo_reset+0x7b: addl $0x10,%esp
ata_devo_reset+0x7e: movl +0x204(%ebx),%eax

I have my Solaris installation imaged, so I can restore in case it gets
messed up, and I've now done the patch on the system, but it looks like
UDMA is still not working, and I was wondering if anyone had run across
something similar that might enable UDMA to work with Solaris X86 and
this motherboard?