You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
1
|
2
(6) |
3
(1) |
4
(1) |
5
(20) |
6
(3) |
|
7
(1) |
8
(3) |
9
(4) |
10
(1) |
11
(1) |
12
(3) |
13
(5) |
|
14
|
15
|
16
(2) |
17
(3) |
18
(4) |
19
(2) |
20
(1) |
|
21
(1) |
22
(2) |
23
(3) |
24
(2) |
25
(2) |
26
(7) |
27
(1) |
|
28
(28) |
29
|
30
(1) |
|
|
|
|
|
From: <sv...@va...> - 2015-06-28 17:06:20
|
Author: bart
Date: Sun Jun 28 18:06:14 2015
New Revision: 15387
Log:
Add news entry for bugzilla #349626
Modified:
trunk/NEWS
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Sun Jun 28 18:06:14 2015
@@ -245,6 +245,7 @@
reply 0x........] (task_set_info)
349087 Fix UNKNOWN task message [id 3410, to mach_task_self(),
reply 0x........] (task_set_special_port)
+349626 Implemented additional Xen hypercalls
n-i-bz Provide implementations of certain compiler builtins to support
compilers who may not provide those
n-i-bz Old STABS code is still being compiled, but never used. Remove it.
|
|
From: <sv...@va...> - 2015-06-28 16:57:55
|
Author: bart
Date: Sun Jun 28 17:57:48 2015
New Revision: 15386
Log:
xen: Drop bogus port field from vki_xen_ioctl_evtchn_bind_virq
This ioctl argument struct has never had such a member.
Signed-off-by: Ian Campbell <ian...@ci...>
Modified:
trunk/include/vki/vki-linux.h
Modified: trunk/include/vki/vki-linux.h
==============================================================================
--- trunk/include/vki/vki-linux.h (original)
+++ trunk/include/vki/vki-linux.h Sun Jun 28 17:57:48 2015
@@ -3312,7 +3312,6 @@
_VKI_IOC(_VKI_IOC_NONE, 'E', 0, sizeof(struct vki_xen_ioctl_evtchn_bind_virq))
struct vki_xen_ioctl_evtchn_bind_virq {
vki_uint32_t virq;
- vki_uint32_t port;
};
#define VKI_XEN_IOCTL_EVTCHN_BIND_INTERDOMAIN \
|
|
From: <sv...@va...> - 2015-06-28 16:57:16
|
Author: bart
Date: Sun Jun 28 17:57:10 2015
New Revision: 15385
Log:
xen: Implement physdev_op and map_pirq
Signed-off-by: Ian Campbell <ian...@ci...>
Added:
trunk/include/vki/vki-xen-physdev.h
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:57:10 2015
@@ -460,6 +460,60 @@
evtchn->cmd, &evtchn->u, 1);
}
+PRE(physdev_op)
+{
+ int cmd = ARG1;
+
+ PRINT("__HYPERVISOR_physdev_op ( %ld, %lx )", ARG1, ARG2);
+
+#define PRE_XEN_PHYSDEVOP_READ(_op, _field) \
+ PRE_MEM_READ("XEN_PHYSDEVOP_" #_op " ." #_field, \
+ (Addr)&arg->_field, \
+ sizeof(arg->_field))
+
+ switch (cmd) {
+ case VKI_XEN_PHYSDEVOP_map_pirq: {
+ struct vki_xen_physdev_map_pirq *arg =
+ (struct vki_xen_physdev_map_pirq *)ARG2;
+
+ PRE_XEN_PHYSDEVOP_READ("map_pirq", domid);
+ PRE_XEN_PHYSDEVOP_READ("map_pirq", type);
+
+ PRE_XEN_PHYSDEVOP_READ("map_pirq", bus);
+ PRE_XEN_PHYSDEVOP_READ("map_pirq", devfn);
+ PRE_XEN_PHYSDEVOP_READ("map_pirq", entry_nr);
+ PRE_XEN_PHYSDEVOP_READ("map_pirq", table_base);
+
+ switch(arg->type) {
+ case VKI_XEN_MAP_PIRQ_TYPE_MSI:
+ PRE_XEN_PHYSDEVOP_READ("map_pirq", index);
+ break;
+ case VKI_XEN_MAP_PIRQ_TYPE_GSI:
+ PRE_XEN_PHYSDEVOP_READ("map_pirq", index);
+ PRE_XEN_PHYSDEVOP_READ("map_pirq", pirq);
+ break;
+ case VKI_XEN_MAP_PIRQ_TYPE_MSI_SEG:
+ PRE_XEN_PHYSDEVOP_READ("map_pirq", index);
+ break;
+ case VKI_XEN_MAP_PIRQ_TYPE_MULTI_MSI:
+ break;
+ }
+ break;
+ }
+ case VKI_XEN_PHYSDEVOP_unmap_pirq: {
+ struct vki_xen_physdev_unmap_pirq *arg =
+ (struct vki_xen_physdev_unmap_pirq *)ARG2;
+ PRE_XEN_PHYSDEVOP_READ("unmap_pirq", domid);
+ PRE_XEN_PHYSDEVOP_READ("unmap_pirq", pirq);
+ break;
+ }
+ default:
+ bad_subop(tid, layout, arrghs, status, flags,
+ "__HYPERVISOR_physdev_op", cmd);
+ }
+#undef PRE_XEN_PHYSDEVOP_READ
+}
+
PRE(xen_version)
{
PRINT("__HYPERVISOR_xen_version ( %ld, %lx )", ARG1, ARG2);
@@ -1388,6 +1442,33 @@
post_evtchn_op(tid, evtchn->cmd, &evtchn->u, 1);
}
+POST(physdev_op)
+{
+ int cmd = ARG1;
+
+#define POST_XEN_PHYSDEVOP_WRITE(_op, _field) \
+ POST_MEM_WRITE((Addr)&arg->_field, sizeof(arg->_field))
+
+ switch (cmd) {
+ case VKI_XEN_PHYSDEVOP_unmap_pirq:
+ /* No outputs */
+ break;
+
+ case VKI_XEN_PHYSDEVOP_map_pirq: {
+ struct vki_xen_physdev_map_pirq *arg =
+ (struct vki_xen_physdev_map_pirq *)ARG2;
+ if (arg->type == VKI_XEN_MAP_PIRQ_TYPE_MULTI_MSI)
+ POST_XEN_PHYSDEVOP_WRITE("map_pirq", entry_nr);
+ POST_XEN_PHYSDEVOP_WRITE("map_pirq", pirq);
+ break;
+ }
+#undef POST_XEN_PHYSDEVOP_WRITE
+
+ default:
+ break;
+ }
+}
+
POST(xen_version)
{
switch (ARG1) {
@@ -1989,7 +2070,7 @@
// __VKI_XEN_callback_op // 30
// __VKI_XEN_xenoprof_op // 31
HYPXY(__VKI_XEN_event_channel_op, evtchn_op, 2), // 32
- // __VKI_XEN_physdev_op // 33
+ HYPXY(__VKI_XEN_physdev_op, physdev_op, 2), // 33
HYPXY(__VKI_XEN_hvm_op, hvm_op, 2), // 34
HYPXY(__VKI_XEN_sysctl, sysctl, 1), // 35
Added: trunk/include/vki/vki-xen-physdev.h
==============================================================================
--- trunk/include/vki/vki-xen-physdev.h (added)
+++ trunk/include/vki/vki-xen-physdev.h Sun Jun 28 17:57:10 2015
@@ -0,0 +1,40 @@
+#ifndef __VKI_XEN_PHYSDEV__H
+#define __VKI_XEN_PHYSDEV_H
+
+#define VKI_XEN_MAP_PIRQ_TYPE_MSI 0x0
+#define VKI_XEN_MAP_PIRQ_TYPE_GSI 0x1
+#define VKI_XEN_MAP_PIRQ_TYPE_UNKNOWN 0x2
+#define VKI_XEN_MAP_PIRQ_TYPE_MSI_SEG 0x3
+#define VKI_XEN_MAP_PIRQ_TYPE_MULTI_MSI 0x4
+
+#define VKI_XEN_PHYSDEVOP_map_pirq 13
+struct vki_xen_physdev_map_pirq {
+ vki_xen_domid_t domid;
+ /* IN */
+ int type;
+ /* IN (ignored for ..._MULTI_MSI) */
+ int index;
+ /* IN or OUT */
+ int pirq;
+ /* IN - high 16 bits hold segment for ..._MSI_SEG and ..._MULTI_MSI */
+ int bus;
+ /* IN */
+ int devfn;
+ /* IN (also OUT for ..._MULTI_MSI) */
+ int entry_nr;
+ /* IN */
+ vki_uint64_t table_base;
+};
+
+#define VKI_XEN_PHYSDEVOP_unmap_pirq 14
+struct vki_xen_physdev_unmap_pirq {
+ vki_xen_domid_t domid;
+ /* IN */
+ int pirq;
+};
+
+#endif // __VKI_XEN_PHYSDEV_H
+
+/*--------------------------------------------------------------------*/
+/*--- end ---*/
+/*--------------------------------------------------------------------*/
Modified: trunk/include/vki/vki-xen.h
==============================================================================
--- trunk/include/vki/vki-xen.h (original)
+++ trunk/include/vki/vki-xen.h Sun Jun 28 17:57:10 2015
@@ -88,6 +88,7 @@
#include <vki/vki-xen-hvm.h>
#include <vki/vki-xen-tmem.h>
#include <vki/vki-xen-xsm.h>
+#include <vki/vki-xen-physdev.h>
#endif // __VKI_XEN_H
|
|
From: <sv...@va...> - 2015-06-28 16:55:51
|
Author: bart
Date: Sun Jun 28 17:55:45 2015
New Revision: 15384
Log:
xen: Implement the xsm_op hypercall
More recent Xen toolstacks use this for the SID_TO_CONTEXT operation
only, even when XSM is not in use.
XSM is actually an abstraction layer, of which the only current
implementation is FLASK. So this blindly assumes that the backend is
FLASK. Should another XSM backend be invented then we will have to
sort of detecting the correct one.
Signed-off-by: Ian Campbell <ian...@ci...>
Added:
trunk/include/vki/vki-xen-xsm.h
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:55:45 2015
@@ -339,6 +339,53 @@
}
}
+PRE(xsm_op)
+{
+ /* XXX assuming flask, only actual XSM right now */
+ struct vki_xen_flask_op *op = (struct vki_xen_flask_op *)ARG1;
+
+ PRINT("__HYPERVISOR_xsm_op ( %d )", op->cmd);
+
+ /*
+ * Common part of xen_flask_op:
+ * vki_uint32_t cmd;
+ * vki_uint32_t interface_version;
+ */
+ PRE_MEM_READ("__HYPERVISOR_xsm_op", ARG1,
+ sizeof(vki_uint32_t) + sizeof(vki_uint32_t));
+
+ if (!op)
+ return;
+
+ switch (op->interface_version) {
+ case 0x00000001:
+ break;
+ default:
+ bad_intf_version(tid, layout, arrghs, status, flags,
+ "__HYPERVISOR_xsm_op", op->interface_version);
+ return;
+ }
+
+#define PRE_XEN_XSM_OP_READ(_xsm_op, _union, _field) \
+ PRE_MEM_READ("FLASK_" #_xsm_op " u." #_union "." #_field, \
+ (Addr)&op->u._union._field, \
+ sizeof(op->u._union._field))
+
+ switch (op->cmd) {
+ case VKI_FLASK_SID_TO_CONTEXT:
+ PRE_XEN_XSM_OP_READ(SID_TO_CONTEXT, sid_context, sid);
+ PRE_XEN_XSM_OP_READ(SID_TO_CONTEXT, sid_context, size);
+ PRE_XEN_XSM_OP_READ(SID_TO_CONTEXT, sid_context, context.p);
+ break;
+ default:
+ bad_subop(tid, layout, arrghs, status, flags,
+ "__HYPERVISOR_xsm_op", op->cmd);
+ break;
+ }
+#undef __PRE_XEN_XSM_OP_READ
+#undef PRE_XEN_XSM_OP_READ
+}
+
PRE(sched_op)
{
PRINT("__HYPERVISOR_sched_op ( %ld, %lx )", ARG1, ARG2);
@@ -1286,6 +1333,30 @@
POST_MEM_WRITE((Addr)pdone, sizeof(*pdone));
}
+POST(xsm_op)
+{
+ /* XXX assuming flask, only actual XSM right now */
+ struct vki_xen_flask_op *op = (struct vki_xen_flask_op *)ARG1;
+
+ switch (op->interface_version) {
+ case 0x00000001:
+ break;
+ default:
+ return;
+ }
+
+#define POST_XEN_XSM_OP_WRITE(_xsm_op, _union, _field) \
+ POST_MEM_WRITE((Addr)&op->u._union._field, \
+ sizeof(op->u._union._field))
+
+ switch (op->cmd) {
+ case VKI_FLASK_SID_TO_CONTEXT:
+ POST_XEN_XSM_OP_WRITE(SID_TO_CONTEXT, sid_context, size);
+ POST_MEM_WRITE((Addr)op->u.sid_context.context.p,
+ op->u.sid_context.size);
+ }
+}
+
static void post_evtchn_op(ThreadId tid, __vki_u32 cmd, void *arg, int compat)
{
switch (cmd) {
@@ -1911,7 +1982,7 @@
// __VKI_XEN_set_segment_base // 25
HYPXY(__VKI_XEN_mmuext_op, mmuext_op, 2), // 26
- // __VKI_XEN_xsm_op // 27
+ HYPXY(__VKI_XEN_xsm_op, xsm_op, 1), // 27
// __VKI_XEN_nmi_op // 28
HYPXY(__VKI_XEN_sched_op, sched_op, 2), // 29
Added: trunk/include/vki/vki-xen-xsm.h
==============================================================================
--- trunk/include/vki/vki-xen-xsm.h (added)
+++ trunk/include/vki/vki-xen-xsm.h Sun Jun 28 17:55:45 2015
@@ -0,0 +1,68 @@
+#ifndef __VKI_XEN_XSM_H
+#define __VKI_XEN_XSM_H
+
+#define VKI_XEN_FLASK_INTERFACE_VERSION 1
+
+struct vki_xen_flask_sid_context {
+ /* IN/OUT: sid to convert to/from string */
+ vki_uint32_t sid;
+ /* IN: size of the context buffer
+ * OUT: actual size of the output context string
+ */
+ vki_uint32_t size;
+ VKI_XEN_GUEST_HANDLE(char) context;
+};
+
+struct vki_xen_flask_op {
+ vki_uint32_t cmd;
+#define VKI_FLASK_LOAD 1
+#define VKI_FLASK_GETENFORCE 2
+#define VKI_FLASK_SETENFORCE 3
+#define VKI_FLASK_CONTEXT_TO_SID 4
+#define VKI_FLASK_SID_TO_CONTEXT 5
+#define VKI_FLASK_ACCESS 6
+#define VKI_FLASK_CREATE 7
+#define VKI_FLASK_RELABEL 8
+#define VKI_FLASK_USER 9
+#define VKI_FLASK_POLICYVERS 10
+#define VKI_FLASK_GETBOOL 11
+#define VKI_FLASK_SETBOOL 12
+#define VKI_FLASK_COMMITBOOLS 13
+#define VKI_FLASK_MLS 14
+#define VKI_FLASK_DISABLE 15
+#define VKI_FLASK_GETAVC_THRESHOLD 16
+#define VKI_FLASK_SETAVC_THRESHOLD 17
+#define VKI_FLASK_AVC_HASHSTATS 18
+#define VKI_FLASK_AVC_CACHESTATS 19
+#define VKI_FLASK_MEMBER 20
+#define VKI_FLASK_ADD_OCONTEXT 21
+#define VKI_FLASK_DEL_OCONTEXT 22
+#define VKI_FLASK_GET_PEER_SID 23
+#define VKI_FLASK_RELABEL_DOMAIN 24
+ vki_uint32_t interface_version; /* VKI_XEN_FLASK_INTERFACE_VERSION */
+ union {
+ //struct vki_xen_flask_load load;
+ //struct vki_xen_flask_setenforce enforce;
+ /* FLASK_CONTEXT_TO_SID and FLASK_SID_TO_CONTEXT */
+ struct vki_xen_flask_sid_context sid_context;
+ //struct vki_xen_flask_access access;
+ /* FLASK_CREATE, FLASK_RELABEL, FLASK_MEMBER */
+ //struct vki_xen_flask_transition transition;
+ //struct vki_xen_flask_userlist userlist;
+ /* FLASK_GETBOOL, FLASK_SETBOOL */
+ //struct vki_xen_flask_boolean boolean;
+ //struct vki_xen_flask_setavc_threshold setavc_threshold;
+ //struct vki_xen_flask_hash_stats hash_stats;
+ //struct vki_xen_flask_cache_stats cache_stats;
+ /* FLASK_ADD_OCONTEXT, FLASK_DEL_OCONTEXT */
+ //struct vki_xen_flask_ocontext ocontext;
+ //struct vki_xen_flask_peersid peersid;
+ //struct vki_xen_flask_relabel relabel;
+ } u;
+};
+
+#endif // __VKI_XEN_XSM_H
+
+/*--------------------------------------------------------------------*/
+/*--- end ---*/
+/*--------------------------------------------------------------------*/
Modified: trunk/include/vki/vki-xen.h
==============================================================================
--- trunk/include/vki/vki-xen.h (original)
+++ trunk/include/vki/vki-xen.h Sun Jun 28 17:55:45 2015
@@ -87,6 +87,7 @@
#include <vki/vki-xen-version.h>
#include <vki/vki-xen-hvm.h>
#include <vki/vki-xen-tmem.h>
+#include <vki/vki-xen-xsm.h>
#endif // __VKI_XEN_H
|
|
From: <sv...@va...> - 2015-06-28 16:54:05
|
Author: bart
Date: Sun Jun 28 17:53:58 2015
New Revision: 15383
Log:
xen: syswrap XEN_SCHEDOP_remote_shutdown
Signed-off-by: Andrew Cooper <and...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen-schedop.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:53:58 2015
@@ -352,6 +352,10 @@
__PRE_XEN_SCHEDOP_READ(_schedop, vki_xen_ ## _schedop ## _t, _field)
switch (ARG1) {
+ case VKI_XEN_SCHEDOP_remote_shutdown:
+ PRE_XEN_SCHEDOP_READ(remote_shutdown, domain_id);
+ PRE_XEN_SCHEDOP_READ(remote_shutdown, reason);
+ break;
default:
bad_subop(tid, layout, arrghs, status, flags,
@@ -1296,6 +1300,9 @@
POST(sched_op)
{
switch (ARG1) {
+ case VKI_XEN_SCHEDOP_remote_shutdown:
+ /* No outputs */
+ break;
}
}
Modified: trunk/include/vki/vki-xen-schedop.h
==============================================================================
--- trunk/include/vki/vki-xen-schedop.h (original)
+++ trunk/include/vki/vki-xen-schedop.h Sun Jun 28 17:53:58 2015
@@ -10,6 +10,11 @@
#define VKI_XEN_SCHEDOP_poll 3
#define VKI_XEN_SCHEDOP_remote_shutdown 4
+struct vki_xen_remote_shutdown {
+ vki_xen_domid_t domain_id;
+ unsigned int reason;
+};
+typedef struct vki_xen_remote_shutdown vki_xen_remote_shutdown_t;
#define VKI_XEN_SCHEDOP_shutdown_code 5
|
|
From: <sv...@va...> - 2015-06-28 16:52:56
|
Author: bart
Date: Sun Jun 28 17:52:49 2015
New Revision: 15382
Log:
Follow-up for r15381
Added:
trunk/include/vki/vki-xen-schedop.h
Added: trunk/include/vki/vki-xen-schedop.h
==============================================================================
--- trunk/include/vki/vki-xen-schedop.h (added)
+++ trunk/include/vki/vki-xen-schedop.h Sun Jun 28 17:52:49 2015
@@ -0,0 +1,18 @@
+#ifndef __VKI_XEN_SCHED_OP_H
+#define __VKI_XEN_SCHED_OP_H
+
+#define VKI_XEN_SCHEDOP_yield 0
+
+#define VKI_XEN_SCHEDOP_block 1
+
+#define VKI_XEN_SCHEDOP_shutdown 2
+
+#define VKI_XEN_SCHEDOP_poll 3
+
+#define VKI_XEN_SCHEDOP_remote_shutdown 4
+
+#define VKI_XEN_SCHEDOP_shutdown_code 5
+
+#define VKI_XEN_SCHEDOP_watchdog 6
+
+#endif /* __VKI_XEN_SCHED_OP_H */
|
|
From: <sv...@va...> - 2015-06-28 16:48:29
|
Author: bart
Date: Sun Jun 28 17:48:22 2015
New Revision: 15381
Log:
xen: Basic syswrap infrastructure for XEN_sched_op hypercalls
Signed-off-by: Andrew Cooper <and...@ci...>
Signed-off-by: Ian Campbell <ian...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:48:22 2015
@@ -339,6 +339,29 @@
}
}
+PRE(sched_op)
+{
+ PRINT("__HYPERVISOR_sched_op ( %ld, %lx )", ARG1, ARG2);
+ void *arg = (void *)(unsigned long)ARG2;
+
+#define __PRE_XEN_SCHEDOP_READ(_schedop, _type, _field) \
+ PRE_MEM_READ("XEN_SCHEDOP_" # _schedop " " #_field, \
+ (Addr)&((_type*)arg)->_field, \
+ sizeof(((_type*)arg)->_field))
+#define PRE_XEN_SCHEDOP_READ(_schedop, _field) \
+ __PRE_XEN_SCHEDOP_READ(_schedop, vki_xen_ ## _schedop ## _t, _field)
+
+ switch (ARG1) {
+
+ default:
+ bad_subop(tid, layout, arrghs, status, flags,
+ "__HYPERVISOR_sched_op", ARG1);
+ break;
+ }
+#undef __PRE_XEN_SCHEDOP_READ
+#undef PRE_XEN_SCHEDOP_READ
+}
+
static void pre_evtchn_op(ThreadId tid,
SyscallArgLayout* layout,
/*MOD*/SyscallArgs* arrghs,
@@ -1270,6 +1293,12 @@
}
}
+POST(sched_op)
+{
+ switch (ARG1) {
+ }
+}
+
POST(evtchn_op)
{
post_evtchn_op(tid, ARG1, (void *)ARG2, 0);
@@ -1877,7 +1906,7 @@
HYPXY(__VKI_XEN_mmuext_op, mmuext_op, 2), // 26
// __VKI_XEN_xsm_op // 27
// __VKI_XEN_nmi_op // 28
- // __VKI_XEN_sched_op // 29
+ HYPXY(__VKI_XEN_sched_op, sched_op, 2), // 29
// __VKI_XEN_callback_op // 30
// __VKI_XEN_xenoprof_op // 31
Modified: trunk/include/vki/vki-xen.h
==============================================================================
--- trunk/include/vki/vki-xen.h (original)
+++ trunk/include/vki/vki-xen.h Sun Jun 28 17:48:22 2015
@@ -80,6 +80,7 @@
#include <vki/vki-xen-domctl.h>
#include <vki/vki-xen-sysctl.h>
#include <vki/vki-xen-mmuext.h>
+#include <vki/vki-xen-schedop.h>
#include <vki/vki-xen-memory.h>
#include <vki/vki-xen-evtchn.h>
#include <vki/vki-xen-gnttab.h>
|
|
From: <sv...@va...> - 2015-06-28 16:47:19
|
Author: bart
Date: Sun Jun 28 17:47:13 2015
New Revision: 15380
Log:
xen: Implement memory map hypercalls
Signed-off-by: Ian Campbell <ian...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:47:13 2015
@@ -144,6 +144,16 @@
(Addr)&arg->map, sizeof(arg->map));
break;
}
+
+ case VKI_XENMEM_memory_map:
+ case VKI_XENMEM_machine_memory_map: {
+ struct vki_xen_memory_map *arg =
+ (struct vki_xen_memory_map *)ARG2;
+ PRE_MEM_READ("XENMEM_memory_map nr_entries",
+ (Addr)&arg->nr_entries, sizeof(arg->nr_entries));
+ break;
+ }
+
case VKI_XENMEM_increase_reservation:
case VKI_XENMEM_decrease_reservation:
case VKI_XENMEM_populate_physmap:
@@ -1218,6 +1228,16 @@
break;
}
+ case VKI_XENMEM_memory_map:
+ case VKI_XENMEM_machine_memory_map: {
+ struct vki_xen_memory_map *arg =
+ (struct vki_xen_memory_map *)ARG2;
+ POST_MEM_WRITE(arg->nr_entries, sizeof(arg->nr_entries));
+ POST_MEM_WRITE((Addr)arg->buffer.p,
+ arg->nr_entries * 20 /* size of an e820 entry */);
+ break;
+ }
+
case VKI_XENMEM_add_to_physmap: {
struct vki_xen_add_to_physmap *arg =
(struct vki_xen_add_to_physmap *)ARG2;
|
|
From: <sv...@va...> - 2015-06-28 16:46:36
|
Author: bart
Date: Sun Jun 28 17:46:30 2015
New Revision: 15379
Log:
xen: syswrap XENMEM_machphys_compat_mfn_list
XENMEM_machphys_compat_mfn_list is functionally identical to
XENMEM_machphys_mfn_list but returns a different list from Xen.
Signed-off-by: Andrew Cooper <and...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen-memory.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:46:30 2015
@@ -124,7 +124,8 @@
(Addr)ARG2, sizeof(vki_xen_domid_t));
break;
- case VKI_XENMEM_machphys_mfn_list: {
+ case VKI_XENMEM_machphys_mfn_list:
+ case VKI_XENMEM_machphys_compat_mfn_list: {
struct vki_xen_machphys_mfn_list *arg =
(struct vki_xen_machphys_mfn_list *)ARG2;
PRE_MEM_READ("XENMEM_machphys_mfn_list max_extents",
@@ -1207,7 +1208,8 @@
break;
}
- case VKI_XENMEM_machphys_mfn_list: {
+ case VKI_XENMEM_machphys_mfn_list:
+ case VKI_XENMEM_machphys_compat_mfn_list: {
struct vki_xen_machphys_mfn_list *arg =
(struct vki_xen_machphys_mfn_list *)ARG2;
POST_MEM_WRITE((Addr)&arg->nr_extents, sizeof(arg->nr_extents));
Modified: trunk/include/vki/vki-xen-memory.h
==============================================================================
--- trunk/include/vki/vki-xen-memory.h (original)
+++ trunk/include/vki/vki-xen-memory.h Sun Jun 28 17:46:30 2015
@@ -22,6 +22,7 @@
#define VKI_XENMEM_get_sharing_shared_pages 19
#define VKI_XENMEM_access_op 21
#define VKI_XENMEM_claim_pages 24
+#define VKI_XENMEM_machphys_compat_mfn_list 25
struct vki_xen_memory_map {
unsigned int nr_entries;
|
|
From: <sv...@va...> - 2015-06-28 16:45:50
|
Author: bart
Date: Sun Jun 28 17:45:44 2015
New Revision: 15378
Log:
syswrap-xen.c: Make indentation consistent
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:45:44 2015
@@ -1063,63 +1063,63 @@
break;
case VKI_XEN_HVMOP_set_isa_irq_level:
- PRE_XEN_HVMOP_READ(set_isa_irq_level, domid);
- PRE_XEN_HVMOP_READ(set_isa_irq_level, isa_irq);
- PRE_XEN_HVMOP_READ(set_isa_irq_level, level);
- break;
+ PRE_XEN_HVMOP_READ(set_isa_irq_level, domid);
+ PRE_XEN_HVMOP_READ(set_isa_irq_level, isa_irq);
+ PRE_XEN_HVMOP_READ(set_isa_irq_level, level);
+ break;
case VKI_XEN_HVMOP_set_pci_link_route:
- PRE_XEN_HVMOP_READ(set_pci_link_route, domid);
- PRE_XEN_HVMOP_READ(set_pci_link_route, link);
- PRE_XEN_HVMOP_READ(set_pci_link_route, isa_irq);
- break;
+ PRE_XEN_HVMOP_READ(set_pci_link_route, domid);
+ PRE_XEN_HVMOP_READ(set_pci_link_route, link);
+ PRE_XEN_HVMOP_READ(set_pci_link_route, isa_irq);
+ break;
case VKI_XEN_HVMOP_track_dirty_vram: {
- vki_xen_hvm_track_dirty_vram_t *Arg =
- (vki_xen_hvm_track_dirty_vram_t*)ARG2;
- PRE_XEN_HVMOP_READ(track_dirty_vram, domid);
- PRE_XEN_HVMOP_READ(track_dirty_vram, nr);
- if ( Arg->nr ) {
- PRE_XEN_HVMOP_READ(track_dirty_vram, first_pfn);
- PRE_XEN_HVMOP_READ(track_dirty_vram, dirty_bitmap);
- }
- break;
+ vki_xen_hvm_track_dirty_vram_t *Arg =
+ (vki_xen_hvm_track_dirty_vram_t*)ARG2;
+ PRE_XEN_HVMOP_READ(track_dirty_vram, domid);
+ PRE_XEN_HVMOP_READ(track_dirty_vram, nr);
+ if ( Arg->nr ) {
+ PRE_XEN_HVMOP_READ(track_dirty_vram, first_pfn);
+ PRE_XEN_HVMOP_READ(track_dirty_vram, dirty_bitmap);
+ }
+ break;
}
case VKI_XEN_HVMOP_set_mem_type:
- PRE_XEN_HVMOP_READ(set_mem_type, domid);
- PRE_XEN_HVMOP_READ(set_mem_type, hvmmem_type);
- PRE_XEN_HVMOP_READ(set_mem_type, nr);
- PRE_XEN_HVMOP_READ(set_mem_type, first_pfn);
- break;
+ PRE_XEN_HVMOP_READ(set_mem_type, domid);
+ PRE_XEN_HVMOP_READ(set_mem_type, hvmmem_type);
+ PRE_XEN_HVMOP_READ(set_mem_type, nr);
+ PRE_XEN_HVMOP_READ(set_mem_type, first_pfn);
+ break;
case VKI_XEN_HVMOP_set_mem_access:
- PRE_XEN_HVMOP_READ(set_mem_access, domid);
- PRE_XEN_HVMOP_READ(set_mem_access, hvmmem_access);
- PRE_XEN_HVMOP_READ(set_mem_access, first_pfn);
- /* if default access */
- if ( ((vki_xen_hvm_set_mem_access_t*)arg)->first_pfn != ~0ULL)
- PRE_XEN_HVMOP_READ(set_mem_access, nr);
- break;
+ PRE_XEN_HVMOP_READ(set_mem_access, domid);
+ PRE_XEN_HVMOP_READ(set_mem_access, hvmmem_access);
+ PRE_XEN_HVMOP_READ(set_mem_access, first_pfn);
+ /* if default access */
+ if ( ((vki_xen_hvm_set_mem_access_t*)arg)->first_pfn != ~0ULL)
+ PRE_XEN_HVMOP_READ(set_mem_access, nr);
+ break;
case VKI_XEN_HVMOP_get_mem_access:
- PRE_XEN_HVMOP_READ(get_mem_access, domid);
- PRE_XEN_HVMOP_READ(get_mem_access, pfn);
+ PRE_XEN_HVMOP_READ(get_mem_access, domid);
+ PRE_XEN_HVMOP_READ(get_mem_access, pfn);
- PRE_MEM_WRITE("XEN_HVMOP_get_mem_access *hvmmem_access",
- (Addr)&(((vki_xen_hvm_get_mem_access_t*)arg)->hvmmem_access),
- sizeof(vki_uint16_t));
- break;
+ PRE_MEM_WRITE("XEN_HVMOP_get_mem_access *hvmmem_access",
+ (Addr)&(((vki_xen_hvm_get_mem_access_t*)arg)->hvmmem_access),
+ sizeof(vki_uint16_t));
+ break;
case VKI_XEN_HVMOP_inject_trap:
- PRE_XEN_HVMOP_READ(inject_trap, domid);
- PRE_XEN_HVMOP_READ(inject_trap, vcpuid);
- PRE_XEN_HVMOP_READ(inject_trap, vector);
- PRE_XEN_HVMOP_READ(inject_trap, type);
- PRE_XEN_HVMOP_READ(inject_trap, error_code);
- PRE_XEN_HVMOP_READ(inject_trap, insn_len);
- PRE_XEN_HVMOP_READ(inject_trap, cr2);
- break;
+ PRE_XEN_HVMOP_READ(inject_trap, domid);
+ PRE_XEN_HVMOP_READ(inject_trap, vcpuid);
+ PRE_XEN_HVMOP_READ(inject_trap, vector);
+ PRE_XEN_HVMOP_READ(inject_trap, type);
+ PRE_XEN_HVMOP_READ(inject_trap, error_code);
+ PRE_XEN_HVMOP_READ(inject_trap, insn_len);
+ PRE_XEN_HVMOP_READ(inject_trap, cr2);
+ break;
default:
bad_subop(tid, layout, arrghs, status, flags,
|
|
From: <sv...@va...> - 2015-06-28 16:44:27
|
Author: bart
Date: Sun Jun 28 17:44:21 2015
New Revision: 15377
Log:
xen: syswrap XEH_HVMOP_set_pci_intx_level
Signed-off-by: Andrew Cooper <and...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen-hvm.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:44:21 2015
@@ -1054,6 +1054,14 @@
__PRE_XEN_HVMOP_READ(get_param, struct vki_xen_hvm_param, index);
break;
+ case VKI_XEN_HVMOP_set_pci_intx_level:
+ PRE_XEN_HVMOP_READ(set_pci_intx_level, domid);
+ PRE_XEN_HVMOP_READ(set_pci_intx_level, domain);
+ PRE_XEN_HVMOP_READ(set_pci_intx_level, bus);
+ PRE_XEN_HVMOP_READ(set_pci_intx_level, device);
+ PRE_XEN_HVMOP_READ(set_pci_intx_level, level);
+ break;
+
case VKI_XEN_HVMOP_set_isa_irq_level:
PRE_XEN_HVMOP_READ(set_isa_irq_level, domid);
PRE_XEN_HVMOP_READ(set_isa_irq_level, isa_irq);
@@ -1759,6 +1767,7 @@
switch (op) {
case VKI_XEN_HVMOP_set_param:
+ case VKI_XEN_HVMOP_set_pci_intx_level:
case VKI_XEN_HVMOP_set_isa_irq_level:
case VKI_XEN_HVMOP_set_pci_link_route:
case VKI_XEN_HVMOP_set_mem_type:
Modified: trunk/include/vki/vki-xen-hvm.h
==============================================================================
--- trunk/include/vki/vki-xen-hvm.h (original)
+++ trunk/include/vki/vki-xen-hvm.h Sun Jun 28 17:44:21 2015
@@ -10,6 +10,14 @@
vki_uint64_t value; /* IN/OUT */
};
+#define VKI_XEN_HVMOP_set_pci_intx_level 2
+struct vki_xen_hvm_set_pci_intx_level {
+ vki_xen_domid_t domid;
+ vki_uint8_t domain, bus, device, intx;
+ vki_uint8_t level;
+};
+typedef struct vki_xen_hvm_set_pci_intx_level vki_xen_hvm_set_pci_intx_level_t;
+
#define VKI_XEN_HVMOP_set_isa_irq_level 3
struct vki_xen_hvm_set_isa_irq_level {
vki_xen_domid_t domid;
|
|
From: <sv...@va...> - 2015-06-28 16:43:21
|
Author: bart
Date: Sun Jun 28 17:43:14 2015
New Revision: 15376
Log:
xen: syswrap XEN_HVMOP_track_dirty_vram
Signed-off-by: Andrew Cooper <and...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen-hvm.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:43:14 2015
@@ -1066,6 +1066,18 @@
PRE_XEN_HVMOP_READ(set_pci_link_route, isa_irq);
break;
+ case VKI_XEN_HVMOP_track_dirty_vram: {
+ vki_xen_hvm_track_dirty_vram_t *Arg =
+ (vki_xen_hvm_track_dirty_vram_t*)ARG2;
+ PRE_XEN_HVMOP_READ(track_dirty_vram, domid);
+ PRE_XEN_HVMOP_READ(track_dirty_vram, nr);
+ if ( Arg->nr ) {
+ PRE_XEN_HVMOP_READ(track_dirty_vram, first_pfn);
+ PRE_XEN_HVMOP_READ(track_dirty_vram, dirty_bitmap);
+ }
+ break;
+ }
+
case VKI_XEN_HVMOP_set_mem_type:
PRE_XEN_HVMOP_READ(set_mem_type, domid);
PRE_XEN_HVMOP_READ(set_mem_type, hvmmem_type);
Modified: trunk/include/vki/vki-xen-hvm.h
==============================================================================
--- trunk/include/vki/vki-xen-hvm.h (original)
+++ trunk/include/vki/vki-xen-hvm.h Sun Jun 28 17:43:14 2015
@@ -26,6 +26,15 @@
};
typedef struct vki_xen_hvm_set_pci_link_route vki_xen_hvm_set_pci_link_route_t;
+#define VKI_XEN_HVMOP_track_dirty_vram 6
+struct vki_xen_hvm_track_dirty_vram {
+ vki_xen_domid_t domid; /* IN */
+ vki_xen_uint64_aligned_t first_pfn; /* IN */
+ vki_xen_uint64_aligned_t nr; /* IN */
+ VKI_XEN_GUEST_HANDLE_64(vki_uint8) dirty_bitmap; /* OUT */
+};
+typedef struct vki_xen_hvm_track_dirty_vram vki_xen_hvm_track_dirty_vram_t;
+
#define VKI_XEN_HVMOP_set_mem_type 8
struct vki_xen_hvm_set_mem_type {
vki_xen_domid_t domid;
|
|
From: <sv...@va...> - 2015-06-28 16:42:44
|
Author: bart
Date: Sun Jun 28 17:42:38 2015
New Revision: 15375
Log:
xen: implement VKI_XEN_DOMCTL_irq_permission
Signed-off-by: Ian Campbell <ian...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen-domctl.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:42:38 2015
@@ -680,6 +680,11 @@
__PRE_XEN_DOMCTL_READ(settscinfo, tsc_info, info.elapsed_nsec);
break;
+ case VKI_XEN_DOMCTL_irq_permission:
+ PRE_XEN_DOMCTL_READ(irq_permission, pirq);
+ PRE_XEN_DOMCTL_READ(irq_permission, allow_access);
+ break;
+
case VKI_XEN_DOMCTL_iomem_permission:
PRE_XEN_DOMCTL_READ(iomem_permission, first_mfn);
PRE_XEN_DOMCTL_READ(iomem_permission, nr_mfns);
@@ -1453,6 +1458,7 @@
case VKI_XEN_DOMCTL_assign_device:
case VKI_XEN_DOMCTL_deassign_device:
case VKI_XEN_DOMCTL_settscinfo:
+ case VKI_XEN_DOMCTL_irq_permission:
case VKI_XEN_DOMCTL_iomem_permission:
case VKI_XEN_DOMCTL_ioport_permission:
case VKI_XEN_DOMCTL_hypercall_init:
Modified: trunk/include/vki/vki-xen-domctl.h
==============================================================================
--- trunk/include/vki/vki-xen-domctl.h (original)
+++ trunk/include/vki/vki-xen-domctl.h Sun Jun 28 17:42:38 2015
@@ -280,6 +280,12 @@
vki_uint32_t max; /* maximum number of vcpus */
};
+/* XEN_DOMCTL_irq_permission */
+struct vki_xen_domctl_irq_permission {
+ vki_uint8_t pirq;
+ vki_uint8_t allow_access; /* flag to specify enable/disable of IRQ access */
+};
+
struct vki_xen_domctl_iomem_permission {
vki_xen_uint64_aligned_t first_mfn;/* first page (physical page number) in range */
vki_xen_uint64_aligned_t nr_mfns; /* number of pages in range (>0) */
@@ -459,7 +465,7 @@
struct vki_xen_domctl_scheduler_op scheduler_op;
//struct vki_xen_domctl_setdomainhandle setdomainhandle;
//struct vki_xen_domctl_setdebugging setdebugging;
- //struct vki_xen_domctl_irq_permission irq_permission;
+ struct vki_xen_domctl_irq_permission irq_permission;
struct vki_xen_domctl_iomem_permission iomem_permission;
struct vki_xen_domctl_ioport_permission ioport_permission;
struct vki_xen_domctl_hypercall_init hypercall_init;
|
|
From: <sv...@va...> - 2015-06-28 16:42:12
|
Author: bart
Date: Sun Jun 28 17:42:05 2015
New Revision: 15374
Log:
xen: support for XEN_DOMCTL_iomem_permission
Signed-off-by: Ian Campbell <ian...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen-domctl.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:42:05 2015
@@ -680,6 +680,12 @@
__PRE_XEN_DOMCTL_READ(settscinfo, tsc_info, info.elapsed_nsec);
break;
+ case VKI_XEN_DOMCTL_iomem_permission:
+ PRE_XEN_DOMCTL_READ(iomem_permission, first_mfn);
+ PRE_XEN_DOMCTL_READ(iomem_permission, nr_mfns);
+ PRE_XEN_DOMCTL_READ(iomem_permission, allow_access);
+ break;
+
case VKI_XEN_DOMCTL_ioport_permission:
PRE_XEN_DOMCTL_READ(ioport_permission, first_port);
PRE_XEN_DOMCTL_READ(ioport_permission, nr_ports);
@@ -1447,6 +1453,7 @@
case VKI_XEN_DOMCTL_assign_device:
case VKI_XEN_DOMCTL_deassign_device:
case VKI_XEN_DOMCTL_settscinfo:
+ case VKI_XEN_DOMCTL_iomem_permission:
case VKI_XEN_DOMCTL_ioport_permission:
case VKI_XEN_DOMCTL_hypercall_init:
case VKI_XEN_DOMCTL_setvcpucontext:
Modified: trunk/include/vki/vki-xen-domctl.h
==============================================================================
--- trunk/include/vki/vki-xen-domctl.h (original)
+++ trunk/include/vki/vki-xen-domctl.h Sun Jun 28 17:42:05 2015
@@ -280,6 +280,12 @@
vki_uint32_t max; /* maximum number of vcpus */
};
+struct vki_xen_domctl_iomem_permission {
+ vki_xen_uint64_aligned_t first_mfn;/* first page (physical page number) in range */
+ vki_xen_uint64_aligned_t nr_mfns; /* number of pages in range (>0) */
+ vki_uint8_t allow_access; /* allow (!0) or deny (0) access to range? */
+};
+
struct vki_xen_domctl_ioport_permission {
vki_uint32_t first_port; /* IN */
vki_uint32_t nr_ports; /* IN */
@@ -454,7 +460,7 @@
//struct vki_xen_domctl_setdomainhandle setdomainhandle;
//struct vki_xen_domctl_setdebugging setdebugging;
//struct vki_xen_domctl_irq_permission irq_permission;
- //struct vki_xen_domctl_iomem_permission iomem_permission;
+ struct vki_xen_domctl_iomem_permission iomem_permission;
struct vki_xen_domctl_ioport_permission ioport_permission;
struct vki_xen_domctl_hypercall_init hypercall_init;
//struct vki_xen_domctl_arch_setup arch_setup;
|
|
From: <sv...@va...> - 2015-06-28 16:41:13
|
Author: bart
Date: Sun Jun 28 17:41:06 2015
New Revision: 15373
Log:
xen: Handle XEN_DOMCTL_{test_assign,assign,deassign}_device
Signed-off-by: Ian Campbell <ian...@ci...>
Cc: Andrew Cooper <and...@ci...
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen-domctl.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:41:06 2015
@@ -663,6 +663,16 @@
__PRE_XEN_DOMCTL_READ(set_address_size, address_size, size);
break;
+ case VKI_XEN_DOMCTL_test_assign_device:
+ __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device, machine_sbdf);
+ break;
+ case VKI_XEN_DOMCTL_assign_device:
+ __PRE_XEN_DOMCTL_READ(assign_device, assign_device, machine_sbdf);
+ break;
+ case VKI_XEN_DOMCTL_deassign_device:
+ __PRE_XEN_DOMCTL_READ(deassign_device, assign_device, machine_sbdf);
+ break;
+
case VKI_XEN_DOMCTL_settscinfo:
__PRE_XEN_DOMCTL_READ(settscinfo, tsc_info, info.tsc_mode);
__PRE_XEN_DOMCTL_READ(settscinfo, tsc_info, info.gtsc_khz);
@@ -1433,6 +1443,9 @@
case VKI_XEN_DOMCTL_max_mem:
case VKI_XEN_DOMCTL_setvcpuextstate:
case VKI_XEN_DOMCTL_set_address_size:
+ case VKI_XEN_DOMCTL_test_assign_device:
+ case VKI_XEN_DOMCTL_assign_device:
+ case VKI_XEN_DOMCTL_deassign_device:
case VKI_XEN_DOMCTL_settscinfo:
case VKI_XEN_DOMCTL_ioport_permission:
case VKI_XEN_DOMCTL_hypercall_init:
Modified: trunk/include/vki/vki-xen-domctl.h
==============================================================================
--- trunk/include/vki/vki-xen-domctl.h (original)
+++ trunk/include/vki/vki-xen-domctl.h Sun Jun 28 17:41:06 2015
@@ -386,6 +386,10 @@
vki_uint32_t size;
};
+struct vki_xen_domctl_assign_device {
+ vki_uint32_t machine_sbdf; /* machine PCI ID of assigned device */
+};
+
struct vki_xen_domctl_debug_op {
vki_uint32_t op; /* IN */
vki_uint32_t vcpu; /* IN */
@@ -463,7 +467,7 @@
struct vki_xen_domctl_address_size address_size;
//struct vki_xen_domctl_sendtrigger sendtrigger;
//struct vki_xen_domctl_get_device_group get_device_group;
- //struct vki_xen_domctl_assign_device assign_device;
+ struct vki_xen_domctl_assign_device assign_device;
//struct vki_xen_domctl_bind_pt_irq bind_pt_irq;
//struct vki_xen_domctl_memory_mapping memory_mapping;
//struct vki_xen_domctl_ioport_mapping ioport_mapping;
|
|
From: <sv...@va...> - 2015-06-28 16:39:54
|
Author: bart
Date: Sun Jun 28 17:39:47 2015
New Revision: 15372
Log:
xen: Handle XEN_DOMCTL_SHADOW_OP_{GET,SET}_ALLOCATION
Signed-off-by: Ian Campbell <ian...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:39:47 2015
@@ -917,6 +917,7 @@
switch(domctl->u.shadow_op.op)
{
case VKI_XEN_DOMCTL_SHADOW_OP_OFF:
+ case VKI_XEN_DOMCTL_SHADOW_OP_GET_ALLOCATION:
/* No further inputs */
break;
@@ -946,6 +947,10 @@
PRE_XEN_DOMCTL_READ(shadow_op, pages);
break;
+ case VKI_XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION:
+ PRE_XEN_DOMCTL_READ(shadow_op, mb);
+ break;
+
default:
bad_subop(tid, layout, arrghs, status, flags,
"__HYPERVISOR_domctl shadow(10)",
@@ -1665,6 +1670,7 @@
switch(domctl->u.shadow_op.op)
{
case VKI_XEN_DOMCTL_SHADOW_OP_OFF:
+ case VKI_XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION:
/* No outputs */
break;
@@ -1678,6 +1684,10 @@
domctl->u.shadow_op.pages * sizeof(vki_uint8_t));
break;
+ case VKI_XEN_DOMCTL_SHADOW_OP_GET_ALLOCATION:
+ POST_XEN_DOMCTL_WRITE(shadow_op, mb);
+ break;
+
default:
break;
}
|
|
From: <sv...@va...> - 2015-06-28 16:38:46
|
Author: bart
Date: Sun Jun 28 17:38:40 2015
New Revision: 15371
Log:
xen: syswrap XEN_DOMCTL_pin_mem_cacheattr
Signed-off-by: Andrew Cooper <and...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen-domctl.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:38:40 2015
@@ -790,6 +790,12 @@
__PRE_XEN_DOMCTL_READ(setvcpucontext, vcpucontext, ctxt.p);
break;
+ case VKI_XEN_DOMCTL_pin_mem_cacheattr:
+ PRE_XEN_DOMCTL_READ(pin_mem_cacheattr, start);
+ PRE_XEN_DOMCTL_READ(pin_mem_cacheattr, end);
+ PRE_XEN_DOMCTL_READ(pin_mem_cacheattr, type);
+ break;
+
case VKI_XEN_DOMCTL_get_ext_vcpucontext:
switch (domctl->interface_version)
{
@@ -1426,6 +1432,7 @@
case VKI_XEN_DOMCTL_ioport_permission:
case VKI_XEN_DOMCTL_hypercall_init:
case VKI_XEN_DOMCTL_setvcpucontext:
+ case VKI_XEN_DOMCTL_pin_mem_cacheattr:
case VKI_XEN_DOMCTL_set_ext_vcpucontext:
case VKI_XEN_DOMCTL_setnodeaffinity:
case VKI_XEN_DOMCTL_set_cpuid:
Modified: trunk/include/vki/vki-xen-domctl.h
==============================================================================
--- trunk/include/vki/vki-xen-domctl.h (original)
+++ trunk/include/vki/vki-xen-domctl.h Sun Jun 28 17:38:40 2015
@@ -332,6 +332,11 @@
vki_xen_guest_tsc_info_t info; /* IN */
};
+struct vki_xen_domctl_pin_mem_cacheattr {
+ vki_xen_uint64_aligned_t start, end; /* IN */
+ vki_uint32_t type; /* IN */
+};
+
struct vki_xen_domctl_ext_vcpucontext_00000008 {
vki_uint32_t vcpu; /* IN */
@@ -462,7 +467,7 @@
//struct vki_xen_domctl_bind_pt_irq bind_pt_irq;
//struct vki_xen_domctl_memory_mapping memory_mapping;
//struct vki_xen_domctl_ioport_mapping ioport_mapping;
- //struct vki_xen_domctl_pin_mem_cacheattr pin_mem_cacheattr;
+ struct vki_xen_domctl_pin_mem_cacheattr pin_mem_cacheattr;
struct vki_xen_domctl_ext_vcpucontext_00000008 ext_vcpucontext_00000008;
struct vki_xen_domctl_ext_vcpucontext_00000009 ext_vcpucontext_00000009;
//struct vki_xen_domctl_set_target set_target;
|
|
From: <sv...@va...> - 2015-06-28 16:38:00
|
Author: bart
Date: Sun Jun 28 17:37:54 2015
New Revision: 15370
Log:
xen: syswrap XEN_DOMCTL_[gs]et_vcpu_msrs
The XEN_DOMCTL_[gs]et_vcpu_msrs work simiarly to the other get/set pairs,
taking a vcpu, buffer and size. A query with a buffer of NULL is a request
for the maximum size.
Signed-off-by: Andrew Cooper <and...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen-domctl.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:37:54 2015
@@ -971,6 +971,22 @@
PRE_XEN_DOMCTL_READ(debug_op, vcpu);
break;
+ case VKI_XEN_DOMCTL_get_vcpu_msrs:
+ __PRE_XEN_DOMCTL_READ(get_vcpu_msrs, vcpu_msrs, vcpu);
+ __PRE_XEN_DOMCTL_READ(get_vcpu_msrs, vcpu_msrs, msr_count);
+ __PRE_XEN_DOMCTL_READ(get_vcpu_msrs, vcpu_msrs, msrs);
+ break;
+
+ case VKI_XEN_DOMCTL_set_vcpu_msrs:
+ __PRE_XEN_DOMCTL_READ(set_vcpu_msrs, vcpu_msrs, vcpu);
+ __PRE_XEN_DOMCTL_READ(set_vcpu_msrs, vcpu_msrs, msr_count);
+ __PRE_XEN_DOMCTL_READ(set_vcpu_msrs, vcpu_msrs, msrs);
+ PRE_MEM_READ("XEN_DOMCTL_set_vcpu_msrs *u.vcpu_msrs.msrs.p",
+ (Addr)domctl->u.vcpu_msrs.msrs.p,
+ sizeof(vki_xen_domctl_vcpu_msr_t) *
+ domctl->u.vcpu_msrs.msr_count);
+ break;
+
default:
bad_subop(tid, layout, arrghs, status, flags,
"__HYPERVISOR_domctl", domctl->cmd);
@@ -1419,6 +1435,7 @@
case VKI_XEN_DOMCTL_set_max_evtchn:
case VKI_XEN_DOMCTL_cacheflush:
case VKI_XEN_DOMCTL_resumedomain:
+ case VKI_XEN_DOMCTL_set_vcpu_msrs:
case VKI_XEN_DOMCTL_set_access_required:
/* No output fields */
break;
@@ -1658,6 +1675,13 @@
break;
}
break;
+ case VKI_XEN_DOMCTL_get_vcpu_msrs:
+ if (domctl->u.vcpu_msrs.msrs.p)
+ POST_MEM_WRITE((Addr)domctl->u.vcpu_msrs.msrs.p,
+ sizeof(vki_xen_domctl_vcpu_msr_t) *
+ domctl->u.vcpu_msrs.msr_count);
+ break;
+
case VKI_XEN_DOMCTL_mem_event_op:
POST_XEN_DOMCTL_WRITE(mem_event_op, port);
Modified: trunk/include/vki/vki-xen-domctl.h
==============================================================================
--- trunk/include/vki/vki-xen-domctl.h (original)
+++ trunk/include/vki/vki-xen-domctl.h Sun Jun 28 17:37:54 2015
@@ -87,6 +87,8 @@
#define VKI_XEN_DOMCTL_getnodeaffinity 69
#define VKI_XEN_DOMCTL_set_max_evtchn 70
#define VKI_XEN_DOMCTL_cacheflush 71
+#define VKI_XEN_DOMCTL_get_vcpu_msrs 72
+#define VKI_XEN_DOMCTL_set_vcpu_msrs 73
#define VKI_XEN_DOMCTL_gdbsx_guestmemio 1000
#define VKI_XEN_DOMCTL_gdbsx_pausevcpu 1001
#define VKI_XEN_DOMCTL_gdbsx_unpausevcpu 1002
@@ -404,6 +406,20 @@
vki_xen_pfn_t start_pfn, nr_pfns;
};
+struct vki_xen_domctl_vcpu_msr {
+ vki_uint32_t index;
+ vki_uint32_t reserved;
+ vki_xen_uint64_aligned_t value;
+};
+typedef struct vki_xen_domctl_vcpu_msr vki_xen_domctl_vcpu_msr_t;
+DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_vcpu_msr_t);
+
+struct vki_xen_domctl_vcpu_msrs {
+ vki_uint32_t vcpu;
+ vki_uint32_t msr_count;
+ VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_vcpu_msr_t) msrs;
+};
+
struct vki_xen_domctl {
vki_uint32_t cmd;
vki_uint32_t interface_version; /* XEN_DOMCTL_INTERFACE_VERSION */
@@ -457,6 +473,7 @@
#if defined(__i386__) || defined(__x86_64__)
struct vki_xen_domctl_cpuid cpuid;
struct vki_xen_domctl_vcpuextstate vcpuextstate;
+ struct vki_xen_domctl_vcpu_msrs vcpu_msrs;
#endif
struct vki_xen_domctl_set_access_required access_required;
//struct vki_xen_domctl_audit_p2m audit_p2m;
|
|
From: <sv...@va...> - 2015-06-28 16:36:37
|
Author: bart
Date: Sun Jun 28 17:36:30 2015
New Revision: 15369
Log:
xen: syswrap XEN_DOMCTL_[gs]et_ext_vcpustate
The VKI_XEN_DOMCTL_[gs]et_ext_vcpucontext hypercalls have had interface
changes, but are largly just extentions of the existing structure.
Signed-off-by: Andrew Cooper <and...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen-domctl.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:36:30 2015
@@ -790,6 +790,92 @@
__PRE_XEN_DOMCTL_READ(setvcpucontext, vcpucontext, ctxt.p);
break;
+ case VKI_XEN_DOMCTL_get_ext_vcpucontext:
+ switch (domctl->interface_version)
+ {
+ case 0x00000007:
+ case 0x00000008:
+ __PRE_XEN_DOMCTL_READ(get_ext_vcpucontext, ext_vcpucontext_00000008, vcpu);
+ break;
+
+ case 0x00000009:
+ __PRE_XEN_DOMCTL_READ(get_ext_vcpucontext, ext_vcpucontext_00000009, vcpu);
+ break;
+
+ default:
+ VG_(dmsg)("WARNING: VKI_XEN_DOMCTL_get_ext_vcpucontext domctl version %#"
+ PRIx32" not implemented\n", domctl->interface_version);
+ SET_STATUS_Failure(VKI_EINVAL);
+ break;
+ }
+ break;
+
+ case VKI_XEN_DOMCTL_set_ext_vcpucontext:
+ switch (domctl->interface_version)
+ {
+ case 0x00000007:
+ case 0x00000008:
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000008, vcpu);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000008, size);
+#if defined(__i386__) || defined(__x86_64__)
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000008,
+ syscall32_callback_eip);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000008,
+ sysenter_callback_eip);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000008,
+ syscall32_callback_cs);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000008,
+ sysenter_callback_cs);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000008,
+ syscall32_disables_events);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000008,
+ sysenter_disables_events);
+
+ if ( domctl->u.ext_vcpucontext_00000008.size >=
+ offsetof(struct vki_xen_domctl_ext_vcpucontext_00000008, mcg_cap) )
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000008,
+ mcg_cap);
+#endif
+ break;
+
+ case 0x00000009:
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000009, vcpu);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000009, size);
+#if defined(__i386__) || defined(__x86_64__)
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000009,
+ syscall32_callback_eip);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000009,
+ sysenter_callback_eip);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000009,
+ syscall32_callback_cs);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000009,
+ sysenter_callback_cs);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000009,
+ syscall32_disables_events);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000009,
+ sysenter_disables_events);
+
+ if ( domctl->u.ext_vcpucontext_00000009.size >=
+ offsetof(struct vki_xen_domctl_ext_vcpucontext_00000009, caps) )
+ {
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000009,
+ caps);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000009,
+ mci_ctl2_bank0);
+ __PRE_XEN_DOMCTL_READ(set_ext_vcpucontext, ext_vcpucontext_00000009,
+ mci_ctl2_bank1);
+ }
+#endif
+ break;
+
+ default:
+ VG_(dmsg)("WARNING: VKI_XEN_DOMCTL_set_ext_vcpucontext domctl version %#"
+ PRIx32" not implemented\n", domctl->interface_version);
+ SET_STATUS_Failure(VKI_EINVAL);
+ break;
+ }
+ break;
+
case VKI_XEN_DOMCTL_set_cpuid:
PRE_MEM_READ("XEN_DOMCTL_set_cpuid u.cpuid",
(Addr)&domctl->u.cpuid, sizeof(domctl->u.cpuid));
@@ -1324,6 +1410,7 @@
case VKI_XEN_DOMCTL_ioport_permission:
case VKI_XEN_DOMCTL_hypercall_init:
case VKI_XEN_DOMCTL_setvcpucontext:
+ case VKI_XEN_DOMCTL_set_ext_vcpucontext:
case VKI_XEN_DOMCTL_setnodeaffinity:
case VKI_XEN_DOMCTL_set_cpuid:
case VKI_XEN_DOMCTL_unpausedomain:
@@ -1491,6 +1578,58 @@
domctl->u.getpageframeinfo3.num * sizeof(vki_xen_pfn_t));
break;
+ case VKI_XEN_DOMCTL_get_ext_vcpucontext:
+ switch (domctl->interface_version)
+ {
+ case 0x00000007:
+ case 0x00000008:
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000008, size);
+#if defined(__i386__) || defined(__x86_64__)
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000008,
+ syscall32_callback_eip);
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000008,
+ sysenter_callback_eip);
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000008,
+ syscall32_callback_cs);
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000008,
+ sysenter_callback_cs);
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000008,
+ syscall32_disables_events);
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000008,
+ sysenter_disables_events);
+
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000008,
+ mcg_cap);
+#endif
+ break;
+
+ case 0x00000009:
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000009, size);
+#if defined(__i386__) || defined(__x86_64__)
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000009,
+ syscall32_callback_eip);
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000009,
+ sysenter_callback_eip);
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000009,
+ syscall32_callback_cs);
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000009,
+ sysenter_callback_cs);
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000009,
+ syscall32_disables_events);
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000009,
+ sysenter_disables_events);
+
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000009,
+ caps);
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000009,
+ mci_ctl2_bank0);
+ __POST_XEN_DOMCTL_WRITE(get_ext_vcpucontext, ext_vcpucontext_00000009,
+ mci_ctl2_bank1);
+#endif
+ break;
+ }
+ break;
+
case VKI_XEN_DOMCTL_getvcpuextstate:
if (domctl->u.vcpuextstate.buffer.p)
Modified: trunk/include/vki/vki-xen-domctl.h
==============================================================================
--- trunk/include/vki/vki-xen-domctl.h (original)
+++ trunk/include/vki/vki-xen-domctl.h Sun Jun 28 17:36:30 2015
@@ -330,6 +330,44 @@
vki_xen_guest_tsc_info_t info; /* IN */
};
+struct vki_xen_domctl_ext_vcpucontext_00000008 {
+ vki_uint32_t vcpu; /* IN */
+
+ /* IN for XEN_DOMCTL_set_ext_vcpucontext
+ * OUT for XEN_DOMCTL_get_ext_vcpucontext */
+ vki_uint32_t size;
+#if defined(__i386__) || defined(__x86_64__)
+ vki_xen_uint64_aligned_t syscall32_callback_eip;
+ vki_xen_uint64_aligned_t sysenter_callback_eip;
+ vki_uint16_t syscall32_callback_cs;
+ vki_uint16_t sysenter_callback_cs;
+ vki_uint8_t syscall32_disables_events;
+ vki_uint8_t sysenter_disables_events;
+ vki_xen_uint64_aligned_t mcg_cap;
+#endif
+};
+
+struct vki_xen_domctl_ext_vcpucontext_00000009 {
+ vki_uint32_t vcpu; /* IN */
+
+ /* IN for XEN_DOMCTL_set_ext_vcpucontext
+ * OUT for XEN_DOMCTL_get_ext_vcpucontext */
+ vki_uint32_t size;
+#if defined(__i386__) || defined(__x86_64__)
+ vki_xen_uint64_aligned_t syscall32_callback_eip;
+ vki_xen_uint64_aligned_t sysenter_callback_eip;
+ vki_uint16_t syscall32_callback_cs;
+ vki_uint16_t sysenter_callback_cs;
+ vki_uint8_t syscall32_disables_events;
+ vki_uint8_t sysenter_disables_events;
+ vki_uint64_t caps;
+ vki_uint64_t mci_ctl2_bank0;
+ vki_uint64_t mci_ctl2_bank1;
+#endif
+};
+
+/* vki_xen_domctl_ext_vcpucontext_0000000a is the same as 00000009 */
+
struct vki_xen_domctl_vcpuextstate {
vki_uint32_t vcpu;
vki_xen_uint64_aligned_t xfeature_mask;
@@ -409,7 +447,8 @@
//struct vki_xen_domctl_memory_mapping memory_mapping;
//struct vki_xen_domctl_ioport_mapping ioport_mapping;
//struct vki_xen_domctl_pin_mem_cacheattr pin_mem_cacheattr;
- //struct vki_xen_domctl_ext_vcpucontext ext_vcpucontext;
+ struct vki_xen_domctl_ext_vcpucontext_00000008 ext_vcpucontext_00000008;
+ struct vki_xen_domctl_ext_vcpucontext_00000009 ext_vcpucontext_00000009;
//struct vki_xen_domctl_set_target set_target;
//struct vki_xen_domctl_subscribe subscribe;
struct vki_xen_domctl_debug_op debug_op;
|
|
From: <sv...@va...> - 2015-06-28 16:35:19
|
Author: bart
Date: Sun Jun 28 17:35:13 2015
New Revision: 15368
Log:
xen: syswrap XEN_DOMCTL_setvcpuextstate
XEN_DOMCTL_setvcpuextstate reads a vcpu, size and buffer pointer, and reads
size bytes from the buffer. It has no outputs.
Signed-off-by: Andrew Cooper <and...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:35:13 2015
@@ -803,6 +803,15 @@
domctl->u.getpageframeinfo3.num * sizeof(vki_xen_pfn_t));
break;
+ case VKI_XEN_DOMCTL_setvcpuextstate:
+ __PRE_XEN_DOMCTL_READ(setvcpuextstate, vcpuextstate, vcpu);
+ __PRE_XEN_DOMCTL_READ(setvcpuextstate, vcpuextstate, size);
+ __PRE_XEN_DOMCTL_READ(setvcpuextstate, vcpuextstate, buffer);
+ PRE_MEM_READ("XEN_DOMCTL_setvcpuextstate *u.vcpuextstate.buffer.p",
+ (Addr)domctl->u.vcpuextstate.buffer.p,
+ domctl->u.vcpuextstate.size);
+ break;
+
case VKI_XEN_DOMCTL_getvcpuextstate:
__PRE_XEN_DOMCTL_READ(getvcpuextstate, vcpuextstate, vcpu);
__PRE_XEN_DOMCTL_READ(getvcpuextstate, vcpuextstate, xfeature_mask);
@@ -1309,6 +1318,7 @@
case VKI_XEN_DOMCTL_destroydomain:
case VKI_XEN_DOMCTL_pausedomain:
case VKI_XEN_DOMCTL_max_mem:
+ case VKI_XEN_DOMCTL_setvcpuextstate:
case VKI_XEN_DOMCTL_set_address_size:
case VKI_XEN_DOMCTL_settscinfo:
case VKI_XEN_DOMCTL_ioport_permission:
|
|
From: <sv...@va...> - 2015-06-28 16:34:28
|
Author: bart
Date: Sun Jun 28 17:34:20 2015
New Revision: 15367
Log:
xen: Fix XEN_DOMCTL_getvcpuextstate
Xen only writes into the provided buffer if the guest handle was not NULL.
Signed-off-by: Andrew Cooper <and...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:34:20 2015
@@ -1483,10 +1483,9 @@
case VKI_XEN_DOMCTL_getvcpuextstate:
- __POST_XEN_DOMCTL_WRITE(getvcpuextstate, vcpuextstate, xfeature_mask);
- __POST_XEN_DOMCTL_WRITE(getvcpuextstate, vcpuextstate, size);
- POST_MEM_WRITE((Addr)domctl->u.vcpuextstate.buffer.p,
- domctl->u.vcpuextstate.size);
+ if (domctl->u.vcpuextstate.buffer.p)
+ POST_MEM_WRITE((Addr)domctl->u.vcpuextstate.buffer.p,
+ domctl->u.vcpuextstate.size);
break;
case VKI_XEN_DOMCTL_shadow_op:
|
|
From: <sv...@va...> - 2015-06-28 16:33:11
|
Author: bart
Date: Sun Jun 28 17:33:04 2015
New Revision: 15366
Log:
xen: Add domctl interface version 0x0000000a
Signed-off-by: Ian Campbell <ian...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen-domctl.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:33:04 2015
@@ -707,6 +707,10 @@
case VKI_XEN_SCHEDULER_CREDIT2:
PRE_XEN_DOMCTL_READ(scheduler_op, u.credit2.weight);
break;
+ case VKI_XEN_SCHEDULER_RTDS:
+ PRE_XEN_DOMCTL_READ(scheduler_op, u.rtds.period);
+ PRE_XEN_DOMCTL_READ(scheduler_op, u.rtds.budget);
+ break;
case VKI_XEN_SCHEDULER_ARINC653:
break;
}
@@ -714,14 +718,57 @@
break;
case VKI_XEN_DOMCTL_getvcpuaffinity:
- __PRE_XEN_DOMCTL_READ(getvcpuaffinity, vcpuaffinity, vcpu);
+ switch (domctl->interface_version) {
+ case 0x00000007:
+ case 0x00000008:
+ case 0x00000009:
+ __PRE_XEN_DOMCTL_READ(getvcpuaffinity, vcpuaffinity_00000009, vcpu);
+ __PRE_XEN_DOMCTL_READ(getvcpuaffinity, vcpuaffinity_00000009, cpumap.nr_bits);
+ break;
+ case 0x0000000a:
+ __PRE_XEN_DOMCTL_READ(getvcpuaffinity, vcpuaffinity_0000000a, vcpu);
+ if (domctl->u.vcpuaffinity_0000000a.flags & VKI_XEN_VCPUAFFINITY_HARD)
+ __PRE_XEN_DOMCTL_READ(
+ setvcpuaffinity, vcpuaffinity_0000000a, cpumap_hard.nr_bits);
+ if (domctl->u.vcpuaffinity_0000000a.flags & VKI_XEN_VCPUAFFINITY_SOFT)
+ __PRE_XEN_DOMCTL_READ(
+ setvcpuaffinity, vcpuaffinity_0000000a, cpumap_soft.nr_bits);
+ break;
+ }
break;
case VKI_XEN_DOMCTL_setvcpuaffinity:
- __PRE_XEN_DOMCTL_READ(setvcpuaffinity, vcpuaffinity, vcpu);
- PRE_MEM_READ("XEN_DOMCTL_setvcpuaffinity u.vcpuaffinity.cpumap.bitmap",
- (Addr)domctl->u.vcpuaffinity.cpumap.bitmap.p,
- domctl->u.vcpuaffinity.cpumap.nr_bits / 8);
+ switch (domctl->interface_version) {
+ case 0x00000007:
+ case 0x00000008:
+ case 0x00000009:
+ __PRE_XEN_DOMCTL_READ(setvcpuaffinity, vcpuaffinity_00000009, vcpu);
+ __PRE_XEN_DOMCTL_READ(setvcpuaffinity, vcpuaffinity_00000009, cpumap.nr_bits);
+ PRE_MEM_READ("XEN_DOMCTL_setvcpuaffinity u.vcpuaffinity.cpumap.bitmap",
+ (Addr)domctl->u.vcpuaffinity_00000009.cpumap.bitmap.p,
+ domctl->u.vcpuaffinity_00000009.cpumap.nr_bits / 8);
+ break;
+ case 0x0000000a:
+ __PRE_XEN_DOMCTL_READ(setvcpuaffinity, vcpuaffinity_0000000a, vcpu);
+ __PRE_XEN_DOMCTL_READ(setvcpuaffinity, vcpuaffinity_0000000a, flags);
+ if (domctl->u.vcpuaffinity_0000000a.flags & VKI_XEN_VCPUAFFINITY_HARD) {
+ __PRE_XEN_DOMCTL_READ(
+ setvcpuaffinity, vcpuaffinity_0000000a, cpumap_hard.nr_bits);
+ PRE_MEM_READ(
+ "XEN_DOMCTL_setvcpuaffinity u.vcpuaffinity.cpumap_hard.bitmap",
+ (Addr)domctl->u.vcpuaffinity_0000000a.cpumap_hard.bitmap.p,
+ domctl->u.vcpuaffinity_0000000a.cpumap_hard.nr_bits / 8);
+ }
+ if (domctl->u.vcpuaffinity_0000000a.flags & VKI_XEN_VCPUAFFINITY_SOFT) {
+ __PRE_XEN_DOMCTL_READ(
+ setvcpuaffinity, vcpuaffinity_0000000a, cpumap_soft.nr_bits);
+ PRE_MEM_READ(
+ "XEN_DOMCTL_setvcpuaffinity u.vcpuaffinity.cpumap_soft.bitmap",
+ (Addr)domctl->u.vcpuaffinity_0000000a.cpumap_soft.bitmap.p,
+ domctl->u.vcpuaffinity_0000000a.cpumap_soft.nr_bits / 8);
+ }
+ break;
+ }
break;
case VKI_XEN_DOMCTL_getnodeaffinity:
@@ -1266,7 +1313,6 @@
case VKI_XEN_DOMCTL_settscinfo:
case VKI_XEN_DOMCTL_ioport_permission:
case VKI_XEN_DOMCTL_hypercall_init:
- case VKI_XEN_DOMCTL_setvcpuaffinity:
case VKI_XEN_DOMCTL_setvcpucontext:
case VKI_XEN_DOMCTL_setnodeaffinity:
case VKI_XEN_DOMCTL_set_cpuid:
@@ -1342,13 +1388,33 @@
break;
case VKI_XEN_SCHEDULER_ARINC653:
break;
+ case VKI_XEN_SCHEDULER_RTDS:
+ POST_XEN_DOMCTL_WRITE(scheduler_op, u.rtds.period);
+ POST_XEN_DOMCTL_WRITE(scheduler_op, u.rtds.budget);
+ break;
}
}
break;
case VKI_XEN_DOMCTL_getvcpuaffinity:
- POST_MEM_WRITE((Addr)domctl->u.vcpuaffinity.cpumap.bitmap.p,
- domctl->u.vcpuaffinity.cpumap.nr_bits / 8);
+ case VKI_XEN_DOMCTL_setvcpuaffinity: /* Writes back actual result */
+ switch (domctl->interface_version) {
+ case 0x00000007:
+ case 0x00000008:
+ case 0x00000009:
+ POST_MEM_WRITE((Addr)domctl->u.vcpuaffinity_00000009.cpumap.bitmap.p,
+ domctl->u.vcpuaffinity_00000009.cpumap.nr_bits / 8);
+ break;
+ case 0x0000000a:
+ if (domctl->u.vcpuaffinity_0000000a.flags & VKI_XEN_VCPUAFFINITY_HARD)
+ POST_MEM_WRITE(
+ (Addr)domctl->u.vcpuaffinity_0000000a.cpumap_hard.bitmap.p,
+ domctl->u.vcpuaffinity_0000000a.cpumap_hard.nr_bits / 8);
+ if (domctl->u.vcpuaffinity_0000000a.flags & VKI_XEN_VCPUAFFINITY_SOFT)
+ POST_MEM_WRITE(
+ (Addr)domctl->u.vcpuaffinity_0000000a.cpumap_soft.bitmap.p,
+ domctl->u.vcpuaffinity_0000000a.cpumap_soft.nr_bits / 8);
+ }
break;
case VKI_XEN_DOMCTL_getnodeaffinity:
Modified: trunk/include/vki/vki-xen-domctl.h
==============================================================================
--- trunk/include/vki/vki-xen-domctl.h (original)
+++ trunk/include/vki/vki-xen-domctl.h Sun Jun 28 17:33:04 2015
@@ -173,11 +173,20 @@
VKI_XEN_GUEST_HANDLE_64(vki_xen_pfn_t) array; /* IN/OUT */
};
-struct vki_xen_domctl_vcpuaffinity {
+struct vki_xen_domctl_vcpuaffinity_00000009 {
vki_uint32_t vcpu; /* IN */
struct vki_xenctl_bitmap cpumap; /* IN/OUT */
};
+struct vki_xen_domctl_vcpuaffinity_0000000a {
+ vki_uint32_t vcpu; /* IN */
+#define VKI_XEN_VCPUAFFINITY_HARD (1U<<0)
+#define VKI_XEN_VCPUAFFINITY_SOFT (1U<<1)
+ vki_uint32_t flags; /* IN */
+ struct vki_xenctl_bitmap cpumap_hard; /* IN/OUT */
+ struct vki_xenctl_bitmap cpumap_soft; /* IN/OUT */
+};
+
struct vki_xen_domctl_shadow_op_stats {
vki_uint32_t fault_count;
vki_uint32_t dirty_count;
@@ -239,6 +248,7 @@
#define VKI_XEN_SCHEDULER_CREDIT 5
#define VKI_XEN_SCHEDULER_CREDIT2 6
#define VKI_XEN_SCHEDULER_ARINC653 7
+#define VKI_XEN_SCHEDULER_RTDS 8
vki_uint32_t cmd; /* VKI_XEN_DOMCTL_SCHEDOP_* */
#define VKI_XEN_DOMCTL_SCHEDOP_putinfo 0
#define VKI_XEN_DOMCTL_SCHEDOP_getinfo 1
@@ -257,6 +267,10 @@
struct xen_domctl_sched_credit2 {
vki_uint16_t weight;
} credit2;
+ struct xen_domctl_sched_rtds {
+ vki_uint32_t period;
+ vki_uint32_t budget;
+ } rtds;
} u;
};
@@ -366,7 +380,8 @@
//struct vki_xen_domctl_getpageframeinfo2 getpageframeinfo2;
struct vki_xen_domctl_getpageframeinfo3 getpageframeinfo3;
struct vki_xen_domctl_nodeaffinity nodeaffinity;
- struct vki_xen_domctl_vcpuaffinity vcpuaffinity;
+ struct vki_xen_domctl_vcpuaffinity_00000009 vcpuaffinity_00000009;
+ struct vki_xen_domctl_vcpuaffinity_0000000a vcpuaffinity_0000000a;
struct vki_xen_domctl_shadow_op shadow_op;
struct vki_xen_domctl_max_mem max_mem;
struct vki_xen_domctl_vcpucontext vcpucontext;
|
|
From: <sv...@va...> - 2015-06-28 16:32:01
|
Author: bart
Date: Sun Jun 28 17:31:54 2015
New Revision: 15365
Log:
xen: Add support for new sysctl and domctl interface versions
The change causing the sysctl bump is not in an implemented subop yet, so no
change is required. The change causing the domctl bump is in an implemented
subop, but has also been reverted in favor of a different way of performing
the same actions. Therefore, there is no net difference.
Signed-off-by: Andrew Cooper <and...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
trunk/include/vki/vki-xen-domctl.h
trunk/include/vki/vki-xen-sysctl.h
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:31:54 2015
@@ -441,6 +441,7 @@
case 0x00000008:
case 0x00000009:
case 0x0000000a:
+ case 0x0000000b:
break;
default:
bad_intf_version(tid, layout, arrghs, status, flags,
@@ -482,6 +483,7 @@
PRE_XEN_SYSCTL_READ(getdomaininfolist_00000009, buffer);
break;
case 0x0000000a:
+ case 0x0000000b:
PRE_XEN_SYSCTL_READ(getdomaininfolist_0000000a, first_domain);
PRE_XEN_SYSCTL_READ(getdomaininfolist_0000000a, max_domains);
PRE_XEN_SYSCTL_READ(getdomaininfolist_0000000a, buffer);
@@ -583,6 +585,7 @@
case 0x00000007:
case 0x00000008:
case 0x00000009:
+ case 0x0000000a:
break;
default:
bad_intf_version(tid, layout, arrghs, status, flags,
@@ -1107,6 +1110,7 @@
case 0x00000008:
case 0x00000009:
case 0x0000000a:
+ case 0x0000000b:
break;
default:
return;
@@ -1140,6 +1144,7 @@
* sysctl->u.getdomaininfolist_00000009.num_domains);
break;
case 0x0000000a:
+ case 0x0000000b:
POST_XEN_SYSCTL_WRITE(getdomaininfolist_0000000a, num_domains);
POST_MEM_WRITE((Addr)sysctl->u.getdomaininfolist_0000000a.buffer.p,
sizeof(*sysctl->u.getdomaininfolist_0000000a.buffer.p)
@@ -1184,6 +1189,7 @@
POST_XEN_SYSCTL_WRITE(physinfo_00000008, capabilities);
break;
case 0x0000000a:
+ case 0x0000000b:
POST_XEN_SYSCTL_WRITE(physinfo_0000000a, threads_per_core);
POST_XEN_SYSCTL_WRITE(physinfo_0000000a, cores_per_socket);
POST_XEN_SYSCTL_WRITE(physinfo_0000000a, nr_cpus);
@@ -1239,6 +1245,7 @@
case 0x00000007:
case 0x00000008:
case 0x00000009:
+ case 0x0000000a:
break;
default:
return;
@@ -1381,6 +1388,7 @@
POST_XEN_DOMCTL_WRITE(getdomaininfo_00000008, cpupool);
break;
case 0x00000009:
+ case 0x0000000a:
POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, domain);
POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, flags);
POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, tot_pages);
Modified: trunk/include/vki/vki-xen-domctl.h
==============================================================================
--- trunk/include/vki/vki-xen-domctl.h (original)
+++ trunk/include/vki/vki-xen-domctl.h Sun Jun 28 17:31:54 2015
@@ -5,9 +5,10 @@
* The domctl interface is versioned via the interface_version
* field. This structures in this header supports domctl interfaces:
*
- * - 00000007: Xen 4.1
- * - 00000008: Xen 4.2
- * - 00000009: Xen 4.3
+ * - 0x00000007: Xen 4.1
+ * - 0x00000008: Xen 4.2
+ * - 0x00000009: Xen 4.3 & 4.4
+ * - 0x0000000a: Xen 4.5
*
* When adding a new subop be sure to include the variants used by all
* of the above, both here and in syswrap-xen.c
@@ -156,6 +157,8 @@
typedef struct vki_xen_domctl_getdomaininfo_00000009 vki_xen_domctl_getdomaininfo_00000009_t;
DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000009_t);
+/* vki_xen_domctl_getdomaininfo_0000000a is the same as 00000009 */
+
/* Get/set the NUMA node(s) with which the guest has affinity with. */
/* XEN_DOMCTL_setnodeaffinity */
/* XEN_DOMCTL_getnodeaffinity */
Modified: trunk/include/vki/vki-xen-sysctl.h
==============================================================================
--- trunk/include/vki/vki-xen-sysctl.h (original)
+++ trunk/include/vki/vki-xen-sysctl.h Sun Jun 28 17:31:54 2015
@@ -5,9 +5,10 @@
* The sysctl interface is versioned via the interface_version
* field. This structures in this header supports sysctl interfaces:
*
- * - 00000008: Xen 4.1
- * - 00000009: Xen 4.2
- * - 0000000a: Xen 4.3
+ * - 0x00000008: Xen 4.1
+ * - 0x00000009: Xen 4.2
+ * - 0x0000000a: Xen 4.3 & 4.4
+ * - 0x0000000b: Xen 4.5
*
* When adding a new subop be sure to include the variants used by all
* of the above, both here and in syswrap-xen.c
@@ -86,6 +87,8 @@
vki_uint32_t num_domains;
};
+/* vki_xen_sysctl_getdomaininfolist_0000000b is the same as 0000000a */
+
#define VKI_XEN_SYSCTL_CPUPOOL_OP_CREATE 1 /* C */
#define VKI_XEN_SYSCTL_CPUPOOL_OP_DESTROY 2 /* D */
#define VKI_XEN_SYSCTL_CPUPOOL_OP_INFO 3 /* I */
@@ -156,6 +159,8 @@
vki_uint32_t capabilities;
};
+/* vki_xen_sysctl_physinfo_0000000b is the same as 0000000a */
+
struct vki_xen_sysctl_sched_id {
/* OUT variable. */
vki_uint32_t sched_id;
|
|
From: <sv...@va...> - 2015-06-28 16:30:46
|
Author: bart
Date: Sun Jun 28 17:30:36 2015
New Revision: 15364
Log:
xen: refactor the various "version not supported" messages into a single helper
Signed-off-by: Ian Campbell <ian...@ci...>
Signed-off-by: Andrew Cooper <and...@ci...>
Modified:
trunk/coregrind/m_syswrap/syswrap-xen.c
Modified: trunk/coregrind/m_syswrap/syswrap-xen.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-xen.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-xen.c Sun Jun 28 17:30:36 2015
@@ -65,6 +65,28 @@
#define PRE(name) static DEFN_PRE_TEMPLATE(xen, name)
#define POST(name) static DEFN_POST_TEMPLATE(xen, name)
+static void bad_intf_version ( ThreadId tid,
+ SyscallArgLayout* layout,
+ /*MOD*/SyscallArgs* args,
+ /*OUT*/SyscallStatus* status,
+ /*OUT*/UWord* flags,
+ const HChar* hypercall,
+ UWord version)
+{
+ VG_(dmsg)("WARNING: %s version %#lx not supported\n",
+ hypercall, version);
+ if (VG_(clo_verbosity) > 1) {
+ VG_(get_and_pp_StackTrace)(tid, VG_(clo_backtrace_size));
+ }
+ VG_(dmsg)("You may be able to write your own handler.\n");
+ VG_(dmsg)("Read the file README_MISSING_SYSCALL_OR_IOCTL.\n");
+ VG_(dmsg)("Nevertheless we consider this a bug. Please report\n");
+ VG_(dmsg)("it at http://valgrind.org/support/bug_reports.html &\n");
+ VG_(dmsg)("http://wiki.xen.org/wiki/Reporting_Bugs_against_Xen.\n");
+
+ SET_STATUS_Failure(VKI_ENOSYS);
+}
+
static void bad_subop ( ThreadId tid,
SyscallArgLayout* layout,
/*MOD*/SyscallArgs* args,
@@ -421,18 +443,8 @@
case 0x0000000a:
break;
default:
- VG_(dmsg)("WARNING: sysctl version %"PRIx32" not supported\n",
- sysctl->interface_version);
- if (VG_(clo_verbosity) > 1) {
- VG_(get_and_pp_StackTrace)(tid, VG_(clo_backtrace_size));
- }
- VG_(dmsg)("You may be able to write your own handler.\n");
- VG_(dmsg)("Read the file README_MISSING_SYSCALL_OR_IOCTL.\n");
- VG_(dmsg)("Nevertheless we consider this a bug. Please report\n");
- VG_(dmsg)("it at http://valgrind.org/support/bug_reports.html &\n");
- VG_(dmsg)("http://wiki.xen.org/wiki/Reporting_Bugs_against_Xen.\n");
-
- SET_STATUS_Failure(VKI_EINVAL);
+ bad_intf_version(tid, layout, arrghs, status, flags,
+ "__HYPERVISOR_sysctl", sysctl->interface_version);
return;
}
@@ -573,18 +585,8 @@
case 0x00000009:
break;
default:
- VG_(dmsg)("WARNING: domctl version %"PRIx32" not supported\n",
- domctl->interface_version);
- if (VG_(clo_verbosity) > 1) {
- VG_(get_and_pp_StackTrace)(tid, VG_(clo_backtrace_size));
- }
- VG_(dmsg)("You may be able to write your own handler.\n");
- VG_(dmsg)("Read the file README_MISSING_SYSCALL_OR_IOCTL.\n");
- VG_(dmsg)("Nevertheless we consider this a bug. Please report\n");
- VG_(dmsg)("it at http://valgrind.org/support/bug_reports.html &\n");
- VG_(dmsg)("http://wiki.xen.org/wiki/Reporting_Bugs_against_Xen.\n");
-
- SET_STATUS_Failure(VKI_EINVAL);
+ bad_intf_version(tid, layout, arrghs, status, flags,
+ "__HYPERVISOR_domctl", domctl->interface_version);
return;
}
|
|
From: <sv...@va...> - 2015-06-28 04:22:41
|
Author: rhyskidd
Date: Sun Jun 28 05:22:34 2015
New Revision: 15363
Log:
Partial update of OS X related 3_10_BUGSTATUS, due to resolved bug reports.
Modified:
trunk/docs/internals/3_10_BUGSTATUS.txt
Modified: trunk/docs/internals/3_10_BUGSTATUS.txt
==============================================================================
--- trunk/docs/internals/3_10_BUGSTATUS.txt (original)
+++ trunk/docs/internals/3_10_BUGSTATUS.txt Sun Jun 28 05:22:34 2015
@@ -197,14 +197,12 @@
338781 OSX: unable to read debug info
-339745 Valgrind crash when check Marmalade app (OSX 10.?)
- Rhys partially fixed
+339745 Valgrind crash when check Marmalade app
+ WONTFIX Requires 64 bit support in client application Marmalade
341419 Signal handler ucontext_t not filled out correctly on OS X
- Has patch
342635 OS X 10.10 (Yosemite) - missing system calls and fcntl code
- Has patch; -> Rhys?
343306 OS X 10.10: UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option
Partially fixed
|