###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007-2018 IPFire Team <info@ipfire.org> #
+# Copyright (C) 2007-2021 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
TARGET = $(DIR_INFO)/$(THISAPP)
SUP_ARCH = x86_64 i586
PROG = cpufrequtils
-PAK_VER = 9
+PAK_VER = 10
DEPS =
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/cpufrequtils/0001-Only-x86-has-cpuid-instruction.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/cpufrequtils/0003-cpufrequtils-aperf-Fix-MSR-read-on-32-bit.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/cpufrequtils/0005-cpufrequtils-sysfs-increase-MAX_LINE_LEN.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/cpufrequtils/0006-aperf-fix-compilation-on-x86-32-with-fPIC.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/cpufrequtils/0007-po-add-missing-word-in-DE.patch
+
cd $(DIR_APP) && make
cd $(DIR_APP) && make install
--- /dev/null
+From f1b6bccf08f53295b2f7f448f28bbd37533c14a2 Mon Sep 17 00:00:00 2001
+From: Zhang Le <r0bertz@gentoo.org>
+Date: Sun, 18 Jul 2010 02:05:28 +0800
+Subject: [PATCH 1/8] Only x86 has cpuid instruction
+
+Signed-off-by: Zhang Le <r0bertz@gentoo.org>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ utils/aperf.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/utils/aperf.c b/utils/aperf.c
+index 627fb17..1c64501 100644
+--- a/utils/aperf.c
++++ b/utils/aperf.c
+@@ -68,11 +68,15 @@ struct avg_perf_cpu_info
+
+ static int cpu_has_effective_freq()
+ {
++#if defined(__i386__) || defined(__x86_64__)
+ /* largest base level */
+ if (cpuid_eax(0) < 6)
+ return 0;
+
+ return cpuid_ecx(6) & 0x1;
++#else
++ return 0;
++#endif
+ }
+
+ /*
+--
+1.7.10
+
--- /dev/null
+From d4490efed068a552e8b67d52a0726458a224c9a0 Mon Sep 17 00:00:00 2001
+From: Frank Arnold <frank.arnold@amd.com>
+Date: Wed, 8 Dec 2010 17:39:14 +0100
+Subject: [PATCH 3/8] cpufrequtils aperf: Fix MSR read on 32-bit
+
+The cpufreq-aperf command does not work on 32-bit systems. The reason
+for that is a wrong count argument passed to the read() call. Instead
+of the buffer size, the size of the pointer to the buffer is used. On
+64-bit systems this just happened to work, because we need to read an
+8 byte value and a pointer has a size of 8 bytes on 64-bit. On 32-bit
+systems only 4 bytes are read, which then triggers the error path.
+
+Signed-off-by: Frank Arnold <frank.arnold@amd.com>
+Reviewed-by: Thomas Renninger <trenn@suse.de>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ utils/aperf.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/utils/aperf.c b/utils/aperf.c
+index 1c64501..6302f5a 100644
+--- a/utils/aperf.c
++++ b/utils/aperf.c
+@@ -100,7 +100,7 @@ static int read_msr(int cpu, unsigned int idx, unsigned long long *val)
+ return -1;
+ if (lseek(fd, idx, SEEK_CUR) == -1)
+ goto err;
+- if (read(fd, val, sizeof val) != sizeof *val)
++ if (read(fd, val, sizeof *val) != sizeof *val)
+ goto err;
+ close(fd);
+ return 0;
+--
+1.7.10
+
--- /dev/null
+From 9f2efa7bc6969c10562ac2c720d50ff77083e5c2 Mon Sep 17 00:00:00 2001
+From: Roman Vasiyarov <rvasiyarov@gmail.com>
+Date: Mon, 25 Apr 2011 21:34:23 +0400
+Subject: [PATCH 5/8] cpufrequtils sysfs: increase MAX_LINE_LEN
+
+larger sysfs data (>255 bytes) was truncated and thus used improperly
+
+Signed-off-by: Roman Vasiyarov <rvasiyarov@gmail.com>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ lib/sysfs.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/sysfs.c b/lib/sysfs.c
+index 4e0edab..24dd563 100644
+--- a/lib/sysfs.c
++++ b/lib/sysfs.c
+@@ -18,7 +18,7 @@
+ #include "cpufreq.h"
+
+ #define PATH_TO_CPU "/sys/devices/system/cpu/"
+-#define MAX_LINE_LEN 255
++#define MAX_LINE_LEN 4096
+ #define SYSFS_PATH_MAX 255
+
+ /* helper function to read file from /sys into given buffer */
+--
+1.7.10
+
--- /dev/null
+From 9085ce6f615d9d2e0182d3ce029b882835bd0a6b Mon Sep 17 00:00:00 2001
+From: Matt Turner <mattst88@gmail.com>
+Date: Tue, 26 Jul 2011 19:28:31 -0400
+Subject: [PATCH 6/8] aperf: fix compilation on x86-32 with -fPIC
+
+ebx is used to store the GOT pointer when compiled with -fPIC, so it's
+not usable by inline assembly.
+
+https://bugs.gentoo.org/375967
+
+Signed-off-by: Matt Turner <mattst88@gmail.com>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ utils/cpuid.h | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/utils/cpuid.h b/utils/cpuid.h
+index 2bac69a..53da789 100644
+--- a/utils/cpuid.h
++++ b/utils/cpuid.h
+@@ -5,9 +5,21 @@ static inline void __cpuid(unsigned int *eax, unsigned int *ebx,
+ unsigned int *ecx, unsigned int *edx)
+ {
+ /* ecx is often an input as well as an output. */
+- asm volatile("cpuid"
++ asm volatile(
++#if defined(__i386__) && defined(__PIC__)
++ "push %%ebx\n"
++ "cpuid\n"
++ "movl %%ebx, %1\n"
++ "pop %%ebx\n"
++#else
++ "cpuid\n"
++#endif
+ : "=a" (*eax),
++#if defined(__i386__) && defined(__PIC__)
++ "=r" (*ebx),
++#else
+ "=b" (*ebx),
++#endif
+ "=c" (*ecx),
+ "=d" (*edx)
+ : "0" (*eax), "2" (*ecx));
+--
+1.7.10
+
--- /dev/null
+From 26ce99ab92ae9f1f367a58b7858a96f4e1e6814c Mon Sep 17 00:00:00 2001
+From: Dominik Brodowski <linux@dominikbrodowski.net>
+Date: Fri, 29 Jul 2011 19:40:46 +0200
+Subject: [PATCH 7/8] po: add missing word in DE
+
+Reported-by: Michael Basse
+Reported-by: <tkranz@zedat.fu-berlin.de>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ po/de.po | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/po/de.po b/po/de.po
+index 1da1f2b..ee793f5 100644
+--- a/po/de.po
++++ b/po/de.po
+@@ -304,7 +304,7 @@ msgid ""
+ "modified\n"
+ msgstr ""
+ " -c CPU, --cpu CPU Nummer der CPU, deren Taktfrequenz-Einstellung\n"
+-" werden soll\n"
++" verändert werden soll\n"
+
+ #: utils/set.c:39
+ #, c-format
+--
+1.7.10
+