diff --git a/SOURCES/add_upstream_labels.patch b/SOURCES/add_upstream_labels.patch new file mode 100644 index 0000000..70a04df --- /dev/null +++ b/SOURCES/add_upstream_labels.patch @@ -0,0 +1,159 @@ +--- + labels/dell | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 152 insertions(+) + +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ rasdaemon-0.6.1/labels/dell 2020-02-20 11:53:39.574579258 -0500 +@@ -0,0 +1,152 @@ ++# RASDAEMON Motherboard DIMM labels Database file. ++# ++# Vendor-name and model-name are found from the program 'dmidecode' ++# labels are found from the silk screen on the motherboard. ++# ++#Vendor: <vendor-name> ++# Product: <product-name> ++# Model: <model-name> ++# <label>: <mc>.<top>.<mid>.<low> ++# ++ ++Vendor: Dell Inc. ++# 1-socket ++ Product: PowerEdge R220, PowerEdge R330, PowerEdge T330, PowerEdge R230, PowerEdge T130, PowerEdge T30 ++ DIMM_A1: 0.0.0; DIMM_A2: 0.0.1; ++ DIMM_A3: 0.1.0; DIMM_A4: 0.1.1; ++ ++ Product: PowerEdge T110 II, PowerEdge T20 ++ DIMM_A1: 0.0.0; DIMM_A2: 0.1.0; ++ ++ DIMM_B1: 0.0.1; DIMM_B2: 0.1.1; ++ ++ Product: PowerEdge R320, PowerEdge T320 ++ DIMM_A1: 0.0.0; DIMM_A2: 0.1.0; DIMM_A3: 0.2.0; ++ DIMM_A4: 0.0.1; DIMM_A5: 0.1.1; DIMM_A6: 0.2.1; ++ ++# 2-socket ++ Product: PowerEdge R610 ++ DIMM_A1: 0.0.0; DIMM_A2: 0.0.1; DIMM_A3: 0.0.2; ++ DIMM_A4: 0.1.0; DIMM_A5: 0.1.1; DIMM_A6: 0.1.2; ++ ++ DIMM_B1: 1.0.0; DIMM_B2: 1.0.1; DIMM_B3: 1.0.2; ++ DIMM_B4: 1.1.0; DIMM_B5: 1.1.1; DIMM_B6: 1.1.2; ++ ++ Product: PowerEdge T710, PowerEdge R710 ++ DIMM_A3: 0.0.0; DIMM_A2: 0.1.0; DIMM_A1: 0.2.0; ++ DIMM_A6: 0.0.1; DIMM_A5: 0.1.1; DIMM_A4: 0.2.1; ++ DIMM_A9: 0.0.2; DIMM_A8: 0.1.2; DIMM_A7: 0.2.2; ++ ++ DIMM_B3: 1.0.0; DIMM_B2: 1.1.0; DIMM_B1: 1.2.0; ++ DIMM_B6: 1.0.1; DIMM_B5: 1.1.1; DIMM_B4: 1.2.1; ++ DIMM_B9: 1.0.2; DIMM_B8: 1.1.2; DIMM_B7: 1.2.2; ++ ++ Product: PowerEdge R620, PowerEdge T620, PowerEdge R720xd, PowerEdge R730xd, PowerEdge T630, PowerEdge R730, PowerEdge R630, PowerEdge T620, PowerEdge M620, PowerEdge FC620, PowerEdge M630, PowerEdge FC630 ++ DIMM_A1: 0.0.0; DIMM_A2: 0.1.0; DIMM_A3: 0.2.0; DIMM_A4: 0.3.0; ++ DIMM_A5: 0.0.1; DIMM_A6: 0.1.1; DIMM_A7: 0.2.1; DIMM_A8: 0.3.1; ++ DIMM_A9: 0.0.2; DIMM_A10: 0.1.2; DIMM_A11: 0.2.2; DIMM_A12: 0.3.2; ++ ++ DIMM_B1: 1.0.0; DIMM_B2: 1.1.0; DIMM_B3: 1.2.0; DIMM_B4: 1.3.0; ++ DIMM_B5: 1.0.1; DIMM_B6: 1.1.1; DIMM_B7: 1.2.1; DIMM_B8: 1.3.1; ++ DIMM_B9: 1.0.2; DIMM_B10: 1.1.2; DIMM_B11: 1.2.2; DIMM_B12: 1.3.2; ++ ++ Product: PowerEdge R640, PowerEdge R740, PowerEdge R740xd, PowerEdge T640 ++ A1: 0.0.0; A2: 0.1.0; A3: 0.2.0; A4: 1.0.0; A5: 1.1.0; A6: 1.2.0; ++ A7: 0.0.1; A8: 0.1.1; A9: 0.2.1; A10: 1.0.1; A11: 1.1.1; A12: 1.2.1; ++ ++ B1: 2.0.0; B2: 2.1.0; B3: 2.2.0; B4: 3.0.0; B5: 3.1.0; B6: 3.2.0; ++ B7: 2.0.1; B8: 2.1.1; B9: 2.2.1; B10: 3.0.1; B11: 3.1.1; B12: 3.2.1; ++ ++ Product: PowerEdge M520, PowerEdge R420, PowerEdge T420 ++ DIMM_A1: 0.1.0; DIMM_A2: 0.2.0; DIMM_A3: 0.3.0; ++ DIMM_A4: 0.1.1; DIMM_A5: 0.2.1; DIMM_A6: 0.3.1; ++ ++ DIMM_B1: 1.1.0; DIMM_B2: 1.2.0; DIMM_B3: 1.3.0; ++ DIMM_B4: 1.1.1; DIMM_B5: 1.2.1; DIMM_B6: 1.3.1; ++ ++ Product: PowerEdge FC420, PowerEdge M420 ++ DIMM_A1: 0.0.0; DIMM_A2: 0.1.0; DIMM_A3: 0.2.0; ++ ++ DIMM_B1: 1.0.0; DIMM_B2: 1.1.0; DIMM_B3: 1.2.0; ++ ++ Product: PowerEdge C6320, PowerEdge C4130 ++ DIMM_A1: 0.0.0; DIMM_A2: 0.1.0; DIMM_A3: 0.2.0; DIMM_A4: 0.3.0; ++ DIMM_A5: 0.0.1; DIMM_A6: 0.1.1; DIMM_A7: 0.2.1; DIMM_A8: 0.3.1; ++ ++ DIMM_B1: 1.0.0; DIMM_B2: 1.1.0; DIMM_B3: 1.2.0; DIMM_B4: 1.3.0; ++ DIMM_B5: 1.0.1; DIMM_B6: 1.1.1; DIMM_B7: 1.2.1; DIMM_B8: 1.3.1; ++ ++ Product: PowerEdge C6320p ++ A1: 0.0.0; B1: 0.1.0; C1: 0.2.0; ++ D1: 1.0.0; E1: 1.1.0; F1: 1.2.0; ++ ++ Product: PowerEdge C6420 ++ A1: 0.0.0; A2: 0.1.0; A3: 0.2.0; A4: 1.0.0; A5: 1.1.0; A6: 1.2.0; ++ A7: 0.0.1; A8: 1.0.1; ++ ++ B1: 2.0.0; B2: 2.1.0; B3: 2.2.0; B4: 3.0.0; B5: 3.1.0; B6: 3.2.0; ++ B7: 2.0.1; B8: 3.0.1; ++ ++ Product: PowerEdge R430, PowerEdge T430, PowerEdge R530 ++ DIMM_A1: 0.0.0; DIMM_A2: 0.1.0; DIMM_A3: 0.2.0; DIMM_A4: 0.3.0; ++ DIMM_A5: 0.0.1; DIMM_A6: 0.1.1; DIMM_A7: 0.2.1; DIMM_A8: 0.3.1; ++ ++ DIMM_B1: 1.0.0; DIMM_B2: 1.1.0; DIMM_B3: 1.2.0; DIMM_B4: 1.3.0; ++ ++ Product: PowerEdge FC430 ++ DIMM_A1: 0.1.0; DIMM_A2: 0.0.0; DIMM_A3: 0.2.0; DIMM_A4: 0.3.0; ++ ++ DIMM_B1: 1.1.0; DIMM_B2: 1.0.0; DIMM_B3: 1.2.0; DIMM_B4: 1.3.0; ++ ++# 4-socket ++ Product: PowerEdge M820, PowerEdge R830, PowerEdge M830, PowerEdge R930, PowerEdge FC830 ++ DIMM_A1: 0.0.0; DIMM_A2: 0.1.0; DIMM_A3: 0.2.0; DIMM_A4: 0.3.0; ++ DIMM_A5: 0.0.1; DIMM_A6: 0.1.1; DIMM_A7: 0.2.1; DIMM_A8: 0.3.1; ++ DIMM_A9: 0.0.2; DIMM_A10: 0.1.2; DIMM_A11: 0.2.2; DIMM_A12: 0.3.2; ++ ++ DIMM_B1: 1.0.0; DIMM_B2: 1.1.0; DIMM_B3: 1.2.0; DIMM_B4: 1.3.0; ++ DIMM_B5: 1.0.1; DIMM_B6: 1.1.1; DIMM_B7: 1.2.1; DIMM_B8: 1.3.1; ++ DIMM_B9: 1.0.2; DIMM_B10: 1.1.2; DIMM_B11: 1.2.2; DIMM_B12: 1.3.2; ++ ++ DIMM_C1: 2.0.0; DIMM_C2: 2.1.0; DIMM_C3: 2.2.0; DIMM_C4: 2.3.0; ++ DIMM_C5: 2.0.1; DIMM_C6: 2.1.1; DIMM_C7: 2.2.1; DIMM_C8: 2.3.1; ++ DIMM_C9: 2.0.2; DIMM_C10: 2.1.2; DIMM_C11: 2.2.2; DIMM_C12: 2.3.2; ++ ++ DIMM_D1: 3.0.0; DIMM_D2: 3.1.0; DIMM_D3: 3.2.0; DIMM_D4: 3.3.0; ++ DIMM_D5: 3.0.1; DIMM_D6: 3.1.1; DIMM_D7: 3.2.1; DIMM_D8: 3.3.1; ++ DIMM_D9: 3.0.2; DIMM_D10: 3.1.2; DIMM_D11: 3.2.2; DIMM_D12: 3.3.2; ++ ++ Product: PowerEdge FM120x4 ++ DIMM_A_A1: 0.1.0; DIMM_A_A2: 0.2.0; ++ ++ DIMM_B_A1: 1.1.0; DIMM_B_A2: 1.2.0; ++ ++ DIMM_C_A1: 2.1.0; DIMM_C_A2: 2.2.0; ++ ++ DIMM_D_A1: 3.1.0; DIMM_D_A2: 3.2.0; ++ ++ Product: PowerEdge R940 ++ A1: 0.0.0; A2: 0.1.0; A3: 0.2.0; A4: 1.0.0; A5: 1.1.0; A6: 1.2.0; ++ A7: 0.0.1; A8: 0.1.1; A9: 0.2.1; A10: 1.0.1; A11: 1.1.1; A12: 1.2.1; ++ ++ B1: 2.0.0; B2: 2.1.0; B3: 2.2.0; B4: 3.0.0; B5: 3.1.0; B6: 3.2.0; ++ B7: 2.0.1; B8: 2.1.1; B9: 2.2.1; B10: 3.0.1; B11: 3.1.1; B12: 3.2.1; ++ ++ C1: 4.0.0; C2: 4.1.0; C3: 4.2.0; C4: 5.0.0; C5: 5.1.0; C6: 5.2.0; ++ C7: 4.0.1; C8: 4.1.1; C9: 4.2.1; C10: 5.0.1; C11: 5.1.1; C12: 5.2.1; ++ ++ D1: 6.0.0; D2: 6.1.0; D3: 6.2.0; D4: 7.0.0; D5: 7.1.0; D6: 7.2.0; ++ D7: 6.0.1; D8: 6.1.1; D9: 6.2.1; D10: 7.0.1; D11: 7.1.1; D12: 7.2.1; ++ ++ Product: PowerEdge R440, PowerEdge R540 ++ A1: 0.0.0; A2: 0.1.0; A3: 0.2.0; A4: 1.0.0; A5: 1.1.0; A6: 1.2.0; ++ A7: 0.0.1; A8: 0.1.1; A9: 1.0.1; A10: 1.1.1; ++ ++ B1: 2.0.0; B2: 2.1.0; B3: 2.2.0; B4: 3.0.0; B5: 3.1.0; B6: 3.2.0; ++ ++ Product: PowerEdge M640, PowerEdge FC640 ++ A1: 0.0.0; A2: 0.1.0; A3: 0.2.0; A4: 1.0.0; A5: 1.1.0; A6: 1.2.0; ++ A7: 0.0.1; A8: 1.0.1; ++ ++ B1: 2.0.0; B2: 2.1.0; B3: 2.2.0; B4: 3.0.0; B5: 3.1.0; B6: 3.2.0; ++ B7: 2.0.1; B8: 3.0.1; diff --git a/SOURCES/b22be68453b2497e86cbd273b9cd56fadc5859e3.patch b/SOURCES/b22be68453b2497e86cbd273b9cd56fadc5859e3.patch new file mode 100644 index 0000000..4b3b8ae --- /dev/null +++ b/SOURCES/b22be68453b2497e86cbd273b9cd56fadc5859e3.patch @@ -0,0 +1,37 @@ +commit b22be68453b2497e86cbd273b9cd56fadc5859e3 +Author: Ying Lv <lvying6@huawei.com> +Date: Wed May 15 11:15:42 2019 +0800 + + fix rasdaemon high CPU usage when part of CPUs offline + + When we set part of CPU core offline, such as by setting the kernel cmdline + maxcpus = N(N is less than the total number of system CPU cores). + And then, we will observe that the CPU usage of some rasdaemon threads + is very close to 100. + + This is because when part of CPU offline, poll in read_ras_event_all_cpus func + will fallback to pthread way. + Offlined CPU thread will return negative value when read trace_pipe_raw, + negative return value will covert to positive value because of 'unsigned size'. + So code will always go into 'size > 0' branch, and the CPU usage is too high. + + Here, variable size uses int type will go to the right branch. + + Fiexs: eff7c9e0("ras-events: Only use pthreads for collect if poll() not available") + Reported-by: Zhipeng Xie <xiezhipeng1@huawei.com> + Signed-off-by: Ying Lv <lvying6@huawei.com> + Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> + +diff --git a/ras-events.c b/ras-events.c +index 4e7b815..38ebe1e 100644 +--- a/ras-events.c ++++ b/ras-events.c +@@ -426,7 +426,7 @@ static int read_ras_event(int fd, + struct kbuffer *kbuf, + void *page) + { +- unsigned size; ++ int size; + unsigned long long time_stamp; + void *data; + diff --git a/SPECS/rasdaemon.spec b/SPECS/rasdaemon.spec index abd4bf5..2746928 100644 --- a/SPECS/rasdaemon.spec +++ b/SPECS/rasdaemon.spec @@ -1,6 +1,6 @@ Name: rasdaemon Version: 0.6.1 -Release: 3%{?dist} +Release: 5%{?dist} Summary: Utility to receive RAS error tracings Group: Applications/System License: GPLv2 @@ -25,6 +25,8 @@ Requires(postun): systemd Patch1: 60a91e4da4f2daf2b10143fc148a8043312b61e5.patch Patch2: a16ca0711001957ee98f2c124abce0fa1f801529.patch +Patch3: add_upstream_labels.patch +Patch4: b22be68453b2497e86cbd273b9cd56fadc5859e3.patch %description %{name} is a RAS (Reliability, Availability and Serviceability) logging tool. @@ -40,6 +42,8 @@ an utility for reporting current error counts from the EDAC sysfs files. %setup -q %patch1 -p1 %patch2 -p1 +%patch3 -p1 +%patch4 -p1 %build %ifarch %{arm} aarch64 @@ -53,6 +57,7 @@ make %{?_smp_mflags} make install DESTDIR=%{buildroot} install -D -p -m 0644 misc/rasdaemon.service %{buildroot}/%{_unitdir}/rasdaemon.service install -D -p -m 0644 misc/ras-mc-ctl.service %{buildroot}%{_unitdir}/ras-mc-ctl.service +install -D -p -m 0655 labels/* %{buildroot}%{_sysconfdir}/ras/dimm_labels.d rm INSTALL %{buildroot}/usr/include/*.h %files @@ -65,6 +70,12 @@ rm INSTALL %{buildroot}/usr/include/*.h %{_sysconfdir}/ras/dimm_labels.d %changelog +* Wed Apr 08 2020 Aristeu Rozanski <aris@redhat.com> 0.6.1-5 +- Fix high CPU usage when CPUs are offline [1683420] + +* Wed Apr 08 2020 Aristeu Rozanski <aris@redhat.com> 0.6.1-4 +- Include upstream labels [1665418] + * Thu Jul 11 2019 Aristeu Rozanski <aris@redhat.com> 0.6.1-3 - Add support for AMD scalable MCA [1725488]