|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 38/39] arm/xen-access: Extend xen-access for altp2m on ARM
Signed-off-by: Sergej Proskurin <proskurin@xxxxxxxxxxxxx>
Acked-by: Razvan Cojocaru <rcojocaru@xxxxxxxxxxxxxxx>
---
Cc: Razvan Cojocaru <rcojocaru@xxxxxxxxxxxxxxx>
Cc: Tamas K Lengyel <tamas@xxxxxxxxxxxxx>
Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
---
tools/tests/xen-access/xen-access.c | 33 ++++++++++++++++++++-------------
1 file changed, 20 insertions(+), 13 deletions(-)
diff --git a/tools/tests/xen-access/xen-access.c
b/tools/tests/xen-access/xen-access.c
index 1e69e25a16..481337cacd 100644
--- a/tools/tests/xen-access/xen-access.c
+++ b/tools/tests/xen-access/xen-access.c
@@ -362,10 +362,11 @@ void usage(char* progname)
{
fprintf(stderr, "Usage: %s [-m] <domain_id> write|exec", progname);
#if defined(__i386__) || defined(__x86_64__)
- fprintf(stderr,
"|breakpoint|altp2m_write|altp2m_exec|debug|cpuid|desc_access|write_ctrlreg_cr4");
+ fprintf(stderr,
"|breakpoint|debug|cpuid|desc_access|write_ctrlreg_cr4");
#elif defined(__arm__) || defined(__aarch64__)
fprintf(stderr, "|privcall");
#endif
+ fprintf(stderr, "|altp2m_write|altp2m_exec");
fprintf(stderr,
"\n"
"Logs first page writes, execs, or breakpoint traps that occur on
the domain.\n"
@@ -441,18 +442,6 @@ int main(int argc, char *argv[])
{
breakpoint = 1;
}
- else if ( !strcmp(argv[0], "altp2m_write") )
- {
- default_access = XENMEM_access_rx;
- altp2m = 1;
- memaccess = 1;
- }
- else if ( !strcmp(argv[0], "altp2m_exec") )
- {
- default_access = XENMEM_access_rw;
- altp2m = 1;
- memaccess = 1;
- }
else if ( !strcmp(argv[0], "debug") )
{
debug = 1;
@@ -475,6 +464,18 @@ int main(int argc, char *argv[])
privcall = 1;
}
#endif
+ else if ( !strcmp(argv[0], "altp2m_write") )
+ {
+ default_access = XENMEM_access_rx;
+ altp2m = 1;
+ memaccess = 1;
+ }
+ else if ( !strcmp(argv[0], "altp2m_exec") )
+ {
+ default_access = XENMEM_access_rw;
+ altp2m = 1;
+ memaccess = 1;
+ }
else
{
usage(argv[0]);
@@ -547,12 +548,14 @@ int main(int argc, char *argv[])
goto exit;
}
+#if defined(__i386__) || defined(__x86_64__)
rc = xc_monitor_singlestep( xch, domain_id, 1 );
if ( rc < 0 )
{
ERROR("Error %d failed to enable singlestep monitoring!\n", rc);
goto exit;
}
+#endif
}
if ( memaccess && !altp2m )
@@ -663,7 +666,9 @@ int main(int argc, char *argv[])
rc = xc_altp2m_switch_to_view( xch, domain_id, 0 );
rc = xc_altp2m_destroy_view(xch, domain_id, altp2m_view_id);
rc = xc_altp2m_set_domain_state(xch, domain_id, 0);
+#if defined(__i386__) || defined(__x86_64__)
rc = xc_monitor_singlestep(xch, domain_id, 0);
+#endif
} else {
rc = xc_set_mem_access(xch, domain_id, XENMEM_access_rwx,
~0ull, 0);
rc = xc_set_mem_access(xch, domain_id, XENMEM_access_rwx,
START_PFN,
@@ -883,9 +888,11 @@ int main(int argc, char *argv[])
exit:
if ( altp2m )
{
+#if defined(__i386__) || defined(__x86_64__)
uint32_t vcpu_id;
for ( vcpu_id = 0; vcpu_id<XEN_LEGACY_MAX_VCPUS; vcpu_id++)
rc = control_singlestep(xch, domain_id, vcpu_id, 0);
+#endif
}
/* Tear down domain xenaccess */
--
2.13.3
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |