Pentium F00F bug

from Wikipedia, the free encyclopedia
Intel Pentium 66 MHz

A bug in microprocessors of the types Intel Pentium , Pentium MMX , Pentium OverDrive (all processors of the P5 series, except the Quark CPU ) is referred to as F00F bug or F0 bug for short . The name refers to the hexadecimal representation of the assembler command that triggered the error. The official designation by Intel is invalid operand with locked CMPXCHG8B instruction (German: "Invalid operand with locked CMPXCHG8B instruction").

description

The instruction giving the name (hexadecimal: 0xF00FC7C8 ... 0xF00FC7CF) is (in Intel syntax) "LOCK CMPXCHG8B r32" (whereby the operand must be a register ). The command “cmpxchg8b” compares the content of the registers EDX and EAX with an 8-byte value in the memory. In this example, a 4-byte register is specified as the destination, which is not sufficient to store the 8-byte result value.

Usually this problem leads to an exception ; but if the command is called with the prefix “lock” (which is actually intended to implement mutual exclusion ), the exception handler is not called, the system no longer processes any interrupts and must be restarted.

The command does not require any special rights and was considered critical at the time because of the widespread use of Intel processors. Although it did not cause permanent damage, under certain circumstances it could cause data loss. Operating system manufacturers therefore built workarounds into their products that prevented the error from occurring.

If there is /proc/cpuinfoan entry of this type on a Linux system f00f_bug: yes, the CPU is affected by this error.

Individual evidence

  1. https://lkml.org/lkml/2014/10/28/903
  2. ^ Invalid Instruction Erratum Overview

Web links