All of lore.kernel.org
 help / color / mirror / Atom feed
* XC_PAGE_SIZE or XEN_PAGE_SIZE?
@ 2016-12-02  7:49 Oleksandr Andrushchenko
  2016-12-02 11:03 ` Jan Beulich
  0 siblings, 1 reply; 7+ messages in thread
From: Oleksandr Andrushchenko @ 2016-12-02  7:49 UTC (permalink / raw)
  To: xen-devel

Hi, all!

While working on display protocol I found that there is no(?) common

???_PAGE_SIZE define I can use for both Xen and Linux kernel:

Xen defines XC_PAGE_SIZE which is also used in Linux user-space and

kernel has XEN_PAGE_SIZE, but no XC_PAGE_SIZE.

So, the question is which define should I use? Or just replace it with

some number, like fbif does:

#define XENFB_OUT_RING_SIZE 2048

Thank you,

Oleksandr


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

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

* Re: XC_PAGE_SIZE or XEN_PAGE_SIZE?
  2016-12-02  7:49 XC_PAGE_SIZE or XEN_PAGE_SIZE? Oleksandr Andrushchenko
@ 2016-12-02 11:03 ` Jan Beulich
  2016-12-02 11:20   ` Oleksandr Andrushchenko
  0 siblings, 1 reply; 7+ messages in thread
From: Jan Beulich @ 2016-12-02 11:03 UTC (permalink / raw)
  To: Oleksandr Andrushchenko; +Cc: xen-devel

>>> On 02.12.16 at 08:49, <andr2000@gmail.com> wrote:
> While working on display protocol I found that there is no(?) common
> 
> ???_PAGE_SIZE define I can use for both Xen and Linux kernel:
> 
> Xen defines XC_PAGE_SIZE which is also used in Linux user-space and
> 
> kernel has XEN_PAGE_SIZE, but no XC_PAGE_SIZE.
> 
> So, the question is which define should I use?

In the abstract protocol there should be no need for this other
than in comments (as is the case for all other protocols with the
exception of vscsiif, which had a need to define its own
VSCSIIF_PAGE_SIZE), where I think just PAGE_SIZE will be fine.
In the end, frontend and backend are required to agree on a
page size via some side channel anyway, which usually is
achieved by base architecture assumptions (after all both run
on the same physical machine and hence with the same set of
architecture prerequisites). Arguably this is not an optimal model
(namely on architectures supporting varying page sizes), but if
we were to change it we should probably do so for all protocols.

In the implementation you use the manifest constant available: If
your code is in user space, use XC_PAGE_SIZE. In the kernel you'd
obviously use XEN_PAGE_SIZE.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

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

* Re: XC_PAGE_SIZE or XEN_PAGE_SIZE?
  2016-12-02 11:03 ` Jan Beulich
@ 2016-12-02 11:20   ` Oleksandr Andrushchenko
  2016-12-02 11:43     ` Jan Beulich
  0 siblings, 1 reply; 7+ messages in thread
From: Oleksandr Andrushchenko @ 2016-12-02 11:20 UTC (permalink / raw)
  To: Jan Beulich; +Cc: xen-devel

On 12/02/2016 01:03 PM, Jan Beulich wrote:
>>>> On 02.12.16 at 08:49, <andr2000@gmail.com> wrote:
>> While working on display protocol I found that there is no(?) common
>>
>> ???_PAGE_SIZE define I can use for both Xen and Linux kernel:
>>
>> Xen defines XC_PAGE_SIZE which is also used in Linux user-space and
>>
>> kernel has XEN_PAGE_SIZE, but no XC_PAGE_SIZE.
>>
>> So, the question is which define should I use?
> In the abstract protocol there should be no need for this other
> than in comments (as is the case for all other protocols with the
> exception of vscsiif, which had a need to define its own
> VSCSIIF_PAGE_SIZE), where I think just PAGE_SIZE will be fine.
> In the end, frontend and backend are required to agree on a
> page size via some side channel anyway, which usually is
> achieved by base architecture assumptions (after all both run
> on the same physical machine and hence with the same set of
> architecture prerequisites). Arguably this is not an optimal model
> (namely on architectures supporting varying page sizes), but if
> we were to change it we should probably do so for all protocols.
>
> In the implementation you use the manifest constant available: If
> your code is in user space, use XC_PAGE_SIZE. In the kernel you'd
> obviously use XEN_PAGE_SIZE.
I'll give you an example:
#define XENDISPL_PAGE_SIZE 4096
#define XENDISPL_IN_RING_OFFS (sizeof(struct xendispl_event_page))
#define XENDISPL_IN_RING_SIZE (XENDISPL_PAGE_SIZE - XENDISPL_IN_RING_OFFS)

By this code I define an event ring for async messages from front to back.
This is almost the same as already defined in kbdif and fbif which 
define it to 2048
In my case I wanted to rely on page size.
> Jan
>


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

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

* Re: XC_PAGE_SIZE or XEN_PAGE_SIZE?
  2016-12-02 11:20   ` Oleksandr Andrushchenko
@ 2016-12-02 11:43     ` Jan Beulich
  2016-12-02 11:45       ` Oleksandr Andrushchenko
  2016-12-02 11:53       ` Andrew Cooper
  0 siblings, 2 replies; 7+ messages in thread
From: Jan Beulich @ 2016-12-02 11:43 UTC (permalink / raw)
  To: Oleksandr Andrushchenko; +Cc: xen-devel

>>> On 02.12.16 at 12:20, <andr2000@gmail.com> wrote:
> On 12/02/2016 01:03 PM, Jan Beulich wrote:
>>>>> On 02.12.16 at 08:49, <andr2000@gmail.com> wrote:
>>> While working on display protocol I found that there is no(?) common
>>>
>>> ???_PAGE_SIZE define I can use for both Xen and Linux kernel:
>>>
>>> Xen defines XC_PAGE_SIZE which is also used in Linux user-space and
>>>
>>> kernel has XEN_PAGE_SIZE, but no XC_PAGE_SIZE.
>>>
>>> So, the question is which define should I use?
>> In the abstract protocol there should be no need for this other
>> than in comments (as is the case for all other protocols with the
>> exception of vscsiif, which had a need to define its own
>> VSCSIIF_PAGE_SIZE), where I think just PAGE_SIZE will be fine.
>> In the end, frontend and backend are required to agree on a
>> page size via some side channel anyway, which usually is
>> achieved by base architecture assumptions (after all both run
>> on the same physical machine and hence with the same set of
>> architecture prerequisites). Arguably this is not an optimal model
>> (namely on architectures supporting varying page sizes), but if
>> we were to change it we should probably do so for all protocols.
>>
>> In the implementation you use the manifest constant available: If
>> your code is in user space, use XC_PAGE_SIZE. In the kernel you'd
>> obviously use XEN_PAGE_SIZE.
> I'll give you an example:
> #define XENDISPL_PAGE_SIZE 4096
> #define XENDISPL_IN_RING_OFFS (sizeof(struct xendispl_event_page))
> #define XENDISPL_IN_RING_SIZE (XENDISPL_PAGE_SIZE - XENDISPL_IN_RING_OFFS)
> 
> By this code I define an event ring for async messages from front to back.
> This is almost the same as already defined in kbdif and fbif which 
> define it to 2048
> In my case I wanted to rely on page size.

But as said - from an abstract perspective there's no universal
page size here, so I don't see why you want to make one up.
Possibly different OSes running in different VMs may not even
have a way to agree on a common value, so you're better of
using some arbitrarily chose value (which still may match the
page size in most commonly used architectures) without trying
to derive is from whatever someone may consider is the page
size. If granting access to that space is involved, then referring
to grant page size in a comment may be reasonable (albeit you
will find that nothing there requires it to be 4k either - any
other power of two below 64k should be fine in theory).

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

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

* Re: XC_PAGE_SIZE or XEN_PAGE_SIZE?
  2016-12-02 11:43     ` Jan Beulich
@ 2016-12-02 11:45       ` Oleksandr Andrushchenko
  2016-12-02 11:53       ` Andrew Cooper
  1 sibling, 0 replies; 7+ messages in thread
From: Oleksandr Andrushchenko @ 2016-12-02 11:45 UTC (permalink / raw)
  To: Jan Beulich; +Cc: xen-devel

On 12/02/2016 01:43 PM, Jan Beulich wrote:
>>>> On 02.12.16 at 12:20, <andr2000@gmail.com> wrote:
>> On 12/02/2016 01:03 PM, Jan Beulich wrote:
>>>>>> On 02.12.16 at 08:49, <andr2000@gmail.com> wrote:
>>>> While working on display protocol I found that there is no(?) common
>>>>
>>>> ???_PAGE_SIZE define I can use for both Xen and Linux kernel:
>>>>
>>>> Xen defines XC_PAGE_SIZE which is also used in Linux user-space and
>>>>
>>>> kernel has XEN_PAGE_SIZE, but no XC_PAGE_SIZE.
>>>>
>>>> So, the question is which define should I use?
>>> In the abstract protocol there should be no need for this other
>>> than in comments (as is the case for all other protocols with the
>>> exception of vscsiif, which had a need to define its own
>>> VSCSIIF_PAGE_SIZE), where I think just PAGE_SIZE will be fine.
>>> In the end, frontend and backend are required to agree on a
>>> page size via some side channel anyway, which usually is
>>> achieved by base architecture assumptions (after all both run
>>> on the same physical machine and hence with the same set of
>>> architecture prerequisites). Arguably this is not an optimal model
>>> (namely on architectures supporting varying page sizes), but if
>>> we were to change it we should probably do so for all protocols.
>>>
>>> In the implementation you use the manifest constant available: If
>>> your code is in user space, use XC_PAGE_SIZE. In the kernel you'd
>>> obviously use XEN_PAGE_SIZE.
>> I'll give you an example:
>> #define XENDISPL_PAGE_SIZE 4096
>> #define XENDISPL_IN_RING_OFFS (sizeof(struct xendispl_event_page))
>> #define XENDISPL_IN_RING_SIZE (XENDISPL_PAGE_SIZE - XENDISPL_IN_RING_OFFS)
>>
>> By this code I define an event ring for async messages from front to back.
>> This is almost the same as already defined in kbdif and fbif which
>> define it to 2048
>> In my case I wanted to rely on page size.
> But as said - from an abstract perspective there's no universal
> page size here, so I don't see why you want to make one up.
no reason, but my will to have it 4K
> Possibly different OSes running in different VMs may not even
> have a way to agree on a common value, so you're better of
> using some arbitrarily chose value (which still may match the
> page size in most commonly used architectures) without trying
> to derive is from whatever someone may consider is the page
> size.
#define XENDISPL_PAGE_SIZE 4096
> If granting access to that space is involved, then referring
> to grant page size in a comment may be reasonable (albeit you
> will find that nothing there requires it to be 4k either - any
> other power of two below 64k should be fine in theory).
>
> Jan
>
sure

Thank you,
Oleksandr

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

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

* Re: XC_PAGE_SIZE or XEN_PAGE_SIZE?
  2016-12-02 11:43     ` Jan Beulich
  2016-12-02 11:45       ` Oleksandr Andrushchenko
@ 2016-12-02 11:53       ` Andrew Cooper
  2016-12-02 11:56         ` Oleksandr Andrushchenko
  1 sibling, 1 reply; 7+ messages in thread
From: Andrew Cooper @ 2016-12-02 11:53 UTC (permalink / raw)
  To: Jan Beulich, Oleksandr Andrushchenko; +Cc: xen-devel

On 02/12/16 11:43, Jan Beulich wrote:
>>>> On 02.12.16 at 12:20, <andr2000@gmail.com> wrote:
>> On 12/02/2016 01:03 PM, Jan Beulich wrote:
>>>>>> On 02.12.16 at 08:49, <andr2000@gmail.com> wrote:
>>>> While working on display protocol I found that there is no(?) common
>>>>
>>>> ???_PAGE_SIZE define I can use for both Xen and Linux kernel:
>>>>
>>>> Xen defines XC_PAGE_SIZE which is also used in Linux user-space and
>>>>
>>>> kernel has XEN_PAGE_SIZE, but no XC_PAGE_SIZE.
>>>>
>>>> So, the question is which define should I use?
>>> In the abstract protocol there should be no need for this other
>>> than in comments (as is the case for all other protocols with the
>>> exception of vscsiif, which had a need to define its own
>>> VSCSIIF_PAGE_SIZE), where I think just PAGE_SIZE will be fine.
>>> In the end, frontend and backend are required to agree on a
>>> page size via some side channel anyway, which usually is
>>> achieved by base architecture assumptions (after all both run
>>> on the same physical machine and hence with the same set of
>>> architecture prerequisites). Arguably this is not an optimal model
>>> (namely on architectures supporting varying page sizes), but if
>>> we were to change it we should probably do so for all protocols.
>>>
>>> In the implementation you use the manifest constant available: If
>>> your code is in user space, use XC_PAGE_SIZE. In the kernel you'd
>>> obviously use XEN_PAGE_SIZE.
>> I'll give you an example:
>> #define XENDISPL_PAGE_SIZE 4096
>> #define XENDISPL_IN_RING_OFFS (sizeof(struct xendispl_event_page))
>> #define XENDISPL_IN_RING_SIZE (XENDISPL_PAGE_SIZE - XENDISPL_IN_RING_OFFS)
>>
>> By this code I define an event ring for async messages from front to back.
>> This is almost the same as already defined in kbdif and fbif which 
>> define it to 2048
>> In my case I wanted to rely on page size.
> But as said - from an abstract perspective there's no universal
> page size here, so I don't see why you want to make one up.

Particularly on ARM, you may have one domain using 4k pages and one
domain using 64k.

This issue has already been fudged once because of a blanket assumption
of the use of 4k pages.

All new work should have care taken to deal cleanly with the problem.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

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

* Re: XC_PAGE_SIZE or XEN_PAGE_SIZE?
  2016-12-02 11:53       ` Andrew Cooper
@ 2016-12-02 11:56         ` Oleksandr Andrushchenko
  0 siblings, 0 replies; 7+ messages in thread
From: Oleksandr Andrushchenko @ 2016-12-02 11:56 UTC (permalink / raw)
  To: Andrew Cooper, Jan Beulich; +Cc: xen-devel

On 12/02/2016 01:53 PM, Andrew Cooper wrote:
> On 02/12/16 11:43, Jan Beulich wrote:
>>>>> On 02.12.16 at 12:20, <andr2000@gmail.com> wrote:
>>> On 12/02/2016 01:03 PM, Jan Beulich wrote:
>>>>>>> On 02.12.16 at 08:49, <andr2000@gmail.com> wrote:
>>>>> While working on display protocol I found that there is no(?) common
>>>>>
>>>>> ???_PAGE_SIZE define I can use for both Xen and Linux kernel:
>>>>>
>>>>> Xen defines XC_PAGE_SIZE which is also used in Linux user-space and
>>>>>
>>>>> kernel has XEN_PAGE_SIZE, but no XC_PAGE_SIZE.
>>>>>
>>>>> So, the question is which define should I use?
>>>> In the abstract protocol there should be no need for this other
>>>> than in comments (as is the case for all other protocols with the
>>>> exception of vscsiif, which had a need to define its own
>>>> VSCSIIF_PAGE_SIZE), where I think just PAGE_SIZE will be fine.
>>>> In the end, frontend and backend are required to agree on a
>>>> page size via some side channel anyway, which usually is
>>>> achieved by base architecture assumptions (after all both run
>>>> on the same physical machine and hence with the same set of
>>>> architecture prerequisites). Arguably this is not an optimal model
>>>> (namely on architectures supporting varying page sizes), but if
>>>> we were to change it we should probably do so for all protocols.
>>>>
>>>> In the implementation you use the manifest constant available: If
>>>> your code is in user space, use XC_PAGE_SIZE. In the kernel you'd
>>>> obviously use XEN_PAGE_SIZE.
>>> I'll give you an example:
>>> #define XENDISPL_PAGE_SIZE 4096
>>> #define XENDISPL_IN_RING_OFFS (sizeof(struct xendispl_event_page))
>>> #define XENDISPL_IN_RING_SIZE (XENDISPL_PAGE_SIZE - XENDISPL_IN_RING_OFFS)
>>>
>>> By this code I define an event ring for async messages from front to back.
>>> This is almost the same as already defined in kbdif and fbif which
>>> define it to 2048
>>> In my case I wanted to rely on page size.
>> But as said - from an abstract perspective there's no universal
>> page size here, so I don't see why you want to make one up.
> Particularly on ARM, you may have one domain using 4k pages and one
> domain using 64k.
>
> This issue has already been fudged once because of a blanket assumption
> of the use of 4k pages.
>
> All new work should have care taken to deal cleanly with the problem.
>
> ~Andrew
exactly for this reason I am defining

#define XENDISPL_PAGE_SIZE 4096
but I would probably change its name to XENDISPL_RING_SIZE



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

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

end of thread, other threads:[~2016-12-02 11:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-02  7:49 XC_PAGE_SIZE or XEN_PAGE_SIZE? Oleksandr Andrushchenko
2016-12-02 11:03 ` Jan Beulich
2016-12-02 11:20   ` Oleksandr Andrushchenko
2016-12-02 11:43     ` Jan Beulich
2016-12-02 11:45       ` Oleksandr Andrushchenko
2016-12-02 11:53       ` Andrew Cooper
2016-12-02 11:56         ` Oleksandr Andrushchenko

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.