|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/3] trace: improve usefulness of hypercall trace record
On Tue, Oct 2, 2012 at 6:06 PM, David Vrabel <david.vrabel@xxxxxxxxxx> wrote:
> On 02/10/12 17:09, George Dunlap wrote:
>> On Mon, Oct 1, 2012 at 6:47 PM, David Vrabel <david.vrabel@xxxxxxxxxx> wrote:
>>> From: David Vrabel <david.vrabel@xxxxxxxxxx>
>>>
>>> Trace hypercalls using a more useful trace record format.
>>>
>>> The EIP field is removed (it was always somewhere in the hypercall
>>> page) and include selected hypercall arguments (e.g., the number of
>>> calls in a multicall, and the number of PTE updates in an mmu_update
>>> etc.). 12 bits in the first extra word are used to indicate which
>>> arguments are present in the record and what size they are (32 or
>>> 64-bit).
>>>
>>> This is an incompatible record format so a new event ID is used so
>>> tools can distinguish between the two formats.
>>>
>>> Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx>
>>> Acked-by: George Dunlap <george.dunlap@xxxxxxxxxx>
>>
>> Looking at it again, I do have one comment (see below) -- so I guess
>> that would be technically withdrawing the Ack until we sort it out.
>>
>>> diff --git a/xen/arch/x86/trace.c b/xen/arch/x86/trace.c
>>> index 27fe150..f2c75bc 100644
>>> --- a/xen/arch/x86/trace.c
>>> +++ b/xen/arch/x86/trace.c
>>> @@ -9,33 +9,28 @@
>>> void trace_hypercall(void)
>>
>> In most places, "trace_*" means "Call unconditionally; inside it will
>> check tb_init_done", while "__trace_*" means, "I have already checked
>> that tb_init_done is set, don't bother checking it."
>
> This isn't something that this patch changes but I'll add a new patch to
> change this since it's a trivial change.
Great, thanks.
-G
>
>>> + switch ( op )
>>> + {
>>> + case __HYPERVISOR_mmu_update:
>>> + APPEND_ARG32(1); /* count */
>>> + break;
>>> + case __HYPERVISOR_multicall:
>>> + APPEND_ARG32(1); /* count */
>>> + break;
>>> + case __HYPERVISOR_grant_table_op:
>>> + APPEND_ARG32(0); /* cmd */
>>> + APPEND_ARG32(2); /* count */
>>> + break;
>>> + case __HYPERVISOR_vcpu_op:
>>> + APPEND_ARG32(0); /* cmd */
>>> + APPEND_ARG32(1); /* vcpuid */
>>> + break;
>>> + case __HYPERVISOR_mmuext_op:
>>> + APPEND_ARG32(1); /* count */
>>> + break;
>>> + case __HYPERVISOR_sched_op:
>>> + APPEND_ARG32(0); /* cmd */
>>> + break;
>>> + }
>>
>> I may have commented on this before -- I wonder if doing some kind of
>> array might be better than a big switch statement. I think with only
>> a few hypercalls, a switch statement is probably acceptable; but as we
>> add more, the code is going to get bloated.
>
> I'll see what I can come up with.
>
> David
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |