SlideShare a Scribd company logo
1 of 44
Download to read offline
ex-Arm Ltd., Kernel Team
No NMI? No Problem! -
Implemen ng Arm64
Pseudo-NMI
Julien Thierry <jthierry@redhat.com>
September 24, 2019
© 2019 Arm Limited
About Myself & the talk
Joined Arm in June 2017
Linux Kernel team
Cambridge, UK
First kernel related job
Le in August 2019
Work presented here done while employed by Arm
2 © 2019 Arm Limited
What are IRQs?
Manifesta on of event in the system: device or program triggered
Interrupts ac ve flow of execu on
Managed with some primi ves:
local_irq_disable/enable()
local_irq_save/restore()
3 © 2019 Arm Limited
What are NMIs?
Non-Maskable Interrupt
Interrupts that can happen while interrupts are disabled
Generally cannot be disabled locally
Used for repor ng hardware status, mer expira on, profiling, ...
x86: Dedicated excep on entry for NMIs
SPARC: Interrupts with highest possible priority
4 © 2019 Arm Limited
NMI Handlers
Dedicated context:
nmi_enter()
nmi_exit()
Inform system wide features (e.g. printk, race, rcu, ...)
Restric ons:
No NMI nes ng
No preemp on
Keeps NMI handlers simpler
5 © 2019 Arm Limited
NMI Handlers and Locks
void inc_counter ( void )
{
unsigned long f l a g s ;
f l a g s = r a w _ s p i n _ l o c k _ i r q s a v e (& count_lock ) ;
gl o b a l _c o un t e r += 1;
r a w _ s p i n _ u n l o c k _ i r q r e s t o r e (& count_lock , f l a g s ) ;
}
6 © 2019 Arm Limited
NMI Handlers and Locks
void inc_counter ( void )
{
unsigned long f l a g s ;
f l a g s = r a w _ s p i n _ l o c k _ i r q s a v e (& count_lock ) ;
gl o b a l _c o un t e r += 1;
r a w _ s p i n _ u n l o c k _ i r q r e s t o r e (& count_lock , f l a g s ) ;
}
Lock cannot protect against NMI
Can protect from concurrency (SMP) → mutex
6 © 2019 Arm Limited
The Perf Case
Demo
7 © 2019 Arm Limited
The Perf Case
Perf event handler
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
| IRQ
|
|
|
| | |
- - -| - - - - - - - - - - - - - - - - - - - - - - -| - - - - - - - - - - - - - - -|
irq_disable() perf event irq_enable()
(in random
location)
8 © 2019 Arm Limited
Pseudo-NMI for Arm64
No architected NMI
9 © 2019 Arm Limited
Pseudo-NMI for Arm64
No architected NMI
But has IRQ priori es and priority masking
Emulate NMI’s behaviour using an IRQ
Dis nguish NMI from normal IRQ: two dis nct priori es
Block IRQs while allowing NMIs: mask priority of normal IRQs
9 © 2019 Arm Limited
Arm64 CPU Interrupt Control
+---------------+
| |
| CPU |
| |
| +--------+ |
| | PSTATE | |
IRQ | | | |
- - - - - - - - - - - - - - - >| I | |
| | | |
| | | |
| | | |
| +--------+ |
| |
| |
+---------------+
10 © 2019 Arm Limited
Arm64 CPU Interrupt Control
PSTATE.I bit
Toggled by local_irq_enable/disable()
Prevents CPU to jump to interrupt vector
Single bit → only binary state
11 © 2019 Arm Limited
Arm64 CPU Interrupt Control
+---------------+
| |
| CPU |
| |
| +--------+ |
| | PSTATE | |
IRQ | | | |
- - - - - - - - - - - - - - - >| I | |
| | | |
| | | |
- - - - - - - - - - - - - - - >| F | |
FIQ | +--------+ |
| |
| |
+---------------+
12 © 2019 Arm Limited
More control with the GIC
+---------------+
| |
| | +-----------------+ +---------------+
| | | | | |
| | | GIC CPU | | CPU |
| | | Interface | | |
| | | | | +--------+ |
| Generic | | +--------+ | | | PSTATE | |
| | | | | | IRQ | | | |
| Interrupt | - - - - - - - - - - - - - - - - - - - - - - >| | - - -| - - - - - - - - - - - - - - - - - - - - - - >| I | |
| | | | PMR | | | | | |
| Controller | | | | | | | | |
| | | | | | | | | |
| | | | | | | +--------+ |
| | | +--------+ | | |
| | | | | |
| | +-----------------+ +---------------+
| |
| |
| |
| |
+---------------+
13 © 2019 Arm Limited
More control with the GIC
+---------------+ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
| | | |
| | | +-----------------+ +---------------+ |
| | | | | | | |
| | | | GIC CPU | | CPU | |
| | | | Interface | | | |
| | | | | | +--------+ | |
| Generic | | | +--------+ | | | PSTATE | | |
| | | | | | | IRQ | | | | |
| Interrupt | - - - - - - - - - - - - - - - - - - - - - - >| | - - -| - - - - - - - - - - - - - - - - - - - - - - >| I | | |
| | | | | PMR | | | | | | |
| Controller | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | +--------+ | |
| | | | +--------+ | | | |
| | | | | | | |
| | | +-----------------+ +---------------+ |
| | | |
| | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
| | Per CPU
| |
+---------------+
14 © 2019 Arm Limited
Fi ng priori es in linux
Stop touching PSTATE.I bit
Mask IRQs using PMR in local_irq_*()
Configure NMIs with high enough priority in GIC
15 © 2019 Arm Limited
Fi ng priori es in linux
Stop touching PSTATE.I bit
Mask IRQs using PMR in local_irq_*()
Configure NMIs with high enough priority in GIC
But:
Upon IRQ, interrupts are automa cally disabled (PSTATE.I)
Some contexts (idle, KVM guests, ...) cannot use PMR for IRQ disabling
Need to take care to have consistent state when reaching generic code
15 © 2019 Arm Limited
Using the NMI
Requester needs to set up target IRQ priority through irqchip
Ini al proposal: introduce new NMI state in enum irqchip_irq_state
16 © 2019 Arm Limited
Using the NMI
Requester needs to set up target IRQ priority through irqchip
Ini al proposal: introduce new NMI state in enum irqchip_irq_state
Not so popular:
Adding NMI d e l i v e r y support at low l e v e l a r c h i t e c t u r e i r q chip l e v e l
i s p e r f e c t l y fine , but the exposure of that needs to be r e s t r i c t e d
very much . Adding i t to the g e n e r i c i n t e r r u p t c o n t r o l i n t e r f a c e s i s
not going to happen . That ’ s doomed to begin with and a complete abuse
of the i n t e r f a c e as the handler can not ever be used f o r that .
Thanks ,
t g l x
16 © 2019 Arm Limited
NMI API
include/linux/interrupt.h
Provide NMI API similar to the IRQ one:
request_nmi() / free_nmi()
enable_nmi() / disable_nmi()
irq_chip changes
Flag to adver se NMI support
chip->irq_nmi_setup() / chip->irq_nmi_teardown()
Not exported to modules
(Per-cpu NMI variants available)
17 © 2019 Arm Limited
Results on Perf
Demo
18 © 2019 Arm Limited
Timeline
Work ini ated as by Daniel Thompson from Linaro:
19 © 2019 Arm Limited
Timeline
Work ini ated as by Daniel Thompson from Linaro:
2015-03-18: RFC: Pseudo-NMI for arm64 using ICC_PMR_EL1 (GICv3)
2016-08-19: RFC v3, v4.8-rc2
7 patches
Uses PMR for IRQ enabling/disabling
Hardcoded NMI priority for backtrace IPI
”The code works-for-me (tm) and is more ”real” than the last me I shared these patches.”
19 © 2019 Arm Limited
Timeline
Work ini ated as by Daniel Thompson from Linaro:
2015-03-18: RFC: Pseudo-NMI for arm64 using ICC_PMR_EL1 (GICv3)
2016-08-19: RFC v3, v4.8-rc2
7 patches
Uses PMR for IRQ enabling/disabling
Hardcoded NMI priority for backtrace IPI
”The code works-for-me (tm) and is more ”real” than the last me I shared these patches.”
2017-07 or 2017-08: I start working on it
19 © 2019 Arm Limited
Timeline
Work ini ated as by Daniel Thompson from Linaro:
2015-03-18: RFC: Pseudo-NMI for arm64 using ICC_PMR_EL1 (GICv3)
2016-08-19: RFC v3, v4.8-rc2
7 patches
Uses PMR for IRQ enabling/disabling
Hardcoded NMI priority for backtrace IPI
”The code works-for-me (tm) and is more ”real” than the last me I shared these patches.”
2017-07 or 2017-08: I start working on it
2017-10-11: RFC: arm64: provide pseudo NMI with GICv3, v4.15-rc2
7 patches
Tes ng with perf interrupt
dropped backtrace IPI
19 © 2019 Arm Limited
Timeline
2018-05-21: V3, v4.17-rc6
6 patches
20 © 2019 Arm Limited
Timeline
2018-05-21: V3, v4.17-rc6
6 patches
Review
As i t is , t h i s patch i s almost i mp oss ib le to review . I t turns the
i n t e r r u p t masking upside down , messes with the GIC , hacks KVM . . . Too
many t h i n g s change at once , and I f i n d i t very hard to b u i l d a mental
p i c t u r e of the changes j u s t by s t a r i n g at i t .
[ . . . ]
Thanks ,
M.
20 © 2019 Arm Limited
Timeline
2018-05-25: V4
26 patches
21 © 2019 Arm Limited
Timeline
2018-05-25: V4
26 patches
2018-08-28: V5, v4.19-rc1
Depends on separate API for NMIs series (4 patches)
21 © 2019 Arm Limited
Timeline
2018-05-25: V4
26 patches
2018-08-28: V5, v4.19-rc1
Depends on separate API for NMIs series (4 patches)
2019-01-31: V10
25 patches
21 © 2019 Arm Limited
Timeline
2018-05-25: V4
26 patches
2018-08-28: V5, v4.19-rc1
Depends on separate API for NMIs series (4 patches)
2019-01-31: V10
25 patches
2019-02-06: Merge of v10 + v6 of NMI API in 5.1
21 © 2019 Arm Limited
Timeline
22 © 2019 Arm Limited
Timeline
2019-03-29: Bug: System hangs when using Ftrace graph tracer
22 © 2019 Arm Limited
Timeline
2019-03-29: Bug: System hangs when using Ftrace graph tracer
2019-06-21: Fixed in 5.3 (V4 of 8 patches series)
22 © 2019 Arm Limited
Try it, buy it
Get Aarch64 capable pla orm with GICv3
Get Linux v5.3+ sources
Kernel Features → Support for NMI-like interrupts
(CONFIG_ARM64_PSEUDO_NMI)
Boot op on irqchip.gicv3_pseudo_nmi=1
arm_pmu patches using NMI (V4)
S ll needs an update
23 © 2019 Arm Limited
Next steps
Use NMI for more features on Arm64
Backtrace, CPU stop IPI: requires moving IPIs to use IRQ framework
Hard lockup detector: need some rework of arm_pmu driver
24 © 2019 Arm Limited
Next steps
Use NMI for more features on Arm64
Backtrace, CPU stop IPI: requires moving IPIs to use IRQ framework
Hard lockup detector: need some rework of arm_pmu driver
Look into using NMI API for SPARC NMIs
24 © 2019 Arm Limited
Next steps
Use NMI for more features on Arm64
Backtrace, CPU stop IPI: requires moving IPIs to use IRQ framework
Hard lockup detector: need some rework of arm_pmu driver
Look into using NMI API for SPARC NMIs
No plan for GICv2 support
Prior to GICv3, CPU interface is memory mapped
24 © 2019 Arm Limited
Next steps
Use NMI for more features on Arm64
Backtrace, CPU stop IPI: requires moving IPIs to use IRQ framework
Hard lockup detector: need some rework of arm_pmu driver
Look into using NMI API for SPARC NMIs
No plan for GICv2 support
Prior to GICv3, CPU interface is memory mapped
Slower accesses than for system register
24 © 2019 Arm Limited
Next steps
Use NMI for more features on Arm64
Backtrace, CPU stop IPI: requires moving IPIs to use IRQ framework
Hard lockup detector: need some rework of arm_pmu driver
Look into using NMI API for SPARC NMIs
No plan for GICv2 support
Prior to GICv3, CPU interface is memory mapped
Slower accesses than for system register
Need access to per-cpu base address from local_irq_*()
24 © 2019 Arm Limited
Next steps
Use NMI for more features on Arm64
Backtrace, CPU stop IPI: requires moving IPIs to use IRQ framework
Hard lockup detector: need some rework of arm_pmu driver
Look into using NMI API for SPARC NMIs
No plan for GICv2 support
Prior to GICv3, CPU interface is memory mapped
Slower accesses than for system register
Need access to per-cpu base address from local_irq_*()
Technically do-able, but not necessarily clean nor interes ng/usable
24 © 2019 Arm Limited
Thanks!
The Arm trademarks featured in this presenta on are registered trademarks or
trademarks of Arm Limited (or its subsidiaries) in the US and/or elsewhere. All rights
reserved. All other marks featured may be trademarks of their respec ve owners.
www.arm.com/company/policies/trademarks
© 2019 Arm Limited
Ques ons
26 © 2019 Arm Limited

More Related Content

What's hot

05.2 virtio introduction
05.2 virtio introduction05.2 virtio introduction
05.2 virtio introductionzenixls2
 
VLANs in the Linux Kernel
VLANs in the Linux KernelVLANs in the Linux Kernel
VLANs in the Linux KernelKernel TLV
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelSUSE Labs Taipei
 
Using eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in CiliumUsing eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in CiliumScyllaDB
 
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介VirtualTech Japan Inc.
 
Linux Memory Management
Linux Memory ManagementLinux Memory Management
Linux Memory ManagementNi Zo-Ma
 
Berkeley Packet Filters
Berkeley Packet FiltersBerkeley Packet Filters
Berkeley Packet FiltersKernel TLV
 
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedVmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedAdrian Huang
 
Cilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPThomas Graf
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and moreBrendan Gregg
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingViller Hsiao
 
netfilter and iptables
netfilter and iptablesnetfilter and iptables
netfilter and iptablesKernel TLV
 
Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021
Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021
Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021Valeriy Kravchuk
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダTakuya ASADA
 
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...Adrian Huang
 
Linux Kernel - Virtual File System
Linux Kernel - Virtual File SystemLinux Kernel - Virtual File System
Linux Kernel - Virtual File SystemAdrian Huang
 
Linux MMAP & Ioremap introduction
Linux MMAP & Ioremap introductionLinux MMAP & Ioremap introduction
Linux MMAP & Ioremap introductionGene Chang
 
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDPDockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDPThomas Graf
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsBrendan Gregg
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能Kohei Tokunaga
 

What's hot (20)

05.2 virtio introduction
05.2 virtio introduction05.2 virtio introduction
05.2 virtio introduction
 
VLANs in the Linux Kernel
VLANs in the Linux KernelVLANs in the Linux Kernel
VLANs in the Linux Kernel
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux Kernel
 
Using eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in CiliumUsing eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in Cilium
 
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
 
Linux Memory Management
Linux Memory ManagementLinux Memory Management
Linux Memory Management
 
Berkeley Packet Filters
Berkeley Packet FiltersBerkeley Packet Filters
Berkeley Packet Filters
 
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedVmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
 
Cilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDP
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and more
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracing
 
netfilter and iptables
netfilter and iptablesnetfilter and iptables
netfilter and iptables
 
Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021
Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021
Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダ
 
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
 
Linux Kernel - Virtual File System
Linux Kernel - Virtual File SystemLinux Kernel - Virtual File System
Linux Kernel - Virtual File System
 
Linux MMAP & Ioremap introduction
Linux MMAP & Ioremap introductionLinux MMAP & Ioremap introduction
Linux MMAP & Ioremap introduction
 
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDPDockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 

Similar to Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI

Introducing ARM-X
Introducing ARM-XIntroducing ARM-X
Introducing ARM-XSaumil Shah
 
Cisco Connect Toronto 2018 network-slicing
Cisco Connect Toronto 2018   network-slicingCisco Connect Toronto 2018   network-slicing
Cisco Connect Toronto 2018 network-slicingCisco Canada
 
Total control over your protection and licensing process
Total control over your protection and licensing processTotal control over your protection and licensing process
Total control over your protection and licensing processteam-WIBU
 
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」BitVisor
 
Ubuntu core on bubblegum 96
Ubuntu core on bubblegum 96Ubuntu core on bubblegum 96
Ubuntu core on bubblegum 96波 董
 
Ubuntu core on bubblegum 96
Ubuntu core on bubblegum 96Ubuntu core on bubblegum 96
Ubuntu core on bubblegum 96波 董
 
MIPI DevCon Taipei 2019: State of the Alliance
MIPI DevCon Taipei 2019: State of the AllianceMIPI DevCon Taipei 2019: State of the Alliance
MIPI DevCon Taipei 2019: State of the AllianceMIPI Alliance
 
The fastest way to protect your know-how
The fastest way to protect your know-howThe fastest way to protect your know-how
The fastest way to protect your know-howteam-WIBU
 
How to enable AMD IOMMU in coreboot?
How to enable AMD IOMMU in coreboot?How to enable AMD IOMMU in coreboot?
How to enable AMD IOMMU in coreboot?Piotr Król
 
Update Strategies for the Edge, by Kat Cosgrove
Update Strategies for the Edge, by Kat CosgroveUpdate Strategies for the Edge, by Kat Cosgrove
Update Strategies for the Edge, by Kat CosgroveCloud Native Day Tel Aviv
 
Brkaci 1002
Brkaci 1002Brkaci 1002
Brkaci 1002ccherel
 
swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices ...
swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices ...swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices ...
swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices ...Ivan Kravets
 
Основные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASA
Основные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASAОсновные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASA
Основные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASACisco Russia
 
Cisco connect montreal 2018 - Network Slicing: Horizontal Virtualization
Cisco connect montreal 2018 - Network Slicing: Horizontal VirtualizationCisco connect montreal 2018 - Network Slicing: Horizontal Virtualization
Cisco connect montreal 2018 - Network Slicing: Horizontal VirtualizationCisco Canada
 
The First SVE Enabled Arm Processor: A64FX and Building up Arm HPC Ecosystem
The First SVE Enabled Arm Processor: A64FX and Building up Arm HPC EcosystemThe First SVE Enabled Arm Processor: A64FX and Building up Arm HPC Ecosystem
The First SVE Enabled Arm Processor: A64FX and Building up Arm HPC EcosystemShinji Sumimoto
 
Easing the Path to Network Transformation - Network Transformation Experience...
Easing the Path to Network Transformation - Network Transformation Experience...Easing the Path to Network Transformation - Network Transformation Experience...
Easing the Path to Network Transformation - Network Transformation Experience...Liz Warner
 
Open mic on sametime 9 installs best practices, tips and tricks
Open mic on sametime 9 installs best practices, tips and tricksOpen mic on sametime 9 installs best practices, tips and tricks
Open mic on sametime 9 installs best practices, tips and tricksa8us
 

Similar to Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI (20)

Introducing ARM-X
Introducing ARM-XIntroducing ARM-X
Introducing ARM-X
 
vSZ Demo
vSZ DemovSZ Demo
vSZ Demo
 
Cisco Connect Toronto 2018 network-slicing
Cisco Connect Toronto 2018   network-slicingCisco Connect Toronto 2018   network-slicing
Cisco Connect Toronto 2018 network-slicing
 
Total control over your protection and licensing process
Total control over your protection and licensing processTotal control over your protection and licensing process
Total control over your protection and licensing process
 
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」
 
Ubuntu core on bubblegum 96
Ubuntu core on bubblegum 96Ubuntu core on bubblegum 96
Ubuntu core on bubblegum 96
 
Ubuntu core on bubblegum 96
Ubuntu core on bubblegum 96Ubuntu core on bubblegum 96
Ubuntu core on bubblegum 96
 
MIPI DevCon Taipei 2019: State of the Alliance
MIPI DevCon Taipei 2019: State of the AllianceMIPI DevCon Taipei 2019: State of the Alliance
MIPI DevCon Taipei 2019: State of the Alliance
 
The fastest way to protect your know-how
The fastest way to protect your know-howThe fastest way to protect your know-how
The fastest way to protect your know-how
 
Free OpUtils Training presentation
Free OpUtils Training presentationFree OpUtils Training presentation
Free OpUtils Training presentation
 
How to enable AMD IOMMU in coreboot?
How to enable AMD IOMMU in coreboot?How to enable AMD IOMMU in coreboot?
How to enable AMD IOMMU in coreboot?
 
Update Strategies for the Edge, by Kat Cosgrove
Update Strategies for the Edge, by Kat CosgroveUpdate Strategies for the Edge, by Kat Cosgrove
Update Strategies for the Edge, by Kat Cosgrove
 
Brkaci 1002
Brkaci 1002Brkaci 1002
Brkaci 1002
 
swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices ...
swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices ...swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices ...
swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices ...
 
Основные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASA
Основные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASAОсновные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASA
Основные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASA
 
Cisco connect montreal 2018 - Network Slicing: Horizontal Virtualization
Cisco connect montreal 2018 - Network Slicing: Horizontal VirtualizationCisco connect montreal 2018 - Network Slicing: Horizontal Virtualization
Cisco connect montreal 2018 - Network Slicing: Horizontal Virtualization
 
The First SVE Enabled Arm Processor: A64FX and Building up Arm HPC Ecosystem
The First SVE Enabled Arm Processor: A64FX and Building up Arm HPC EcosystemThe First SVE Enabled Arm Processor: A64FX and Building up Arm HPC Ecosystem
The First SVE Enabled Arm Processor: A64FX and Building up Arm HPC Ecosystem
 
Easing the Path to Network Transformation - Network Transformation Experience...
Easing the Path to Network Transformation - Network Transformation Experience...Easing the Path to Network Transformation - Network Transformation Experience...
Easing the Path to Network Transformation - Network Transformation Experience...
 
F5 Automation Toolchain
F5 Automation ToolchainF5 Automation Toolchain
F5 Automation Toolchain
 
Open mic on sametime 9 installs best practices, tips and tricks
Open mic on sametime 9 installs best practices, tips and tricksOpen mic on sametime 9 installs best practices, tips and tricks
Open mic on sametime 9 installs best practices, tips and tricks
 

More from Anne Nicolas

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstAnne Nicolas
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelAnne Nicolas
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyAnne Nicolas
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureAnne Nicolas
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Anne Nicolas
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataAnne Nicolas
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Anne Nicolas
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxAnne Nicolas
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialAnne Nicolas
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconAnne Nicolas
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureAnne Nicolas
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayAnne Nicolas
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerAnne Nicolas
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationAnne Nicolas
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingAnne Nicolas
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaAnne Nicolas
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPAnne Nicolas
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Anne Nicolas
 
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyKernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyAnne Nicolas
 
Kernel Recipes 2019 - CVEs are dead, long live the CVE!
Kernel Recipes 2019 - CVEs are dead, long live the CVE!Kernel Recipes 2019 - CVEs are dead, long live the CVE!
Kernel Recipes 2019 - CVEs are dead, long live the CVE!Anne Nicolas
 

More from Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyKernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easy
 
Kernel Recipes 2019 - CVEs are dead, long live the CVE!
Kernel Recipes 2019 - CVEs are dead, long live the CVE!Kernel Recipes 2019 - CVEs are dead, long live the CVE!
Kernel Recipes 2019 - CVEs are dead, long live the CVE!
 

Recently uploaded

Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 

Recently uploaded (20)

Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 

Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI

  • 1. ex-Arm Ltd., Kernel Team No NMI? No Problem! - Implemen ng Arm64 Pseudo-NMI Julien Thierry <jthierry@redhat.com> September 24, 2019 © 2019 Arm Limited
  • 2. About Myself & the talk Joined Arm in June 2017 Linux Kernel team Cambridge, UK First kernel related job Le in August 2019 Work presented here done while employed by Arm 2 © 2019 Arm Limited
  • 3. What are IRQs? Manifesta on of event in the system: device or program triggered Interrupts ac ve flow of execu on Managed with some primi ves: local_irq_disable/enable() local_irq_save/restore() 3 © 2019 Arm Limited
  • 4. What are NMIs? Non-Maskable Interrupt Interrupts that can happen while interrupts are disabled Generally cannot be disabled locally Used for repor ng hardware status, mer expira on, profiling, ... x86: Dedicated excep on entry for NMIs SPARC: Interrupts with highest possible priority 4 © 2019 Arm Limited
  • 5. NMI Handlers Dedicated context: nmi_enter() nmi_exit() Inform system wide features (e.g. printk, race, rcu, ...) Restric ons: No NMI nes ng No preemp on Keeps NMI handlers simpler 5 © 2019 Arm Limited
  • 6. NMI Handlers and Locks void inc_counter ( void ) { unsigned long f l a g s ; f l a g s = r a w _ s p i n _ l o c k _ i r q s a v e (& count_lock ) ; gl o b a l _c o un t e r += 1; r a w _ s p i n _ u n l o c k _ i r q r e s t o r e (& count_lock , f l a g s ) ; } 6 © 2019 Arm Limited
  • 7. NMI Handlers and Locks void inc_counter ( void ) { unsigned long f l a g s ; f l a g s = r a w _ s p i n _ l o c k _ i r q s a v e (& count_lock ) ; gl o b a l _c o un t e r += 1; r a w _ s p i n _ u n l o c k _ i r q r e s t o r e (& count_lock , f l a g s ) ; } Lock cannot protect against NMI Can protect from concurrency (SMP) → mutex 6 © 2019 Arm Limited
  • 8. The Perf Case Demo 7 © 2019 Arm Limited
  • 9. The Perf Case Perf event handler + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | | | | IRQ | | | | | | - - -| - - - - - - - - - - - - - - - - - - - - - - -| - - - - - - - - - - - - - - -| irq_disable() perf event irq_enable() (in random location) 8 © 2019 Arm Limited
  • 10. Pseudo-NMI for Arm64 No architected NMI 9 © 2019 Arm Limited
  • 11. Pseudo-NMI for Arm64 No architected NMI But has IRQ priori es and priority masking Emulate NMI’s behaviour using an IRQ Dis nguish NMI from normal IRQ: two dis nct priori es Block IRQs while allowing NMIs: mask priority of normal IRQs 9 © 2019 Arm Limited
  • 12. Arm64 CPU Interrupt Control +---------------+ | | | CPU | | | | +--------+ | | | PSTATE | | IRQ | | | | - - - - - - - - - - - - - - - >| I | | | | | | | | | | | | | | | +--------+ | | | | | +---------------+ 10 © 2019 Arm Limited
  • 13. Arm64 CPU Interrupt Control PSTATE.I bit Toggled by local_irq_enable/disable() Prevents CPU to jump to interrupt vector Single bit → only binary state 11 © 2019 Arm Limited
  • 14. Arm64 CPU Interrupt Control +---------------+ | | | CPU | | | | +--------+ | | | PSTATE | | IRQ | | | | - - - - - - - - - - - - - - - >| I | | | | | | | | | | - - - - - - - - - - - - - - - >| F | | FIQ | +--------+ | | | | | +---------------+ 12 © 2019 Arm Limited
  • 15. More control with the GIC +---------------+ | | | | +-----------------+ +---------------+ | | | | | | | | | GIC CPU | | CPU | | | | Interface | | | | | | | | +--------+ | | Generic | | +--------+ | | | PSTATE | | | | | | | | IRQ | | | | | Interrupt | - - - - - - - - - - - - - - - - - - - - - - >| | - - -| - - - - - - - - - - - - - - - - - - - - - - >| I | | | | | | PMR | | | | | | | Controller | | | | | | | | | | | | | | | | | | | | | | | | | | +--------+ | | | | +--------+ | | | | | | | | | | | +-----------------+ +---------------+ | | | | | | | | +---------------+ 13 © 2019 Arm Limited
  • 16. More control with the GIC +---------------+ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+ | | | | | | | +-----------------+ +---------------+ | | | | | | | | | | | | | GIC CPU | | CPU | | | | | | Interface | | | | | | | | | | +--------+ | | | Generic | | | +--------+ | | | PSTATE | | | | | | | | | | IRQ | | | | | | Interrupt | - - - - - - - - - - - - - - - - - - - - - - >| | - - -| - - - - - - - - - - - - - - - - - - - - - - >| I | | | | | | | | PMR | | | | | | | | Controller | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +--------+ | | | | | | +--------+ | | | | | | | | | | | | | | | +-----------------+ +---------------+ | | | | | | | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+ | | Per CPU | | +---------------+ 14 © 2019 Arm Limited
  • 17. Fi ng priori es in linux Stop touching PSTATE.I bit Mask IRQs using PMR in local_irq_*() Configure NMIs with high enough priority in GIC 15 © 2019 Arm Limited
  • 18. Fi ng priori es in linux Stop touching PSTATE.I bit Mask IRQs using PMR in local_irq_*() Configure NMIs with high enough priority in GIC But: Upon IRQ, interrupts are automa cally disabled (PSTATE.I) Some contexts (idle, KVM guests, ...) cannot use PMR for IRQ disabling Need to take care to have consistent state when reaching generic code 15 © 2019 Arm Limited
  • 19. Using the NMI Requester needs to set up target IRQ priority through irqchip Ini al proposal: introduce new NMI state in enum irqchip_irq_state 16 © 2019 Arm Limited
  • 20. Using the NMI Requester needs to set up target IRQ priority through irqchip Ini al proposal: introduce new NMI state in enum irqchip_irq_state Not so popular: Adding NMI d e l i v e r y support at low l e v e l a r c h i t e c t u r e i r q chip l e v e l i s p e r f e c t l y fine , but the exposure of that needs to be r e s t r i c t e d very much . Adding i t to the g e n e r i c i n t e r r u p t c o n t r o l i n t e r f a c e s i s not going to happen . That ’ s doomed to begin with and a complete abuse of the i n t e r f a c e as the handler can not ever be used f o r that . Thanks , t g l x 16 © 2019 Arm Limited
  • 21. NMI API include/linux/interrupt.h Provide NMI API similar to the IRQ one: request_nmi() / free_nmi() enable_nmi() / disable_nmi() irq_chip changes Flag to adver se NMI support chip->irq_nmi_setup() / chip->irq_nmi_teardown() Not exported to modules (Per-cpu NMI variants available) 17 © 2019 Arm Limited
  • 22. Results on Perf Demo 18 © 2019 Arm Limited
  • 23. Timeline Work ini ated as by Daniel Thompson from Linaro: 19 © 2019 Arm Limited
  • 24. Timeline Work ini ated as by Daniel Thompson from Linaro: 2015-03-18: RFC: Pseudo-NMI for arm64 using ICC_PMR_EL1 (GICv3) 2016-08-19: RFC v3, v4.8-rc2 7 patches Uses PMR for IRQ enabling/disabling Hardcoded NMI priority for backtrace IPI ”The code works-for-me (tm) and is more ”real” than the last me I shared these patches.” 19 © 2019 Arm Limited
  • 25. Timeline Work ini ated as by Daniel Thompson from Linaro: 2015-03-18: RFC: Pseudo-NMI for arm64 using ICC_PMR_EL1 (GICv3) 2016-08-19: RFC v3, v4.8-rc2 7 patches Uses PMR for IRQ enabling/disabling Hardcoded NMI priority for backtrace IPI ”The code works-for-me (tm) and is more ”real” than the last me I shared these patches.” 2017-07 or 2017-08: I start working on it 19 © 2019 Arm Limited
  • 26. Timeline Work ini ated as by Daniel Thompson from Linaro: 2015-03-18: RFC: Pseudo-NMI for arm64 using ICC_PMR_EL1 (GICv3) 2016-08-19: RFC v3, v4.8-rc2 7 patches Uses PMR for IRQ enabling/disabling Hardcoded NMI priority for backtrace IPI ”The code works-for-me (tm) and is more ”real” than the last me I shared these patches.” 2017-07 or 2017-08: I start working on it 2017-10-11: RFC: arm64: provide pseudo NMI with GICv3, v4.15-rc2 7 patches Tes ng with perf interrupt dropped backtrace IPI 19 © 2019 Arm Limited
  • 27. Timeline 2018-05-21: V3, v4.17-rc6 6 patches 20 © 2019 Arm Limited
  • 28. Timeline 2018-05-21: V3, v4.17-rc6 6 patches Review As i t is , t h i s patch i s almost i mp oss ib le to review . I t turns the i n t e r r u p t masking upside down , messes with the GIC , hacks KVM . . . Too many t h i n g s change at once , and I f i n d i t very hard to b u i l d a mental p i c t u r e of the changes j u s t by s t a r i n g at i t . [ . . . ] Thanks , M. 20 © 2019 Arm Limited
  • 30. Timeline 2018-05-25: V4 26 patches 2018-08-28: V5, v4.19-rc1 Depends on separate API for NMIs series (4 patches) 21 © 2019 Arm Limited
  • 31. Timeline 2018-05-25: V4 26 patches 2018-08-28: V5, v4.19-rc1 Depends on separate API for NMIs series (4 patches) 2019-01-31: V10 25 patches 21 © 2019 Arm Limited
  • 32. Timeline 2018-05-25: V4 26 patches 2018-08-28: V5, v4.19-rc1 Depends on separate API for NMIs series (4 patches) 2019-01-31: V10 25 patches 2019-02-06: Merge of v10 + v6 of NMI API in 5.1 21 © 2019 Arm Limited
  • 33. Timeline 22 © 2019 Arm Limited
  • 34. Timeline 2019-03-29: Bug: System hangs when using Ftrace graph tracer 22 © 2019 Arm Limited
  • 35. Timeline 2019-03-29: Bug: System hangs when using Ftrace graph tracer 2019-06-21: Fixed in 5.3 (V4 of 8 patches series) 22 © 2019 Arm Limited
  • 36. Try it, buy it Get Aarch64 capable pla orm with GICv3 Get Linux v5.3+ sources Kernel Features → Support for NMI-like interrupts (CONFIG_ARM64_PSEUDO_NMI) Boot op on irqchip.gicv3_pseudo_nmi=1 arm_pmu patches using NMI (V4) S ll needs an update 23 © 2019 Arm Limited
  • 37. Next steps Use NMI for more features on Arm64 Backtrace, CPU stop IPI: requires moving IPIs to use IRQ framework Hard lockup detector: need some rework of arm_pmu driver 24 © 2019 Arm Limited
  • 38. Next steps Use NMI for more features on Arm64 Backtrace, CPU stop IPI: requires moving IPIs to use IRQ framework Hard lockup detector: need some rework of arm_pmu driver Look into using NMI API for SPARC NMIs 24 © 2019 Arm Limited
  • 39. Next steps Use NMI for more features on Arm64 Backtrace, CPU stop IPI: requires moving IPIs to use IRQ framework Hard lockup detector: need some rework of arm_pmu driver Look into using NMI API for SPARC NMIs No plan for GICv2 support Prior to GICv3, CPU interface is memory mapped 24 © 2019 Arm Limited
  • 40. Next steps Use NMI for more features on Arm64 Backtrace, CPU stop IPI: requires moving IPIs to use IRQ framework Hard lockup detector: need some rework of arm_pmu driver Look into using NMI API for SPARC NMIs No plan for GICv2 support Prior to GICv3, CPU interface is memory mapped Slower accesses than for system register 24 © 2019 Arm Limited
  • 41. Next steps Use NMI for more features on Arm64 Backtrace, CPU stop IPI: requires moving IPIs to use IRQ framework Hard lockup detector: need some rework of arm_pmu driver Look into using NMI API for SPARC NMIs No plan for GICv2 support Prior to GICv3, CPU interface is memory mapped Slower accesses than for system register Need access to per-cpu base address from local_irq_*() 24 © 2019 Arm Limited
  • 42. Next steps Use NMI for more features on Arm64 Backtrace, CPU stop IPI: requires moving IPIs to use IRQ framework Hard lockup detector: need some rework of arm_pmu driver Look into using NMI API for SPARC NMIs No plan for GICv2 support Prior to GICv3, CPU interface is memory mapped Slower accesses than for system register Need access to per-cpu base address from local_irq_*() Technically do-able, but not necessarily clean nor interes ng/usable 24 © 2019 Arm Limited
  • 43. Thanks! The Arm trademarks featured in this presenta on are registered trademarks or trademarks of Arm Limited (or its subsidiaries) in the US and/or elsewhere. All rights reserved. All other marks featured may be trademarks of their respec ve owners. www.arm.com/company/policies/trademarks © 2019 Arm Limited
  • 44. Ques ons 26 © 2019 Arm Limited