kernel-ark/drivers/gpu/drm
Ilija Hadzic 52b53a0bf8 drm/radeon/kms/blit: fix blit copy for very large buffers
Evergreen and NI blit copy was broken if the buffer maps to a rectangle
whose one dimension is 16384 (max dimension allowed by these chips).
In the mainline kernel, the problem is exposed only when buffers are
very large (1G), but it's still a problem. The problem could be exposed
for smaller buffers if anyone modifies the algorithm for rectangle
construction in r600_blit_create_rect() (the reason why someone would
modify that algorithm is to tune the performance of buffer moves).

The root cause was in i2f() function which only operated on range between
0 and 16383. Fix this by extending the range of i2f() function to 0 to
32767.

While at it improve the function so that the range can be easily
extended in the future (if it becomes necessary), cleanup lines
over 80 characters, and replace in-line comments with one strategic
comment that explains the crux of the function.

Credits to michel@daenzer.net for pointing out the root cause of
the bug.

v2: Fix I2F_MAX_INPUT constant definition goof and warn only once
    if input argument is out of range. Edit the comment a little
    bit to avoid some linguistic confusion and make it look better
    in general.

Signed-off-by: Ilija Hadzic <ihadzic@research.bell-labs.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Michel Dänzer <michel@daenzer.net>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-02-02 15:54:48 +00:00
..
exynos drm/exynos: fixed pm feature for fimd module. 2012-01-27 13:03:59 +09:00
gma500 gma500: Fix suspend/resume functions 2012-01-27 11:52:07 +00:00
i2c
i810 Revert "drm/i810: cleanup reclaim_buffers" 2012-01-30 09:31:25 +00:00
i915 drm/i915: fixup forcewake spinlock fallout in drpc debugfs function 2012-01-25 09:15:33 -08:00
mga
nouveau drm/nv50/pm: signedness bug in nv50_pm_clocks_pre() 2012-02-01 15:27:43 +10:00
r128
radeon drm/radeon/kms/blit: fix blit copy for very large buffers 2012-02-02 15:54:48 +00:00
savage
sis gpu, drm, sis: Don't return uninitialized variable from sis_driver_load() 2012-01-23 11:00:47 +00:00
tdfx
ttm drm/ttm: fix two regressions since move_notify changes 2012-01-25 18:54:28 +00:00
via drm/sis|via: don't return stack garbage from free_mem ioctl 2012-01-09 12:11:39 +00:00
vmwgfx vmwgfx: Fix assignment in vmw_framebuffer_create_handle 2012-01-30 09:32:39 +00:00
ati_pcigart.c
drm_agpsupport.c
drm_auth.c drm: Fix authentication kernel crash 2012-01-25 09:27:45 +00:00
drm_buffer.c
drm_bufs.c
drm_cache.c
drm_context.c drm: make DRM_UNLOCKED ioctls with their own mutex 2012-01-05 14:43:02 +00:00
drm_crtc_helper.c drm: Add drm_format_num_planes() utility function 2011-12-20 20:34:32 +00:00
drm_crtc.c drm: add support for private planes 2012-01-05 10:00:16 +00:00
drm_debugfs.c
drm_dma.c
drm_dp_i2c_helper.c
drm_drv.c drm: make DRM_UNLOCKED ioctls with their own mutex 2012-01-05 14:43:02 +00:00
drm_edid_modes.h
drm_edid.c
drm_encoder_slave.c
drm_fb_helper.c
drm_fops.c drm: Fix authentication kernel crash 2012-01-25 09:27:45 +00:00
drm_gem.c drm: Pass the real error code back during GEM bo initialisation 2012-01-30 09:31:42 +00:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_ioc32.c
drm_ioctl.c drm: make DRM_UNLOCKED ioctls with their own mutex 2012-01-05 14:43:02 +00:00
drm_irq.c
drm_lock.c drm: add missing exports for i810 driver. 2011-12-22 19:09:01 +00:00
drm_memory.c
drm_mm.c
drm_modes.c
drm_pci.c
drm_platform.c
drm_proc.c
drm_scatter.c
drm_stub.c
drm_sysfs.c switch device_get_devnode() and ->devnode() to umode_t * 2012-01-03 22:54:55 -05:00
drm_trace_points.c
drm_trace.h
drm_usb.c
drm_vm.c
Kconfig
Makefile drm: kill drm_sman 2011-12-22 00:33:23 +01:00
README.drm

************************************************************
* For the very latest on DRI development, please see:      *
*     http://dri.freedesktop.org/                          *
************************************************************

The Direct Rendering Manager (drm) is a device-independent kernel-level
device driver that provides support for the XFree86 Direct Rendering
Infrastructure (DRI).

The DRM supports the Direct Rendering Infrastructure (DRI) in four major
ways:

    1. The DRM provides synchronized access to the graphics hardware via
       the use of an optimized two-tiered lock.

    2. The DRM enforces the DRI security policy for access to the graphics
       hardware by only allowing authenticated X11 clients access to
       restricted regions of memory.

    3. The DRM provides a generic DMA engine, complete with multiple
       queues and the ability to detect the need for an OpenGL context
       switch.

    4. The DRM is extensible via the use of small device-specific modules
       that rely extensively on the API exported by the DRM module.


Documentation on the DRI is available from:
    http://dri.freedesktop.org/wiki/Documentation
    http://sourceforge.net/project/showfiles.php?group_id=387
    http://dri.sourceforge.net/doc/

For specific information about kernel-level support, see:

    The Direct Rendering Manager, Kernel Support for the Direct Rendering
    Infrastructure
    http://dri.sourceforge.net/doc/drm_low_level.html

    Hardware Locking for the Direct Rendering Infrastructure
    http://dri.sourceforge.net/doc/hardware_locking_low_level.html

    A Security Analysis of the Direct Rendering Infrastructure
    http://dri.sourceforge.net/doc/security_low_level.html