may still combine legacy interrupts internally), and interrupt changes no longer inherently suffer from race conditions. PCI Express permits devices to use these legacy interrupt messages, retaining software compatibility with PCI drivers, but they are required to also support MSI or MSI-X in the PCI layer. x86 systems On Intel systems, the LAPIC must be enabled for the PCI (and PCI Express) MSI/MSI-X to work, even on uniprocessor (single core) systems. In these systems, MSIs are handled by writing the interrupt vector directly into the LAPIC of the processor/core that needs to service the interrupt. The Intel LAPICs of 2009 supported up to 224 MSI-based interrupts. According to a 2009 Intel benchmark using Linux, using MSI reduced the latency of interrupts by a factor of almost three when compared to I/O APIC delivery. Operating system support In the Microsoft family of operating systems, Windows Vista and later versions have support for both MSI and MSI-X. Support was added in the Longhorn development cycle around 2004. MSI is not supported in earlier versions like Windows XP or Windows Server 2003. Solaris Express 6/05 released in 2005 added support for MSI an MSI-X as part of their new device driver interface (DDI) interrupt framework. FreeBSD 6.3 and 7.0 released in 2008 added support for MSI and MSI-X. OpenBSD 5.0 released in 2011 added support for MSI. 6.0 added support for MSI-X. Linux gained support for MSI and MSI-X around 2003. Linux kernel versions before 2.6.20 are known to have serious bugs and limitations in their implementation of MSI/MSI-X. Haiku gained support for MSI around 2010. MSI-X support was added later, in 2013. NetBSD 8.0 released in 2018 added support for MSI and MSI-X. VxWorks 7 supports MSI and MSI-X See also Interrupt handler Interrupt request (PC architecture) References External links Introduction to Message-Signalled Interrupts - MSDN Linux MSI HOWTO Digital electronics Interrupts Peripheral Component Interconnect