SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
6.
BitVisor OSv
http://www.root.ne.jp/nishide/shs/
Saturday, October 18, 14
7.
OSv on BitVisor
BitVisor
Hardware
App
OSv
Saturday, October 18, 14
8.
OSv on BitVisor
BitVisor
Hardware
App
OSv
OSb
Saturday, October 18, 14
9.
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
10.
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
26.
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
27.
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
28.
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
29.
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
40.
Faking BARs
BAR0: IO space
for Virtio
BAR1: MMIO space
for MSI-X
Saturday, October 18, 14
41.
Faking BARs
BAR0: IO space
for Virtio
BAR1: MMIO space
for MSI-X
= PRO/1000 IO space
Saturday, October 18, 14
42.
Faking BARs
BAR0: IO space
for Virtio
BAR1: MMIO space
for MSI-X
= PRO/1000 IO space
= PRO/1000 MMIO space
Saturday, October 18, 14
43.
Faking capabilities
Add MSI-X
capability
Saturday, October 18, 14
44.
Faking capabilities
Add MSI-X
capability Support
3 vectors
Saturday, October 18, 14
45.
Faking capabilities
Add MSI-X
capability Support
3 vectors
Vector 0:
Reception
Saturday, October 18, 14
46.
Faking capabilities
Add MSI-X
capability Support
3 vectors
Vector 0:
Reception
Vector 1:
Transmission
Saturday, October 18, 14
47.
Faking capabilities
Add MSI-X
capability Support
3 vectors
Vector 0:
Reception
Vector 1:
Transmission
Vector 2:
Control
Saturday, October 18, 14
48.
Virtio NIC Operations
• Virtio ring
• Packet transmission
• Packet reception
Saturday, October 18, 14
49.
Virtio ring
Controlled by
these registers
BAR0
(IO)
Saturday, October 18, 14
50.
Virtio ring
Controlled by
these registers
3 rings
available
BAR0
(IO)
Saturday, October 18, 14
51.
Virtio ring
BAR0 Ring 0: Reception
(IO)
Controlled by
these registers
3 rings
available
Saturday, October 18, 14
52.
Virtio ring
Controlled by
these registers
3 rings
available
Ring 0: Reception
Ring 1: Transmission
BAR0
(IO)
Saturday, October 18, 14
53.
Virtio ring
Controlled by
these registers
3 rings
available
Ring 0: Reception
Ring 1: Transmission
Ring 2: Control
BAR0
(IO)
Saturday, October 18, 14
54.
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
55.
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