The simics-uefi class implements a pseudo device that provides information to the BIOS and also transmits information from the BIOS into other simulation devices.
The device deliberately sets vendor and device ID to 0xffff so that any proper PCI enumeration will not see it. Software like the Simics UEFI BIOS, which knows the exact BDF of the device can then do PCI configuration accesses to talk to the device without it interfering with other PCI operations.
The features of the device are:
Simics package list retrieval
Allows the BIOS to read the list of packages associated with the current project.
Video mode inspection and selection
During boot, the BIOS will write out the list of supported video modes to the simics-uefi device. This can be checked using the status command of the device.
On a subsequent boot, the user can set the attribute video_mode to one of these modes and the BIOS will then switch into that mode before handing over to the OS.
Boot device selection
The user can set the attribute selected_boot_option to define what boot device shall have maximum priority. Please note that this must be an exact match of the boot device name. You can check that by booting manually first, go into the boot device selection menu in the BIOS and then use one of the strings listed there. Please ensure that whatever device you want to boot from is connected when checking the available boot devices.
ACPI table overrides/additions
The attribute additional_acpi_tables contains a list of 32 references to objects of class image (by default all entries point to None). If an actual image reference is inserted into the list, the BIOS will assume that it contains a binary ACPI table and install that. If the table has a signature that already exists, it will be replaced with what is in the image. Only top-level, single-instance ACPI tables can be installed/replaced.
RSDP write out
The attribute legacy_bios_rom_image can point to an object of class image (by default, it does not). If it does, the BIOS will write the RSDP structure into that image at the offset defined in attribute legacy_bios_rom_offset. Some OSes that do not use the UEFI RSDP access will scan certain memory regions for the RSDP structure. This mechanism allows the end user to ensure the RSDP structure appears where their SW wants it to be.
Additional memory regions to reserve
The attribute additional_memory_regions_to_reserve can store a list of regions that shall be reserved by the BIOS so that they are no longer used by the target OS. The list is of the format [[S0, L0], [S1, L1], [S2, L2], ...] where Sx is the start of an area and Lx is the length of the area.
Optional attribute;
read/write access; type:
[[ii]*] List of memory regions that need to be reserved. Each list element is a pair of a region start address and the region size.