* [Xenomai-core] [PATCH] set VM_RESERVED for remapped mem
@ 2006-02-26 19:47 Jan Kiszka
2006-02-27 1:23 ` Philippe Gerum
0 siblings, 1 reply; 2+ messages in thread
From: Jan Kiszka @ 2006-02-26 19:47 UTC (permalink / raw)
To: xenomai-core
[-- Attachment #1.1: Type: text/plain, Size: 508 bytes --]
Hi,
while reviewing my own rtdm_mmap-code again, I noticed that the wrapped
remap_pfn_range() sets VM_RESERVED (+ some other bits) on the passed vma
while the compatibility function remap_page_range() doesn't do this.
This flag seems to exclude the vma from swapping considerations.
Adding the bit to the wrapper appears to me as the best way to catch
this on older kernels. And this should also make the VM_LOCKED setting
obsolete in nucleus/heap.c.
Feel free to correct/enlighten me.
Jan
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: set-VM_RESERVED.patch --]
[-- Type: text/x-patch; name="set-VM_RESERVED.patch", Size: 1772 bytes --]
Index: include/asm-generic/wrappers.h
===================================================================
--- include/asm-generic/wrappers.h (Revision 600)
+++ include/asm-generic/wrappers.h (Arbeitskopie)
@@ -46,8 +46,10 @@
#define module_param_named(name,var,type,mode) module_param(var,type,mode)
/* VM */
-#define wrap_remap_page_range(vma,from,to,size,prot) \
- remap_page_range(from,to,size,prot)
+#define wrap_remap_page_range(vma,from,to,size,prot) do { \
+ vma->flags |= VM_RESERVED; \
+ remap_page_range(from,to,size,prot); \
+} while (0)
#define wrap_switch_mm(prev,next,task) \
switch_mm(prev,next,task,(task)->processor)
#define wrap_enter_lazy_tlb(mm,task) \
@@ -145,8 +147,10 @@
#define wrap_remap_page_range(vma,from,to,size,prot) \
remap_pfn_range(vma,from,(to) >> PAGE_SHIFT,size,prot)
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10) */
-#define wrap_remap_page_range(vma,from,to,size,prot) \
- remap_page_range(vma,from,to,size,prot)
+#define wrap_remap_page_range(vma,from,to,size,prot) do { \
+ vma->flags |= VM_RESERVED; \
+ remap_page_range(vma,from,to,size,prot); \
+} while (0)
#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10) */
#define wrap_switch_mm(prev,next,task) \
switch_mm(prev,next,task)
Index: ksrc/nucleus/heap.c
===================================================================
--- ksrc/nucleus/heap.c (Revision 600)
+++ ksrc/nucleus/heap.c (Arbeitskopie)
@@ -948,7 +948,6 @@
return -ENXIO; /* Doesn't match the heap size. */
vma->vm_ops = &xnheap_vmops;
- vma->vm_flags |= VM_LOCKED; /* Don't swap this out. */
vma->vm_private_data = file->private_data;
vaddr = (unsigned long)heap->archdep.heapbase;
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 252 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [Xenomai-core] [PATCH] set VM_RESERVED for remapped mem
2006-02-26 19:47 [Xenomai-core] [PATCH] set VM_RESERVED for remapped mem Jan Kiszka
@ 2006-02-27 1:23 ` Philippe Gerum
0 siblings, 0 replies; 2+ messages in thread
From: Philippe Gerum @ 2006-02-27 1:23 UTC (permalink / raw)
To: Jan Kiszka; +Cc: xenomai-core
Jan Kiszka wrote:
> Hi,
>
> while reviewing my own rtdm_mmap-code again, I noticed that the wrapped
> remap_pfn_range() sets VM_RESERVED (+ some other bits) on the passed vma
> while the compatibility function remap_page_range() doesn't do this.
> This flag seems to exclude the vma from swapping considerations.
>
> Adding the bit to the wrapper appears to me as the best way to catch
> this on older kernels. And this should also make the VM_LOCKED setting
> obsolete in nucleus/heap.c.
>
Sounds good, even if the deprecated remap_page_range() did not change the VMA
flags, but I cannot come with a better approach, and after all, we always align on
the behaviour of the most recent version supported, i.e. remap_pfn_range(), so
that's definitely ok. Fixed, thanks.
> Feel free to correct/enlighten me.
>
> Jan
>
>
> ------------------------------------------------------------------------
>
> Index: include/asm-generic/wrappers.h
> ===================================================================
> --- include/asm-generic/wrappers.h (Revision 600)
> +++ include/asm-generic/wrappers.h (Arbeitskopie)
> @@ -46,8 +46,10 @@
> #define module_param_named(name,var,type,mode) module_param(var,type,mode)
>
> /* VM */
> -#define wrap_remap_page_range(vma,from,to,size,prot) \
> - remap_page_range(from,to,size,prot)
> +#define wrap_remap_page_range(vma,from,to,size,prot) do { \
> + vma->flags |= VM_RESERVED; \
> + remap_page_range(from,to,size,prot); \
> +} while (0)
> #define wrap_switch_mm(prev,next,task) \
> switch_mm(prev,next,task,(task)->processor)
> #define wrap_enter_lazy_tlb(mm,task) \
> @@ -145,8 +147,10 @@
> #define wrap_remap_page_range(vma,from,to,size,prot) \
> remap_pfn_range(vma,from,(to) >> PAGE_SHIFT,size,prot)
> #else /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10) */
> -#define wrap_remap_page_range(vma,from,to,size,prot) \
> - remap_page_range(vma,from,to,size,prot)
> +#define wrap_remap_page_range(vma,from,to,size,prot) do { \
> + vma->flags |= VM_RESERVED; \
> + remap_page_range(vma,from,to,size,prot); \
> +} while (0)
> #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10) */
> #define wrap_switch_mm(prev,next,task) \
> switch_mm(prev,next,task)
> Index: ksrc/nucleus/heap.c
> ===================================================================
> --- ksrc/nucleus/heap.c (Revision 600)
> +++ ksrc/nucleus/heap.c (Arbeitskopie)
> @@ -948,7 +948,6 @@
> return -ENXIO; /* Doesn't match the heap size. */
>
> vma->vm_ops = &xnheap_vmops;
> - vma->vm_flags |= VM_LOCKED; /* Don't swap this out. */
> vma->vm_private_data = file->private_data;
>
> vaddr = (unsigned long)heap->archdep.heapbase;
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Xenomai-core mailing list
> Xenomai-core@domain.hid
> https://mail.gna.org/listinfo/xenomai-core
--
Philippe.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-02-27 1:23 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-26 19:47 [Xenomai-core] [PATCH] set VM_RESERVED for remapped mem Jan Kiszka
2006-02-27 1:23 ` Philippe Gerum
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.