firewire: ohci: replace vm_map_ram() with vmap()
vm_map_ram() is intended for short-lived objects, so using it for the AR buffers could fragment address space, especially on a 32-bit machine. For an allocation that lives as long as the device, vmap() is the better choice. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
Родитель
fc14f9c127
Коммит
51b04d59c2
|
@ -689,8 +689,7 @@ static void ar_context_release(struct ar_context *ctx)
|
|||
{
|
||||
unsigned int i;
|
||||
|
||||
if (ctx->buffer)
|
||||
vm_unmap_ram(ctx->buffer, AR_BUFFERS + AR_WRAPAROUND_PAGES);
|
||||
vunmap(ctx->buffer);
|
||||
|
||||
for (i = 0; i < AR_BUFFERS; i++)
|
||||
if (ctx->pages[i]) {
|
||||
|
@ -1018,8 +1017,7 @@ static int ar_context_init(struct ar_context *ctx, struct fw_ohci *ohci,
|
|||
pages[i] = ctx->pages[i];
|
||||
for (i = 0; i < AR_WRAPAROUND_PAGES; i++)
|
||||
pages[AR_BUFFERS + i] = ctx->pages[i];
|
||||
ctx->buffer = vm_map_ram(pages, AR_BUFFERS + AR_WRAPAROUND_PAGES,
|
||||
-1, PAGE_KERNEL);
|
||||
ctx->buffer = vmap(pages, ARRAY_SIZE(pages), VM_MAP, PAGE_KERNEL);
|
||||
if (!ctx->buffer)
|
||||
goto out_of_memory;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче