[coreboot] Some v3 Kconfig options into dts?

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Thu Oct 2 01:09:37 CEST 2008


On 02.10.2008 00:48, ron minnich wrote:
> On Wed, Oct 1, 2008 at 3:40 PM, Carl-Daniel Hailfinger
> <c-d.hailfinger.devel.2006 at gmx.net> wrote:
>
>   
>> My idea was that dts are pure hardware description and Kconfig should be
>> pure feature and board selection.
>>     
>
> That's a good point and I think Peter was making it as well.
>   

Well, your point is good as well.


>>>> svn at coreboot.org wrote:
>>>>
>>>>         
>>>>>  config K8_SCAN_PCI_BUS
>>>>> +       Whether to scan the PCI bus in stage1.
>>>>>
>>>>>
>>>>>           
>>> I adopted this from v2 but it would only be a mainboard issue; it
>>> should never be in dts since it's not an option anyone should ever
>>> set.
>>>
>>>       
>> I'm not sure I understand this completely. Do you suggest to keep
>> mainboard settings nobody should ever touch out of the dts?
>>     
>
> on re-reading this I am no longer so sure.
>
> BUT: remember that some of this stuff is stage1 and dts is not there
> in stage1. This is arguably a design problem. But after two years I am
> tired of designing and want to get this thing running :-)
>   

Absolutely. How about you get/keep it working and from time to time I
send patches to make the design a bit cleaner?

I really really want you to go ahead without considering these design
things. v3 already has a really good design and making the design
perfect shouldn't be in the way of getting hardware running.
Once we have a few boards in v3 which are also available on the market
for reasonable prices, we can attract more developers.


>>>>>  config K8_ALLOCATE_IO_RANGE
>>>>> +       Whether to allocate I/O space in stage1.
>>>>>
>>>>>  config K8_ALLOCATE_MMIO_RANGE
>>>>> +       Whether to allocate MMIO space in stage1.
>>>>>
>>>>>           
>>> same.
>>>
>>>       
>> Are there any boards which need the option?
>>     
>
> There probably are else it would not be in there :-)
>   

I believe I saw quite a few always-unused chunks of code in v2, so I
asked. But you're right ;-)


>>>>>  config MAX_PHYSICAL_CPUS
>>>>> +       Maximum number of physical CPUs (sockets).
>>>>>
>>>>>           
>>>> dts?
>>>>
>>>>
>>>>         
>>> This comes down to wires. I don't see it in the dts.
>>>
>>>       
>> So it's a hardware description. In theory, we could derive the number of
>> sockets from the dts if we ever place complete HT tree info there.
>>     
>
> yeah, good point. But the HT tree is even deeper in startup. You
> can't, for example, expand FLASH decoding to large size until you've
> wired up hypertransport, There is always going to be a chicken-and-egg
> issue with these early bits.
>   

I see. I'll try to make my stage1-dts design capable of handling this.


>>>>>  config MAX_PHYSICAL_CPUS_4_BUT_MORE_INSTALLED
>>>>> +       Config with 4 CPUs even if more are installed.
>>>>>
>>>>>           
>>>> But I think this should stay in Kconfig.
>>>>         
>>> yes. It's a bizarre variable which I hope to remove some day.
>>>       
>> Should it really be user-selectable? If so, would NVRAM be a better place?
>>     
>
> I am not sure.
>   

We'll probably have this variable killed a year from now, so I wouldn't
invest too much brainpower in it.


>>>>>  config CROSS_BAR_47_56
>>>>> +       Configure for the type of crossbar on the mainboard.
>>>>>
>>>>>           
>>>> dts?
>>>>
>>>>         
>>> no. It's wires.
>>>
>>>       
>> Hardware description -> dts.
>>     
>
> You win. (You too peter!)
>
>   
>>>>>  config IOAPIC
>>>>> @@ -153,7 +152,7 @@
>>>>>       depends ARCH_X86 && CPU_AMD_K8
>>>>>       default 0
>>>>>       help
>>>>> +       If you want to configure an IOAPIC, set this.
>>>>>
>>>>>           
>>>> Will the builder really have an opinion on this? Isn't it chip
>>>> dependent? (ie -> dts?)
>>>>
>>>>         
>>> it's something they should never want to see or change. Not even dts.
>>>
>>>       
>> If it is mainboard-hardware-specific and should not be changed, we
>> should place it in the dts.
>>     
>
> you win again! I am losing bonus points!
>   

Your score is still at +infinity. I doubt that's going to make a dent in
it. ;-)


>>>>>  config K8_HT_FREQ_1G_SUPPORT
>>>>> +       1 GHz support. Opteron E0 or later can support 1G HT,
>>>>> +       but still depends on the mainboard.
>>>>>
>>>>>           
>>>> dts?
>>>>
>>>>         
>>> no, it's a mainboard issue.
>>>
>>>       
>> dito.
>>     
>
> yeah. Except we need to see if this comes up in stage 1.
>   

OK, stays in Kconfig until stage1-dts is done.


>> I'd like to treat the dts as "don't touch" for normal users anyway. It's
>> hardware description and users are extremely unlikely to change the
>> board wiring.
>>     
>
> which is fine but there are going to be some variables set in kconfig
> which might need to change variables in dts.
>   

That's tricky but doable.


>>> For that latter type of variable, I just created mainboard.h. For the
>>> Kconfig/dts issue, it's a judgement call. Possibly the best thing to
>>> do is have the dts able to use Kconfig variables in some settings:
>>> baud = "CONFIG_TTYS0_BAUD";
>>>
>>>       
>> Hm. That's an interesting idea. Maybe we could couple it with my "dts
>> from stage1" idea.
>>     
>
> mainboard.h is a stopgap, I bet, until we get your idea.
>   

Go ahead with the stopgap.


>> That's where our understanding about the role of the dts differs. IMO
>> there should not be any reason why anybody would touch the dts (except
>> maybe for configurations like a FPGA in an Opteron socket).
>>     
>
> umm :-)
>
> So we don't touch it unless we need to touch it? That worries me.
>   

Like we specify CPU type right now, I'd like to argue that replacing a
CPU with a FPGA is changing the hardware, so a dts modification would be
appropriate. But I see your concerns and I'll try to address them in a
later proposal.

I have 296 coreboot mails to reply to, so this will probably take a few
days.


Regards,
Carl-Daniel

-- 
http://www.hailfinger.org/





More information about the coreboot mailing list