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

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to