The macro 'VM_INSTRUCTION_ERROR' was implicitly assuming that %rsp pointed
to 'struct vmxctx' associated with the vcpu.  This assumption was correct
until now since this macro was called only after 'vmresume' and 'vmlaunch'.

However when called from 'VMX_CHECK_EPTGEN' the %rsp is still pointing to
the host stack and therefore results in a stack corruption when we update
'vmxctx->launch_error'.

Fix this by passing in the register that points to 'struct vmxctx' as a
parameter to the macro.
Populate the guest physical address's protection bits in the vmexit collateral.