diff options
author | Dave Airlie <airlied@redhat.com> | 2009-06-12 00:11:41 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-06-18 20:21:42 -0400 |
commit | 07613ba2f464f59949266f4337b75b91eb610795 (patch) | |
tree | 8e43a82571686492aba2269c2e7a49c323783af1 /drivers/char/agp/hp-agp.c | |
parent | 2908826d045a89805714e0a3055a99dc40565d41 (diff) |
agp: switch AGP to use page array instead of unsigned long array
This switches AGP to use an array of pages for tracking the
pages allocated to the GART. This should enable GEM on PAE to work
a lot better as we can pass highmem pages to the PAT code and it will
do the right thing with them.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/char/agp/hp-agp.c')
-rw-r--r-- | drivers/char/agp/hp-agp.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/char/agp/hp-agp.c b/drivers/char/agp/hp-agp.c index 183ac3fe44fb..abea273dcc2f 100644 --- a/drivers/char/agp/hp-agp.c +++ b/drivers/char/agp/hp-agp.c | |||
@@ -361,13 +361,11 @@ hp_zx1_insert_memory (struct agp_memory *mem, off_t pg_start, int type) | |||
361 | for (i = 0, j = io_pg_start; i < mem->page_count; i++) { | 361 | for (i = 0, j = io_pg_start; i < mem->page_count; i++) { |
362 | unsigned long paddr; | 362 | unsigned long paddr; |
363 | 363 | ||
364 | paddr = mem->memory[i]; | 364 | paddr = page_to_phys(mem->pages[i]); |
365 | for (k = 0; | 365 | for (k = 0; |
366 | k < hp->io_pages_per_kpage; | 366 | k < hp->io_pages_per_kpage; |
367 | k++, j++, paddr += hp->io_page_size) { | 367 | k++, j++, paddr += hp->io_page_size) { |
368 | hp->gatt[j] = | 368 | hp->gatt[j] = HP_ZX1_PDIR_VALID_BIT | paddr; |
369 | agp_bridge->driver->mask_memory(agp_bridge, | ||
370 | paddr, type); | ||
371 | } | 369 | } |
372 | } | 370 | } |
373 | 371 | ||
@@ -397,8 +395,9 @@ hp_zx1_remove_memory (struct agp_memory *mem, off_t pg_start, int type) | |||
397 | 395 | ||
398 | static unsigned long | 396 | static unsigned long |
399 | hp_zx1_mask_memory (struct agp_bridge_data *bridge, | 397 | hp_zx1_mask_memory (struct agp_bridge_data *bridge, |
400 | unsigned long addr, int type) | 398 | struct page *page, int type) |
401 | { | 399 | { |
400 | unsigned long addr = phys_to_gart(page_to_phys(page)); | ||
402 | return HP_ZX1_PDIR_VALID_BIT | addr; | 401 | return HP_ZX1_PDIR_VALID_BIT | addr; |
403 | } | 402 | } |
404 | 403 | ||