Hi

W dniu 22.03.2022 o 10:30, Arthur Heymans pisze:
Hi

    e.g. if we got from HOB info that physical stack x has
    preallocated PCI buses 0x20..0x2f, io form 0x2000..0x2fff, mem
    0xd0000000..0xdfffffff, mem 0x10000000000...0x1ffffffffff and
    there are 2 root buses 0x20 and 0x28 instead of adding one domain
    with "physical" stack we added two domains with "virtual" stacks:

    stack x1 with virtually preallocated PCI buses 0x20..0x27, ip form
    0x2000..0x27ff, mem 0xd0000000..0xd7ffffff, mem
    0x10000000000...0x17fffffffff
    stack x2 with virtually preallocated PCI buses 0x28..0x2f, ip form
    0x2800..0x2fff, mem 0xd7000000..0xdfffffff, mem
    0x18000000000...0x1ffffffffff

    Each one with only one root bus without this link_list->next
    "complexity"

This only works if the downstream resources fit in this split virtual allocation, which you can't know before reading all downstream resources. Especially for mem32 resources the resource allocation is already tight so I think this can get ugly.
Today most resources are mem64 "ready" and above 4G window is big enough so using "prefer 64bit strategy" practically eliminates this tight on mem32 range

    At some point of time I was thinking about something called
    "subdomains" concept to cover this multiple root buses in one
    domain case so to make something like:

        domain 0  //domain
            domain 1 //subdomain
                 first root bus from stack x and its downstream devices
            end
            domain 2 //subdomain
                second root bus from stack x and its downstream devices
            end
        end
        domain ...
            ...
        end
        ...


T8he way I understood it, domains are a set of resource windows to be constrained and then distributed over children and in this case children over multiple PCI root busses. I have some doubts that subdomains map the situation correctly/efficiently, because it has essentially the same problem as knowing how to split the resources between domains correctly.
As I stated it was never implemented as subdomain level device is more a "bridge device" than "domain device"

OTOH, does it even make sense to map this in the devicetree? The way FSP reports stacks is generated at runtime and differs depending on the hardware configuration.
So having a static structure mapping that may not be interesting?

Arthur

It depends if few ms in boot time does matter.

It also depends on SoCs familly. Didn`t checked xeon but on SoCs I was worked on most of stack configuration was common to whole family with only minor differences on 1 or 2 stacks.

Mariusz
_______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-le...@coreboot.org

Reply via email to