Hi Linus,
vmware + nouveau staging fixes are the bulk of this.
one vgaarb patch that I found in mmtom but can't find in my inbox for some
reason ah well better late than never.
radeon: fix the Kconfig msg to be more explicit, and some oops crashers
in the presence of bad bioses, along with a get rid of stupid white
borders on fbcon patch.
The following changes since commit e28cab42f384745c8a947a9ccd51e4aae52f5d51:
Linus Torvalds (1):
Merge branch 'i2c-for-linus' of git://git.kernel.org/.../jdelvare/staging
are available in the git repository at:
ssh://master.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git drm-linus
Andy Getzendanner (1):
vgaarb: fix incorrect dereference of userspace pointer.
Ben Skeggs (5):
drm/nouveau: fix non-vram notifier blocks
drm/nv40: make INIT_COMPUTE_MEM a NOP, just like nv50
drm/nouveau: make dp auxch xfer len check for reads only
drm/nv50: prevent multiple init tables being parsed at the same time
drm/nv50: disregard dac outputs in nv50_sor_dpms()
Dave Airlie (7):
drm/radeon/kms: change Kconfig text to reflect the new option.
drm/radeon/kms: don't crash if no DDC bus on VGA/DVI connector.
drm/radeon/kms: add quirk for VGA without DDC on rv730 XFX card.
drm/radeon/kms: fix screen clearing before fbcon.
Merge remote branch 'nouveau/for-airlied' of nouveau-2.6
drm/radeon/kms: retry auxch on 0x20 timeout value.
Merge branch 'drm-radeon-linus' of ../drm-next
Francisco Jerez (1):
drm/nouveau: Fixup semaphores on pre-nv50 cards.
Jakob Bornecrantz (2):
drm/vmwgfx: Report propper framebuffer_{max|min}_{width|height}
drm/vmwgfx: Drop scanout flag compat and add execbuf ioctl parameter members. Bumps major.
Julia Lawall (1):
drivers/gpu/drm/nouveau/nouveau_grctx.c: correct NULL test
Luca Barbieri (1):
drm/nouveau: call ttm_bo_wait with the bo lock held to prevent hang
Maarten Maathuis (4):
drm/nv50: align size of buffer object to the right boundaries.
drm/nv50: avoid unloading pgraph context when ctxprog is running
drm/nv50: delete ramfc object after disabling fifo, not before
drm/nv50: make the pgraph irq handler loop like the pre-nv50 version
Marcin Ko?cielnicki (4):
drm/nouveau: Add module options to disable acceleration.
drm/nouveau: Add getparam to get available PGRAPH units.
drm/nouveau: Fix fbcon on mixed pre-NV50 + NV50 multicard.
drm/nouveau: Add proper vgaarb support.
Marcin Slusarz (1):
drm/nouveau: move dereferences after null checks
Matthew Garrett (1):
nouveau: fix state detection with switchable graphics
Pauli Nieminen (1):
drm/radeon: Skip dma copy test in benchmark if card doesn't have dma engine.
Rafa? Mi?ecki (1):
drm/radeon/kms: suspend and resume audio stuff
Thomas Hellstrom (2):
drm/vmwgfx: Update the user-space interface.
drm/vmwgfx: Fix a circular locking dependency bug.
drivers/gpu/drm/nouveau/nouveau_acpi.c | 12 +-
drivers/gpu/drm/nouveau/nouveau_bios.c | 19 ++--
drivers/gpu/drm/nouveau/nouveau_bios.h | 2 +
drivers/gpu/drm/nouveau/nouveau_bo.c | 10 +-
drivers/gpu/drm/nouveau/nouveau_channel.c | 7 +-
drivers/gpu/drm/nouveau/nouveau_connector.c | 7 +-
drivers/gpu/drm/nouveau/nouveau_dp.c | 10 +-
drivers/gpu/drm/nouveau/nouveau_drv.c | 10 ++-
drivers/gpu/drm/nouveau/nouveau_drv.h | 2 +
drivers/gpu/drm/nouveau/nouveau_fbcon.c | 40 +++++++-
drivers/gpu/drm/nouveau/nouveau_fbcon.h | 6 +
drivers/gpu/drm/nouveau/nouveau_gem.c | 2 +
drivers/gpu/drm/nouveau/nouveau_grctx.c | 4 +-
drivers/gpu/drm/nouveau/nouveau_irq.c | 155 ++++++++++++++++-----------
drivers/gpu/drm/nouveau/nouveau_notifier.c | 13 ++-
drivers/gpu/drm/nouveau/nouveau_object.c | 3 +-
drivers/gpu/drm/nouveau/nouveau_reg.h | 1 +
drivers/gpu/drm/nouveau/nouveau_sgdma.c | 7 +-
drivers/gpu/drm/nouveau/nouveau_state.c | 49 +++++++--
drivers/gpu/drm/nouveau/nv04_fbcon.c | 9 +-
drivers/gpu/drm/nouveau/nv50_crtc.c | 11 ++-
drivers/gpu/drm/nouveau/nv50_fbcon.c | 9 +-
drivers/gpu/drm/nouveau/nv50_fifo.c | 9 +-
drivers/gpu/drm/nouveau/nv50_graph.c | 10 ++-
drivers/gpu/drm/nouveau/nv50_sor.c | 1 +
drivers/gpu/drm/radeon/Kconfig | 12 ++-
drivers/gpu/drm/radeon/atombios_dp.c | 10 ++-
drivers/gpu/drm/radeon/r600.c | 8 ++
drivers/gpu/drm/radeon/r600_audio.c | 3 +-
drivers/gpu/drm/radeon/radeon_atombios.c | 9 ++
drivers/gpu/drm/radeon/radeon_benchmark.c | 55 ++++++----
drivers/gpu/drm/radeon/radeon_connectors.c | 20 ++--
drivers/gpu/drm/radeon/radeon_display.c | 11 ++-
drivers/gpu/drm/radeon/radeon_fb.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 11 +-
drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c | 17 ++--
drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c | 6 +
drivers/gpu/drm/vmwgfx/vmwgfx_irq.c | 13 +--
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 8 +-
drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 16 +---
drivers/gpu/vga/vgaarb.c | 2 +-
include/drm/nouveau_drm.h | 1 +
include/drm/vmwgfx_drm.h | 20 +++-
43 files changed, 402 insertions(+), 230 deletions(-)
Am Donnerstag 11 Februar 2010 05:20:07 schrieb Dave Airlie:
Dave,
I just updated from to rc8 and got the a scheduling while atomic warning in
nouveau. (see below).
...
[ 0.298265] [drm] Initialized drm 1.1.0 20060810
[ 0.298409] nouveau 0000:01:00.0: power state changed by ACPI to D0
[ 0.298420] nouveau 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 0.298426] nouveau 0000:01:00.0: setting latency timer to 64
[ 0.301746] [drm] nouveau 0000:01:00.0: failed to evaluate _DSM: 5
[ 0.303750] ACPI: Battery Slot [BAT0] (battery present)
[ 0.304515] [drm] nouveau 0000:01:00.0: Detected an NV50 generation card (0x084c00a2)
[ 0.305534] [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PRAMIN
[ 0.382604] [drm] nouveau 0000:01:00.0: ... appears to be valid
[ 0.382607] [drm] nouveau 0000:01:00.0: BIT BIOS found
[ 0.382609] [drm] nouveau 0000:01:00.0: Bios version 60.84.51.00
[ 0.382613] [drm] nouveau 0000:01:00.0: TMDS table revision 2.0 not currently supported
[ 0.382614] [drm] nouveau 0000:01:00.0: BIT table 'd' not found
[ 0.382616] [drm] nouveau 0000:01:00.0: Found Display Configuration Block version 4.0
[ 0.382619] [drm] nouveau 0000:01:00.0: DCB connector table: VHER 0x40 5 14 2
[ 0.382621] [drm] nouveau 0000:01:00.0: 0: 0x00000040: type 0x40 idx 0 tag 0xff
[ 0.382623] [drm] nouveau 0000:01:00.0: 1: 0x00000100: type 0x00 idx 1 tag 0xff
[ 0.382626] [drm] nouveau 0000:01:00.0: 2: 0x00001231: type 0x31 idx 2 tag 0x07
[ 0.382628] [drm] nouveau 0000:01:00.0: Raw DCB entry 0: 01000323 00010034
[ 0.382630] [drm] nouveau 0000:01:00.0: Raw DCB entry 1: 02811300 00000028
[ 0.382632] [drm] nouveau 0000:01:00.0: Raw DCB entry 2: 02822312 00010030
[ 0.382633] [drm] nouveau 0000:01:00.0: Raw DCB entry 3: 0000000e 00000000
[ 0.382641] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0xDEBB
[ 0.420125] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0xE208
[ 0.453350] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0xEC55
[ 0.453358] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xED47
[ 0.460091] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xEF7A
[ 0.460093] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table at offset 0xEFDF
[ 0.483353] [drm] nouveau 0000:01:00.0: 0xEFDF: Condition still not met after 20ms, skipping following opcodes
[ 0.483360] [drm] nouveau 0000:01:00.0: 0xD01A: parsing output script 0
[ 0.483362] [drm] nouveau 0000:01:00.0: 0xD190: parsing output script 0
[ 0.600743] [TTM] Zone kernel: Available graphics memory: 1993568 kiB.
[ 0.600755] [drm] nouveau 0000:01:00.0: 256 MiB VRAM
[ 0.632525] [drm] nouveau 0000:01:00.0: 512 MiB GART (aperture)
[ 0.632531] mtrr: type mismatch for e0000000,10000000 old: write-back new: write-combining
[ 0.632541] nouveau 0000:01:00.0: firmware: using built-in firmware nouveau/nv84.ctxprog
[ 0.632545] nouveau 0000:01:00.0: firmware: using built-in firmware nouveau/nv84.ctxvals
[ 0.632801] [drm] nouveau 0000:01:00.0: Allocating FIFO number 1
[ 0.640758] [drm] nouveau 0000:01:00.0: nouveau_channel_alloc: initialised FIFO 1
[ 0.641523] [drm] nouveau 0000:01:00.0: Detected a LVDS output
[ 0.641527] [drm] nouveau 0000:01:00.0: Detected a DAC output
[ 0.641529] [drm] nouveau 0000:01:00.0: Detected a TMDS output
[ 0.641531] [drm] nouveau 0000:01:00.0: Detected a LVDS connector
[ 0.741133] [drm] nouveau 0000:01:00.0: Detected a VGA connector
[ 0.741222] [drm] nouveau 0000:01:00.0: Detected a DVI-D connector
[ 2.173573] [drm] nouveau 0000:01:00.0: allocated 1920x1200 fb: 0x40250000, bo ffff88013b9c5800
[ 2.175406] [drm] nouveau 0000:01:00.0: 0xD01E: parsing output script 1
[ 2.175431] [drm] nouveau 0000:01:00.0: 0xCEC7: parsing clock script 0
[ 2.175437] BUG: scheduling while atomic: nouveau/0/753/0x00000002
[ 2.175439] Modules linked in:
[ 2.175442] Pid: 753, comm: nouveau/0 Not tainted 2.6.33-rc8-prerelease #27
[ 2.175443] Call Trace:
[ 2.175451] [<ffffffff815dcdea>] ? schedule+0x86a/0x880
[ 2.175454] [<ffffffff8120a420>] ? vsnprintf+0xe0/0x9a0
[ 2.175456] [<ffffffff815dd18c>] ? schedule_timeout+0x15c/0x250
[ 2.175460] [<ffffffff81068570>] ? process_timeout+0x0/0x10
[ 2.175462] [<ffffffff81069068>] ? msleep+0x18/0x30
[ 2.175466] [<ffffffff812d48d1>] ? init_time+0x51/0x90
[ 2.175468] [<ffffffff812d3ffb>] ? parse_init_table+0xcb/0x1a0
[ 2.175470] [<ffffffff812d424a>] ? init_sub_direct+0x4a/0xd0
[ 2.175472] [<ffffffff812d3ffb>] ? parse_init_table+0xcb/0x1a0
[ 2.175474] [<ffffffff812d496f>] ? nouveau_bios_run_init_table+0x5f/0xa0
[ 2.175476] [<ffffffff812d4c0c>] ? nouveau_bios_run_display_table+0x25c/0x500
[ 2.175480] [<ffffffff812fd220>] ? nv50_display_irq_handler_bh+0x0/0x410
[ 2.175483] [<ffffffff812fd4cc>] ? nv50_display_irq_handler_bh+0x2ac/0x410
[ 2.175485] [<ffffffff812fd220>] ? nv50_display_irq_handler_bh+0x0/0x410
[ 2.175487] [<ffffffff8107047b>] ? worker_thread+0x16b/0x250
[ 2.175490] [<ffffffff81074240>] ? autoremove_wake_function+0x0/0x30
[ 2.175492] [<ffffffff81070310>] ? worker_thread+0x0/0x250
[ 2.175494] [<ffffffff81070310>] ? worker_thread+0x0/0x250
[ 2.175496] [<ffffffff81073dbe>] ? kthread+0x8e/0xa0
[ 2.175499] [<ffffffff81027554>] ? kernel_thread_helper+0x4/0x10
[ 2.175501] [<ffffffff81073d30>] ? kthread+0x0/0xa0
[ 2.175503] [<ffffffff81027550>] ? kernel_thread_helper+0x0/0x10
[ 2.182407] Console: switching to colour frame buffer device 240x75
[ 2.186632] fb0: nouveaufb frame buffer device
[ 2.186633] registered panic notifier
[ 2.186636] [drm] Initialized nouveau 0.0.15 20090420 for 0000:01:00.0 on minor 0
...
On Mon, Feb 15, 2010 at 10:53:48AM +0100, Christian Borntraeger wrote:
> Am Donnerstag 11 Februar 2010 05:20:07 schrieb Dave Airlie:
>
> Dave,
>
> I just updated from to rc8 and got the a scheduling while atomic warning in
> nouveau. (see below).
Linus' tree is missing two fixes:
drm/nouveau: don't hold spin lock while calling kzalloc with GFP_KERNEL
drm/nouveau: spin_lock_init after memset'ing the bios struct
The first one fixes your bug.
http://cgit.freedesktop.org/nouveau/linux-2.6/commit/?id=ed64797d153ecf0da79b8b849642d7a109fd97fd
http://cgit.freedesktop.org/nouveau/linux-2.6/commit/?id=9da76700072a00c39e21553df0998c7b3b620d88
If they won't go into 2.6.33, they are perfect candidates for -stable.
Marcin
The channel/context switch lock related patches (to the best of
knowledge) haven't even gone outside the nouveau tree, so the initial
damage isn't even there. At least not for the first path. As for the
2nd patch, that one was squished into the original patch for this pull
iirc.
Maarten.
On Mon, Feb 15, 2010 at 9:12 PM, Marcin Slusarz
<[email protected]> wrote:
> On Mon, Feb 15, 2010 at 10:53:48AM +0100, Christian Borntraeger wrote:
>> Am Donnerstag 11 Februar 2010 05:20:07 schrieb Dave Airlie:
>>
>> Dave,
>>
>> I just updated from to rc8 and got the a scheduling while atomic warning in
>> nouveau. (see below).
>
> Linus' tree is missing two fixes:
>
> drm/nouveau: don't hold spin lock while calling kzalloc with GFP_KERNEL
> drm/nouveau: spin_lock_init after memset'ing the bios struct
>
> The first one fixes your bug.
>
> http://cgit.freedesktop.org/nouveau/linux-2.6/commit/?id=ed64797d153ecf0da79b8b849642d7a109fd97fd
> http://cgit.freedesktop.org/nouveau/linux-2.6/commit/?id=9da76700072a00c39e21553df0998c7b3b620d88
>
> If they won't go into 2.6.33, they are perfect candidates for -stable.
>
> Marcin
>
On Mon, Feb 15, 2010 at 09:39:00PM +0100, Maarten Maathuis wrote:
> The channel/context switch lock related patches (to the best of
> knowledge) haven't even gone outside the nouveau tree, so the initial
> damage isn't even there. At least not for the first path. As for the
> 2nd patch, that one was squished into the original patch for this pull
> iirc.
Ouch, you are right.
Sorry for the noise.
Marcin
Am Montag 15 Februar 2010 10:53:48 schrieb Christian Borntraeger:
I think this regression is triggered by
commit 39c9bfb453b748ce220ceefacbe2a5c19fabf67b
Author: Ben Skeggs <[email protected]>
Date: Tue Feb 9 10:22:29 2010 +1000
drm/nv50: prevent multiple init tables being parsed at the same time
One possible solution is to replace the spinlock bios->lock with a mutex,
but there are others ways of fixing this BUG.
CCing Ben.
> [ 2.175437] BUG: scheduling while atomic: nouveau/0/753/0x00000002
> [ 2.175439] Modules linked in:
> [ 2.175442] Pid: 753, comm: nouveau/0 Not tainted 2.6.33-rc8-prerelease #27
> [ 2.175443] Call Trace:
> [ 2.175451] [<ffffffff815dcdea>] ? schedule+0x86a/0x880
> [ 2.175454] [<ffffffff8120a420>] ? vsnprintf+0xe0/0x9a0
> [ 2.175456] [<ffffffff815dd18c>] ? schedule_timeout+0x15c/0x250
> [ 2.175460] [<ffffffff81068570>] ? process_timeout+0x0/0x10
> [ 2.175462] [<ffffffff81069068>] ? msleep+0x18/0x30
> [ 2.175466] [<ffffffff812d48d1>] ? init_time+0x51/0x90
> [ 2.175468] [<ffffffff812d3ffb>] ? parse_init_table+0xcb/0x1a0
> [ 2.175470] [<ffffffff812d424a>] ? init_sub_direct+0x4a/0xd0
> [ 2.175472] [<ffffffff812d3ffb>] ? parse_init_table+0xcb/0x1a0
> [ 2.175474] [<ffffffff812d496f>] ? nouveau_bios_run_init_table+0x5f/0xa0
> [ 2.175476] [<ffffffff812d4c0c>] ? nouveau_bios_run_display_table+0x25c/0x500
> [ 2.175480] [<ffffffff812fd220>] ? nv50_display_irq_handler_bh+0x0/0x410
> [ 2.175483] [<ffffffff812fd4cc>] ? nv50_display_irq_handler_bh+0x2ac/0x410
> [ 2.175485] [<ffffffff812fd220>] ? nv50_display_irq_handler_bh+0x0/0x410
> [ 2.175487] [<ffffffff8107047b>] ? worker_thread+0x16b/0x250
> [ 2.175490] [<ffffffff81074240>] ? autoremove_wake_function+0x0/0x30
> [ 2.175492] [<ffffffff81070310>] ? worker_thread+0x0/0x250
> [ 2.175494] [<ffffffff81070310>] ? worker_thread+0x0/0x250
> [ 2.175496] [<ffffffff81073dbe>] ? kthread+0x8e/0xa0
> [ 2.175499] [<ffffffff81027554>] ? kernel_thread_helper+0x4/0x10
> [ 2.175501] [<ffffffff81073d30>] ? kthread+0x0/0xa0
> [ 2.175503] [<ffffffff81027550>] ? kernel_thread_helper+0x0/0x10
> [ 2.182407] Console: switching to colour frame buffer device 240x75
> [ 2.186632] fb0: nouveaufb frame buffer device
> [ 2.186633] registered panic notifier
> [ 2.186636] [drm] Initialized nouveau 0.0.15 20090420 for 0000:01:00.0 on minor 0
> ...
>
On Mon, 2010-02-15 at 23:55 +0100, Christian Borntraeger wrote:
> Am Montag 15 Februar 2010 10:53:48 schrieb Christian Borntraeger:
> I think this regression is triggered by
>
> commit 39c9bfb453b748ce220ceefacbe2a5c19fabf67b
> Author: Ben Skeggs <[email protected]>
> Date: Tue Feb 9 10:22:29 2010 +1000
>
> drm/nv50: prevent multiple init tables being parsed at the same time
>
> One possible solution is to replace the spinlock bios->lock with a mutex,
> but there are others ways of fixing this BUG.
>
> CCing Ben.
Ah, it appears the vbios delay opcodes got changed to use sleeps rather
than delays at some point without me noticing. Sent a patch to Dave
changing the code to use a mutex instead for now.
Thanks,
Ben.
>
>
>
> > [ 2.175437] BUG: scheduling while atomic: nouveau/0/753/0x00000002
> > [ 2.175439] Modules linked in:
> > [ 2.175442] Pid: 753, comm: nouveau/0 Not tainted 2.6.33-rc8-prerelease #27
> > [ 2.175443] Call Trace:
> > [ 2.175451] [<ffffffff815dcdea>] ? schedule+0x86a/0x880
> > [ 2.175454] [<ffffffff8120a420>] ? vsnprintf+0xe0/0x9a0
> > [ 2.175456] [<ffffffff815dd18c>] ? schedule_timeout+0x15c/0x250
> > [ 2.175460] [<ffffffff81068570>] ? process_timeout+0x0/0x10
> > [ 2.175462] [<ffffffff81069068>] ? msleep+0x18/0x30
> > [ 2.175466] [<ffffffff812d48d1>] ? init_time+0x51/0x90
> > [ 2.175468] [<ffffffff812d3ffb>] ? parse_init_table+0xcb/0x1a0
> > [ 2.175470] [<ffffffff812d424a>] ? init_sub_direct+0x4a/0xd0
> > [ 2.175472] [<ffffffff812d3ffb>] ? parse_init_table+0xcb/0x1a0
> > [ 2.175474] [<ffffffff812d496f>] ? nouveau_bios_run_init_table+0x5f/0xa0
> > [ 2.175476] [<ffffffff812d4c0c>] ? nouveau_bios_run_display_table+0x25c/0x500
> > [ 2.175480] [<ffffffff812fd220>] ? nv50_display_irq_handler_bh+0x0/0x410
> > [ 2.175483] [<ffffffff812fd4cc>] ? nv50_display_irq_handler_bh+0x2ac/0x410
> > [ 2.175485] [<ffffffff812fd220>] ? nv50_display_irq_handler_bh+0x0/0x410
> > [ 2.175487] [<ffffffff8107047b>] ? worker_thread+0x16b/0x250
> > [ 2.175490] [<ffffffff81074240>] ? autoremove_wake_function+0x0/0x30
> > [ 2.175492] [<ffffffff81070310>] ? worker_thread+0x0/0x250
> > [ 2.175494] [<ffffffff81070310>] ? worker_thread+0x0/0x250
> > [ 2.175496] [<ffffffff81073dbe>] ? kthread+0x8e/0xa0
> > [ 2.175499] [<ffffffff81027554>] ? kernel_thread_helper+0x4/0x10
> > [ 2.175501] [<ffffffff81073d30>] ? kthread+0x0/0xa0
> > [ 2.175503] [<ffffffff81027550>] ? kernel_thread_helper+0x0/0x10
> > [ 2.182407] Console: switching to colour frame buffer device 240x75
> > [ 2.186632] fb0: nouveaufb frame buffer device
> > [ 2.186633] registered panic notifier
> > [ 2.186636] [drm] Initialized nouveau 0.0.15 20090420 for 0000:01:00.0 on minor 0
> > ...
> >
Am Dienstag 16 Februar 2010 02:19:37 schrieb Ben Skeggs:
> Ah, it appears the vbios delay opcodes got changed to use sleeps rather
> than delays at some point without me noticing. Sent a patch to Dave
> changing the code to use a mutex instead for now.
Ok, I cherry-picked d9184fa97b6f48d399636e5e2669bc8419f9369e from for-airlied
The fix seems to work.
If you like you can add
Reported-by: Christian Borntraeger <[email protected]>
Tested-by: Christian Borntraeger <[email protected]>
Christian