Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d15b0ec authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
  drm/radeon: switch to using late_initcall
  radeon legacy chips: tv dac bg/dac adj updates
  drm/radeon: introduce kernel modesetting for radeon hardware
  drm: Add the TTM GPU memory manager subsystem.
  drm: Memory fragmentation from lost alignment blocks
  drm/radeon: fix mobility flags on new PCI IDs.
parents 005411c3 cc8da526
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -18,6 +18,14 @@ menuconfig DRM
	  details.  You should also select and configure AGP
	  (/dev/agpgart) support.

config DRM_TTM
	tristate
	depends on DRM
	help
	  GPU memory management subsystem for devices with multiple
	  GPU memory types. Will be enabled automatically if a device driver
	  uses it.

config DRM_TDFX
	tristate "3dfx Banshee/Voodoo3+"
	depends on DRM && PCI
@@ -36,6 +44,11 @@ config DRM_R128
config DRM_RADEON
	tristate "ATI Radeon"
	depends on DRM && PCI
	select FB_CFB_FILLRECT
	select FB_CFB_COPYAREA
	select FB_CFB_IMAGEBLIT
	select FB
	select FRAMEBUFFER_CONSOLE if !EMBEDDED
	help
	  Choose this option if you have an ATI Radeon graphics card.  There
	  are both PCI and AGP versions.  You don't need to choose this to
+1 −1
Original line number Diff line number Diff line
@@ -26,4 +26,4 @@ obj-$(CONFIG_DRM_I915) += i915/
obj-$(CONFIG_DRM_SIS)   += sis/
obj-$(CONFIG_DRM_SAVAGE)+= savage/
obj-$(CONFIG_DRM_VIA)	+=via/
obj-$(CONFIG_DRM_TTM)	+= ttm/
+9 −11
Original line number Diff line number Diff line
@@ -188,36 +188,34 @@ static struct drm_mm_node *drm_mm_split_at_start(struct drm_mm_node *parent,



struct drm_mm_node *drm_mm_get_block(struct drm_mm_node * parent,
struct drm_mm_node *drm_mm_get_block(struct drm_mm_node *node,
				     unsigned long size, unsigned alignment)
{

	struct drm_mm_node *align_splitoff = NULL;
	struct drm_mm_node *child;
	unsigned tmp = 0;

	if (alignment)
		tmp = parent->start % alignment;
		tmp = node->start % alignment;

	if (tmp) {
		align_splitoff =
		    drm_mm_split_at_start(parent, alignment - tmp, 0);
		    drm_mm_split_at_start(node, alignment - tmp, 0);
		if (unlikely(align_splitoff == NULL))
			return NULL;
	}

	if (parent->size == size) {
		list_del_init(&parent->fl_entry);
		parent->free = 0;
		return parent;
	if (node->size == size) {
		list_del_init(&node->fl_entry);
		node->free = 0;
	} else {
		child = drm_mm_split_at_start(parent, size, 0);
		node = drm_mm_split_at_start(node, size, 0);
	}

	if (align_splitoff)
		drm_mm_put_block(align_splitoff);

	return child;
	return node;
}

EXPORT_SYMBOL(drm_mm_get_block);
+34 −0
Original line number Diff line number Diff line
config DRM_RADEON_KMS
	bool "Enable modesetting on radeon by default"
	depends on DRM_RADEON
	select DRM_TTM
	help
	  Choose this option if you want kernel modesetting enabled by default,
	  and you have a new enough userspace to support this. Running old
	  userspaces with this enabled will cause pain.

	  When kernel modesetting is enabled the IOCTL of radeon/drm
	  driver are considered as invalid and an error message is printed
	  in the log and they return failure.

	  KMS enabled userspace will use new API to talk with the radeon/drm
	  driver. The new API provide functions to create/destroy/share/mmap
	  buffer object which are then managed by the kernel memory manager
	  (here TTM). In order to submit command to the GPU the userspace
	  provide a buffer holding the command stream, along this buffer
	  userspace have to provide a list of buffer object used by the
	  command stream. The kernel radeon driver will then place buffer
	  in GPU accessible memory and will update command stream to reflect
	  the position of the different buffers.

	  The kernel will also perform security check on command stream
	  provided by the user, we want to catch and forbid any illegal use
	  of the GPU such as DMA into random system memory or into memory
	  not owned by the process supplying the command stream. This part
	  of the code is still incomplete and this why we propose that patch
	  as a staging driver addition, future security might forbid current
	  experimental userspace to run.

	  This code support the following hardware : R1XX,R2XX,R3XX,R4XX,R5XX
	  (radeon up to X1950). Works is underway to provide support for R6XX,
	  R7XX and newer hardware (radeon from HD2XXX to HD4XXX).
+11 −1
Original line number Diff line number Diff line
@@ -3,7 +3,17 @@
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.

ccflags-y := -Iinclude/drm
radeon-y := radeon_drv.o radeon_cp.o radeon_state.o radeon_mem.o radeon_irq.o r300_cmdbuf.o r600_cp.o
radeon-y := radeon_drv.o radeon_cp.o radeon_state.o radeon_mem.o \
	radeon_irq.o r300_cmdbuf.o r600_cp.o

radeon-$(CONFIG_DRM_RADEON_KMS) += radeon_device.o radeon_kms.o \
	radeon_atombios.o radeon_agp.o atombios_crtc.o radeon_combios.o \
	atom.o radeon_fence.o radeon_ttm.o radeon_object.o radeon_gart.o \
	radeon_legacy_crtc.o radeon_legacy_encoders.o radeon_connectors.o \
	radeon_encoders.o radeon_display.o radeon_cursor.o radeon_i2c.o \
	radeon_clocks.o radeon_fb.o radeon_gem.o radeon_ring.o radeon_irq_kms.o \
	radeon_cs.o radeon_bios.o radeon_benchmark.o r100.o r300.o r420.o \
	rs400.o rs600.o rs690.o rv515.o r520.o r600.o rs780.o rv770.o

radeon-$(CONFIG_COMPAT) += radeon_ioc32.o

Loading