Optimus Laptop, 319.12, Screen 1 deleted because of no matching config section

Hi everyone. I’m trying to get the new Optimus functionality of driver 319.12 working.

Specs:
Dell XPS 15 (L501X)
GeForce GT 420M
Intel i915 integrated graphics
Intel Core i5 CPU M 560

Software:
Ubuntu 13.04
Linux 3.9.0-030900rc6-generic
nVidia 319.12 driver
X.Org X Server 1.14.0 (xorg-server 2:1.14.0-0ubuntu0.1)
xrandr program version 1.4.0
Server reports RandR version 1.4
xserver-xorg-video-modesetting 0.7.0-0ubuntu2.1
xserver-xorg-video-intel 2:2.21.6-0ubuntu4.1

I’ve followed the instructions in the readme:
http://us.download.nvidia.com/XFree86/Linux-x86/319.12/README/randr14.html
As well as instructions here to get the latest xorg libraries etc:
http://paste.ubuntu.com/5606194/

When X starts, I get a blank screen. However, this isn’t the blank screen bug widely reported (https://devtalk.nvidia.com/default/topic/539322/blank-screen-with-319-12-on-optimus-laptop/?offset=13) because I can’t even start X with the modesetting or the intel driver running for the Intel card

This error appears in the X log (full log below):
[ 47927.112] (II) modesetting(1): using drv /dev/dri/card0
[ 47927.112] (II) modesetting(G0): using drv /dev/dri/card0
[ 47927.112] (EE) Screen 1 deleted because of no matching config section.
[ 47927.112] (II) UnloadModule: “modesetting”

I assume “Screen 1” is the intel screen, and the device section is clearly there. Also I’ve tried using the intel driver instead of modesetting with the same results (UnloadModule: “intel”)

Obviously I can’t see the two providers because I can’t load X with the current configuration but this is how it looks running on the intel card:
$ xrandr --listproviders
Providers: number : 1
Provider 0: id: 0x45 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 2 outputs: 4 associated providers: 0 name:Intel

Also, I am positive the BusID (“PCI:02:00:0”) for the nvidia card is correct since that is the one I used in Bumblebee’s (working) configuration in the past

Any idea what the problem could be ? Thanks.

UPDATE:
I don’t know if this is relevant, but when starting X with no xorg.conf (running on the intel card), Xorg.0.log shows:
[ 492.463] (II) intel(0): SNA compiled: xserver-xorg-video-intel 2:2.21.6-0ubuntu4.1 (Bryce Harrington bryce@ubuntu.com)
[ 492.463] (EE) [drm] KMS not enabled
[ 492.463] (WW) Falling back to old probe method for vesa
[ 492.463] (II) modesetting(G0): using drv /dev/dri/card1
[ 492.463] (WW) Falling back to old probe method for modesetting
[ 492.463] (WW) Falling back to old probe method for fbdev

However DRM should be working since I have i915.modeset=1 on my kernel command-line and dmesg gives:
[ 2.347297] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
and
$ sudo cat /sys/module/i915/parameters/modeset
1

Xorg.0.log:
http://paste.org.ru/?kl99bn

~/.xinitrc:
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

xorg.conf:

Section "Files"
	ModulePath "/usr/lib/nvidia-319/xorg,/usr/lib/x86_64-linux-gnu/xorg/extra-modules,/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules"
EndSection

Section "ServerLayout"
    Identifier "layout"
    Screen 0 "nvidia"
    Inactive "intel"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:02:00:0"
EndSection

Section "Screen"
    Identifier "nvidia"
    Device "nvidia"
    # Uncomment this line if your computer has no display devices connected to
    # the NVIDIA GPU.  Leave it commented if you have display devices
    # connected to the NVIDIA GPU that you would like to use.
    Option "UseDisplayDevice" "none"
#    SubSection "Display"
#    	Modes "nvidia-auto-select"
#    EndSubSection
EndSection

Section "Device"
    Identifier "intel"
    Driver "modesetting"
    #Driver "intel"
EndSection

Section "Screen"
    Identifier "intel"
    Device "intel"
EndSection

nvidia-bug-report.log.gz (78.4 KB)

Ok I didn’t realise the other thread (https://devtalk.nvidia.com/default/topic/539322/linux/blank-screen-with-319-12-on-optimus-laptop/) has people with a working setup even though the “Screen 1 deleted” error appears. This one should be deleted then. My bad

FWIW, I’ve been able to start X (stuck at the blank screen) and see the 2 providers by issuing xrandr from a virtual console:

$ xrandr -d :0 --listproviders
Providers: number : 2
Provider 0: id: 0x2a6 cap: 0x1, Source Output crtcs: 0 outputs: 0 associated providers: 0 name:NVIDIA-0
Provider 1: id: 0x45 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 2 outputs: 4 associated providers: 0 name:Intel

I’ve determined that the command

xrandr --setprovideroutputsource Intel NVIDIA-0
or
xrandr --setprovideroutputsource modesetting NVIDIA-0

causes my X server to crash. The backtrace wasn’t very useful so I set out to get the relevant debugging symbols but then I couldn’t get X to start at all. For some reason it didn’t like the combination of nvidia driver 319.12 and the server I was using at the time (1.14.0 or 1.14.1) or whatnot.

After hours downgrading packages and putting my system back into a functional state, I’m not going to try it again. But here’s the backtrace I was able to get anyway. It doesn’t look that useful to me but whatever

Program received signal SIGSEGV, Segmentation fault.
0x00007f56dbed4b84 in ?? () from /usr/lib/x86_64-linux-gnu/xorg/extra-modules/nvidia_drv.so
(gdb) backtrace full
#0  0x00007f56dbed4b84 in ?? () from /usr/lib/x86_64-linux-gnu/xorg/extra-modules/nvidia_drv.so
No symbol table info available.
#1  0x00007f56db7ba583 in wfbBlt (srcLine=0x7f56e3b90ad0, srcStride=<optimized out>, srcStride@entry=40, srcX=-32, dstLine=0x40, dstStride=<optimized out>, 
    dstStride@entry=16, dstX=32, width=256, height=<optimized out>, alu=alu@entry=3, pm=pm@entry=4294967295, bpp=bpp@entry=32, reverse=reverse@entry=0, 
    upsidedown=upsidedown@entry=0) at ../../fb/fbblt.c:178
        src = 0x7f56e3b90a34
        dst = 0x4
        leftShift = <optimized out>
        rightShift = <optimized out>
        startmask = 0
        endmask = 0
        bits = <optimized out>
        bits1 = <optimized out>
        n = <optimized out>
        nmiddle = 8
        destInvarient = 1
        startbyte = 0
        endbyte = 0
        careful = <optimized out>
        _ca1 = 0
        _cx1 = 0
        _ca2 = 4294967295
        _cx2 = 0
#2  0x00007f56db7bdfe0 in wfbCopyNtoN (pSrcDrawable=0x7f56e3a35690, pDstDrawable=0x7f56e392df00, pGC=<optimized out>, pbox=0x7ffffce069d0, nbox=<optimized out>, dx=8, 
    dy=5, reverse=0, upsidedown=0, bitplane=0, closure=0x0) at ../../fb/fbcopy.c:96
        alu = <optimized out>
        pm = 4294967295
        src = 0x7f56e3b906f0
        srcStride = 40
        srcBpp = 32
        srcXoff = 0
        srcYoff = 0
        dst = 0x0
        dstStride = 16
        dstBpp = 32
        dstXoff = 0
        dstYoff = 0
#3  0x00007f56e2ceaf35 in miCopyRegion (pSrcDrawable=pSrcDrawable@entry=0x7f56e3a35690, pDstDrawable=pDstDrawable@entry=0x7f56e392df00, pGC=pGC@entry=0x7f56e39fc120, 
    pDstRegion=pDstRegion@entry=0x7ffffce069d0, dx=dx@entry=8, dy=dy@entry=5, copyProc=copyProc@entry=0x7f56db7bdca0 <wfbCopyNtoN>, bitPlane=bitPlane@entry=0, 
    closure=closure@entry=0x0) at ../../mi/micopy.c:121
        careful = <optimized out>
        reverse = 0
        upsidedown = <optimized out>
        pbox = 0x7ffffce069d0
        nbox = 1
        pboxNew1 = <optimized out>
        pboxNew2 = <optimized out>
        pboxBase = <optimized out>
        pboxNext = <optimized out>
        pboxTmp = <optimized out>
#4  0x00007f56e2ceb4d6 in miDoCopy (pSrcDrawable=0x7f56e3a35690, pDstDrawable=0x7f56e392df00, pGC=0x7f56e39fc120, xIn=0, yIn=0, widthSrc=40, 
    heightSrc=heightSrc@entry=40, xOut=xOut@entry=-8, yOut=yOut@entry=-5, copyProc=0x7f56db7bdca0 <wfbCopyNtoN>, bitPlane=bitPlane@entry=0, closure=closure@entry=0x0)
    at ../../mi/micopy.c:297
        prgnSrcClip = 0x0
        freeSrcClip = 0
        prgnExposed = 0x0
        rgnDst = {extents = {x1 = 0, y1 = 0, x2 = 8, y2 = 8}, data = 0x0}
        dx = 8
        dy = 5
        box_x1 = <optimized out>
        box_y1 = <optimized out>
        box_x2 = <optimized out>
        box_y2 = <optimized out>
        fastSrc = <optimized out>
        fastDst = <optimized out>
        fastExpose = <optimized out>
#5  0x00007f56db7be916 in wfbCopyArea (pSrcDrawable=<optimized out>, pDstDrawable=<optimized out>, pGC=<optimized out>, xIn=<optimized out>, yIn=<optimized out>, 
    widthSrc=<optimized out>, heightSrc=40, xOut=-8, yOut=-5) at ../../fb/fbcopy.c:277
        copy = <optimized out>
#6  0x00007f56dc30fff9 in ?? () from /usr/lib/x86_64-linux-gnu/xorg/extra-modules/nvidia_drv.so
No symbol table info available.
#7  0x00007f56e2c975ed in damageCopyArea (pSrc=0x7f56e3a35690, pDst=0x7f56e392df00, pGC=0x7f56e39fc120, srcx=0, srcy=<optimized out>, width=40, height=40, dstx=-8, 
    dsty=-5) at ../../../miext/damage/damage.c:825
        ret = <optimized out>
        pGCPriv = 0x7f56e39fc1c0
        oldFuncs = 0x7f56e2f8c400 <damageGCFuncs>
#8  0x00007f56e2cec437 in miDCRestoreUnderCursor (pDev=pDev@entry=0x7f56e39f9840, pScreen=pScreen@entry=0x7f56e38e9e10, x=-8, y=-5, w=40, h=40)
    at ../../mi/midispcur.c:451
        pBuffer = <optimized out>
        pSave = <optimized out>
        pWin = 0x7f56e392df00
        pGC = 0x7f56e39fc120
#9  0x00007f56e2cfb59a in miSpriteRemoveCursor (pScreen=0x7f56e38e9e10, pDev=0x7f56e39f9840) at ../../mi/misprite.c:852
        pScreenPriv = 0x7f56e38ecda0
        pCursorInfo = 0x7f56e39f9bd8
#10 miSpriteRemoveCursor (pDev=0x7f56e39f9840, pScreen=0x7f56e38e9e10) at ../../mi/misprite.c:836
No locals.
#11 0x00007f56e2cfc21b in miSpriteReportDamage (pDamage=<optimized out>, pRegion=0x7ffffce06c90, closure=0x7f56e38e9e10) at ../../mi/misprite.c:276
        pScreen = 0x7f56e38e9e10
        pCursorInfo = <optimized out>
        pDev = 0x7f56e39f9840
#12 0x00007f56e2c93784 in DamageReportDamage (pDamage=pDamage@entry=0x7f56e38ee300, pDamageRegion=pDamageRegion@entry=0x7ffffce06c90)
    at ../../../miext/damage/damage.c:2015
        tmpBox = <optimized out>
        tmpRegion = {extents = {x1 = 0, y1 = 0, x2 = 0, y2 = 0}, data = 0x7f56e392df00}
        was_empty = <optimized out>
#13 0x00007f56e2c93ad6 in damageRegionAppend (pDrawable=0x7f56e392df00, pRegion=pRegion@entry=0x7ffffce06cf0, clip=clip@entry=1, subWindowMode=<optimized out>)
    at ../../../miext/damage/damage.c:313
        pScreen = <optimized out>
        pScrPriv = 0x7f56e38ecd20
        pDamage = 0x7f56e38ee300
        pNext = 0x7f56e4138f80
        clippedRec = {extents = {x1 = 0, y1 = 0, x2 = 8, y2 = 8}, data = 0x0}
        pDamageRegion = 0x7ffffce06c90
        pixClip = {extents = {x1 = 0, y1 = 0, x2 = 8, y2 = 8}, data = 0x0}
        draw_x = 0
        draw_y = 0
        screen_x = <optimized out>
        screen_y = <optimized out>
#14 0x00007f56e2c93c68 in damageDamageBox (pDrawable=<optimized out>, pBox=pBox@entry=0x7ffffce06d70, subWindowMode=<optimized out>)
    at ../../../miext/damage/damage.c:377
        region = {extents = {x1 = 0, y1 = 0, x2 = 8, y2 = 8}, data = 0x0}
#15 0x00007f56e2c94600 in damageComposite (op=<optimized out>, pSrc=0x7f56e3e2e4a0, pMask=0x0, pDst=0x7f56e3be80b0, xSrc=<optimized out>, ySrc=<optimized out>, xMask=0, 
    yMask=0, xDst=0, yDst=-27, width=8, height=35) at ../../../miext/damage/damage.c:560
        box = {x1 = 0, y1 = 0, x2 = 8, y2 = 8}
        pScreen = <optimized out>
        ps = 0x7f56e38ed850
        pScrPriv = 0x7f56e38ecd20
#16 0x00007f56e2c43d40 in compWindowUpdateAutomatic (pWin=<optimized out>) at ../../composite/compwindow.c:682
        pScreen = <optimized out>
        subwindowMode = 1
        pRegion = 0x7f56e3ef7ab0
        pSrcPicture = 0x7f56e3e2e4a0
        cw = 0x7f56e3ef7810
        pParent = 0x7f56e392df00
        pSrcPixmap = <optimized out>
        pSrcFormat = <optimized out>
        pDstFormat = <optimized out>
        error = 0
        pDstPicture = 0x7f56e3be80b0
#17 compPaintWindowToParent (pWin=0x7f56e3ef78e0) at ../../composite/compwindow.c:706
No locals.
#18 compPaintChildrenToWindow (pWin=0x7f56e392df00) at ../../composite/compwindow.c:721
        pChild = 0x7f56e3ef78e0
#19 0x00007f56e2c44399 in compScreenUpdate (pScreen=<optimized out>) at ../../composite/compalloc.c:54
No locals.
#20 compBlockHandler (pScreen=0x7f56e38e9e10, pTimeout=0x7ffffce06ed8, pReadmask=0x7f56e2f9d440 <LastSelectMask>) at ../../composite/compalloc.c:63
        cs = 0x7f56e3928550
#21 0x00007f56e2bb8b54 in BlockHandler (pTimeout=pTimeout@entry=0x7ffffce06ed8, pReadmask=pReadmask@entry=0x7f56e2f9d440 <LastSelectMask>) at ../../dix/dixutils.c:387
        i = <optimized out>
        j = <optimized out>
#22 0x00007f56e2d08fc4 in WaitForSomething (pClientsReady=pClientsReady@entry=0x7f56e3afd720) at ../../os/WaitFor.c:210
        i = <optimized out>
        waittime = {tv_sec = 13, tv_usec = 585000}
        wt = 0x7ffffce06ee0
        timeout = <optimized out>
        clientsReadable = {fds_bits = {0 <repeats 16 times>}}
        clientsWritable = {fds_bits = {1, 1, 1, 140011161968384, 140007343915008, 140011161530592, 140011161706560, 140011149259087, 140737435955168, 140737435955160, 
            2251834173554690, 206158430224, 140737435955376, 140737435955168, 140737435955476, 140011170518736}}
        selecterr = <optimized out>
        nready = 0
        devicesReadable = {fds_bits = {57, 140011170565488, 140737435955328, 1, 140011170500048, 140011149277302, 44, 140011147232912, 44, 140011149257725, 
            72057594037927937, 44, 0, 0, 140011170400112, 0}}
        now = <optimized out>
        someReady = <optimized out>
#23 0x00007f56e2bb4831 in Dispatch () at ../../dix/dispatch.c:361
        clientReady = 0x7f56e3afd720
        result = <optimized out>
        client = <optimized out>
        nready = <optimized out>
        icheck = 0x7f56e2f96410 <checkForInput>
        start_tick = <optimized out>
#24 0x00007f56e2ba347a in main (argc=6, argv=0x7ffffce072e8, envp=<optimized out>) at ../../dix/main.c:298
        i = <optimized out>
        alwaysCheckForInput = {0, 1}
(gdb) cont
Continuing.

Program received signal SIGABRT, Aborted.
0x00007f56e08c2037 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56	../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.

In Ubuntu you have to:

  • compile xrandr 1.4 (ubuntu only has 1.35/1.4 mix)
  • use .xsessionrc instead of .xinitrc
  • intel, not modesetting
  • x-staging PPA
  • use autologin (lightdm invisible)

HI Naju

How did you fix the “screen 1 deleted problem”? I got the same one and I could not find the solution in the thread you mentioned.

pogopuschel: Thanks, I’ve tried all that that except autologin. You think it would prevent the crash? I might try it later, although I kind of want to wait until things stabilize a little bit.

Lithlin: I couldn’t fix it either. I was just saying people seem to have this error but their setup is still functional (as in, X boots on nvidia card, no blank screen). But a definite solution would be nice.

Hi Naju,

I have exactly the same problem.
I have the same segfault in gentoo 64 bit.
Have you solved the problem?
If yes what action have you taken?

Regards,

I had the same problem with Fedora. Initially the driver worked properly, then (after getting updates) stopped. It seemed that the main problem was initializing the modesetting driver.

Yesterday I tried the latest NVIDIA drivers, and it works properly, without any problems. It might be possible that in the meantime updates to Fedora/X11 fixed a bug. Try to upgrade your system and download the latest drivers.

Regards,

Jarek.

I ran into the “screen 1 deleted” problem a few days ago, after i upgraded to 352.79. The problem is, that the “intel” screen section is never interpreted. This is because in the ServerLayout section it is not referenced (Note that the line “Inactive intel” does not refer to the “intel” screen, but to the “intel” device section!). One way to overcome this, is to add the following line to the ServerLayout section:

Screen 1 "intel"

However, this is probably not what you want, since it will instantiate a second X session on this screen. The trick is to make X interpret the “intel” screen section, without instantiating a X session on it. To achieve this DO NOT add the above mentioned line to your ServerLayout section(!), but just change the line:

Screen 0 "nvidia"

to

Screen 1 "nvidia"

AND place the “intel” screen section above the “nvidia” screen section in your xorg.conf file!

Thus X will watch out for a screen section for screen 0 and will find and interpret the “intel” screen section without starting a X session on it.

I’m aware that this thread is 3 years old. However, it ranks high in search engines and unfortunately it is still relevant =/