summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Rebelo2021-04-29 20:43:20 +0100
committerJosé Rebelo2021-04-29 20:44:06 +0100
commite2c87ba57359f5e003975a6feb29e0d0b0512e8c (patch)
treebe97a590c0f515d818910d1ac9404d4f01df3b6a
parente9f3a7e231373b338786ecde1933b624ec41f4cb (diff)
downloadaur-e2c87ba57359f5e003975a6feb29e0d0b0512e8c.tar.gz
0.1.12-3: Rename package to zenpower-zen3-dkms, add Zen3 patch
-rw-r--r--.SRCINFO10
-rw-r--r--.gitignore3
-rw-r--r--PKGBUILD21
-rw-r--r--ZEN3-test4.patch135
4 files changed, 159 insertions, 10 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 6b45c87d60d5..a5bbfe7ab32f 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
-pkgbase = zenpower-dkms
- pkgdesc = Linux kernel driver for reading sensors for AMD Zen family CPUs
+pkgbase = zenpower-zen3-dkms
+ pkgdesc = Linux kernel driver for reading sensors for AMD Zen family CPUs, patched with Zen3 support
pkgver = 0.1.12
- pkgrel = 2
+ pkgrel = 3
url = https://github.com/ocerman/zenpower
install = zenpower.install
arch = x86_64
@@ -12,8 +12,10 @@ pkgbase = zenpower-dkms
conflicts = zenpower
source = zenpower-0.1.12.tar.gz::https://github.com/ocerman/zenpower/archive/v0.1.12.tar.gz
source = zenpower.conf
+ source = ZEN3-test4.patch
sha256sums = fd25dffbc0f0139e167aa8adecc61ce200f0395c6778302e236b4043f125e77d
sha256sums = 7bff3a5ea2c8b8abf56ce1d79b9724b1aea89e2564d244e09691070113d60f6a
+ sha256sums = bc72955d1cf1d56c347d2444a13ea707f9402512ce211a013e5dee8ff3a8632d
-pkgname = zenpower-dkms
+pkgname = zenpower-zen3-dkms
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..7cec0847fcb3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/pkg
+/src
+/*.tar*
diff --git a/PKGBUILD b/PKGBUILD
index 379f7a4956e1..2be8477d7391 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,12 +1,16 @@
-# Maintainer: Yiyao Yu <yuydevel at protonmail dot com>
+# Maintainer: José Rebelo <joserebelo at outlook dot com>
+# Original zenpower Maintainer: Yiyao Yu <yuydevel at protonmail dot com>
# Contributor: Benjamin Maisonnas <ben at wainei dot net>
# Author: Ondrej Čerman
+# ZEN3-test4.patch from https://crazy.dev.frugalware.org/ZEN3-test4.patch
+# Found in https://github.com/ocerman/zenpower/issues/39#issuecomment-749533146
+
_pkgname=zenpower
-pkgname=zenpower-dkms
+pkgname=zenpower-zen3-dkms
pkgver=0.1.12
-pkgrel=2
-pkgdesc='Linux kernel driver for reading sensors for AMD Zen family CPUs'
+pkgrel=3
+pkgdesc='Linux kernel driver for reading sensors for AMD Zen family CPUs, patched with Zen3 support'
arch=('x86_64' 'i686')
url='https://github.com/ocerman/zenpower'
license=('GPL2')
@@ -15,14 +19,19 @@ provides=('zenpower')
conflicts=('zenpower')
install=$_pkgname.install
source=("$_pkgname-$pkgver.tar.gz::https://github.com/ocerman/$_pkgname/archive/v$pkgver.tar.gz"
- "$_pkgname.conf")
+ "$_pkgname.conf"
+ "ZEN3-test4.patch")
sha256sums=('fd25dffbc0f0139e167aa8adecc61ce200f0395c6778302e236b4043f125e77d'
- '7bff3a5ea2c8b8abf56ce1d79b9724b1aea89e2564d244e09691070113d60f6a')
+ '7bff3a5ea2c8b8abf56ce1d79b9724b1aea89e2564d244e09691070113d60f6a'
+ 'bc72955d1cf1d56c347d2444a13ea707f9402512ce211a013e5dee8ff3a8632d')
prepare() {
sed -e "s/@CFLGS@//" \
-e "s/@VERSION@/$pkgver/" \
-i "$srcdir/$_pkgname-$pkgver/dkms.conf"
+
+ sed -i "s#zenpower.c#zenpower-$pkgver/zenpower.c#g" "${srcdir}/ZEN3-test4.patch"
+ patch -Np1 -i "${srcdir}/ZEN3-test4.patch"
}
package() {
diff --git a/ZEN3-test4.patch b/ZEN3-test4.patch
new file mode 100644
index 000000000000..f0de3abfa241
--- /dev/null
+++ b/ZEN3-test4.patch
@@ -0,0 +1,135 @@
+diff --git a/zenpower.c b/zenpower.c
+index e32bb2d..574248a 100644
+--- a/zenpower.c
++++ b/zenpower.c
+@@ -38,7 +38,11 @@
+ MODULE_DESCRIPTION("AMD ZEN family CPU Sensors Driver");
+ MODULE_AUTHOR("Ondrej Čerman");
+ MODULE_LICENSE("GPL");
+-MODULE_VERSION("0.1.12");
++MODULE_VERSION("0.1.12-ZEN3-test4");
++
++static bool zen1_calc;
++module_param(zen1_calc, bool, 0);
++MODULE_PARM_DESC(zen1_calc, "Set to 1 to use ZEN1 calculation");
+
+
+ #ifndef PCI_DEVICE_ID_AMD_17H_DF_F3
+@@ -61,6 +65,13 @@ MODULE_VERSION("0.1.12");
+ #define PCI_DEVICE_ID_AMD_17H_M70H_DF_F3 0x1443
+ #endif
+
++/* ZEN3 */
++#ifndef PCI_DEVICE_ID_AMD_19H_DF_F3
++#define PCI_DEVICE_ID_AMD_19H_DF_F3 0x1653
++#endif
++
++/* F17H_M01H_SVI, should be renamed to something generic I think... */
++
+ #define F17H_M01H_REPORTED_TEMP_CTRL 0x00059800
+ #define F17H_M01H_SVI 0x0005A000
+ #define F17H_M01H_SVI_TEL_PLANE0 (F17H_M01H_SVI + 0xC)
+@@ -69,6 +80,13 @@ MODULE_VERSION("0.1.12");
+ #define F17H_M30H_SVI_TEL_PLANE1 (F17H_M01H_SVI + 0x10)
+ #define F17H_M70H_SVI_TEL_PLANE0 (F17H_M01H_SVI + 0x10)
+ #define F17H_M70H_SVI_TEL_PLANE1 (F17H_M01H_SVI + 0xC)
++/* ZEN3 SP3/TR */
++#define F19H_M01H_SVI_TEL_PLANE0 (F17H_M01H_SVI + 0x14)
++#define F19H_M01H_SVI_TEL_PLANE1 (F17H_M01H_SVI + 0x10)
++/* ZEN3 Ryzen desktop */
++#define F19H_M21H_SVI_TEL_PLANE0 (F17H_M01H_SVI + 0x10)
++#define F19H_M21H_SVI_TEL_PLANE1 (F17H_M01H_SVI + 0xC)
++
+ #define F17H_M70H_CCD_TEMP(x) (0x00059954 + ((x) * 4))
+
+ #define F17H_TEMP_ADJUST_MASK 0x80000
+@@ -595,7 +613,13 @@ static int zenpower_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+ break;
+
+ case 0x31: // Zen2 Threadripper/EPYC
+- data->zen2 = true;
++ /* fixme: add helper for that */
++ if (!zen1_calc) {
++ data->zen2 = true;
++ dev_info(dev, "Using ZEN2 calculation formula.\n");
++ } else {
++ dev_info(dev, "Using ZEN1 calculation formula.\n");
++ }
+ data->amps_visible = true;
+ data->svi_core_addr = F17H_M30H_SVI_TEL_PLANE0;
+ data->svi_soc_addr = F17H_M30H_SVI_TEL_PLANE1;
+@@ -603,22 +627,60 @@ static int zenpower_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+ break;
+
+ case 0x60: // Zen2 APU
+- data->zen2 = true;
++ if (!zen1_calc) {
++ data->zen2 = true;
++ dev_info(dev, "Using ZEN2 calculation formula.\n");
++ } else {
++ dev_info(dev, "Using ZEN1 calculation formula.\n");
++ }
+ break;
+
+ case 0x71: // Zen2 Ryzen
+- data->zen2 = true;
++ if (!zen1_calc) {
++ data->zen2 = true;
++ dev_info(dev, "Using ZEN2 calculation formula.\n");
++ } else {
++ dev_info(dev, "Using ZEN1 calculation formula.\n");
++ }
+ data->amps_visible = true;
+ data->svi_core_addr = F17H_M70H_SVI_TEL_PLANE0;
+ data->svi_soc_addr = F17H_M70H_SVI_TEL_PLANE1;
+ ccd_check = 8;
+ break;
+-
+- default:
++ }
++ } else if (boot_cpu_data.x86 == 0x19) {
++ switch (boot_cpu_data.x86_model) {
++ case 0x0 ... 0x1: /* Zen3 SP3/TR */
++ if (!zen1_calc) {
++ /* The code need refactoring but calculation is the same
++ * Is this per Server/Desktop/APU?. EG: each one has his own set of formula(s)?
++ */
++ data->zen2 = true;
++ dev_info(dev, "Using ZEN2 calculation formula.\n");
++ } else {
++ dev_info(dev, "Using ZEN1 calculation formula.\n");
++ }
++ data->amps_visible = true;
++ data->svi_core_addr = F19H_M01H_SVI_TEL_PLANE0;
++ data->svi_soc_addr = F19H_M01H_SVI_TEL_PLANE1;
++ ccd_check = 8; /* max 64C, 8C per CCD = max 8 CCDs */
++ break;
++ case 0x21: /* Zen3 Ryzen */
++ if (!zen1_calc) {
++ data->zen2 = true;
++ dev_info(dev, "using ZEN2 calculation formula.\n");
++ } else {
++ dev_info(dev, "using ZEN1 calculation formula.\n");
++ }
++ data->amps_visible = true;
++ data->svi_core_addr = F19H_M21H_SVI_TEL_PLANE0;
++ data->svi_soc_addr = F19H_M21H_SVI_TEL_PLANE1;
++ ccd_check = 2; /* max 16C, 8C per CCD = max 2 CCD's */
++ break;
++ }
++ } else {
+ data->svi_core_addr = F17H_M01H_SVI_TEL_PLANE0;
+ data->svi_soc_addr = F17H_M01H_SVI_TEL_PLANE1;
+- break;
+- }
+ }
+
+ for (i = 0; i < ccd_check; i++) {
+@@ -652,6 +714,7 @@ static const struct pci_device_id zenpower_id_table[] = {
+ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_17H_M30H_DF_F3) },
+ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_17H_M60H_DF_F3) },
+ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_17H_M70H_DF_F3) },
++ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_19H_DF_F3) },
+ {}
+ };
+ MODULE_DEVICE_TABLE(pci, zenpower_id_table);