18 Oct, 2013

1 commit

  • Pavel Roskin reported that DRM_IOCTL_MODE_GETCONNECTOR was overwritting
    the 4 bytes beyond the end of its structure with a 32-bit userspace
    running on a 64-bit kernel. This is due to the padding gcc inserts as
    the drm_mode_get_connector struct includes a u64 and its size is not a
    natural multiple of u64s.

    64-bit kernel:

    sizeof(drm_mode_get_connector)=80, alignof=8
    sizeof(drm_mode_get_encoder)=20, alignof=4
    sizeof(drm_mode_modeinfo)=68, alignof=4

    32-bit userspace:

    sizeof(drm_mode_get_connector)=76, alignof=4
    sizeof(drm_mode_get_encoder)=20, alignof=4
    sizeof(drm_mode_modeinfo)=68, alignof=4

    Fortuituously we can insert explicit padding to the tail of our
    structures without breaking ABI.

    Reported-by: Pavel Roskin
    Signed-off-by: Chris Wilson
    Cc: Dave Airlie
    Cc: dri-devel@lists.freedesktop.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Dave Airlie

    Chris Wilson
     

21 Sep, 2013

1 commit


02 Sep, 2013

1 commit

  • Alex writes:
    This is the radeon drm-next request. Big changes include:
    - support for dpm on CIK parts
    - support for ASPM on CIK parts
    - support for berlin GPUs
    - major ring handling cleanup
    - remove the old 3D blit code for bo moves in favor of CP DMA or sDMA
    - lots of bug fixes

    [airlied: fix up a bunch of conflicts from drm_order removal]

    * 'drm-next-3.12' of git://people.freedesktop.org/~agd5f/linux: (898 commits)
    drm/radeon/dpm: make sure dc performance level limits are valid (CI)
    drm/radeon/dpm: make sure dc performance level limits are valid (BTC-SI) (v2)
    drm/radeon: gcc fixes for extended dpm tables
    drm/radeon: gcc fixes for kb/kv dpm
    drm/radeon: gcc fixes for ci dpm
    drm/radeon: gcc fixes for si dpm
    drm/radeon: gcc fixes for ni dpm
    drm/radeon: gcc fixes for trinity dpm
    drm/radeon: gcc fixes for sumo dpm
    drm/radeonn: gcc fixes for rv7xx/eg/btc dpm
    drm/radeon: gcc fixes for rv6xx dpm
    drm/radeon: gcc fixes for radeon_atombios.c
    drm/radeon: enable UVD interrupts on CIK
    drm/radeon: fix init ordering for r600+
    drm/radeon/dpm: only need to reprogram uvd if uvd pg is enabled
    drm/radeon: check the return value of uvd_v1_0_start in uvd_v1_0_init
    drm/radeon: split out radeon_uvd_resume from uvd_v4_2_resume
    radeon kms: fix uninitialised hotplug work usage in r100_irq_process()
    drm/radeon/audio: set up the sads on DCE3.2 asics
    drm/radeon: fix handling of variable sized arrays for router objects
    ...

    Conflicts:
    drivers/gpu/drm/i915/i915_dma.c
    drivers/gpu/drm/i915/i915_gem_dmabuf.c
    drivers/gpu/drm/i915/intel_pm.c
    drivers/gpu/drm/radeon/cik.c
    drivers/gpu/drm/radeon/ni.c
    drivers/gpu/drm/radeon/r600.c

    Dave Airlie
     

31 Aug, 2013

1 commit

  • Also add a new RADEON_INFO query to check that CP DMA packets are
    supported on the compute ring.

    CP DMA has been supported since the 3.8 kernel, but due to an oversight
    we forgot to teach the CS checker that the CP DMA packet was legal for
    the compute ring on Southern Islands GPUs.

    This patch fixes a bug where the radeon driver will incorrectly reject a legal
    CP DMA packet from user space. I would like to have the patch
    backported to stable so that we don't have to require Mesa users to use a
    bleeding edge kernel in order to take advantage of this feature which
    is already present in the stable kernels (3.8 and newer).

    v2:
    - Don't bump kms version, so this patch can be backported to stable
    kernels.

    Cc: stable@vger.kernel.org
    Signed-off-by: Tom Stellard
    Signed-off-by: Alex Deucher

    Tom Stellard
     

30 Aug, 2013

3 commits

  • …m-intel into drm-next

    Need to get my stuff out the door ;-) Highlights:
    - pc8+ support from Paulo
    - more vma patches from Ben.
    - Kconfig option to enable preliminary support by default (Josh
    Triplett)
    - Optimized cpu cache flush handling and support for write-through caching
    of display planes on Iris (Chris)
    - rc6 tuning from Stéphane Marchesin for more stability
    - VECS seqno wrap/semaphores fix (Ben)
    - a pile of smaller cleanups and improvements all over

    Note that I've ditched Ben's execbuf vma conversion for 3.12 since not yet
    ready. But there's still other vma conversion stuff in here.

    * tag 'drm-intel-next-2013-08-23' of git://people.freedesktop.org/~danvet/drm-intel: (62 commits)
    drm/i915: Print seqnos as unsigned in debugfs
    drm/i915: Fix context size calculation on SNB/IVB/VLV
    drm/i915: Use POSTING_READ in lcpll code
    drm/i915: enable Package C8+ by default
    drm/i915: add i915.pc8_timeout function
    drm/i915: add i915_pc8_status debugfs file
    drm/i915: allow package C8+ states on Haswell (disabled)
    drm/i915: fix SDEIMR assertion when disabling LCPLL
    drm/i915: grab force_wake when restoring LCPLL
    drm/i915: drop WaMbcDriverBootEnable workaround
    drm/i915: Cleaning up the relocate entry function
    drm/i915: merge HSW and SNB PM irq handlers
    drm/i915: fix how we mask PMIMR when adding work to the queue
    drm/i915: don't queue PM events we won't process
    drm/i915: don't disable/reenable IVB error interrupts when not needed
    drm/i915: add dev_priv->pm_irq_mask
    drm/i915: don't update GEN6_PMIMR when it's not needed
    drm/i915: wrap GEN6_PMIMR changes
    drm/i915: wrap GTIMR changes
    drm/i915: add the FCLK case to intel_ddi_get_cdclk_freq
    ...

    Dave Airlie
     
  • Let applications know whether the kernel supports asynchronous page
    flipping.

    Signed-off-by: Keith Packard
    Signed-off-by: Dave Airlie

    Keith Packard
     
  • This requests that the driver perform the page flip as soon as
    possible, not necessarily waiting for vblank.

    Signed-off-by: Keith Packard
    Signed-off-by: Dave Airlie

    Keith Packard
     

25 Aug, 2013

1 commit

  • Add initial support for a3xx 3d core.

    So far, with hardware that I've seen to date, we can have:
    + zero, one, or two z180 2d cores
    + a3xx or a2xx 3d core, which share a common CP (the firmware
    for the CP seems to implement some different PM4 packet types
    but the basics of cmdstream submission are the same)

    Which means that the eventual complete "class" hierarchy, once
    support for all past and present hw is in place, becomes:
    + msm_gpu
    + adreno_gpu
    + a3xx_gpu
    + a2xx_gpu
    + z180_gpu

    This commit splits out the parts that will eventually be common
    between a2xx/a3xx into adreno_gpu, and the parts that are even
    common to z180 into msm_gpu.

    Note that there is no cmdstream validation required. All memory access
    from the GPU is via IOMMU/MMU. So as long as you don't map silly things
    to the GPU, there isn't much damage that the GPU can do.

    Signed-off-by: Rob Clark

    Rob Clark
     

22 Aug, 2013

2 commits

  • Haswell GT3e has the unique feature of supporting Write-Through cacheing
    of objects within the eLLC/LLC. The purpose of this is to enable the display
    plane to remain coherent whilst objects lie resident in the eLLC/LLC - so
    that we, in theory, get the best of both worlds, perfect display and fast
    access.

    However, we still need to be careful as the CPU does not see the WT when
    accessing the cache. In particular, this means that we need to flush the
    cache lines after writing to an object through the CPU, and on
    transitioning from a cached state to WT.

    v2: Actually do the clflush on transition to WT, nagging by Ville.
    v3: Flush the CPU cache after writes into WT objects.
    v4: Rease onto LLC updates and report WT as "uncached" for
    get_cache_level_ioctl to remain symmetric with set_cache_level_ioctl.

    Signed-off-by: Chris Wilson
    Cc: Ville Syrjälä
    Cc: Kenneth Graunke
    Reviewed-by: Ville Syrjälä
    Signed-off-by: Daniel Vetter

    Chris Wilson
     
  • Resolve the catch-22 of igt needing a stable number and patches first
    needing testcases by reserving the interface number up-front.

    v2: Improve the spelling a bit.

    v3: More spelling fail spotted by Chris.

    Requested-by: Chris Wilson
    Cc: Chris Wilson
    Cc: Ville Syrjälä
    Reviewed-by: Chris Wilson
    Signed-off-by: Daniel Vetter

    Daniel Vetter
     

07 Aug, 2013

1 commit

  • …vet/drm-intel into drm-next

    Neat that QA (and Ben) keeps on humming along while I'm on vacation, so
    you already get the next feature pull request:
    - proper eLLC support for HSW from Ben
    - more interrupt refactoring
    - add w/a tags where we implement them already (Damien)
    - hangcheck fixes (Chris) + hangcheck stats (Mika)
    - flesh out the new vm structs for ppgtt and ggtt (Ben)
    - PSR for Haswell, still disabled by default (Rodrigo et al.)
    - pc8+ refclock sequence code from Paulo
    - more interrupt refactoring from Paulo, unifying ilk/snb with the ivb/hsw
    interrupt code
    - full solution for the Haswell concurrent reg access issues (Chris)
    - fix racy object accounting, used by some new leak tests
    - fix sync polarity settings on ch7xxx dvo encoder
    - random bits&pieces, little fixes and better debug output all over

    [airlied: fix conflict with drm_mm cleanups]

    * tag 'drm-intel-next-2013-07-26-fixed' of git://people.freedesktop.org/~danvet/drm-intel: (289 commits)
    drm/i915: Do not dereference NULL crtc or fb until after checking
    drm/i915: fix pnv display core clock readout out
    drm/i915: Replace open-coded offset_in_page()
    drm/i915: Retry DP aux_ch communications with a different clock after failure
    drm/i915: Add messages useful for HPD storm detection debugging (v2)
    drm/i915: dvo_ch7xxx: fix vsync polarity setting
    drm/i915: fix the racy object accounting
    drm/i915: Convert the register access tracepoint to be conditional
    drm/i915: Squash gen lookup through multiple indirections inside GT access
    drm/i915: Use the common register access functions for NOTRACE variants
    drm/i915: Use a private interface for register access within GT
    drm/i915: Colocate all GT access routines in the same file
    drm/i915: fix reference counting in i915_gem_create
    drm/i915: Use Graphics Base of Stolen Memory on all gen3+
    drm/i915: disable stolen mem for OVERLAY_NEEDS_PHYSICAL
    drm/i915: add functions to disable and restore LCPLL
    drm/i915: disable CLKOUT_DP when it's not needed
    drm/i915: extend lpt_enable_clkout_dp
    drm/i915: fix up error cleanup in i915_gem_object_bind_to_gtt
    drm/i915: Add some debug breadcrumbs to connector detection
    ...

    Dave Airlie
     

25 Jul, 2013

1 commit

  • Use the new vma manager instead of the old hashtable. Also convert all
    drivers to use the new convenience helpers. This drops all the
    (map_list.hash.key << PAGE_SHIFT) non-sense.

    Locking and access-management is exactly the same as before with an
    additional lock inside of the vma-manager, which strictly wouldn't be
    needed for gem.

    v2:
    - rebase on drm-next
    - init nodes via drm_vma_node_reset() in drm_gem.c
    v3:
    - fix tegra
    v4:
    - remove duplicate if (drm_vma_node_has_offset()) checks
    - inline now trivial drm_vma_node_offset_addr() calls
    v5:
    - skip node-reset on gem-init due to kzalloc()
    - do not allow mapping gem-objects with offsets (backwards compat)
    - remove unneccessary casts

    Cc: Inki Dae
    Cc: Rob Clark
    Cc: Dave Airlie
    Cc: Thierry Reding
    Signed-off-by: David Herrmann
    Acked-by: Patrik Jakobsson
    Reviewed-by: Daniel Vetter
    Signed-off-by: Dave Airlie

    David Herrmann
     

20 Jul, 2013

1 commit

  • Make the uevent strings part of the user API for people who wish to
    write their own listeners.

    v2: Make a space in the string concatenation. (Chad)
    Use the "UEVENT" suffix intead of "EVENT" (Chad)
    Make kernel-doc parseable Docbook comments (Daniel)

    v3: Undid reset change introduced in last submission (Daniel)
    Fixed up comments to address removal changes.

    Thanks to Daniel Vetter for a majority of the parity error comments.

    CC: Chad Versace
    Signed-off-by: Ben Widawsky
    Signed-off-by: Daniel Vetter

    Ben Widawsky
     

28 Jun, 2013

2 commits

  • These changes are mostly minor fixes to things introduced in 3.10. The
    biggest chunk is updates to the host1x firewall which checks job
    submissions from userspace and wasn't working properly. All other
    patches are mostly one-liners. Nothing new or too exciting this time
    around.

    * 'drm/for-next' of git://anongit.freedesktop.org/tegra/linux:
    gpu: host1x: Rework CPU syncpoint increment
    gpu: host1x: Fix client_managed type
    gpu: host1x: Fix memory access in syncpt request
    gpu: host1x: Copy gathers before verification
    gpu: host1x: Don't reset firewall between gathers
    gpu: host1x: Check reloc table before usage
    gpu: host1x: Check INCR opcode correctly
    drm/tegra: Remove DRIVER_BUS_PLATFORM from driver_features
    drm/tegra: Fix return value
    drm/tegra: Include header drm/drm.h
    MAINTAINERS: Update Tegra DRM entry
    drm/tegra: fix error return code in gr2d_submit()
    drm/tegra: fix missing unlock on error
    drm/tegra: Honor pixel-format changes
    drm/tegra: Explicitly set irq_enabled
    drm/tegra: Don't disable unused planes

    Dave Airlie
     
  • So it looks like for virtual hw cursors on QXL we need to inform
    the "hw" device what the cursor hotspot parameters are. This
    makes sense if you think the host has to draw the cursor and interpret
    clicks from it. However the current modesetting interface doesn't support
    passing the hotspot information from userspace.

    This implements a new cursor ioctl, that takes the hotspot info as well,
    userspace can try calling the new interface and if it gets -ENOSYS it means
    its on an older kernel and can just fallback.

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

    Dave Airlie
     

22 Jun, 2013

1 commit


01 Jun, 2013

2 commits


30 Apr, 2013

1 commit

  • There is no way to use modes added to the user_modes list. We never
    look at the contents of said list in the kernel, and the only operations
    userspace can do are attach and detach. So the only "benefit" of this
    interface is wasting kernel memory.

    Fortunately it seems no real user space application ever used these
    ioctls. So just kill them.

    Also remove the prototypes for the non-existing drm_mode_addmode_ioctl()
    and drm_mode_rmmode_ioctl() functions.

    v2: Use drm_noop instead of completely removing the ioctls

    Signed-off-by: Ville Syrjälä
    Signed-off-by: Dave Airlie

    Ville Syrjälä
     

22 Apr, 2013

1 commit

  • Add client driver for 2D device, and IOCTLs to pass work to host1x
    channel for 2D.

    Also adds functions that can be called to access sync points from
    DRM.

    Signed-off-by: Arto Merilainen
    Signed-off-by: Terje Bergstrom
    Reviewed-by: Thierry Reding
    Tested-by: Thierry Reding
    Tested-by: Erik Faye-Lund
    Signed-off-by: Thierry Reding

    Terje Bergstrom
     

17 Apr, 2013

1 commit

  • Alex writes:
    This is the initial 3.10 pull request for radeon. The big changes here
    are UVD support and proper tiling support for SI. The rest is
    bug fixes. I hope to have another pull request later in the week with
    some new things we've been working on internally.

    * 'drm-next-3.10' of git://people.freedesktop.org/~agd5f/linux: (28 commits)
    drm/radeon: Always flush the VM
    drm/radeon: re-enable PTE/PDE packet for set_page on cayman/TN
    drm/radeon: cleanup properly if mmio mapping fails
    drm/radeon/evergreen+: don't enable HPD interrupts on eDP/LVDS
    drm/radeon: add si tile mode array query v3
    drm/radeon: add ring working query
    drm/radeon: handle broken disabled rb mask gracefully
    drm/radeon: add pcie set/get lanes callbacks for newer asics
    drm/radeon: update r600 set/get pcie lane config
    drm/radeon/kms: replace *REG32_PCIE_P with *REG32_PCIE_PORT
    drm/radeon: remove unused blit remnants from si.c
    drm/radeon: add UVD tiling addr config v2
    drm/radeon: init UVD clocks to sane defaults
    drm/radeon: add set_uvd_clocks callback for r7xx v3
    drm/radeon: add set_uvd_clocks callback for SI
    drm/radeon: add set_uvd_clocks callback for evergreen
    drm/radeon: add set_uvd_clocks callback for ON/LN/TN (v4)
    drm/radeon: add radeon_atom_get_clock_dividers helper
    drm/radeon: add pm callback for setting uvd clocks
    drm/radeon: UVD bringup v8
    ...

    Dave Airlie
     

16 Apr, 2013

1 commit

  • An ifdef in drm.h expects to be compiled with full-fledged Linux
    toolchain, but it's common to compile kernel with just bare-metal
    toolchain which doesn't define __linux__. So, also add __KERNEL__
    check.

    [nm@ti.com: port forward to 3.9-rc6 and post to dri devel for feedback as RFC]
    Signed-off-by: Paul Sokolovsky
    Signed-off-by: Dave Airlie

    Paul Sokolovsky
     

12 Apr, 2013

2 commits

  • Signed-off-by: Christopher Harvey
    Signed-off-by: Dave Airlie

    Christopher Harvey
     
  • QXL is a paravirtual graphics device used by the Spice virtual desktop
    interface.

    The drivers uses GEM and TTM to manage memory, the qxl hw fencing however
    is quite different than normal TTM expects, we have to keep track of a number
    of non-linear fence ids per bo that we need to have released by the hardware.

    The releases are freed from a workqueue that wakes up and processes the
    release ring.

    releases are suballocated from a BO, there are 3 release categories, drawables,
    surfaces and cursor cmds. The hw also has 3 rings for commands, cursor and release handling.

    The hardware also have a surface id tracking mechnaism and the driver encapsulates it completely inside the kernel, userspace never sees the actual hw surface
    ids.

    This requires a newer version of the QXL userspace driver, so shouldn't be
    enabled until that has been placed into your distro of choice.

    Authors: Dave Airlie, Alon Levy

    v1.1: fixup some issues in the ioctl interface with padding
    v1.2: add module device table
    v1.3: fix nomodeset, fbcon leak, dumb bo create, release ring irq,
    don't try flush release ring (broken hw), fix -modesetting.
    v1.4: fbcon cpu usage reduction + suitable accel flags.

    Signed-off-by: Alon Levy
    Signed-off-by: Dave Airlie

    Dave Airlie
     

11 Apr, 2013

2 commits


09 Apr, 2013

2 commits

  • Just everything needed to decode videos using UVD.

    v6: just all the bugfixes and support for R7xx-SI merged in one patch
    v7: UVD_CGC_GATE is a write only register, lockup detection fix
    v8: split out VRAM fallback changes, remove support for RV770,
    add support for HEMLOCK, add buffer sizes checks

    Signed-off-by: Christian König
    Reviewed-by: Jerome Glisse
    Signed-off-by: Alex Deucher

    Christian König
     
  • This patch allows the CPU to map the stolen vram segment
    directly rather than going through the PCI BAR. This
    significantly improves performance for certain workloads with
    a properly patched ddx.

    Use radeon.fastfb=1 to enable it (disabled by default).
    Currently only supported on RS690, but support for RS780/880
    and newer APUs may be added eventually.

    Signed-off-by: Samuel Li
    Reviewed-by: Christian König
    Signed-off-by: Alex Deucher

    Samuel Li
     

17 Feb, 2013

1 commit

  • Now that the omapdss interface has been reworked so that omapdrm can use
    dispc directly, we have been able to fix the remaining functional kms
    issues with omapdrm. And in the mean time the PM sequencing and many
    other of that open issues have been solved. So I think it makes sense
    to finally move omapdrm out of staging.

    Signed-off-by: Rob Clark

    Rob Clark
     

18 Jan, 2013

2 commits

  • Using copywinwin10 as an example that is dependent upon emitting a lot
    of relocations (2 per operation), we see improvements of:

    c2d/gm45: 618000.0/sec to 623000.0/sec.
    i3-330m: 748000.0/sec to 789000.0/sec.

    (measured relative to a baseline with neither optimisations applied).

    Signed-off-by: Chris Wilson
    Reviewed-by: Imre Deak
    Signed-off-by: Daniel Vetter

    Chris Wilson
     
  • Userspace is able to hint to the kernel that its command stream and
    auxiliary state buffers already hold the correct presumed addresses and
    so the relocation process may be skipped if the kernel does not need to
    move any buffers in preparation for the execbuffer. Thus for the common
    case where the allotment of buffers is static between batches, we can
    avoid the overhead of individually checking the relocation entries.

    Note that this requires userspace to supply the domain tracking and
    requests for workarounds itself that would otherwise be computed based
    upon the relocation entries.

    Using copywinwin10 as an example that is dependent upon emitting a lot
    of relocations (2 per operation), we see improvements of:

    c2d/gm45: 618000.0/sec to 632000.0/sec.
    i3-330m: 748000.0/sec to 830000.0/sec.

    (measured relative to a baseline with neither optimisations applied).

    Signed-off-by: Chris Wilson
    Reviewed-by: Imre Deak
    [danvet: Fixup merge conflict in userspace header due to different
    baseline trees.]
    Signed-off-by: Daniel Vetter

    Daniel Vetter
     

04 Jan, 2013

2 commits

  • This patch considers both case of vflip and hflip.
    If we want that the contents in buffer to be rotated to 180 degree,
    then we can use h,vflip or 180 degree.

    Changelog v2:
    - added EXYNOS_DRM_FLIP_BOTH enum value to avoid build warnning.

    Signed-off-by: Eunchul Kim
    Signed-off-by: Inki Dae

    Eunchul Kim
     
  • This patch changes file license to GPL

    Most of exynos files had been copied from some random
    file and not updated correctly. So this patch corrects
    the file license.

    Signed-off-by: Inki Dae
    Signed-off-by: Kyungmin Park

    Inki Dae
     

30 Dec, 2012

1 commit

  • Some fixes for 3.8:
    - Watermark fixups from Chris Wilson (4 pieces).
    - 2 snb workarounds, seem to be recently added to our internal DB.
    - workaround for the infamous i830/i845 hang, seems now finally solid!
    Based on Chris' fix for SNA, now also for UXA/mesa&old SNA.
    - Some more fixlets for shrinker-pulls-the-rug issues (Chris&me).
    - Fix dma-buf flags when exporting (you).
    - Disable the VGA plane if it's enabled on lid open - similar fix in
    spirit to the one I've sent you last weeek, BIOS' really like to mess
    with the display when closing the lid (awesome debug work from Krzysztof
    Mazur).

    * 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel:
    drm/i915: disable shrinker lock stealing for create_mmap_offset
    drm/i915: optionally disable shrinker lock stealing
    drm/i915: fix flags in dma buf exporting
    i915: ensure that VGA plane is disabled
    drm/i915: Preallocate the drm_mm_node prior to manipulating the GTT drm_mm manager
    drm: Export routines for inserting preallocated nodes into the mm manager
    drm/i915: don't disable disconnected outputs
    drm/i915: Implement workaround for broken CS tlb on i830/845
    drm/i915: Implement WaSetupGtModeTdRowDispatch
    drm/i915: Implement WaDisableHiZPlanesWhenMSAAEnabled
    drm/i915: Prefer CRTC 'active' rather than 'enabled' during WM computations
    drm/i915: Clear self-refresh watermarks when disabled
    drm/i915: Double the cursor self-refresh latency on Valleyview
    drm/i915: Fixup cursor latency used for IVB lp3 watermarks

    Dave Airlie
     

18 Dec, 2012

1 commit

  • Now that Chris Wilson demonstrated that the key for stability on early
    gen 2 is to simple _never_ exchange the physical backing storage of
    batch buffers I've tried a stab at a kernel solution. Doesn't look too
    nefarious imho, now that I don't try to be too clever for my own good
    any more.

    v2: After discussing the various techniques, we've decided to always blit
    batches on the suspect devices, but allow userspace to opt out of the
    kernel workaround assume full responsibility for providing coherent
    batches. The principal reason is that avoiding the blit does improve
    performance in a few key microbenchmarks and also in cairo-trace
    replays.

    Signed-Off-by: Daniel Vetter
    Signed-off-by: Chris Wilson
    [danvet:
    - Drop the hunk which uses HAS_BROKEN_CS_TLB to implement the ring
    wrap w/a. Suggested by Chris Wilson.
    - Also add the ACTHD check from Chris Wilson for the error state
    dumping, so that we still catch batches when userspace opts out of
    the w/a.]
    Signed-off-by: Daniel Vetter

    Daniel Vetter
     

16 Dec, 2012

1 commit

  • …daeinki/drm-exynos into drm-next

    Inki writes:
    "- add dmabuf attach/detach feature
    . This patch would resolve performance deterioration issue
    when v4l2-based driver is using the buffer imported from gem.
    - drm/exynos: use DMA_ATTR_NO_KERNEL_MAPPING attribute
    . With gem allocation, kernel space mapping isn't allocated and
    also physical pages aren't mapped with the kernel space.
    The physical pages are mapped with kernel space though vmap
    function only for console framebuffer.
    - add the below two patches I missed.
    drm: exynos: moved exynos drm device registration to drm driver
    drm: exynos: moved exynos drm hdmi device registration to drm driver
    - add IPP subsystem framework and its-based device drivers.
    . This patch set includes fimc, rotator and gsc drivers to perform
    image scaling, rotation and color space conversion.
    - add runtime pm support to hdmi driver.
    - And fixups and cleanups."

    * 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos: (30 commits)
    drm/exynos: add gsc ipp driver
    drm/exynos: add rotator ipp driver
    drm/exynos: add fimc ipp driver
    drm/exynos: add iommu support for ipp
    drm/exynos: add ipp subsystem
    drm/exynos: support device tree for fimd
    drm/exynos: support extended screen coordinate of fimd
    drm/exynos: fix x, y coordinates for right bottom pixel
    drm/exynos: fix fb offset calculation for plane
    drm/exynos: hdmi: Fix potential NULL pointer dereference error
    drm/exynos: hdmi: Add CONFIG_OF and use of_match_ptr() macro
    drm/exynos: add support for hdmiphy power control for exynos5
    drm/exynos: add runtime pm support for mixer
    drm/exynos: added runtime pm support for hdmi
    drm/exynos: fix allocation and cache mapping type
    drm/exynos: reorder framebuffer init sequence
    drm/exynos/iommu: fix return value check in drm_create_iommu_mapping()
    drm/exynos: remove unused vaddr member
    drm/exynos: use DMA_ATTR_NO_KERNEL_MAPPING attribute
    drm/exynos: add exception codes to exynos_drm_fbdev_create()
    ...

    Dave Airlie
     

15 Dec, 2012

1 commit

  • This patch adds Image Post Processing(IPP) support for exynos drm driver.

    IPP supports image scaler/rotator and input/output DMA operations
    using IPP subsystem framework to control FIMC, Rotator and GSC hardware
    and supports some user interfaces for user side.

    And each IPP-based drivers support Memory to Memory operations
    with various converting. And in case of FIMC hardware, it also supports
    Writeback and Display output operations through local path.

    Features:
    - Memory to Memory operation support.
    - Various pixel formats support.
    - Image scaling support.
    - Color Space Conversion support.
    - Image crop operation support.
    - Rotate operation support to 90, 180 or 270 degree.
    - Flip operation support to vertical, horizontal or both.
    - Writeback operation support to display blended image of FIMD fifo on screen

    A summary to IPP Subsystem operations:
    First of all, user should get property capabilities from IPP subsystem
    and set these properties to hardware registers for desired operations.
    The properties could be pixel format, position, rotation degree and
    flip operation.

    And next, user should set source and destination buffer data using
    DRM_EXYNOS_IPP_QUEUE_BUF ioctl command with gem handles to source and
    destinition buffers.

    And next, user can control user-desired hardware with desired operations
    such as play, stop, pause and resume controls.

    And finally, user can aware of dma operation completion and also get
    destination buffer that it contains user-desried result through dequeue
    command.

    IOCTL commands:
    - DRM_EXYNOS_IPP_GET_PROPERTY
    . get ipp driver capabilitis and id.
    - DRM_EXYNOS_IPP_SET_PROPERTY
    . set format, position, rotation, flip to source and destination buffers
    - DRM_EXYNOS_IPP_QUEUE_BUF
    . enqueue/dequeue buffer and make event list.
    - DRM_EXYNOS_IPP_CMD_CTRL
    . play/stop/pause/resume control.

    Event:
    - DRM_EXYNOS_IPP_EVENT
    . a event to notify dma operation completion to user side.

    Basic control flow:
    Open -> Get properties -> User choose desired IPP sub driver(FIMC, Rotator
    or GSCALER) -> Set Property -> Create gem handle -> Enqueue to source and
    destination buffers -> Command control(Play) -> Event is notified to User
    -> User gets destinition buffer complated -> (Enqueue to source and
    destination buffers -> Event is notified to User) * N -> Queue/Dequeue to
    source and destination buffers -> Command control(Stop) -> Free gem handle
    -> Close

    Changelog v1 ~ v5:
    - added comments, code fixups and cleanups.

    Signed-off-by: Eunchul Kim
    Signed-off-by: Jinyoung Jeon
    Signed-off-by: Inki Dae
    Signed-off-by: Kyungmin Park

    Eunchul Kim
     

14 Dec, 2012

1 commit


10 Dec, 2012

1 commit

  • Alex writes:
    Pretty minor -next pull request. We some additional new bits waiting
    internally for release. Hopefully Monday we can get at least some of
    them out. The others will probably take a few more weeks.

    Highlights of the current request:
    - ELD registers for passing audio information to the sound hardware
    - Handle GPUVM page faults more gracefully
    - Misc fixes

    Merge radeon test
    * 'drm-next-3.8' of git://people.freedesktop.org/~agd5f/linux: (483 commits)
    drm/radeon: bump driver version for new info ioctl requests
    drm/radeon: fix eDP clk and lane setup for scaled modes
    drm/radeon: add new INFO ioctl requests
    drm/radeon/dce32+: use fractional fb dividers for high clocks
    drm/radeon: use cached memory when evicting for vram on non agp
    drm/radeon: add a CS flag END_OF_FRAME
    drm/radeon: stop page faults from hanging the system (v2)
    drm/radeon/dce4/5: add registers for ELD handling
    drm/radeon/dce3.2: add registers for ELD handling
    radeon: fix pll/ctrc mapping on dce2 and dce3 hardware
    Linux 3.7-rc7
    powerpc/eeh: Do not invalidate PE properly
    Revert "drm/i915: enable rc6 on ilk again"
    ALSA: hda - Fix build without CONFIG_PM
    of/address: sparc: Declare of_iomap as an extern function for sparc again
    PM / QoS: fix wrong error-checking condition
    bnx2x: remove redundant warning log
    vxlan: fix command usage in its doc
    8139cp: revert "set ring address before enabling receiver"
    MPI: Fix compilation on MIPS with GCC 4.4 and newer
    ...

    Conflicts:
    drivers/gpu/drm/exynos/exynos_drm_encoder.c
    drivers/gpu/drm/exynos/exynos_drm_fbdev.c
    drivers/gpu/drm/nouveau/core/engine/disp/nv50.c

    Dave Airlie
     

08 Dec, 2012

1 commit