|
|
|
|
|
|
|
|
|
|
xen-ia64-devel
Re: [Xen-ia64-devel] Reserved Register/Field fault not correct handledin
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
|
|
|
|
|