Module Name:    src
Committed By:   cherry
Date:           Sun Feb 10 11:10:34 UTC 2019

Modified Files:
        src/sys/arch/xen/include/amd64: hypercalls.h
        src/sys/arch/xen/include/i386: hypercalls.h

Log Message:
Catchup hypercall interfaces for HYPERVISOR_sched_op which use
arguments to __XEN_INTERFACE_VERSION__ >= 0x00030201

We've been using the sched_op_compat API with sched_op arguments.

fixes PR port-xen/53965


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/xen/include/amd64/hypercalls.h
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/xen/include/i386/hypercalls.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/xen/include/amd64/hypercalls.h
diff -u src/sys/arch/xen/include/amd64/hypercalls.h:1.11 src/sys/arch/xen/include/amd64/hypercalls.h:1.12
--- src/sys/arch/xen/include/amd64/hypercalls.h:1.11	Sat Feb  2 12:32:55 2019
+++ src/sys/arch/xen/include/amd64/hypercalls.h	Sun Feb 10 11:10:34 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: hypercalls.h,v 1.11 2019/02/02 12:32:55 cherry Exp $ */
+/* $NetBSD: hypercalls.h,v 1.12 2019/02/10 11:10:34 cherry Exp $ */
 /******************************************************************************
  * hypercall.h
  * 
@@ -320,8 +320,18 @@ static inline int
 HYPERVISOR_suspend(
 	unsigned long srec)
 {
+#if __XEN_INTERFACE_VERSION__ >= 0x00030201
+
+	struct sched_shutdown shutdown_reason = {
+		.reason = SHUTDOWN_suspend,
+	};
+
+	return _hypercall3(int, sched_op, SCHEDOP_shutdown,
+	    &shutdown_reason, srec);
+#else
 	return _hypercall3(int, sched_op, SCHEDOP_shutdown,
 				 SHUTDOWN_suspend, srec);
+#endif
 }
 
 static inline long
@@ -342,21 +352,51 @@ static inline long
 HYPERVISOR_shutdown(
 	void)
 {
-	return _hypercall2(int, sched_op, SCHEDOP_shutdown, SHUTDOWN_poweroff);
+#if __XEN_INTERFACE_VERSION__ >= 0x00030201
+
+	struct sched_shutdown shutdown_reason = {
+		.reason = SHUTDOWN_poweroff,
+	};
+
+	return _hypercall2(int, sched_op, SCHEDOP_shutdown,
+	    &shutdown_reason);
+#else
+-	return _hypercall2(int, sched_op, SCHEDOP_shutdown, SHUTDOWN_poweroff);
+#endif
 }
 
 static inline long
 HYPERVISOR_crash(
 	void)
 {
+#if __XEN_INTERFACE_VERSION__ >= 0x00030201
+
+	struct sched_shutdown shutdown_reason = {
+		.reason = SHUTDOWN_crash,
+	};
+
+	return _hypercall2(int, sched_op, SCHEDOP_shutdown,
+	    &shutdown_reason);
+#else
 	return _hypercall2(int, sched_op, SCHEDOP_shutdown, SHUTDOWN_crash);
+#endif
 }
 
 static inline long
 HYPERVISOR_reboot(
 	void)
 {
+#if __XEN_INTERFACE_VERSION__ >= 0x00030201
+
+	struct sched_shutdown shutdown_reason = {
+		.reason = SHUTDOWN_reboot,
+	};
+
+	return _hypercall2(int, sched_op, SCHEDOP_shutdown,
+	    &shutdown_reason);
+#else
 	return _hypercall2(int, sched_op, SCHEDOP_shutdown, SHUTDOWN_reboot);
+#endif
 }
 
 static inline int

Index: src/sys/arch/xen/include/i386/hypercalls.h
diff -u src/sys/arch/xen/include/i386/hypercalls.h:1.18 src/sys/arch/xen/include/i386/hypercalls.h:1.19
--- src/sys/arch/xen/include/i386/hypercalls.h:1.18	Sat Feb  2 12:32:55 2019
+++ src/sys/arch/xen/include/i386/hypercalls.h	Sun Feb 10 11:10:34 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: hypercalls.h,v 1.18 2019/02/02 12:32:55 cherry Exp $	*/
+/*	$NetBSD: hypercalls.h,v 1.19 2019/02/10 11:10:34 cherry Exp $	*/
 
 /*
  * Copyright (c) 2006 Manuel Bouyer.
@@ -368,9 +368,21 @@ HYPERVISOR_shutdown(void)
     long ret;
     unsigned long ign1, ign2;
 
+#if __XEN_INTERFACE_VERSION__ >= 0x00030201
+
+    struct sched_shutdown shutdown_reason = {
+	    .reason = SHUTDOWN_poweroff
+    };
+
     _hypercall(__HYPERVISOR_sched_op,
-	_harg("1" (SCHEDOP_shutdown), "2" (SHUTDOWN_poweroff)),
+	_harg("1" (SCHEDOP_shutdown), "2"  (&shutdown_reason)),
 	_harg("=a" (ret), "=b" (ign1), "=c" (ign2)));
+#else
+     _hypercall(__HYPERVISOR_sched_op,
+	_harg("1" (SCHEDOP_shutdown), "2" (SHUTDOWN_poweroff)),
+ 	_harg("=a" (ret), "=b" (ign1), "=c" (ign2)));
+
+#endif	
 
     return ret;
 }
@@ -381,9 +393,20 @@ HYPERVISOR_crash(void)
     long ret;
     unsigned long ign1, ign2;
 
+#if __XEN_INTERFACE_VERSION__ >= 0x00030201
+
+    struct sched_shutdown shutdown_reason = {
+	    .reason = SHUTDOWN_crash
+    };
+
+    _hypercall(__HYPERVISOR_sched_op,
+	_harg("1" (SCHEDOP_shutdown), "2"  (&shutdown_reason)),
+	_harg("=a" (ret), "=b" (ign1), "=c" (ign2)));
+#else
     _hypercall(__HYPERVISOR_sched_op,
 	_harg("1" (SCHEDOP_shutdown), "2" (SHUTDOWN_crash)),
 	_harg("=a" (ret), "=b" (ign1), "=c" (ign2)));
+#endif
 
     return ret;
 }
@@ -394,9 +417,20 @@ HYPERVISOR_reboot(void)
     long ret;
     unsigned long ign1, ign2;
 
+#if __XEN_INTERFACE_VERSION__ >= 0x00030201
+
+    struct sched_shutdown shutdown_reason = {
+	    .reason = SHUTDOWN_reboot
+    };
+
+    _hypercall(__HYPERVISOR_sched_op,
+	_harg("1" (SCHEDOP_shutdown), "2"  (&shutdown_reason)),
+	_harg("=a" (ret), "=b" (ign1), "=c" (ign2)));
+#else
     _hypercall(__HYPERVISOR_sched_op,
 	_harg("1" (SCHEDOP_shutdown), "2" (SHUTDOWN_reboot)),
 	_harg("=a" (ret), "=b" (ign1), "=c" (ign2)));
+#endif
 
     return ret;
 }
@@ -407,9 +441,20 @@ HYPERVISOR_suspend(unsigned long srec)
     long ret;
     unsigned long ign1, ign2, ign3;
 
+#if __XEN_INTERFACE_VERSION__ >= 0x00030201
+
+    struct sched_shutdown shutdown_reason = {
+	    .reason = SHUTDOWN_suspend
+    };
+
+    _hypercall(__HYPERVISOR_sched_op,
+	_harg("1" (SCHEDOP_shutdown), "2"  (&shutdown_reason), "3" (srec)),
+	_harg("=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3)));
+#else
     _hypercall(__HYPERVISOR_sched_op,
 	_harg("1" (SCHEDOP_shutdown), "2" (SHUTDOWN_suspend), "3" (srec)),
 	_harg("=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3)));
+#endif
 
     return ret;
 }

Reply via email to