Jan, Thanks for your feedback and help.
Luis >-----Original Message----- >From: jan.kis...@web.de [mailto:jan.kis...@web.de] >Sent: Saturday, November 21, 2009 3:43 AM >To: Herrera-Bendezu, Luis >Cc: xenomai-core >Subject: Re: [PATCH] rtdm: Extend rtdm_iomap_to_user to map >phys addr > 4G > >Herrera-Bendezu, Luis wrote: >> rtdm_iomap_to_user does not handle I/O memory mapping of >> physical I/O address grater than 4 GB. >> >> This patch changes the src_addr argument and underlying >> code to handle this case. >> >> Signed-off-by: Luis Herrera-Bendezu <lherr...@xxxxxxxxxxx> > ^^^^^^^^^^^ >Something made your mail address unreadable. This is pointless (your >address is already archived on this list). Moreover, we need a proper >signature as a declaration that you are authorized to contribute this >patch. One may argue that the patch is trivial and not "copyrightable", >but we better avoid being sloppy even in that case. > >Besides this, the patch is unfortunately line wrap. Make sure that >wrapping is switched off or use a different mailer. > >Thanks, >Jan rtdm_iomap_to_user does not handle I/O memory mapping of physical I/O address grater than 4 GB. This patch changes the src_addr argument and underlying code to handle this case. Signed-off-by: Luis Herrera-Bendezu <lherr...@harris.com> --- diff --git a/include/asm-generic/system.h b/include/asm-generic/system.h index 020e763..f2a9424 100644 --- a/include/asm-generic/system.h +++ b/include/asm-generic/system.h @@ -417,7 +417,7 @@ static inline int xnarch_remap_vm_page(struct vm_area_struct *vma, static inline int xnarch_remap_io_page_range(struct file *filp, struct vm_area_struct *vma, unsigned long from, - unsigned long to, + phys_addr_t to, unsigned long size, pgprot_t prot) { diff --git a/include/asm-generic/wrappers.h b/include/asm-generic/wrappers.h index 943ed34..239eb93 100644 --- a/include/asm-generic/wrappers.h +++ b/include/asm-generic/wrappers.h @@ -400,4 +400,8 @@ static inline int wrap_raise_cap(int cap) } #endif /* LINUX_VERSION_CODE >= 2.6.29 */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) +typedef unsigned long phys_addr_t; +#endif + #endif /* _XENO_ASM_GENERIC_WRAPPERS_H */ diff --git a/include/rtdm/rtdm_driver.h b/include/rtdm/rtdm_driver.h index 3026aff..0340de8 100644 --- a/include/rtdm/rtdm_driver.h +++ b/include/rtdm/rtdm_driver.h @@ -1168,7 +1168,7 @@ int rtdm_mmap_to_user(rtdm_user_info_t *user_info, struct vm_operations_struct *vm_ops, void *vm_private_data); int rtdm_iomap_to_user(rtdm_user_info_t *user_info, - unsigned long src_addr, size_t len, + phys_addr_t src_addr, size_t len, int prot, void **pptr, struct vm_operations_struct *vm_ops, void *vm_private_data); diff --git a/ksrc/skins/rtdm/drvlib.c b/ksrc/skins/rtdm/drvlib.c index 65c630f..8922689 100644 --- a/ksrc/skins/rtdm/drvlib.c +++ b/ksrc/skins/rtdm/drvlib.c @@ -1765,7 +1765,7 @@ void rtdm_nrtsig_pend(rtdm_nrtsig_t *nrt_sig); #if defined(CONFIG_XENO_OPT_PERVASIVE) || defined(DOXYGEN_CPP) struct rtdm_mmap_data { void *src_vaddr; - unsigned long src_paddr; + phys_addr_t src_paddr; struct vm_operations_struct *vm_ops; void *vm_private_data; }; @@ -1773,14 +1773,15 @@ struct rtdm_mmap_data { static int rtdm_mmap_buffer(struct file *filp, struct vm_area_struct *vma) { struct rtdm_mmap_data *mmap_data = filp->private_data; - unsigned long vaddr, paddr, maddr, size; + unsigned long vaddr, maddr, size; + phys_addr_t paddr; int ret; vma->vm_ops = mmap_data->vm_ops; vma->vm_private_data = mmap_data->vm_private_data; vaddr = (unsigned long)mmap_data->src_vaddr; - paddr = (unsigned long)mmap_data->src_paddr; + paddr = mmap_data->src_paddr; if (!paddr) /* kmalloc memory */ paddr = virt_to_phys((void *)vaddr); @@ -1982,7 +1983,7 @@ EXPORT_SYMBOL(rtdm_mmap_to_user); * Rescheduling: possible. */ int rtdm_iomap_to_user(rtdm_user_info_t *user_info, - unsigned long src_addr, size_t len, + phys_addr_t src_addr, size_t len, int prot, void **pptr, struct vm_operations_struct *vm_ops, void *vm_private_data) --- _______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core