Messages in this thread | | | Date | Fri, 18 Jan 2002 12:32:21 -0800 (PST) | Subject | Re: pci_alloc_consistent from interrupt == BAD | From | "David S. Miller" <> |
| |
From: Dan Malek <dan@embeddededge.com> Date: Fri, 18 Jan 2002 14:22:03 -0500
> Somehow the docs in DMA-mappings.txt say pci_alloc_consistent is allowed from > interrupt, but this is a "bad thing" on at least arm and PPC non-cache > coherent cpus. This isn't unique to PowerPC or ARM, and has nothing to do with allocating page tables. Yes it is in fact unique to those ports...
I don't understand how pci_alloc_consistent could ever be claimed to work from an interrupt function because it actually allocates pages of memory for all architectures. Anytime you call alloc_pages() (or friends) you could potentially block or return an error (out of memory) condition. If it specifies GFP_ATOMIC, there are no problems from interrupts. You will see that every port other than the mentioned two above use GFP_ATOMIC in their pci_alloc_consistent implementation, for this very reason.
The ARM and PPC ports could set __GFP_HIGH in their page table allocation calls when invoked via pci_alloc_consistent, and this is the change I suggest they make. It is a trivial fix whereas backing out this ability to call pci_alloc_consistent from interrupts is not a trivial change at all. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |