[coreboot] Trac reminder: list of new ticket(s)
Eric W. Biederman
ebiederm at xmission.com
Thu Jul 17 08:06:08 CEST 2008
Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net> writes:
> On 16.07.2008 20:12, Eric W. Biederman wrote:
>> Segher Boessenkool <segher at kernel.crashing.org> writes:
>>
>>
>>>> I just figure the default should be the current behavior.
>>>>
>>> Remind me, what _is_ the current behaviour?
>>>
>>
>> Have one default SSVID/SSDID per motherboard, if that default
>> value is not set I think we assume 0.
>>
>> The proposal was to have SSVID/SSDID programmed individually for
>> each part on the motherboard.
>>
>>
>>> I see two options:
>>>
>>> a) Don't program it, leave it at 0.
>>> b) Program it the same as the factory BIOS does.
>>>
>> c) Program it to the proper value for a native LinuxBIOS board.
>>
>
> The big problem with that is that we either have to get subsystem device
> IDs from the board vendor (unlikely) or we allocate a vendor ID for
> coreboot and start our own numbering (painful).
We just copy the vendor id and the subsys id that the board vendor uses.
Or if it a pure LinuxBIOS board then ask the board maker for a pci
vendor id, and device id for the board. I don't expect that to be
too difficult for a company that is making it's own boards.
> Indeed. The place for this is in the dts.
>
>
>>> -- Every chip is programmed differently, so we need a driver for every
>>> chip, even if coreboot doesn't care about any other chip specifics;
>>>
>>
>> Assuming we even get the option. For anything not designed to be integrated
>> on a motherboard you need a mechanism that programs the SSVID/SSDID before
>> the firmware runs. Generally we would also need a driver if it is
>> possible to disable that chip. I don't believe this is unreasonable
>> overhead.
>>
>
> I think doing this exactly the same way as a vendor BIOS is important.
> Does the vendor BIOS really set the subsystem IDs before the option ROM
> is run or does this happen afterwards?
It is a PCI requirement that the SSVID/SSDID are set before software
can read them, as running the option rom is optional. For onboard devices
there is enough wiggle room they can ask firmware to program it.
>>> -- OS drivers using this subsystem ID might use it to decide the chip
>>> is configured in a certain way.
>>>
>>
>> Then they are either (a) broken if it is software configuration or
>> will (b) break if they are reasonably looking for hardware configuration
>> and we don't provide it. Which argues for properly setting the SSVID/SSDID.
>>
>
> We need to mirror that sonftware configuration anyway if we don't want
> to change the drivers in every possible OS as well.
> And "proper" values are very difficult to define if our device
> configuration doesn't match what the drivers expect.
Yep.
>>> What are the downsides to not programming an SSID/SSVID?
>>>
>>
>> The goal when the code was added was to correctly support the SSID/SSVID.
>> With an ultimate goal of identifying a motherboard by looking at them.
>>
>> If someone is doing a quick port or a hack I agree ignoring the issue
>> is better than doing the wrong thing. If you are doing a production
>> quality port it isn't an especially hard thing to get right, and so
>> if we have the opportunity we should set it.
>>
>
> What about a global default which can be overridden per device? Most
> boards I have use the same subsystem device ID for over 50% of the
> devices on a given board, so this proposal would reduce the effort to
> zero for reasonable motherboards.
That is what I would implement. A global default. And if we don't
specify the global default the global default is 0.
Eric
More information about the coreboot
mailing list