From: "Thomas Hellström" <thomas@tungstengraphics.com>
To: Arjan van de Ven <arjan@infradead.org>
Cc: Dave Jones <davej@redhat.com>, Dave Airlie <airlied@linux.ie>,
Linux Kernel list <linux-kernel@vger.kernel.org>
Subject: Re: [patch 1/2] agpgart - allow user-populated memory types.
Date: Tue, 19 Dec 2006 10:44:31 +0100 [thread overview]
Message-ID: <4587B47F.20008@tungstengraphics.com> (raw)
In-Reply-To: <1166518064.3365.1188.camel@laptopd505.fenrus.org>
Arjan van de Ven wrote:
>On Sat, 2006-12-09 at 00:05 +0100, Thomas Hellström wrote:
>
>
>>>On Fri, 2006-12-08 at 19:24 +0100, Thomas Hellström wrote:
>>>
>>>
>>>>+ }
>>>>+
>>>>+ if (alloc_size <= PAGE_SIZE) {
>>>>+ new->memory = kmalloc(alloc_size, GFP_KERNEL);
>>>>+ }
>>>>+ if (new->memory == NULL) {
>>>>+ new->memory = vmalloc(alloc_size);
>>>>
>>>>
>>>this bit is more or less evil as well...
>>>
>>>1) vmalloc is expensive all the way, higher tlb use etc etc
>>>2) mixing allocation types is just a recipe for disaster
>>>3) if this isn't a frequent operation, kmalloc is fine upto at least 2
>>>pages; I doubt you'll ever want more
>>>
>>>
>>I understand your feelings about this, and as you probably understand, the
>>kfree / vfree thingy is a result of the above allocation scheme.
>>
>>
>
>the kfree/vfree thing at MINIMUM should be changed though. Even if you
>need both kfree and vfree, you should key it off of a flag that you
>store, not off the address of the memory, that's just unportable and
>highly fragile. You *know* which allocator you used, so store it and use
>THAT info.
>
>
>
>
>
>>The allocated memory holds an array of struct page pointers. The number of
>>struct page pointers will range from 1 to about 8192, so the alloc size
>>will range from 4bytes to 64K, but could go higher depending on
>>architecture.
>>
>>
>
>hmm 64Kb is a bit much indeed. You can't do an array of upto 16 entries
>with one page in each array entry?
>
>
>
Arjan,
Thanks for taking time to review this.
A short background:
The current code uses vmalloc only. The potential use of kmalloc was
introduced
to save memory and cpu-speed.
All agp drivers expect to see a single memory chunk, so I'm not sure we
want to have an array of pages. That may require rewriting a lot of code.
If it's acceptable I'd like to go for the vmalloc / kmalloc flag, or at
worst keep the current vmalloc only but that's such a _huge_ memory
waste for small buffers. The flag was the original idea, but
unfortunately the agp_memory struct is part of the drm interface, and I
wasn't sure we could add a variable to it.
DaveJ, is it possible to extend struct agp_memory with a flags field?
Regards,
Thomas
next prev parent reply other threads:[~2006-12-19 10:04 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-08 18:24 [patch 1/2] agpgart - allow user-populated memory types Thomas Hellström
2006-12-08 22:03 ` Arjan van de Ven
2006-12-08 22:17 ` Arjan van de Ven
2006-12-08 23:05 ` Thomas Hellström
2006-12-19 8:47 ` Arjan van de Ven
2006-12-19 9:44 ` Thomas Hellström [this message]
2006-12-19 12:17 ` Arjan van de Ven
2006-12-19 12:47 ` Thomas Hellström
2006-12-19 13:11 ` Arjan van de Ven
2006-12-19 14:11 ` Thomas Hellström
2007-01-08 9:33 ` agpgart: drm-populated " thomas
2007-01-09 2:37 ` Arjan van de Ven
2007-01-09 8:28 ` Thomas Hellström
2007-01-09 8:23 ` [PATCH] agpgart: Allow drm-populated agp " thomas
2007-01-09 14:05 ` Arjan van de Ven
2007-01-09 14:06 ` Arjan van de Ven
2007-01-23 9:33 ` New patch: drm-populated " thomas
2007-01-23 9:33 ` [PATCH] agpgart: Allow drm-populated agp " thomas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4587B47F.20008@tungstengraphics.com \
--to=thomas@tungstengraphics.com \
--cc=airlied@linux.ie \
--cc=arjan@infradead.org \
--cc=davej@redhat.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.