abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 17:11 | Nová verze

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 0
    dnes 13:33 | Nová verze

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 2
    dnes 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 22
    včera 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 13
    včera 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    včera 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (73%)
     (9%)
     (2%)
     (16%)
    Celkem 792 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Jaderné noviny – 20. 3. 2013: Trable s maskami DMA

    8. 4. 2013 | Luboš Doležel | Jaderné noviny | 3647×

    Aktuální verze jádra: 3.9-rc3. Mailing list pro fuzz-tester Trinity. Trable s maskami DMA.

    Obsah

    Aktuální verze jádra: 3.9-rc3

    link

    Aktuální vývojová verze jádra je 3.9-rc3 vydaná 17. března. Linus k ní řekl: Není to tak malé jako -rc2, ale to byla spíš výjimka. Tudíž toho na -rc3 zbylo více, vedly hlavně síťové ovladače a USB. Ale najdou se tam i změny v dalších ovladačích, v architekturách, opravy btrfs atd. atd.

    Stabilní aktualizace: verze 3.8.3, 3.4.36 a 3.0.69 vyšly 14. března, verze 3.8.4, 3.4.37, 3.2.41 a 3.0.70 vyšly 20. března.

    Mailing list pro fuzz-tester Trinity

    link

    Dave Jones oznámil vznik mailing listu nástroje pro fuzz testing zvaného „Trinity“. Sídlí na vger, takže platí obvyklý postup přihlašování u majordomo.

    Trable s maskami DMA

    link

    Téměř každé I/O zařízení, co za něco stojí, podporuje transakce s přímým přístupem do paměti (DMA; Direct Memory Access); nepodporovat DMA znamená být odkázán na I/O o nízké šířce pásma a vysoké režii. Zařízení s podporou DMA si ale nejsou všechna rovna; řada z nich má omezení týkající se toho, k jaké oblasti paměti je možné přímo přistupovat. 24bitové omezení, které dopadalo na ISA v dřevních dobách osobních počítačů, je takovou klasickou ukázkou, ale svá omezení má i současný hardware. Jádro už dlouho disponuje mechanismem pro obcházení těchto omezení, ale jak se ukázalo, tak tento subsystém má i své vlastní potíže.

    Omezení DMA jsou obvykle důsledkem toho, že dané zařízení má méně užitečných linek pro adresaci. 24 linek stanovených ve specifikaci ISA je zjevným příkladem. Zařízení PCI jsou standardně omezena na 32bitový adresní prostor, ale spousta zařízení je následkem pochybného návrhu omezena na méně; jak tomu už mnohdy bývá, návrháři hardwaru v této oblasti vykazují notnou dávku kreativity. Uživatele ale tyto potíže nezajímají; ti jen chtějí, aby jejich hardware fungoval. Proto musí jádro najít způsob, jak respektovat omezení každého zařízení a současně co nejvíce využívat DMA.

    Jaderné API pro DMA (popsané v Documentation/DMA-API.txt) slouží jako abstrakce, co skrývá podrobnosti nutné k tomu, aby DMA s libovolným zařízením fungovalo. Toto API se například vynasnaží alokovat paměť v oblasti, která spadá do fyzického rozsahu podporovaného cílovým zařízením. Rovněž transparentně implementuje „bounce buffering“ – kopírování dat mezi bufferem hardwaru nepřístupným a přístupným bufferem – pokud je to nezbytné. K tomu je ale potřeba, aby bylo DMA API o adresačních omezeních zařízení informováno. Toho se dosahuje pomocí „masky DMA“, tedy masky, která popisuje rozsah paměti, ke kterému může zařízení přistupovat. Dokumentace masku popisuje následovně:

    dma_mask pro zařízení představuje bitovou masku adresovatelného regionu. Neboli pokud je fyzická adresa bitově vynásobena s dma_mask a stále se rovná fyzické adrese, pak zařízení může na tuto oblast provádět DMA.

    Jak ale nedávno upozornil Russell King, maska DMA není vždy takto interpretována. Poukazuje na následující kód nalezený v block/blk-settings.c:

    void blk_queue_bounce_limit(struct request_queue *q, u64 dma_mask)
    {
            unsigned long b_pfn = dma_mask >> PAGE_SHIFT;
    

    Zde dochází k tomu, že kód posouvá masku DMA doprava, aby z ní udělal „page frame number“ (číslo rámce stránky). Pokud si představíme systémovou paměť jako lineární pole stránek, pak PFN dané stránky je prostým indexem do tohoto pole (ačkoliv paměť není vždy organizována tak jednoduše). Tím, že s maskou DMA prakticky zachází jako s jiným způsobem vyjádření PFN nejvyšší adresovatelné stránky, mění tento kus kódu sématiku toho, jak je maska interpretována.

    Russell vysvětlil, v čem se může skrývat problém. Na některých systémech ARM nezačíná paměť na fyzické adrese nula; fyzická adresa prvního bajtu může být dokonce až na 3 GB (0xc0000000). Pokud takto nakonfigurovaný systém bude mít zařízení s omezením adresace na 26 bitů (s tím, že vyšší bity jsou doplněny řadičem), pak by jeho maska DMA měla být nastavena na 0xc3ffffff. Jakákoliv fyzická adresa v rozsahu, jenž zařízení podporuje, bude logickým operátorem AND s jeho maskou nezměněna, což ale nebude platit o adresách mimo tento rozsah.

    Ale co se přihodí, pokud zmiňovaný kus kódu provede pro získání PFN posun masky doprava? Výsledkem (za předpokladu, že stránka má 4096 bajtů) je 0xc3fff, což je naprosto validní PFN na systému, kde PFN první stránky je 0xc0000. A to je v pořádku, dokud se člověk nepodívá na proměnnou pro správu globální paměti zvanou max_low_pfn. Vzhledem k jejímu názvu by si člověk mohl představit, že jde o maximální PFN umístěnou v „low memory“ – tedy o PFN nejvyšší stránky, která je přímo adresovatelná jádrem bez speciálního mapování. max_low_pfn ve skutečnosti vyjadřuje počet stránek v „low memory“. Ale ne všechen kód s tím takto zachází.

    Na systémech x86, kde paměť začíná na fyzické adrese nula (a tudíž na PFN nula) na tom nesejde; počet a maximum jsou to samé. Na složitějších systémech ale mohou výsledky být zajímavé. Vraťme se k té samé funkci v blk-settings.c:

    blk_max_low_pfn = max_low_pfn - 1;  /* Done elsewhere at init time */
    
    if (b_pfn < blk_max_low_pfn)
            dma = 1;
    q->limits.bounce_pfn = b_pfn;
    

    Zde máme skutečné číslo PFN (spočítané z masky DMA) porovnávané s počtem rámců stránek s rozhodováním o tom, jak se DMA má řešit v závislosti na výsledku. Nebylo by překvapením, kdybychom v takové operaci viděli nesprávné výsledky; s ohledem na diskuzi, která byla vyvolána, to pravděpodobně způsobuje bounce buffering tam, kde by nebylo nutné. Můžeme si snadno domyslet další problémy, které mohou kvůli podobnému zmatku nastat; nejednotné vnímání významu proměnné stěží povede k něčemu dobrému.

    Náprava této situace nebude přímočará; Russell neměl „vůbec ponětí“, jak to udělat. Přejmenování max_low_pfn na něco jako low_pfn_count by mohlo posloužit jako první krok, aby se zabránilo dalším zmatkům. Zlepšení definice významu masky DMA (nebo alespoň zajištění toho, aby vnímání masky v jádře odpovídalo stávající definici) zní jako dobrý nápad, ale může být těžké to udělat tak, aby nebyla rozbita podpora pro obskurní hardware – takový kód může být samozřejmě dosti křehký. Už to tak vypadá, že rozhraní DMA, které bylo navrženo vývojáři pracujícími s relativně přímočarým hardwarem, bude vyžadovat jistou dávku pozornosti ze strany komunity ARM, aby splňovalo její požadavky.

           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    8.4.2013 00:43 juriad
    Rozbalit Rozbalit vše Re: Jaderné noviny – 20. 3. 2013: Trable s maskami DMA
    Oprav si mezerník. Napočítal jsem v článku 29 mezer na místech, kam nepatří.
    8.4.2013 08:53 olin
    Rozbalit Rozbalit vše Re: Jaderné noviny – 20. 3. 2013: Trable s maskami DMA
    To spíš vypadá na chybu v nějakém automatu - nucené zalamování dlouhých řádek.
    Luboš Doležel (Doli) avatar 8.4.2013 11:39 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Jaderné noviny – 20. 3. 2013: Trable s maskami DMA
    Ne, to podělalo cosi na Windows. Vydával jsem to přes putty ze stroje, kde jsem zrovna opravoval rozbité vidle a takhle to dopadlo.
    Jendа avatar 8.4.2013 19:24 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Jaderné noviny – 20. 3. 2013: Trable s maskami DMA
    Ježišikriste :-). To bude zítra jako hlavní titulek v Blesku.
    12.4.2013 23:42 Petr Ježek | skóre: 10
    Rozbalit Rozbalit vše Re: Jaderné noviny – 20. 3. 2013: Trable s maskami DMA
    Tak to dopadá, když někdo používá vadné nástroje. Na ábíčku je to dost překvapivé... Jinak konstatuji totální neschopnost komentovat odborný text...
    Archlinux for your comps, faster running guaranted!
    pavlix avatar 15.4.2013 10:16 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Jaderné noviny – 20. 3. 2013: Trable s maskami DMA
    …a teď jsem mu to nandal.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.