Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Forcefully enable Direct Cache Access (DCA) for systems with I/OAT that don't have a BIOS toggle.
C
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

README

dca_force by   Joe Damato   http://timetobleed.com
==================================================

W A R N I N G:

  This code can be dangerous if you dont know what you are doing. Test this 
  on a server with a similar configuration to your production server before
  deploying.

  THIS CODE IS INTENDED TO BE USED BY EXPERTS WHO UNDERSTAND WHAT IT DOES.

  EXERCISE EXTREME CAUTION, you have been WARNED.


Building
========

The only requirement (other than gcc, of course) is libpci:

% sudo apt-get install libpci-dev

If you don't have exactly 4 logical CPUs you need to specify how many:

% make NUM_CPUS=8


Using
=====

Simply run the binary before loading your ioatdma module:

% sudo ./force_dca
% sudo modprobe ioatdma

You should then see:

  [   72.782249] dca service started, version 1.8
  [   72.838853] ioatdma 0000:00:08.0: setting latency timer to 64
  [   72.838865] ioatdma 0000:00:08.0: Intel(R) I/OAT DMA Engine found, 4 channels, device version 0x12, driver version 3.64
  [   72.904027]   alloc irq_desc for 56 on cpu 0 node 0
  [   72.904030]   alloc kstat_irqs on cpu 0 node 0
  [   72.904039] ioatdma 0000:00:08.0: irq 56 for MSI/MSI-X

in your dmesg output.

If you see:

  [    8.367333] ioatdma 0000:00:08.0: DCA is disabled in BIOS

then either your chipset doesnt support it, or the registers live somewhere else
and you'll need to modify the code.
Something went wrong with that request. Please try again.