xen: remove size limit of privcmd-buf mapping interface
Subsystems (2)
Juergen Gross
maintainerPATCH 1/1 xen: remove size limit of privcmd-buf mapping interface
Currently the size of hypercall buffers allocated via /dev/xen/hypercall is limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.
There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
While at it make the error path for the -ENOMEM case a little bit cleaner by setting n_pages to the number of successfully allocated pages instead of the target size.
--- drivers/xen/privcmd-buf.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-)
drivers/xen/privcmd-buf.c +4 -18
@@ -21,15 +21,9 @@MODULE_LICENSE ("GPL" ); -static unsigned int limit =64 ; -module_param (limit, uint,0644 ); -MODULE_PARM_DESC (limit,"Maximum number of pages that may be allocated by " -"the privcmd-buf device per open file" ); -struct privcmd_buf_private {struct mutex lock;struct list_head list; -unsigned int allocated; };struct privcmd_buf_vma_private {
@@ -60,13 +54,10 @@ static void privcmd_buf_vmapriv_free(struct privcmd_buf_vma_private *vma_priv) {unsigned int i; - vma_priv->file_priv->allocated -= vma_priv->n_pages; -list_del (&vma_priv->list);for (i =0 ; i < vma_priv->n_pages; i++) -if (vma_priv->pages[i]) -__free_page (vma_priv->pages[i]); +__free_page (vma_priv->pages[i]);kfree (vma_priv); }
@@ -146,8 +137,7 @@ static int privcmd_buf_mmap(struct file *file, struct vm_area_struct *vma)unsigned int i;int ret =0 ; -if (!(vma->vm_flags &VM_SHARED ) || count > limit || - file_priv->allocated + count > limit) +if (!(vma->vm_flags &VM_SHARED ))return -EINVAL ; vma_priv = kzalloc(sizeof(*vma_priv) + count * sizeof(void *),
@@ -155,19 +145,15 @@ static int privcmd_buf_mmap(struct file *file, struct vm_area_struct *vma)if (!vma_priv)return -ENOMEM ; - vma_priv->n_pages = count; - count =0 ; -for (i =0 ; i < vma_priv->n_pages; i++) { +for (i =0 ; i < count; i++) { vma_priv->pages[i] =alloc_page (GFP_KERNEL | __GFP_ZERO);if (!vma_priv->pages[i])break ; - count++; + vma_priv->n_pages++; }mutex_lock (&file_priv->lock); - file_priv->allocated += count; - vma_priv->file_priv = file_priv; vma_priv->users =1 ;
Signature · 1 line
2.16.4
Quoted 11 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 1:34 PM >>>
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
But is this setting of permissions what we want long term? What about a de-privileged qemu, which still needs to be able to issue at least dm-op hypercalls?
Jan
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel
Quoted 11 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 1:34 PM >>>
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
But is this setting of permissions what we want long term? What about a de-privileged qemu, which still needs to be able to issue at least dm-op hypercalls?
Jan
Juergen Gross
maintainerQuoted 8 lines · Jan Beulich
Quoted 8 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 1:34 PM >>>
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.
Quoted 7 lines
Quoted 3 lines
There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
But is this setting of permissions what we want long term? What about a de-privileged qemu, which still needs to be able to issue at least dm-op hypercalls?
Wouldn't that qemu have opened the node while still being privileged?
Juergen
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel
Juergen Gross
maintainerQuoted 8 lines · Jan Beulich
Quoted 8 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 1:34 PM >>>
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.
Quoted 7 lines
Quoted 3 lines
There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
But is this setting of permissions what we want long term? What about a de-privileged qemu, which still needs to be able to issue at least dm-op hypercalls?
Wouldn't that qemu have opened the node while still being privileged?
Juergen
Quoted 14 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 3:23 PM >>>
Quoted 12 lines · Jan Beulich
Quoted 11 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 1:34 PM >>>
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
Quoted 5 lines
Quoted 3 lines
But is this setting of permissions what we want long term? What about a de-privileged qemu, which still needs to be able to issue at least dm-op hypercalls?
Wouldn't that qemu have opened the node while still being privileged?
Possibly, but how does this help? As soon as it's unprivileged it must not be able to hog resources anymore.
Anyway, with Andrew's reply my point may be irrelevant, but I have to admit I'm not entirely sure.
Jan
Quoted 14 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 3:23 PM >>>
Quoted 12 lines · Jan Beulich
Quoted 11 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 1:34 PM >>>
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
Quoted 5 lines
Quoted 3 lines
But is this setting of permissions what we want long term? What about a de-privileged qemu, which still needs to be able to issue at least dm-op hypercalls?
Wouldn't that qemu have opened the node while still being privileged?
Possibly, but how does this help? As soon as it's unprivileged it must not be able to hog resources anymore.
Anyway, with Andrew's reply my point may be irrelevant, but I have to admit I'm not entirely sure.
Jan
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel
A message that is not in the archive (sent off-list or not yet received): [email protected]
Juergen Gross
maintainerQuoted 18 lines · Jan Beulich
Quoted 18 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 3:23 PM >>>
Quoted 15 lines · Jan Beulich
Quoted 11 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 1:34 PM >>>
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
But is this setting of permissions what we want long term? What about a de-privileged qemu, which still needs to be able to issue at least dm-op hypercalls?
Quoted 7 lines
Quoted 1 line
Wouldn't that qemu have opened the node while still being privileged?
Possibly, but how does this help? As soon as it's unprivileged it must not be able to hog resources anymore.
Anyway, with Andrew's reply my point may be irrelevant, but I have to admit I'm not entirely sure.
I guess we want Xen tools to close /dev/xen/hypercall (or more precise:
don't dup2() it) when qemu is de-privileging itself. This will make it very clear that it can't hog memory via mmap().
When you are fine with that I'll send a Xen patch for this.
Juergen
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel
Juergen Gross
maintainerQuoted 18 lines · Jan Beulich
Quoted 18 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 3:23 PM >>>
Quoted 15 lines · Jan Beulich
Quoted 11 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 1:34 PM >>>
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
But is this setting of permissions what we want long term? What about a de-privileged qemu, which still needs to be able to issue at least dm-op hypercalls?
Quoted 7 lines
Quoted 1 line
Wouldn't that qemu have opened the node while still being privileged?
Possibly, but how does this help? As soon as it's unprivileged it must not be able to hog resources anymore.
Anyway, with Andrew's reply my point may be irrelevant, but I have to admit I'm not entirely sure.
I guess we want Xen tools to close /dev/xen/hypercall (or more precise:
don't dup2() it) when qemu is de-privileging itself. This will make it very clear that it can't hog memory via mmap().
When you are fine with that I'll send a Xen patch for this.
Juergen
Quoted 25 lines
Quoted 1 line
Quoted 1 line · On 01.11.18 at 17:27, <[email protected]> wrote:
Quoted 23 lines · Jan Beulich
Quoted 14 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 3:23 PM >>>
Quoted 12 lines · Jan Beulich
Quoted 11 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 1:34 PM >>>
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
Quoted 5 lines
Quoted 3 lines
But is this setting of permissions what we want long term? What about a de-privileged qemu, which still needs to be able to issue at least dm-op hypercalls?
Wouldn't that qemu have opened the node while still being privileged?
Possibly, but how does this help? As soon as it's unprivileged it must not be able to hog resources anymore.
Quoted 8 lines
Quoted 2 lines
Anyway, with Andrew's reply my point may be irrelevant, but I have to admit I'm not entirely sure.
I guess we want Xen tools to close
/dev/xen/hypercall(or more precise:
don'tdup2()it) when qemu is de-privileging itself. This will make it very clear that it can't hog memory viammap().When you are fine with that I'll send a Xen patch for this.
If that doesn't prevent the process from making the hypercalls it is permitted to do (I have to admit I don't recall if there are any still needed besides the dmop ones), sure.
Jan
Quoted 25 lines
Quoted 1 line
Quoted 1 line · On 01.11.18 at 17:27, <[email protected]> wrote:
Quoted 23 lines · Jan Beulich
Quoted 14 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 3:23 PM >>>
Quoted 12 lines · Jan Beulich
Quoted 11 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 1:34 PM >>>
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
Quoted 5 lines
Quoted 3 lines
But is this setting of permissions what we want long term? What about a de-privileged qemu, which still needs to be able to issue at least dm-op hypercalls?
Wouldn't that qemu have opened the node while still being privileged?
Possibly, but how does this help? As soon as it's unprivileged it must not be able to hog resources anymore.
Quoted 8 lines
Quoted 2 lines
Anyway, with Andrew's reply my point may be irrelevant, but I have to admit I'm not entirely sure.
I guess we want Xen tools to close
/dev/xen/hypercall(or more precise:
don'tdup2()it) when qemu is de-privileging itself. This will make it very clear that it can't hog memory viammap().When you are fine with that I'll send a Xen patch for this.
If that doesn't prevent the process from making the hypercalls it is permitted to do (I have to admit I don't recall if there are any still needed besides the dmop ones), sure.
Jan
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel
Quoted 8 lines · Jan Beulich
Quoted 8 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 1:34 PM >>>
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.
Quoted 6 lines
Quoted 3 lines
There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
But is this setting of permissions what we want long term? What about a de-privileged qemu, which still needs to be able to issue at least dm-op hypercalls?
dm-op very deliberately doesn't have hypercall bounce buffers like this.
The kernel is responsible for ensuring that the buffer list passed in the ioctl is safe memory, whether this is bouncing the buffers itself, or simply ensuring that the underlying userspace memory won't disappear across the hypercall.
~Andrew
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel
Quoted 8 lines · Jan Beulich
Quoted 8 lines
Quoted 1 line
Quoted 1 line
Juergen Gross <[email protected]> 11/01/18 1:34 PM >>>
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.
Quoted 6 lines
Quoted 3 lines
There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
But is this setting of permissions what we want long term? What about a de-privileged qemu, which still needs to be able to issue at least dm-op hypercalls?
dm-op very deliberately doesn't have hypercall bounce buffers like this.
The kernel is responsible for ensuring that the buffer list passed in the ioctl is safe memory, whether this is bouncing the buffers itself, or simply ensuring that the underlying userspace memory won't disappear across the hypercall.
~Andrew
Juergen Gross
maintainerPing?
Jan's remark regarding de-privileged qemu is no issue as the hypercall node is being closed by the de-privilege library function.
Juergen
Quoted 80 lines · Juergen Gross
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
While at it make the error path for the
-ENOMEMcase a little bit cleaner by settingn_pagesto the number of successfully allocated pages instead of the target size.Fixes c51b3c639e01f2 ("xen: add new hypercall buffer mapping device")Cc <[email protected]> #4.18Signed-off-by Juergen Gross <[email protected]>--- drivers/xen/privcmd-buf.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-)drivers/xen/privcmd-buf.c +3
-16@@ -21,15 +21,9 @@MODULE_LICENSE ("GPL" ); -static unsigned int limit =64 ; -module_param (limit, uint,0644 ); -MODULE_PARM_DESC (limit,"Maximum number of pages that may be allocated by " -"the privcmd-buf device per open file" ); -struct privcmd_buf_private {struct mutex lock;struct list_head list; -unsigned int allocated; };struct privcmd_buf_vma_private {@@ -60,13 +54,10 @@ static void privcmd_buf_vmapriv_free(struct privcmd_buf_vma_private *vma_priv) {unsigned int i; - vma_priv->file_priv->allocated -= vma_priv->n_pages; -list_del (&vma_priv->list);for (i =0 ; i < vma_priv->n_pages; i++) -if (vma_priv->pages[i]) -__free_page (vma_priv->pages[i]); +__free_page (vma_priv->pages[i]);kfree (vma_priv); }@@ -146,8 +137,7 @@ static int privcmd_buf_mmap(struct file *file, struct vm_area_struct *vma)unsigned int i;int ret =0 ; -if (!(vma->vm_flags &VM_SHARED ) || count > limit || - file_priv->allocated + count > limit) +if (!(vma->vm_flags &VM_SHARED ))return -EINVAL ; vma_priv = kzalloc(sizeof(*vma_priv) + count * sizeof(void *),@@ -155,19 +145,15 @@ static int privcmd_buf_mmap(struct file *file, struct vm_area_struct *vma)if (!vma_priv)return -ENOMEM ; - vma_priv->n_pages = count; - count =0 ; -for (i =0 ; i < vma_priv->n_pages; i++) { +for (i =0 ; i < count; i++) { vma_priv->pages[i] =alloc_page (GFP_KERNEL | __GFP_ZERO);if (!vma_priv->pages[i])break ; - count++;
drivers/xen/privcmd-buf.c static int privcmd_buf_mmap(struct file *file, struct vm_area_struct *vma) · line 159
Quoted 10 lines
drivers/xen/privcmd-buf.c +1
-2+ vma_priv->n_pages++; }mutex_lock (&file_priv->lock); - file_priv->allocated += count; - vma_priv->file_priv = file_priv; vma_priv->users =1 ;
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel
Juergen Gross
maintainerPing?
Jan's remark regarding de-privileged qemu is no issue as the hypercall node is being closed by the de-privilege library function.
Juergen
Quoted 90 lines · Juergen Gross
Currently the size of hypercall buffers allocated via
/dev/xen/hypercallis limited to a default of 64 memory pages. For live migration of guests this might be too small as the page dirty bitmask needs to be sized according to the size of the guest. This means migrating a 8GB sized guest is already exhausting the default buffer size for the dirty bitmap.There is no sensible way to set a sane limit, so just remove it completely. The device node's usage is limited to root anyway, so there is no additional DOS scenario added by allowing unlimited buffers.
While at it make the error path for the
-ENOMEMcase a little bit cleaner by settingn_pagesto the number of successfully allocated pages instead of the target size.Fixes c51b3c639e01f2 ("xen: add new hypercall buffer mapping device")Cc <[email protected]> #4.18Signed-off-by Juergen Gross <[email protected]>--- drivers/xen/privcmd-buf.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-)drivers/xen/privcmd-buf.c +4
-18@@ -21,15 +21,9 @@MODULE_LICENSE ("GPL" ); -static unsigned int limit =64 ; -module_param (limit, uint,0644 ); -MODULE_PARM_DESC (limit,"Maximum number of pages that may be allocated by " -"the privcmd-buf device per open file" ); -struct privcmd_buf_private {struct mutex lock;struct list_head list; -unsigned int allocated; };struct privcmd_buf_vma_private {@@ -60,13 +54,10 @@ static void privcmd_buf_vmapriv_free(struct privcmd_buf_vma_private *vma_priv) {unsigned int i; - vma_priv->file_priv->allocated -= vma_priv->n_pages; -list_del (&vma_priv->list);for (i =0 ; i < vma_priv->n_pages; i++) -if (vma_priv->pages[i]) -__free_page (vma_priv->pages[i]); +__free_page (vma_priv->pages[i]);kfree (vma_priv); }@@ -146,8 +137,7 @@ static int privcmd_buf_mmap(struct file *file, struct vm_area_struct *vma)unsigned int i;int ret =0 ; -if (!(vma->vm_flags &VM_SHARED ) || count > limit || - file_priv->allocated + count > limit) +if (!(vma->vm_flags &VM_SHARED ))return -EINVAL ; vma_priv = kzalloc(sizeof(*vma_priv) + count * sizeof(void *),@@ -155,19 +145,15 @@ static int privcmd_buf_mmap(struct file *file, struct vm_area_struct *vma)if (!vma_priv)return -ENOMEM ; - vma_priv->n_pages = count; - count =0 ; -for (i =0 ; i < vma_priv->n_pages; i++) { +for (i =0 ; i < count; i++) { vma_priv->pages[i] =alloc_page (GFP_KERNEL | __GFP_ZERO);if (!vma_priv->pages[i])break ; - count++; + vma_priv->n_pages++; }mutex_lock (&file_priv->lock); - file_priv->allocated += count; - vma_priv->file_priv = file_priv; vma_priv->users =1 ;
Boris Ostrovsky
Reviewed-byQuoted 4 lines · Juergen Gross
Ping?
Jan's remark regarding de-privileged qemu is no issue as the hypercall node is being closed by the de-privilege library function.
Boris Ostrovsky
Reviewed-byQuoted 4 lines · Juergen Gross
Ping?
Jan's remark regarding de-privileged qemu is no issue as the hypercall node is being closed by the de-privilege library function.
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel