Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 03 Jan 2011 20:08:08 +0200
From:      Alexander Motin <mav@FreeBSD.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-hackers@freebsd.org, Darmawan Salihun <darmawan_salihun@yahoo.com>
Subject:   Re: PCI IDE Controller Base Address Register setting
Message-ID:  <4D221088.8080103@FreeBSD.org>
In-Reply-To: <201101031022.02558.jhb@freebsd.org>
References:  <745749.9930.qm@web76811.mail.sg1.yahoo.com> <201101031022.02558.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
> 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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D221088.8080103>