From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v5 10/20] xen: add PVH boot entry code Date: Wed, 21 Nov 2018 15:28:45 +0100 Message-ID: <20181121142855.13537-11-jgross@suse.com> References: <20181121142855.13537-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181121142855.13537-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: grub-devel@gnu.org Cc: Juergen Gross , phcoder@gmail.com, daniel.kiper@oracle.com, xen-devel@lists.xen.org, hans@knorrie.org, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org QWRkIHRoZSBjb2RlIGZvciB0aGUgWGVuIFBWSCBtb2RlIGJvb3QgZW50cnkuCgpTaWduZWQtb2Zm LWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBEYW5pZWwg S2lwZXIgPGRhbmllbC5raXBlckBvcmFjbGUuY29tPgotLS0KVjM6IGNsZWFyICVmcyBhbmQgJWdz LCB0b28gKERhbmllbCBLaXBlcikKICAgIHVzZSBHUlVCX01FTU9SWV9NQUNISU5FX1BST1RfU1RB Q0tfU0laRSBmb3Igc3RhY2sgc2l6ZSAoRGFuaWVsIEtpcGVyKQpWNTogcmVvcmRlciBjbGVhcmlu ZyBzZWdtZW50IHJlZ3MgKERhbmllbCBLaXBlcikKLS0tCiBncnViLWNvcmUva2Vybi9pMzg2L3hl bi9zdGFydHVwX3B2aC5TIHwgNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDEgZmlsZSBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3Jl L2tlcm4vaTM4Ni94ZW4vc3RhcnR1cF9wdmguUyBiL2dydWItY29yZS9rZXJuL2kzODYveGVuL3N0 YXJ0dXBfcHZoLlMKaW5kZXggNjliOGZkY2NhLi4zNjNjMzE4NTggMTAwNjQ0Ci0tLSBhL2dydWIt Y29yZS9rZXJuL2kzODYveGVuL3N0YXJ0dXBfcHZoLlMKKysrIGIvZ3J1Yi1jb3JlL2tlcm4vaTM4 Ni94ZW4vc3RhcnR1cF9wdmguUwpAQCAtMTksMTEgKzE5LDYzIEBACiAKICNpbmNsdWRlIDxjb25m aWcuaD4KICNpbmNsdWRlIDxncnViL3N5bWJvbC5oPgorI2luY2x1ZGUgPGdydWIvbWFjaGluZS9t ZW1vcnkuaD4KIAogCS5maWxlCSJzdGFydHVwX3B2aC5TIgogCS50ZXh0CisJLmdsb2JsCXN0YXJ0 LCBfc3RhcnQKKwkuY29kZTMyCiAKK3N0YXJ0OgorX3N0YXJ0OgorCWNsZAorCWxnZHQJZ2R0ZGVz YworCWxqbXAJJEdSVUJfTUVNT1JZX01BQ0hJTkVfUFJPVF9NT0RFX0NTRUcsICQxZgorMToKKwlt b3ZsCSRHUlVCX01FTU9SWV9NQUNISU5FX1BST1RfTU9ERV9EU0VHLCAlZWF4CisJbW92CSVlYXgs ICVkcworCW1vdgklZWF4LCAlZXMKKwltb3YJJWVheCwgJWZzCisJbW92CSVlYXgsICVncworCW1v dgklZWF4LCAlc3MKKwlsZWFsCUxPQ0FMKHN0YWNrX2VuZCksICVlc3AKKworCS8qIFNhdmUgYWRk cmVzcyBvZiBzdGFydCBpbmZvIHN0cnVjdHVyZS4gKi8KKwltb3YJJWVieCwgcHZoX3N0YXJ0X2lu Zm8KKwljYWxsCUVYVF9DKGdydWJfbWFpbikKKwkvKiBEb2Vzbid0IHJldHVybi4gKi8KKworCS5w MmFsaWduCTMKK2dkdDoKKwkud29yZAkwLCAwCisJLmJ5dGUJMCwgMCwgMCwgMAorCisJLyogLS0g Y29kZSBzZWdtZW50IC0tCisJICogYmFzZSA9IDB4MDAwMDAwMDAsIGxpbWl0ID0gMHhGRkZGRiAo NCBLaUIgR3JhbnVsYXJpdHkpLCBwcmVzZW50CisJICogdHlwZSA9IDMyYml0IGNvZGUgZXhlY3V0 ZS9yZWFkLCBEUEwgPSAwCisJICovCisJLndvcmQJMHhGRkZGLCAwCisJLmJ5dGUJMCwgMHg5QSwg MHhDRiwgMAorCisJLyogLS0gZGF0YSBzZWdtZW50IC0tCisJICogYmFzZSA9IDB4MDAwMDAwMDAs IGxpbWl0IDB4RkZGRkYgKDQgS2lCIEdyYW51bGFyaXR5KSwgcHJlc2VudAorCSAqIHR5cGUgPSAz MiBiaXQgZGF0YSByZWFkL3dyaXRlLCBEUEwgPSAwCisJICovCisJLndvcmQJMHhGRkZGLCAwCisJ LmJ5dGUJMCwgMHg5MiwgMHhDRiwgMAorCisJLnAyYWxpZ24JMworLyogdGhpcyBpcyB0aGUgR0RU IGRlc2NyaXB0b3IgKi8KK2dkdGRlc2M6CisJLndvcmQJMHgxNwkJLyogbGltaXQgKi8KKwkubG9u ZwlnZHQJCS8qIGFkZHIgKi8KKworCS5wMmFsaWduCTIKIC8qIFNhdmVkIHBvaW50ZXIgdG8gc3Rh cnQgaW5mbyBzdHJ1Y3R1cmUuICovCiAJLmdsb2JsCXB2aF9zdGFydF9pbmZvCiBwdmhfc3RhcnRf aW5mbzoKIAkubG9uZwkwCisKKwkuYnNzCisJLnNwYWNlCUdSVUJfTUVNT1JZX01BQ0hJTkVfUFJP VF9TVEFDS19TSVpFCitMT0NBTChzdGFja19lbmQpOgotLSAKMi4xNi40CgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0 Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1gPTVK-0006qm-8s for mharc-grub-devel@gnu.org; Wed, 21 Nov 2018 09:29:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56245) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gPTVF-0006l2-4v for grub-devel@gnu.org; Wed, 21 Nov 2018 09:29:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gPTVA-0004N2-49 for grub-devel@gnu.org; Wed, 21 Nov 2018 09:29:17 -0500 Received: from mx2.suse.de ([195.135.220.15]:51154 helo=mx1.suse.de) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gPTV9-0004IV-Te for grub-devel@gnu.org; Wed, 21 Nov 2018 09:29:12 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 83061AFEC; Wed, 21 Nov 2018 14:29:00 +0000 (UTC) From: Juergen Gross To: grub-devel@gnu.org Cc: xen-devel@lists.xen.org, phcoder@gmail.com, daniel.kiper@oracle.com, roger.pau@citrix.com, hans@knorrie.org, Juergen Gross Subject: [PATCH v5 10/20] xen: add PVH boot entry code Date: Wed, 21 Nov 2018 15:28:45 +0100 Message-Id: <20181121142855.13537-11-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20181121142855.13537-1-jgross@suse.com> References: <20181121142855.13537-1-jgross@suse.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] X-Received-From: 195.135.220.15 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Nov 2018 14:29:18 -0000 Add the code for the Xen PVH mode boot entry. Signed-off-by: Juergen Gross Reviewed-by: Daniel Kiper --- V3: clear %fs and %gs, too (Daniel Kiper) use GRUB_MEMORY_MACHINE_PROT_STACK_SIZE for stack size (Daniel Kiper) V5: reorder clearing segment regs (Daniel Kiper) --- grub-core/kern/i386/xen/startup_pvh.S | 52 +++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/grub-core/kern/i386/xen/startup_pvh.S b/grub-core/kern/i386/xen/startup_pvh.S index 69b8fdcca..363c31858 100644 --- a/grub-core/kern/i386/xen/startup_pvh.S +++ b/grub-core/kern/i386/xen/startup_pvh.S @@ -19,11 +19,63 @@ #include #include +#include .file "startup_pvh.S" .text + .globl start, _start + .code32 +start: +_start: + cld + lgdt gdtdesc + ljmp $GRUB_MEMORY_MACHINE_PROT_MODE_CSEG, $1f +1: + movl $GRUB_MEMORY_MACHINE_PROT_MODE_DSEG, %eax + mov %eax, %ds + mov %eax, %es + mov %eax, %fs + mov %eax, %gs + mov %eax, %ss + leal LOCAL(stack_end), %esp + + /* Save address of start info structure. */ + mov %ebx, pvh_start_info + call EXT_C(grub_main) + /* Doesn't return. */ + + .p2align 3 +gdt: + .word 0, 0 + .byte 0, 0, 0, 0 + + /* -- code segment -- + * base = 0x00000000, limit = 0xFFFFF (4 KiB Granularity), present + * type = 32bit code execute/read, DPL = 0 + */ + .word 0xFFFF, 0 + .byte 0, 0x9A, 0xCF, 0 + + /* -- data segment -- + * base = 0x00000000, limit 0xFFFFF (4 KiB Granularity), present + * type = 32 bit data read/write, DPL = 0 + */ + .word 0xFFFF, 0 + .byte 0, 0x92, 0xCF, 0 + + .p2align 3 +/* this is the GDT descriptor */ +gdtdesc: + .word 0x17 /* limit */ + .long gdt /* addr */ + + .p2align 2 /* Saved pointer to start info structure. */ .globl pvh_start_info pvh_start_info: .long 0 + + .bss + .space GRUB_MEMORY_MACHINE_PROT_STACK_SIZE +LOCAL(stack_end): -- 2.16.4