Re: Kexec, DMA, and SMP

From: Eric W. Biederman (
Date: Wed Feb 12 2003 - 09:51:33 EST

Corey Minyard <> writes:

> Eric W. Biederman wrote:
> |Corey Minyard <> writes:
> |
> |>
> |>You don't understand. You don't *want* to set aside a block of memory that's
> |>reserved for DMA. You want to be able to DMA directly into any user address.
> |>Consider demand paging. The performance would suck if you DMA into some
> |>fixed region then copied to the user address. Plus you then have another
> |>resource you have to manage in the kernel. And you still have to change all
> |>the drivers, buffer management, etc. to add a flag that says "I'm going to use
> |>this for DMA" to allocations. You might as well add the quiesce function,
> it's
> |>probably easier to do. And it doesn't help if you DMA to static memory
> |>addresses.
> |>
> |>I, too, would like a simpler solution. I just don't think this is it.
> |
> |
> |You have it backwards. It is not about reserving a block of memory
> |for DMA. It is about reserving a block of memory to not do DMA in.
> |Something like 4MB or so. |
> |The idea is not to let the original kernel touch the reserved block at all.
> |We just put the kernel that kexec will start in that block of memory.
> |
> |Eric
> |
> Ah, it makes much more sense now. Thank you. I still don't think it's as easy
> as you think, though.
> Because there's no designation on most memory allocations to give you this
> information. There's
> GFP_DMA, but according to the docs that's just for x86 ISA DMA devices. You
> would
> have to hunt down all the memory allocations, figure out of they are DMA targets
> or not, and add a
> flag for that. I still say it's easier to just add the function to the drivers.

It is trivial if you don't let alloc_pages give the memory to anyone for
any purpose.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Sat Feb 15 2003 - 22:00:42 EST