From: Wei Liu <wei.liu2@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: wei.liu2@citrix.com
Subject: [PATCH RFC 3/4] hvmloader/ovmf: setup ovmf_info
Date: Fri, 15 Nov 2013 15:59:24 +0000 [thread overview]
Message-ID: <1384531165-3600-4-git-send-email-wei.liu2@citrix.com> (raw)
In-Reply-To: <1384531165-3600-1-git-send-email-wei.liu2@citrix.com>
OVMF info contains E820 map allocated by hvmloader. This info is passed
to OVMF to help it do proper initialization.
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
tools/firmware/hvmloader/ovmf.c | 39 +++++++++++++++++++++++++++++++++++++--
1 file changed, 37 insertions(+), 2 deletions(-)
diff --git a/tools/firmware/hvmloader/ovmf.c b/tools/firmware/hvmloader/ovmf.c
index 7826095..c253083 100644
--- a/tools/firmware/hvmloader/ovmf.c
+++ b/tools/firmware/hvmloader/ovmf.c
@@ -46,10 +46,45 @@
#define LOWCHUNK_SIZE 0x00010000
#define LOWCHUNK_MAXOFFSET 0x0000FFFF
#define LOWCHUNK_END (OVMF_BEGIN + OVMF_SIZE)
+#define OVMF_INFO_PHYSICAL_ADDRESS 0X00001000
extern unsigned char dsdt_anycpu[];
extern int dsdt_anycpu_len;
+struct ovmf_info {
+ char signature[11]; /* XenHVMOVMF\0 */
+ uint8_t length; /* Length of this struct */
+ uint8_t checksum; /* Set such that the sum over bytes 0..length == 0 */
+ /*
+ * Physical address of the e820 table, contains e820_nr entries.
+ */
+ uint32_t e820;
+ uint32_t e820_nr;
+} __attribute__ ((packed));
+
+static void ovmf_setup_bios_info(void)
+{
+ struct ovmf_info *info = (void *)OVMF_INFO_PHYSICAL_ADDRESS;
+
+ memset(info, 0, sizeof(*info));
+
+ memcpy(info->signature, "XenHVMOVMF", sizeof(info->signature));
+ info->length = sizeof(*info);
+}
+
+static void ovmf_finish_bios_info(void)
+{
+ struct ovmf_info *info = (void *)OVMF_INFO_PHYSICAL_ADDRESS;
+ uint32_t i;
+ uint8_t checksum;
+
+ checksum = 0;
+ for ( i = 0; i < info->length; i++ )
+ checksum += ((uint8_t *)(info))[i];
+
+ info->checksum = -checksum;
+}
+
static void ovmf_load(const struct bios_config *config)
{
xen_pfn_t mfn;
@@ -104,8 +139,8 @@ struct bios_config ovmf_config = {
.load_roms = 0,
- .bios_info_setup = NULL,
- .bios_info_finish = NULL,
+ .bios_info_setup = ovmf_setup_bios_info,
+ .bios_info_finish = ovmf_finish_bios_info,
.e820_setup = NULL,
--
1.7.10.4
next prev parent reply other threads:[~2013-11-15 16:00 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-15 15:59 [PATCH RFC 0/4] hvmloader: make OVMF work with Xen Wei Liu
2013-11-15 15:59 ` [PATCH RFC 1/4] hvmloader/ovmf: increase blob size to 2MB Wei Liu
2013-11-19 17:49 ` Ian Campbell
2013-11-19 20:49 ` Wei Liu
2013-11-20 10:13 ` Ian Campbell
2013-11-15 15:59 ` [PATCH RFC 2/4] hvmloader/ovmf: show OVMF_BEGIN as bios address Wei Liu
2013-11-19 17:51 ` Ian Campbell
2013-11-15 15:59 ` Wei Liu [this message]
2013-11-19 17:54 ` [PATCH RFC 3/4] hvmloader/ovmf: setup ovmf_info Ian Campbell
2013-11-19 18:03 ` Wei Liu
2013-11-20 10:08 ` Ian Campbell
2013-11-15 15:59 ` [PATCH RFC 4/4] hvmloader:ovmf: setup E820 map Wei Liu
2013-11-19 17:56 ` Ian Campbell
2013-11-19 18:01 ` Wei Liu
2013-11-20 10:07 ` Ian Campbell
2013-11-20 11:49 ` Wei Liu
2013-11-20 11:51 ` Ian Campbell
2013-11-20 11:58 ` Wei Liu
2013-11-20 12:11 ` Ian Campbell
2013-11-20 12:19 ` Wei Liu
2013-11-19 19:56 ` Konrad Rzeszutek Wilk
2013-11-19 20:05 ` Wei Liu
2013-11-20 10:12 ` Ian Campbell
2013-11-20 14:04 ` Konrad Rzeszutek Wilk
2013-11-20 14:05 ` Ian Campbell
2013-11-19 17:47 ` [PATCH RFC 0/4] hvmloader: make OVMF work with Xen Ian Campbell
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=1384531165-3600-4-git-send-email-wei.liu2@citrix.com \
--to=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/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;
as well as URLs for NNTP newsgroup(s).