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
(27) |
3
|
4
|
|
5
|
6
(2) |
7
|
8
|
9
(2) |
10
|
11
|
|
12
|
13
|
14
(12) |
15
(4) |
16
(3) |
17
(2) |
18
(3) |
|
19
(2) |
20
|
21
|
22
(9) |
23
(3) |
24
(2) |
25
(5) |
|
26
(1) |
27
(1) |
28
(6) |
29
(3) |
30
|
31
|
|
|
From: Julian S. <se...@so...> - 2020-01-22 10:40:45
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=16eb4436e2b2c2e6e4fc51520b1ef16607204313 commit 16eb4436e2b2c2e6e4fc51520b1ef16607204313 Author: Julian Seward <js...@ac...> Date: Wed Jan 22 11:39:53 2020 +0100 iselV128Expr_wrk: handle Iex_ITE. This is needed by the recent 'grail' changes. n-i-bz. Diff: --- VEX/priv/host_arm64_isel.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/VEX/priv/host_arm64_isel.c b/VEX/priv/host_arm64_isel.c index eb7630e..4fa50b9 100644 --- a/VEX/priv/host_arm64_isel.c +++ b/VEX/priv/host_arm64_isel.c @@ -3035,10 +3035,9 @@ static HReg iselV128Expr_wrk ( ISelEnv* env, IRExpr* e ) } /* if (e->tag == Iex_Triop) */ - if (0 && e->tag == Iex_ITE) { - /* JRS 2019Nov24: I think this is right, and it is somewhat tested, but - not as much as I'd like. Hence disabled till it can be tested more. */ - // This is pretty feeble. We'd do better to generate BSL here. + if (e->tag == Iex_ITE) { + // This code sequence is pretty feeble. We'd do better to generate BSL + // here. HReg rX = newVRegI(env); ARM64CondCode cc = iselCondCode(env, e->Iex.ITE.cond); |
|
From: Julian S. <se...@so...> - 2020-01-22 10:23:06
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=c82d35f6d67ed34cf20d79f90a7400bd7f83ebad commit c82d35f6d67ed34cf20d79f90a7400bd7f83ebad Author: Julian Seward <js...@ac...> Date: Wed Jan 22 11:21:53 2020 +0100 arm64 front end: add support for 'dc civac', handling it the same as 'dc cvau'. This partially fixes #412377. Diff: --- VEX/priv/guest_arm64_toIR.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c index bee348a..aae3c6f 100644 --- a/VEX/priv/guest_arm64_toIR.c +++ b/VEX/priv/guest_arm64_toIR.c @@ -7247,10 +7247,10 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisResult* dres, UInt insn, /* ------------------ DC_CVAU ------------------ */ /* D5 0B 7B 001 Rt dc cvau, rT + D5 0B 7E 001 Rt dc civac, rT */ - if ((INSN(31,0) & 0xFFFFFFE0) == 0xD50B7B20) { - /* JRS 2019Nov24: should we handle DC_CIVAC the same? - || (INSN(31,0) & 0xFFFFFFE0) == 0xD50B7E20 */ + if ( (INSN(31,0) & 0xFFFFFFE0) == 0xD50B7B20 + || (INSN(31,0) & 0xFFFFFFE0) == 0xD50B7E20) { /* Exactly the same scheme as for IC IVAU, except we observe the dMinLine size, and request an Ijk_FlushDCache instead of Ijk_InvalICache. */ |
|
From: Julian S. <se...@so...> - 2020-01-22 10:04:34
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=dad7f1d7174d2e5e4bc16eac09653c55ab6eb7e5 commit dad7f1d7174d2e5e4bc16eac09653c55ab6eb7e5 Author: Julian Seward <js...@ac...> Date: Wed Jan 22 11:03:54 2020 +0100 Enable sys_adjtimex() on arm-linux. Fixes #412408. Diff: --- coregrind/m_syswrap/syswrap-arm-linux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c index 5e8baf8..93ebc3f 100644 --- a/coregrind/m_syswrap/syswrap-arm-linux.c +++ b/coregrind/m_syswrap/syswrap-arm-linux.c @@ -695,7 +695,7 @@ static SyscallTableEntry syscall_main_table[] = { //zz // (__NR_setdomainname, sys_setdomainname), // 121 */*(?) GENXY(__NR_uname, sys_newuname), // 122 // PLAX_(__NR_modify_ldt, sys_modify_ldt), // 123 -//zz LINXY(__NR_adjtimex, sys_adjtimex), // 124 + LINXY(__NR_adjtimex, sys_adjtimex), // 124 //zz GENXY(__NR_mprotect, sys_mprotect), // 125 LINXY(__NR_sigprocmask, sys_sigprocmask), // 126 |
|
From: Julian S. <se...@so...> - 2020-01-22 09:56:50
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=c88133141a354d65568fb85037abc5e1f74ce46b commit c88133141a354d65568fb85037abc5e1f74ce46b Author: Julian Seward <js...@ac...> Date: Wed Jan 22 10:55:33 2020 +0100 Bug 407376 - Update Xen support to 4.12 (4.13, actually) and add more coverage. Patch from Tamas K Lengyel (ta...@tk...). Diff: --- coregrind/m_syswrap/syswrap-xen.c | 272 ++++++++++++++++++++++++++++++++++++-- include/vki/vki-xen-domctl.h | 108 +++++++++++++-- include/vki/vki-xen-hvm.h | 78 +++++++++++ include/vki/vki-xen-sysctl.h | 29 +++- 4 files changed, 463 insertions(+), 24 deletions(-) diff --git a/coregrind/m_syswrap/syswrap-xen.c b/coregrind/m_syswrap/syswrap-xen.c index f464da5..8cb91b5 100644 --- a/coregrind/m_syswrap/syswrap-xen.c +++ b/coregrind/m_syswrap/syswrap-xen.c @@ -582,6 +582,13 @@ PRE(sysctl) { case 0x00000009: case 0x0000000a: case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: break; default: bad_intf_version(tid, layout, arrghs, status, flags, @@ -624,10 +631,21 @@ PRE(sysctl) { break; case 0x0000000a: case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: PRE_XEN_SYSCTL_READ(getdomaininfolist_0000000a, first_domain); PRE_XEN_SYSCTL_READ(getdomaininfolist_0000000a, max_domains); PRE_XEN_SYSCTL_READ(getdomaininfolist_0000000a, buffer); break; + case 0x00000010: + case 0x00000011: + case 0x00000012: + PRE_XEN_SYSCTL_READ(getdomaininfolist_00000010, first_domain); + PRE_XEN_SYSCTL_READ(getdomaininfolist_00000010, max_domains); + PRE_XEN_SYSCTL_READ(getdomaininfolist_00000010, buffer); + break; default: VG_(dmsg)("WARNING: XEN_SYSCTL_getdomaininfolist for sysctl version " "%"PRIx32" not implemented yet\n", @@ -728,6 +746,11 @@ PRE(domctl) case 0x0000000a: case 0x0000000b: case 0x0000000c: + case 0x0000000d: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: break; default: bad_intf_version(tid, layout, arrghs, status, flags, @@ -778,27 +801,27 @@ PRE(domctl) break; case VKI_XEN_DOMCTL_gethvmcontext_partial: - __PRE_XEN_DOMCTL_READ(gethvmcontext_partial, hvmcontext_partial, type); - __PRE_XEN_DOMCTL_READ(gethvmcontext_partial, hvmcontext_partial, instance); - __PRE_XEN_DOMCTL_READ(gethvmcontext_partial, hvmcontext_partial, buffer); + __PRE_XEN_DOMCTL_READ(gethvmcontext_partial, hvmcontext_partial_00000007, type); + __PRE_XEN_DOMCTL_READ(gethvmcontext_partial, hvmcontext_partial_00000007, instance); + __PRE_XEN_DOMCTL_READ(gethvmcontext_partial, hvmcontext_partial_00000007, buffer); - switch (domctl->u.hvmcontext_partial.type) { + switch (domctl->u.hvmcontext_partial_00000007.type) { case VKI_HVM_SAVE_CODE(CPU): - if ( domctl->u.hvmcontext_partial.buffer.p ) + if ( domctl->u.hvmcontext_partial_00000007.buffer.p ) PRE_MEM_WRITE("XEN_DOMCTL_gethvmcontext_partial *buffer", - (Addr)domctl->u.hvmcontext_partial.buffer.p, + (Addr)domctl->u.hvmcontext_partial_00000007.buffer.p, VKI_HVM_SAVE_LENGTH(CPU)); break; case VKI_HVM_SAVE_CODE(MTRR): - if ( domctl->u.hvmcontext_partial.buffer.p ) + if ( domctl->u.hvmcontext_partial_00000007.buffer.p ) PRE_MEM_WRITE("XEN_DOMCTL_gethvmcontext_partial *buffer", - (Addr)domctl->u.hvmcontext_partial.buffer.p, + (Addr)domctl->u.hvmcontext_partial_00000007.buffer.p, VKI_HVM_SAVE_LENGTH(MTRR)); break; default: bad_subop(tid, layout, arrghs, status, flags, "__HYPERVISOR_domctl_gethvmcontext_partial type", - domctl->u.hvmcontext_partial.type); + domctl->u.hvmcontext_partial_00000007.type); break; } break; @@ -820,6 +843,13 @@ PRE(domctl) __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device_00000007, machine_sbdf); break; case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device_0000000b, dev); __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device_0000000b, flag); switch (domctl->u.assign_device_0000000b.dev) { @@ -850,6 +880,13 @@ PRE(domctl) __PRE_XEN_DOMCTL_READ(assign_device, assign_device_00000007, machine_sbdf); break; case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: __PRE_XEN_DOMCTL_READ(assign_device, assign_device_0000000b, dev); __PRE_XEN_DOMCTL_READ(assign_device, assign_device_0000000b, flag); switch (domctl->u.assign_device_0000000b.dev) { @@ -880,6 +917,13 @@ PRE(domctl) __PRE_XEN_DOMCTL_READ(deassign_device, assign_device_00000007, machine_sbdf); break; case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: __PRE_XEN_DOMCTL_READ(deassign_device, assign_device_0000000b, dev); __PRE_XEN_DOMCTL_READ(deassign_device, assign_device_0000000b, flag); switch (domctl->u.assign_device_0000000b.dev) { @@ -914,6 +958,13 @@ PRE(domctl) __PRE_XEN_DOMCTL_READ(settscinfo, tsc_info_00000007, info.elapsed_nsec); break; case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: __PRE_XEN_DOMCTL_READ(settscinfo, tsc_info_0000000b, tsc_mode); __PRE_XEN_DOMCTL_READ(settscinfo, tsc_info_0000000b, gtsc_khz); __PRE_XEN_DOMCTL_READ(settscinfo, tsc_info_0000000b, incarnation); @@ -989,6 +1040,14 @@ PRE(domctl) __PRE_XEN_DOMCTL_READ(getvcpuaffinity, vcpuaffinity_00000009, cpumap.nr_bits); break; case 0x0000000a: + case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: __PRE_XEN_DOMCTL_READ(getvcpuaffinity, vcpuaffinity_0000000a, vcpu); if (domctl->u.vcpuaffinity_0000000a.flags & VKI_XEN_VCPUAFFINITY_HARD) __PRE_XEN_DOMCTL_READ( @@ -1012,6 +1071,14 @@ PRE(domctl) domctl->u.vcpuaffinity_00000009.cpumap.nr_bits / 8); break; case 0x0000000a: + case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: __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) { @@ -1068,6 +1135,15 @@ PRE(domctl) break; case 0x00000009: + case 0x0000000a: + case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: __PRE_XEN_DOMCTL_READ(get_ext_vcpucontext, ext_vcpucontext_00000009, vcpu); break; @@ -1108,6 +1184,15 @@ PRE(domctl) break; case 0x00000009: + case 0x0000000a: + case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: __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__) @@ -1246,9 +1331,20 @@ PRE(domctl) __PRE_XEN_DOMCTL_READ(mem_event_op, mem_event_op_00000007, mode); break; case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: __PRE_XEN_DOMCTL_READ(vm_event_op, vm_event_op_0000000b, op); __PRE_XEN_DOMCTL_READ(vm_event_op, vm_event_op_0000000b, mode); break; + case 0x00000012: + __PRE_XEN_DOMCTL_READ(vm_event_op, vm_event_op_00000012, op); + __PRE_XEN_DOMCTL_READ(vm_event_op, vm_event_op_00000012, mode); + __PRE_XEN_DOMCTL_READ(vm_event_op, vm_event_op_00000012, u.enable); + break; } break; @@ -1276,6 +1372,11 @@ PRE(domctl) case VKI_XEN_DOMCTL_monitor_op: switch (domctl->interface_version) { case 0x000000b: + case 0x000000c: + case 0x000000d: + case 0x000000e: + case 0x000000f: + case 0x0000010: if (domctl->u.monitor_op_0000000b.op == VKI_XEN_DOMCTL_MONITOR_OP_ENABLE || domctl->u.monitor_op_0000000b.op == VKI_XEN_DOMCTL_MONITOR_OP_DISABLE) { switch (domctl->u.monitor_op_0000000b.event) { @@ -1294,6 +1395,26 @@ PRE(domctl) } break; + case 0x0000011: + case 0x0000012: + if (domctl->u.monitor_op_00000011.op == VKI_XEN_DOMCTL_MONITOR_OP_ENABLE || + domctl->u.monitor_op_00000011.op == VKI_XEN_DOMCTL_MONITOR_OP_DISABLE) { + switch (domctl->u.monitor_op_00000011.event) { + case VKI_XEN_DOMCTL_MONITOR_EVENT_WRITE_CTRLREG: + __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_00000011, u.mov_to_cr); + break; + case VKI_XEN_DOMCTL_MONITOR_EVENT_MOV_TO_MSR: + __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_00000011, u.mov_to_msr); + break; + case VKI_XEN_DOMCTL_MONITOR_EVENT_GUEST_REQUEST: + __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_00000011, u.guest_request); + break; + case VKI_XEN_DOMCTL_MONITOR_OP_GET_CAPABILITIES: + break; + } + } + + break; } break; @@ -1399,6 +1520,38 @@ PRE(hvm_op) PRE_XEN_HVMOP_READ(inject_trap, cr2); break; + case VKI_XEN_HVMOP_altp2m: { + vki_xen_hvm_altp2m_op_t *altp2m_op = (vki_xen_hvm_altp2m_op_t *)arg; + + PRE_XEN_HVMOP_READ(altp2m_op, version); + PRE_XEN_HVMOP_READ(altp2m_op, cmd); + PRE_XEN_HVMOP_READ(altp2m_op, domain); + PRE_XEN_HVMOP_READ(altp2m_op, pad1); + PRE_XEN_HVMOP_READ(altp2m_op, pad2); + + switch (altp2m_op->cmd) { + case VKI_XEN_HVMOP_altp2m_get_domain_state: + case VKI_XEN_HVMOP_altp2m_set_domain_state: + PRE_MEM_READ("XEN_HVMOP_altp2m_op", (Addr)&(altp2m_op->u.domain_state.state), sizeof(vki_uint8_t)); + break; + case VKI_XEN_HVMOP_altp2m_create_p2m: + case VKI_XEN_HVMOP_altp2m_destroy_p2m: + case VKI_XEN_HVMOP_altp2m_switch_p2m: + PRE_MEM_READ("XEN_HVMOP_altp2m_op", (Addr)&(altp2m_op->u.view.view), sizeof(vki_uint16_t)); + PRE_MEM_READ("XEN_HVMOP_altp2m_op", (Addr)&(altp2m_op->u.view.hvmmem_default_access), sizeof(vki_uint16_t)); + break; + case VKI_XEN_HVMOP_altp2m_change_gfn: + PRE_MEM_READ("XEN_HVMOP_altp2m_op", (Addr)&(altp2m_op->u.change_gfn.view), sizeof(vki_uint16_t)); + PRE_MEM_READ("XEN_HVMOP_altp2m_op", (Addr)&(altp2m_op->u.change_gfn.pad1), sizeof(vki_uint16_t)); + PRE_MEM_READ("XEN_HVMOP_altp2m_op", (Addr)&(altp2m_op->u.change_gfn.pad2), sizeof(vki_uint32_t)); + PRE_MEM_READ("XEN_HVMOP_altp2m_op", (Addr)&(altp2m_op->u.change_gfn.old_gfn), sizeof(vki_uint64_t)); + PRE_MEM_READ("XEN_HVMOP_altp2m_op", (Addr)&(altp2m_op->u.change_gfn.new_gfn), sizeof(vki_uint64_t)); + break; + }; + + break; + } + default: bad_subop(tid, layout, arrghs, status, flags, "__HYPERVISOR_hvm_op", op); @@ -1670,6 +1823,13 @@ POST(sysctl) case 0x00000009: case 0x0000000a: case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: break; default: return; @@ -1704,11 +1864,23 @@ POST(sysctl) break; case 0x0000000a: case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: 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) * sysctl->u.getdomaininfolist_0000000a.num_domains); break; + case 0x00000010: + case 0x00000011: + case 0x00000012: + POST_XEN_SYSCTL_WRITE(getdomaininfolist_00000010, num_domains); + POST_MEM_WRITE((Addr)sysctl->u.getdomaininfolist_00000010.buffer.p, + sizeof(*sysctl->u.getdomaininfolist_00000010.buffer.p) + * sysctl->u.getdomaininfolist_00000010.num_domains); + break; } break; @@ -1749,6 +1921,10 @@ POST(sysctl) break; case 0x0000000a: case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: 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); @@ -1763,6 +1939,23 @@ POST(sysctl) POST_XEN_SYSCTL_WRITE(physinfo_0000000a, hw_cap[8]); POST_XEN_SYSCTL_WRITE(physinfo_0000000a, capabilities); break; + case 0x00000010: + case 0x00000011: + case 0x00000012: + POST_XEN_SYSCTL_WRITE(physinfo_00000010, threads_per_core); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, cores_per_socket); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, nr_cpus); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, max_cpu_id); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, nr_nodes); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, max_node_id); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, cpu_khz); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, capabilities); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, total_pages); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, free_pages); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, scrub_pages); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, outstanding_pages); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, max_mfn); + POST_XEN_SYSCTL_WRITE(physinfo_00000010, hw_cap[8]); } break; @@ -1806,6 +1999,13 @@ POST(domctl){ case 0x00000009: case 0x0000000a: case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: break; default: return; @@ -1867,6 +2067,13 @@ POST(domctl){ sizeof(vki_xen_guest_tsc_info_t)); break; case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: __POST_XEN_DOMCTL_WRITE(gettscinfo, tsc_info_0000000b, tsc_mode); __POST_XEN_DOMCTL_WRITE(gettscinfo, tsc_info_0000000b, gtsc_khz); __POST_XEN_DOMCTL_WRITE(gettscinfo, tsc_info_0000000b, incarnation); @@ -1895,10 +2102,10 @@ POST(domctl){ break; case VKI_XEN_DOMCTL_gethvmcontext_partial: - switch (domctl->u.hvmcontext_partial.type) { + switch (domctl->u.hvmcontext_partial_00000007.type) { case VKI_HVM_SAVE_CODE(CPU): - if ( domctl->u.hvmcontext_partial.buffer.p ) - POST_MEM_WRITE((Addr)domctl->u.hvmcontext_partial.buffer.p, + if ( domctl->u.hvmcontext_partial_00000007.buffer.p ) + POST_MEM_WRITE((Addr)domctl->u.hvmcontext_partial_00000007.buffer.p, VKI_HVM_SAVE_LENGTH(CPU)); break; } @@ -1941,6 +2148,14 @@ POST(domctl){ domctl->u.vcpuaffinity_00000009.cpumap.nr_bits / 8); break; case 0x0000000a: + case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: if (domctl->u.vcpuaffinity_0000000a.flags & VKI_XEN_VCPUAFFINITY_HARD) POST_MEM_WRITE( (Addr)domctl->u.vcpuaffinity_0000000a.cpumap_hard.bitmap.p, @@ -1990,6 +2205,14 @@ POST(domctl){ break; case 0x00000009: case 0x0000000a: + case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, domain); POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, flags); POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, tot_pages); @@ -2118,8 +2341,17 @@ POST(domctl){ __POST_XEN_DOMCTL_WRITE(mem_event_op, mem_event_op_00000007, port); break; case 0x0000000b: + case 0x0000000c: + case 0x0000000d: + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: __POST_XEN_DOMCTL_WRITE(vm_event_op, vm_event_op_0000000b, port); break; + case 0x00000012: + __POST_XEN_DOMCTL_WRITE(vm_event_op, vm_event_op_00000012, u.enable.port); + break; } break; @@ -2141,6 +2373,22 @@ POST(domctl){ } break; + case 0x0000011: + if (domctl->u.monitor_op_00000011.op == VKI_XEN_DOMCTL_MONITOR_OP_GET_CAPABILITIES) { + switch(domctl->u.monitor_op_00000011.event) { + case VKI_XEN_DOMCTL_MONITOR_EVENT_WRITE_CTRLREG: + __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_00000011, u.mov_to_cr); + break; + case VKI_XEN_DOMCTL_MONITOR_EVENT_MOV_TO_MSR: + __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_00000011, u.mov_to_msr); + break; + case VKI_XEN_DOMCTL_MONITOR_EVENT_GUEST_REQUEST: + __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_00000011, u.guest_request); + break; + } + } + + break; } break; } diff --git a/include/vki/vki-xen-domctl.h b/include/vki/vki-xen-domctl.h index 6e25c7a..3a544f5 100644 --- a/include/vki/vki-xen-domctl.h +++ b/include/vki/vki-xen-domctl.h @@ -188,6 +188,32 @@ struct vki_xen_domctl_getdomaininfo_00000009 { typedef struct vki_xen_domctl_getdomaininfo_00000009 vki_xen_domctl_getdomaininfo_00000009_t; DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000009_t); +// x86 version only for now +struct vki_xen_arch_domainconfig_00000010 { + vki_uint32_t emulation_flags; +}; + +struct vki_xen_domctl_getdomaininfo_00000010 { + /* OUT variables. */ + vki_xen_domid_t domain; + vki_uint32_t flags; + vki_xen_uint64_aligned_t tot_pages; + vki_xen_uint64_aligned_t max_pages; + vki_xen_uint64_aligned_t outstanding_pages; + vki_xen_uint64_aligned_t shr_pages; + vki_xen_uint64_aligned_t paged_pages; + vki_xen_uint64_aligned_t shared_info_frame; + vki_xen_uint64_aligned_t cpu_time; + vki_uint32_t nr_online_vcpus; + vki_uint32_t max_vcpu_id; + vki_uint32_t ssidref; + vki_xen_domain_handle_t handle; + vki_uint32_t cpupool; + struct vki_xen_arch_domainconfig_00000010 arch; +}; +typedef struct vki_xen_domctl_getdomaininfo_00000010 vki_xen_domctl_getdomaininfo_00000010_t; +DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000010_t); + /* vki_xen_domctl_getdomaininfo_0000000a is the same as 00000009 */ /* Get/set the NUMA node(s) with which the guest has affinity with. */ @@ -376,14 +402,22 @@ struct vki_xen_domctl_hvmcontext { typedef struct vki_xen_domctl_hvmcontext vki_xen_domctl_hvmcontext_t; DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_hvmcontext_t); -struct vki_xen_domctl_hvmcontext_partial { +struct vki_xen_domctl_hvmcontext_partial_00000007 { vki_uint32_t type; /* IN */ vki_uint32_t instance; /* IN */ VKI_XEN_GUEST_HANDLE_64(vki_uint8) buffer; /* IN/OUT buffer */ }; -typedef struct vki_xen_domctl_hvmcontext_partial vki_xen_domctl_hvmcontext_partial_t; -DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_hvmcontext_partial_t); +typedef struct vki_xen_domctl_hvmcontext_partial_00000007 vki_xen_domctl_hvmcontext_partial_00000007_t; +DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_hvmcontext_partial_00000007_t); +struct vki_xen_domctl_hvmcontext_partial_0000000e { + vki_uint32_t type; /* IN */ + vki_uint32_t instance; /* IN */ + vki_xen_uint64_aligned_t bufsz; /* IN */ + VKI_XEN_GUEST_HANDLE_64(vki_uint8) buffer; /* OUT buffer */ +}; +typedef struct vki_xen_domctl_hvmcontext_partial_0000000e vki_xen_domctl_hvmcontext_partial_0000000e_t; +DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_hvmcontext_partial_0000000e_t); struct vki_xen_domctl_pin_mem_cacheattr { vki_xen_uint64_aligned_t start, end; /* IN */ @@ -477,6 +511,19 @@ struct vki_xen_domctl_mem_event_op_00000007 { /* only a name change in 4.6 */ typedef struct vki_xen_domctl_mem_event_op_00000007 vki_xen_domctl_vm_event_op_0000000b; +struct vki_xen_domctl_vm_event_op_00000012 { + vki_uint32_t op; /* IN */ + vki_uint32_t mode; /* IN */ + + union { + struct { + vki_uint32_t port; /* OUT */ + } enable; + + vki_uint32_t version; + } u; +}; + struct vki_xen_domctl_set_access_required { vki_uint8_t access_required; /* IN */ }; @@ -507,12 +554,20 @@ struct vki_xen_domctl_vcpu_msrs { #define VKI_XEN_DOMCTL_MONITOR_OP_ENABLE 0 #define VKI_XEN_DOMCTL_MONITOR_OP_DISABLE 1 #define VKI_XEN_DOMCTL_MONITOR_OP_GET_CAPABILITIES 2 +#define VKI_XEN_DOMCTL_MONITOR_OP_EMULATE_EACH_REP 3 #define VKI_XEN_DOMCTL_MONITOR_EVENT_WRITE_CTRLREG 0 #define VKI_XEN_DOMCTL_MONITOR_EVENT_MOV_TO_MSR 1 #define VKI_XEN_DOMCTL_MONITOR_EVENT_SINGLESTEP 2 #define VKI_XEN_DOMCTL_MONITOR_EVENT_SOFTWARE_BREAKPOINT 3 #define VKI_XEN_DOMCTL_MONITOR_EVENT_GUEST_REQUEST 4 +#define VKI_XEN_DOMCTL_MONITOR_EVENT_DEBUG_EXCEPTION 5 +#define VKI_XEN_DOMCTL_MONITOR_EVENT_CPUID 6 +#define VKI_XEN_DOMCTL_MONITOR_EVENT_PRIVILEGED_CALL 7 +#define VKI_XEN_DOMCTL_MONITOR_EVENT_INTERRUPT 8 +#define VKI_XEN_DOMCTL_MONITOR_EVENT_DESC_ACCESS 9 +#define VKI_XEN_DOMCTL_MONITOR_EVENT_EMUL_UNIMPLEMENTED 10 +#define VKI_XEN_DOMCTL_MONITOR_EVENT_INGUEST_PAGEFAULT 11 struct vki_xen_domctl_monitor_op_0000000b { vki_uint32_t op; /* vki_xen_DOMCTL_MONITOR_OP_* */ @@ -551,26 +606,54 @@ struct vki_xen_domctl_monitor_op_0000000b { } u; }; +struct vki_xen_domctl_monitor_op_00000011 { + vki_uint32_t op; /* vki_xen_DOMCTL_MONITOR_OP_* */ -struct vki_xen_domctl_monitor_op { - vki_uint32_t op; -#define VKI_XEN_DOMCTL_MONITOR_OP_ENABLE 0 -#define VKI_XEN_DOMCTL_MONITOR_OP_DISABLE 1 -#define VKI_XEN_DOMCTL_MONITOR_OP_GET_CAPABILITIES 2 -#define VKI_XEN_DOMCTL_MONITOR_OP_EMULATE_EACH_REP 3 + /* + * When used with ENABLE/DISABLE this has to be set to + * the requested vki_xen_DOMCTL_MONITOR_EVENT_* value. + * With GET_CAPABILITIES this field returns a bitmap of + * events supported by the platform, in the format + * (1 << vki_xen_DOMCTL_MONITOR_EVENT_*). + */ vki_uint32_t event; + + /* + * Further options when issuing vki_xen_DOMCTL_MONITOR_OP_ENABLE. + */ union { struct { + /* Which control register */ vki_uint8_t index; + /* Pause vCPU until response */ vki_uint8_t sync; + /* Send event only on a change of value */ vki_uint8_t onchangeonly; + /* Allignment padding */ + vki_uint8_t pad1; + vki_uint32_t pad2; + /* + * Send event only if the changed bit in the control register + * is not masked. + */ + vki_xen_uint64_aligned_t bitmask; } mov_to_cr; + struct { - vki_uint8_t extended_capture; + vki_uint32_t msr; + vki_uint8_t onchangeonly; } mov_to_msr; + struct { + /* Pause vCPU until response */ vki_uint8_t sync; + vki_uint8_t allow_userspace; } guest_request; + + struct { + /* Pause vCPU until response */ + vki_uint8_t sync; + } debug_exception; } u; }; @@ -609,7 +692,8 @@ struct vki_xen_domctl { struct vki_xen_domctl_tsc_info_0000000b tsc_info_0000000b; //struct vki_xen_domctl_real_mode_area real_mode_area; struct vki_xen_domctl_hvmcontext hvmcontext; - struct vki_xen_domctl_hvmcontext_partial hvmcontext_partial; + struct vki_xen_domctl_hvmcontext_partial_0000000e hvmcontext_partial_00000007; + struct vki_xen_domctl_hvmcontext_partial_0000000e hvmcontext_partial_0000000e; struct vki_xen_domctl_address_size address_size; //struct vki_xen_domctl_sendtrigger sendtrigger; //struct vki_xen_domctl_get_device_group get_device_group; @@ -626,6 +710,7 @@ struct vki_xen_domctl { struct vki_xen_domctl_debug_op debug_op; struct vki_xen_domctl_mem_event_op_00000007 mem_event_op_00000007; vki_xen_domctl_vm_event_op_0000000b vm_event_op_0000000b; + struct vki_xen_domctl_vm_event_op_00000012 vm_event_op_00000012; //struct vki_xen_domctl_mem_sharing_op mem_sharing_op; #if defined(__i386__) || defined(__x86_64__) struct vki_xen_domctl_cpuid cpuid; @@ -642,6 +727,7 @@ struct vki_xen_domctl { //struct vki_xen_domctl_gdbsx_pauseunp_vcpu gdbsx_pauseunp_vcpu; //struct vki_xen_domctl_gdbsx_domstatus gdbsx_domstatus; struct vki_xen_domctl_monitor_op_0000000b monitor_op_0000000b; + struct vki_xen_domctl_monitor_op_00000011 monitor_op_00000011; vki_uint8_t pad[128]; } u; }; diff --git a/include/vki/vki-xen-hvm.h b/include/vki/vki-xen-hvm.h index 050e16d..c6ce0d9 100644 --- a/include/vki/vki-xen-hvm.h +++ b/include/vki/vki-xen-hvm.h @@ -106,6 +106,84 @@ struct vki_xen_hvm_inject_trap { }; typedef struct vki_xen_hvm_inject_trap vki_xen_hvm_inject_trap_t; +#define VKI_XEN_HVMOP_altp2m 25 +#define VKI_XEN_HVMOP_altp2m_get_domain_state 1 +#define VKI_XEN_HVMOP_altp2m_set_domain_state 2 +#define VKI_XEN_HVMOP_altp2m_vcpu_enable_notify 3 +#define VKI_XEN_HVMOP_altp2m_create_p2m 4 +#define VKI_XEN_HVMOP_altp2m_destroy_p2m 5 +#define VKI_XEN_HVMOP_altp2m_switch_p2m 6 +#define VKI_XEN_HVMOP_altp2m_set_mem_access 7 +#define VKI_XEN_HVMOP_altp2m_change_gfn 8 +struct vki_xen_hvm_altp2m_domain_state { + /* IN or OUT variable on/off */ + vki_uint8_t state; +}; +typedef struct vki_xen_hvm_altp2m_domain_state vki_xen_hvm_altp2m_domain_state_t; +DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_hvm_altp2m_domain_state_t); + +struct vki_xen_hvm_altp2m_vcpu_enable_notify { + vki_uint32_t vcpu_id; + vki_uint32_t pad; + /* #VE info area gfn */ + vki_uint64_t gfn; +}; +typedef struct vki_xen_hvm_altp2m_vcpu_enable_notify vki_xen_hvm_altp2m_vcpu_enable_notify_t; +DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_hvm_altp2m_vcpu_enable_notify_t); + +struct vki_xen_hvm_altp2m_view { + /* IN/OUT variable */ + vki_uint16_t view; + /* Create view only: default access type + * NOTE: currently ignored */ + vki_uint16_t hvmmem_default_access; /* xenmem_access_t */ +}; +typedef struct vki_xen_hvm_altp2m_view vki_xen_hvm_altp2m_view_t; +DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_hvm_altp2m_view_t); + +struct vki_xen_hvm_altp2m_set_mem_access { + /* view */ + vki_uint16_t view; + /* Memory type */ + vki_uint16_t hvmmem_access; /* xenmem_access_t */ + vki_uint32_t pad; + /* gfn */ + vki_uint64_t gfn; +}; +typedef struct vki_xen_hvm_altp2m_set_mem_access vki_xen_hvm_altp2m_set_mem_access_t; +DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_hvm_altp2m_set_mem_access_t); + +struct vki_xen_hvm_altp2m_change_gfn { + /* view */ + vki_uint16_t view; + vki_uint16_t pad1; + vki_uint32_t pad2; + /* old gfn */ + vki_uint64_t old_gfn; + /* new gfn, INVALID_GFN (~0UL) means revert */ + vki_uint64_t new_gfn; +}; +typedef struct vki_xen_hvm_altp2m_change_gfn vki_xen_hvm_altp2m_change_gfn_t; +DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_hvm_altp2m_change_gfn_t); + +struct vki_xen_hvm_altp2m_op { + vki_uint32_t version; /* HVMOP_ALTP2M_INTERFACE_VERSION */ + vki_uint32_t cmd; + vki_xen_domid_t domain; + vki_uint16_t pad1; + vki_uint32_t pad2; + union { + struct vki_xen_hvm_altp2m_domain_state domain_state; + struct vki_xen_hvm_altp2m_vcpu_enable_notify enable_notify; + struct vki_xen_hvm_altp2m_view view; + struct vki_xen_hvm_altp2m_set_mem_access set_mem_access; + struct vki_xen_hvm_altp2m_change_gfn change_gfn; + vki_uint8_t pad[64]; + } u; +}; +typedef struct vki_xen_hvm_altp2m_op vki_xen_hvm_altp2m_op_t; +DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_hvm_altp2m_op_t); + #endif // __VKI_XEN_HVM_H /*--------------------------------------------------------------------*/ diff --git a/include/vki/vki-xen-sysctl.h b/include/vki/vki-xen-sysctl.h index 8f4eac1..5f68b0e 100644 --- a/include/vki/vki-xen-sysctl.h +++ b/include/vki/vki-xen-sysctl.h @@ -87,6 +87,15 @@ struct vki_xen_sysctl_getdomaininfolist_0000000a { vki_uint32_t num_domains; }; +struct vki_xen_sysctl_getdomaininfolist_00000010 { + /* IN variables. */ + vki_xen_domid_t first_domain; + vki_uint32_t max_domains; + VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_getdomaininfo_00000010_t) buffer; + /* OUT variables. */ + vki_uint32_t num_domains; +}; + /* vki_xen_sysctl_getdomaininfolist_0000000b is the same as 0000000a */ #define VKI_XEN_SYSCTL_CPUPOOL_OP_CREATE 1 /* C */ @@ -159,7 +168,23 @@ struct vki_xen_sysctl_physinfo_0000000a { vki_uint32_t capabilities; }; -/* vki_xen_sysctl_physinfo_0000000b is the same as 0000000a */ +struct vki_xen_sysctl_physinfo_00000010 { + vki_uint32_t threads_per_core; + vki_uint32_t cores_per_socket; + vki_uint32_t nr_cpus; /* # CPUs currently online */ + vki_uint32_t max_cpu_id; /* Largest possible CPU ID on this host */ + vki_uint32_t nr_nodes; /* # nodes currently online */ + vki_uint32_t max_node_id; /* Largest possible node ID on this host */ + vki_uint32_t cpu_khz; + vki_uint32_t capabilities; + vki_xen_uint64_aligned_t total_pages; + vki_xen_uint64_aligned_t free_pages; + vki_xen_uint64_aligned_t scrub_pages; + vki_xen_uint64_aligned_t outstanding_pages; + vki_xen_uint64_aligned_t max_mfn; + vki_uint32_t hw_cap[8]; + +}; struct vki_xen_sysctl_sched_id { /* OUT variable. */ @@ -174,6 +199,7 @@ struct vki_xen_sysctl { //struct vki_xen_sysctl_tbuf_op tbuf_op; struct vki_xen_sysctl_physinfo_00000008 physinfo_00000008; struct vki_xen_sysctl_physinfo_0000000a physinfo_0000000a; + struct vki_xen_sysctl_physinfo_00000010 physinfo_00000010; struct vki_xen_sysctl_topologyinfo topologyinfo; struct vki_xen_sysctl_numainfo numainfo; struct vki_xen_sysctl_sched_id sched_id; @@ -181,6 +207,7 @@ struct vki_xen_sysctl { struct vki_xen_sysctl_getdomaininfolist_00000008 getdomaininfolist_00000008; struct vki_xen_sysctl_getdomaininfolist_00000009 getdomaininfolist_00000009; struct vki_xen_sysctl_getdomaininfolist_0000000a getdomaininfolist_0000000a; + struct vki_xen_sysctl_getdomaininfolist_00000010 getdomaininfolist_00000010; struct vki_xen_sysctl_debug_keys debug_keys; //struct vki_xen_sysctl_getcpuinfo getcpuinfo; //struct vki_xen_sysctl_availheap availheap; |
|
From: Julian S. <se...@so...> - 2020-01-22 09:46:45
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=685247b67a6104b71131de6ae6b2e455786a83ad commit 685247b67a6104b71131de6ae6b2e455786a83ad Author: Julian Seward <js...@ac...> Date: Wed Jan 22 10:45:40 2020 +0100 Bug 416464 - Handle ioctl PR_CAPBSET_READ/DROP. Patch from Stefan Bruens (ste...@rw...). Diff: --- coregrind/m_syswrap/syswrap-linux.c | 6 +++++ include/vki/vki-linux.h | 45 +++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index d04a081..bc09628 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -1524,6 +1524,12 @@ PRE(sys_prctl) PRE_REG_READ2(int, "prctl", int, option, int, mode); } break; + case VKI_PR_CAPBSET_READ: + PRE_REG_READ2(int, "prctl", int, option, int, capability); + break; + case VKI_PR_CAPBSET_DROP: + PRE_REG_READ2(int, "prctl", int, option, int, capability); + break; default: PRE_REG_READ5(long, "prctl", int, option, unsigned long, arg2, unsigned long, arg3, diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h index 91600db..8b40b26 100644 --- a/include/vki/vki-linux.h +++ b/include/vki/vki-linux.h @@ -2607,8 +2607,53 @@ struct vki_vt_consize { #define VKI_PR_SET_SECCOMP 22 +#define VKI_PR_CAPBSET_READ 23 +#define VKI_PR_CAPBSET_DROP 24 + +#define VKI_PR_GET_TSC 25 +#define VKI_PR_SET_TSC 26 + +#define VKI_PR_GET_SECUREBITS 27 +#define VKI_PR_SET_SECUREBITS 28 + +#define VKI_PR_SET_TIMERSLACK 29 +#define VKI_PR_GET_TIMERSLACK 30 + +#define VKI_PR_TASK_PERF_EVENTS_DISABLE 31 +#define VKI_PR_TASK_PERF_EVENTS_ENABLE 32 + +#define VKI_PR_MCE_KILL 33 +#define VKI_PR_MCE_KILL_GET 34 + #define VKI_PR_SET_PTRACER 0x59616d61 +#define VKI_PR_SET_CHILD_SUBREAPER 36 +#define VKI_PR_GET_CHILD_SUBREAPER 37 + +#define VKI_PR_SET_NO_NEW_PRIVS 38 +#define VKI_PR_GET_NO_NEW_PRIVS 39 + +#define VKI_PR_GET_TID_ADDRESS 40 + +#define VKI_PR_SET_THP_DISABLE 41 +#define VKI_PR_GET_THP_DISABLE 42 + +#define VKI_PR_MPX_ENABLE_MANAGEMENT 43 +#define VKI_PR_MPX_DISABLE_MANAGEMENT 44 + +#define VKI_PR_SET_FP_MODE 45 +#define VKI_PR_GET_FP_MODE 46 + +#define VKI_PR_CAP_AMBIENT 47 + +#define VKI_PR_SVE_SET_VL 50 +#define VKI_PR_SVE_GET_VL 51 +#define VKI_PR_GET_SPECULATION_CTRL 52 +#define VKI_PR_SET_SPECULATION_CTRL 53 +#define VKI_PR_PAC_RESET_KEYS 54 +#define VKI_PR_SET_TAGGED_ADDR_CTRL 55 +#define VKI_PR_GET_TAGGED_ADDR_CTRL 56 + //---------------------------------------------------------------------- // From linux-2.6.19/include/linux/usbdevice_fs.h //---------------------------------------------------------------------- |
|
From: Julian S. <se...@so...> - 2020-01-22 09:34:05
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=3542be5bdc706b1a7d5d080ea01e81d4791e20b4 commit 3542be5bdc706b1a7d5d080ea01e81d4791e20b4 Author: Julian Seward <js...@ac...> Date: Wed Jan 22 10:32:31 2020 +0100 Bug 385386 - Assertion failed "szB >= CACHE_ENTRY_SIZE" on m_debuginfo/image.c:517. Patch from Reimar Doeffinger (kd...@re...). Diff: --- coregrind/m_debuginfo/image.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/coregrind/m_debuginfo/image.c b/coregrind/m_debuginfo/image.c index c08b978..acb0952 100644 --- a/coregrind/m_debuginfo/image.c +++ b/coregrind/m_debuginfo/image.c @@ -509,10 +509,10 @@ static UInt alloc_CEnt ( DiImage* img, SizeT szB, Bool fromC ) return entNo; } -static void realloc_CEnt ( DiImage* img, UInt entNo, SizeT szB ) +static void realloc_CEnt ( DiImage* img, UInt entNo, SizeT szB, Bool fromC ) { vg_assert(img != NULL); - vg_assert(szB >= CACHE_ENTRY_SIZE); + vg_assert(fromC || szB >= CACHE_ENTRY_SIZE); vg_assert(is_sane_CEnt("realloc_CEnt-pre", img, entNo)); img->ces[entNo] = ML_(dinfo_realloc)("di.realloc_CEnt.1", img->ces[entNo], @@ -768,7 +768,7 @@ static UChar get_slowcase ( DiImage* img, DiOffT off ) } vg_assert(i >= 0 && i < CACHE_N_ENTRIES); - realloc_CEnt(img, i, size); + realloc_CEnt(img, i, size, /*fromC?*/cslc != NULL); img->ces[i]->size = size; img->ces[i]->used = 0; if (cslc == NULL) { |
|
From: Julian S. <se...@so...> - 2020-01-22 08:32:28
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=6e0573777c487e83d5fbd2fd764b041e59784766 commit 6e0573777c487e83d5fbd2fd764b041e59784766 Author: Julian Seward <js...@ac...> Date: Wed Jan 22 09:26:43 2020 +0100 Bug 415757 - vex x86->IR: unhandled instruction bytes: 0x66 0xF 0xCE (bswapw). Implement bswapw, even though the instruction does not officially exist. Patch from Alex Henrie (ale...@gm...). Diff: --- VEX/priv/guest_x86_toIR.c | 24 +++++++++++++++--------- none/tests/x86/Makefile.am | 2 ++ none/tests/x86/bswapw.c | 31 +++++++++++++++++++++++++++++++ none/tests/x86/bswapw.stderr.exp | 0 none/tests/x86/bswapw.stdout.exp | 6 ++++++ none/tests/x86/bswapw.vgtest | 2 ++ 6 files changed, 56 insertions(+), 9 deletions(-) diff --git a/VEX/priv/guest_x86_toIR.c b/VEX/priv/guest_x86_toIR.c index 01bcc8a..5d6e6dc 100644 --- a/VEX/priv/guest_x86_toIR.c +++ b/VEX/priv/guest_x86_toIR.c @@ -14676,15 +14676,21 @@ DisResult disInstr_X86_WRK ( case 0xCD: case 0xCE: case 0xCF: /* BSWAP %edi */ - /* AFAICS from the Intel docs, this only exists at size 4. */ - if (sz != 4) goto decode_failure; - - t1 = newTemp(Ity_I32); - assign( t1, getIReg(4, opc-0xC8) ); - t2 = math_BSWAP(t1, Ity_I32); - - putIReg(4, opc-0xC8, mkexpr(t2)); - DIP("bswapl %s\n", nameIReg(4, opc-0xC8)); + /* According to the Intel and AMD docs, 16-bit BSWAP is undefined. + * However, the result of a 16-bit BSWAP is always zero in every Intel + * and AMD CPU, and some software depends on this behavior. */ + if (sz == 2) { + putIReg(2, opc-0xC8, mkU16(0)); + DIP("bswapw %s\n", nameIReg(2, opc-0xC8)); + } else if (sz == 4) { + t1 = newTemp(Ity_I32); + assign( t1, getIReg(4, opc-0xC8) ); + t2 = math_BSWAP(t1, Ity_I32); + putIReg(4, opc-0xC8, mkexpr(t2)); + DIP("bswapl %s\n", nameIReg(4, opc-0xC8)); + } else { + goto decode_failure; + } break; /* =-=-=-=-=-=-=-=-=- BT/BTS/BTR/BTC =-=-=-=-=-=-= */ diff --git a/none/tests/x86/Makefile.am b/none/tests/x86/Makefile.am index bc9615e..4086cd8 100644 --- a/none/tests/x86/Makefile.am +++ b/none/tests/x86/Makefile.am @@ -35,6 +35,7 @@ EXTRA_DIST = \ aad_aam.stdout.exp aad_aam.stderr.exp aad_aam.vgtest \ badseg.stderr.exp badseg.stdout.exp badseg.stdout.exp-solaris \ badseg.vgtest \ + bswapw.stderr.exp bswapw.stdout.exp bswapw.vgtest \ bt_everything.stderr.exp bt_everything.stdout.exp bt_everything.vgtest \ bt_literal.stderr.exp bt_literal.stdout.exp bt_literal.vgtest \ bug125959-x86.stderr.exp bug125959-x86.stdout.exp bug125959-x86.vgtest \ @@ -85,6 +86,7 @@ check_PROGRAMS = \ aad_aam \ allexec \ badseg \ + bswapw \ bt_everything \ bt_literal \ bug125959-x86 \ diff --git a/none/tests/x86/bswapw.c b/none/tests/x86/bswapw.c new file mode 100644 index 0000000..adb0bf6 --- /dev/null +++ b/none/tests/x86/bswapw.c @@ -0,0 +1,31 @@ + +#include <stdio.h> + +typedef unsigned int UInt; + +int main ( void ) +{ + +#define GO16(REG,VALUE) \ + value = VALUE; \ + __asm__ __volatile__( \ + "pushl %%" REG " \n\t" \ + "movl 0(" "%0" "), %%" REG " \n\t" \ + ".byte 0x66 \n\t" "bswapl %%" REG "\n\t" \ + "movl %%" REG ", 0(" "%0" ") \n\t" \ + "popl %%" REG "\n" \ + : : "r" (&value) : REG, "memory", "cc" \ + ); \ + printf("0x%08x\n", value) + + UInt value; + GO16("eax", 0x12345678); + GO16("ebx", 0x23456789); + GO16("ecx", 0x3456789a); + GO16("edx", 0x456789ab); + GO16("esi", 0x56789abc); + GO16("edi", 0x6789abcd); + //GO16("ebp", 0x789abcde); // The compiler complains + + return 0; +} diff --git a/none/tests/x86/bswapw.stderr.exp b/none/tests/x86/bswapw.stderr.exp new file mode 100644 index 0000000..e69de29 diff --git a/none/tests/x86/bswapw.stdout.exp b/none/tests/x86/bswapw.stdout.exp new file mode 100644 index 0000000..a59b9a0 --- /dev/null +++ b/none/tests/x86/bswapw.stdout.exp @@ -0,0 +1,6 @@ +0x12340000 +0x23450000 +0x34560000 +0x45670000 +0x56780000 +0x67890000 diff --git a/none/tests/x86/bswapw.vgtest b/none/tests/x86/bswapw.vgtest new file mode 100644 index 0000000..0d2d920 --- /dev/null +++ b/none/tests/x86/bswapw.vgtest @@ -0,0 +1,2 @@ +prog: bswapw +vgopts: -q |
|
From: Paul F. <pj...@wa...> - 2020-01-22 08:15:40
|
> On 19 Jan 2020, at 16:04, John Reiser <jr...@bi...> wrote: > >> ==== SB 2822 (evchecks 301498) [tid 1] 0x1005f5ecb __pthread_init+898 /usr/lib/system/libsystem_pthread.dylib+0xecb >> 0x1005F5ECB: call 0x1005FD7A6 >> 0x1005FD7A6: leaq 2759(%rip), %rcx >> 0x1005FD7AD: xorl %eax,%eax >> 0x1005FD7AF: movq %rcx,11002(%rip) >> 0x1005FD7B6: movq %rax,11043(%rip) >> 0x1005FD7BD: ud2 >> ==79936== valgrind: Unrecognised instruction at address 0x1005fd7bd. >> ==80006== at 0x1005FD7BD: __pthread_init.cold.2 (in /usr/lib/system/libsystem_pthread.dylib) > > The pthread library has detected an impossible situation regarding system calls, > and this is the calling sequence to report the fatal error to MacOS. > The bad emulation happened some time ago. > > See https://bugs.kde.org/show_bug.cgi?id=383723#c23 of 2.5 years ago where a similar ud2 > was found to result from an incomplete emulation of kevent_qos syscall. Hmm. In this case I don’t think that the open source Darwin code is going to help much. Perhaps now macOS is doing some chroot shenanigans, like iOS? A+ Paul |
|
From: Julian S. <se...@so...> - 2020-01-22 08:09:28
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=95a44677c188733b8c6fce8595defff9fd2e03e5 commit 95a44677c188733b8c6fce8595defff9fd2e03e5 Author: Julian Seward <js...@ac...> Date: Wed Jan 22 09:08:54 2020 +0100 Update bug lists. Diff: --- NEWS | 1 + docs/internals/3_15_BUGSTATUS.txt | 32 +++++++++++++++++++++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index dedbfb6..b9973bc 100644 --- a/NEWS +++ b/NEWS @@ -86,6 +86,7 @@ where XXXXXX is the bug number as listed below. 409141 Valgrind hangs when SIGKILLed 409206 Support for Linux PPS and PTP ioctls 409367 exit_group() after signal to thread waiting in futex() causes hangs +409429 amd64: recognize 'cmpeq' variants as a dependency breaking idiom 409780 References to non-existent configure.in 410556 Add support for BLKIO{MIN,OPT} and BLKALIGNOFF ioctls 410599 Non-deterministic behaviour of pth_self_kill_15_other test diff --git a/docs/internals/3_15_BUGSTATUS.txt b/docs/internals/3_15_BUGSTATUS.txt index 778053f..0716435 100644 --- a/docs/internals/3_15_BUGSTATUS.txt +++ b/docs/internals/3_15_BUGSTATUS.txt @@ -36,6 +36,12 @@ of 3.15.0. It doesn't carry over bugs from earlier versions. 415621 epoll_ctl reports for uninitialized padding * maybe an inaccurate wrapper; may be easy to fix? +416285 Use prlimit64 in VG_(getrlimit) and VG_(setrlimit) + * HOST-SIDE syscall; may become important + +416464 Fix false reports for uninitialized memory for PR_CAPBSET_READ/DROP + * Has patch; should land + === KernelInterface/OS X =============================================== 407933 VgTs_Runnable syscall mach:50 (lwpid 771) @@ -52,6 +58,8 @@ of 3.15.0. It doesn't carry over bugs from earlier versions. 413410 Mac Os 10.15 valgrind 3.15.0 (== 412745 ?) +416436 Unrecognised instruction in (__pthread_init.cold.2) macOS 10.15 + === MPI ================================================================ 413251 Compilation error using GCC 7.4.0 & OpenMPI 4.0.2 @@ -86,10 +94,6 @@ of 3.15.0. It doesn't carry over bugs from earlier versions. 407589 Add support for C11 aligned_alloc() and GNU reallocarray() * Missing allocation intercepts? -409429 False positives at unexpected location due to failure to recognize - cmpeq as a dependency breaking idiom (fixed in grail? check this) - * In grail: 96de5118f5332ae145912ebe91b8fa143df74b8d - (but not merged from it; needs doing separately) 415141 Possible leak with calling __libc_freeres before all thread's tid_addresses are cleared @@ -148,7 +152,14 @@ of 3.15.0. It doesn't carry over bugs from earlier versions. === VEX/other ========================================================== === VEX/ppc ============================================================ === VEX/s390x ========================================================== + +416301 s390x: "compare and signal" not supported + * Potentially important (??) + === VEX/x86 ============================================================ + +415757 vex x86->IR: 0x66 0xF 0xCE 0x4F (bswapw) + === zz_other =========================================================== 414278 VG_(memcpy) used for overlapping moves @@ -180,7 +191,10 @@ of 3.15.0. It doesn't carry over bugs from earlier versions. === zz_other/x86 ======================================================= --- Sat 28 Dec 10:39:06 CET 2019 +-- Wed 22 Jan 08:57:09 CET 2020 + + +================== Extras (not new) 319393 bad rounding in cvtsi2ss instruction @@ -190,3 +204,11 @@ apply included fixes for Xen 4.6/4.7/4.8/4.9/4.10/4.11/4.12 390553 ? Can we get rid of exp-sgcheck now? Very large executable support -- adjust tool load address? Status? + +statx hacks for Rust, Ryan Cummins, dev@, 21 Dec 2019 ? + +port the ZF-after-BTx fixes over to x86? + +Bug 385386 - Assertion failed "szB >= CACHE_ENTRY_SIZE" on +m_debuginfo/image.c:517 +There is a patch which seems plausible. Check and apply. |