skip to main content
10.1145/3144555.3144557acmconferencesArticle/Chapter ViewAbstractPublication PagessospConference Proceedingsconference-collections
research-article

Towards Correct-by-Construction Interrupt Routing on Real Hardware

Published: 28 October 2017 Publication History

Abstract

In this paper we address the problem of correctly configuring interrupts. The interrupt subsystem of a computer is increasingly complex: a zoo of different controllers with varying constraints and capabilities form a network with limited connectivity. An OS which aspires to provable correctness must manage a limited set of interrupt vectors, delegate interrupts to device drivers and configure the controllers correctly. No well-specified approach exists.
As a foundation for applying language-level techniques like program sketching and synthesis to this problem, we present a formal model for interrupt routing which can capture all the system topologies and interrupt controllers we have encountered in the wild, show applications of such a model not possible with informal, ad-hoc approaches like DeviceTrees, and finally discuss an implementation based on the model which forms the new interrupt subsystem of the Barrelfish OS.

References

[1]
Reto Achermann, Lukas Humbel, David Cock, and Timothy Roscoe. 2017. Formalizing Memory Accesses and Interrupts. In 2nd Workshop on Models for Formal Analysis of Real Systems (MARS 2017). Electronic Proceedings in Theoretical Computer Science, Uppsala, Sweden, 66--117. https://doi.org/10.4204/EPTCS.244.4
[2]
ARM Ltd. 2011. CoreLink GIC-400 Generic Interrupt Controller - Technical Reference Manual (revision r0p0 ed.). ARM.
[3]
ARM Ltd. 2016. ARM Generic Interrupt Controller - Architecture version 2.0 (issue b ed.). ARM.
[4]
ARM Ltd. 2016. ARM Generic Interrupt Controller Architecture Specification - GIC architecture version 3.0 and version 4.0 (issue c ed.). ARM.
[5]
Barrelfish team. 2017. The Barrelfish Research Operating System. (August 2017). www.barrelfish.org.
[6]
Andrew Baumann, Paul Barham, Pierre-Evariste Dagand, Tim Harris, Rebecca Isaacs, Simon Peter, Timothy Roscoe, Adrian Schüpbach, and Akhilesh Singhania. 2009. The Multikernel: A New OS Architecture for Scalable Multicore Systems. In Proceedings of the ACM SIGOPS 22Nd Symposium on Operating Systems Principles (SOSP '09). ACM, Big Sky, Montana, USA, 29--44. https://doi.org/10.1145/1629575.1629579
[7]
Hao Chen, Xiongnan (Newman) Wu, Zhong Shao, Joshua Lockerman, and Ronghui Gu. 2016. Toward Compositional Verification of Interruptible OS Kernels and Device Drivers. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '16). ACM, Santa Barbara, CA, USA, 431--447. https://doi.org/10.1145/2908080.2908101
[8]
Devicetree.org. 2016. Devicetree Specification (release 0.1 ed.). Linaro, Ltd. http://www.devicetree.org/specifications-pdf.
[9]
Intel Corporation. 1988. 8259A - Programmable Interrupt Controller. Intel Corporation. Order Number: 231468-003.
[10]
Intel Corporation. 1996. 82093AA I/O Advanced Programmable Interrupt Controller (IOAPIC). Intel Corporation. Order Number: 290566-001.
[11]
Intel Corporation. 1997. MultiProcessor Specification (revision 006 ed.). Intel Corporation.
[12]
Intel Corporation. 2014. Intel 64 Architecture x2APIC Specification. Intel Corporation. Reference Number: 318148-004.
[13]
Intel Corporation. 2016. Intel 64 and IA-32 Architectures Software Developer's Manual (volume 3, systems programming guide ed.). Intel Corporation.
[14]
Intel Corporation. 2016. Intel Virtualization Technology for Directed I/O - Architecture Specification (revision 2.4 ed.). Intel Corporation.
[15]
Grant Likely, Linus Walleij, Jiang Liu, Jianyu Zhan, Marc Zyngier, Kevin Cernekee, Xishi Qiu, and Mark Brown. 2016. irq_domain interrupt number mapping library. The Linux Foundation. https://www.kernel.org/doc/Documentation/IRQ-domain.txt.
[16]
Larry Paulson, Tobias Nipkow, and Makarius Wenzel. 2017. Isabelle / HOL Proof Assistant. (August 2017). http://isabelle.in.tum.de.
[17]
PCI Special Interest Group. 2004. PCI Local Bus Specification Revision 3.0 (revision 2.3 ed.). PCI Special Interest Group.
[18]
Thierry Reding, Rob Herring, Grant Likely, and Bjorn Helgaas. 2014. Specifying interrupt information for devices. Kernel.org. https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt.
[19]
Mark Rutland. 2013. Device Tree - The Disaster So Far. Online. (2013). ELC Europe. http://elinux.org/images/8/8e/Rutland-presentation_3.pdf.
[20]
Adrian Schüpbach, Andrew Baumann, Timothy Roscoe, and Simon Peter. 2011. A Declarative Language Approach to Device Configuration. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI). ACM, Newport Beach, California, USA, 119--132. https://doi.org/10.1145/1950365.1950382
[21]
Daniel Schwyn. 2017. Hardware Configuration with Dynamically-Queried Formal Models. Master's thesis. Systems Group, ETH Zurich.
[22]
Timothy Roscoe. 2013. Barrelfish Technical Note 2 -Mackerel User Guide (version 1.5 ed.). Barrelfish Project.
[23]
UEFI Forum. 2017. Advanced Configuration and Power Interface Specification (version 6.2 ed.). UEFI Forum.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLOS '17: Proceedings of the 9th Workshop on Programming Languages and Operating Systems
October 2017
62 pages
ISBN:9781450351539
DOI:10.1145/3144555
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 28 October 2017

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Eclipse/CLP
  2. Hardware abstraction
  3. Hardware configuration
  4. Interrupt routing

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Conference

SOSP '17
Sponsor:

Acceptance Rates

Overall Acceptance Rate 17 of 32 submissions, 53%

Upcoming Conference

SOSP '25
ACM SIGOPS 31st Symposium on Operating Systems Principles
October 13 - 16, 2025
Seoul , Republic of Korea

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 165
    Total Downloads
  • Downloads (Last 12 months)4
  • Downloads (Last 6 weeks)0
Reflects downloads up to 15 Feb 2025

Other Metrics

Citations

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media