Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Jul 2009 08:03:16 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-acpi@freebsd.org
Subject:   Re: SunFire x4275
Message-ID:  <200907130803.17161.jhb@freebsd.org>
In-Reply-To: <17574_1247071910_4A54CEA6_17574_42_1_4A54CE95.4090503@davisvision.com>
References:  <17574_1247071910_4A54CEA6_17574_42_1_4A54CE95.4090503@davisvision.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 08 July 2009 12:51:33 pm Jesse Kempf wrote:
> Hi,
> We recently got in a SunFire x4275, one of Sun's new Nehalem boxes. The 
> full server architecture whitepaper is here: 
> https://www.sun.com/offers/details/X4x70_server_architecture.html 
> (requires registration).
> 
> The upshot of the system is that there are a pair of "intelligent" 
> risers in the machine, which take a x8 PCIe link and mux it to a pair of 
> x8 PCIe links. Sun uses the IDT PES24T6G2 PCIe switch to do the muxing.
> 
> FreeBSD, when it boots, can't see past the risers. This holds for both 
> 7.2p1 and 8-CURRENT. It can see the IDT PCIe switches, and if a PCIe 
> card is moved off the intelligent riser, to the one dumb riser in the 
> machine, the card can be seen. Interestingly, when I boot FreeBSD with 
> ACPI turned off, all the devices past the risers can be seen, but device 
> attachment fails spectacularly.
> 
> I've tried setting debug.acpi.disabled for individual subsystems that 
> make sense, and have not been able to come up with a combination that 
> allows the system to boot as well as see past the risers. From what I 
> understand, this is not too surprising.
> 
> When I say "can't see past the risers", I mean:
> 
> pcib9: <ACPI PCI-PCI bridge> at device 0.0 on pci25
> pcib9:   domain            0
> pcib9:   secondary bus     26
> pcib9:   subordinate bus   38
> pcib9:   I/O decode        0x8000-0x9fff
> pcib9:   memory decode     0xfaa00000-0xfabfffff
> pcib9:   no prefetched decode
> device_attach: pcib9 attach returned 6

Hmm, I would add printfs to each failing return() in the attach methods of 
sys/dev/acpica/acpi_pcib_pci.c to see where it is failing.

I bet you are failing on this:

    /*
     * Don't attach if we're not really there.
     *
     * XXX: This isn't entirely correct since we may be a PCI bus
     * on a hot-plug docking station, etc.
     */
    if (!acpi_DeviceIsPresent(dev))
	return_VALUE(ENXIO);

I'm guessing both bridges are returning not present via _STA?

-- 
John Baldwin



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