Re: fbcon has a empty unimap after boot
flat view
From: James Simmons <hidden>
Date: 2003-09-12 18:09:23
Thanks. Applying. On Fri, 12 Sep 2003, Mario Lang wrote:
quoted hunk ↗ jump to hunk
Hi. I noticed that with 2.6.0 kernels, when using fbcon (with the sisfb driver in my case, using a Sis630 card), the ioctl GIO_UNIMAP returns a empty unimap. This results in problems for BRLTTY[1], which relies on a valid unimap to back-translate the font-positions of /dev/vcsa to the actual characters used. Further digging showed that this problems has probably gone unnoticed because there is a special case in drivers/char/consolemap.c:conv_uni_to_pc which returns -3 when there is no unimap available. This -3 return value is caught in drivers/char/vt.c:do_con_write like this: tc = conv_uni_to_pc(vc_cons[currcons].d, tc); ... } else if ( tc == -3 ) { /* Bad hash table -- hope for the best */ tc = c; } This is why I think the uninitialized unimap did go unnoticed, since this code will make things work for standard iso-8859 type of charsets. However, user space apps which rely on GIO_UNIMAP do not work correctly, and in general, I think I18N should be broken on fbcon currently. I have a very crude patch which works for me here, but I am not sure if this is the right way to fix this. Anyway, it is attached. Note that I am very new to kernel hacking, so my analysis of the problem might be bogus, but I do think I am on the right track...--- linux-2.6.0-test4/drivers/video/console/fbcon.c.orig 2003-09-03 15:32:42.000000000 +0200 +++ linux-2.6.0-test4/drivers/video/console/fbcon.c 2003-09-03 15:27:09.000000000 +0200@@ -695,6 +695,7 @@ fb_display[unit].scrollmode = SCROLL_YNOMOVE; else fb_display[unit].scrollmode = SCROLL_YREDRAW; + con_set_default_unimap(unit); fbcon_set_display(vc, init, !init); }[1] http://mielke.cc/brltty/
------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf