* [PATCH 12/11] unpaged: fix sound Bad page states
@ 2005-11-21 18:12 Hugh Dickins
2005-11-21 20:41 ` Andrew Morton
2005-11-21 21:57 ` William Lee Irwin III
0 siblings, 2 replies; 5+ messages in thread
From: Hugh Dickins @ 2005-11-21 18:12 UTC (permalink / raw)
To: Andrew Morton
Cc: Takashi Iwai, Russell King, William Irwin, David S. Miller,
Linus Torvalds, Nick Piggin, Dave Airlie, linux-kernel,
alsa-devel
Earlier I unifdefed PageCompound, so that snd_pcm_mmap_control_nopage
and others can give out a 0-order component of a higher-order page,
which won't be mistakenly freed when zap_pte_range unmaps it. But
many Bad page states reported a PG_reserved was freed after all: I had
missed that we need to say __GFP_COMP to get compound page behaviour.
Some of these higher-order pages are allocated by snd_malloc_pages, some
by snd_malloc_dev_pages; or if SBUS, by sbus_alloc_consistent - but that
has no gfp arg, so add __GFP_COMP into its sparc32/64 implementations.
I'm still rather puzzled that DRM seems not to need a similar change.
Signed-off-by: Hugh Dickins <hugh@veritas.com>
---
arch/sparc/kernel/ioport.c | 2 +-
arch/sparc64/kernel/sbus.c | 2 +-
sound/core/memalloc.c | 2 ++
3 files changed, 4 insertions(+), 2 deletions(-)
--- 2.6.15-rc1-mm2/arch/sparc/kernel/ioport.c 2005-06-17 20:48:29.000000000 +0100
+++ linux/arch/sparc/kernel/ioport.c 2005-11-19 19:11:04.000000000 +0000
@@ -252,7 +252,7 @@ void *sbus_alloc_consistent(struct sbus_
}
order = get_order(len_total);
- if ((va = __get_free_pages(GFP_KERNEL, order)) == 0)
+ if ((va = __get_free_pages(GFP_KERNEL|__GFP_COMP, order)) == 0)
goto err_nopages;
if ((res = kmalloc(sizeof(struct resource), GFP_KERNEL)) == NULL)
--- 2.6.15-rc1-mm2/arch/sparc64/kernel/sbus.c 2005-11-12 09:00:36.000000000 +0000
+++ linux/arch/sparc64/kernel/sbus.c 2005-11-19 19:12:53.000000000 +0000
@@ -327,7 +327,7 @@ void *sbus_alloc_consistent(struct sbus_
order = get_order(size);
if (order >= 10)
return NULL;
- first_page = __get_free_pages(GFP_KERNEL, order);
+ first_page = __get_free_pages(GFP_KERNEL|__GFP_COMP, order);
if (first_page == 0UL)
return NULL;
memset((char *)first_page, 0, PAGE_SIZE << order);
--- 2.6.15-rc1-mm2/sound/core/memalloc.c 2005-11-12 09:01:28.000000000 +0000
+++ linux/sound/core/memalloc.c 2005-11-19 19:03:32.000000000 +0000
@@ -197,6 +197,7 @@ void *snd_malloc_pages(size_t size, gfp_
snd_assert(size > 0, return NULL);
snd_assert(gfp_flags != 0, return NULL);
+ gfp_flags |= __GFP_COMP; /* compound page lets parts be mapped */
pg = get_order(size);
if ((res = (void *) __get_free_pages(gfp_flags, pg)) != NULL) {
mark_pages(virt_to_page(res), pg);
@@ -241,6 +242,7 @@ static void *snd_malloc_dev_pages(struct
snd_assert(dma != NULL, return NULL);
pg = get_order(size);
gfp_flags = GFP_KERNEL
+ | __GFP_COMP /* compound page lets parts be mapped */
| __GFP_NORETRY /* don't trigger OOM-killer */
| __GFP_NOWARN; /* no stack trace print - this call is non-critical */
res = dma_alloc_coherent(dev, PAGE_SIZE << pg, dma, gfp_flags);
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH 12/11] unpaged: fix sound Bad page states
2005-11-21 18:12 [PATCH 12/11] unpaged: fix sound Bad page states Hugh Dickins
@ 2005-11-21 20:41 ` Andrew Morton
2005-11-21 21:57 ` William Lee Irwin III
1 sibling, 0 replies; 5+ messages in thread
From: Andrew Morton @ 2005-11-21 20:41 UTC (permalink / raw)
To: Hugh Dickins
Cc: tiwai, rmk+lkml, wli, davem, torvalds, nickpiggin, airlied,
linux-kernel, alsa-devel
Hugh Dickins <hugh@veritas.com> wrote:
>
> arch/sparc/kernel/ioport.c | 2 +-
> arch/sparc64/kernel/sbus.c | 2 +-
> sound/core/memalloc.c | 2 ++
> 3 files changed, 4 insertions(+), 2 deletions(-)
So with this, do you think everything is in place for a mainline merge?
-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc. Get Certified Today
Register for a JBoss Training Course. Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 12/11] unpaged: fix sound Bad page states
@ 2005-11-21 20:41 ` Andrew Morton
0 siblings, 0 replies; 5+ messages in thread
From: Andrew Morton @ 2005-11-21 20:41 UTC (permalink / raw)
To: Hugh Dickins
Cc: tiwai, rmk+lkml, wli, davem, torvalds, nickpiggin, airlied,
linux-kernel, alsa-devel
Hugh Dickins <hugh@veritas.com> wrote:
>
> arch/sparc/kernel/ioport.c | 2 +-
> arch/sparc64/kernel/sbus.c | 2 +-
> sound/core/memalloc.c | 2 ++
> 3 files changed, 4 insertions(+), 2 deletions(-)
So with this, do you think everything is in place for a mainline merge?
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 12/11] unpaged: fix sound Bad page states
2005-11-21 20:41 ` Andrew Morton
(?)
@ 2005-11-21 22:40 ` Hugh Dickins
-1 siblings, 0 replies; 5+ messages in thread
From: Hugh Dickins @ 2005-11-21 22:40 UTC (permalink / raw)
To: Andrew Morton
Cc: tiwai, rmk+lkml, wli, davem, torvalds, nickpiggin, airlied,
linux-kernel, alsa-devel
On Mon, 21 Nov 2005, Andrew Morton wrote:
> Hugh Dickins <hugh@veritas.com> wrote:
> >
> > arch/sparc/kernel/ioport.c | 2 +-
> > arch/sparc64/kernel/sbus.c | 2 +-
> > sound/core/memalloc.c | 2 ++
> > 3 files changed, 4 insertions(+), 2 deletions(-)
>
> So with this, do you think everything is in place for a mainline merge?
Yes, I believe so: thanks.
Hugh
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 12/11] unpaged: fix sound Bad page states
2005-11-21 18:12 [PATCH 12/11] unpaged: fix sound Bad page states Hugh Dickins
2005-11-21 20:41 ` Andrew Morton
@ 2005-11-21 21:57 ` William Lee Irwin III
1 sibling, 0 replies; 5+ messages in thread
From: William Lee Irwin III @ 2005-11-21 21:57 UTC (permalink / raw)
To: Hugh Dickins
Cc: Andrew Morton, Takashi Iwai, Russell King, David S. Miller,
Linus Torvalds, Nick Piggin, Dave Airlie, linux-kernel,
alsa-devel
On Mon, Nov 21, 2005 at 06:12:38PM +0000, Hugh Dickins wrote:
> Earlier I unifdefed PageCompound, so that snd_pcm_mmap_control_nopage
> and others can give out a 0-order component of a higher-order page,
> which won't be mistakenly freed when zap_pte_range unmaps it. But
> many Bad page states reported a PG_reserved was freed after all: I had
> missed that we need to say __GFP_COMP to get compound page behaviour.
> Some of these higher-order pages are allocated by snd_malloc_pages, some
> by snd_malloc_dev_pages; or if SBUS, by sbus_alloc_consistent - but that
> has no gfp arg, so add __GFP_COMP into its sparc32/64 implementations.
> I'm still rather puzzled that DRM seems not to need a similar change.
> Signed-off-by: Hugh Dickins <hugh@veritas.com>
Acked-by: William Irwin <wli@holomorphy.com>
-- wli
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2005-11-21 22:40 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-21 18:12 [PATCH 12/11] unpaged: fix sound Bad page states Hugh Dickins
2005-11-21 20:41 ` Andrew Morton
2005-11-21 20:41 ` Andrew Morton
2005-11-21 22:40 ` Hugh Dickins
2005-11-21 21:57 ` William Lee Irwin III
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.