Nie. Skus pri konpilacii jadra zapnut: Processor type and features -> High Memory Support na On a urcite to pomoze. (prip skompilovany kernel, mdk ma kernel-i686-up-4GB-2.4.22.10mdk-1-1mdk.i586.rpm)
If you are compiling a kernel which will never run on a machine with more than 960 megabytes of total physical RAM, answer "off" here (default choice and suitable for most users). This will result in a "3GB/1GB" split: 3GB are mapped so that each process sees a 3GB virtual memory space and the remaining part of the 4GB virtual memory space is used by the kernel to permanently map as much physical memory as possible.
Mozno mi niekto poradi ako portovat ovladac k specialnej karte na riadenie 4 motorov pre roboticke aplikacie. Ide totiz o to, ze bola urobena pre 2.0.x jadra - povodne pre 2.0.6 jadro, ale bezi aj na 2.0.38 jadre pre 2.4.x pripadne 2.6.x jadra. Ako sa robi taky port, ked mam zdrojaky a na co sa mam zamerat - vyuziva to modversions a pod 2.4.18 to neslo ani skompilovat.
no 2.0 oproti 2.4 je dost velky rozdiel. rewrite bude rychlejsi. btw. ak si doteraz nahodou nepisal drivery tak dobry oporny bod je O'reilly Linux device drivers 2nd edition. - ta kniha je online dostupna na nete v PDF. a samozrejme kernel docs :-) vela stastia a chladnu hlavy pri mnohych samozvanych rebootoch a kernel panic-och :-))
Pisete, ze Pentium Pro umi adresovat az 64 GB pameti. Podle me to neni pravda, PAE extenze (cili tu 36-bitovou adresaci) maji az procesory Xeon zalozene na jadre Pentia III a IV.
Ma nekdo nejake odkazy, ktere by potvrdily jedno nebo druhe? Napriklad referencni manualy Intelu? IMHO z Pentia Pro rozhodne neleze 36 adresovych dratu.
-Yenya
Softwarově mají PAE všechny od Pentia pro výš (můžeš se podívat do /proc/cpuinfo a najít tam pae) (dokonce mělo mít PAE už Pentium 1, ale před vydáním to odstranili, je na to jeden nepoužitý bit v CPUID). Popis pinů procesoru tu nemám, tak nevím, kolik z nich vede adresních drátů. Ani bych se nedivil, kdyby 36 drátů dávali pouze do Xeonů.
Pentium Pro umi adresovat 16x vic fyzicke pameti (64G), nez virtualni (4G)? To jsou mi veci... :)
Jinak informace jsou samozrejme v intelskych manualech, podle kterych (viz napr. http://developer.intel.com/design/pentium/manuals/24319001.pdf) ma PPro opravdu 36-bitove adresovatelnou virtualni pamet.
Predpokladam ze v clanku preskocili slovka a nerobim ziadne hluposti. Mam 2.5 GB RAM a 8 GB swap. Ako nahle preleziem cez 2.5 GB system je v bahne. Na masinu dokazem pingnut, no to je tak secko. Load na masine vybehne na nejakych 6-7. Vie mi niekto poradit ako zistit co sa deje? Ako viem otestovat celu virtualnu pamat? Dik za rady. Dodo
Ten swap je v partition nebo v souboru ? Kazdopadne je mozne ze dojde k deadlocku - system potrebuje odswapovat stranku, ale nemuze dokud nenaalokuje bounce buffer ... pochopitelne je to chyba, ale vzhledem k tomu ze na ni nikdo nenarazi ...
Pokud mate swap v souboru, prehodte ho do partition. Mohlo by to pouzivat mene bufferu.
Podíval jsem se třeba na náhodně vybraný ovladač síťové karty (if_wx.c) a nalezl v něm deklaraci u_int32_t dma_addr; a rxpkt->dma_addr = vtophys(mtod(mb, vm_offset_t));
(přičemž vtophys pouze projte tabulku stránek a vrátí fyzickou adresu).
Co se stane, když ta adresa bude nad 4G?
Opravdu to chodí? A co používáte za síťovou kartu?
Z manualove stanky pae(7) na FreeBSD 4.9:
Many devices or their device drivers are not capable of direct memory
access to physical addresses above 4 gigabytes. In order to make use of
direct memory access IO in a system with more than 4 gigabytes of memory
when the PAE option is used, these drivers must use a facility for remap-
ping or substituting physical memory which is not accessible to the
device. One such facility is provided by the busdma interface. Device
drivers which do not account for such devices will not work reliably in a
system with more than 4 gigabytes of memory when the PAE option is used,
and may cause data corruption.
> Existuje sice i rozíení PCI pro 64bitové adresování,
> nicmén to je jednak pomalejí
Pokud myslite DAC (dual address cycle) tak to skutecne
pomalejsi je (o jeden adresni cyklus, coz je dokonale
zanedbatelne). 64bitova PCI samozrejme umi 64bitove
adresy nativne.
> Na PCI neexistuje ádný DMA adi podobn, jako teba na
> ISA; na PCI si kadé zaízení dlá adresaci pamti samo.
> Tato technika se nazývá Bus-master.
Ne. Bus mastering znamena ze zarizeni muze aktivne
prevzit kontrolu nad sbernici (na nekterych
sbernicich dokonce preemptovat probihajici
transakci). Tohle je detail.
> FreeBSD 5 má tyto nedostatky odstranny ovladae
> zaízení mají sjednocený pístup k DMA pomocí funkcí
> bus_dmamap_load a bus_dmamap_unload. Synchronizaci
> s cachemi procesoru musí speciáln provádt pomocí
> funkce bus_dmamap_sync.
Doplnil bych ze rozhrani bus_dma(9) bylo na FreeBSD5
preneseno z NetBSD, kde se objevilo ve verzi 1.3.
Vas popis je dosti neuplny, zajemcum doporucuji
manualove stranky na {free,net}bsd.org
> Nutno upozornit na celkem závaný problém, který
> tento pístup má zatímco na Linuxu jsou struktury
> jádra alokovány vdy v ásti pamti pístupné pro DMA,
> na FreeBSD tomu tak nemusí být me tedy docházet k
> výraznému zpomalování zpsobenému kopírováním dat
> do bounce-buffer napíklad pi prací se síovými
> packety, pokud struktura popisující packet není
> náhodou alokována v dolních 4G. Na architekturách
> s IOMMU tento problém nenastane.
Neznam implementaci ve FreeBSD, na NetBSD a v
principu ani na FreeBSD to ale neni pravda. Veskera
pamet u ktere se ocekava DMA prenos (jako sitove
pakety) by mela byt alokovana pomoci bus_dmamem_alloc. Tato funkce provede alokaci v
souladu s podmikami diktovanymi typem sbernice
(tj. dma tagem).
Poslední připomínka ohledně alokace síťových packetů --- tato alokace je dělána v m_get, odsud se dostane do mb_pop_cont, odsud do kmem_alloc a odtud do vm_page_alloc (FreeBSD 5.2-BETA). Takže se alokuje úplně normálně pomocí běžného alokátoru stránek a na alokaci v dolní části paměti se nebere zřetel. Nebo je to jinak?
Jinak si ani dost dobře nedokážu představit, jak by se měla v době syscallu write na socketu alokovat paměť pomocí bus_dmamem_alloc, když například vůbec není jasné, na kterou síťovou kartu ten packet půjde.