diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-28 13:43:53 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-28 13:43:53 -0500 |
| commit | f6a0b5cd34d6e922cc7258c5429fb0f17508ceb6 (patch) | |
| tree | 0fae4978f63219b30ae0039a6a05c93df950fd37 | |
| parent | d6cd4715e21508bebbb1928c91d628bd65f5de5f (diff) | |
| parent | 8e92dc767abb58357e696a48fc3d8ce615a9c01a (diff) | |
Merge branch 'x86-setup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-setup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86, setup: Don't skip mode setting for the standard VGA modes
x86-64, setup: Inhibit decompressor output if video info is invalid
x86, setup: When restoring the screen, update boot_params.screen_info
| -rw-r--r-- | arch/x86/boot/compressed/misc.c | 2 | ||||
| -rw-r--r-- | arch/x86/boot/video-vga.c | 9 | ||||
| -rw-r--r-- | arch/x86/boot/video.c | 7 |
3 files changed, 8 insertions, 10 deletions
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c index 88042e812d3c..51e240779a44 100644 --- a/arch/x86/boot/compressed/misc.c +++ b/arch/x86/boot/compressed/misc.c | |||
| @@ -180,11 +180,9 @@ static void __putstr(int error, const char *s) | |||
| 180 | return; | 180 | return; |
| 181 | #endif | 181 | #endif |
| 182 | 182 | ||
| 183 | #ifdef CONFIG_X86_32 | ||
| 184 | if (real_mode->screen_info.orig_video_mode == 0 && | 183 | if (real_mode->screen_info.orig_video_mode == 0 && |
| 185 | lines == 0 && cols == 0) | 184 | lines == 0 && cols == 0) |
| 186 | return; | 185 | return; |
| 187 | #endif | ||
| 188 | 186 | ||
| 189 | x = real_mode->screen_info.orig_x; | 187 | x = real_mode->screen_info.orig_x; |
| 190 | y = real_mode->screen_info.orig_y; | 188 | y = real_mode->screen_info.orig_y; |
diff --git a/arch/x86/boot/video-vga.c b/arch/x86/boot/video-vga.c index 819caa1f2008..ed7aeff786b2 100644 --- a/arch/x86/boot/video-vga.c +++ b/arch/x86/boot/video-vga.c | |||
| @@ -42,22 +42,15 @@ static u8 vga_set_basic_mode(void) | |||
| 42 | { | 42 | { |
| 43 | struct biosregs ireg, oreg; | 43 | struct biosregs ireg, oreg; |
| 44 | u16 ax; | 44 | u16 ax; |
| 45 | u8 rows; | ||
| 46 | u8 mode; | 45 | u8 mode; |
| 47 | 46 | ||
| 48 | initregs(&ireg); | 47 | initregs(&ireg); |
| 49 | 48 | ||
| 49 | /* Query current mode */ | ||
| 50 | ax = 0x0f00; | 50 | ax = 0x0f00; |
| 51 | intcall(0x10, &ireg, &oreg); | 51 | intcall(0x10, &ireg, &oreg); |
| 52 | mode = oreg.al; | 52 | mode = oreg.al; |
| 53 | 53 | ||
| 54 | set_fs(0); | ||
| 55 | rows = rdfs8(0x484); /* rows minus one */ | ||
| 56 | |||
| 57 | if ((oreg.ax == 0x5003 || oreg.ax == 0x5007) && | ||
| 58 | (rows == 0 || rows == 24)) | ||
| 59 | return mode; | ||
| 60 | |||
| 61 | if (mode != 3 && mode != 7) | 54 | if (mode != 3 && mode != 7) |
| 62 | mode = 3; | 55 | mode = 3; |
| 63 | 56 | ||
diff --git a/arch/x86/boot/video.c b/arch/x86/boot/video.c index f767164cd5df..43eda284d27f 100644 --- a/arch/x86/boot/video.c +++ b/arch/x86/boot/video.c | |||
| @@ -298,11 +298,18 @@ static void restore_screen(void) | |||
| 298 | } | 298 | } |
| 299 | 299 | ||
| 300 | /* Restore cursor position */ | 300 | /* Restore cursor position */ |
| 301 | if (saved.curx >= xs) | ||
| 302 | saved.curx = xs-1; | ||
| 303 | if (saved.cury >= ys) | ||
| 304 | saved.cury = ys-1; | ||
| 305 | |||
| 301 | initregs(&ireg); | 306 | initregs(&ireg); |
| 302 | ireg.ah = 0x02; /* Set cursor position */ | 307 | ireg.ah = 0x02; /* Set cursor position */ |
| 303 | ireg.dh = saved.cury; | 308 | ireg.dh = saved.cury; |
| 304 | ireg.dl = saved.curx; | 309 | ireg.dl = saved.curx; |
| 305 | intcall(0x10, &ireg, NULL); | 310 | intcall(0x10, &ireg, NULL); |
| 311 | |||
| 312 | store_cursor_position(); | ||
| 306 | } | 313 | } |
| 307 | 314 | ||
| 308 | void set_video(void) | 315 | void set_video(void) |
