agp: efficeon: no need to set PG_reserved on GATT tables
Patch series "mm: PG_reserved cleanups and documentation", v2. I was recently going over all users of PG_reserved. Short story: it is difficult and sometimes not really clear if setting/checking for PG_reserved is only a relict from the past. Easy to break things. I guess I now have a pretty good idea wh things are like that nowadays and how they evolved. I had way more cleanups in this series inititally, but some architectures take PG_reserved as a way to apply a different caching strategy (for MMIO pages). So I decided to only include the most obvious changes (that are less likely to break something). So the big chunk of manual SetPageReserved users are MMIO/DMA related things on device buffers. Most notably, for device memory we will hopefully soon stop setting PG_reserved. Then the documentation has to be updated. This patch (of 9): The l1 GATT page table is kept in a special on-chip page with 64 entries. We allocate the l2 page table pages via get_zeroed_page() and enter them into the table. These l2 pages are modified accordingly when inserting/removing memory via efficeon_insert_memory and efficeon_remove_memory. Apart from that, these pages are not exposed or ioremap'ed. We can stop setting them reserved (propably copied from generic code). Link: http://lkml.kernel.org/r/20190114125903.24845-2-david@redhat.com Signed-off-by: David Hildenbrand <david@redhat.com> Cc: David Airlie <airlied@linux.ie> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Michal Hocko <mhocko@kernel.org> Cc: Matthew Wilcox <willy@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
b56a2d8af9
commit
750b317f85
|
@ -163,7 +163,6 @@ static int efficeon_free_gatt_table(struct agp_bridge_data *bridge)
|
||||||
unsigned long page = efficeon_private.l1_table[index];
|
unsigned long page = efficeon_private.l1_table[index];
|
||||||
if (page) {
|
if (page) {
|
||||||
efficeon_private.l1_table[index] = 0;
|
efficeon_private.l1_table[index] = 0;
|
||||||
ClearPageReserved(virt_to_page((char *)page));
|
|
||||||
free_page(page);
|
free_page(page);
|
||||||
freed++;
|
freed++;
|
||||||
}
|
}
|
||||||
|
@ -219,7 +218,6 @@ static int efficeon_create_gatt_table(struct agp_bridge_data *bridge)
|
||||||
efficeon_free_gatt_table(agp_bridge);
|
efficeon_free_gatt_table(agp_bridge);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
SetPageReserved(virt_to_page((char *)page));
|
|
||||||
|
|
||||||
for (offset = 0; offset < PAGE_SIZE; offset += clflush_chunk)
|
for (offset = 0; offset < PAGE_SIZE; offset += clflush_chunk)
|
||||||
clflush((char *)page+offset);
|
clflush((char *)page+offset);
|
||||||
|
|
Loading…
Reference in New Issue