diff options
author | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2016-10-26 06:43:58 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2016-12-15 05:54:50 -0500 |
commit | e4b5301674c0d2d866de767f02a44bc322af8d7f (patch) | |
tree | 64df58428c999beee1ba008b48158e0f2aa876f9 | |
parent | 96714bd7078fecc91631596c3ca4ddd0fd3ecde6 (diff) |
edac.txt: update information about newer Intel CPUs
There's a chapter at edac.rst written by the time Nehalem
support was added. Such information is used not only by the
Nehalem driver (i7core_edac), but by all newer Intel CPU
architectures that are supported by i7core_edac, sb_edac
and sbx_edac drivers.
Update the information to reflect that.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
-rw-r--r-- | Documentation/edac.txt | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/Documentation/edac.txt b/Documentation/edac.txt index fba193044af0..0c9161c9ed7a 100644 --- a/Documentation/edac.txt +++ b/Documentation/edac.txt | |||
@@ -741,13 +741,25 @@ The ``test_device_edac`` sample driver is located at the | |||
741 | http://bluesmoke.sourceforge.net project site for EDAC. | 741 | http://bluesmoke.sourceforge.net project site for EDAC. |
742 | 742 | ||
743 | 743 | ||
744 | Nehalem Usage of EDAC APIs | 744 | Usage of EDAC APIs on Nehalem and newer Intel CPUs |
745 | -------------------------- | 745 | -------------------------------------------------- |
746 | 746 | ||
747 | Due to the way Nehalem exports Memory Controller data, some adjustments | 747 | On older Intel architectures, the memory controller was part of the North |
748 | were done at i7core_edac driver. This chapter will cover those differences | 748 | Bridge chipset. Nehalem, Sandy Bridge, Ivy Bridge, Haswell, Sky Lake and |
749 | newer Intel architectures integrated an enhanced version of the memory | ||
750 | controller (MC) inside the CPUs. | ||
749 | 751 | ||
750 | 1) On Nehalem, there is one Memory Controller per Quick Patch Interconnect | 752 | This chapter will cover the differences of the enhanced memory controllers |
753 | found on newer Intel CPUs, such as ``i7core_edac``, ``sb_edac`` and | ||
754 | ``sbx_edac`` drivers. | ||
755 | |||
756 | .. note:: | ||
757 | |||
758 | The Xeon E7 processor families use a separate chip for the memory | ||
759 | controller, called Intel Scalable Memory Buffer. This section doesn't | ||
760 | apply for such families. | ||
761 | |||
762 | 1) There is one Memory Controller per Quick Patch Interconnect | ||
751 | (QPI). At the driver, the term "socket" means one QPI. This is | 763 | (QPI). At the driver, the term "socket" means one QPI. This is |
752 | associated with a physical CPU socket. | 764 | associated with a physical CPU socket. |
753 | 765 | ||
@@ -757,7 +769,7 @@ were done at i7core_edac driver. This chapter will cover those differences | |||
757 | 769 | ||
758 | The minimum known unity is DIMMs. There are no information about csrows. | 770 | The minimum known unity is DIMMs. There are no information about csrows. |
759 | As EDAC API maps the minimum unity is csrows, the driver sequentially | 771 | As EDAC API maps the minimum unity is csrows, the driver sequentially |
760 | maps channel/dimm into different csrows. | 772 | maps channel/DIMM into different csrows. |
761 | 773 | ||
762 | For example, supposing the following layout:: | 774 | For example, supposing the following layout:: |
763 | 775 | ||
@@ -780,8 +792,8 @@ were done at i7core_edac driver. This chapter will cover those differences | |||
780 | 792 | ||
781 | Each QPI is exported as a different memory controller. | 793 | Each QPI is exported as a different memory controller. |
782 | 794 | ||
783 | 2) Nehalem MC has the ability to generate errors. The driver implements this | 795 | 2) The MC has the ability to inject errors to test drivers. The drivers |
784 | functionality via some error injection nodes: | 796 | implement this functionality via some error injection nodes: |
785 | 797 | ||
786 | For injecting a memory error, there are some sysfs nodes, under | 798 | For injecting a memory error, there are some sysfs nodes, under |
787 | ``/sys/devices/system/edac/mc/mc?/``: | 799 | ``/sys/devices/system/edac/mc/mc?/``: |
@@ -855,13 +867,14 @@ were done at i7core_edac driver. This chapter will cover those differences | |||
855 | 867 | ||
856 | EDAC MC0: UE row 0, channel-a= 0 channel-b= 0 labels "-": NON_FATAL (addr = 0x0075b980, socket=0, Dimm=0, Channel=2, syndrome=0x00000040, count=1, Err=8c0000400001009f:4000080482 (read error: read ECC error)) | 868 | EDAC MC0: UE row 0, channel-a= 0 channel-b= 0 labels "-": NON_FATAL (addr = 0x0075b980, socket=0, Dimm=0, Channel=2, syndrome=0x00000040, count=1, Err=8c0000400001009f:4000080482 (read error: read ECC error)) |
857 | 869 | ||
858 | 3) Nehalem specific Corrected Error memory counters | 870 | 3) Corrected Error memory register counters |
859 | 871 | ||
860 | Nehalem have some registers to count memory errors. The driver uses those | 872 | Those newer MCs have some registers to count memory errors. The driver |
861 | registers to report Corrected Errors on devices with Registered Dimms. | 873 | uses those registers to report Corrected Errors on devices with Registered |
874 | DIMMs. | ||
862 | 875 | ||
863 | However, those counters don't work with Unregistered Dimms. As the chipset | 876 | However, those counters don't work with Unregistered DIMM. As the chipset |
864 | offers some counters that also work with UDIMMS (but with a worse level of | 877 | offers some counters that also work with UDIMMs (but with a worse level of |
865 | granularity than the default ones), the driver exposes those registers for | 878 | granularity than the default ones), the driver exposes those registers for |
866 | UDIMM memories. | 879 | UDIMM memories. |
867 | 880 | ||
@@ -896,8 +909,8 @@ were done at i7core_edac driver. This chapter will cover those differences | |||
896 | 4) Standard error counters | 909 | 4) Standard error counters |
897 | 910 | ||
898 | The standard error counters are generated when an mcelog error is received | 911 | The standard error counters are generated when an mcelog error is received |
899 | by the driver. Since, with udimm, this is counted by software, it is | 912 | by the driver. Since, with UDIMM, this is counted by software, it is |
900 | possible that some errors could be lost. With rdimm's, they display the | 913 | possible that some errors could be lost. With RDIMM's, they display the |
901 | contents of the registers | 914 | contents of the registers |
902 | 915 | ||
903 | Reference documents used on ``amd64_edac`` | 916 | Reference documents used on ``amd64_edac`` |
@@ -958,6 +971,7 @@ Credits | |||
958 | * |copy| Mauro Carvalho Chehab | 971 | * |copy| Mauro Carvalho Chehab |
959 | 972 | ||
960 | - 05 Aug 2009 Nehalem interface | 973 | - 05 Aug 2009 Nehalem interface |
974 | - 26 Oct 2016 Converted to ReST and cleanups at the Nehalem section | ||
961 | 975 | ||
962 | * EDAC authors/maintainers: | 976 | * EDAC authors/maintainers: |
963 | 977 | ||