On 4/6/11 5:51 PM, Nate Lawson wrote:
On 4/6/2011 1:00 PM, John Baldwin wrote:
On Monday, March 28, 2011 2:06:27 pm John Baldwin wrote:
We've never figured out what is zeroing the registers in the PCI-PCI bridges.
I suspect it is not something in the ASL, but is a side effect of some BIOS
code that runs in SMM when ACPI is turned on.
Ok, so I have a patch to rework how PCI-PCI bridges manage resources for
devices. This patch applies to HEAD, no idea if it applies to older branches
(likely not). You will need to add the option 'NEW_PCIB' to your kernel
config after applying this patch.
http://www.FreeBSD.org/~jhb/patches/pcib_new.patch
For my local testing I used a hack to wipe out the PCI-PCI bridges in my
test machine similar to what the BIOS does on these machines. The bridges
all grew windows to match their original BIOS-assigned windows based on the
BIOS-assigned resources in the BARs of the child devices.
These patches should also let us allocate new resources from scratch for
devices behind PCI-PCI bridges once we have better support for determining what
are valid PCI address ranges in the Host-PCI bridge drivers.
Wow, awesome work. This is really useful for fixing a common problem.
Should bus_adjust_resource() be a DEVMETHOD or is this something that
should be done automatically within rman_alloc_resource(), possibly
based on a device flag?
Hmm, I had only thought of it as being a wrapper around
rman_adjust_resource(). I'm not sure what you mean by adjusting it
inside another method? Note that one of the reasons I have the current
method is that different devices may have different restrictions on how
resources can grow. For example, the PCI-PCI memory windows are aligned
on 1MB boundaries and are allocated in 1MB chunks while the I/O port
windows are aligned and allocated in 4K chunks.
I also plan to make use of rman_adjust_resource() for PCI bus
renumbering, but in that case resources would only grow at the end, etc.
Given that, I want to keep the logic to determine which kind of
adjustment to perform in the relevant driver rather than having rman
attempt to use a generic algorithm for expanding a resource and
associated rman used for suballocation (if that makes sense).
--
John Baldwin
_______________________________________________
freebsd-acpi@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-acpi
To unsubscribe, send any mail to "freebsd-acpi-unsubscr...@freebsd.org"