Open Programmable Interrupt Controller

From OSDev.wiki
Jump to navigation Jump to search

The Open Programmable Interrupt Controller (OPIC) is an interrupt controller with 8-16 inputs, much similar to the PIC, that provides a method for PCI devices to trigger interrupts.

Limited information on the OPIC can be found on the indexed Internet.

History

The OPIC, also known as the OpenPIC, was an SMP controller, similar to the modern APIC, supporting up to 32 processors. It also has 8-16 interrupt input lines allowing for PCI devices to trigger interrupts to the CPU.

It was designed jointly by AMD/Cyrix. AMD released an OpenPIC specification on their website about 20 years ago but it has since been taken down and cannot be found on web archives.

It remains to be an elusive controller, and the only reference to the documentation in source code is in the linux/include/linux/openpic.h header. A snippet of that header cannot be shared due to licensing issues.

Wayback Machine archives of this specification redirect to a 404 Not Found page on AMD's website.

Many different computer encyclopedias/dictionaries offer this same definition:

(OPEN Programmable Interrupt Controller) An SMP chip architecture endorsed by AMD and Cyrix Corporation that provides symmetric multiprocessing (SMP) for x86 and PowerPC systems. It can support up to 32 processors. See APIC.

A patent for "Method for PCI IO using PCI device memory mapping in a logically partitioned system" namedrops the OPIC:

The Intel Open Programmable Interrupt Controller is an example of an interrupt controller that is in wide use in PC, Workstation, and PC server class computers and that commonly provides 8 or 16 such interrupt inputs for receiving interrupts from PCI devices.

This definition contradicts the other definitions that do not associate the OPIC with Intel, but rather AMD/Cyrix.

Information

Official documentation on the OPIC has been completely purged from the internet. An email to openpic@amd.com for further information returned a delivery error.

The author of this page is currently ongoing further investigation into the OPIC specifications.

Implementations

The OPIC was supposed to be implemented in some IBM systems, however when the OPIC was scrapped IBM went with the MPIC.

The Linux kernel has implemented a driver for the OPIC, and is most likely your most solid source of information on the OPIC.