rpms/kernel/devel agp-set_memory_ucwb.patch, NONE, 1.1 kernel.spec, 1.1344, 1.1345

Dave Airlie airlied at fedoraproject.org
Fri Feb 27 03:13:27 UTC 2009


Author: airlied

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv16418

Modified Files:
	kernel.spec 
Added Files:
	agp-set_memory_ucwb.patch 
Log Message:
* Fri Feb 27 2009 Dave Airlie <airlied at redhat.com>
- agp-set_memory_ucwb.patch - enable GEM/KMS on PAE hopefully


agp-set_memory_ucwb.patch:

--- NEW FILE agp-set_memory_ucwb.patch ---
commit 082dd38cdc63cbee3924806bff5d87b751270747
Author: Pierre Willenbrock <pierre at pirsoft.de>
Date:   Fri Dec 12 01:36:41 2008 +0100

    Use set_memory_{uc,wb} instead of set_memory_array_{uc,wb} for CONFIG_HIGHMEM64G
    
    set_memory_array_{uc,wb} expects an unsigned long *,
    but was called with a dma_addr_t *. This optimistically assumes
    only CONFIG_HIGHMEM64G selects something incompatible with
    unsigned long for dma_addr_t.
    
    Signed-off-by: Pierre Willenbrock <pierre at pirsoft.de>

diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c
index 97e8b41..aeeaf68 100644
--- a/drivers/char/agp/generic.c
+++ b/drivers/char/agp/generic.c
@@ -1240,12 +1240,17 @@ int agp_generic_alloc_pages(struct agp_bridge_data *bridge, struct agp_memory *m
 	}
 
 #ifdef CONFIG_X86
+#ifdef CONFIG_HIGHMEM64G
+	for (i = 0; i < num_pages; i++)
+		set_memory_uc(mem->memory[i], 1);
+#else
 	set_memory_array_uc(mem->memory, num_pages);
 #endif
+#endif
 	ret = 0;
 out:
 	for (i = 0; i < mem->page_count; i++)
-		mem->memory[i] = virt_to_gart((void *)mem->memory[i]);
+		mem->memory[i] = virt_to_gart((void *)(unsigned long)mem->memory[i]);
 	return ret;
 }
 EXPORT_SYMBOL(agp_generic_alloc_pages);
@@ -1279,11 +1284,16 @@ void agp_generic_destroy_pages(struct agp_memory *mem)
 		mem->memory[i] = (unsigned long)gart_to_virt(mem->memory[i]);
 
 #ifdef CONFIG_X86
+#ifdef CONFIG_HIGHMEM64G
+	for (i = 0; i < mem->page_count; i++)
+		set_memory_wb(mem->memory[i], 1);
+#else
 	set_memory_array_wb(mem->memory, mem->page_count);
 #endif
+#endif
 
 	for (i = 0; i < mem->page_count; i++) {
-		addr = (void *)mem->memory[i];
+		addr = (void *)(unsigned long)mem->memory[i];
 		page = virt_to_page(addr);
 
 #ifndef CONFIG_X86
diff -up linux-2.6.28.noarch/drivers/gpu/drm/i915/i915_dma.c.dma linux-2.6.28.noarch/drivers/gpu/drm/i915/i915_dma.c
--- linux-2.6.28.noarch/drivers/gpu/drm/i915/i915_dma.c.dma	2009-02-27 13:11:03.000000000 +1000
+++ linux-2.6.28.noarch/drivers/gpu/drm/i915/i915_dma.c	2009-02-27 13:11:11.000000000 +1000
@@ -1104,7 +1104,7 @@ int i915_driver_load(struct drm_device *
 			 "performance may suffer.\n");
 	}
 
-#ifdef CONFIG_HIGHMEM64G
+#if 0 /* Fedora has AGP workaround patch */
 	/* don't enable GEM on PAE - needs agp + set_memory_* interface fixes */
 	dev_priv->has_gem = 0;
 #else


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1344
retrieving revision 1.1345
diff -u -r1.1344 -r1.1345
--- kernel.spec	27 Feb 2009 03:05:19 -0000	1.1344
+++ kernel.spec	27 Feb 2009 03:12:57 -0000	1.1345
@@ -641,6 +641,7 @@
 # but the drive isn't yet ready.
 Patch1550: linux-2.6-cdrom-door-status.patch
 
+Patch1700: agp-set_memory_ucwb.patch
 # nouveau + drm fixes
 Patch1811: drm-next.patch
 Patch1812: drm-modesetting-radeon.patch
@@ -1174,6 +1175,7 @@
 
 ApplyPatch linux-2.6-libertas-netpriv-fixes.patch
 
+ApplyPatch agp-set_memory_ucwb.patch
 # Nouveau DRM + drm fixes
 ApplyPatch drm-next.patch
 ApplyPatch drm-modesetting-radeon.patch
@@ -1787,6 +1789,9 @@
 
 %changelog
 * Fri Feb 27 2009 Dave Airlie <airlied at redhat.com>
+- agp-set_memory_ucwb.patch - enable GEM/KMS on PAE hopefully
+
+* Fri Feb 27 2009 Dave Airlie <airlied at redhat.com>
 - drm-next.patch: bring in drm-next tree for r600 support
 - rebased drm-modesetting-radeon.patch and drm-nouveau.patch
 




More information about the fedora-extras-commits mailing list