10 Oct, 2011

9 commits

  • Add a way to send DRM events down the gpu fifo by attaching them to
    fence objects. This may be useful for Xserver swapbuffer throttling and
    page-flip done notifications.

    Bump version to 2.2 to signal the availability of the FENCE_EVENT ioctl.

    Signed-off-by: Thomas Hellstrom
    Reviewed-by: Jakob Bornecrantz
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     
  • This function will be used also by the upcoming fence event code,
    so break it out and add a comment about the functionality.

    Signed-off-by: Thomas Hellstrom
    Reviewed-by: Jakob Bornecrantz
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     
  • If a card wasn't PCIE, we always set the DMA mask to 32 bits.
    This is only applies to the old rage128/r1xx gart block on
    early radeon asics (~r1xx-r4xx). Newer PCI and IGP cards
    can handle 40 bits just fine.

    Signed-off-by: Alex Deucher
    Cc: Chen Jie
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • The value of RADEON_DEBUGFS_MAX_NUM_FILES has been used to
    specify the size of an array, each element of which looks
    like this:

    struct radeon_debugfs {
    struct drm_info_list *files;
    unsigned num_files;
    };

    Consequently, the number of debugfs files may be much greater
    than RADEON_DEBUGFS_MAX_NUM_FILES, something that the current
    code ignores:

    if ((_radeon_debugfs_count + nfiles) > RADEON_DEBUGFS_MAX_NUM_FILES) {
    DRM_ERROR("Reached maximum number of debugfs files.\n");
    DRM_ERROR("Report so we increase RADEON_DEBUGFS_MAX_NUM_FILES.\n");
    return -EINVAL;
    }

    This commit fixes this make, and accordingly renames:

    RADEON_DEBUGFS_MAX_NUM_FILES

    to:

    RADEON_DEBUGFS_MAX_COMPONENTS

    Signed-off-by: Michael Witten
    Signed-off-by: Dave Airlie

    Michael Witten
     
  • When force == false, we don't do load detection in the connector
    detect functions. Unforunately, we also return the previous
    connector state so we never get disconnect events for DVI-I, DVI-A,
    or VGA. Save whether we detected the monitor via load detection
    previously and use that to determine whether we return the previous
    state or not.

    Fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=41561

    Signed-off-by: Alex Deucher
    Cc: stable@kernel.org
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • DVI-D and HDMI-A are digital only, so there's no need to
    attempt analog load detect. Also, skip bail before the
    !force check, or we fail to get a disconnect events.
    The next patches in the series attempt to fix disconnect
    events for connectors with analog support (DVI-I, HDMI-B,
    DVI-A).

    Fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=41561

    Signed-off-by: Alex Deucher
    Cc: stable@kernel.org
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • Commit 9b9fe724 accidentally used RADEON_GPIO_EN_* where
    RADEON_GPIO_MASK_* was intended. This caused improper initialization
    of I2C buses, mostly visible when setting i2c_algo_bit.bit_test=1.
    Using the right constants fixes the problem.

    Signed-off-by: Jean Delvare
    Reviewed-by: Alex Deucher
    Cc: Jerome Glisse
    Cc: stable@kernel.org
    Signed-off-by: Dave Airlie

    Jean Delvare
     
  • Signed-off-by: Jakob Bornecrantz
    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • Contexts, surfaces and streams allocate persistent kernel memory as the
    direct result of user-space requests. Make sure this memory is
    accounted as graphics memory, to avoid DOS vulnerabilities.

    Also take the TTM read lock around resource creation to block
    switched-out dri clients from allocating resources.

    Signed-off-by: Thomas Hellstrom
    Reviewed-by: Jakob Bornecrantz
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     

05 Oct, 2011

28 commits

  • This patch is a DRM Driver for Samsung SoC Exynos4210 and now enables
    only FIMD yet but we will add HDMI support also in the future.

    this patch is based on git repository below:
    git://people.freedesktop.org/~airlied/linux.git
    branch name: drm-next
    commit-id: 88ef4e3f4f616462b78a7838eb3ffc3818d30f67

    you can refer to our working repository below:
    http://git.infradead.org/users/kmpark/linux-2.6-samsung
    branch name: samsung-drm

    We tried to re-use lowlevel codes of the FIMD driver(s3c-fb.c
    based on Linux framebuffer) but couldn't so because lowlevel codes
    of s3c-fb.c are included internally and so FIMD module of this driver has
    its own lowlevel codes.

    We used GEM framework for buffer management and DMA APIs(dma_alloc_*)
    for buffer allocation so we can allocate physically continuous memory
    for DMA through it and also we could use CMA later if CMA is applied to
    mainline.

    Refer to this link for CMA(Continuous Memory Allocator):
    http://lkml.org/lkml/2011/7/20/45

    this driver supports only physically continuous memory(non-iommu).

    Links to previous versions of the patchset:
    v1: < https://lwn.net/Articles/454380/ >
    v2: < http://www.spinics.net/lists/kernel/msg1224275.html >
    v3: < http://www.spinics.net/lists/dri-devel/msg13755.html >
    v4: < http://permalink.gmane.org/gmane.comp.video.dri.devel/60439 >
    v5: < http://comments.gmane.org/gmane.comp.video.dri.devel/60802 >

    Changelog v2:
    DRM: add DRM_IOCTL_SAMSUNG_GEM_MMAP ioctl command.

    this feature maps user address space to physical memory region
    once user application requests DRM_IOCTL_SAMSUNG_GEM_MMAP ioctl.

    DRM: code clean and add exception codes.

    Changelog v3:
    DRM: Support multiple irq.

    FIMD and HDMI have their own irq handler but DRM Framework can regiter
    only one irq handler this patch supports mutiple irq for Samsung SoC.

    DRM: Consider modularization.

    each DRM, FIMD could be built as a module.

    DRM: Have indenpendent crtc object.

    crtc isn't specific to SoC Platform so this patch gets a crtc
    to be used as common object.
    created crtc could be attached to any encoder object.

    DRM: code clean and add exception codes.

    Changelog v4:
    DRM: remove is_defult from samsung_fb.

    is_default isn't used for default framebuffer.

    DRM: code refactoring to fimd module.
    this patch is be considered with multiple display objects and
    would use its own request_irq() to register a irq handler instead of
    drm framework's one.

    DRM: remove find_samsung_drm_gem_object()

    DRM: move kernel private data structures and definitions to driver folder.

    samsung_drm.h would contain only public information for userspace
    ioctl interface.

    DRM: code refactoring to gem modules.
    buffer module isn't dependent of gem module anymore.

    DRM: fixed security issue.

    DRM: remove encoder porinter from specific connector.

    samsung connector doesn't need to have generic encoder.

    DRM: code clean and add exception codes.

    Changelog v5:
    DRM: updated fimd(display controller) driver.
    added various pixel formats, color key and pixel blending features.

    DRM: removed end_buf_off from samsung_drm_overlay structure.
    this variable isn't used and end buffer address would be
    calculated by each sub driver.

    DRM: use generic function for mmap_offset.
    replaced samsung_drm_gem_create_mmap_offset() and
    samsung_drm_free_mmap_offset() with generic ones applied
    to mainline recentrly.

    DRM: removed unnecessary codes and added exception codes.

    DRM: added comments and code clean.

    Changelog v6:
    DRM: added default config options.

    DRM: added padding for 64-bit align.

    DRM: changed prefix 'samsung' to 'exynos'

    Signed-off-by: Inki Dae
    Signed-off-by: Joonyoung Shim
    Signed-off-by: Seung-Woo Kim
    Signed-off-by: Kyungmin Park
    Reviewed-by: Konrad Rzeszutek Wilk
    Reviewed-by: Dave Airlie
    Reviewed-by: Rob Clark
    Signed-off-by: Dave Airlie

    Inki Dae
     
  • * drm-vmware-next: (26 commits)
    vmwgfx: Minor cleanups
    vmwgfx: Bump driver minor to advertise support for new ioctls.
    vmwgfx: Be more strict with fb depths when using screen objects
    vmwgfx: Handle device surface memory limit
    vmwgfx: Make sure we always have a user-space handle to use for objects that are backing kms framebuffers.
    vmwgfx: Optimize the command submission resource list
    vmwgfx: Fix up query processing
    vmwgfx: Allow reference and unreference of NULL fence objects.
    vmwgfx: minor dmabuf utilities cleanup
    vmwgfx: Disallow user space to send present and readback commands
    vmwgfx: Add present and readback ioctls
    vmwgfx: Place overlays in GMR area if we can
    vmwgfx: Drop 3D Legacy Display Unit support
    vmwgfx: Require HWV8 for 3d support
    vmwgfx: Add screen object support
    vmwgfx: Add dmabuf helper functions for pinning
    vmwgfx: Refactor common display unit functions to shared file
    vmwgfx: Expand the command checker to cover screen object commands
    vmwgfx: Break out dirty submission code
    vmwgfx: Break out execbuf command processing
    ...

    Dave Airlie
     
  • As suggested by Konrad Rzeszutek Wilk

    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     
  • Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     
  • Signed-off-by: Jakob Bornecrantz
    Reviewed-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • Make surfaces swappable. Make sure we honor the maximum amount of surface
    memory the device accepts. This is done by potentially reading back surface
    contents not used by the current command submission and storing it
    locally in buffer objects.

    Signed-off-by: Thomas Hellstrom
    Reviewed-by: Jakob Bornecrantz
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     
  • … backing kms framebuffers.

    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>

    Thomas Hellstrom
     
  • Use a list for resources referenced during command submission, instead of
    an array.
    As long as we don't implement parallell command submission this works fine
    and simplifies things a bit.

    Signed-off-by: Thomas Hellstrom
    Reviewed-by: Jakob Bornecrantz
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     
  • Previously, query results could be placed in any buffer object, but since
    we didn't allow pinned buffer objects, query results could be written when
    that buffer was evicted, corrupting data in other buffers.

    Now, require that buffers holding query results are no more than two pages
    large, and allow one single pinned such buffer. When the command submission
    code encounters query result structures in other buffers, the queries in the
    pinned buffer will be finished using a query barrier for the last hardware
    context using the buffer. Also if the command submission code detects
    that a new hardware context is used for queries, all queries of the previous
    hardware context is also flushed. Currently we use waiting for a no-op
    occlusion query as a query barrier for a specific context.

    The query buffer is also flushed and unpinned on context destructions,
    master drops and before scanout bo placement.

    Signed-off-by: Thomas Hellstrom
    Reviewed-by: Jakob Bornecrantz
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     
  • The execbuf utils may call reference on NULL fence objects.

    Signed-off-by: Thomas Hellstrom
    Reviewed-by: Jakob Bornecrantz
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     
  • Add / fix some function comments.
    Don't move out an fbdev framebuffer when unused. Just unpin.
    Only have a single function that computes a SVGAGuestPtr from the buffer's
    current placement, and make it more versatile by accepting a
    struct ttm_buffer_object

    Signed-off-by: Thomas Hellstrom
    Reviewed-by: Jakob Bornecrantz
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     
  • Signed-off-by: Jakob Bornecrantz
    Reviewed-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • Signed-off-by: Jakob Bornecrantz
    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • When we hae screen objects we are allowed to place the overlay source
    in the GMR area, do this as this will save precious VRAM.

    Signed-off-by: Jakob Bornecrantz
    Reviewed-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • Since 3D requires HWv8 and screen objects is always available on those
    hosts we only need the screen objects path for surfaces.

    Signed-off-by: Jakob Bornecrantz
    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • On lower versions, the way we mix 2D and 3D may be too slow.

    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Jakob Bornecrantz
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     
  • Signed-off-by: Jakob Bornecrantz
    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • Signed-off-by: Jakob Bornecrantz
    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • More preparation for Screen Object support.

    Signed-off-by: Jakob Bornecrantz
    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • Signed-off-by: Jakob Bornecrantz
    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • In preperation for screen objects, still leaves the delayed workqueue
    for surface updates in place.

    Signed-off-by: Jakob Bornecrantz
    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • This will make it easier to execute commands operating on user-space
    resources but generated by the kernel.

    JB: Added tracking if the sw_context was called from the kernel or userspace.

    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Jakob Bornecrantz
    Reviewed-by: Jakob Bornecrantz
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     
  • Signed-off-by: Jakob Bornecrantz
    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • Signed-off-by: Jakob Bornecrantz
    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • Signed-off-by: Jakob Bornecrantz
    Reviewed-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • Signed-off-by: Jakob Bornecrantz
    Reviewed-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • Signed-off-by: Jakob Bornecrantz
    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Jakob Bornecrantz
     
  • Used by the vmwgfx driver.

    Signed-off-by: Thomas Hellstrom
    Signed-off-by: Dave Airlie

    Thomas Hellstrom
     

20 Sep, 2011

3 commits

  • * 'drm-intel-next' of git://people.freedesktop.org/~keithp/linux:
    Drivers: i915: Fix all space related issues.

    Dave Airlie
     
  • * 'drm-nouveau-next' of git://git.freedesktop.org/git/nouveau/linux-2.6: (353 commits)
    drm/nouveau: remove allocations from gart populate() hook
    drm/nvc0/fb: slightly improve PMFB intr handling, move out of nvc0_graph.c
    drm/nvc0/fifo: avoid touching missing subfifos
    drm/nvd9/disp: bail out of mode_set_base if no fb bound to crtc
    drm/nvd9/disp: stub some more api hooks so we don't oops on resume
    drm/nouveau: fix printk typo in ioremap failure path
    drm/nvc0/pm: minor clock readback fixes
    drm/nv40/pm: execute memory reset script from vbios
    drm/nv50/gr: refactor initialisation
    drm/nouveau: if requested, try harder at disabling sysmem pushbufs
    drm/nv50/gr: enable ctxprog xfer only when we need it to save power
    drm/nouveau/dp: add support for displayport table 0x30
    drm/nouveau/dp: return master dp table pointer too when looking up encoder
    drm/nouveau/bios: simplify U/d table hash matching func to just match
    drm/nouveau/dp: preserve non-pattern bits in DP_TRAINING_PATTERN_SET
    drm/nvc0/gr: remove MODULE_FIRMWARE() lines
    drm/nouveau/dp: use alternate lane mask for nvaf
    drm/nouveau/dp: link rate scripts are selected with a comparison table
    drm/nv40/pm: write nv40-specific reclocking routines
    drm/nv40/pm: parse geometric delta clock from vbios
    ...

    Dave Airlie
     
  • Since some somewhat questionable changes a while back, TTM provides a
    completely empty array of struct dma_address that stays around for the
    entire lifetime of the TTM object.

    Lets use this array, *always*, rather than wasting yet more memory on
    another array who's purpose is identical, as well as yet another bool array
    of the same size saying *which* of the previous two arrays to use...

    This change will also solve the high order allocation failures seen by
    some people while using nouveau.

    Signed-off-by: Ben Skeggs

    Ben Skeggs