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

Re: [Xen-ia64-devel] Reserved Register/Field fault not correct handledin Xen?



Hi, Dietmar

>Hi,
>
>I had a closer look to my problem described on
>http://lists.xensource.com/archives/html/xen-ia64-devel/2006-12/msg00120.html.
>Now I can reproduce the panic in Xen with a dom0-user program.
>The instructions
>movl r16=0xff;;
>mov ar.rsc=r16
>lead to a general exception with function code 0x30 (Reserved Register/Field 
>fault).
>The trap handler in ivt.S checks only function code <=0x20.
>The other exceptions call dispatch_to_fault_handler() and further 
>ia64_fault().
>In ia64_fault() there is only a check on function code 0x80 (Illegal 
>dependency fault). The function codes 0x30 (Reserved Register/Field fault) 
>and 0x40 lead to the xen-panic!
You are right.

>It seems the code was copied from the linux ia64_fault() routine. But there 
>is 
>a call of die_if_kernel(...) and if not kernel a call of 
>force_sig(SIGILL, ...) to kill the user process.
>I believe the solution is here to use FAULT_OR_REFLECT(24) in the trap 
>handler 
>if the function code is > 0x20 and to extend the ia64_handle_reflection() 
>with handling the vector=24.
>With this 2 fixes the user program gets a SIGILL like on native linux.
>and my mini-os traphandler gets called from the hypervisor, so I can handle 
>the trap on my own.
>Do I see something complete wrong or should I send a patch?
I think your suggestion is almost right.
But should the folloing IA64_ISR_CODE_LFETCH be checked?
(because Privilege Register Fault may be occurred on guest.)

ia64_fault()
 393         if ((isr & IA64_ISR_NA) &&
 394             ((isr & IA64_ISR_CODE_MASK) == IA64_ISR_CODE_LFETCH)) {
 395                 /*
 396                  * This fault was due to lfetch.fault, set "ed" bit in the
 397                  * psr to cancel the lfetch.
 398                  */
 399                 ia64_psr(regs)->ed = 1;
 400                 printk("ia64_fault: handled lfetch.fault\n");
 401                 return;
 402         }

Could you send patches?

Best Regards,

Akio Takebe


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


 


Rackspace

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