Problem detecting Sil3124 SATA controllers off of Sandy Bridge northbridge-connected PCIe slots

2012-08-02 Thread Steve Polyack

Hi,

We're having some trouble with detection of a couple of Sil3124 SATA 
controller cards on newer motherboard and processor combos. 
Specifically, we're running a Supermicro X9SCM-F motherboard (latest 
BIOS) and Intel E3-1220v2 CPU.


What we're seeing:
- Syba Sil3124 PCIe cards are only being detected when installed in PCIe 
Slot 4
-- The motherboard documentation shows that this is the only slot 
connected to the Intel C202/204 chipset on the motherboard
-- Slots 5, 6, and 7 are connected to the integrated northbridge on the 
Ivy Bridge CPU

(there is no slot 1, 2, or 3)

FreeBSD won't detect even a single Sil3124 card installed in PCIe slot 
5, 6, or 7.  If we put an Intel Dual-port NIC in either of one of these 
slots, it is detected just fine.


I've attached a verbose dmesg.boot from this box running FreeBSD 
9.0-RELEASE.  We've also tried 8.1-RELEASE, 8.2-RELEASE, and 9.1-BETA1 
with the same results.  Booting with ACPI disabled results in a kernel 
panic during the boot process.


I'd greatly appreciate any help or suggestions on this matter. We've 
already tried just about every BIOS option on the board.


Steve Polyack
Table 'FACP' at 0xddfb5290
Table 'APIC' at 0xddfb5388
APIC: Found table at 0xddfb5388
APIC: Using the MADT enumerator.
MADT: Found CPU APIC ID 0 ACPI ID 1: enabled
SMP: Added CPU 0 (AP)
MADT: Found CPU APIC ID 2 ACPI ID 2: enabled
SMP: Added CPU 2 (AP)
MADT: Found CPU APIC ID 4 ACPI ID 3: enabled
SMP: Added CPU 4 (AP)
MADT: Found CPU APIC ID 6 ACPI ID 4: enabled
SMP: Added CPU 6 (AP)
Copyright (c) 1992-2012 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 9.0-RELEASE #0: Tue Jan  3 07:46:30 UTC 2012
r...@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
Table 'FACP' at 0xddfb5290
Table 'APIC' at 0xddfb5388
Table 'FPDT' at 0xddfb5400
Table 'MCFG' at 0xddfb5448
Table 'HPET' at 0xddfb5488
Table 'SSDT' at 0xddfb54c0
Table 'SPMI' at 0xddfb5830
Table 'SSDT' at 0xddfb5870
Table 'SPCR' at 0xddfb62f8
Table 'EINJ' at 0xddfb6348
Table 'ERST' at 0xddfb6478
Table 'HEST' at 0xddfb6688
Table 'BERT' at 0xddfb6730
Table 'BGRT' at 0xddfb6760
ACPI: No SRAT table found
Preloaded elf kernel /boot/kernel/kernel at 0x813cf000.
Calibrating TSC clock ... TSC clock: 3100091416 Hz
CPU: Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz (3100.09-MHz K8-class CPU)
  Origin = GenuineIntel  Id = 0x306a9  Family = 6  Model = 3a  Stepping = 9
  
Features=0xbfebfbffFPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE
  
Features2=0x77bae3ffSSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,TSCDLT,AESNI,XSAVE,AVX,F16C,b30
  AMD Features=0x28100800SYSCALL,NX,RDTSCP,LM
  AMD Features2=0x1LAHF
  TSC: P-state invariant, performance statistics
real memory  = 17179869184 (16384 MB)
Physical memory chunk(s):
0x1000 - 0x00094fff, 606208 bytes (148 pages)
0x0010 - 0x001f, 1048576 bytes (256 pages)
0x0140b000 - 0xdddecfff, 3701350400 bytes (903650 pages)
0xdf056000 - 0xdf056fff, 4096 bytes (1 pages)
0xdf09a000 - 0xdf7f, 7757824 bytes (1894 pages)
0x0001 - 0x000400fa7fff, 12901318656 bytes (3149736 pages)
avail memory = 16506712064 (15742 MB)
Event timer LAPIC quality 600
ACPI APIC Table: SUPERM SMCI--MB
INTR: Adding local APIC 2 as a target
INTR: Adding local APIC 4 as a target
INTR: Adding local APIC 6 as a target
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
FreeBSD/SMP: 1 package(s) x 4 core(s)
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  2
 cpu2 (AP): APIC ID:  4
 cpu3 (AP): APIC ID:  6
x86bios:  IVT 0x00-0x0004ff at 0xfe00
x86bios: SSEG 0x001000-0x001fff at 0xff8000246000
x86bios: EBDA 0x098000-0x09 at 0xfe098000
x86bios:  ROM 0x0a-0x0fefff at 0xfe0a
APIC: CPU 0 has ACPI ID 1
APIC: CPU 1 has ACPI ID 2
APIC: CPU 2 has ACPI ID 3
APIC: CPU 3 has ACPI ID 4
lapic0: CMCI unmasked
ULE: setup cpu 0
ULE: setup cpu 1
ULE: setup cpu 2
ULE: setup cpu 3
ACPI: RSDP 0xf0490 00024 (v02 SUPERM)
ACPI: XSDT 0xddfaa088 00094 (v01 SUPERM SMCI--MB 0001 AMI  00010013)
ACPI: FACP 0xddfb5290 000F4 (v04 SUPERM SMCI--MB 0001 AMI  00010013)
ACPI: DSDT 0xddfaa1b8 0B0D7 (v02 SUPERM SMCI--MB  INTL 20051117)
ACPI: FACS 0xddfb8f80 00040
ACPI: APIC 0xddfb5388 00072 (v03 SUPERM SMCI--MB 0001 AMI  00010013)
ACPI: FPDT 0xddfb5400 00044 (v01 SUPERM SMCI--MB 0001 AMI  00010013)
ACPI: MCFG 0xddfb5448 0003C (v01 SUPERM SMCI--MB 0001 MSFT 0097)
ACPI: HPET 0xddfb5488 00038 (v01 SUPERM SMCI--MB 0001 AMI. 0005)
ACPI: SSDT 0xddfb54c0 0036D (v01 SataRe SataTabl 1000 INTL 20091112)
ACPI: SPMI 0xddfb5830 00040 (v05 A M I   OEMSPMI  

Re: Problem detecting Sil3124 SATA controllers off of Sandy Bridge northbridge-connected PCIe slots

2012-08-02 Thread John Baldwin
On Thursday, August 02, 2012 10:21:20 am Steve Polyack wrote:
 Hi,
 
 We're having some trouble with detection of a couple of Sil3124 SATA 
 controller cards on newer motherboard and processor combos. 
 Specifically, we're running a Supermicro X9SCM-F motherboard (latest 
 BIOS) and Intel E3-1220v2 CPU.
 
 What we're seeing:
 - Syba Sil3124 PCIe cards are only being detected when installed in PCIe 
 Slot 4
 -- The motherboard documentation shows that this is the only slot 
 connected to the Intel C202/204 chipset on the motherboard
 -- Slots 5, 6, and 7 are connected to the integrated northbridge on the 
 Ivy Bridge CPU
 (there is no slot 1, 2, or 3)
 
 FreeBSD won't detect even a single Sil3124 card installed in PCIe slot 
 5, 6, or 7.  If we put an Intel Dual-port NIC in either of one of these 
 slots, it is detected just fine.
 
 I've attached a verbose dmesg.boot from this box running FreeBSD 
 9.0-RELEASE.  We've also tried 8.1-RELEASE, 8.2-RELEASE, and 9.1-BETA1 
 with the same results.  Booting with ACPI disabled results in a kernel 
 panic during the boot process.
 
 I'd greatly appreciate any help or suggestions on this matter. We've 
 already tried just about every BIOS option on the board.

Does the device show up in pciconf -l output?

-- 
John Baldwin
___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to freebsd-stable-unsubscr...@freebsd.org


Re: Problem detecting Sil3124 SATA controllers off of Sandy Bridge northbridge-connected PCIe slots

2012-08-02 Thread Steve Polyack

On 08/02/2012 01:58 PM, John Baldwin wrote:

On Thursday, August 02, 2012 10:21:20 am Steve Polyack wrote:

Hi,

We're having some trouble with detection of a couple of Sil3124 SATA
controller cards on newer motherboard and processor combos.
Specifically, we're running a Supermicro X9SCM-F motherboard (latest
BIOS) and Intel E3-1220v2 CPU.

What we're seeing:
- Syba Sil3124 PCIe cards are only being detected when installed in PCIe
Slot 4
-- The motherboard documentation shows that this is the only slot
connected to the Intel C202/204 chipset on the motherboard
-- Slots 5, 6, and 7 are connected to the integrated northbridge on the
Ivy Bridge CPU
(there is no slot 1, 2, or 3)

FreeBSD won't detect even a single Sil3124 card installed in PCIe slot
5, 6, or 7.  If we put an Intel Dual-port NIC in either of one of these
slots, it is detected just fine.

I've attached a verbose dmesg.boot from this box running FreeBSD
9.0-RELEASE.  We've also tried 8.1-RELEASE, 8.2-RELEASE, and 9.1-BETA1
with the same results.  Booting with ACPI disabled results in a kernel
panic during the boot process.

I'd greatly appreciate any help or suggestions on this matter. We've
already tried just about every BIOS option on the board.

Does the device show up in pciconf -l output?

The device itself does NOT show up in pciconf -l output.  However, I ran 
pciconf on two different boots, once with and once without the card 
installed in one of the non-probed slots.  I noticed that the following 
Ivy Bridge PCI Express Root Port showed up when the card was installed:
+pcib2@pci0:0:1:1:class=0x060400 card=0x062415d9 chip=0x01558086 
rev=0x09 hdr=0x01

+vendor = 'Intel Corporation'
+device = 'Ivy Bridge PCI Express Root Port'
+class  = bridge
+subclass   = PCI-PCI
+cap 0d[88] = PCI Bridge card=0x062415d9
+cap 01[80] = powerspec 3  supports D0 D3  current D0
+cap 05[90] = MSI supports 1 message
+cap 10[a0] = PCI-Express 2 root port max data 128(128) link x1(x8)
+ecap 0002[100] = VC 1 max VC0
+ecap 0005[140] = unknown 1
+ecap 0019[d94] = unknown 1

The previous Ivy Bridge Root Port still shows up, and shows the 
following change:

-cap 10[a0] = PCI-Express 2 root port max data 256(256) link x1(x8)
+cap 10[a0] = PCI-Express 2 root port max data 256(256) link x0(x8)

I also meant to note in my initial email that the Option ROM (RAID 
setup, drive probing, etc.) shows up for the Sil3124 SATA card in any 
slot.  Even when the OS is unable to discover the card.


Thanks for the response,
Steve

hostb0@pci0:0:0:0:  class=0x06 card=0x062415d9 chip=0x01588086 rev=0x09 
hdr=0x00
vendor = 'Intel Corporation'
device = 'Ivy Bridge DRAM Controller'
class  = bridge
subclass   = HOST-PCI
cap 09[e0] = vendor (length 12) Intel cap 0 version 1
pcib1@pci0:0:1:0:   class=0x060400 card=0x062415d9 chip=0x01518086 rev=0x09 
hdr=0x01
vendor = 'Intel Corporation'
device = 'Ivy Bridge PCI Express Root Port'
class  = bridge
subclass   = PCI-PCI
cap 0d[88] = PCI Bridge card=0x062415d9
cap 01[80] = powerspec 3  supports D0 D3  current D0
cap 05[90] = MSI supports 1 message 
cap 10[a0] = PCI-Express 2 root port max data 256(256) link x0(x8)
ecap 0002[100] = VC 1 max VC0
ecap 0005[140] = unknown 1
ecap 0019[d94] = unknown 1
pcib2@pci0:0:1:1:   class=0x060400 card=0x062415d9 chip=0x01558086 rev=0x09 
hdr=0x01
vendor = 'Intel Corporation'
device = 'Ivy Bridge PCI Express Root Port'
class  = bridge
subclass   = PCI-PCI
cap 0d[88] = PCI Bridge card=0x062415d9
cap 01[80] = powerspec 3  supports D0 D3  current D0
cap 05[90] = MSI supports 1 message 
cap 10[a0] = PCI-Express 2 root port max data 128(128) link x1(x8)
ecap 0002[100] = VC 1 max VC0
ecap 0005[140] = unknown 1
ecap 0019[d94] = unknown 1
em0@pci0:0:25:0:class=0x02 card=0x150215d9 chip=0x15028086 rev=0x05 
hdr=0x00
vendor = 'Intel Corporation'
device = '82579LM Gigabit Network Connection'
class  = network
subclass   = ethernet
bar   [10] = type Memory, range 32, base 0xf7b0, size 131072, enabled
bar   [14] = type Memory, range 32, base 0xf7b25000, size 4096, enabled
bar   [18] = type I/O Port, range 32, base 0xf020, size 32, enabled
cap 01[c8] = powerspec 2  supports D0 D3  current D0
cap 05[d0] = MSI supports 1 message, 64 bit enabled with 1 message
cap 13[e0] = PCI Advanced Features: FLR TP
ehci0@pci0:0:26:0:  class=0x0c0320 card=0x062415d9 chip=0x1c2d8086 rev=0x05 
hdr=0x00
vendor = 'Intel Corporation'
device = '6 Series/C200 Series Chipset Family USB Enhanced Host 
Controller'
class  = serial bus
subclass   = USB
bar   [10] = type Memory, range 32, base 0xf7b24000, size 1024, enabled
cap 01[50] = powerspec 2  supports D0 D3  current D0
cap 0a[58] = EHCI Debug Port at offset 0xa0 in map 0x14
cap 

Re: Problem detecting Sil3124 SATA controllers off of Sandy Bridge northbridge-connected PCIe slots

2012-08-02 Thread John Baldwin
On Thursday, August 02, 2012 4:35:20 pm Steve Polyack wrote:
 On 08/02/2012 01:58 PM, John Baldwin wrote:
  On Thursday, August 02, 2012 10:21:20 am Steve Polyack wrote:
  Hi,
 
  We're having some trouble with detection of a couple of Sil3124 SATA
  controller cards on newer motherboard and processor combos.
  Specifically, we're running a Supermicro X9SCM-F motherboard (latest
  BIOS) and Intel E3-1220v2 CPU.
 
  What we're seeing:
  - Syba Sil3124 PCIe cards are only being detected when installed in PCIe
  Slot 4
  -- The motherboard documentation shows that this is the only slot
  connected to the Intel C202/204 chipset on the motherboard
  -- Slots 5, 6, and 7 are connected to the integrated northbridge on the
  Ivy Bridge CPU
  (there is no slot 1, 2, or 3)
 
  FreeBSD won't detect even a single Sil3124 card installed in PCIe slot
  5, 6, or 7.  If we put an Intel Dual-port NIC in either of one of these
  slots, it is detected just fine.
 
  I've attached a verbose dmesg.boot from this box running FreeBSD
  9.0-RELEASE.  We've also tried 8.1-RELEASE, 8.2-RELEASE, and 9.1-BETA1
  with the same results.  Booting with ACPI disabled results in a kernel
  panic during the boot process.
 
  I'd greatly appreciate any help or suggestions on this matter. We've
  already tried just about every BIOS option on the board.
  Does the device show up in pciconf -l output?
 
 The device itself does NOT show up in pciconf -l output.  However, I ran 
 pciconf on two different boots, once with and once without the card 
 installed in one of the non-probed slots.  I noticed that the following 
 Ivy Bridge PCI Express Root Port showed up when the card was installed:
 +pcib2@pci0:0:1:1:class=0x060400 card=0x062415d9 chip=0x01558086 
 rev=0x09 hdr=0x01
 +vendor = 'Intel Corporation'
 +device = 'Ivy Bridge PCI Express Root Port'
 +class  = bridge
 +subclass   = PCI-PCI
 +cap 0d[88] = PCI Bridge card=0x062415d9
 +cap 01[80] = powerspec 3  supports D0 D3  current D0
 +cap 05[90] = MSI supports 1 message
 +cap 10[a0] = PCI-Express 2 root port max data 128(128) link x1(x8)
 +ecap 0002[100] = VC 1 max VC0
 +ecap 0005[140] = unknown 1
 +ecap 0019[d94] = unknown 1

Oh, now I see the problem.  This isn't completely trivial to solve. :(

pcib3: PCI-PCI bridge at device 0.0 on pci2
pcib2: attempting to grow I/O port window for (0-0xfff,0x1000)
pcib3: failed to allocate initial I/O port window: 0-0xfff
pcib2: attempting to grow memory window for (0-0xf,0x10)
pcib3: failed to allocate initial memory window: 0-0xf
pcib2: failed to allocate initial prefetch window (0-0xf,0x10)
pcib2: attempting to grow memory window for (0-0xf,0x10)
pcib3: failed to allocate initial prefetch window: 0-0xf
pcib3:   domain0
pcib3:   secondary bus 0
pcib3:   subordinate bus   0
pcib3:   no prefetched decode

This bridge isn't configured by the BIOS, so we can't see any devices behind 
it.  I have some patches to start adding support for fixing that, but they are 
incomplete (and I haven't touched them in months).  Try this hack as a test:

Index: sys/dev/pci/pci_pci.c
===
--- pci_pci.c   (revision 238992)
+++ pci_pci.c   (working copy)
@@ -566,6 +566,13 @@ pcib_attach_common(device_t dev)
 SYSCTL_ADD_UINT(sctx, SYSCTL_CHILDREN(soid), OID_AUTO, subbus,
   CTLFLAG_RD, sc-subbus, 0, Subordinate bus number);
 
+if (device_get_unit(dev) == 3  sc-secbus == 0  sc-subbus == 0) {
+   pci_write_config(dev, PCIR_SUBBUS_1, 3, 1);
+   pci_write_config(dev, PCIR_SECBUS_1, 3, 1);
+   sc-secbus = 3;
+   sc-subbus = 3;
+}
+
 /*
  * Quirk handling.
  */


-- 
John Baldwin
___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to freebsd-stable-unsubscr...@freebsd.org