From cce66bbf9fb801f7ebea266077d3efede4ce3117 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Thu, 13 Sep 2007 14:14:29 -0700 Subject: [PATCH] --- yaml --- r: 65063 b: refs/heads/master c: 3f662b3f6e422a15fefcbaf4bdd21f97e6bcf32d h: refs/heads/master i: 65061: 710d9ce7293187d7033380e403e55152a8ce29f5 65059: 39747eb373e5b3d33c3c7da9e4e074cb5744a99d 65055: ffafd8dc883605a269cb89985ab36911f7b8c638 v: v3 --- [refs] | 2 +- trunk/arch/i386/boot/video.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 0bce1901e815..02c5de0d2f4b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 81cfe79b9c577139a873483654640eb3f6e78c39 +refs/heads/master: 3f662b3f6e422a15fefcbaf4bdd21f97e6bcf32d diff --git a/trunk/arch/i386/boot/video.c b/trunk/arch/i386/boot/video.c index 693f20d3102e..e4ba897bf9a3 100644 --- a/trunk/arch/i386/boot/video.c +++ b/trunk/arch/i386/boot/video.c @@ -147,7 +147,7 @@ int mode_defined(u16 mode) } /* Set mode (without recalc) */ -static int raw_set_mode(u16 mode) +static int raw_set_mode(u16 mode, u16 *real_mode) { int nmode, i; struct card_info *card; @@ -165,8 +165,10 @@ static int raw_set_mode(u16 mode) if ((mode == nmode && visible) || mode == mi->mode || - mode == (mi->y << 8)+mi->x) + mode == (mi->y << 8)+mi->x) { + *real_mode = mi->mode; return card->set_mode(mi); + } if (visible) nmode++; @@ -178,7 +180,7 @@ static int raw_set_mode(u16 mode) if (mode >= card->xmode_first && mode < card->xmode_first+card->xmode_n) { struct mode_info mix; - mix.mode = mode; + *real_mode = mix.mode = mode; mix.x = mix.y = 0; return card->set_mode(&mix); } @@ -223,6 +225,7 @@ static void vga_recalc_vertical(void) static int set_mode(u16 mode) { int rv; + u16 real_mode; /* Very special mode numbers... */ if (mode == VIDEO_CURRENT_MODE) @@ -232,13 +235,16 @@ static int set_mode(u16 mode) else if (mode == EXTENDED_VGA) mode = VIDEO_8POINT; - rv = raw_set_mode(mode); + rv = raw_set_mode(mode, &real_mode); if (rv) return rv; if (mode & VIDEO_RECALC) vga_recalc_vertical(); + /* Save the canonical mode number for the kernel, not + an alias, size specification or menu position */ + boot_params.hdr.vid_mode = real_mode; return 0; }