09 Jan, 2012

1 commit


22 Dec, 2011

4 commits

  • v2: Smash compile fix from Tormod Volden for
    CONFIG_FB_SIS on top of this.

    Signed-off-by: Daniel Vetter

    Daniel Vetter
     
  • Signed-off-by: Daniel Vetter

    Daniel Vetter
     
  • In contrast to kms drivers, sis/via _always_ associated a buffer with
    a drm fd. So by the time we reach lastclose, all open drm fds are gone
    and with them their associated objects.

    So when sis/via call drm_sman_cleanup in their lastclose funcs, that
    will free 0 objects.

    The owner tracking now serves no purpose at all, hence rip it ou. We
    can't kill the corresponding fields in struct drm_memblock_item yet
    because we hijack these in the new driver private owner tracking. But
    now that drm_sman.c doesn't touch ->owner_list anymore, we need to
    kill the list_move hack and properly add the item to the file_priv
    list.

    Also leave the list_del(&obj->owner_list) in drm_sman_free for the
    moment, it will move to the drivers when sman disappears completely.

    v2: Remove the redundant INIT_LIST_HEAD as noted by Chris Wilson

    Signed-off-by: Daniel Vetter

    Daniel Vetter
     
  • By attach a driver private struct to each open drm fd.

    Because we steal the owner_list from drm_sman until things settle,
    use list_move instead of list_add.

    This requires to export a drm_sman function temporarily before
    drm_sman will die for real completely.

    Signed-off-by: Daniel Vetter

    Daniel Vetter
     

11 Nov, 2011

1 commit

  • From fdf1fdebaa00f81de18c227f32f8074c8b352d50 Mon Sep 17 00:00:00 2001
    From: Arjan van de Ven
    Date: Sun, 30 Oct 2011 19:06:07 -0700
    Subject: [PATCH] drm: Make the per-driver file_operations struct const

    The DRM layer keeps a copy of struct file_operations inside its
    big driver struct... which prevents it from being consistent and static.
    For consistency (and the general security objective of having such things
    static), it's desirable to get this fixed.

    This patch splits out the file_operations field to its own struct,
    which is then "static const", and just stick a pointer to this into
    the driver struct, making it more consistent with how the rest of the
    kernel does this.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Dave Airlie

    Arjan van de Ven
     

01 Nov, 2011

1 commit


21 Jul, 2011

1 commit

  • All these are instances of
    #define NAME value;
    or
    #define NAME(params_opt) value;

    These of course fail to build when used in contexts like
    if(foo $OP NAME)
    while(bar $OP NAME)
    and may silently generate the wrong code in contexts such as
    foo = NAME + 1; /* foo = value; + 1; */
    bar = NAME - 1; /* bar = value; - 1; */
    baz = NAME & quux; /* baz = value; & quux; */

    Reported on comp.lang.c,
    Message-ID:
    Initial analysis of the dangers provided by Keith Thompson in that thread.

    There are many more instances of more complicated macros having unnecessary
    trailing semicolons, but this pile seems to be all of the cases of simple
    values suffering from the problem. (Thus things that are likely to be found
    in one of the contexts above, more complicated ones aren't.)

    Signed-off-by: Phil Carmody
    Signed-off-by: Jiri Kosina

    Phil Carmody
     

07 Feb, 2011

1 commit


27 Oct, 2010

1 commit

  • * 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (476 commits)
    vmwgfx: Implement a proper GMR eviction mechanism
    drm/radeon/kms: fix r6xx/7xx 1D tiling CS checker v2
    drm/radeon/kms: properly compute group_size on 6xx/7xx
    drm/radeon/kms: fix 2D tile height alignment in the r600 CS checker
    drm/radeon/kms/evergreen: set the clear state to the blit state
    drm/radeon/kms: don't poll dac load detect.
    gpu: Add Intel GMA500(Poulsbo) Stub Driver
    drm/radeon/kms: MC vram map needs to be >= pci aperture size
    drm/radeon/kms: implement display watermark support for evergreen
    drm/radeon/kms/evergreen: add some additional safe regs v2
    drm/radeon/r600: fix tiling issues in CS checker.
    drm/i915: Move gpu_write_list to per-ring
    drm/i915: Invalidate the to-ring, flush the old-ring when updating domains
    drm/i915/ringbuffer: Write the value passed in to the tail register
    agp/intel: Restore valid PTE bit for Sandybridge after bdd3072
    drm/i915: Fix flushing regression from 9af90d19f
    drm/i915/sdvo: Remove unused encoding member
    i915: enable AVI infoframe for intel_hdmi.c [v4]
    drm/i915: Fix current fb blocking for page flip
    drm/i915: IS_IRONLAKE is synonymous with gen == 5
    ...

    Fix up conflicts in
    - drivers/gpu/drm/i915/{i915_gem.c, i915/intel_overlay.c}: due to the
    new simplified stack-based kmap_atomic() interface
    - drivers/gpu/drm/vmwgfx/vmwgfx_drv.c: added .llseek entry due to BKL
    removal cleanups.

    Linus Torvalds
     

16 Sep, 2010

1 commit

  • The drm device drivers currently allow seeking on the
    character device but never care about the actual
    file position.

    When we change the default llseek operation to be
    no_llseek, calling llseek on a drm device would
    return an error condition, which is an API change.

    Explicitly setting noop_llseek lets us keep the
    current API.

    Signed-off-by: Arnd Bergmann
    Cc: David Airlie
    Cc: dri-devel@lists.freedesktop.org

    Arnd Bergmann
     

30 Aug, 2010

3 commits

  • Every driver used the default implementation. Fold that one into
    the only callsite and drop the callback.

    Signed-off-by: Daniel Vetter
    Signed-off-by: Dave Airlie

    Daniel Vetter
     
  • All drivers happily copy&pasted the default implementation without
    checking whether this callback is used at all. It's not. Sigh.

    Kill it.

    Signed-off-by: Daniel Vetter
    Signed-off-by: Dave Airlie

    Daniel Vetter
     
  • It's not used by any driver. The destructor callback is unfortunately
    used by the via driver in a rather convoluted piece of code used
    to reimplement something resembling broken futexes. I didn't dare
    to touch this code. But at least kill the needless NULL assignemt
    in the sis driver.

    Signed-off-by: Daniel Vetter
    Signed-off-by: Dave Airlie

    Daniel Vetter
     

17 Aug, 2010

1 commit

  • With the current screwed but its ABI, ioctls for the drm, Linus pointed out that we could allow userspace to specify the allocation size, but we pass it to the driver which then uses it blindly to store a struct. Now if userspace specifies the allocation size as smaller than the driver needs, the driver can possibly overwrite memory.

    This patch restructures the driver ioctls so we store the structure size we are expecting, and make sure we allocate at least that size. The copy from/to userspace are still restricted to the size the user specifies, this allows ioctl structs to grow on both sides of the equation.

    Up until now we didn't really use the DRM_IOCTL defines in the kernel, so this cleans them up and adds them for nouveau.

    v2:
    fix nouveau pushbuf arg (thanks to Ben for pointing it out)

    Reported-by: Linus Torvalds
    Signed-off-by: Dave Airlie

    Dave Airlie
     

02 Aug, 2010

1 commit


18 Dec, 2009

1 commit

  • drm_ioctl is called with the Big Kernel Lock held,
    which shows up very high in statistics on vfs_ioctl.

    Moving the lock into the drm_ioctl function itself
    makes sure we blame the right subsystem and it gets
    us one step closer to eliminating the locked version
    of fops->ioctl.

    Since drm_ioctl does not require the lock itself,
    we only need to hold it while calling the specific
    handler. The 32 bit conversion handlers do not
    interact with any other code, so they don't need
    the BKL here either and can just call drm_ioctl.

    As a bonus, this cleans up all the other users
    of drm_ioctl which now no longer have to find
    the inode or call lock_kernel.

    [airlied: squashed the non-driver bits
    of the second patch in here, this provides
    the flag for drivers to use to select unlocked
    ioctls - but doesn't modify any drivers].

    Signed-off-by: Arnd Bergmann
    Cc: David Airlie
    Cc: dri-devel@lists.sourceforge.net
    Cc: Frederic Weisbecker
    Cc: Thomas Gleixner
    Signed-off-by: Dave Airlie

    Arnd Bergmann
     

19 Jun, 2009

1 commit


18 Oct, 2008

2 commits

  • Fix a pointer cast warning in the SIS DRM code.

    This was introduced in patch ce65a44de07f73ceda1749812b75086b7add408d.

    Signed-off-by: David Howells
    Cc: Dave Airlie
    Signed-off-by: Andrew Morton
    Signed-off-by: Dave Airlie

    David Howells
     
  • Fix the SIS DRM memory allocator if the SIS FB built as a module. The SIS DRM
    code initialises the mm allocation hooks, but _only_ if the SIS FB is not
    built as a module because it depends on CONFIG_FB_SIS, and that's unset if the
    SIS FB is not built in. It must check CONFIG_FB_SIS_MODULE as well.

    Signed-off-by: David Howells
    Cc: Dave Airlie
    Signed-off-by: Andrew Morton
    Signed-off-by: Dave Airlie

    David Howells
     

14 Jul, 2008

1 commit

  • With the coming of kernel based modesetting and the memory manager stuff,
    the everything in one directory approach was getting very ugly and
    starting to be unmanageable.

    This restructures the drm along the lines of other kernel components.

    It creates a drivers/gpu/drm directory and moves the hw drivers into
    subdirectores. It moves the includes into an include/drm, and
    sets up the unifdef for the userspace headers we should be exporting.

    Signed-off-by: Dave Airlie

    Dave Airlie