lkml.org 
[lkml]   [2012]   [Jul]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: drm/nouveau: crash regression in 3.5
    On Wed, Jul 25, 2012 at 10:46:49AM +0200, Ortwin Glück wrote:
    > > Does it work if you boot without X and modprobe nouveau manually? If it does,
    > > can you disable page flipping in xorg.conf (Option "PageFlip" "0" in nouveau
    > > device section) and recheck with X?
    >
    > It happens long before X, when the nouveau module is loaded.
    >
    > > Does it work if you disable acceleration (nouveau.noaccel=1 in kernel command
    > > line)?
    >
    > nouveau.noaccel=1 is already on my cmdline as running X with accel
    > enabled never worked anyway.
    >
    > > Is there anything saved in /var/log/ from previous boot? Can you ssh
    > > into and check dmesg? Can you use netconsole and catch full log?
    >
    > Thanks for the netconsole tip. I have attached the log.
    >

    Good, below patch should fix this panic.

    Note that you can hit an oops in drm_handle_vblank because patch from
    http://lists.freedesktop.org/archives/dri-devel/2012-May/023498.html
    has not been applied (yet?).

    --
    From: Marcin Slusarz <marcin.slusarz@gmail.com>
    Date: Wed, 25 Jul 2012 20:07:22 +0200
    Subject: [PATCH] drm/nouveau: init vblank requests list

    Fixes kernel panic when vblank interrupt triggers before first sync to vblank
    request.

    (Besides init, remove some relevant leftovers from vblank rework)

    Reported-by: Ortwin Glück <odi@odi.ch>
    Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
    Cc: stable@vger.kernel.org [3.5]
    ---
    drivers/gpu/drm/nouveau/nouveau_drv.h | 2 --
    drivers/gpu/drm/nouveau/nouveau_irq.c | 4 ----
    drivers/gpu/drm/nouveau/nouveau_software.h | 1 +
    3 files changed, 1 insertions(+), 6 deletions(-)

    diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
    index 8613cb2..b863a3a 100644
    --- a/drivers/gpu/drm/nouveau/nouveau_drv.h
    +++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
    @@ -689,8 +689,6 @@ struct drm_nouveau_private {
    void (*irq_handler[32])(struct drm_device *);
    bool msi_enabled;

    - struct list_head vbl_waiting;
    -
    struct {
    struct drm_global_reference mem_global_ref;
    struct ttm_bo_global_ref bo_global_ref;
    diff --git a/drivers/gpu/drm/nouveau/nouveau_irq.c b/drivers/gpu/drm/nouveau/nouveau_irq.c
    index 868c7fd..b2c2937 100644
    --- a/drivers/gpu/drm/nouveau/nouveau_irq.c
    +++ b/drivers/gpu/drm/nouveau/nouveau_irq.c
    @@ -41,12 +41,8 @@
    void
    nouveau_irq_preinstall(struct drm_device *dev)
    {
    - struct drm_nouveau_private *dev_priv = dev->dev_private;
    -
    /* Master disable */
    nv_wr32(dev, NV03_PMC_INTR_EN_0, 0);
    -
    - INIT_LIST_HEAD(&dev_priv->vbl_waiting);
    }

    int
    diff --git a/drivers/gpu/drm/nouveau/nouveau_software.h b/drivers/gpu/drm/nouveau/nouveau_software.h
    index e60bc6c..b507a92 100644
    --- a/drivers/gpu/drm/nouveau/nouveau_software.h
    +++ b/drivers/gpu/drm/nouveau/nouveau_software.h
    @@ -38,6 +38,7 @@ static inline void
    nouveau_software_context_new(struct nouveau_software_chan *pch)
    {
    INIT_LIST_HEAD(&pch->flip);
    + INIT_LIST_HEAD(&pch->vblank.list);
    }

    static inline void
    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2012-07-25 21:21    [W:0.026 / U:1.416 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site