[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] xenoprof passive profiling and "mode" setting

On 5 Jul 2006, at 19:27, Ray Bryant wrote:

So, how is that possibly true for the kernel in an HVM guest?
(Wouldn't guest_kernel_mode(regs) be false in that case since it is not
running ring_3()?)

guest_kernel_mode() does not work for HVM guests. It may need to be fixed -- it had previously only been used in paravirtual-only contexts.

It might make sense to invert[*] the predicate and rename to user_mode(). Then definition is simply ring_3(regs) for x86/32 and (ring_3(regs) && !((v)->arch.flags & TF_kernel_mode)) for x86/64.

Also, wouldn't ring_0(regs) be true if we are running in kernel mode in an HVM guest?    This code appears to assign such a sample to being part of xen,

ring_0(regs) should be replaced by !guest_mode(regs).

So maybe:
  int mode = 2;
  if (guest_mode(regs))
      mode = user_mode(current, regs) ? 0 : 1;

 -- Keir

[*] Not really inversion, as neither guest_kernel_mode() nor user_mode() are true for hypervisor mode.

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.