diff mbox

[xf86-video-intel] uxa: only call intel_sync_close when built with HAVE_DRI3

Message ID 20160902105822.57600-1-jsg@jsg.id.au (mailing list archive)
State New, archived
Headers show

Commit Message

Jonathan Gray Sept. 2, 2016, 10:58 a.m. UTC
Avoid calling a function only built with dri3, fixes an undefined
symbol crash when opting into uxa reported by Walter Alejandro Iglesias
when running OpenBSD.

Signed-off-by: Jonathan Gray <jsg@jsg.id.au>
---
 src/uxa/intel_driver.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Chris Wilson Sept. 5, 2016, 9:04 a.m. UTC | #1
On Fri, Sep 02, 2016 at 08:58:22PM +1000, Jonathan Gray wrote:
> Avoid calling a function only built with dri3, fixes an undefined
> symbol crash when opting into uxa reported by Walter Alejandro Iglesias
> when running OpenBSD.
> 
> Signed-off-by: Jonathan Gray <jsg@jsg.id.au>
> ---
>  src/uxa/intel_driver.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/src/uxa/intel_driver.c b/src/uxa/intel_driver.c
> index 3703c41..9fb05c4 100644
> --- a/src/uxa/intel_driver.c
> +++ b/src/uxa/intel_driver.c
> @@ -1191,7 +1191,9 @@ static Bool I830CloseScreen(CLOSE_SCREEN_ARGS_DECL)
>  		intel->dri3 = DRI_NONE;
>  	}
>  
> +#if HAVE_DRI3
>  	intel_sync_close(screen);
> +#endif

In src/uxa/intel.h, we have

#if HAVE_DRI3
Bool intel_sync_init(ScreenPtr screen);
void intel_sync_close(ScreenPtr screen);
#else
static inline Bool intel_sync_init(ScreenPtr screen) { return 0; }
static inline void intel_sync_close(ScreenPtr screen) { }
#endif

Ideas?
-Chris
Jonathan Gray Sept. 5, 2016, 11:10 a.m. UTC | #2
On Mon, Sep 05, 2016 at 10:04:33AM +0100, Chris Wilson wrote:
> On Fri, Sep 02, 2016 at 08:58:22PM +1000, Jonathan Gray wrote:
> > Avoid calling a function only built with dri3, fixes an undefined
> > symbol crash when opting into uxa reported by Walter Alejandro Iglesias
> > when running OpenBSD.
> > 
> > Signed-off-by: Jonathan Gray <jsg@jsg.id.au>
> > ---
> >  src/uxa/intel_driver.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/src/uxa/intel_driver.c b/src/uxa/intel_driver.c
> > index 3703c41..9fb05c4 100644
> > --- a/src/uxa/intel_driver.c
> > +++ b/src/uxa/intel_driver.c
> > @@ -1191,7 +1191,9 @@ static Bool I830CloseScreen(CLOSE_SCREEN_ARGS_DECL)
> >  		intel->dri3 = DRI_NONE;
> >  	}
> >  
> > +#if HAVE_DRI3
> >  	intel_sync_close(screen);
> > +#endif
> 
> In src/uxa/intel.h, we have
> 
> #if HAVE_DRI3
> Bool intel_sync_init(ScreenPtr screen);
> void intel_sync_close(ScreenPtr screen);
> #else
> static inline Bool intel_sync_init(ScreenPtr screen) { return 0; }
> static inline void intel_sync_close(ScreenPtr screen) { }
> #endif
> 
> Ideas?
> -Chris

Sorry I should have mentioned it was with 2.99.916 which has

#if HAVE_DRI3
Bool intel_sync_init(ScreenPtr screen);
void intel_sync_close(ScreenPtr screen);
#else
static inline Bool intel_sync_init(ScreenPtr screen) { return 0; }
void intel_sync_close(ScreenPtr screen);
#endif

As the latest 2.99.917 release was causing some issues on broadwell
before we made broadwell use modesetting.

I'll revert the patch locally and pull in

commit 067115a51b2646538a38ba603c688233c61e23cd
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Sep 15 08:44:41 2014 +0100

    uxa: Stub out intel_sync_init|fini when not compiled in
    
    In order to fix the build without DRI3, we need to stub out the
    functions not compiled in, such as intel_sync_fini().
    
    Reported-by: Sedat Dilek <sedat.dilek@gmail.com>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Chris Wilson Sept. 5, 2016, 11:28 a.m. UTC | #3
On Mon, Sep 05, 2016 at 09:10:02PM +1000, Jonathan Gray wrote:
> On Mon, Sep 05, 2016 at 10:04:33AM +0100, Chris Wilson wrote:
> > On Fri, Sep 02, 2016 at 08:58:22PM +1000, Jonathan Gray wrote:
> > > Avoid calling a function only built with dri3, fixes an undefined
> > > symbol crash when opting into uxa reported by Walter Alejandro Iglesias
> > > when running OpenBSD.
> > > 
> > > Signed-off-by: Jonathan Gray <jsg@jsg.id.au>
> > > ---
> > >  src/uxa/intel_driver.c | 2 ++
> > >  1 file changed, 2 insertions(+)
> > > 
> > > diff --git a/src/uxa/intel_driver.c b/src/uxa/intel_driver.c
> > > index 3703c41..9fb05c4 100644
> > > --- a/src/uxa/intel_driver.c
> > > +++ b/src/uxa/intel_driver.c
> > > @@ -1191,7 +1191,9 @@ static Bool I830CloseScreen(CLOSE_SCREEN_ARGS_DECL)
> > >  		intel->dri3 = DRI_NONE;
> > >  	}
> > >  
> > > +#if HAVE_DRI3
> > >  	intel_sync_close(screen);
> > > +#endif
> > 
> > In src/uxa/intel.h, we have
> > 
> > #if HAVE_DRI3
> > Bool intel_sync_init(ScreenPtr screen);
> > void intel_sync_close(ScreenPtr screen);
> > #else
> > static inline Bool intel_sync_init(ScreenPtr screen) { return 0; }
> > static inline void intel_sync_close(ScreenPtr screen) { }
> > #endif
> > 
> > Ideas?
> > -Chris
> 
> Sorry I should have mentioned it was with 2.99.916 which has
> 
> #if HAVE_DRI3
> Bool intel_sync_init(ScreenPtr screen);
> void intel_sync_close(ScreenPtr screen);
> #else
> static inline Bool intel_sync_init(ScreenPtr screen) { return 0; }
> void intel_sync_close(ScreenPtr screen);
> #endif
> 
> As the latest 2.99.917 release was causing some issues on broadwell
> before we made broadwell use modesetting.

That is more likely to be a bug in your kernel.
-Chris
diff mbox

Patch

diff --git a/src/uxa/intel_driver.c b/src/uxa/intel_driver.c
index 3703c41..9fb05c4 100644
--- a/src/uxa/intel_driver.c
+++ b/src/uxa/intel_driver.c
@@ -1191,7 +1191,9 @@  static Bool I830CloseScreen(CLOSE_SCREEN_ARGS_DECL)
 		intel->dri3 = DRI_NONE;
 	}
 
+#if HAVE_DRI3
 	intel_sync_close(screen);
+#endif
 
 	scrn->vtSema = FALSE;
 	return TRUE;