Pack of CAM improvements

Alexander Motin mav at FreeBSD.org
Fri Jan 29 14:37:43 UTC 2010


Andriy Gapon wrote:
> on 29/01/2010 13:41 Alexander Motin said the following:
>> Yamagi Burmeister wrote:
>>> On Thu, 28 Jan 2010, Alexander Motin wrote:
>>>
>>>>>> Yamagi Burmeister wrote:
>>>>>>> ahcich0: is 00000002 cs 00000000 ss 00000000 rs 00000001 tfd 50 serr
>>>>>>> 00000000
>>>>>>> ahcich0: Timeout on slot 0
>>>>>> Try to disable MSI interrupts with `hint.ahci.0.msi=0`.
>>>>> That fixed the problem. Thank you :)
>>>> That's quite strange, as in many other cases IXP700 is working fine.
>>>> Different revisions? What is your `pciconf -lvbc` reports?
>>> When I helped nox@ debugging a problem with timeouts we noticed, that
>>> our controlers are of differend revisions. The pciconf output ist:
>>>
>>> ahci0 at pci0:0:17:0:      class=0x010601 card=0x43911002 chip=0x43911002
>>> rev=0x00 hdr=0x00
>>>     vendor     = 'ATI Technologies Inc. / Advanced Micro Devices, Inc.'
>>>     device     = 'SB700 SATA Controller [AHCI mode]'
>>>     class      = mass storage
>>>     subclass   = SATA
>>>     bar   [10] = type I/O Port, range 32, base 0xd000, size  8, enabled
>>>     bar   [14] = type I/O Port, range 32, base 0xc000, size  4, enabled
>>>     bar   [18] = type I/O Port, range 32, base 0xb000, size  8, enabled
>>>     bar   [1c] = type I/O Port, range 32, base 0xa000, size  4, enabled
>>>     bar   [20] = type I/O Port, range 32, base 0x9000, size 16, enabled
>>>     bar   [24] = type Memory, range 32, base 0xfe8ff800, size 1024,
>>> enabled
>>>     cap 01[60] = powerspec 2  supports D0 D3  current D0
>>>     cap 05[50] = MSI supports 4 messages, 64 bit
>>>     cap 12[70] = SATA Index-Data Pair
>> What's interesting, is that Asus board with the same chipset doesn't
>> expose MSI support at all:
>>
>> ahci0 at pci0:0:17:0:      class=0x010601 card=0x43911002 chip=0x43911002
>> rev=0x00 hdr=0x00
>>     vendor     = 'ATI Technologies Inc. / Advanced Micro Devices, Inc.'
>>     device     = 'SB700 SATA Controller [AHCI mode]'
>>     class      = mass storage
>>     subclass   = SATA
>>     bar   [10] = type I/O Port, range 32, base 0xc000, size  8, enabled
>>     bar   [14] = type I/O Port, range 32, base 0xb000, size  4, enabled
>>     bar   [18] = type I/O Port, range 32, base 0xa000, size  8, enabled
>>     bar   [1c] = type I/O Port, range 32, base 0x9000, size  4, enabled
>>     bar   [20] = type I/O Port, range 32, base 0x8000, size 16, enabled
>>     bar   [24] = type Memory, range 32, base 0xfbcffc00, size 1024, enabled
>>     cap 01[60] = powerspec 2  supports D0 D3  current D0
>>     cap 12[70] = SATA Index-Data Pair
>>
> 
> PCI revision register of SMBus device (0:20:0) gives a particular revision of SB7x0.
> SB700 RPR document (section 7.11) says that MSI capability should be disabled if
> the revision is 0x39 or 0x3a, it should be enabled for newer revisions (0x3b, 03c).

VIA uses ISA bridge to identify chipset, ATI (as you said) - SMBus.
Hell! Why not to do it properly?

> Those who like to experiment with potentially dangerous things may try playing
> with bit 16 of PCI config register 0x50 of SATA controller device.

I would prefer it was done by BIOS. Probably ASUS did it, as my board
has 0x3a.

-- 
Alexander Motin


More information about the freebsd-current mailing list