From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v4 02/19] loader/linux: support passing rsdp address via boot params Date: Fri, 2 Nov 2018 13:37:21 +0100 Message-ID: <20181102123738.16395-3-jgross@suse.com> References: <20181102123738.16395-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181102123738.16395-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: hans@knorrie.org, phcoder@gmail.com, daniel.kiper@oracle.com, Juergen Gross , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org WGVuIFBWSCBndWVzdHMgd2lsbCBoYXZlIHRoZSBSU0RQIGF0IGFuIGFyYml0cmFyeSBhZGRyZXNz LiBTdXBwb3J0IHRoYXQKYnkgcGFzc2luZyB0aGUgUlNEUCBhZGRyZXNzIHZpYSB0aGUgYm9vdCBw YXJhbWV0ZXJzIHRvIExpbnV4LgoKVGhlIG5ldyBwcm90b2NvbCB2ZXJzaW9uIDIuMTQgcmVxdWly ZXMgdG8gc2V0IHZlcnNpb24gdG8gMHg4MDAwIG9yZWQKd2l0aCB0aGUgYWN0dWFsbHkgdXNlIHBy b3RvY29sIHZlcnNpb24gKHRoZSBtaW5pbXVtIG9mIHRoZSBrZXJuZWwKc3VwcGxpZWQgcHJvdG9j b2wgdmVyc2lvbiBhbmQgdGhlIGdydWIyIHN1cHBvcnRlZCBwcm90b2NvbCB2ZXJzaW9uKQppZiAy LjE0IG9yIGhpZ2hlciBhcmUgaW4gZWZmZWN0LgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9z cyA8amdyb3NzQHN1c2UuY29tPgotLS0KVjI6IGFkZCBvcmluZyAweDgwMDAgdG8gdmVyc2lvbiBm aWVsZApWMzogbW92ZSBpbmNsdWRpbmcgbWFjaGluZS9rZXJuZWwuaCB0byBwYXRjaCA4IChEYW5p ZWwgS2lwZXIpCi0tLQogZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMgfCA4ICsrKysrKysr CiBpbmNsdWRlL2dydWIvaTM4Ni9saW51eC5oICAgICB8IDUgKysrKy0KIDIgZmlsZXMgY2hhbmdl ZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2dydWItY29y ZS9sb2FkZXIvaTM4Ni9saW51eC5jIGIvZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMKaW5k ZXggNGVhYjU1YTJkLi41MTkyMDg5NmUgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9sb2FkZXIvaTM4 Ni9saW51eC5jCisrKyBiL2dydWItY29yZS9sb2FkZXIvaTM4Ni9saW51eC5jCkBAIC03NTAsNiAr NzUwLDE0IEBAIGdydWJfY21kX2xpbnV4IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpLAogICAgICAgcHJvdF9pbml0X3NwYWNlID0gcGFnZV9hbGlnbiAocHJvdF9z aXplKSAqIDM7CiAgICAgfQogCisjaWZkZWYgR1JVQl9LRVJORUxfVVNFX1JTRFBfQUREUgorICBp ZiAoZ3J1Yl9sZV90b19jcHUxNiAobGgudmVyc2lvbikgPj0gMHgwMjBlKQorICAgIGxoLmFjcGlf cnNkcF9hZGRyID0gZ3J1Yl9sZV90b19jcHU2NCAoZ3J1Yl9yc2RwX2FkZHIpOworI2VuZGlmCisK KyAgaWYgKGdydWJfbGVfdG9fY3B1MTYgKGxoLnZlcnNpb24pID49IDB4MDIwZSkKKyAgICBsaC52 ZXJzaW9uID0gZ3J1Yl9sZV90b19jcHUxNiAoTElOVVhfTE9BREVSX1ZFUlNJT05fVEFHIHwgMHgw MjBlKTsKKwogICBpZiAoYWxsb2NhdGVfcGFnZXMgKHByb3Rfc2l6ZSwgJmFsaWduLAogCQkgICAg ICBtaW5fYWxpZ24sIHJlbG9jYXRhYmxlLAogCQkgICAgICBwcmVmZXJyZWRfYWRkcmVzcykpCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvaTM4Ni9saW51eC5oIGIvaW5jbHVkZS9ncnViL2kzODYv bGludXguaAppbmRleCA2MGM3YzNiNWUuLjVjYmNmYmU1YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9n cnViL2kzODYvbGludXguaAorKysgYi9pbmNsdWRlL2dydWIvaTM4Ni9saW51eC5oCkBAIC04Nyw3 ICs4Nyw3IEBAIGVudW0KICAgICBHUlVCX1ZJREVPX0xJTlVYX1RZUEVfU0lNUExFID0gMHg3MCAg ICAvKiBMaW5lYXIgZnJhbWVidWZmZXIgd2l0aG91dCBhbnkgYWRkaXRpb25hbCBmdW5jdGlvbnMu ICAqLwogICB9OwogCi0vKiBGb3IgdGhlIExpbnV4L2kzODYgYm9vdCBwcm90b2NvbCB2ZXJzaW9u IDIuMTAuICAqLworLyogRm9yIHRoZSBMaW51eC9pMzg2IGJvb3QgcHJvdG9jb2wgdmVyc2lvbiAy LjE0LiAgKi8KIHN0cnVjdCBsaW51eF9pMzg2X2tlcm5lbF9oZWFkZXIKIHsKICAgZ3J1Yl91aW50 OF90IGNvZGUxWzB4MDAyMF07CkBAIC0xMDUsNiArMTA1LDcgQEAgc3RydWN0IGxpbnV4X2kzODZf a2VybmVsX2hlYWRlcgogICBncnViX3VpbnQxNl90IGp1bXA7CQkJLyogSnVtcCBpbnN0cnVjdGlv biAqLwogICBncnViX3VpbnQzMl90IGhlYWRlcjsJCQkvKiBNYWdpYyBzaWduYXR1cmUgIkhkclMi ICovCiAgIGdydWJfdWludDE2X3QgdmVyc2lvbjsJCS8qIEJvb3QgcHJvdG9jb2wgdmVyc2lvbiBz dXBwb3J0ZWQgKi8KKyNkZWZpbmUgTElOVVhfTE9BREVSX1ZFUlNJT05fVEFHCTB4ODAwMAogICBn cnViX3VpbnQzMl90IHJlYWxtb2RlX3N3dGNoOwkJLyogQm9vdCBsb2FkZXIgaG9vayAqLwogICBn cnViX3VpbnQxNl90IHN0YXJ0X3N5czsJCS8qIFRoZSBsb2FkLWxvdyBzZWdtZW50IChvYnNvbGV0 ZSkgKi8KICAgZ3J1Yl91aW50MTZfdCBrZXJuZWxfdmVyc2lvbjsJCS8qIFBvaW50cyB0byBrZXJu ZWwgdmVyc2lvbiBzdHJpbmcgKi8KQEAgLTE0Miw2ICsxNDMsOCBAQCBzdHJ1Y3QgbGludXhfaTM4 Nl9rZXJuZWxfaGVhZGVyCiAgIGdydWJfdWludDY0X3Qgc2V0dXBfZGF0YTsKICAgZ3J1Yl91aW50 NjRfdCBwcmVmX2FkZHJlc3M7CiAgIGdydWJfdWludDMyX3QgaW5pdF9zaXplOworICBncnViX3Vp bnQzMl90IGhhbmRvdmVyX29mZnNldDsKKyAgZ3J1Yl91aW50NjRfdCBhY3BpX3JzZHBfYWRkcjsK IH0gR1JVQl9QQUNLRUQ7CiAKIC8qIEJvb3QgcGFyYW1ldGVycyBmb3IgTGludXggYmFzZWQgb24g Mi42LjEyLiBUaGlzIGlzIHVzZWQgYnkgdGhlIHNldHVwCi0tIAoyLjE2LjQKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl Y3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1gIYwX-0006wn-7h for mharc-grub-devel@gnu.org; Fri, 02 Nov 2018 08:52:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43984) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIYwR-0006FF-7r for grub-devel@gnu.org; Fri, 02 Nov 2018 08:52:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gIYhu-00051s-8V for grub-devel@gnu.org; Fri, 02 Nov 2018 08:37:49 -0400 Received: from mx2.suse.de ([195.135.220.15]:49992 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 1gIYht-0004ux-UK for grub-devel@gnu.org; Fri, 02 Nov 2018 08:37:46 -0400 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 B1940AD53; Fri, 2 Nov 2018 12:37:41 +0000 (UTC) From: Juergen Gross To: grub-devel@gnu.org Cc: xen-devel@lists.xen.org, phcoder@gmail.com, daniel.kiper@oracle.com, hans@knorrie.org, Juergen Gross Subject: [PATCH v4 02/19] loader/linux: support passing rsdp address via boot params Date: Fri, 2 Nov 2018 13:37:21 +0100 Message-Id: <20181102123738.16395-3-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20181102123738.16395-1-jgross@suse.com> References: <20181102123738.16395-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: Fri, 02 Nov 2018 12:52:49 -0000 Xen PVH guests will have the RSDP at an arbitrary address. Support that by passing the RSDP address via the boot parameters to Linux. The new protocol version 2.14 requires to set version to 0x8000 ored with the actually use protocol version (the minimum of the kernel supplied protocol version and the grub2 supported protocol version) if 2.14 or higher are in effect. Signed-off-by: Juergen Gross --- V2: add oring 0x8000 to version field V3: move including machine/kernel.h to patch 8 (Daniel Kiper) --- grub-core/loader/i386/linux.c | 8 ++++++++ include/grub/i386/linux.h | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c index 4eab55a2d..51920896e 100644 --- a/grub-core/loader/i386/linux.c +++ b/grub-core/loader/i386/linux.c @@ -750,6 +750,14 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), prot_init_space = page_align (prot_size) * 3; } +#ifdef GRUB_KERNEL_USE_RSDP_ADDR + if (grub_le_to_cpu16 (lh.version) >= 0x020e) + lh.acpi_rsdp_addr = grub_le_to_cpu64 (grub_rsdp_addr); +#endif + + if (grub_le_to_cpu16 (lh.version) >= 0x020e) + lh.version = grub_le_to_cpu16 (LINUX_LOADER_VERSION_TAG | 0x020e); + if (allocate_pages (prot_size, &align, min_align, relocatable, preferred_address)) diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h index 60c7c3b5e..5cbcfbe5a 100644 --- a/include/grub/i386/linux.h +++ b/include/grub/i386/linux.h @@ -87,7 +87,7 @@ enum GRUB_VIDEO_LINUX_TYPE_SIMPLE = 0x70 /* Linear framebuffer without any additional functions. */ }; -/* For the Linux/i386 boot protocol version 2.10. */ +/* For the Linux/i386 boot protocol version 2.14. */ struct linux_i386_kernel_header { grub_uint8_t code1[0x0020]; @@ -105,6 +105,7 @@ struct linux_i386_kernel_header grub_uint16_t jump; /* Jump instruction */ grub_uint32_t header; /* Magic signature "HdrS" */ grub_uint16_t version; /* Boot protocol version supported */ +#define LINUX_LOADER_VERSION_TAG 0x8000 grub_uint32_t realmode_swtch; /* Boot loader hook */ grub_uint16_t start_sys; /* The load-low segment (obsolete) */ grub_uint16_t kernel_version; /* Points to kernel version string */ @@ -142,6 +143,8 @@ struct linux_i386_kernel_header grub_uint64_t setup_data; grub_uint64_t pref_address; grub_uint32_t init_size; + grub_uint32_t handover_offset; + grub_uint64_t acpi_rsdp_addr; } GRUB_PACKED; /* Boot parameters for Linux based on 2.6.12. This is used by the setup -- 2.16.4