The Linux 3.0 Kernel Will... Reboot Better?

Posted by Michael Larabel on May 31, 2011

Beyond file-system cleancache support, a Microsoft Kinect driver, Intel Ivy Bridge support, and various open-source graphics driver improvements, the Linux 3.0 kernel may also reboot your system better. Yes, really.

Matthew Garrett of Red Hat today is blogging about the different ways to reset an x86 system and the limitations of these five different methods available on Linux. These methods include using kbd (rebooting via the keyboard controller), triple (generating a triple fault), PCI, EFI, and ACPI.

Matthew recently began exploring how Microsoft Windows handles the reboot process. "A while back I did some tests with Windows running on top of qemu. This is a great way to evaluate OS behaviour, because you've got complete control of what's handed to the OS and what the OS tries to do to the hardware. And what I discovered was a little surprising. In the absence of an ACPI reboot vector, Windows will hit the keyboard controller, wait a while, hit it again and then give up. If an ACPI reboot vector is present, windows will poke it, try the keyboard controller, poke the ACPI vector again and try the keyboard controller one more time."

Knowing this ended up being very useful. "This turns out to be important. The first thing it means is that it generates two writes to the ACPI reboot vector. The second is that it leaves a gap between them while it's fiddling with the keyboard controller. And, shockingly, it turns out that on most systems the ACPI reboot vector points at 0xcf9 in system IO space. Even though most implementations nominally require two different values be written, it seems that this isn't a strict requirement and the ACPI method works."

Now knowing this, Matthew adapted this reboot method to the Linux kernel and it's been integrated into the 3.0 kernel. Not only is it in this next kernel release, but it will be the default behavior. This blog post by Matthew has all of the details and he notes that this should fix the Linux reboot support for various Apple computers and ThinkPads, in particular.

The Linux 3.0 kernel may also solve the Linux kernel power regressions.

Discuss this article in our forums, IRC channel, or email the author. You can also follow our content via RSS and on social networks like Facebook, Identi.ca, and Twitter (@Phoronix and @MichaelLarabel). Subscribe to Phoronix Premium to view our content without advertisements, view entire articles on a single page, and experience other benefits.
Latest Hardware Reviews
  1. Sumo Lounge Emperor
  2. Gallium3D Continues Improving OpenGL For Older Radeon GPUs
  3. 15-Way Open vs. Closed Source NVIDIA/AMD Linux GPU Comparison
  4. Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
Latest Software Articles
  1. The Cost Of Ubuntu Disk Encryption
  2. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
  3. AMD Radeon R600 GPU LLVM 3.3 Back-End Testing
  4. F2FS File-System Shows Regressions On Linux 3.10
Latest Linux News
  1. QEMU 1.5 Supports VGA Passthrough, Better USB 3.0
  2. Handbrake 0.9.9 Supports OpenCL Offloading
  3. Freedreno Gallium3D Now Banging The Adreno A3XX
  4. Jolla Announces Their First Phone
  5. Mageia 3 Released, Still Using Legacy GRUB
  6. NetBSD 6.1 Brings In More Features
  7. Using Six Monitors With AMD's Open-Source Linux Driver
  8. Benchmarking The Intel P-State, CPUfreq Changes
  9. FreeBSD Still Working On Next-Gen Package Manager
  10. DNF Still Advancing As Experimental Yum For Fedora
  11. Logitech Begins Supporting Linux Users
Latest Forum Talk
  1. Modern Intel Gallium3D Driver Still Being Toyed...
  2. QEMU 1.5 Supports VGA Passthrough, Better USB 3.0
  3. OpenSUSE Considers Replacing LXDE With E17
  4. The Cost Of Ubuntu Disk Encryption
  5. DRM Moves Ahead With HTML5 Specification
  6. Handbrake 0.9.9 Supports OpenCL Offloading
  1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Motherboards
  5. Peripherals
  6. Processors
  7. Software
  8. Operating Systems
  9. All Articles
  1. Linux Benchmarking
  2. OpenBenchmarking.org
  3. Phoronix Test Suite