All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Kiper <daniel.kiper@oracle.com>
To: linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org,
	x86@kernel.org, xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, boris.ostrovsky@oracle.com,
	david.vrabel@citrix.com, eshelton@pobox.com, hpa@zytor.com,
	ian.campbell@citrix.com, jbeulich@suse.com, jeremy@goop.org,
	konrad.wilk@oracle.com, matt.fleming@intel.com, mingo@redhat.com,
	mjg59@srcf.ucam.org, stefano.stabellini@eu.citrix.com,
	tglx@linutronix.de
Subject: [PATCH v5 3/7] xen: Define EFI related stuff
Date: Fri, 13 Jun 2014 19:00:19 +0200	[thread overview]
Message-ID: <1402678823-24589-4-git-send-email-daniel.kiper@oracle.com> (raw)
In-Reply-To: <1402678823-24589-1-git-send-email-daniel.kiper@oracle.com>

Define constants and structures which are needed to properly
execute EFI related hypercall in Xen dom0.

This patch is based on Jan Beulich and Tang Liang work.

v5 - suggestions/fixes:
   - improve commit message
     (suggested by David Vrabel).

v4 - suggestions/fixes:
   - change some types from generic to Xen specific ones
     (suggested by Stefano Stabellini),
   - do some formating changes
     (suggested by Jan Beulich).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Tang Liang <liang.tang@oracle.com>
Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
---
 include/xen/interface/platform.h |  123 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 123 insertions(+)

diff --git a/include/xen/interface/platform.h b/include/xen/interface/platform.h
index f1331e3..55deeb7 100644
--- a/include/xen/interface/platform.h
+++ b/include/xen/interface/platform.h
@@ -108,11 +108,113 @@ struct xenpf_platform_quirk {
 };
 DEFINE_GUEST_HANDLE_STRUCT(xenpf_platform_quirk_t);
 
+#define XENPF_efi_runtime_call    49
+#define XEN_EFI_get_time                      1
+#define XEN_EFI_set_time                      2
+#define XEN_EFI_get_wakeup_time               3
+#define XEN_EFI_set_wakeup_time               4
+#define XEN_EFI_get_next_high_monotonic_count 5
+#define XEN_EFI_get_variable                  6
+#define XEN_EFI_set_variable                  7
+#define XEN_EFI_get_next_variable_name        8
+#define XEN_EFI_query_variable_info           9
+#define XEN_EFI_query_capsule_capabilities   10
+#define XEN_EFI_update_capsule               11
+
+struct xenpf_efi_runtime_call {
+	uint32_t function;
+	/*
+	 * This field is generally used for per sub-function flags (defined
+	 * below), except for the XEN_EFI_get_next_high_monotonic_count case,
+	 * where it holds the single returned value.
+	 */
+	uint32_t misc;
+	xen_ulong_t status;
+	union {
+#define XEN_EFI_GET_TIME_SET_CLEARS_NS 0x00000001
+	struct {
+		struct xenpf_efi_time {
+			uint16_t year;
+			uint8_t month;
+			uint8_t day;
+			uint8_t hour;
+			uint8_t min;
+			uint8_t sec;
+			uint32_t ns;
+			int16_t tz;
+			uint8_t daylight;
+		} time;
+		uint32_t resolution;
+		uint32_t accuracy;
+	} get_time;
+
+	struct xenpf_efi_time set_time;
+
+#define XEN_EFI_GET_WAKEUP_TIME_ENABLED 0x00000001
+#define XEN_EFI_GET_WAKEUP_TIME_PENDING 0x00000002
+	struct xenpf_efi_time get_wakeup_time;
+
+#define XEN_EFI_SET_WAKEUP_TIME_ENABLE      0x00000001
+#define XEN_EFI_SET_WAKEUP_TIME_ENABLE_ONLY 0x00000002
+	struct xenpf_efi_time set_wakeup_time;
+
+#define XEN_EFI_VARIABLE_NON_VOLATILE       0x00000001
+#define XEN_EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
+#define XEN_EFI_VARIABLE_RUNTIME_ACCESS     0x00000004
+	struct {
+		GUEST_HANDLE(void) name;  /* UCS-2/UTF-16 string */
+		xen_ulong_t size;
+		GUEST_HANDLE(void) data;
+		struct xenpf_efi_guid {
+			uint32_t data1;
+			uint16_t data2;
+			uint16_t data3;
+			uint8_t data4[8];
+			} vendor_guid;
+		} get_variable, set_variable;
+
+	struct {
+		xen_ulong_t size;
+		GUEST_HANDLE(void) name;  /* UCS-2/UTF-16 string */
+		struct xenpf_efi_guid vendor_guid;
+		} get_next_variable_name;
+
+	struct {
+		uint32_t attr;
+		uint64_t max_store_size;
+		uint64_t remain_store_size;
+		uint64_t max_size;
+		} query_variable_info;
+
+	struct {
+		GUEST_HANDLE(void) capsule_header_array;
+		xen_ulong_t capsule_count;
+		uint64_t max_capsule_size;
+		uint32_t reset_type;
+		} query_capsule_capabilities;
+
+	struct {
+		GUEST_HANDLE(void) capsule_header_array;
+		xen_ulong_t capsule_count;
+		uint64_t sg_list; /* machine address */
+		} update_capsule;
+	} u;
+};
+DEFINE_GUEST_HANDLE_STRUCT(xenpf_efi_runtime_call);
+
+#define  XEN_FW_EFI_VERSION        0
+#define  XEN_FW_EFI_CONFIG_TABLE   1
+#define  XEN_FW_EFI_VENDOR         2
+#define  XEN_FW_EFI_MEM_INFO       3
+#define  XEN_FW_EFI_RT_VERSION     4
+
 #define XENPF_firmware_info       50
 #define XEN_FW_DISK_INFO          1 /* from int 13 AH=08/41/48 */
 #define XEN_FW_DISK_MBR_SIGNATURE 2 /* from MBR offset 0x1b8 */
 #define XEN_FW_VBEDDC_INFO        3 /* from int 10 AX=4f15 */
+#define XEN_FW_EFI_INFO           4 /* from EFI */
 #define XEN_FW_KBD_SHIFT_FLAGS    5 /* Int16, Fn02: Get keyboard shift flags. */
+
 struct xenpf_firmware_info {
 	/* IN variables. */
 	uint32_t type;
@@ -144,6 +246,26 @@ struct xenpf_firmware_info {
 			GUEST_HANDLE(uchar) edid;
 		} vbeddc_info; /* XEN_FW_VBEDDC_INFO */
 
+		union xenpf_efi_info {
+			uint32_t version;
+			struct {
+				uint64_t addr;   /* EFI_CONFIGURATION_TABLE */
+				uint32_t nent;
+			} cfg;
+			struct {
+				uint32_t revision;
+				uint32_t bufsz;  /* input, in bytes */
+				GUEST_HANDLE(void) name;
+				/* UCS-2/UTF-16 string */
+				} vendor;
+			struct {
+				uint64_t addr;
+				uint64_t size;
+				uint64_t attr;
+				uint32_t type;
+				} mem;
+		} efi_info; /* XEN_FW_EFI_INFO */
+
 		uint8_t kbd_shift_flags; /* XEN_FW_KBD_SHIFT_FLAGS */
 	} u;
 };
@@ -362,6 +484,7 @@ struct xen_platform_op {
 		struct xenpf_read_memtype      read_memtype;
 		struct xenpf_microcode_update  microcode;
 		struct xenpf_platform_quirk    platform_quirk;
+		struct xenpf_efi_runtime_call  efi_runtime_call;
 		struct xenpf_firmware_info     firmware_info;
 		struct xenpf_enter_acpi_sleep  enter_acpi_sleep;
 		struct xenpf_change_freq       change_freq;
-- 
1.7.10.4


  parent reply	other threads:[~2014-06-13 17:01 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-13 17:00 [PATCH v5 0/7] xen: Add EFI support Daniel Kiper
2014-06-13 17:00 ` Daniel Kiper
2014-06-13 17:00 ` [PATCH v5 1/7] efi: Use early_mem*() instead of early_io*() Daniel Kiper
2014-06-13 17:00   ` Daniel Kiper
2014-06-16  1:19   ` Matthew Garrett
2014-06-16  1:19   ` Matthew Garrett
2014-06-16  1:19     ` Matthew Garrett
2014-06-18 12:17   ` Matt Fleming
2014-06-18 12:31     ` David Vrabel
2014-06-18 12:31     ` David Vrabel
2014-06-18 12:31       ` David Vrabel
2014-06-18 12:59     ` Daniel Kiper
2014-06-18 12:59     ` Daniel Kiper
2014-06-18 14:56       ` Matt Fleming
2014-06-18 14:56       ` Matt Fleming
2014-06-18 14:56         ` Matt Fleming
2014-06-18 13:59     ` Mark Salter
2014-06-18 13:59       ` Mark Salter
2014-06-18 13:59     ` Mark Salter
2014-06-18 12:17   ` Matt Fleming
2014-06-13 17:00 ` [PATCH v5 2/7] efi: Introduce EFI_NO_DIRECT flag Daniel Kiper
2014-06-16 10:52   ` [Xen-devel] " David Vrabel
2014-06-16 10:52     ` David Vrabel
2014-06-16 10:52   ` David Vrabel
2014-06-18 13:52   ` Matt Fleming
2014-06-18 13:52   ` Matt Fleming
2014-06-18 13:52     ` Matt Fleming
2014-06-18 13:58     ` Jan Beulich
2014-06-18 13:58     ` Jan Beulich
2014-06-18 13:58       ` Jan Beulich
2014-06-18 14:30       ` Stefano Stabellini
2014-06-18 14:30         ` Stefano Stabellini
2014-06-18 15:08         ` Daniel Kiper
2014-06-18 15:08           ` Daniel Kiper
2014-06-18 15:08         ` Daniel Kiper
2014-06-18 15:12         ` Matt Fleming
2014-06-18 15:12         ` Matt Fleming
2014-06-18 15:12           ` Matt Fleming
2014-06-18 14:30       ` Stefano Stabellini
2014-06-18 16:48     ` Daniel Kiper
2014-06-18 16:48     ` Daniel Kiper
2014-06-18 16:48       ` Daniel Kiper
2014-06-19 14:41       ` Matt Fleming
2014-06-19 14:41       ` Matt Fleming
2014-06-19 14:41         ` Matt Fleming
2014-06-20 14:36         ` Daniel Kiper
2014-06-20 14:36           ` Daniel Kiper
2014-06-20 14:36         ` Daniel Kiper
2014-06-13 17:00 ` Daniel Kiper
2014-06-13 17:00 ` [PATCH v5 3/7] xen: Define EFI related stuff Daniel Kiper
2014-06-13 17:00 ` Daniel Kiper [this message]
2014-06-16 10:54   ` David Vrabel
2014-06-16 10:54   ` [Xen-devel] " David Vrabel
2014-06-16 10:54     ` David Vrabel
2014-06-13 17:00 ` [PATCH v5 4/7] xen: Put EFI machinery in place Daniel Kiper
2014-06-13 17:00 ` Daniel Kiper
2014-06-16 11:55   ` Stefano Stabellini
2014-06-16 11:55   ` Stefano Stabellini
2014-06-16 11:55     ` Stefano Stabellini
2014-06-16 18:45     ` Daniel Kiper
2014-06-16 18:45     ` Daniel Kiper
2014-06-16 18:45       ` Daniel Kiper
2014-06-16 12:00   ` David Vrabel
2014-06-16 12:00   ` David Vrabel
2014-06-16 12:00     ` David Vrabel
2014-06-16 19:06     ` Daniel Kiper
2014-06-16 19:06     ` Daniel Kiper
2014-06-16 19:06       ` Daniel Kiper
2014-06-13 17:00 ` [PATCH v5 5/7] arch/x86: Replace plain strings with constants Daniel Kiper
2014-06-18 13:56   ` Matt Fleming
2014-06-18 13:56     ` Matt Fleming
2014-06-18 13:56   ` Matt Fleming
2014-06-13 17:00 ` Daniel Kiper
2014-06-13 17:00 ` [PATCH v5 6/7] arch/x86: Remove redundant set_bit() call Daniel Kiper
2014-06-13 17:00 ` Daniel Kiper
2014-06-18 13:56   ` Matt Fleming
2014-06-18 13:56   ` Matt Fleming
2014-06-18 13:56     ` Matt Fleming
2014-06-18 14:01     ` Konrad Rzeszutek Wilk
2014-06-18 14:01       ` Konrad Rzeszutek Wilk
2014-06-18 14:09       ` Matt Fleming
2014-06-18 14:09       ` Matt Fleming
2014-06-18 14:09         ` Matt Fleming
2014-06-18 14:01     ` Konrad Rzeszutek Wilk
2014-06-13 17:00 ` [PATCH v5 7/7] arch/x86: Comment out efi_set_rtc_mmss() Daniel Kiper
2014-06-13 17:00 ` Daniel Kiper
2014-06-13 17:00   ` Daniel Kiper
2014-06-16 11:43   ` Stefano Stabellini
2014-06-16 11:43   ` Stefano Stabellini
2014-06-16 11:43     ` Stefano Stabellini
2014-06-16 11:54     ` Juergen Gross
2014-06-16 11:54     ` [Xen-devel] " Juergen Gross
2014-06-16 18:59       ` H. Peter Anvin
2014-06-16 18:59         ` H. Peter Anvin
2014-06-16 18:59       ` H. Peter Anvin
2014-06-18 14:08   ` Matt Fleming
2014-06-18 14:08   ` Matt Fleming
2014-06-18 14:08     ` Matt Fleming
2014-06-18 14:15 ` [PATCH v5 0/7] xen: Add EFI support Matt Fleming
2014-06-18 14:15 ` Matt Fleming
2014-06-18 14:15   ` Matt Fleming
2014-06-18 14:31   ` Konrad Rzeszutek Wilk
2014-06-18 14:31   ` Konrad Rzeszutek Wilk
2014-06-18 14:31     ` Konrad Rzeszutek Wilk
2014-06-18 14:48     ` Matt Fleming
2014-06-18 14:48       ` Matt Fleming
2014-06-18 14:48     ` Matt Fleming

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=1402678823-24589-4-git-send-email-daniel.kiper@oracle.com \
    --to=daniel.kiper@oracle.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=david.vrabel@citrix.com \
    --cc=eshelton@pobox.com \
    --cc=hpa@zytor.com \
    --cc=ian.campbell@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=jeremy@goop.org \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matt.fleming@intel.com \
    --cc=mingo@redhat.com \
    --cc=mjg59@srcf.ucam.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.