* Re: Linux driver: __get_free_pages()
2001-01-11 20:39 Linux driver: __get_free_pages() Paul Powell
@ 2001-01-11 19:09 ` Arnaldo Carvalho de Melo
2001-01-11 21:01 ` Richard B. Johnson
1 sibling, 0 replies; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2001-01-11 19:09 UTC (permalink / raw)
To: Paul Powell; +Cc: linux-kernel
Em Thu, Jan 11, 2001 at 12:39:33PM -0800, Paul Powell escreveu:
> Our driver is trying to allocate a DMA buffer to flash an adapter's
> firmware. This can require as much as 512K ( of contiguous DMA memory ).
> We are using the function __get_free_pages( GFP_KERNEL | GFP_DMA, order)
> . The call is failing if 'order' is greater than 6. The problem is seen
> on systems with system memory of only 64MB. It works fine on systems
> with more memory. Does it make sense that a system with 64MB would not
> have 512K ( contiguous ) available? The most that can be allocated
> successfully on the 64MB system appears to be 256K. (Nothing else is
> running that would eat up 64MB of memory).
> Does this make sense and/or is there another way that the DMA memory
> could be allocated successfully?
look at mm/bootmem.c
- Arnaldo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Linux driver: __get_free_pages()
2001-01-11 21:01 ` Richard B. Johnson
@ 2001-01-11 19:26 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2001-01-11 19:26 UTC (permalink / raw)
To: Richard B. Johnson; +Cc: Paul Powell, linux-kernel
Em Thu, Jan 11, 2001 at 04:01:08PM -0500, Richard B. Johnson escreveu:
> If all you need is a kernel buffer to store the stuff that will be
> written to NVRAM, then just use kmalloc(). It is virtual and will
s/kmalloc/vmalloc/
> seem contiguous to your driver.
- Arnaldo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 4+ messages in thread
* Linux driver: __get_free_pages()
@ 2001-01-11 20:39 Paul Powell
2001-01-11 19:09 ` Arnaldo Carvalho de Melo
2001-01-11 21:01 ` Richard B. Johnson
0 siblings, 2 replies; 4+ messages in thread
From: Paul Powell @ 2001-01-11 20:39 UTC (permalink / raw)
To: linux-kernel
Our driver is trying to allocate a DMA buffer to flash
an adapter's firmware. This can require as much as
512K ( of contiguous DMA memory ). We are using the
function __get_free_pages( GFP_KERNEL | GFP_DMA, order
) . The call is failing if 'order' is greater than 6.
The problem is seen on systems with system memory of
only 64MB. It works fine on systems with more memory.
Does it make sense that a system with 64MB would not
have 512K ( contiguous ) available? The most that can
be allocated successfully on the 64MB system appears
to be 256K. (Nothing else is running that would eat
up 64MB of memory).
Does this make sense and/or is there another way that
the DMA memory could be allocated successfully?
__________________________________________________
Do You Yahoo!?
Yahoo! Photos - Share your holiday photos online!
http://photos.yahoo.com/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Linux driver: __get_free_pages()
2001-01-11 20:39 Linux driver: __get_free_pages() Paul Powell
2001-01-11 19:09 ` Arnaldo Carvalho de Melo
@ 2001-01-11 21:01 ` Richard B. Johnson
2001-01-11 19:26 ` Arnaldo Carvalho de Melo
1 sibling, 1 reply; 4+ messages in thread
From: Richard B. Johnson @ 2001-01-11 21:01 UTC (permalink / raw)
To: Paul Powell; +Cc: linux-kernel
On Thu, 11 Jan 2001, Paul Powell wrote:
> Our driver is trying to allocate a DMA buffer to flash
> an adapter's firmware. This can require as much as
> 512K ( of contiguous DMA memory ). We are using the
> function __get_free_pages( GFP_KERNEL | GFP_DMA, order
> ) . The call is failing if 'order' is greater than 6.
> The problem is seen on systems with system memory of
> only 64MB. It works fine on systems with more memory.
> Does it make sense that a system with 64MB would not
> have 512K ( contiguous ) available? The most that can
> be allocated successfully on the 64MB system appears
> to be 256K. (Nothing else is running that would eat
> up 64MB of memory).
>
> Does this make sense and/or is there another way that
> the DMA memory could be allocated successfully?
>
Are you sure it needs memory? Usually, you need address-space
to flash firmware. Also, in recent months, I've evaluated a
lot of NVRAM from flash to single-bit SEEPROM. I have never
seen anything that would `know` how to flash from DMA.
Typically, with NVRAM, you scribble some 0xaaa, 0x555, 0xetc, at some
specified offset, then you write a single byte/word/longword (depending
upon its addressing), at the location to program. Then you loop, waiting
for it to "take", then you do the next. All stuff you would never do with
DMA.
If all you need is a kernel buffer to store the stuff that will be
written to NVRAM, then just use kmalloc(). It is virtual and will
seem contiguous to your driver.
If you have to 'bus-master' data from your buffer to the NVRAM, you
just do it one page at a time, using the same page.
Cheers,
Dick Johnson
Penguin : Linux version 2.4.0 on an i686 machine (799.53 BogoMips).
"Memory is like gasoline. You use it up when you are running. Of
course you get it all back when you reboot..."; Actual explanation
obtained from the Micro$oft help desk.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2001-01-11 21:14 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-01-11 20:39 Linux driver: __get_free_pages() Paul Powell
2001-01-11 19:09 ` Arnaldo Carvalho de Melo
2001-01-11 21:01 ` Richard B. Johnson
2001-01-11 19:26 ` Arnaldo Carvalho de Melo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox