diff --git a/aer-inject-2010.03.10.tar.bz2 b/aer-inject-2010.03.10.tar.bz2 new file mode 100644 index 0000000..d9e864c Binary files /dev/null and b/aer-inject-2010.03.10.tar.bz2 differ diff --git a/mce-inject-2013.01.19.tar.bz2 b/mce-inject-2013.01.19.tar.bz2 new file mode 100644 index 0000000..97766c2 Binary files /dev/null and b/mce-inject-2013.01.19.tar.bz2 differ diff --git a/mcelog.conf b/mcelog.conf new file mode 100644 index 0000000..378f331 --- /dev/null +++ b/mcelog.conf @@ -0,0 +1,58 @@ +# +# config file for mcelog +# For further options, see the mcelog manpage and documentation +# + +# Filter out known broken events by default +filter = yes +# don't log memory errors individually +#filter-memory-errors = yes + +# output in undecoded raw format to be easier machine readable +#raw = yes + +[server] +# An upstream bug prevents this from being disabled +# Only allow root to connect by default +client-user = root +# Path to socket client uses to connect +socket-path = /var/run/mcelog-client + +[dimm] +# Enable DIMM-tracking +dimm-tracking-enabled = yes +# Disable DIMM DMI pre-population unless supported on your system +dmi-prepopulate = no + +# execute these triggers when the rate of corrected or uncorrected +# errors per DIMM exceeds the threshold +uc-error-trigger = dimm-error-trigger +uc-error-threshold = 1 / 24h +ce-error-trigger = dimm-error-trigger +ce-error-threshold = 10 / 24h + +[socket] +# Memory error accounting per socket +socket-tracing-enabled = yes +mem-uc-error-threshold = 100 / 24h +mem-ce-error-trigger = socket-memory-error-trigger +mem-ce-error-threshold = 100 / 24h +mem-ce-error-log = yes + +[cache] +# Attempt to off-line CPUs causing cache errors +cache-threshold-trigger = cache-error-trigger +cache-threshold-log = yes + +[page] +# Try to soft-offline a 4K page if it exceeds the threshold +memory-ce-threshold = 10 / 24h +memory-ce-trigger = page-error-trigger +memory-ce-log = yes +memory-ce-action = soft + +[trigger] +# Maximum number of running triggers +children-max = 2 +directory = /etc/mcelog/triggers + diff --git a/mcelog.spec b/mcelog.spec new file mode 100644 index 0000000..5cdb594 --- /dev/null +++ b/mcelog.spec @@ -0,0 +1,79 @@ +%define last_tar_version 168 +%define mce_inject_ver 2013.01.19 +%define aer_inject_ver 2010.03.10 + +Name: mcelog +Version: 168 +Release: 1 +Epoch: 3 +Summary: Linux kernel machine check handling middleware +License: GPLv2 +URL: https://github.com/andikleen/mcelog +Source0: v%{last_tar_version}.tar.gz +Source1: mce-inject-%{mce_inject_ver}.tar.bz2 +Source2: aer-inject-%{aer_inject_ver}.tar.bz2 +Source3: mcelog.conf +ExclusiveArch: i686 x86_64 +BuildRequires: bison flex systemd +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd + +%description +mcelog logs and accounts machine checks (in particular memory, IO, and +CPU hardware errors) on modern x86 Linux systems. +mce-inject allows to inject machine check errors on the software level +into a running Linux kernel. This is intended for validation of the +kernel machine check handler. +aer-inject allows to inject PCIE AER errors on the software level into +a running Linux kernel. This is intended for validation of the PCIE +driver error recovery handler and PCIE AER core handler. + +%prep +%setup -q -n %{name}-%{last_tar_version} -a 1 -a 2 + +%build +make CFLAGS="$RPM_OPT_FLAGS -Wl,-z,relro,-z,now -fpie" LDFLAGS="-Wl,-z,relro,-z,now -fpie -pie" +make CFLAGS="$RPM_OPT_FLAGS -g" -C mce-inject-%{mce_inject_ver} +make CFLAGS="$RPM_OPT_FLAGS -g -D_GNU_SOURCE" -C aer-inject-%{aer_inject_ver} + +%install +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/%{_unitdir} +mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/mcelog/triggers +DESTDIR=$RPM_BUILD_ROOT make install +# Replace mcelog.conf in mcelog tarball +install -p -m644 %{SOURCE3} $RPM_BUILD_ROOT/%{_sysconfdir}/mcelog/mcelog.conf +mv $RPM_BUILD_ROOT/%{_sysconfdir}/mcelog/*-trigger $RPM_BUILD_ROOT/%{_sysconfdir}/mcelog/triggers +install -p -m644 mcelog.service $RPM_BUILD_ROOT%{_unitdir}/mcelog.service +destdir=$RPM_BUILD_ROOT make -C mce-inject-%{mce_inject_ver} install +install -p -m755 aer-inject-%{aer_inject_ver}/aer-inject $RPM_BUILD_ROOT/%{_sbindir}/aer-inject + +%clean +rm -rf $RPM_BUILD_ROOT + +%post +%systemd_post mcelog.service + +%preun +%systemd_preun mcelog.service + +%postun +%systemd_postun_with_restart mcelog.service + +%files +%doc README.md +%license LICENSE +%{_sbindir}/mce-inject +%{_sbindir}/aer-inject +%{_sbindir}/mcelog +%dir %{_sysconfdir}/mcelog +%{_sysconfdir}/mcelog/triggers +%config(noreplace) %{_sysconfdir}/mcelog/mcelog.conf +%{_unitdir}/mcelog.service +%attr(0644,root,root) %{_mandir}/*/* + +%changelog +* Thu Feb 27 2020 openEuler Buildteam - 168-1 +- Package init diff --git a/v168.tar.gz b/v168.tar.gz new file mode 100644 index 0000000..2a22558 Binary files /dev/null and b/v168.tar.gz differ