diff mbox

uvesafb: abort initialization if video=uvesafb is not set

Message ID 1396791873-22606-1-git-send-email-lxnay@sabayon.org (mailing list archive)
State New, archived
Headers show

Commit Message

Fabio Erculiani April 6, 2014, 1:44 p.m. UTC
From: Fabio Erculiani <lxnay@sabayon.org>

This patch makes possible to ship kernels with both vesafb and uvesafb
in order to guarantee a smooth transition to uvesafb and cope with
potential incompatibiles introduced by uvesafb making possible to disable
it via cmdline.

In case both vesafb and uvesafb are built-in, the kernel will try to
initialize both, which makes possible to select the wanted one using
either video=vesafb:... or video=uvesafb:....
In this way, old distro installations will keep working as before while
new ones can adopt video=uvesafb.

The behaviour does not change if uvesafb is built as a module.
---
 drivers/video/uvesafb.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Tomi Valkeinen May 9, 2014, 10:06 a.m. UTC | #1
On 06/04/14 16:44, lxnay@sabayon.org wrote:
> From: Fabio Erculiani <lxnay@sabayon.org>
> 
> This patch makes possible to ship kernels with both vesafb and uvesafb
> in order to guarantee a smooth transition to uvesafb and cope with
> potential incompatibiles introduced by uvesafb making possible to disable
> it via cmdline.
> 
> In case both vesafb and uvesafb are built-in, the kernel will try to
> initialize both, which makes possible to select the wanted one using
> either video=vesafb:... or video=uvesafb:....
> In this way, old distro installations will keep working as before while
> new ones can adopt video=uvesafb.
> 
> The behaviour does not change if uvesafb is built as a module.
> ---
>  drivers/video/uvesafb.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c
> index d428445..04c4742 100644
> --- a/drivers/video/uvesafb.c
> +++ b/drivers/video/uvesafb.c
> @@ -1957,6 +1957,10 @@ static int uvesafb_init(void)
>  
>  	if (fb_get_options("uvesafb", &option))
>  		return -ENODEV;
> +	if (!option || !*option)
> +		/* if vesafb is enabled, this will make possible to fallback to it */
> +		return -ENODEV;
> +
>  	uvesafb_setup(option);
>  #endif
>  	err = cn_add_callback(&uvesafb_cn_id, "uvesafb", uvesafb_cn_callback);
> 

I'm not familiar with vesa fbs, so I'd like to hear from other people if
this change is ok. Cc'd a bunch of random people from git log.
Reviewed-by, tested-by, acked-by from anyone?

 Tomi
wang yanqing May 12, 2014, 8:48 a.m. UTC | #2
On Fri, May 09, 2014 at 01:06:44PM +0300, Tomi Valkeinen wrote:
> On 06/04/14 16:44, lxnay@sabayon.org wrote:
> > From: Fabio Erculiani <lxnay@sabayon.org>
> > 
> > This patch makes possible to ship kernels with both vesafb and uvesafb
> > in order to guarantee a smooth transition to uvesafb and cope with
> > potential incompatibiles introduced by uvesafb making possible to disable
> > it via cmdline.
> > 
> > In case both vesafb and uvesafb are built-in, the kernel will try to
> > initialize both, which makes possible to select the wanted one using
> > either video=vesafb:... or video=uvesafb:....
> > In this way, old distro installations will keep working as before while
> > new ones can adopt video=uvesafb.
> > 
> > The behaviour does not change if uvesafb is built as a module.
> > ---
> >  drivers/video/uvesafb.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c
> > index d428445..04c4742 100644
> > --- a/drivers/video/uvesafb.c
> > +++ b/drivers/video/uvesafb.c
> > @@ -1957,6 +1957,10 @@ static int uvesafb_init(void)
> >  
> >  	if (fb_get_options("uvesafb", &option))
> >  		return -ENODEV;
> > +	if (!option || !*option)
> > +		/* if vesafb is enabled, this will make possible to fallback to it */
> > +		return -ENODEV;
> > +
> >  	uvesafb_setup(option);
> >  #endif
> >  	err = cn_add_callback(&uvesafb_cn_id, "uvesafb", uvesafb_cn_callback);
> > 
I don't think it is right, this patch force uvesafb user to set uvesafb kernel cmdline
options, but what about the default setting? If user use UVESAFB_DEFAULT_MODE before, then
he or she have to add useless cmdline options to make uvesafb work for it in future kernel.

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Herrmann May 12, 2014, 10:34 a.m. UTC | #3
Hi

On Sun, Apr 6, 2014 at 3:44 PM,  <lxnay@sabayon.org> wrote:
> From: Fabio Erculiani <lxnay@sabayon.org>
>
> This patch makes possible to ship kernels with both vesafb and uvesafb
> in order to guarantee a smooth transition to uvesafb and cope with
> potential incompatibiles introduced by uvesafb making possible to disable
> it via cmdline.
>
> In case both vesafb and uvesafb are built-in, the kernel will try to
> initialize both, which makes possible to select the wanted one using
> either video=vesafb:... or video=uvesafb:....
> In this way, old distro installations will keep working as before while
> new ones can adopt video=uvesafb.

Why would you want vesafb _and_ uvesafb built-in? Ship them as modules
and let users blacklist the modules they don't want. I mean the
problem you describe is specific to distros. Embedded devices or other
specific use-cases can explicitly disable any unwanted module. And for
distros I cannot see why we should support both as built-in modules.

_Iff_ you want this as in-kernel option, I'd recommend looking at the
sysfb stuff. uvesafb could easily claim the vesa-framebuffer and thus
unload any generic drivers like vesafb.

Thanks
David
--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c
index d428445..04c4742 100644
--- a/drivers/video/uvesafb.c
+++ b/drivers/video/uvesafb.c
@@ -1957,6 +1957,10 @@  static int uvesafb_init(void)
 
 	if (fb_get_options("uvesafb", &option))
 		return -ENODEV;
+	if (!option || !*option)
+		/* if vesafb is enabled, this will make possible to fallback to it */
+		return -ENODEV;
+
 	uvesafb_setup(option);
 #endif
 	err = cn_add_callback(&uvesafb_cn_id, "uvesafb", uvesafb_cn_callback);