[vbox-dev] Replacing VbglPhysHeapAlloc with kmalloc for linux vboxguest module ?

Knut St. Osmundsen knut.osmundsen at oracle.com
Thu Jul 6 09:44:34 UTC 2017

Hi Hans.

On 2017-07-06 11:13 AM, Hans de Goede wrote:
> Hi,
> VbglPhysHeapAlloc seems to be yet another mem-allocator
> which chunks up memory returned by RTMemContAlloc, which
> returns physical contiguous memory below 4GB.
Need for keeping the code cross platform, not all supported guest have
nice and efficient memory management functions.

> I don't see any reason why we cannot use kmalloc directly
> for that with a GFP_DMA32 flag.
> One other thing which RTMemContAlloc seems to do is mark
> the pages executable. Does memory used by VbglGRAlloc /
> VbglGRPerform need to be marked executable ?
Hysterical raisins.  The RTMemContAlloc API is really ancient, the x86
world was 32-bit only and the NX bit existed only in AMD64 preliminary
docs.  It is(/was?) also used for various trampoline code (logging, ++)
and world switchers (VMM/VMMSwitcher/*), which needed to be executable,
thus all memory it returns is executable. 

That the phys heap in VBoxGuest is working with memory marked executable
is just a side effect of that API requirement.  I'm not aware of any
reason why these allocations would need to be executable.  We should
probably address this ourselves too.

Kind Regards,

More information about the vbox-dev mailing list