1. A method, in a data processing system, for performing secure recursive virtualization of the data processing system, the method comprising: responsive to a condition being met to generate a new domain, allocating, by either a virtual machine monitor (VMM) or an operating system (OS), a portion of memory allocated to the VMM or the OS to the new domain; loading, by either the VMM or the OS, an initial program for the new domain into the portion of memory; calling, by either the VMM or the OS, secure recursive virtualization firmware (SVF) in the data processing system to request that the new domain be generated; responsive to receiving the call to generate the new domain from either the VMM or the OS, determining, by the SVF, whether the call is from a privileged domain or a non-privileged domain, wherein the privileged domain is authorized to generate either another privileged domain or a non-privileged domain and wherein the non-privileged domain is not authorized to generate either a privileged domain or another non-privileged domain; responsive to the request being from the privileged domain, removing, by the SVF, all access to the new domain from any other domain in the data processing system; responsive to receiving an indication from the SVF that the new domain has been generated, scheduling, by either the VMM or the OS, an execution of the initial program; responsive to receiving a call from a domain for an inter-domain call channel, sending, by the SVF, the call to a reference monitor; and responsive to receiving an indication from the reference monitor that the inter-domain call channel is granted, establishing, by the SVF, the inter-domain call channel between the domain and another domain identified in the call, wherein the reference monitor determines if the inter-domain call channel should be granted by referencing a policy.