aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* drm/nve0/fifo: recover from mmu faults on bar1/bar3Ben Skeggs2014-01-22
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nve0/fifo: keep mmu fault interrupts enabled at all timesBen Skeggs2014-01-22
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nve0/fifo: update human-readable mmu fault descriptionsBen Skeggs2014-01-22
| | | | | | Ordering from Android GK20A driver, names from binary driver strings. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nve0/fifo: document more intr status bitsBen Skeggs2014-01-22
| | | | | | As per Android GK20A driver. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nve0/fifo: populate PBDMA status bitfield with more definitionsBen Skeggs2014-01-22
| | | | | | As per Android GK20A driver. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nve0/fifo: s/subfifo/PBDMA/Ben Skeggs2014-01-22
| | | | | | As per Android GK20A driver. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nve0/fifo: s/playlist/runlist/Ben Skeggs2014-01-22
| | | | | | As per Android GK20A driver. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nvf0/gr: enable acceleration with our chsw ucodeBen Skeggs2014-01-22
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv108/gr: enable acceleration with our chsw ucodeBen Skeggs2014-01-22
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nvc0-/gr: handle fwmthd interrupts in ucodeBen Skeggs2014-01-22
| | | | | | | Compute code in mesa triggers one of these, hanging the engine. Let's at least ack the request for now to avoid the hang. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nvc0-/gr: fiddle some magic around strand initBen Skeggs2014-01-22
| | | | | | Fixes HUB_INIT timeout on GK110/GK208 when not using NVIDIA's ucode. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv108/gr: initial support (need external fuc)Ben Skeggs2014-01-22
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv108/ce: enable copy enginesBen Skeggs2014-01-22
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv108/fifo: initial supportBen Skeggs2014-01-22
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nvf0/gr: remove a copy+pasto in ctx reglistBen Skeggs2014-01-22
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nvc0-/gr: bring in some macros to abstract falcon isa differencesBen Skeggs2014-01-22
| | | | | | Need. A. Compiler... Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/falcon: use vmalloc to create firwmare copiesIlia Mirkin2014-01-22
| | | | | | | | | Some firmware images may be large (64K), so using kmalloc memory is inappropriate for them. Use vmalloc instead, to avoid high-order allocation failures. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Cc: stable@vger.kernel.org
* drm/nouveau/gem: remove (now) unneeded pre-validate fence syncBen Skeggs2014-01-22
| | | | | | | | Now that nouveau_bo.c can handle sync when it actually needs to, we can remove this and avoid a double semaphore acquire when syncing in the command submission path. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/ttm: explicitly wait for bo idle before memcpy buffer moveBen Skeggs2014-01-22
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/ttm: explicity sync with kernel channel before moving bufferBen Skeggs2014-01-22
| | | | | | The GEM code handles this currently, but that'll be removed. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/ttm: tidy up creation of temporary buffer move vmasBen Skeggs2014-01-22
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv04/plane: add support for nv04/nv05 video overlayIlia Mirkin2014-01-22
| | | | | Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv10/plane: add YUYV supportIlia Mirkin2014-01-22
| | | | | Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50-: map TTM_PL_SYSTEM through a BAR for CPU accessMaarten Lankhorst2014-01-22
| | | | | | | Moves bo's to TTM_PL_TT for BAR mapping, to hide tiling from user. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: fix m2mf copy to tiled gartMaarten Lankhorst2014-01-22
| | | | | | | | | | Commit de7b7d59d54852c introduced tiled GART, but a linear copy is still performed. This may result in errors on eviction, fix it by checking tiling from memtype. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Cc: stable@vger.kernel.org #3.10+ Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/vm: reduce number of entry-points to vm_map()Ben Skeggs2014-01-22
| | | | | | | | Pretty much everywhere had to make the decision which to use, so it makes a lot more sense to just have one entrypoint decide the path to take instead. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/cirrus: correct register values for 16bppTakashi Iwai2014-01-22
| | | | | | | | | | | | | | | When the mode is set with 16bpp on QEMU, the output gets totally broken. The culprit is the bogus register values set for 16bpp, which was likely copied from from a wrong place. Addresses https://bugzilla.novell.com/show_bug.cgi?id=799216 Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jiri Slaby <jslaby@suse.cz> Cc: David Airlie <airlied@linux.ie> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/nouveau: make vga_switcheroo code depend on VGA_SWITCHEROOJeff Mahoney2014-01-22
| | | | | | | | | | | | | | | | | | | | Commit 8116188fdef594 ("nouveau/acpi: hook up to the MXM method for mux switching.") broke the build on non-x86 architectures due to the new dependency on MXM and MXM being an x86 platform driver. It built previously since the vga switcheroo registration routines were zereod out on !X86. The code was built in but unused. This patch makes all of the DSM code depend on CONFIG_VGA_SWITCHEROO, allowing it to build on non-x86 and shrinking the module size as well. [rdunlap@infradead.org: fix build eror when VGA_SWITCHEROO is not enabled] Signed-off-by: Jeff Mahoney <jeffm@suse.com> Signed-off-by: Jiri Slaby <jslaby@suse.cz> Cc: David Airlie <airlied@linux.ie> Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/mgag200: on cards with < 2MB VRAM default to 16-bitDave Airlie2014-01-22
| | | | | | | This aligns with what the userspace -mga driver does in the same situation. Signed-off-by: Dave Airlie <airlied@redhat.com>
* Merge branch 'drm-vbl-timestamp' of git://gitorious.org/vsyrjala/linux into ↵Dave Airlie2014-01-21
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | drm-next Here's the vblank timestamp pull request you wanted. I addressed the few bugs that Mario pointed out and added the r-bs. As it has been a while since I made the changes, I gave it a quick spin on a few different i915 machines. Fortunately everything still seems to be fine. * 'drm-vbl-timestamp' of git://gitorious.org/vsyrjala/linux: drm/i915: Add a kludge for DSL incrementing too late and ISR not working drm/radeon: Move the early vblank IRQ fixup to radeon_get_crtc_scanoutpos() drm: Pass 'flags' from the caller to .get_scanout_position() drm: Fix vblank timestamping constants for interlaced modes drm/i915: Fix scanoutpos calculations for interlaced modes drm: Change {pixel,line,frame}dur_ns from s64 to int drm: Use crtc_clock in drm_calc_timestamping_constants() drm/radeon: Populate crtc_clock in radeon_atom_get_tv_timings() drm: Simplify the math in drm_calc_timestamping_constants() drm: Improve drm_calc_timestamping_constants() documentation drm/i915: Call drm_calc_timestamping_constants() earlier drm/i915: Kill hwmode save/restore drm: Pass the display mode to drm_calc_vbltimestamp_from_scanoutpos() drm: Pass the display mode to drm_calc_timestamping_constants()
| * drm/i915: Add a kludge for DSL incrementing too late and ISR not workingVille Syrjälä2014-01-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On pre-PCH platforms ISR doesn't seem to be an actual ISR, at least as far as display interrupts are concerned. Instead it sort of looks like some ISR bits just directly reflect the corresponding bit from PIPESTAT. The bit appears in the ISR only if the PIPESTAT interrupt is enabled. So in that sense it sort of looks a bit like the south interrupt scheme on PCH platforms. So it goes something a bit like this: PIPESTAT.status & PIPESTAT.enable -> ISR -> IMR -> IIR -> IER -> actual interrupt In any case that means the intel_pipe_in_vblank_locked() doesn't actually work for pre-PCH platforms. As a last resort, add a similar kludge as radeon has that fixes things up if we got called from the vblank interrupt, but the scanline counter value indicates that we're not quite there yet. We know that the scanline counter increments at hsync but is otherwise accurate, so we can limit the kludge to the line just prior to vblank start, instead of the relative distance that radeon uses. Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm/radeon: Move the early vblank IRQ fixup to radeon_get_crtc_scanoutpos()Ville Syrjälä2014-01-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i915 doesn't need this kludge for most platforms. Although we do appear to need something similar on certain platforms, but we can be more accurate when we apply the adjustment since we know exactly why the scanline counter doesn't always quite match the vblank status. Also the current code doesn't handle interlaced modes correctly, and we already deal with interlaced modes in i915 code. So let's just move the current code to radeon_get_crtc_scanoutpos() since that's why it was added. For i915 we'll add a more finely targeted variant. v2: Fix vpos vs. *vpos bug (Mario) Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm: Pass 'flags' from the caller to .get_scanout_position()Ville Syrjälä2014-01-20
| | | | | | | | | | | | | | | | | | | | Preparation for moving the early vblank IRQ logic into radeon_get_crtc_scanoutpos(). v2: Fix radeon_drv.c compile warning (Mario) Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm: Fix vblank timestamping constants for interlaced modesVille Syrjälä2014-01-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We're currently miscalculating the line and pixel durations for interlaced modes. crtc_htotal and crtc_vtotal are the full frame timings, and so is crtc_clock, so we can compute the line and pixel durations from those w/o any extra adjustments. But we actually want framedur_ns to be the field, not frame, duration, so we must divide it by two. This should make the scanout based vblank timestamp corrections work correctly with interlaced modes, at least for i915. It all depends whether we keep the field or frame timings in the display mode crtc_ timings. v2: Preserve halve->half typo fix that happened in the meantine Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm/i915: Fix scanoutpos calculations for interlaced modesVille Syrjälä2014-01-20
| | | | | | | | | | | | | | | | | | | | | | | | The scanline counter counts lines in the current field, not the entire frame. But the crtc_ timings are the values for the entire frame. Divide the vertical timings by 2 to make them match the scanline counter. The rounding was carefully chosen to make it do the right thing wrt. the observed scanline counter and ISR vblank bit behaviour. Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm: Change {pixel,line,frame}dur_ns from s64 to intVille Syrjälä2014-01-20
| | | | | | | | | | | | | | | | | | | | | | Using s64 for the timestamping constants is wasteful. Signed 32bit integers get us a range of over +-2 seconds. Presuming that no-one wants to a vrefresh rate less than 0.5, we can switch to using int for the timestamping constants. We save a few bytes in drm_crtc and avoid a bunch of 64bit math. Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm: Use crtc_clock in drm_calc_timestamping_constants()Ville Syrjälä2014-01-20
| | | | | | | | | | | | | | | | | | | | | | | | | | drm_calc_timestamping_constants() computes the pixel/line/frame durations based on the crtc_ timing values. The corresponding pixel clock is in mode->crtc_clock, so we need to use that instead of mode->clock. This should fix drm_calc_timestamping_constants() for frame packing stereo modes. Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm/radeon: Populate crtc_clock in radeon_atom_get_tv_timings()Ville Syrjälä2014-01-20
| | | | | | | | | | | | | | | | | | | | | | | | | | crtc_clock is now supposed to be the actual pixel clock corresponding to the other crtc_ timing values. Populate crtc_clock appropriately in radeon_atom_get_tv_timings(). This was the only obvious place where we frob with the crtc_ timigns directly instead of calling drm_mode_set_crtcinfo() which would also update crtc_clock. Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm: Simplify the math in drm_calc_timestamping_constants()Ville Syrjälä2014-01-20
| | | | | | | | | | | | | | | | | | | | | | | | drm_calc_timestamping_constants() makes the math more complex than necessary. - multipying the dotclock by 1000 is pointless, just makes all the numbers bigger - div64_u64() is also pointless, div_u64 is enough - pixeldur_ns doesn't need any 64bit math Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm: Improve drm_calc_timestamping_constants() documentationVille Syrjälä2014-01-20
| | | | | | | | | | | | | | | | Move the long blurp to into the body of the comment, leaving only a short summary line at the top. Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm/i915: Call drm_calc_timestamping_constants() earlierVille Syrjälä2014-01-20
| | | | | | | | | | | | | | | | | | Update the pixel/line/frame duration information when we switch to the new pipe config. This will keep the timestamping constants in better sync with the real hardware state. Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm/i915: Kill hwmode save/restoreVille Syrjälä2014-01-20
| | | | | | | | | | | | | | | | drm core no longer uses crtc->hwmode, and neither does i915, so we can totally ignore it in i915. Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm: Pass the display mode to drm_calc_vbltimestamp_from_scanoutpos()Ville Syrjälä2014-01-20
| | | | | | | | | | | | | | | | | | Rather than using crtc->hwmode, just pass the relevant mode to drm_calc_vbltimestamp_from_scanoutpos(). This removes the last hwmode usage from core drm. Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
| * drm: Pass the display mode to drm_calc_timestamping_constants()Ville Syrjälä2014-01-20
| | | | | | | | | | | | | | | | | | We don't really use hwmode anymore in i915, so eliminating its use from the core code seems prudent. Just pass the appropriate mode to drm_calc_timestamping_constants(). Reviewed-by: mario.kleiner.de@gmail.com Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
* | Merge branch 'topic/core-stuff' of ↵Dave Airlie2014-01-21
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://people.freedesktop.org/~danvet/drm-intel into drm-next Some straggling drm core patches * 'topic/core-stuff' of git://people.freedesktop.org/~danvet/drm-intel: drm/gem: Always initialize the gem object in object_init drm/edid: Populate picture aspect ratio for CEA modes drm/edid: parse the list of additional 3D modes drm/edid: split VIC display mode lookup into a separate function drm: Make the connector mode_valid() vfunc return a drm_mode_status enum
| * | drm/gem: Always initialize the gem object in object_initDaniel Vetter2014-01-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At least drm/i915 expects that the obj->dev pointer is set even in failure paths. Specifically when the shmem initialization fails we call i915_gem_object_free which needs to deref obj->base.dev to get at the slab pointer in the device private structure. And the shmem allocation can easily fail when userspace is hitting open file limits. Doing the structure init even when the shmem file allocation fails prevents this Oops. This is a regression from commit 89c8233f82d9c8af5b20e72e4a185a38a7d3c50b Author: David Herrmann <dh.herrmann@gmail.com> Date: Thu Jul 11 11:56:32 2013 +0200 drm/gem: simplify object initialization v2: Add regression note which Chris supplied. Testcase: igt/gem_fd_exhaustion Reported-and-Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> References: http://lists.freedesktop.org/archives/intel-gfx/2014-January/038433.html Cc: stable@vger.kernel.org Reviewed-by: David Herrmann <dh.herrmann@gmail.com> Cc: David Herrmann <dh.herrmann@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
| * | drm/edid: Populate picture aspect ratio for CEA modesVandana Kannan2014-01-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adding picture aspect ratio for CEA modes based on CEA-861D Table 3 or CEA-861E Table 4. This is useful for filling up the detail in AVI infoframe. v2: Ville's review comments incorporated Added picture aspect ratio as part of edid_cea_modes instead of DRM_MODE Signed-off-by: Vandana Kannan <vandana.kannan@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
| * | drm/edid: parse the list of additional 3D modesThomas Wood2014-01-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Parse 2D_VIC_order_X and 3D_Structure_X from the list at the end of the HDMI Vendor Specific Data Block. v2: Use an offset value depending on 3D_Multi_present and add detail_present. (Ville Syrjälä) v3: Make sure the list is parsed even if 3D_Structure_ALL/MASK is not present. (Ville Syrjälä) Fix one length check and remove another. (Ville Syrjälä) Signed-off-by: Thomas Wood <thomas.wood@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
| * | drm/edid: split VIC display mode lookup into a separate functionThomas Wood2014-01-20
| | | | | | | | | | | | | | | | | | Signed-off-by: Thomas Wood <thomas.wood@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
| * | drm: Make the connector mode_valid() vfunc return a drm_mode_status enumDamien Lespiau2014-01-20
| |/ | | | | | | | | | | | | To make it clear what exactly mode_valid() should return. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>