On Saturday, January 01, 2011 2:58:12 pm Darmawan Salihun wrote:
So, I found out that it seems the
allocation of I/O ports for the IDE controller is just fine.
However, the primary IDE channel is shared between
an IDE interface and a CF card. Moreover, Linux detects
DMA bug, because all drives connected to the interface would be
in PIO mode :-/
If all drives on the primary channel are "forced" to PIO mode, then
shouldn't the "IDE PCI bus master register" (offset 20h per SFF-8038i)
along with the command register (offset 4h), are set to indicate the
controller doesn't support bus mastering?
I don't think that BIOS should change controller capabilities depending
on attached drives, may be except may be for workarounding some known
bugs/incompatibilities. Otherwise this will just make hot-plug things
tricky and unpredictable.
>> Anyway, is it possible for devices on _the same_ channel to use
>> different setting in FreeBSD? For example, the primary slave
>> is using UDMA66 while the primary master is using PIO-4.
>> Or such configuration is considered invalid.
Yes, it is possible. If automatic negotiation doesn't succeed for some
reason, you may limit initial mode for each specific device using
hint.ata.X.devY.mode loader tunables, added not so long ago. After boot
it can also be tuned per-device via atacontrol or camcontrol tools,
depending on ATA stack used.
>> The AMDLX800-CS5536 board I'm working with has different connectors
>> for the primary master and primary slave. Moreover, the chipset
>> supports different setting in primary master and primary slave.
There are few other controllers not supporting such configurations, but
it is handled by their specific drivers.
--
Alexander Motin
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"