On 09/04/2011 03:30 PM, Michael S. Tsirkin wrote:
>
> Create a memory region for the bridge's address space. This region
> is not directly added to system_memory or its descendants.
I do this for each bridge in the hierarchy, right?
Each bridge does this independently (so yes).
> fx440 does exactly this, with the following cosmetic changes:
>
> - the windows are different (vga, pci hole, 64-bit pci area, PAMx, SMRAM)
> - instead of mapping them to the parent bridge's
> pci_address_space(), we map them to get_system_memory()
Hmm, what ties the windows of a child bridge
to be within the windows of a parent?
system_memory
|
+--- pci0_alias0 (aliases part of pci0)
pci0
|
+--- pci1_alias0 (a bridge)
pci1
|
+--- pci2_alias0 (another bridge)
pci2
|
+--- BAR
When rendering the memory hierarchy, the only parts of BAR which are
visible are those that fit the clipping regions pci0_alias0 ^
pci1_alias0 ^ pci2_alias0. If there are multiple aliases (like the low
and high PCI holes, and PAM, it becomes (pci0_alias0 v pci0_alias1) ^
(pci1_alias0v pci1_alias1) ^ (pci2_alias0 v pci2_alias1). ( "^" ==
intersection, "v" == union )
--
error compiling committee.c: too many arguments to function