summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Jones <davej@redhat.com>2004-12-15 15:32:04 -0500
committerDave Jones <davej@redhat.com>2004-12-15 15:32:04 -0500
commit6025ca4cbd01fb660f998ed133d3aa05f076cb52 (patch)
tree4f78bca393c7767bbcf73f32f2172309f483b553
parentb7b558cdef4caeb001fb1d651ce1000bad29f6cb (diff)
[AGPGART] Fix masking (causes crash on 460GX).
virt_to_page(phys_to_virt(masked_addr)) still works. But the 460GX sticks bits in the middle, so the free blows up. I've tested the agp_allocate_memory() change on Intel 460GX. I don't have hardware to test the Intel MCH change, but it looks to me like the same problem. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Signed-off-by: Dave Jones <davej@redhat.com>
-rw-r--r--drivers/char/agp/generic.c3
-rw-r--r--drivers/char/agp/intel-mch-agp.c2
2 files changed, 2 insertions, 3 deletions
diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c
index b40c628e4d9d..d62a51d6be65 100644
--- a/drivers/char/agp/generic.c
+++ b/drivers/char/agp/generic.c
@@ -204,8 +204,7 @@ struct agp_memory *agp_allocate_memory(size_t page_count, u32 type)
agp_free_memory(new);
return NULL;
}
- new->memory[i] =
- agp_bridge->driver->mask_memory(virt_to_phys(addr), type);
+ new->memory[i] = virt_to_phys(addr);
new->page_count++;
}
diff --git a/drivers/char/agp/intel-mch-agp.c b/drivers/char/agp/intel-mch-agp.c
index d9040c3b8227..2611543bf587 100644
--- a/drivers/char/agp/intel-mch-agp.c
+++ b/drivers/char/agp/intel-mch-agp.c
@@ -51,7 +51,7 @@ static struct agp_memory *alloc_agpphysmem_i8xx(size_t pg_count, int type)
if (new == NULL)
return NULL;
- new->memory[0] = agp_bridge->driver->mask_memory(virt_to_phys(addr), type);
+ new->memory[0] = virt_to_phys(addr);
new->page_count = 1;
new->num_scratch_pages = 1;
new->type = AGP_PHYS_MEMORY;