>I am trying to understand its use in
>xen3.0.3\xen\arch\x86\hvm\vmx\vmx.c
>file in the vmx_vmexit_handler function.
>Also explain the meaning of its arguments and from where does
>it fetches
>the values for different arguments.
>Some code snippets from above file are given below:
>
>
>TRACE_VMEXIT(0,exit_reason);
>switch ( exit_reason )
>{
>case EXIT_REASON_EXCEPTION_NMI:
>
>
>
>vector &= INTR_INFO_VECTOR_MASK;
>TRACE_VMEXIT(1,vector);
>
>
>__vmread(EXIT_QUALIFICATION, &va);
>__vmread(VM_EXIT_INTR_ERROR_CODE, ®s->error_code);
>TRACE_VMEXIT(3, regs->error_code);
>TRACE_VMEXIT(4, va);
>
>Also trying to understand the following expression in the same file:
>#define TRACE_VMEXIT(index,value) this_cpu(trace_values)[index]=value
>
It's used to debug and do performance tunning.
We defined 5 unsigned long integers in current physical processor data
area to store the information of a VMExit, obviously for different types
of VMExit, we need store different information, for example, for VMExits
caused by IO instructions, we log:
1, exit reason, surely every VMExit has its own reason,
2, port number;
3, read or write;
4, TSC when the VMExit happen;
5, TSC when the VMEXit is done.
And then these data are logged into XenTrace (xen/common/trace.c), and
then we can use xentrace tools to get and translate these data,
analyzing these data we can know VMExits distribution, and average cost
of each type.
Surely you can log data you need to meet your own requirements.
-Xin
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|