|
SH7760_kernel-2.6.15_sh-sci不具合詳細 †CAT760向けの linux-2.6.15 カーネルに含まれる、SH内蔵シリアルドライバの不具合詳細について。
追加コメント
簡単な確認方法 †SH7760, SH7780, SH7785 搭載機で、ttySC1で実験するとして # stty -F /dev/ttySC1 9600 ttySC1 に何か書き込み # echo A > /dev/ttySC1 open(),write(),close()発生 外部機器から ttySC1 に128バイト以上のデータを送る。 # echo A > /dev/ttySC1 open()した瞬間にフリーズする (?) 対策 †カーネル 2008年3月6日版で修正 しましたので新しいカーネルと差し替えてください。ファイル名 (linux-2.6.15-cat_20080306.tgz) → 26環境_CDROM履歴 ユーザ様独自のカスタムカーネルを使っている場合は、以下の2行(2か所 0x7f→0xff)を修正してください。 パッチ --- linux-2.6.15-cat/drivers/serial/sh-sci.c-old 2008-03-06 18:49:48.578617912 +0900 +++ linux-2.6.15-cat/drivers/serial/sh-sci.c 2008-03-06 18:49:30.344685381 +0900 @@ -431,7 +431,7 @@ #if !defined(SCI_ONLY) if (port->type == PORT_SCIF) { #if defined(CONFIG_CPU_SUBTYPE_SH7760) || defined(CONFIG_CPU_SUBTYPE_SH7780) - txroom = SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0x7f); + txroom = SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0xff); #else txroom = SCIF_TXROOM_MAX - (sci_in(port, SCFDR)>>8); #endif @@ -503,7 +503,7 @@ #if !defined(SCI_ONLY) if (port->type == PORT_SCIF) { #if defined(CONFIG_CPU_SUBTYPE_SH7760) || defined(CONFIG_CPU_SUBTYPE_SH7780) - count = sci_in(port, SCRFDR) & 0x7f; + count = sci_in(port, SCRFDR) & 0xff; #else count = sci_in(port, SCFDR)&SCIF_RFDC_MASK ; #endif 原因 †知りたい人向けです。 linux-2.6.15 に含まれる SH内蔵シリアルポートドライバの SH7760, SH7780版のソフトウェアミス。誰が書いたかはわかりません。
今 ftp.kernel.org に上がっている最新の 2.6.24 カーネルを見てみましたが、同じようになってます。。。 static inline int scif_rxroom(struct uart_port *port) { return sci_in(port, SCRFDR) & 0x7f; } 再現試験やりましたけど再現しますね。 [GIT PULL] sh updates for 2.6.25-rc7 Please pull from: master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6.25.git Which contains: Franck Bui-Huu (1): sh: Use relative paths for mach/cpu symlinks. Kieran Bingham (1): sh: Fix up the address error exception handler for SH-2. Paul Mundt (3): sh: Fix up the timer IRQ definition for SH7203. sh: Fix uImage build error. sh: Fix more user header breakage from sh64 integration. Robert P. J. Day (1): SH: Use newer, non-deprecated __SPIN_LOCK_UNLOCKED macro. Yutaro Ebihara (1): serial: sh-sci: Fix fifo stall on SH7760/SH7780/SH7785 SCIF. 関連 †
関連自動リンク |