From: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
To: "Bruno Prémont" <bonbons@linux-vserver.org>
Cc: linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
Bernie Thompson <bernie@plugable.com>
Subject: Re: [Patch, RFC] Make struct fb_info ref-counted with kref
Date: Mon, 20 Sep 2010 19:05:29 +0000 [thread overview]
Message-ID: <4C97B079.8050707@gmx.de> (raw)
In-Reply-To: <20100919190240.65762511@neptune.home>
Hi Bruno,
Bruno Prémont schrieb:
> Hi Florian,
>
> On Sun, 19 September 2010 Florian Tobias Schandinat <FlorianSchandinat@gmx.de> wrote:
>> Hi,
>>
>> Bruno Prémont schrieb:
>>> For USB-attached (or other hot-(un)pluggable) framebuffers the current
>>> fbdev infrastructure is not very helpful. Each such driver currently
>>> needs to perform the ref-counting on its own in .fbops.fb_open and
>>> .fbops.fb_release callbacks.
>> I agree. This is a great idea even for non-hot-(un)pluggable framebuffers.
>
> Yes, things like drmfb and drivers of multi-head capable framebuffer
> drivers would certainly appreciate as well, but they will probably also
> want to care about users (of fb_info.screen_base).
I don't see any special users of fb_info.screen_base. It's only used for
software fallbacks of acceleration functions and fb_read/fb_write (which I'd
consider rare to fb_mmap). The bad thing of screen_base is that it can make
viafb try to map up to 512MB on 32 bit systems...
Much more painful IMHO are the mmaped areas in userspace which essentially
prevent moving around of the screen framebuffer inside the video ram.
>>> If you have concerns regarding the API changes, please let me know.
>> Uhm, I'm not really happy with what we count. With the old method you mentioned
>> we ref-counted framebuffer users, after your patch it's more counting users +
>> uses. This might be okay as we usually are interested whether the ref_count is 0
>> or not but it doesn't look right if we modify the refcount during nearly every
>> framebuffer operation. Wouldn't it be sufficient to do the refcounting in
>> fb_open & fb_release operation + in fbcon where open&release are done?
>
> Well I'm more for counting the uses, (especially as the aim is to not
> force the driver to look exactly when it can free the fb_info struct).
> If the driver needs to know about active users (e.g. for handling memory
> reorganization on mode change or the like) that would remain driver's job.
I don't see how your counting would influence the time fb_info is freed. It is
freed when the last reference is gone but the last remaining reference is always
a user reference either from the framebuffer itself or from any user. But all
users have to keep the framebuffer open to do anything with it therfore the last
thing they do is releasing the framebuffer. So I do not really understand your
reasoning, for me counting the users + uses is more error prone than just the
users. But that's not important for me as I'm only interested in whether the
count is 0, 1 or more (want to turn off the screen if there are no active [=1]
users) which is the same regardless on what you count. So if you really want to
stick to your way of counting, that's no problem for me.
>>> diff --git a/drivers/video/fbsysfs.c b/drivers/video/fbsysfs.c
>>> index 0a08f13..be5f342 100644
>>> --- a/drivers/video/fbsysfs.c
>>> +++ b/drivers/video/fbsysfs.c
>>> @@ -58,6 +58,7 @@ struct fb_info *framebuffer_alloc(size_t size, struct device *dev)
>>> info->par = p + fb_info_size;
>>>
>>> info->device = dev;
>>> + kref_init(&info->refcount);
>> As far as I know there exist framebuffer drivers which do not call
>> framebuffer_alloc but contain their own fb_info. I guess these would be broken
>> as well.
>
> For those it would be better to switch them to be using framebuffer_alloc.
I don't see any argument against this.
Thanks,
Florian Tobias Schandinat
next prev parent reply other threads:[~2010-09-20 19:05 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-19 15:28 [Patch, RFC] Make struct fb_info ref-counted with kref Bruno Prémont
2010-09-19 16:47 ` Florian Tobias Schandinat
2010-09-19 17:02 ` Bruno Prémont
2010-09-20 19:05 ` Florian Tobias Schandinat [this message]
2010-09-20 19:32 ` Bruno Prémont
2010-09-20 20:08 ` Florian Tobias Schandinat
2010-09-20 20:36 ` Bruno Prémont
2010-09-20 22:28 ` Florian Tobias Schandinat
2010-09-21 5:56 ` Bruno Prémont
2010-09-21 6:39 ` Florian Tobias Schandinat
2010-09-21 7:02 ` Bruno Prémont
2010-09-22 17:31 ` James Simmons
2010-09-22 18:39 ` Bruno Prémont
2010-09-22 19:14 ` James Simmons
2010-09-22 19:35 ` Bruno Prémont
2010-09-20 19:34 ` Guennadi Liakhovetski
2010-09-20 20:14 ` Bruno Prémont
2010-09-20 20:27 ` Guennadi Liakhovetski
2010-09-21 10:44 ` Michel Dänzer
2010-09-20 8:27 ` Geert Uytterhoeven
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C97B079.8050707@gmx.de \
--to=florianschandinat@gmx.de \
--cc=bernie@plugable.com \
--cc=bonbons@linux-vserver.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).