Linux Ignores C-State Settings in Unified Extensible Firmware Interface (UEFI) - IBM Servers



Source

RETAIN tip: H207000

Symptom

Recent Linux kernels may have a built-in driver ('intel_idle') which will ignore any C-State limits imposed by Basic Input/Output System (BIOS)/Unified Extensible Firmware Interface (UEFI).

This driver was added to take advantage of the power savings given by C-States on newer Intel Central Processing Units (CPUs).

On systems where latency is an issue, this driver may cause issues by enabling C-States even though they are disabled in the BIOS or UEFI. This can cause minor latency (a few microseconds) as the CPUs transition out of a C-State and into a running state.

Affected configurations

The system may be any of the following IBM servers:

  • System x3100 M4, type 2582, any model
  • System x3200 M2, type 4367, any model
  • System x3200 M2, type 4368, any model
  • System x3200 M2, type 9233, any model
  • System x3200 M3, type 7327, any model
  • System x3200 M3, type 7328, any model
  • System x3250 M2, type 4190, any model
  • System x3250 M2, type 4191, any model
  • System x3250 M2, type 4194, any model
  • System x3250 M3, type 4251, any model
  • System x3250 M3, type 4252, any model
  • System x3250 M3, type 4261, any model
  • System x3250 M4, type 2583, any model
  • System x3300 M4, type 7382, any model
  • System x3400 M2, type 7836, any model
  • System x3400 M2, type 7837, any model
  • System x3400 M3, type 7378, any model
  • System x3400 M3, type 7379, any model
  • System x3500 M2, type 7839, any model
  • System x3500 M3, type 7380, any model
  • System x3500 M4, type 7383, any model
  • System x3530 M4, type 7160, any model
  • System x3550 M2, type 4198, any model
  • System x3550 M2, type 7946, any model
  • System x3550 M3, type 4254, any model
  • System x3550 M3, type 7944, any model
  • System x3550 M4, type 5459, any model
  • System x3550 M4, type 7914, any model
  • System x3620 M3, type 7376, any model
  • System x3630 M3, type 7377, any model
  • System x3630 M4, type 7158, any model
  • System x3650 M2, type 4199, any model
  • System x3650 M2, type 7947, any model
  • System x3650 M3, type 4255, any model
  • System x3650 M3, type 5454, any model
  • System x3650 M3, type 7945, any model
  • System x3650 M4, type 7915, any model
  • System x3690 X5, type 7147, any model
  • System x3690 X5, type 7148, any model
  • System x3690 X5, type 7149, any model
  • System x3690 X5, type 7192, any model
  • System x3750 M4, type 8722, any model
  • System x3750 M4, type 8733, any model
  • System x3850 X5, type 7143, any model
  • System x3850 X5, type 7145, any model
  • System x3850 X5, type 7146, any model
  • System x3850 X5, type 7191, any model
  • System x3950 X5, type 7143, any model
  • System x3950 X5, type 7145, any model

The system is configured with at least one of the following:

  • Red Hat Enterprise Linux 6 update 1, update 2, update 3
  • SUSE Linux Enterprise Server 11 Service Pack 1, Service Pack 2, Service Pack 2 x86_64

This tip is not option specific.

Note: This does not imply that the network operating system will work under all combinations of hardware and software.

Please see the compatibility page for more information: http://www.ibm.com/systems/info/x86servers/serverproven/compat/us/

Workaround

To determine if your kernel has the 'intel_idle' driver included, check for the following directory:

  /sys/module/intel_idle

If it exists, then your kernel includes the kernel driver and will ignore the BIOS or UEFI settings for C-States.

To prevent the 'intel_idle' driver from ignoring BIOS or UEFI settings for C-States, add the following start parameter to the kernel's bootloader configuration file:

  intel_idle.max_cstate=0

To allow the 'intel_idle' driver to ignore the BIOS or UEFI settings, and set a set maximum C-State value, add the following start parameter to the kernel's bootloader configuration file:

  intel_idle.max_cstate=x

(where: x is a non-zero C-State value the user wishes to allow.)

Additional information

Since the 'intel_idle' driver is built into the kernel, users cannot simply remove it without rebuilding the kernel from source.

Adding the start parameter 'intel_idle.max_cstate=0' prevents the driver from loading.

Adding the start parameter 'intel_idle.max_cstate=x' allows the driver to be loaded and tells the driver to limit C-State usage to a set maximum C-State value.

Applicable countries and regions

 


Document id:  MIGR-5091901
Last modified:  2013-06-19
Copyright © 2014 IBM Corporation