Hi Benjamin, On Thursday 01 Dec 2016 08:24:50 Benjamin Gaignard wrote: > 2016-12-01 2:13 GMT+01:00 Laurent Pinchart: > > On Wednesday 30 Nov 2016 20:46:23 Benjamin Gaignard wrote: > >> 2016-11-30 20:39 GMT+01:00 Laurent Pinchart: > >>> On Wednesday 30 Nov 2016 20:34:17 Benjamin Gaignard wrote: > >>>> If HAVE_ARCH_FB_UNMAPPED_AREA is set and get_fb_unmapped_area > >>>> function not defined in platform architecture let use a default > >>>> function. > >>>> > >>>> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@xxxxxxxxxx> > >>>> --- > >>>> > >>>> drivers/video/fbdev/core/fbmem.c | 15 +++++++++++++++ > >>>> 1 file changed, 15 insertions(+) > >>>> > >>>> diff --git a/drivers/video/fbdev/core/fbmem.c > >>>> b/drivers/video/fbdev/core/fbmem.c index 76c1ad9..54488ee 100644 > >>>> --- a/drivers/video/fbdev/core/fbmem.c > >>>> +++ b/drivers/video/fbdev/core/fbmem.c > >>>> @@ -1492,6 +1492,21 @@ static long fb_compat_ioctl(struct file *file, > >>>> unsigned int cmd, > >>>> return 0; > >>>> } > >>>> > >>>> +#if defined(HAVE_ARCH_FB_UNMAPPED_AREA) && > >>>> !defined(get_fb_unmapped_area) > >>> > >>> I think I've asked this twice already, how is that possible ? > >> > >> As you said before only sparc and blackfin architectures have define > >> HAVE_ARCH_FB_UNMAPPED_AREA and get_fb_unmapped_area(). > >> For stm32f4 (ARMv7m) I plan to only add HAVE_ARCH_FB_UNMAPPED_AREA and > >> use this default function > > > > Ah, so it's for support of a future patch. You should explain that in the > > commit message. > > OK > > > The other question I asked was whether it would be possible to come up > > with a generic implementation of this function that would work on all > > architectures. At first sight the blackfin implementation is similar, but > > the sparc one is quite different. Why does it have to be arch-specific ? > > I don't know but I guess it is link to how memory is mmapped by the > architecture Well, how about trying to find out then ? :-) > >> By testing those two flags I avoid to define twince > >> get_fb_unmapped_area() if the architecture already > >> provide it. > >> > >>>> +unsigned long get_fb_unmapped_area(struct file *filp, > >>>> + unsigned long addr, unsigned long > >>>> len, > >>>> + unsigned long pgoff, unsigned long > >>>> flags) > >>>> +{ > >>>> + struct fb_info * const info = filp->private_data; > >>>> + unsigned long fb_size = PAGE_ALIGN(info->fix.smem_len); > >>>> + > >>>> + if (pgoff > fb_size || len > fb_size - pgoff) > >>>> + return -EINVAL; > >>>> + > >>>> + return (unsigned long)info->screen_base + pgoff; > >>>> +} > >>>> +#endif > >>>> + > >>>> static const struct file_operations fb_fops = { > >>>> .owner = THIS_MODULE, > >>>> .read = fb_read, -- Regards, Laurent Pinchart _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel