WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

RE: [Xen-devel] NMI handling in HVM

To: Keir Fraser <keir@xxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: RE: [Xen-devel] NMI handling in HVM
From: "Lv, Hui" <hui.lv@xxxxxxxxx>
Date: Fri, 31 Dec 2010 17:32:18 +0800
Accept-language: en-US
Acceptlanguage: en-US
Cc:
Delivery-date: Fri, 31 Dec 2010 01:33:28 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <C9434C4D.10D42%keir@xxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <C10D3FB0CD45994C8A51FEC1227CE22F1DC19AA50C@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> <C9434C4D.10D42%keir@xxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Acuoi1ahb1EiyPEIQnCr0nCxd0SaowAPehu1AAERhgA=
Thread-topic: [Xen-devel] NMI handling in HVM
Thanks, it's very clear. I'll try to fix it.

Best regards,

Lv, Hui

-----Original Message-----
From: Keir Fraser [mailto:keir.xen@xxxxxxxxx] On Behalf Of Keir Fraser
Sent: Friday, December 31, 2010 5:01 PM
To: Lv, Hui; xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: Re: [Xen-devel] NMI handling in HVM

Change needed to avoid getting a real NMI while handling the fake NMI
created by calling do_nmi() directly. It's a very valid fix.

You'll have to fix this subsequent issue by having a per-cpu bool_t exposed
from self_nmi():
 ...
 this_cpu(is_self_nmi) = 1;
 apic_icr_write(APIC_DM_NMI...);
 this_cpu(is_self_nmi) = 0;
 ...

You can check that flag from your NMI handler and if set, and current vcpu
is non-idle, you can go at guest_cpu_user_regs() to get the appropriate cpu
context for profiling. You could even do that check in the generic NMI
handler/dispatcher, and change the regs pointer you pass to the currently
registered specific NMI handler.

 -- Keir

On 31/12/2010 01:37, "Lv, Hui" <hui.lv@xxxxxxxxx> wrote:

> Dear all
>                 I saw a change about NMI handling in C/S 20059. So could
> anyone tell me what¹s the difference of these two ways?  We found that after
> changing to Œself_nmi()¹, xenoprofile cannot work correctly. Since
> Œself_nmi()¹ issue a hypervisor nmi and there is no change for xenoprofile to
> record HVM guest regs information.
> --- a/xen/arch/x86/hvm/vmx/vmx.c      Fri Aug 14 10:57:24 2009 +0100
> +++ b/xen/arch/x86/hvm/vmx/vmx.c      Fri Aug 14 10:58:32 2009 +0100
> @@ -945,8 +945,6 @@ static void vmx_enable_rdtsc_exiting(str
>     vmx_vmcs_exit(v);
>   }
>  
> -void do_nmi(struct cpu_user_regs *);
> -
>  static void vmx_init_hypercall_page(struct domain *d, void *hypercall_page)
>  {
>      char *p;
> @@ -2470,7 +2468,7 @@ asmlinkage void vmx_vmexit_handler(struc
>                  (X86_EVENTTYPE_NMI << 8) )
>                 goto exit_and_crash;
>             HVMTRACE_0D(NMI);
> -           do_nmi(regs); /* Real NMI, vector 2: normal processing. */
> +           self_nmi(); /* Real NMI, vector 2: normal processing. */
>             break;
>         case TRAP_machine_check:
>             HVMTRACE_0D(MCE);
>  
>  
> Best regards!
> Lv,hui
>  
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>