Re: [Xenomai-core] [PATCH] rtdm: Extend rtdm_iomap_to_user to map phys addr 4G

2009-11-23 Thread Jan Kiszka
Herrera-Bendezu, Luis wrote:
 Jan,
 
 Thanks for your feedback and help.

Merged your patch (and sent out a pull request), though the line
wrapping issue persisted (manually fixed up).

Your next patch to an open source project probably deserves the use of a
better mail client.

Jan

 -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...@xxx
^^^
 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)
 ---



signature.asc

Re: [Xenomai-core] [PATCH] rtdm: Extend rtdm_iomap_to_user to map phys addr 4G

2009-11-21 Thread Jan Kiszka
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...@xxx
^^^
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

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




signature.asc
Description: OpenPGP digital signature
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core