drm/radeon/kms: don't require up to 64k allocations. (v2)
authorDave Airlie <airlied@redhat.com>
Wed, 23 Sep 2009 06:56:27 +0000 (16:56 +1000)
committerDave Airlie <airlied@linux.ie>
Fri, 25 Sep 2009 03:08:18 +0000 (13:08 +1000)
commit513bcb4655e68706594e45dfa1d4b181500110ba
treeed457db4cfb202015866a131ad4e742503728fad
parent35e4b7af21d77933abda3d41d1672589eb6c960c
drm/radeon/kms: don't require up to 64k allocations. (v2)

This avoids needing to do a kmalloc > PAGE_SIZE for the main
indirect buffer chunk, it adds an accessor for all reads from
the chunk and caches a single page at a time for subsequent
reads.

changes since v1:
Use a two page pool which should be the most common case
a single packet spanning > PAGE_SIZE will be hit, but I'm
having trouble seeing anywhere we currently generate anything like that.
hopefully proper short page copying at end
added parser_error flag to set deep errors instead of having to test
every ib value fetch.
fixed bug in patch that went to list.

Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/radeon/r100.c
drivers/gpu/drm/radeon/r100_track.h
drivers/gpu/drm/radeon/r200.c
drivers/gpu/drm/radeon/r300.c
drivers/gpu/drm/radeon/r600_cs.c
drivers/gpu/drm/radeon/radeon.h
drivers/gpu/drm/radeon/radeon_cs.c