Hello All, i''m working on port xen-4.2 to DilOS - illumos based platform. I have a questions about changes in public headers. for build i need changes: diff -r 9640d9c4b223 xen/include/public/arch-x86/xen-x86_32.h --- a/xen/include/public/arch-x86/xen-x86_32.h Tue Dec 10 16:21:57 2013 +0100 +++ b/xen/include/public/arch-x86/xen-x86_32.h Thu Dec 12 13:07:50 2013 +0400 @@ -36,6 +36,19 @@ * Clobbered: Argument registers (e.g., 2-arg hypercall clobbers %ebx,%ecx) */ +#if defined(__sun) +/* + * Direct hypercall interface: + * As above, except the entry sequence to the hypervisor is: + * mov $hypercall-number*32,%eax ; int $0x82 + */ +#if !defined(_ASM) +#define TRAP_INSTR "int $0x82" +#else +#define TRAP_INSTR int $0x82 +#endif +#endif + /* * These flat segments are in the Xen-private section of every GDT. Since these * are also present in the initial GDT, many OSes will be able to avoid diff -r 9640d9c4b223 xen/include/public/arch-x86/xen-x86_64.h --- a/xen/include/public/arch-x86/xen-x86_64.h Tue Dec 10 16:21:57 2013 +0100 +++ b/xen/include/public/arch-x86/xen-x86_64.h Thu Dec 12 13:07:50 2013 +0400 @@ -36,6 +36,20 @@ * Clobbered: argument registers (e.g., 2-arg hypercall clobbers %rdi,%rsi) */ +#if defined(__sun) +/* + * Direct hypercall interface: + * As above, except the entry sequence to the hypervisor is: + * mov $hypercall-number*32,%eax ; syscall + * Clobbered: %rcx, %r11, argument registers (as above) + */ +#if !defined(_ASM) +#define TRAP_INSTR "syscall" +#else +#define TRAP_INSTR syscall +#endif +#endif + /* * 64-bit segment selectors * These flat segments are in the Xen-private section of every GDT. Since these diff -r 9640d9c4b223 xen/include/public/xen.h --- a/xen/include/public/xen.h Tue Dec 10 16:21:57 2013 +0100 +++ b/xen/include/public/xen.h Thu Dec 12 13:07:50 2013 +0400 @@ -29,6 +29,20 @@ #include "xen-compat.h" +#if defined(__sun) +#if defined(__i386) && !defined(__i386__) +#define __i386__ /* foo */ +#endif + +#if defined(__amd64) && !defined(__x86_64__) +#define __x86_64__ +#endif + +#if defined(_ASM) && !defined(__ASSEMBLY__) +#define __ASSEMBLY__ +#endif +#endif + #if defined(__i386__) || defined(__x86_64__) #include "arch-x86/xen.h" #elif defined(__ia64__) Signed-off-by: Igor Kozhukhov <ikozhukhov@gmail.com> also in xen\include\public\trace.h we have structure: struct t_info it have conflict with another structure with the same name in illumos sources. Question: can we rename structure name in xen to: struct t_info_xen if yes - i can try to update xen code with it and send RTI. please let me know about first changes in public headers - can integrate it to xen mainstream ? or it is not applicable to xen ? -- Best regards, Igor Kozhukhov
On Thu, 2013-12-12 at 13:15 +0400, Igor Kozhukhov wrote:> Hello All, > > i''m working on port xen-4.2 to DilOS - illumos based platform.> > I have a questions about changes in public headers. > > for build i need changes: > > diff -r 9640d9c4b223 xen/include/public/arch-x86/xen-x86_32.h > --- a/xen/include/public/arch-x86/xen-x86_32.h Tue Dec 10 16:21:57 2013 +0100 > +++ b/xen/include/public/arch-x86/xen-x86_32.h Thu Dec 12 13:07:50 2013 +0400 > @@ -36,6 +36,19 @@ > * Clobbered: Argument registers (e.g., 2-arg hypercall clobbers %ebx,%ecx) > */ > > +#if defined(__sun) > +/* > + * Direct hypercall interface: > + * As above, except the entry sequence to the hypervisor is: > + * mov $hypercall-number*32,%eax ; int $0x82The direct trap has been deprecated for years now (like nearly a decade...). Illumos should really switch the hypercall page based mechanism (which is described just above the context of this patch). [...]> diff -r 9640d9c4b223 xen/include/public/xen.h > --- a/xen/include/public/xen.h Tue Dec 10 16:21:57 2013 +0100 > +++ b/xen/include/public/xen.h Thu Dec 12 13:07:50 2013 +0400 > @@ -29,6 +29,20 @@ > > #include "xen-compat.h" > > +#if defined(__sun) > +#if defined(__i386) && !defined(__i386__) > +#define __i386__ /* foo */ > +#endif > + > +#if defined(__amd64) && !defined(__x86_64__) > +#define __x86_64__ > +#endif > + > +#if defined(_ASM) && !defined(__ASSEMBLY__) > +#define __ASSEMBLY__ > +#endif > +#endif > +Not sure what these are for but they seem odd to me. Are these symbols really not defined by your compiler?> also in xen\include\public\trace.h > we have structure: struct t_info > > it have conflict with another structure with the same name in illumos sources. > Question: can we rename structure name in xen to: struct t_info_xen > > if yes - i can try to update xen code with it and send RTI.For quite a while now I think we have been encouraging guest OSes to take a copy of the Xen headers and modify them to suit their needs e..g Linux and I think the *BSDs do this. This avoids a build dependency from the guest OSes on Xen. Ian.
On 12/12/2013 09:15, Igor Kozhukhov wrote:> Hello All, > > i''m working on port xen-4.2 to DilOS - illumos based platform. > > I have a questions about changes in public headers. > > for build i need changes: > > diff -r 9640d9c4b223 xen/include/public/arch-x86/xen-x86_32.h > --- a/xen/include/public/arch-x86/xen-x86_32.h Tue Dec 10 16:21:57 2013 +0100 > +++ b/xen/include/public/arch-x86/xen-x86_32.h Thu Dec 12 13:07:50 2013 +0400 > @@ -36,6 +36,19 @@ > * Clobbered: Argument registers (e.g., 2-arg hypercall clobbers %ebx,%ecx) > */ > > +#if defined(__sun) > +/* > + * Direct hypercall interface: > + * As above, except the entry sequence to the hypervisor is: > + * mov $hypercall-number*32,%eax ; int $0x82Have you done substantial hacking to the Xen entry points? If not, this comment appears wrong. Furthermore, why are you not using a hypercall page? ~Andrew> + */ > +#if !defined(_ASM) > +#define TRAP_INSTR "int $0x82" > +#else > +#define TRAP_INSTR int $0x82 > +#endif > +#endif > + > /* > * These flat segments are in the Xen-private section of every GDT. Since these > * are also present in the initial GDT, many OSes will be able to avoid > diff -r 9640d9c4b223 xen/include/public/arch-x86/xen-x86_64.h > --- a/xen/include/public/arch-x86/xen-x86_64.h Tue Dec 10 16:21:57 2013 +0100 > +++ b/xen/include/public/arch-x86/xen-x86_64.h Thu Dec 12 13:07:50 2013 +0400 > @@ -36,6 +36,20 @@ > * Clobbered: argument registers (e.g., 2-arg hypercall clobbers %rdi,%rsi) > */ > > +#if defined(__sun) > +/* > + * Direct hypercall interface: > + * As above, except the entry sequence to the hypervisor is: > + * mov $hypercall-number*32,%eax ; syscall > + * Clobbered: %rcx, %r11, argument registers (as above) > + */ > +#if !defined(_ASM) > +#define TRAP_INSTR "syscall" > +#else > +#define TRAP_INSTR syscall > +#endif > +#endif > + > /* > * 64-bit segment selectors > * These flat segments are in the Xen-private section of every GDT. Since these > diff -r 9640d9c4b223 xen/include/public/xen.h > --- a/xen/include/public/xen.h Tue Dec 10 16:21:57 2013 +0100 > +++ b/xen/include/public/xen.h Thu Dec 12 13:07:50 2013 +0400 > @@ -29,6 +29,20 @@ > > #include "xen-compat.h" > > +#if defined(__sun) > +#if defined(__i386) && !defined(__i386__) > +#define __i386__ /* foo */ > +#endif > + > +#if defined(__amd64) && !defined(__x86_64__) > +#define __x86_64__ > +#endif > + > +#if defined(_ASM) && !defined(__ASSEMBLY__) > +#define __ASSEMBLY__ > +#endif > +#endif > + > #if defined(__i386__) || defined(__x86_64__) > #include "arch-x86/xen.h" > #elif defined(__ia64__) > > Signed-off-by: Igor Kozhukhov <ikozhukhov@gmail.com> > > also in xen\include\public\trace.h > we have structure: struct t_info > > it have conflict with another structure with the same name in illumos sources. > Question: can we rename structure name in xen to: struct t_info_xen > > if yes - i can try to update xen code with it and send RTI. > > please let me know about first changes in public headers - can integrate it to xen mainstream ? > or it is not applicable to xen ? > > -- > Best regards, > Igor Kozhukhov > > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel
On Dec 12, 2013, at 3:02 PM, Andrew Cooper wrote:> On 12/12/2013 09:15, Igor Kozhukhov wrote: >> Hello All, >> >> i''m working on port xen-4.2 to DilOS - illumos based platform. >> >> I have a questions about changes in public headers. >> >> for build i need changes: >> >> diff -r 9640d9c4b223 xen/include/public/arch-x86/xen-x86_32.h >> --- a/xen/include/public/arch-x86/xen-x86_32.h Tue Dec 10 16:21:57 2013 +0100 >> +++ b/xen/include/public/arch-x86/xen-x86_32.h Thu Dec 12 13:07:50 2013 +0400 >> @@ -36,6 +36,19 @@ >> * Clobbered: Argument registers (e.g., 2-arg hypercall clobbers %ebx,%ecx) >> */ >> >> +#if defined(__sun) >> +/* >> + * Direct hypercall interface: >> + * As above, except the entry sequence to the hypervisor is: >> + * mov $hypercall-number*32,%eax ; int $0x82 > > Have you done substantial hacking to the Xen entry points? If not, this > comment appears wrong. > > Furthermore, why are you not using a hypercall page?At this moment i''m using xen-3.4 implementation in illumos based on Sun Xen ports. I''m learning how to port xen-4.2. -Igor> ~Andrew
On Thu, 2013-12-12 at 15:15 +0400, Igor Kozhukhov wrote:> On Dec 12, 2013, at 3:02 PM, Andrew Cooper wrote: > > > On 12/12/2013 09:15, Igor Kozhukhov wrote: > >> Hello All, > >> > >> i''m working on port xen-4.2 to DilOS - illumos based platform. > >> > >> I have a questions about changes in public headers. > >> > >> for build i need changes: > >> > >> diff -r 9640d9c4b223 xen/include/public/arch-x86/xen-x86_32.h > >> --- a/xen/include/public/arch-x86/xen-x86_32.h Tue Dec 10 16:21:57 2013 +0100 > >> +++ b/xen/include/public/arch-x86/xen-x86_32.h Thu Dec 12 13:07:50 2013 +0400 > >> @@ -36,6 +36,19 @@ > >> * Clobbered: Argument registers (e.g., 2-arg hypercall clobbers %ebx,%ecx) > >> */ > >> > >> +#if defined(__sun) > >> +/* > >> + * Direct hypercall interface: > >> + * As above, except the entry sequence to the hypervisor is: > >> + * mov $hypercall-number*32,%eax ; int $0x82 > > > > Have you done substantial hacking to the Xen entry points? If not, this > > comment appears wrong. > > > > Furthermore, why are you not using a hypercall page? > > At this moment i''m using xen-3.4 implementation in illumos based on Sun Xen ports. > I''m learning how to port xen-4.2.The hypercall page support has been present since at least Xen 3.0.4, actually before, but I can''t be bothered to search further back than d87addffb118. Ian.
Hi Ian, can i use extras/mini-os/* as example for hypercalls implementations ? -- Best regards, Igor Kozhukhov On Dec 12, 2013, at 3:25 PM, Ian Campbell wrote:> On Thu, 2013-12-12 at 15:15 +0400, Igor Kozhukhov wrote: >> On Dec 12, 2013, at 3:02 PM, Andrew Cooper wrote: >> >>> On 12/12/2013 09:15, Igor Kozhukhov wrote: >>>> Hello All, >>>> >>>> i''m working on port xen-4.2 to DilOS - illumos based platform. >>>> >>>> I have a questions about changes in public headers. >>>> >>>> for build i need changes: >>>> >>>> diff -r 9640d9c4b223 xen/include/public/arch-x86/xen-x86_32.h >>>> --- a/xen/include/public/arch-x86/xen-x86_32.h Tue Dec 10 16:21:57 2013 +0100 >>>> +++ b/xen/include/public/arch-x86/xen-x86_32.h Thu Dec 12 13:07:50 2013 +0400 >>>> @@ -36,6 +36,19 @@ >>>> * Clobbered: Argument registers (e.g., 2-arg hypercall clobbers %ebx,%ecx) >>>> */ >>>> >>>> +#if defined(__sun) >>>> +/* >>>> + * Direct hypercall interface: >>>> + * As above, except the entry sequence to the hypervisor is: >>>> + * mov $hypercall-number*32,%eax ; int $0x82 >>> >>> Have you done substantial hacking to the Xen entry points? If not, this >>> comment appears wrong. >>> >>> Furthermore, why are you not using a hypercall page? >> >> At this moment i''m using xen-3.4 implementation in illumos based on Sun Xen ports. >> I''m learning how to port xen-4.2. > > The hypercall page support has been present since at least Xen 3.0.4, > actually before, but I can''t be bothered to search further back than > d87addffb118. > > Ian. >