All of lore.kernel.org
 help / color / mirror / Atom feed
* changes for illumos in public headers
@ 2013-12-12  9:15 Igor Kozhukhov
  2013-12-12  9:50 ` Ian Campbell
  2013-12-12 11:02 ` Andrew Cooper
  0 siblings, 2 replies; 7+ messages in thread
From: Igor Kozhukhov @ 2013-12-12  9:15 UTC (permalink / raw)
  To: xen-devel

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: changes for illumos in public headers
  2013-12-12  9:15 changes for illumos in public headers Igor Kozhukhov
@ 2013-12-12  9:50 ` Ian Campbell
  2013-12-12 11:02 ` Andrew Cooper
  1 sibling, 0 replies; 7+ messages in thread
From: Ian Campbell @ 2013-12-12  9:50 UTC (permalink / raw)
  To: Igor Kozhukhov; +Cc: xen-devel

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 $0x82

The 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.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: changes for illumos in public headers
  2013-12-12  9:15 changes for illumos in public headers Igor Kozhukhov
  2013-12-12  9:50 ` Ian Campbell
@ 2013-12-12 11:02 ` Andrew Cooper
  2013-12-12 11:15   ` Igor Kozhukhov
  1 sibling, 1 reply; 7+ messages in thread
From: Andrew Cooper @ 2013-12-12 11:02 UTC (permalink / raw)
  To: Igor Kozhukhov, xen-devel

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?

~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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: changes for illumos in public headers
  2013-12-12 11:02 ` Andrew Cooper
@ 2013-12-12 11:15   ` Igor Kozhukhov
  2013-12-12 11:25     ` Ian Campbell
  0 siblings, 1 reply; 7+ messages in thread
From: Igor Kozhukhov @ 2013-12-12 11:15 UTC (permalink / raw)
  To: Andrew Cooper; +Cc: 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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: changes for illumos in public headers
  2013-12-12 11:15   ` Igor Kozhukhov
@ 2013-12-12 11:25     ` Ian Campbell
  2013-12-13 15:41       ` Igor Kozhukhov
  0 siblings, 1 reply; 7+ messages in thread
From: Ian Campbell @ 2013-12-12 11:25 UTC (permalink / raw)
  To: Igor Kozhukhov; +Cc: Andrew Cooper, xen-devel

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.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: changes for illumos in public headers
  2013-12-12 11:25     ` Ian Campbell
@ 2013-12-13 15:41       ` Igor Kozhukhov
  2013-12-16 11:26         ` Ian Campbell
  0 siblings, 1 reply; 7+ messages in thread
From: Igor Kozhukhov @ 2013-12-13 15:41 UTC (permalink / raw)
  To: Ian Campbell; +Cc: Andrew Cooper, xen-devel

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: changes for illumos in public headers
  2013-12-13 15:41       ` Igor Kozhukhov
@ 2013-12-16 11:26         ` Ian Campbell
  0 siblings, 0 replies; 7+ messages in thread
From: Ian Campbell @ 2013-12-16 11:26 UTC (permalink / raw)
  To: Igor Kozhukhov; +Cc: Andrew Cooper, xen-devel

On Fri, 2013-12-13 at 19:41 +0400, Igor Kozhukhov wrote:
> can i use extras/mini-os/* as example for hypercalls implementations ?

It's BSD licensed, so if that is compatible I don't see why not.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-12-16 11:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-12  9:15 changes for illumos in public headers Igor Kozhukhov
2013-12-12  9:50 ` Ian Campbell
2013-12-12 11:02 ` Andrew Cooper
2013-12-12 11:15   ` Igor Kozhukhov
2013-12-12 11:25     ` Ian Campbell
2013-12-13 15:41       ` Igor Kozhukhov
2013-12-16 11:26         ` Ian Campbell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.