From: Pekka Enberg <penberg@kernel.org>
To: kvm@vger.kernel.org
Cc: Pekka Enberg <penberg@kernel.org>, Ingo Molnar <mingo@elte.hu>,
Cyrill Gorcunov <gorcunov@gmail.com>,
John Floren <john@jfloren.net>,
Sasha Levin <levinsasha928@gmail.com>
Subject: [PATCH 1/2] kvm tools, vesa: Cleanup code in bios/int10.c
Date: Fri, 3 Jun 2011 22:37:03 +0300 [thread overview]
Message-ID: <1307129824-8396-1-git-send-email-penberg@kernel.org> (raw)
This patch cleans up the code in bios/int10.c without changing functionality.
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Cyrill Gorcunov <gorcunov@gmail.com>
Cc: John Floren <john@jfloren.net>
Cc: Sasha Levin <levinsasha928@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
---
tools/kvm/bios/int10.c | 88 +++++++++++++++++++++++++----------------------
1 files changed, 47 insertions(+), 41 deletions(-)
diff --git a/tools/kvm/bios/int10.c b/tools/kvm/bios/int10.c
index 57647a1..f7fecac 100644
--- a/tools/kvm/bios/int10.c
+++ b/tools/kvm/bios/int10.c
@@ -29,10 +29,9 @@ struct vesa_general_info {
u16 modes[2]; /* 20 */
char oem_string[11]; /* 24 */
- u8 reserved[223]; /* 35 */
+ u8 reserved[223]; /* 35 */
} __attribute__ ((packed));
-
struct vminfo {
u16 mode_attr; /* 0 */
u8 win_attr[2]; /* 2 */
@@ -87,56 +86,63 @@ static inline void int10_putchar(struct int10_args *args)
outb(0x3f8, al);
}
+static void vbe_get_mode(struct int10_args *args)
+{
+ struct vminfo *info = (struct vminfo *) args->edi;
+
+ *info = (struct vminfo) {
+ .mode_attr = 0xd9, /* 11011011 */
+ .logical_scan = VESA_WIDTH*4,
+ .h_res = VESA_WIDTH,
+ .v_res = VESA_HEIGHT,
+ .bpp = VESA_BPP,
+ .memory_layout = 6,
+ .memory_planes = 1,
+ .lfb_ptr = VESA_MEM_ADDR,
+ .rmask = 8,
+ .gmask = 8,
+ .bmask = 8,
+ .resv_mask = 8,
+ .resv_pos = 24,
+ .bpos = 16,
+ .gpos = 8,
+ };
+}
+
+static void vbe_get_info(struct int10_args *args)
+{
+ struct vesa_general_info *info = (struct vesa_general_info *) args->edi;
+
+ *info = (struct vesa_general_info) {
+ .signature = VESA_MAGIC,
+ .version = 0x102,
+ .vendor_string = &info->oem_string,
+ .capabilities = 0x10,
+ .video_mode_ptr = &info->modes,
+ .total_memory = (4 * VESA_WIDTH * VESA_HEIGHT) / 0x10000,
+ .oem_string = "KVM VESA",
+ .modes = { 0x0112, 0xffff },
+ };
+}
+
+#define VBE_STATUS_OK 0x004F
+
static void int10_vesa(struct int10_args *args)
{
u8 al;
- struct vesa_general_info *destination;
- struct vminfo *vi;
al = args->eax;
switch (al) {
- case 0:
- /* Set controller info */
-
- destination = (struct vesa_general_info *)args->edi;
- *destination = (struct vesa_general_info) {
- .signature = VESA_MAGIC,
- .version = 0x102,
- .vendor_string = &destination->oem_string,
- .capabilities = 0x10,
- .video_mode_ptr = &destination->modes,
- .total_memory = (4*VESA_WIDTH * VESA_HEIGHT) / 0x10000,
- .oem_string = "KVM VESA",
- .modes = { 0x0112, 0xffff },
- };
-
+ case 0x00:
+ vbe_get_info(args);
break;
- case 1:
- vi = (struct vminfo *)args->edi;
- *vi = (struct vminfo) {
- .mode_attr = 0xd9, /* 11011011 */
- .logical_scan = VESA_WIDTH*4,
- .h_res = VESA_WIDTH,
- .v_res = VESA_HEIGHT,
- .bpp = VESA_BPP,
- .memory_layout = 6,
- .memory_planes = 1,
- .lfb_ptr = VESA_MEM_ADDR,
- .rmask = 8,
- .gmask = 8,
- .bmask = 8,
- .resv_mask = 8,
- .resv_pos = 24,
- .bpos = 16,
- .gpos = 8,
- };
-
+ case 0x01:
+ vbe_get_mode(args);
break;
}
- args->eax = 0x004f; /* return success every time */
-
+ args->eax = VBE_STATUS_OK;
}
bioscall void int10_handler(struct int10_args *args)
--
1.7.0.4
next reply other threads:[~2011-06-03 19:37 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-03 19:37 Pekka Enberg [this message]
2011-06-03 19:37 ` [PATCH 2/2] kvm tools, vesa: Fix 'ah' access in int10_vesa() Pekka Enberg
2011-06-03 19:43 ` Cyrill Gorcunov
2011-06-06 8:28 ` Avi Kivity
2011-06-06 8:37 ` Cyrill Gorcunov
2011-06-06 9:09 ` Pekka Enberg
2011-06-06 9:11 ` Cyrill Gorcunov
2011-06-03 19:45 ` [PATCH 1/2] kvm tools, vesa: Cleanup code in bios/int10.c Cyrill Gorcunov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1307129824-8396-1-git-send-email-penberg@kernel.org \
--to=penberg@kernel.org \
--cc=gorcunov@gmail.com \
--cc=john@jfloren.net \
--cc=kvm@vger.kernel.org \
--cc=levinsasha928@gmail.com \
--cc=mingo@elte.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox