SlideShare a Scribd company logo
1 of 36
Download to read offline
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 FiorimTI 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.
 
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 RobotIRJET 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 APISamsung 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 APISamsung Open Source Group
 
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 SystemIRJET Journal
 
Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115
Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115
Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115Krystel 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 requirementsAmir 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.pdfs1000dcodeandpixels
 
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-howibmservicemanagementunitehelpsmainframeo-160302232115
Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115
Nzs 1543-howibmservicemanagementunitehelpsmainframeo-160302232115
 
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
 
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
 
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 USBSamsung 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 DevicesSamsung 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 BeyondSamsung 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 tutorialSamsung 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 StrategySamsung Open Source Group
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilitySamsung 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 DeviceSamsung 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 IoTivitySamsung 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 LinuxSamsung 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/LinuxSamsung 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 ThingsSamsung 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

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

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