tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: page color initialization



On Fri, Sep 30, 2011 at 1:13 PM, matthew green <mrg%eterna.com.au@localhost> 
wrote:
>
>> The current code seems to allow to change uvmexp.ncolors at
>> configure() -> cpu_attach() -> uvm_page_recolor().  I think changing
>> uvmexp.ncolors after uvm_init() is too late, and allocating such
>> fundamental data like page freelist buckets that late is best to
>> avoid.
>>
>> How about:
>>
>> - determine cache size in MD boot code, by querying the primary CPU
>> (supposing that this should not need lots of infrastructure like
>> dynamic memory allocation / bus interaction)
>
> primary CPU isn't good enough for this task.

Could you elaborate more?  Any concrete counter-example?

>> - determine uvmexp.ncolors before calling 
>> init_main()/uvm_init()/uvm_page_init()
>>
>> - if configure() finds a CPU whose cache size doesn't match the
>> primary CPU, just reject to attach it
>
> what actual problem are you worried about here?  besides this
> new bug, what else is wrong?

Complexity, non-determinism, lack of design.

Questions:

- is there any architecture which allows MP with different cache-line sizes?

- if yes, does NetBSD support it?  (or any plan/intention?)

- does NetBSD allow CPU attach/detach at run-time?  (or any plan/intention?)

- how about VIPT, where page-color aware remapping is mandatory now?

(Allocating these important data structures in uvm_page.c by calling
malloc(9) is just plain wrong IMO.)


Home | Main Index | Thread Index | Old Index