SlideShare a Scribd company logo
1 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IOMMU Event Tracing – What It Is and How It
Can Help Your Distro?
Shuah Khan – Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America (Silicon Valley)
shuahkh@osg.samsung.com
2
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Abstract
IOMMU event tracing feature enables reporting IOMMU events as they
happen during boot-time and run-time. As an example, when a device is
detached from host and assigned to a virtual machine, the device gets moved
from host domain to vm domain.
Enabling IOMMU event tracing will provide useful information about the
devices that are using IOMMU as well as as the changes that occur in device
assignments. In this talk, we will discuss the IOMMU event tracing feature and
how to enable and use it to trace events during boot-time and run-time. The
discussion will be focused on using the IOMMU tracing feature to get insight into
what's happening on a system in virtualized environments as devices get assigned
from host to virtual machines and vice versa. Linux kernel developers and users
can learn about a feature that can aid during development, maintenance, and support
of systems with IOMMU.
3
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Agenda
What is an IOMMU?
What does IOMMU do for us?
IOMMU references
IOMMU groups – device isolation
IOMMU domains - protection
IOMMU Event Tracing – classes
IOMMU Event Tracing – group class events
IOMMU Event Tracing – device class events
IOMMU Event Tracing – map and unmap
events
IOMMU Event Tracing - error class events
How to enable IOMMU Event Tracing at boot-
time?
How to enable IOMMU Event Tracing at run-
time?
Where are those traces?
What do IOMMU group event traces look
like?
What does lspci show?
IOMMU groups and device topology
What do IOMMU device event traces
look like?
What do IOMMU map and unmap event
traces look like?
Great we have traces! What now? Using
traces to solve problems
VFIO based device assignment use-case
Result - VFIO patch series to fix
problems!
Result - Improvements to IOMMU tracing
feature
4
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
What is an IOMMU?
I/O Memory Management Unit:
Translation - maps device (I/O) address to physical (machine) address.
Isolation - device isolation via access permissions (allow/disallow
access to memory regions or grant/deny map requests).
I/O Virtualization - virtual address space (iova)
• Each I/O device is assigned a DMA virtual address space same
as physical address space or virtual address space.
5
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IO Memory Management Unit – maps device addresses to
physical addresses
6
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
What does IOMMU do for us?
Advantages:
One single contiguous virtual memory region can be mapped to multiple non-contiguous physical memory
regions. IOMMU can make a non-contiguous memory region appear contiguous to a device (scatter/gather).
Scatter/gather optimizes streaming DMA performance for the I/O device
Memory isolation and protection: device can only access memory regions that are mapped for it.
• Hence faulty and/or malicious devices can't corrupt memory.
Memory isolation allows safe device assignment to a virtual machine without compromising host and other
guest OSes.
IOMMU enables 32-bit DMA capable non-DAC devices access to > 4GB memory.
IOMMU - support hardware interrupt re-mapping.
• extends limited hardware interrupts to software interrupts.
• interrupt remapping - primary uses are interrupt isolation and translation between interrupt domains, ex.
ioapic vs x2apic on x86
Disadvantages:
Latency in dynamic DMA mapping path, translation over head penalty.
IOTLB can alleviate translation overhead and most servers support IOMMU and IOTLB hardware.
7
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IOMMU groups – device isolation
Single device isolation is not possible in some cases for variety of
reasons.
e.g: Devices behind bridge can communicate without reaching IOMMU
Multi-function cars don't always support PCI access control services
required to describe isolation between functions.
Devices are grouped for isolation in IOMMU groups.
Each group contains devices that should be isolated as a group, as in
some cases, single device granularity isn't possible.
8
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IOMMU
Device isolation at port granularity – Not!!!
9
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IOMMU domains - protection
Domains provide protection against one guest VM corrupting another
VM's memory.
Devices get moved from one domain to another when a device gets
moved from one VM to another or host to a guest.
10
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Device assigned to host
Host Guest
11
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Device detached from host
Host Guest
12
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Device assigned to guest
Host Guest
13
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IOMMU Event Tracing - classes
IOMMU group class events:
Add device to IOMMU group.
Remove device from IOMMU group.
IOMMU device class events:
Attach device to a domain.
Detach device from a domain.
IOMMU map event.
IOMMU unmap event.
IOMMU Error class:
io_page_fault event.
14
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IOMMU Event Tracing – group class events
Add device to a group:
Format: IOMMU: groupID=%d device=%s
Remove device from a group:
Format: IOMMU: groupID=%d device=%s
Events in this group are triggered during boot.
This information provides insight into IOMMU device topology and
device grouping.
15
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IOMMU Event Tracing – device class events
Attach (add) device to a domain:
Format: IOMMU: device=%s
Detach (remove) device from a domain:
Format: IOMMU: device=%s
Events in this group are triggered during run-time whenever devices are
attached to and detached from domains. e.g: When a device is detached
from host and attached to a guest.
This information provides insight into device assignment changes during run-
time.
16
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IOMMU Event Tracing – map and unmap events
IOMMU Map:
Format: IOMMU: iova=0x%016llx paddr=0x%016llx size=%zu
IOMMU Unmap:
Format: IOMMU: iova=0x%016llx size=%zu unmapped_size=%zu
Events in this group are triggered during run-time whenever device
drivers make IOMMU map and unmap requests.
This information provides insight into map and unmap requests and
helps debug performance and other problems.
17
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IOMMU Event Tracing – error class events
IO Page Fault (AMD-Vi)
Format: IOMMU:%s %s iova=0x%016llx flags=0x%04x
Events in this group are triggered during run-time when an IOMMU
fault occurs.
This information provides insight into IOMMU faults and useful in
logging the fault and take measures to restart the faulting device.
The information in flags field is especially useful in debugging
IOMMU kernel
18
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
How to enable IOMMU tracing at boot-time?
Using Kernel boot option trace_event:
The following enables all IOMMU trace events at boot-time.
trace_event=io_page_fault,unmap,map,detach_device_from_domain,
attach_device_to_domain,remove_device_from_group,add_device
_to_group
19
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
How to enable IOMMU tracing at run-time?
Enable single event:
cd /sys/kernel/debug/trace/events
echo 1 > iommu/event_name_file
or
Enable all events:
for i in $(find /sys/kernel/debug/tracing/events/iommu/ -name enable);
do echo 1 > $i; done
20
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Where are those traces?
/sys/kernel/debug/tracing/trace
# tracer: nop
#
# entries-in-buffer/entries-written: 18/18 #P:8
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
21
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
What do IOMMU group event traces look like?
# tracer: nop
#
# entries-in-buffer/entries-written: 18/18 #P:8
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
swapper/0-1 [000] .... 1.899609: add_device_to_group: IOMMU: groupID=0 device=0000:00:00.0
swapper/0-1 [000] .... 1.899619: add_device_to_group: IOMMU: groupID=1 device=0000:00:01.0
swapper/0-1 [000] .... 1.899624: add_device_to_group: IOMMU: groupID=2 device=0000:00:02.0
swapper/0-1 [000] .... 1.899629: add_device_to_group: IOMMU: groupID=3 device=0000:00:03.0
swapper/0-1 [000] .... 1.899634: add_device_to_group: IOMMU: groupID=4 device=0000:00:14.0
swapper/0-1 [000] .... 1.899642: add_device_to_group: IOMMU: groupID=5 device=0000:00:16.0
swapper/0-1 [000] .... 1.899647: add_device_to_group: IOMMU: groupID=6 device=0000:00:1a.0
swapper/0-1 [000] .... 1.899651: add_device_to_group: IOMMU: groupID=7 device=0000:00:1b.0
swapper/0-1 [000] .... 1.899656: add_device_to_group: IOMMU: groupID=8 device=0000:00:1c.0
swapper/0-1 [000] .... 1.899661: add_device_to_group: IOMMU: groupID=9 device=0000:00:1c.2
swapper/0-1 [000] .... 1.899668: add_device_to_group: IOMMU: groupID=10 device=0000:00:1c.3
swapper/0-1 [000] .... 1.899674: add_device_to_group: IOMMU: groupID=11 device=0000:00:1d.0
swapper/0-1 [000] .... 1.899682: add_device_to_group: IOMMU: groupID=12 device=0000:00:1f.0
swapper/0-1 [000] .... 1.899687: add_device_to_group: IOMMU: groupID=12 device=0000:00:1f.2
swapper/0-1 [000] .... 1.899692: add_device_to_group: IOMMU: groupID=12 device=0000:00:1f.3
swapper/0-1 [000] .... 1.899696: add_device_to_group: IOMMU: groupID=13 device=0000:02:00.0
swapper/0-1 [000] .... 1.899701: add_device_to_group: IOMMU: groupID=14 device=0000:03:00.0
swapper/0-1 [000] .... 1.899704: add_device_to_group: IOMMU: groupID=10 device=0000:04:00.0
22
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
What does lspci show?
00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics
Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)
00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5)
00:1c.3 PCI bridge: Intel Corporation 82801 PCI Bridge (rev d5)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation H87 Express LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
02:00.0 Network controller: Intel Corporation Wireless 7260 (rev 73)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
(rev 0c)
04:00.0 PCI bridge: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge (rev 04)
23
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IOMMU groups and device topology
GroupID=0
Device=0000:00:00.0
Host bridge:
DRAM Controller
GroupID=1
Device=0000:00:01.0
PCI bridge:
PCIe x16 Controller
GroupID=2
Device=0000:00:02.0
VGA compatible controller:
Integrated Graphics
Controller
GroupID=3
Device=0000:00:03.0
Audio device
GroupID=4
Device=0000:00:14.0
USB controller:
xHCI
GroupID=5
Device=0000:00:16.0
MEI controller
GroupID=6
Device=0000:00:1a.0
USB controller:
EHCI #2
GroupID=7
Device=0000:00:1b.0
Audio device
GroupID=8
Device=0000:00:1c.0
PCI bridge:
PCIe Root Port #1
GroupID=9
Device=0000:00:1c.2
PCI bridge:
PCIe Root Port #2
GroupID=10
Device=0000:00:1c.3
PCI bridge:
PCIe Root Port #3
Device=0000:04:00.0
PCIe to PCI Bridge
GroupID=11
Device=0000:00:1d.0
USB controller:
EHCI #1
GroupID=12
Device=0000:00:1f.0
ISA bridge
Device=0000:00:1f.2
SATA Controller
Device=0000:00:1f.3
SMBus
GroupID=13
Device=0000:02:00.0
Network Controller
GroupID=14
Device=0000:03:00.0
Ethernet Controller
24
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
What do IOMMU device event traces look like?
# tracer: nop
#
# entries-in-buffer/entries-written: 5689868/5689868 #P:8
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
qemu-kvm-28546 [003] .... 1804.692631: attach_device_to_domain: IOMMU: device=0000:00:1c.0
qemu-kvm-28546 [003] .... 1804.692635: attach_device_to_domain: IOMMU: device=0000:00:1c.4
qemu-kvm-28546 [003] .... 1804.692643: attach_device_to_domain: IOMMU: device=0000:05:00.0
qemu-kvm-28546 [003] .... 1804.692666: detach_device_from_domain: IOMMU: device=0000:00:1c.0
qemu-kvm-28546 [003] .... 1804.692671: detach_device_from_domain: IOMMU: device=0000:00:1c.4
qemu-kvm-28546 [003] .... 1804.692676: detach_device_from_domain: IOMMU: device=0000:05:00.0
25
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
What do IOMMU map/unmap event traces look like?
# tracer: nop
#
# entries-in-buffer/entries-written: 54/54 #P:8
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
qemu-kvm-28546 [002] .... 1804.480679: map: IOMMU: iova=0x00000000000a0000
paddr=0x00000000446a0000 size=4096
qemu-kvm-28547 [006] .... 1809.032767: unmap: IOMMU: iova=0x00000000000c1000
size=4096 unmapped_size=4096
26
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Great we have traces! What now?
Using traces to solve problems...
27
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Using traces -----
Get insight into:
IOMMU device topology – which devices belong to which group
Run-time device assignment changes as devices move from host to
guests and back to host.
Debug:
IOMMU problems.
Device assignment problems.
Detect and solve performance problems.
BIOS and firmware problems related to IOMMU hardware and
firmware implementation.
28
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
VFIO based device assignment use-case
Alex Williamson enabled run-time IOMMU traces for vfio-based device
assignment and found the following VFIO problems:
Large number of unmap calls on VT-d system without IOMMU
superpage support:
VFIO unmap path is not optimized on a VT-d system without IOMMU
superpage support: each single page is unmapped individually, since
the current unmap path optimization relies on IOMMU superpage
support.
Unnecessary single page mappings for invalid and reserved memory
regions, like mappings of MMIO BARs.
Very long task runs with needs-resched set.
29
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Result - VFIO patch series to fix problems!
Alex was able to:
Reduce the number of unmap calls to 2% of the original on Intel VT-d
without IOMMU superpage support.
Before: maps 472574, unmaps 5217244
After: maps 9509, unmaps 9509
Sporadic needs-resched runs.
Reference: http://lists.linuxfoundation.org/pipermail/iommu/2015-
January/011718.html
30
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Result - Improvements to IOMMU tracing feature
Alex found a few bugs and suggested improvements:
trace_iommu_map() should report original iova and size.
trace_iommu_unmap() should report original iova, size, and
unmapped size.
Size field is handled as int and could overflow.
The above problems are fixed in 3.20
iommu: fix trace_map() to report original iova and original size
iommu: fix trace_unmap() to report original iova
iommu: change trace unmap api to report unmapped size
31
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Acknowledgements
Special thanks to Alex Williamson:
for generating traces for VFIO based device assignments.
for his feedback on improving the IOMMU Event Tracing API.
32
© 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IOMMU References
Utilizing IOMMUs for Virtualization in Linux and Xen, Multiple Authors
https://www.kernel.org/doc/Documentation/vfio.txt
VFIO PCI Device assignment breaks free of KVM – Alex Williamson,
RedHat
33 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Thank you.
34
© 2014 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
IOMMU
IOMMU lookups
Device address
0xf000
Physical address
0xf00bar000000
Host
35
© 2014 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Server 32-cores
VM 1
driver
VM 2
driver
VM 3
driver
VM 4
driver
Standard NIC Standard NIC Standard NIC Standard NIC
Intel VT-d or AMD-Vi
Physical Device Assignment
36
© 2014 SAMSUNG Electronics Co.Open Source Group – Silicon Valley
Virtual Device Assignment
Server 32-cores
VM 1
driver
VM 2
driver
VM 3
V-NIC
VM 4
V-NIC
SR-IOV NIC
SR-IOV BIOS and Intel VT-d or AMD-Vi
VF 2 Physical Function
PF driver
VF 1

More Related Content

Similar to Iommu tracing reviewed

[CLASS2014] Palestra Técnica - Franzvitor Fiorim
[CLASS2014] Palestra Técnica - Franzvitor Fiorim[CLASS2014] Palestra Técnica - Franzvitor Fiorim
[CLASS2014] Palestra Técnica - Franzvitor Fiorim
TI Safe
 
Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)
Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)
Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)
FFRI, Inc.
 
OMEGAMON XE for z/OS V530 Long client presentation
OMEGAMON XE for z/OS V530 Long client presentationOMEGAMON XE for z/OS V530 Long client presentation
OMEGAMON XE for z/OS V530 Long client presentation
IBM z Systems Software - IT Service Management
 
IRJET- Voice Recognition(AI) : Voice Assistant Robot
IRJET-  	  Voice Recognition(AI) : Voice Assistant RobotIRJET-  	  Voice Recognition(AI) : Voice Assistant Robot
IRJET- Voice Recognition(AI) : Voice Assistant Robot
IRJET Journal
 
Media Resource Sharing Through the Media Controller API
Media Resource Sharing Through the Media Controller APIMedia Resource Sharing Through the Media Controller API
Media Resource Sharing Through the Media Controller API
Samsung Open Source Group
 
Media Resource Sharing Through the Media Controller API
Media Resource Sharing Through the Media Controller APIMedia Resource Sharing Through the Media Controller API
Media Resource Sharing Through the Media Controller API
Samsung Open Source Group
 
Emc vplex deep dive
Emc vplex deep diveEmc vplex deep dive
Emc vplex deep dive
solarisyougood
 
Learning, Analyzing and Protecting Android with TOMOYO Linux (JLS2009)
Learning, Analyzing and Protecting Android with TOMOYO Linux (JLS2009)Learning, Analyzing and Protecting Android with TOMOYO Linux (JLS2009)
Learning, Analyzing and Protecting Android with TOMOYO Linux (JLS2009)
Toshiharu Harada, Ph.D
 
IRJET- IoT Enabled Smart Parking System
IRJET-  	  IoT Enabled Smart Parking SystemIRJET-  	  IoT Enabled Smart Parking System
IRJET- IoT Enabled Smart Parking System
IRJET Journal
 
NZS-1543 - How IBM Service Management Unite Helps Mainframe O
NZS-1543 - How IBM Service Management Unite Helps Mainframe ONZS-1543 - How IBM Service Management Unite Helps Mainframe O
NZS-1543 - How IBM Service Management Unite Helps Mainframe O
IBM z Systems Software - IT Service Management
 
Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115
Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115
Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115
Krystel Hery
 
Designing safe cars - meeting ISO-26262 functionas safety requirements
Designing safe cars - meeting ISO-26262 functionas safety requirementsDesigning safe cars - meeting ISO-26262 functionas safety requirements
Designing safe cars - meeting ISO-26262 functionas safety requirements
Amir Rahat
 
What is Interactive Electronic Technical Manual IETM and How Does it Work.pdf
What is Interactive Electronic Technical Manual IETM and How Does it Work.pdfWhat is Interactive Electronic Technical Manual IETM and How Does it Work.pdf
What is Interactive Electronic Technical Manual IETM and How Does it Work.pdf
s1000dcodeandpixels
 
What is Interactive Electronic Technical Manual IETM and How Does it Work.pdf
What is Interactive Electronic Technical Manual IETM and How Does it Work.pdfWhat is Interactive Electronic Technical Manual IETM and How Does it Work.pdf
What is Interactive Electronic Technical Manual IETM and How Does it Work.pdf
Code and Pixels Software Development, Technology
 
Akamai in a hyperconnected world
Akamai in a hyperconnected worldAkamai in a hyperconnected world
Akamai in a hyperconnected worldmagda3695
 
Akamai in a hyperconnected world
Akamai in a hyperconnected worldAkamai in a hyperconnected world
Akamai in a hyperconnected worldmagda3695
 
L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...
L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...
L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...
Codemotion
 
Integrated Intrusion Detection Services for z/OS Communications Server
Integrated Intrusion Detection Services for z/OS Communications Server Integrated Intrusion Detection Services for z/OS Communications Server
Integrated Intrusion Detection Services for z/OS Communications Server
zOSCommserver
 
Webinar–Improving Fuzz Testing of Infotainment Systems and Telematics Units U...
Webinar–Improving Fuzz Testing of Infotainment Systems and Telematics Units U...Webinar–Improving Fuzz Testing of Infotainment Systems and Telematics Units U...
Webinar–Improving Fuzz Testing of Infotainment Systems and Telematics Units U...
Synopsys Software Integrity Group
 

Similar to Iommu tracing reviewed (20)

[CLASS2014] Palestra Técnica - Franzvitor Fiorim
[CLASS2014] Palestra Técnica - Franzvitor Fiorim[CLASS2014] Palestra Técnica - Franzvitor Fiorim
[CLASS2014] Palestra Técnica - Franzvitor Fiorim
 
Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)
Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)
Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)
 
OMEGAMON XE for z/OS V530 Long client presentation
OMEGAMON XE for z/OS V530 Long client presentationOMEGAMON XE for z/OS V530 Long client presentation
OMEGAMON XE for z/OS V530 Long client presentation
 
IRJET- Voice Recognition(AI) : Voice Assistant Robot
IRJET-  	  Voice Recognition(AI) : Voice Assistant RobotIRJET-  	  Voice Recognition(AI) : Voice Assistant Robot
IRJET- Voice Recognition(AI) : Voice Assistant Robot
 
Media Resource Sharing Through the Media Controller API
Media Resource Sharing Through the Media Controller APIMedia Resource Sharing Through the Media Controller API
Media Resource Sharing Through the Media Controller API
 
Media Resource Sharing Through the Media Controller API
Media Resource Sharing Through the Media Controller APIMedia Resource Sharing Through the Media Controller API
Media Resource Sharing Through the Media Controller API
 
Emc vplex deep dive
Emc vplex deep diveEmc vplex deep dive
Emc vplex deep dive
 
Learning, Analyzing and Protecting Android with TOMOYO Linux (JLS2009)
Learning, Analyzing and Protecting Android with TOMOYO Linux (JLS2009)Learning, Analyzing and Protecting Android with TOMOYO Linux (JLS2009)
Learning, Analyzing and Protecting Android with TOMOYO Linux (JLS2009)
 
IRJET- IoT Enabled Smart Parking System
IRJET-  	  IoT Enabled Smart Parking SystemIRJET-  	  IoT Enabled Smart Parking System
IRJET- IoT Enabled Smart Parking System
 
SACHINDOC
SACHINDOCSACHINDOC
SACHINDOC
 
NZS-1543 - How IBM Service Management Unite Helps Mainframe O
NZS-1543 - How IBM Service Management Unite Helps Mainframe ONZS-1543 - How IBM Service Management Unite Helps Mainframe O
NZS-1543 - How IBM Service Management Unite Helps Mainframe O
 
Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115
Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115
Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115
 
Designing safe cars - meeting ISO-26262 functionas safety requirements
Designing safe cars - meeting ISO-26262 functionas safety requirementsDesigning safe cars - meeting ISO-26262 functionas safety requirements
Designing safe cars - meeting ISO-26262 functionas safety requirements
 
What is Interactive Electronic Technical Manual IETM and How Does it Work.pdf
What is Interactive Electronic Technical Manual IETM and How Does it Work.pdfWhat is Interactive Electronic Technical Manual IETM and How Does it Work.pdf
What is Interactive Electronic Technical Manual IETM and How Does it Work.pdf
 
What is Interactive Electronic Technical Manual IETM and How Does it Work.pdf
What is Interactive Electronic Technical Manual IETM and How Does it Work.pdfWhat is Interactive Electronic Technical Manual IETM and How Does it Work.pdf
What is Interactive Electronic Technical Manual IETM and How Does it Work.pdf
 
Akamai in a hyperconnected world
Akamai in a hyperconnected worldAkamai in a hyperconnected world
Akamai in a hyperconnected world
 
Akamai in a hyperconnected world
Akamai in a hyperconnected worldAkamai in a hyperconnected world
Akamai in a hyperconnected world
 
L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...
L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...
L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...
 
Integrated Intrusion Detection Services for z/OS Communications Server
Integrated Intrusion Detection Services for z/OS Communications Server Integrated Intrusion Detection Services for z/OS Communications Server
Integrated Intrusion Detection Services for z/OS Communications Server
 
Webinar–Improving Fuzz Testing of Infotainment Systems and Telematics Units U...
Webinar–Improving Fuzz Testing of Infotainment Systems and Telematics Units U...Webinar–Improving Fuzz Testing of Infotainment Systems and Telematics Units U...
Webinar–Improving Fuzz Testing of Infotainment Systems and Telematics Units U...
 

More from Samsung Open Source Group

The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
Samsung Open Source Group
 
Easy IoT with JavaScript
Easy IoT with JavaScriptEasy IoT with JavaScript
Easy IoT with JavaScript
Samsung Open Source Group
 
Spawny: A New Approach to Logins
Spawny: A New Approach to LoginsSpawny: A New Approach to Logins
Spawny: A New Approach to Logins
Samsung Open Source Group
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USB
Samsung Open Source Group
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesTizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Samsung Open Source Group
 
IoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and BeyondIoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and Beyond
Samsung Open Source Group
 
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
Samsung Open Source Group
 
GENIVI + OCF Cooperation
GENIVI + OCF CooperationGENIVI + OCF Cooperation
GENIVI + OCF Cooperation
Samsung Open Source Group
 
Framework for IoT Interoperability
Framework for IoT InteroperabilityFramework for IoT Interoperability
Framework for IoT Interoperability
Samsung Open Source Group
 
Open Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategyOpen Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate Strategy
Samsung Open Source Group
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
Samsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
Samsung Open Source Group
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Samsung Open Source Group
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
Samsung Open Source Group
 
SOSCON 2016 JerryScript
SOSCON 2016 JerryScriptSOSCON 2016 JerryScript
SOSCON 2016 JerryScript
Samsung Open Source Group
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
Samsung Open Source Group
 
Run Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT NetworkRun Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT Network
Samsung Open Source Group
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Samsung Open Source Group
 
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/LinuxIoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
Samsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
Samsung Open Source Group
 

More from Samsung Open Source Group (20)

The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
 
Easy IoT with JavaScript
Easy IoT with JavaScriptEasy IoT with JavaScript
Easy IoT with JavaScript
 
Spawny: A New Approach to Logins
Spawny: A New Approach to LoginsSpawny: A New Approach to Logins
Spawny: A New Approach to Logins
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USB
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesTizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
 
IoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and BeyondIoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and Beyond
 
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
 
GENIVI + OCF Cooperation
GENIVI + OCF CooperationGENIVI + OCF Cooperation
GENIVI + OCF Cooperation
 
Framework for IoT Interoperability
Framework for IoT InteroperabilityFramework for IoT Interoperability
Framework for IoT Interoperability
 
Open Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategyOpen Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate Strategy
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
 
SOSCON 2016 JerryScript
SOSCON 2016 JerryScriptSOSCON 2016 JerryScript
SOSCON 2016 JerryScript
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
 
Run Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT NetworkRun Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT Network
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
 
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/LinuxIoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
 

Recently uploaded

FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 

Iommu tracing reviewed

  • 1. 1 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IOMMU Event Tracing – What It Is and How It Can Help Your Distro? Shuah Khan – Sr. Linux Kernel Developer Open Source Innovation Group Samsung Research America (Silicon Valley) shuahkh@osg.samsung.com
  • 2. 2 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Abstract IOMMU event tracing feature enables reporting IOMMU events as they happen during boot-time and run-time. As an example, when a device is detached from host and assigned to a virtual machine, the device gets moved from host domain to vm domain. Enabling IOMMU event tracing will provide useful information about the devices that are using IOMMU as well as as the changes that occur in device assignments. In this talk, we will discuss the IOMMU event tracing feature and how to enable and use it to trace events during boot-time and run-time. The discussion will be focused on using the IOMMU tracing feature to get insight into what's happening on a system in virtualized environments as devices get assigned from host to virtual machines and vice versa. Linux kernel developers and users can learn about a feature that can aid during development, maintenance, and support of systems with IOMMU.
  • 3. 3 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Agenda What is an IOMMU? What does IOMMU do for us? IOMMU references IOMMU groups – device isolation IOMMU domains - protection IOMMU Event Tracing – classes IOMMU Event Tracing – group class events IOMMU Event Tracing – device class events IOMMU Event Tracing – map and unmap events IOMMU Event Tracing - error class events How to enable IOMMU Event Tracing at boot- time? How to enable IOMMU Event Tracing at run- time? Where are those traces? What do IOMMU group event traces look like? What does lspci show? IOMMU groups and device topology What do IOMMU device event traces look like? What do IOMMU map and unmap event traces look like? Great we have traces! What now? Using traces to solve problems VFIO based device assignment use-case Result - VFIO patch series to fix problems! Result - Improvements to IOMMU tracing feature
  • 4. 4 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley What is an IOMMU? I/O Memory Management Unit: Translation - maps device (I/O) address to physical (machine) address. Isolation - device isolation via access permissions (allow/disallow access to memory regions or grant/deny map requests). I/O Virtualization - virtual address space (iova) • Each I/O device is assigned a DMA virtual address space same as physical address space or virtual address space.
  • 5. 5 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IO Memory Management Unit – maps device addresses to physical addresses
  • 6. 6 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley What does IOMMU do for us? Advantages: One single contiguous virtual memory region can be mapped to multiple non-contiguous physical memory regions. IOMMU can make a non-contiguous memory region appear contiguous to a device (scatter/gather). Scatter/gather optimizes streaming DMA performance for the I/O device Memory isolation and protection: device can only access memory regions that are mapped for it. • Hence faulty and/or malicious devices can't corrupt memory. Memory isolation allows safe device assignment to a virtual machine without compromising host and other guest OSes. IOMMU enables 32-bit DMA capable non-DAC devices access to > 4GB memory. IOMMU - support hardware interrupt re-mapping. • extends limited hardware interrupts to software interrupts. • interrupt remapping - primary uses are interrupt isolation and translation between interrupt domains, ex. ioapic vs x2apic on x86 Disadvantages: Latency in dynamic DMA mapping path, translation over head penalty. IOTLB can alleviate translation overhead and most servers support IOMMU and IOTLB hardware.
  • 7. 7 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IOMMU groups – device isolation Single device isolation is not possible in some cases for variety of reasons. e.g: Devices behind bridge can communicate without reaching IOMMU Multi-function cars don't always support PCI access control services required to describe isolation between functions. Devices are grouped for isolation in IOMMU groups. Each group contains devices that should be isolated as a group, as in some cases, single device granularity isn't possible.
  • 8. 8 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IOMMU Device isolation at port granularity – Not!!!
  • 9. 9 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IOMMU domains - protection Domains provide protection against one guest VM corrupting another VM's memory. Devices get moved from one domain to another when a device gets moved from one VM to another or host to a guest.
  • 10. 10 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Device assigned to host Host Guest
  • 11. 11 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Device detached from host Host Guest
  • 12. 12 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Device assigned to guest Host Guest
  • 13. 13 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IOMMU Event Tracing - classes IOMMU group class events: Add device to IOMMU group. Remove device from IOMMU group. IOMMU device class events: Attach device to a domain. Detach device from a domain. IOMMU map event. IOMMU unmap event. IOMMU Error class: io_page_fault event.
  • 14. 14 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IOMMU Event Tracing – group class events Add device to a group: Format: IOMMU: groupID=%d device=%s Remove device from a group: Format: IOMMU: groupID=%d device=%s Events in this group are triggered during boot. This information provides insight into IOMMU device topology and device grouping.
  • 15. 15 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IOMMU Event Tracing – device class events Attach (add) device to a domain: Format: IOMMU: device=%s Detach (remove) device from a domain: Format: IOMMU: device=%s Events in this group are triggered during run-time whenever devices are attached to and detached from domains. e.g: When a device is detached from host and attached to a guest. This information provides insight into device assignment changes during run- time.
  • 16. 16 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IOMMU Event Tracing – map and unmap events IOMMU Map: Format: IOMMU: iova=0x%016llx paddr=0x%016llx size=%zu IOMMU Unmap: Format: IOMMU: iova=0x%016llx size=%zu unmapped_size=%zu Events in this group are triggered during run-time whenever device drivers make IOMMU map and unmap requests. This information provides insight into map and unmap requests and helps debug performance and other problems.
  • 17. 17 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IOMMU Event Tracing – error class events IO Page Fault (AMD-Vi) Format: IOMMU:%s %s iova=0x%016llx flags=0x%04x Events in this group are triggered during run-time when an IOMMU fault occurs. This information provides insight into IOMMU faults and useful in logging the fault and take measures to restart the faulting device. The information in flags field is especially useful in debugging IOMMU kernel
  • 18. 18 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley How to enable IOMMU tracing at boot-time? Using Kernel boot option trace_event: The following enables all IOMMU trace events at boot-time. trace_event=io_page_fault,unmap,map,detach_device_from_domain, attach_device_to_domain,remove_device_from_group,add_device _to_group
  • 19. 19 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley How to enable IOMMU tracing at run-time? Enable single event: cd /sys/kernel/debug/trace/events echo 1 > iommu/event_name_file or Enable all events: for i in $(find /sys/kernel/debug/tracing/events/iommu/ -name enable); do echo 1 > $i; done
  • 20. 20 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Where are those traces? /sys/kernel/debug/tracing/trace # tracer: nop # # entries-in-buffer/entries-written: 18/18 #P:8 # # _-----=> irqs-off # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / delay # TASK-PID CPU# |||| TIMESTAMP FUNCTION # | | | |||| | |
  • 21. 21 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley What do IOMMU group event traces look like? # tracer: nop # # entries-in-buffer/entries-written: 18/18 #P:8 # # _-----=> irqs-off # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / delay # TASK-PID CPU# |||| TIMESTAMP FUNCTION # | | | |||| | | swapper/0-1 [000] .... 1.899609: add_device_to_group: IOMMU: groupID=0 device=0000:00:00.0 swapper/0-1 [000] .... 1.899619: add_device_to_group: IOMMU: groupID=1 device=0000:00:01.0 swapper/0-1 [000] .... 1.899624: add_device_to_group: IOMMU: groupID=2 device=0000:00:02.0 swapper/0-1 [000] .... 1.899629: add_device_to_group: IOMMU: groupID=3 device=0000:00:03.0 swapper/0-1 [000] .... 1.899634: add_device_to_group: IOMMU: groupID=4 device=0000:00:14.0 swapper/0-1 [000] .... 1.899642: add_device_to_group: IOMMU: groupID=5 device=0000:00:16.0 swapper/0-1 [000] .... 1.899647: add_device_to_group: IOMMU: groupID=6 device=0000:00:1a.0 swapper/0-1 [000] .... 1.899651: add_device_to_group: IOMMU: groupID=7 device=0000:00:1b.0 swapper/0-1 [000] .... 1.899656: add_device_to_group: IOMMU: groupID=8 device=0000:00:1c.0 swapper/0-1 [000] .... 1.899661: add_device_to_group: IOMMU: groupID=9 device=0000:00:1c.2 swapper/0-1 [000] .... 1.899668: add_device_to_group: IOMMU: groupID=10 device=0000:00:1c.3 swapper/0-1 [000] .... 1.899674: add_device_to_group: IOMMU: groupID=11 device=0000:00:1d.0 swapper/0-1 [000] .... 1.899682: add_device_to_group: IOMMU: groupID=12 device=0000:00:1f.0 swapper/0-1 [000] .... 1.899687: add_device_to_group: IOMMU: groupID=12 device=0000:00:1f.2 swapper/0-1 [000] .... 1.899692: add_device_to_group: IOMMU: groupID=12 device=0000:00:1f.3 swapper/0-1 [000] .... 1.899696: add_device_to_group: IOMMU: groupID=13 device=0000:02:00.0 swapper/0-1 [000] .... 1.899701: add_device_to_group: IOMMU: groupID=14 device=0000:03:00.0 swapper/0-1 [000] .... 1.899704: add_device_to_group: IOMMU: groupID=10 device=0000:04:00.0
  • 22. 22 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley What does lspci show? 00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06) 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06) 00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06) 00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06) 00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05) 00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04) 00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05) 00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05) 00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5) 00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5) 00:1c.3 PCI bridge: Intel Corporation 82801 PCI Bridge (rev d5) 00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05) 00:1f.0 ISA bridge: Intel Corporation H87 Express LPC Controller (rev 05) 00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05) 00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05) 02:00.0 Network controller: Intel Corporation Wireless 7260 (rev 73) 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c) 04:00.0 PCI bridge: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge (rev 04)
  • 23. 23 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IOMMU groups and device topology GroupID=0 Device=0000:00:00.0 Host bridge: DRAM Controller GroupID=1 Device=0000:00:01.0 PCI bridge: PCIe x16 Controller GroupID=2 Device=0000:00:02.0 VGA compatible controller: Integrated Graphics Controller GroupID=3 Device=0000:00:03.0 Audio device GroupID=4 Device=0000:00:14.0 USB controller: xHCI GroupID=5 Device=0000:00:16.0 MEI controller GroupID=6 Device=0000:00:1a.0 USB controller: EHCI #2 GroupID=7 Device=0000:00:1b.0 Audio device GroupID=8 Device=0000:00:1c.0 PCI bridge: PCIe Root Port #1 GroupID=9 Device=0000:00:1c.2 PCI bridge: PCIe Root Port #2 GroupID=10 Device=0000:00:1c.3 PCI bridge: PCIe Root Port #3 Device=0000:04:00.0 PCIe to PCI Bridge GroupID=11 Device=0000:00:1d.0 USB controller: EHCI #1 GroupID=12 Device=0000:00:1f.0 ISA bridge Device=0000:00:1f.2 SATA Controller Device=0000:00:1f.3 SMBus GroupID=13 Device=0000:02:00.0 Network Controller GroupID=14 Device=0000:03:00.0 Ethernet Controller
  • 24. 24 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley What do IOMMU device event traces look like? # tracer: nop # # entries-in-buffer/entries-written: 5689868/5689868 #P:8 # # _-----=> irqs-off # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / delay # TASK-PID CPU# |||| TIMESTAMP FUNCTION # | | | |||| | | qemu-kvm-28546 [003] .... 1804.692631: attach_device_to_domain: IOMMU: device=0000:00:1c.0 qemu-kvm-28546 [003] .... 1804.692635: attach_device_to_domain: IOMMU: device=0000:00:1c.4 qemu-kvm-28546 [003] .... 1804.692643: attach_device_to_domain: IOMMU: device=0000:05:00.0 qemu-kvm-28546 [003] .... 1804.692666: detach_device_from_domain: IOMMU: device=0000:00:1c.0 qemu-kvm-28546 [003] .... 1804.692671: detach_device_from_domain: IOMMU: device=0000:00:1c.4 qemu-kvm-28546 [003] .... 1804.692676: detach_device_from_domain: IOMMU: device=0000:05:00.0
  • 25. 25 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley What do IOMMU map/unmap event traces look like? # tracer: nop # # entries-in-buffer/entries-written: 54/54 #P:8 # # _-----=> irqs-off # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / delay # TASK-PID CPU# |||| TIMESTAMP FUNCTION # | | | |||| | | qemu-kvm-28546 [002] .... 1804.480679: map: IOMMU: iova=0x00000000000a0000 paddr=0x00000000446a0000 size=4096 qemu-kvm-28547 [006] .... 1809.032767: unmap: IOMMU: iova=0x00000000000c1000 size=4096 unmapped_size=4096
  • 26. 26 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Great we have traces! What now? Using traces to solve problems...
  • 27. 27 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Using traces ----- Get insight into: IOMMU device topology – which devices belong to which group Run-time device assignment changes as devices move from host to guests and back to host. Debug: IOMMU problems. Device assignment problems. Detect and solve performance problems. BIOS and firmware problems related to IOMMU hardware and firmware implementation.
  • 28. 28 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley VFIO based device assignment use-case Alex Williamson enabled run-time IOMMU traces for vfio-based device assignment and found the following VFIO problems: Large number of unmap calls on VT-d system without IOMMU superpage support: VFIO unmap path is not optimized on a VT-d system without IOMMU superpage support: each single page is unmapped individually, since the current unmap path optimization relies on IOMMU superpage support. Unnecessary single page mappings for invalid and reserved memory regions, like mappings of MMIO BARs. Very long task runs with needs-resched set.
  • 29. 29 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Result - VFIO patch series to fix problems! Alex was able to: Reduce the number of unmap calls to 2% of the original on Intel VT-d without IOMMU superpage support. Before: maps 472574, unmaps 5217244 After: maps 9509, unmaps 9509 Sporadic needs-resched runs. Reference: http://lists.linuxfoundation.org/pipermail/iommu/2015- January/011718.html
  • 30. 30 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Result - Improvements to IOMMU tracing feature Alex found a few bugs and suggested improvements: trace_iommu_map() should report original iova and size. trace_iommu_unmap() should report original iova, size, and unmapped size. Size field is handled as int and could overflow. The above problems are fixed in 3.20 iommu: fix trace_map() to report original iova and original size iommu: fix trace_unmap() to report original iova iommu: change trace unmap api to report unmapped size
  • 31. 31 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Acknowledgements Special thanks to Alex Williamson: for generating traces for VFIO based device assignments. for his feedback on improving the IOMMU Event Tracing API.
  • 32. 32 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IOMMU References Utilizing IOMMUs for Virtualization in Linux and Xen, Multiple Authors https://www.kernel.org/doc/Documentation/vfio.txt VFIO PCI Device assignment breaks free of KVM – Alex Williamson, RedHat
  • 33. 33 © 2015 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Thank you.
  • 34. 34 © 2014 SAMSUNG Electronics Co.Open Source Group – Silicon Valley IOMMU IOMMU lookups Device address 0xf000 Physical address 0xf00bar000000 Host
  • 35. 35 © 2014 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Server 32-cores VM 1 driver VM 2 driver VM 3 driver VM 4 driver Standard NIC Standard NIC Standard NIC Standard NIC Intel VT-d or AMD-Vi Physical Device Assignment
  • 36. 36 © 2014 SAMSUNG Electronics Co.Open Source Group – Silicon Valley Virtual Device Assignment Server 32-cores VM 1 driver VM 2 driver VM 3 V-NIC VM 4 V-NIC SR-IOV NIC SR-IOV BIOS and Intel VT-d or AMD-Vi VF 2 Physical Function PF driver VF 1