ACPI, memory management a inicializace OS (chobotnicovity problem)
Dan Lukes
dan at obluda.cz
Fri Jan 4 20:29:36 CET 2008
Roman Divacky napsal/wrote, On 01/04/08 18:06:
>> ze stale plati, ze pamet sezere kernelova alokace = kmeminit().
> co presne v tom kmeminit() "zere" pamet? ja tam vidim akorat ze to vytvori
> mapu pro kernel a pak vytvori nejake uma zony. to by nemelo zabrat prilis
> pameti..
kmeminit() vola kratce po svem zacatku
kmem_map = kmem_suballoc(...)
V mem pripade se jedna o pamet velikost 320MB
Nevim, kudy se presne ubiraji cesty kodu, ale mam tisky uvnitr
vm_pageq_remove_nowakeup
Mirne odbocim - fyzicke stranky jsou organizovany v cele rade front.
Treba PQ_FREE nebo PQ_CACHE. V dobe, kdy pamet shani ACPI jsou uz uplne
vsechny zajimave stranky umistene v PQ_NONE coz je takova zvlastni
specialni "fronta", protoze to znamena "v zadne fronte"
A tak tedy zpatky - mam tisky uvnitr vm_pageq_remove_nowakeup(), coz je
jedna ze dvou rutin, ktera vyjima stranky z jinych front a umistuje je
"nikam".
No a behem shora zminene subalokace se mi do PQ_NONE prestehuje
kompletni fyzicka pamet toho rozsahu, ktery pak zajima ACPI.
Kudy se presne berou cesty programu mezi kmem_suballoc a
vm_pageq_remove_nowakeup vysledovano nemam. Uvnitr
vm_pageq_remove_nowakeup se neda zavolat ani panic(). Tedy - da - ale
core-dump nevznikne, takze se na backtrace podivat neda. O moznosti
aktivovat DDB ani nemluvim.
>> Po delsi dobe ladeni se ukazalo, ze s prioritama spousteni je to trochu
>> slozitejsi.
...
>> To znamena, ze si s prioritou acpi_alloc_wakeup_handler() muzu hejbat
>> jak chci - stejne se mi brzo nespusti (alespon dokud bude ACPI
>> loadovatelny modul - a to bude, protoze zakompilovat ho nelze).
>
> ta analyza vypada dobre
To by po peti dnech mela. Klidne to ale muzeme odlozit jako problem,
ktery je prilis velky na to, aby byl soucasti jineho problemu.
preload_linker pouziva malloc() takze pred kmeminit() bezet nemuze.
Takze i kdybych se ho pokusil v prioritach posunout vys, nedostane se
tak vysoko jak je potreba. Tam nejvys co ho dokazu posunout uz je pozde.
To by se linker, nebo alespon tahle jeho cast, musela prepsat a to neni
uplne trivialni vec.
>> je tu nekdo, kdo ma nastudovano jak v jadre FreeBSD funguje memory management na urovni rozhrani fyzicke a
>> virtualni pameti ?
>> ma nekdo nastudovan dobre dynamicky jadrovy linker
> jsem si pomerne jisty ze nikdo kdo cte tuhle konferenci tyhle znalosti nema :)
To od tebe nebylo hezke. Bud' vuci zdejsim pritomnym, nebo vuci
konferenci jako takove ... ;-|
Ja jsem ale nemyslel, ze to tu vyresim, ja jen sonduju, jestli je tu
nekdo, s kym by se o necem takovem dalo promluvit.
> mne jen napada zkusit posunout zacatek te kernel mapy, treba nad 1MB nebo tak.
> to definuje VM_MIN_KERNEL_ADDRESS
Pokud jde o neciste triky, tak s tim zadny problem neni - to ja si
proste tu pamet staticky vyhradim hned po jeji inicializaci a v acpi
kodu uz ji alokovat nebudu - pouziju tu predalokovanou.
To problem neni. Ale z toho nebude mit nic nikdo jiny. Kdezto rozumne
reseni by se dalo submitnout treba by se, tak za dva tri roky, objevilo
i v "oficialnim" kodu.
Dan
More information about the Users-l
mailing list