summaryrefslogtreecommitdiffstats
path: root/drivers/tty
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2013-01-24 14:14:19 +1000
committerDave Airlie <airlied@redhat.com>2013-02-07 12:37:03 +1000
commit2a2483072393b27f4336ab068a1f48ca19ff1c1e (patch)
tree388d0b8d5f208db9dabcca235a4da79a8bafd1ff /drivers/tty
parent1589a3e7777631ff56dd58cd7dcdf275185e62b5 (diff)
downloadlinux-2a2483072393b27f4336ab068a1f48ca19ff1c1e.tar.gz
linux-2a2483072393b27f4336ab068a1f48ca19ff1c1e.tar.bz2
linux-2a2483072393b27f4336ab068a1f48ca19ff1c1e.zip
vgacon/vt: clear buffer attributes when we load a 512 character font (v2)
When we switch from 256->512 byte font rendering mode, it means the current contents of the screen is being reinterpreted. The bit that holds the high bit of the 9-bit font, may have been previously set, and thus the new font misrenders. The problem case we see is grub2 writes spaces with the bit set, so it ends up with data like 0x820, which gets reinterpreted into 0x120 char which the font translates into G with a circumflex. This flashes up on screen at boot and is quite ugly. A current side effect of this patch though is that any rendering on the screen changes color to a slightly darker color, but at least the screen no longer corrupts. v2: as suggested by hpa, always clear the attribute space, whether we are are going to or from 512 chars. Cc: stable@vger.kernel.org Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/tty')
-rw-r--r--drivers/tty/vt/vt.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 8fd89687d068..c8067aef4b86 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -638,7 +638,7 @@ static inline void save_screen(struct vc_data *vc)
* Redrawing of screen
*/
-static void clear_buffer_attributes(struct vc_data *vc)
+void clear_buffer_attributes(struct vc_data *vc)
{
unsigned short *p = (unsigned short *)vc->vc_origin;
int count = vc->vc_screenbuf_size / 2;