OSv on BitVisor
BitVisor
Hardware
App
OSv
Saturday, October 18, 14
OSv on BitVisor
BitVisor
Hardware
App
OSv
OSb
Saturday, October 18, 14
OSv on BitVisor
BitVisor
Hardware
App
OSv
What the fuck
no Virtio !
OSb
Physical interface
sucks !
What the hell is
PRO/1000 !
Saturday, October 18, 14
OSv on BitVisor
BitVisor
Hardware
App
OSv
What the fuck
no Virtio !
OSb
Physical interface
sucks !
What the hell is
PRO/1000 !
You have no choice.
Virtio
Saturday, October 18, 14
ACPI workaround
drivers/acpi.cc:
// Copy the root table list to dynamic memory
if (!is_bitvisor()) {
status = AcpiReallocateRootTable();
if (ACPI_FAILURE(status)) {
acpi_e("AcpiReallocateRootTable failed: %sn",
AcpiFormatException(status));
return;
}
}
Saturday, October 18, 14
ACPI workaround
drivers/acpi.cc:
// Copy the root table list to dynamic memory
if (!is_bitvisor()) {
status = AcpiReallocateRootTable();
if (ACPI_FAILURE(status)) {
acpi_e("AcpiReallocateRootTable failed: %sn",
AcpiFormatException(status));
return;
}
}
Triple fault
Saturday, October 18, 14
ACPI workaround
drivers/acpi.cc:
// Copy the root table list to dynamic memory
if (!is_bitvisor()) {
status = AcpiReallocateRootTable();
if (ACPI_FAILURE(status)) {
acpi_e("AcpiReallocateRootTable failed: %sn",
AcpiFormatException(status));
return;
}
}
Triple fault
Skip in case of OSb
Saturday, October 18, 14
ACPI workaround
drivers/acpi.cc:
// Copy the root table list to dynamic memory
if (!is_bitvisor()) {
status = AcpiReallocateRootTable();
if (ACPI_FAILURE(status)) {
acpi_e("AcpiReallocateRootTable failed: %sn",
AcpiFormatException(status));
return;
}
}
Triple fault
Skip in case of OSb
Machine-specific...?
Saturday, October 18, 14
Virtio NIC
BitVisor
Hardware
App Actually PRO/1000...
OSv
Saturday, October 18, 14
Virtio NIC
BitVisor
Hardware
App
OSv
Virtio NIC
Actually PRO/1000...
Fake Virtio NIC...
Saturday, October 18, 14
Virtio NIC
BitVisor
Hardware
App
OSv
Virtio NIC
Actually PRO/1000...
Fake Virtio NIC...
Hook PCI config access, MMIO, PIO and fake!
Saturday, October 18, 14
Faking
PCI configuration space
• Faking IDs
• Faking BARs
• Faking capabilities
Saturday, October 18, 14
Virtio ring
Controlled by
these registers
3 rings
available
BAR0
(IO)
Saturday, October 18, 14
Virtio ring
BAR0 Ring 0: Reception
(IO)
Controlled by
these registers
3 rings
available
Saturday, October 18, 14
Virtio ring
Controlled by
these registers
3 rings
available
Ring 0: Reception
Ring 1: Transmission
BAR0
(IO)
Saturday, October 18, 14
Virtio ring
Controlled by
these registers
3 rings
available
Ring 0: Reception
Ring 1: Transmission
Ring 2: Control
BAR0
(IO)
Saturday, October 18, 14
Virtio ring
Controlled by
these registers
3 rings
available
Ring 0: Reception
Ring 1: Transmission
Ring 2: Control
BAR0
(IO)
(Memory)
Saturday, October 18, 14
Virtio ring
Controlled by
these registers
3 rings
available
Ring 0: Reception
Ring 1: Transmission
Ring 2: Control
BAR0
(IO)
(Memory)
Driver 2 Device
Device 2 Driver
Saturday, October 18, 14