From 2b4505d6dd020225915103ea0e57289bd4c43c84 Mon Sep 17 00:00:00 2001
From: helmut <helmut.stult@schinfo.de>
Date: Mon, 10 Feb 2020 11:26:38 +0100
Subject: [PATCH] [pkg-upd] 5.6rc1.d0209.gbb6d3fb-1

---
 0001-nonupstream-navi10-vfio-reset.patch | 128 +++++++++++++++++++++++
 PKGBUILD                                 |  63 +++++++++--
 config.x86_64                            |   4 +
 3 files changed, 188 insertions(+), 7 deletions(-)
 create mode 100644 0001-nonupstream-navi10-vfio-reset.patch

diff --git a/0001-nonupstream-navi10-vfio-reset.patch b/0001-nonupstream-navi10-vfio-reset.patch
new file mode 100644
index 0000000..3fd63b7
--- /dev/null
+++ b/0001-nonupstream-navi10-vfio-reset.patch
@@ -0,0 +1,128 @@
+From 69ea42207b544b6e3fa9755022bff09d2ce953d9 Mon Sep 17 00:00:00 2001
+From: Geoffrey McRae <geoff@hostfission.com>
+Date: Thu, 12 Sep 2019 03:19:28 +1000
+Subject: [PATCH] pci quirk: AMD Navi 10 series vendor specific reset
+
+Signed-off-by: Geoffrey McRae <geoff@hostfission.com>
+---
+ drivers/pci/quirks.c | 98 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 98 insertions(+)
+
+diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
+index 44c4ae1abd00..d94ddb1c6832 100644
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -3825,6 +3825,97 @@ static int delay_250ms_after_flr(struct pci_dev *dev, int probe)
+ 	return 0;
+ }
+ 
++/*
++ * AMD Navi 10 series GPUs require a vendor specific reset procedure.
++ * According to AMD a PSP mode 2 reset should be enough however at this
++ * time the details of how to perform this are not available to us.
++ * Instead we can signal the SMU to enter and exit BACO which has the same
++ * desired effect.
++ */
++static int reset_amd_navi10(struct pci_dev *dev, int probe)
++{
++	const int mmMP0_SMN_C2PMSG_81 = 0x16091;
++	const int mmMP1_SMN_C2PMSG_66 = 0x16282;
++	const int mmMP1_SMN_C2PMSG_82 = 0x16292;
++	const int mmMP1_SMN_C2PMSG_90 = 0x1629a;
++
++	u16 cfg;
++	resource_size_t mmio_base, mmio_size;
++	uint32_t __iomem * mmio;
++	unsigned int sol;
++	unsigned int timeout;
++
++	/* bus resets still cause navi to flake out */
++	dev->dev_flags |= PCI_DEV_FLAGS_NO_BUS_RESET;
++
++	if (probe)
++		return 0;
++
++	/* save the PCI state and enable memory access */
++	pci_save_state(dev);
++	pci_read_config_word(dev, PCI_COMMAND, &cfg);
++	pci_write_config_word(dev, PCI_COMMAND, cfg | PCI_COMMAND_MEMORY);
++
++	/* map BAR5 */
++	mmio_base = pci_resource_start(dev, 5);
++	mmio_size = pci_resource_len(dev, 5);
++	mmio = ioremap_nocache(mmio_base, mmio_size);
++	if (mmio == NULL) {
++		pci_disable_device(dev);
++		pci_err(dev, "Navi10: cannot iomap device\n");
++		return 0;
++	}
++
++	/* check the sign of life indicator */
++	sol = readl(mmio + mmMP0_SMN_C2PMSG_81);
++	pci_info(dev, "Navi10: SOL 0x%x\n", sol);
++	if (sol == 0 || sol == 0xffffffff) {
++		pci_info(dev, "Navi10: device doesn't need to be reset\n");
++		goto out;
++	}
++
++	pci_info(dev, "Navi10: performing BACO reset\n");
++
++	/* the SMU might be busy already, wait for it */
++	for(timeout = 200; timeout && readl(mmio + mmMP1_SMN_C2PMSG_90) != 0; --timeout)
++		msleep(1);
++	readl(mmio + mmMP1_SMN_C2PMSG_90);
++
++	/* send PPSMC_MSG_ArmD3 */
++	writel(0x00, mmio + mmMP1_SMN_C2PMSG_90);
++	writel(0x46, mmio + mmMP1_SMN_C2PMSG_66);
++	for(timeout = 200; timeout && readl(mmio + mmMP1_SMN_C2PMSG_90) != 0; --timeout)
++		msleep(1);
++
++	/* send PPSMC_MSG_EnterBaco with param */
++	writel(0x00, mmio + mmMP1_SMN_C2PMSG_90);
++	writel(0x00, mmio + mmMP1_SMN_C2PMSG_82);
++	writel(0x18, mmio + mmMP1_SMN_C2PMSG_66);
++	for(timeout = 200; timeout && readl(mmio + mmMP1_SMN_C2PMSG_90) != 0; --timeout)
++		msleep(1);
++
++	/* wait for the regulators to shutdown */
++	msleep(400);
++
++	/* send PPSMC_MSG_ExitBaco */
++	writel(0x00, mmio + mmMP1_SMN_C2PMSG_90);
++	writel(0x19, mmio + mmMP1_SMN_C2PMSG_66);
++	for(timeout = 200; timeout && readl(mmio + mmMP1_SMN_C2PMSG_90) != 0; --timeout)
++		msleep(1);
++
++	/* wait for regulators to startup again */
++	msleep(400);
++
++out:
++	/* unmap BAR5 */
++	iounmap(mmio);
++
++	/* restore the PCI state and command register */
++	pci_restore_state(dev);
++	pci_write_config_word(dev, PCI_COMMAND, cfg);
++	return 0;
++}
++
+ static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
+ 	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82599_SFP_VF,
+ 		 reset_intel_82599_sfp_virtfn },
+@@ -3836,6 +3927,13 @@ static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
+ 	{ PCI_VENDOR_ID_INTEL, 0x0953, delay_250ms_after_flr },
+ 	{ PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
+ 		reset_chelsio_generic_dev },
++	{ PCI_VENDOR_ID_ATI, 0x7310, reset_amd_navi10 },
++	{ PCI_VENDOR_ID_ATI, 0x7312, reset_amd_navi10 },
++	{ PCI_VENDOR_ID_ATI, 0x7318, reset_amd_navi10 },
++	{ PCI_VENDOR_ID_ATI, 0x7319, reset_amd_navi10 },
++	{ PCI_VENDOR_ID_ATI, 0x731a, reset_amd_navi10 },
++	{ PCI_VENDOR_ID_ATI, 0x731b, reset_amd_navi10 },
++	{ PCI_VENDOR_ID_ATI, 0x731f, reset_amd_navi10 },
+ 	{ 0 }
+ };
+ 
+-- 
+2.20.1
diff --git a/PKGBUILD b/PKGBUILD
index db358fc..ec6b0d9 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -13,9 +13,9 @@ _basekernel=5.6
 _basever=56
 _aufs=20200127
 _sub=0
-_rc=rc0
-_commit=f757165705e92db62f85a1ad287e9251d1f2cd82
-_shortcommit=${_rc}.d0208.g${_commit:0:7}
+_rc=rc1
+_commit=bb6d3fb354c5ee8d6bde2d576eb7220ea09862b9
+_shortcommit=${_rc}.d0209.g${_commit:0:7}
 pkgver=${_basekernel}${_shortcommit}
 #pkgver=${_basekernel}.${_sub}
 pkgrel=1
@@ -63,7 +63,7 @@ source=(#"https://www.kernel.org/pub/linux/kernel/v5.x/linux-${_basekernel}.tar.
         '0011-bootsplash.patch'
         '0012-bootsplash.patch'
         '0013-bootsplash.patch')
-sha256sums=('02e26b13b0ca9a1764898c888ee0d34135df0552997829d3a4f6956ac60fd607'
+sha256sums=('9c871af6e1ad5c1ad861702119917f753d76a2163c5df979d9c07d9a3ecdf103'
             '81ae5d45904e302b3dfd73a8832368408c4a80fb27753ed224a26bcff24b35e5'
             'bfe52746bfc04114627b6f1e0dd94bc05dd94abe8f6dbee770f78d6116e315e8'
             'b44d81446d8b53d5637287c30ae3eb64cae0078c3fbc45fcf1081dd6699818b5'
@@ -109,42 +109,91 @@ prepare() {
   #patch -Np1 -i "${srcdir}/prepatch-${_basekernel}.patch"
 
   # disable USER_NS for non-root users by default
+  echo "PATCH: 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-CLONE_NEWUSER"
   patch -Np1 -i ../0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-CLONE_NEWUSER.patch
-
+  echo "-------------------------------------------------------------------------------------------------------"
   # other fixes by Arch
-
   # add patches for snapd
   # https://gitlab.com/apparmor/apparmor-kernel/tree/5.2-outoftree
+  echo "PATCH: 0001-apparmor-patch-to-provide-compatibility-with-v2-net-rules"
   patch -Np1 -i "${srcdir}/0001-apparmor-patch-to-provide-compatibility-with-v2-net-rules.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0002-apparmor-af_unix-mediation"
   patch -Np1 -i "${srcdir}/0002-apparmor-af_unix-mediation.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0003-apparmor-fix-use-after-free-in-sk_peer_label"
   patch -Np1 -i "${srcdir}/0003-apparmor-fix-use-after-free-in-sk_peer_label.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0004-apparmor-fix-apparmor-mediating-locking-non-fs-unix-sockets"
   patch -Np1 -i "${srcdir}/0004-apparmor-fix-apparmor-mediating-locking-non-fs-unix-sockets.patch"
 
   # Add bootsplash - http://lkml.iu.edu/hypermail/linux/kernel/1710.3/01542.html
+  echo "PATCH: 0001-bootsplash"
   patch -Np1 -i "${srcdir}/0001-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0002-bootsplash"
   patch -Np1 -i "${srcdir}/0002-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0003-bootsplash"
   patch -Np1 -i "${srcdir}/0003-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0004-bootsplash"
   patch -Np1 -i "${srcdir}/0004-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0005-bootsplash"
   patch -Np1 -i "${srcdir}/0005-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0006-bootsplash"
   patch -Np1 -i "${srcdir}/0006-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0007-bootsplash"
   patch -Np1 -i "${srcdir}/0007-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0008-bootsplash"
   patch -Np1 -i "${srcdir}/0008-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0009-bootsplash"
   patch -Np1 -i "${srcdir}/0009-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0010-bootsplash"
   patch -Np1 -i "${srcdir}/0010-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0011-bootsplash"
   patch -Np1 -i "${srcdir}/0011-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: 0012-bootsplash"
   patch -Np1 -i "${srcdir}/0012-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
   # use git-apply to add binary files
+  echo "PATCH: 0013-bootsplash"
   git apply -p1 < "${srcdir}/0013-bootsplash.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
 
   # add aufs5 support
+  echo "PATCH: aufs5.x-rcN-$"
   patch -Np1 -i "${srcdir}/aufs5.x-rcN-${_aufs}.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: aufs5-base"
   patch -Np1 -i "${srcdir}/aufs5-base.patch"
-  patch -Np1 -i "${srcdir}/aufs5-kbuild.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+#  echo "PATCH: aufs5-kbuild"
+#  patch -Np1 -i "${srcdir}/aufs5-kbuild.patch"
+#  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: aufs5-loopback"
   patch -Np1 -i "${srcdir}/aufs5-loopback.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: aufs5.x-rcN-$"
   patch -Np1 -i "${srcdir}/aufs5-mmap.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: aufs5-standalone"
   patch -Np1 -i "${srcdir}/aufs5-standalone.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: tmpfs-idr"
   patch -Np1 -i "${srcdir}/tmpfs-idr.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
+  echo "PATCH: vfs-ino"
   patch -Np1 -i "${srcdir}/vfs-ino.patch"
+  echo "-------------------------------------------------------------------------------------------------------"
 
   if [ "${CARCH}" = "x86_64" ]; then
     cat "${srcdir}/config.x86_64" > ./.config
diff --git a/config.x86_64 b/config.x86_64
index 82f62d4..f6c75e3 100644
--- a/config.x86_64
+++ b/config.x86_64
@@ -9404,6 +9404,8 @@ CONFIG_IPACK_BUS=m
 CONFIG_BOARD_TPCI200=m
 CONFIG_SERIAL_IPOCTAL=m
 CONFIG_RESET_CONTROLLER=y
+# CONFIG_RESET_BRCMSTB_RESCAL is not set
+# CONFIG_RESET_INTEL_GW is not set
 CONFIG_RESET_TI_SYSCON=m
 
 #
@@ -9606,6 +9608,7 @@ CONFIG_F2FS_CHECK_FS=y
 # CONFIG_F2FS_IO_TRACE is not set
 # CONFIG_F2FS_FAULT_INJECTION is not set
 # CONFIG_F2FS_FS_COMPRESSION is not set
+# CONFIG_ZONEFS_FS is not set
 CONFIG_FS_DAX=y
 CONFIG_FS_DAX_PMD=y
 CONFIG_FS_POSIX_ACL=y
@@ -9795,6 +9798,7 @@ CONFIG_EROFS_FS_POSIX_ACL=y
 CONFIG_EROFS_FS_SECURITY=y
 CONFIG_EROFS_FS_ZIP=y
 CONFIG_EROFS_FS_CLUSTER_PAGE_LIMIT=2
+# CONFIG_VBOXSF_FS is not set
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
 CONFIG_NFS_V2=m
-- 
GitLab