In contemporary systems ECC memory controller configuration - like memory size discovery, and timing configuration - is nearly always the job of the firmware (e.g. the BIOS).

  • System comes up with ECC disabled (it might not have ECC RAM installed).

  • BIOS reads RAM size, speed, and ECC capability from serial EEPROM (i2c) chip on each DIMM.

  • BIOS programs memory controller memory size registers, and enables ECC data generation (if ECC RAM present).

  • BIOS Writes (or reads - and rewrites - "scrubs") the whole of RAM (so that the ECC bits have valid data).

  • BIOS Enables ECC error detection and reporting.

Some motherboard BIOSes actually fail to do one, or more of the steps above (e.g. I personally own one that does none of the above, and have seen another which does not complete the second step if you press the escape key during boot). If your BIOS messes things up, you may be able to fix it under Linux (particularly if the chipset supports automatic "scrubbing").