From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1M8tOz-00029y-It for qemu-devel@nongnu.org; Tue, 26 May 2009 05:56:57 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1M8tOy-00029f-VL for qemu-devel@nongnu.org; Tue, 26 May 2009 05:56:57 -0400 Received: from [199.232.76.173] (port=35752 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1M8tOy-00029Z-JW for qemu-devel@nongnu.org; Tue, 26 May 2009 05:56:56 -0400 Received: from yw-out-1718.google.com ([74.125.46.154]:40622) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1M8tOy-0005sc-73 for qemu-devel@nongnu.org; Tue, 26 May 2009 05:56:56 -0400 Received: by yw-out-1718.google.com with SMTP id 5so1833721ywr.82 for ; Tue, 26 May 2009 02:56:55 -0700 (PDT) MIME-Version: 1.0 Date: Tue, 26 May 2009 17:56:55 +0800 Message-ID: <162800e10905260256v14c3ad67g7ea3aa5531c8c62d@mail.gmail.com> From: joy zhao Content-Type: multipart/mixed; boundary=00032557619a2dff31046acdbfd3 Subject: [Qemu-devel] set vidmode in linux kernel header when boot x86 using qemu bootloader List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org --00032557619a2dff31046acdbfd3 Content-Type: multipart/alternative; boundary=00032557619a2dff28046acdbfd1 --00032557619a2dff28046acdbfd1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit hi, I made a patch to have qemu parse vga field in kernel command line and set the vid_mode field of real-mode kernel header. This patch is necessary because vga is one of the special command line options that should be parsed in bootloader, as in linux kernel Documentation/x86/i386/boot.txt. After bootloader write the passed vga value into the vid_mode field of linux real-mode kernel header, this vid_mode will be handled by linux/x86/boot/video.c in linux kernel to select vesa graphics mode, and only in this mode can vesafb be registered(in vesafb_probe()). So, if we decide to launch linux directly from qemu command line as "qemu -kernel ... -initrd... -append "..." ", (use qemu bootloader) and use vesafb as framebuffer driver, this patch to qemu is required, otherwise, the screen should just blank since the vesafb fails to register itself. --00032557619a2dff28046acdbfd1 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable hi,
I made a patch to have qemu parse vga field in kernel command line a= nd set the vid_mode field of real-mode kernel header.
This patch is nece= ssary because vga is one of the special command line options that should be= parsed in bootloader, as in linux kernel Documentation/x86/i386/boot.txt. = After bootloader write the passed vga value into the vid_mode field of linu= x real-mode kernel header, this vid_mode will be handled by linux/x86/boot/= video.c in linux kernel to select vesa graphics mode, and only in this mode= can vesafb be registered(in vesafb_probe()).
So, if we decide to launch linux directly from qemu command line as "q= emu -kernel ... -initrd... -append "..." ", (use qemu bootlo= ader) and use vesafb as framebuffer driver, this patch to qemu is required,= otherwise, the screen should just blank since the vesafb fails to register= itself.

--00032557619a2dff28046acdbfd1-- --00032557619a2dff31046acdbfd3 Content-Type: application/octet-stream; name="qemu.x86_boot_vidmode.patch" Content-Disposition: attachment; filename="qemu.x86_boot_vidmode.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fv6flyd60 ZGlmZiAtTnVwciBxZW11L2h3L3BjLmMgcWVtdS1uZXcvaHcvcGMuYwotLS0gcWVtdS9ody9wYy5j CTIwMDktMDUtMjYgMTY6MTA6NDQuMDAwMDAwMDAwICswODAwCisrKyBxZW11LW5ldy9ody9wYy5j CTIwMDktMDUtMjYgMTc6MTc6MjUuMDAwMDAwMDAwICswODAwCkBAIC01OTMsNiArNTkzLDc3IEBA IHN0YXRpYyBsb25nIGdldF9maWxlX3NpemUoRklMRSAqZikKICAgICByZXR1cm4gc2l6ZTsKIH0K IAorc3RhdGljIHVpbnQxNl90IGhhdG8xNmkoY2hhciAqaGV4KQoreworCXVpbnQxNl90IGludGVn ZXIgPSAwOworCWlmKGhleFsxXSA9PSAneCcpCisJICAgaGV4ICs9IDI7CisKKyAgICB3aGlsZSgq aGV4ICE9ICdcMCcpeworCQlpbnRlZ2VyID0gKGludGVnZXI8PDQpOworCisJCWlmKCpoZXggPj0g MHgzMCAmJiAqaGV4IDw9IDB4MzkpeyAvKjB+OSovCisJCQlpbnRlZ2VyICs9ICpoZXggLSAweDMw OworCQl9ZWxzZSBpZigqaGV4ID49IDB4NjEgJiYgKmhleCA8PSAweDY2KXsgLyphfmYqLworCQkJ aW50ZWdlciArPSAqaGV4IC0gMHg2MSArIDB4YTsKKwkJfWVsc2UgaWYoKmhleCA+PSAweDQxICYm ICpoZXggPD0gMHg0Nil7IC8qQX5GKi8KKwkJCWludGVnZXIgKz0gKmhleCAtIDB4NDEgKyAweGE7 CisJCX1lbHNlCisJCQlicmVhazsKKworCQloZXgrKzsKKwl9CQorCXJldHVybiBpbnRlZ2VyOwor fQorCitzdGF0aWMgdWludDE2X3QgYXRvMTZpKGNoYXIgKmRlYykKK3sKKwl1aW50MTZfdCBpbnRl Z2VyID0gMDsKKworICAgIHdoaWxlKCpkZWMgIT0gJ1wwJyl7CisJCWludGVnZXIgKj0gMTA7CisK KwkJaWYoKmRlYyA+PSAweDMwICYmICpkZWMgPD0gMHgzOSl7IC8qMH45Ki8KKwkJCWludGVnZXIg Kz0gKmRlYyAtIDB4MzA7CisJCX1lbHNlCisJCQlicmVhazsKKworCQlkZWMrKzsKKwl9CQorCXJl dHVybiBpbnRlZ2VyOworfQorCitzdGF0aWMgaW50IGdldF92Z2FfbW9kZShjb25zdCBjaGFyKiBr ZXJuZWxfY21kbGluZSwgdWludDE2X3QgKnZnYV9tb2RlKQoreworCWNoYXIgbW9kZVs2XTsKKwlp bnQgaSA9IDA7CisJY2hhciAqcAk9IHN0cnN0cihrZXJuZWxfY21kbGluZSwgInZnYT0iKTsKKwlp ZihwID09IE5VTEwpCisJCXJldHVybiAxOworCisJcCArPSA0OworCisJd2hpbGUoKnAgIT0gJyAn ICYmICpwICE9ICdcMCcgJiYgaSA8IDYpCXsKKwkJbW9kZVtpXSA9ICpwOworCQlpKys7CisJCXAr KzsJICAKKwl9CisKKwlpZighc3RybmNtcChtb2RlLCAiYXNrIiwgMykpeworCQkqdmdhX21vZGUg PSAweGZmZmQ7CisJfWVsc2UgaWYoIXN0cm5jbXAobW9kZSwgIm5vcm1hbCIsNikpeworCQkqdmdh X21vZGUgPSAweGZmZmY7CisJfWVsc2UgaWYoIXN0cm5jbXAobW9kZSwgImV4dCIsIDMpKXsKKwkJ KnZnYV9tb2RlID0gMHhmZmZlOworCX1lbHNlIGlmKCFzdHJuY21wKG1vZGUsICIweCIsIDIpKXsv L2luIGhleGRlY2ltYWwgCisJCSp2Z2FfbW9kZSA9IGhhdG8xNmkobW9kZSk7CisJfWVsc2UJLy9p biBkZWNpbWFsIAorCQkqdmdhX21vZGUgPSBhdG8xNmkobW9kZSk7CisKKwlyZXR1cm4gMDsKK30K KworIAogc3RhdGljIHZvaWQgbG9hZF9saW51eCh0YXJnZXRfcGh5c19hZGRyX3Qgb3B0aW9uX3Jv bSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqa2VybmVsX2ZpbGVuYW1lLAog CQkgICAgICAgY29uc3QgY2hhciAqaW5pdHJkX2ZpbGVuYW1lLApAQCAtNjA1LDYgKzY3Niw3IEBA IHN0YXRpYyB2b2lkIGxvYWRfbGludXgodGFyZ2V0X3BoeXNfYWRkcl8KICAgICB1aW50MTZfdCBy ZWFsX3NlZzsKICAgICBpbnQgc2V0dXBfc2l6ZSwga2VybmVsX3NpemUsIGluaXRyZF9zaXplLCBj bWRsaW5lX3NpemU7CiAgICAgdWludDMyX3QgaW5pdHJkX21heDsKKwl1aW50MTZfdCB2aWRfbW9k ZTsKICAgICB1aW50OF90IGhlYWRlclsxMDI0XTsKICAgICB0YXJnZXRfcGh5c19hZGRyX3QgcmVh bF9hZGRyLCBwcm90X2FkZHIsIGNtZGxpbmVfYWRkciwgaW5pdHJkX2FkZHI7CiAgICAgRklMRSAq ZiwgKmZpOwpAQCAtNjgzLDYgKzc1NSwxMiBAQCBzdGF0aWMgdm9pZCBsb2FkX2xpbnV4KHRhcmdl dF9waHlzX2FkZHJfCiAgICAgaWYgKHByb3RvY29sID49IDB4MjAwKQogCWhlYWRlclsweDIxMF0g PSAweEIwOwogCisJLypwYXJzZSBjbWRsaW5lIGFuZCBzZXQgdmdhIG1vZGUqLworCWlmKCFnZXRf dmdhX21vZGUoa2VybmVsX2NtZGxpbmUsICZ2aWRfbW9kZSkpeworCQloZWFkZXJbMHgxZmFdID0g dmlkX21vZGUmMHhmZjsKKwkJaGVhZGVyWzB4MWZiXSA9ICh2aWRfbW9kZSYweGZmMDApPj44Owor CX0KKwogICAgIC8qIGhlYXAgKi8KICAgICBpZiAocHJvdG9jb2wgPj0gMHgyMDEpIHsKIAloZWFk ZXJbMHgyMTFdIHw9IDB4ODA7CS8qIENBTl9VU0VfSEVBUCAqLwo= --00032557619a2dff31046acdbfd3--