I tried to make this a wrapper but there is a lot of logic in
__alloc_pages() that would have to be replicated. Also there are specific
places in __alloc_pages() were we can establish that we have enough memory
but its the memory fragmentation that prevents us from satisfying the
request for a larger page.
The flushes are only done on virtuall mapped architectures (xtensa) and
are simple ASM code that can run in an interrupt context
-