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

[Xen-ia64-devel] Support big endian domU's


  • To: "xen-ia64-devel" <xen-ia64-devel@xxxxxxxxxxxxxxxxxxx>
  • From: Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxxxxxxx>
  • Date: Thu, 16 Nov 2006 13:11:18 +0100
  • Delivery-date: Thu, 16 Nov 2006 04:15:15 -0800
  • Domainkey-signature: s=s768; d=fujitsu-siemens.com; c=nofws; q=dns; b=MwwaESAA1GTNLfP0z2xDt8nJ2KlkavjkMbQ7yLNmeKxWM5MObW6t8WI1D61d/Oua45a/IE+02/42y7fFnS2R0DZETzVPOIwQOz+V1uWkyQGO/Ql3SUaeRPqKBuk0Q3ge;
  • List-id: Discussion of the ia64 port of Xen <xen-ia64-devel.lists.xensource.com>

Hi,

I started with supporting big endian domU's on ia64 and have some questions.
I did some changes to tools/libxc/xc_load_elf.c and now I can load and start 
the big endian domU.
Because this is some sort  of a new branch in load_elf how can I get in 
changes? Should I simply send patches to x86 list or should I first initiate 
a discussion about that?

I added a flag is_be to struct arch_domain. Is this ok, or may this produce 
some problems?
struct arch_domain {
    struct mm_struct mm;
    /* Flags.  */
    union {
        unsigned long flags;
        struct {
            unsigned int is_vti : 1;
#ifdef CONFIG_XEN_IA64_PERVCPU_VHPT
            unsigned int has_pervcpu_vhpt : 1;
#endif
            unsigned int is_be : 1;              <--------
        };
    };

Should I introduce a new compiler flag where the special big endion support 
can be switched off?

A question to the function reflect_interruptions() in fault.c:
As far as I understand the code, PSCB(...) are prepared to contain the trapped 
dumU environment..
regs->... are prepared to contain the environment for return to the trap 
handler of the domU.
If this is the case then on a big endian domU the psr.be bit ist not set in 
regs->ipsr from dcr.be. This is needed on return from Xen to the trap handler 
of the domU.
The other thing is that in vcpu_get_ipsr_int_state() the psr.be bit should not 
be overwritten by dcr.be. There are cases where a big endian domU runs 
temporarily littlen endian (during efi calls, ...). If there would be a trap, 
it would return with psr.be = 1, which is not what we want.
The same problem may occur on reflect_event()!
Thanks.

Dietmar.

_______________________________________________
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®.