A standard grant table with 64 pages only uses half the allocated 2 MiB of
space and, empirically, getting more than 2 MiB of physically contiguous
memory doesn't seem to work very often.
By changing FdoAllocateHole() and FdoFreeHole() to use an MDL we can do
discrete contiguous allocations on-demand, which is all that is actually
required by callers. It's straightforward to adapt __AllocatePages() for
this purpose by having it pass the MM_ALLOCATE_REQUIRE_CONTIGUOUS_CHUNKS
flag to MmAllocatePagesForMdlEx().
NOTE: This means that the generic XENBUS_HOLE becomes XENBUS_PCI_HOLE.
Also re-work the function naming so FdoAllocateHole() becomes
FdoHoleAllocate() and other names are similarly restructured. It
makes the code marginally neater.
Take the opprtunity to also put zeroing of FrameIndex in the
XENBUS_GNTTAB Context in the right place in the GnttabAcquire()
error path, and adjust GnttabRelease() accordingly.