|
@@ -107,7 +107,22 @@
|
|
|
#define HV_DISPATCH_ENTRY_SIZE 32
|
|
|
|
|
|
/** Version of the hypervisor interface defined by this file */
|
|
|
-#define _HV_VERSION 11
|
|
|
+#define _HV_VERSION 13
|
|
|
+
|
|
|
+/** Last version of the hypervisor interface with old hv_init() ABI.
|
|
|
+ *
|
|
|
+ * The change from version 12 to version 13 corresponds to launching
|
|
|
+ * the client by default at PL2 instead of PL1 (corresponding to the
|
|
|
+ * hv itself running at PL3 instead of PL2). To make this explicit,
|
|
|
+ * the hv_init() API was also extended so the client can report its
|
|
|
+ * desired PL, resulting in a more helpful failure diagnostic. If you
|
|
|
+ * call hv_init() with _HV_VERSION_OLD_HV_INIT and omit the client_pl
|
|
|
+ * argument, the hypervisor will assume client_pl = 1.
|
|
|
+ *
|
|
|
+ * Note that this is a deprecated solution and we do not expect to
|
|
|
+ * support clients of the Tilera hypervisor running at PL1 indefinitely.
|
|
|
+ */
|
|
|
+#define _HV_VERSION_OLD_HV_INIT 12
|
|
|
|
|
|
/* Index into hypervisor interface dispatch code blocks.
|
|
|
*
|
|
@@ -377,7 +392,11 @@ typedef int HV_Errno;
|
|
|
#ifndef __ASSEMBLER__
|
|
|
|
|
|
/** Pass HV_VERSION to hv_init to request this version of the interface. */
|
|
|
-typedef enum { HV_VERSION = _HV_VERSION } HV_VersionNumber;
|
|
|
+typedef enum {
|
|
|
+ HV_VERSION = _HV_VERSION,
|
|
|
+ HV_VERSION_OLD_HV_INIT = _HV_VERSION_OLD_HV_INIT,
|
|
|
+
|
|
|
+} HV_VersionNumber;
|
|
|
|
|
|
/** Initializes the hypervisor.
|
|
|
*
|
|
@@ -385,9 +404,11 @@ typedef enum { HV_VERSION = _HV_VERSION } HV_VersionNumber;
|
|
|
* that this program expects, typically HV_VERSION.
|
|
|
* @param chip_num Architecture number of the chip the client was built for.
|
|
|
* @param chip_rev_num Revision number of the chip the client was built for.
|
|
|
+ * @param client_pl Privilege level the client is built for
|
|
|
+ * (not required if interface_version_number == HV_VERSION_OLD_HV_INIT).
|
|
|
*/
|
|
|
void hv_init(HV_VersionNumber interface_version_number,
|
|
|
- int chip_num, int chip_rev_num);
|
|
|
+ int chip_num, int chip_rev_num, int client_pl);
|
|
|
|
|
|
|
|
|
/** Queries we can make for hv_sysconf().
|