Running the Resource Monitor
The resource monitor dynamically configures itself at startup based on command
line parameters passed via the boot-loader's configuration file. We rely on
the
GRUB multi-module boot loader,
which is able to load multiple modules, with
independently specified command line parameters for each module.
The resource monitor creates virtual machines at boot time. It scans the
list of modules defined by GRUB, starting after the GRUB entry for the resource
monitor. For each group of modules, where a group is defined by the
command line parameters, the resource monitor starts a new virtual machine.
Virtual machines are created in a synchronized
order: the resource monitor waits until the prior finishes initialization
before starting the next. If a virtual machine fails to deliver the message
that it has completed its initialization, then the resource monitor fails to
make forward progress (remember, the resource monitor isn't an
end-user product).
Each module can have its own command line. The command line of the
first module in a group defines the parameters for the group. The
options that the resource monitor looks for:
vmstart- Marks the start of a group of modules. It
implicitly ends the prior group of modules.
vmsize=- Configures the size of the virtual machine,
and thus the amount of memory that the guest OS will discover.
It accepts a unit character to specify Kilobytes, Megabytes,
or Gigabytes. For example:
vmsize=96M
wedgeinstall=- This parameter supports the afterburner
project. It specifies the physical address at which to install the
afterburn wedge.
It accepts a unit character to specify Kilobytes, Megabytes,
or Gigabytes. For example:
wedgeinstall=16M
wedgesize=- This parameter supports the afterburner
project. It specifies the amount of physical memory to allocate to the
afterburn wedge.
It accepts a unit character to specify Kilobytes, Megabytes,
or Gigabytes. For example:
wedgesize=16M
ddos- This parameter supports the device-driver reuse
project. It enables device access permissions for the current VM,
including support for DMA to/from other virtual machines.
noclientdma- This parameter supports the device-driver
reuse project. It disables DMA access to/from virtual
machines which are clients of a device driver in the current VM. This
is an optimization; as a side effect, Linux will avoid allocating a large
page map for supporting DMA to other virtual machines. It would be used,
for example, by a device driver VM that controls the PCI bus.
clones=- The number of virtual machine instances to
create from the current module definition.
Shared Configuration
For further dynamic configuration of virtual machines, the resource monitor
looks for several special ELF file sections. The ELF file sections are:
.hypervisor- Provides a pre-initialized
configuration page, designed to be shared between the resource monitor
and the VM. The layout of this page is defined in the resource
monitor's IDL file. The resource monitor shares configuration settings
with the VM via this page, including the size of memory,
command line string, and thread identifiers of important
resource managers.
.l4utcb- The resource monitor uses the location and
size of this section for configuring the L4 UTCB region of the VM.
It must have a valid size and alignment for an L4 UTCB region.
.l4kip- The resource monitor uses the location and
size of this section for configuring the L4 KIP region of the VM.
It must have a valid size and alignment for an L4 KIP region.
If any of these ELF sections are missing, then the resource monitor will try
to choose functional defaults for the configuration. In this case,
the shared configuration page will not be provided to the VM.
|