--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: kernel: please allow building AGP_INTEL on x86_64
- From: "Aaron M. Ucko" <ucko@debian.org>
- Date: Fri, 04 Mar 2005 12:31:34 -0500
- Message-id: <E1D7GeE-0008LQ-6r@localhost.localdomain>
Package: kernel
Severity: normal
Tags: patch upstream
The kernel's build system insists that users of x86_64 hardware use
AGP_INTEL_MCH rather than AGP_INTEL. However, the MCH driver supports
a far more limited range of hardware, and in particular fails to
support my system's i915G chipset. (I have one of the new P4s with
support for EM64T.)
Perhaps it would be better to add support for this chipset to the MCH
driver, but the "regular" driver seems to work fine -- X runs without
problems, certainly.
I have attached a (trivial) patch to drop the bogus restriction, along
with a patch for some 64-bit cleanliness issues in i810_dma.c that it
uncovers (though the latter's probably gratuitous given that the
original i810 allmost certainly doesn't support any 64-bit processors
anyway).
--- kernel-source-2.6.11/drivers/char/agp/Kconfig~ 2005-03-02 02:38:10.000000000 -0500
+++ kernel-source-2.6.11/drivers/char/agp/Kconfig 2005-03-03 14:03:51.000000000 -0500
@@ -78,7 +78,7 @@
config AGP_INTEL
tristate "Intel 440LX/BX/GX, I8xx and E7x05 chipset support"
- depends on AGP && X86 && !X86_64
+ depends on AGP && X86
help
This option gives you AGP support for the GLX component of XFree86 4.x
on Intel 440LX/BX/GX, 815, 820, 830, 840, 845, 850, 860, 875,
--- kernel-source-2.6.11/drivers/char/drm/i810_dma.c~ 2005-03-02 02:37:55.000000000 -0500
+++ kernel-source-2.6.11/drivers/char/drm/i810_dma.c 2005-03-04 11:27:58.000000000 -0500
@@ -847,7 +847,7 @@
*(u32 *)buf_priv->kernel_virtual = ((GFX_OP_PRIMITIVE | prim | ((used/4)-2)));
if (used & 4) {
- *(u32 *)((u32)buf_priv->kernel_virtual + used) = 0;
+ *(u32 *)((unsigned long)buf_priv->kernel_virtual + used) = 0;
used += 4;
}
@@ -1207,7 +1207,7 @@
if (buf_priv->currently_mapped == I810_BUF_MAPPED) {
if (used & 4) {
- *(u32 *)((u32)buf_priv->virtual + used) = 0;
+ *(u32 *)((unsigned long)buf_priv->virtual + used) = 0;
used += 4;
}
--- End Message ---