Use the underlying mechanism of vmapbuf instead of using this legacy
interface. This means we don't have to allocate a buf, and can store the
page array on the stack as it will be small enough for transfers that
the vast majority of cards can do. And those that can do larger (> 512k)
have provisions to split up requests.
I opted for the simplicity of a hard limit of 1k bytes for this array
which is usually just a few entries rather than doing the malloc/free
dance since some users have been complaining about the old vmapbuf
bottleneck.
Sponsored by: Netflix