Article View: pl.comp.os.linux.programowanie
Article #72375Re: Problem w sterowniku 8250 - printk pomaga, brak sekcji krytycznej
From: elonica.pl
Date: Fri, 04 Nov 2011 13:53
Date: Fri, 04 Nov 2011 13:53
71 lines
4128 bytes
4128 bytes
On 28 Paź, 00:19, Krzysztof Halasa <k...@pm.waw.pl> wrote: > "elonica.pl" <bartlomiej.grzeskow...@gmail.com> writes: > > Mam napisaną własną część sterownika 8250. Dodatkowe kości 16C550 > > podłączone są przez GPIO. Problem jest taki, ze sterownik gubi mi > > część znaków przesyłanych na /dev/ttySX (pojawia sie tylko jakies > > 20%). Podczas deboggowania wyszło, ze kiedy wstawię printk na początku > > w funkcji write_byte(...). Problem znika. > > A co to za scalak? > Teoretycznie jest szansa, ze samo opoznienie cos powoduje (np. > w przypadku wadliwych operacji I/O), ale bardziej prawdopodobne jest, ze > udelay() tworzy bariery, ktore zapobiegaja "wyoptymalizowaniu" rzekomo > zbednego kodu, albo np. zmianie kolejnosci kodu. Domyslam sie ze > SoCreg() to jakis *(volatile *)... co to za kompilator? Przyjrzalbym sie > wersji assemblerowej w obu przypadkach. Np. gcc 2.6.x jest znany z tego, > ze potrafi wyoptymalizowac niektore rzeczy tak, jakby nie byly volatile. > Witam, Scalak to architektura mips-el (Mips little endian). SoCreg: #define SoCreg(n) (*((volatile u32 *)(n))) kompilator: buildroot-gcc342/bin/mipsel-linux-uclibc-gcc Jak wspominałem udelay nie pomaga, pomaga za to printk wstawiony w kod. > > Próbowałem już kilkanaście razy zmieniać delaye, ale nic. Jedyne co mi > > jeszcze przychodzi do głowy to fakt, ze funkcje read i write nie sa > > sekcjami krytycznymi. Czy to dobry trop ? > > Mam delikatne wrazenie, ze driver 8250 wykonuje tylko jedna operacje > w danej chwili (sam uzywa spinlocka), co by sugerowalo, ze te funkcje > nie musza byc "atomic". Ale oczywiscie tak jest tylko pod warunkiem, ze > zaden inny kod (np. inny driver) ich nie uzywa. > > Plik .s (a wlasciwie dwa pliki) powinny rozjasnic sprawe. > -- > Krzysztof Halasa Rozumiem, ze chodzi o porównanie plików s "przed" i "po" zmianie. Mozna je uzyskać stosując -save-temps w wywołaniu kompilatora. Hmmm... Jak dla mnie zmiany wyglądają niegroźnie. W dzialajacym pliku (z wywoalniem printk) Doszły dodatkowe wstawki: Na początku - deklaracja stringa: .section .rodata.str1.4 .align 2 $LC20: .ascii "+write_byte 0x%x <- %x \n\000" .text I w funkcji write byte: .loc 1 404 0 lui $4,%hi($LC20) move $5,$16 move $6,$17 .set noreorder .set nomacro jal printk addiu $4,$4,%lo($LC20) .set macro .set reorder Dla ścisłości poprzesuwały się tez indeksy $LCXX większe od 20 o jeden do góry, ale to logiczne. -- Bartlomiej Grzeskowiak
Technical Details
Message-ID:
<c8118b10-8548-4410-8607-6dcfc718eecc@o14g2000yqh.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!xlned.com!feeder7.xlned.com!news2.euro.net!209.197.12.242.MISMATCH!nx01.iad01.newshosting.com!newshosting.com!69.16.185.21.MISMATCH!npeer03.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!postnews.google.com!o14g2000yqh.googlegroups.com!not-for-mailReferences:
<0c34e073-bf61-43b8-820d-e5d1634b743f@r2g2000vbj.googlegroups.com> <m3vcra3tw0.fsf@intrepid.localdomain>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!xlned.com!feeder7.xlned.com!news2.euro.net!209.197.12.242.MISMATCH!nx01.iad01.newshosting.com!newshosting.com!69.16.185.21.MISMATCH!npeer03.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!postnews.google.com!o14g2000yqh.googlegroups.com!not-for-mail From: "elonica.pl" <bartlomiej.grzeskowiak@gmail.com> Newsgroups: pl.comp.os.linux.programowanie Subject: Re: Problem w sterowniku 8250 - printk pomaga, brak sekcji krytycznej Date: Fri, 4 Nov 2011 06:53:29 -0700 (PDT) Organization: http://groups.google.com Lines: 76 Message-ID: <c8118b10-8548-4410-8607-6dcfc718eecc@o14g2000yqh.googlegroups.com> References: <0c34e073-bf61-43b8-820d-e5d1634b743f@r2g2000vbj.googlegroups.com> <m3vcra3tw0.fsf@intrepid.localdomain> NNTP-Posting-Host: 193.101.167.170 Mime-Version: 1.0 X-Trace: posting.google.com 1320414809 7171 127.0.0.1 (4 Nov 2011 13:53:29 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Fri, 4 Nov 2011 13:53:29 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: o14g2000yqh.googlegroups.com; posting-host=193.101.167.170; posting-account=8XX-bwoAAAB8TXULBSxONI_rrl5C-PTv User-Agent: G2/1.0 X-Google-Web-Client: true X-Google-Header-Order: HUALESNKRC X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.23) Gecko/20110921 Ubuntu/10.04 (lucid) Firefox/3.6.23,gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit