All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] arm-autonomy/n1sdp: Remove support for linux-linaro-arm_5.4
@ 2021-03-25 14:00 Peter Hoyes
  2021-03-25 14:00 ` [PATCH 2/2] arm-autonomy/linux-arm-autonomy: Fix Dom0 boot issue with preempt_rt kernel Peter Hoyes
  2021-03-29 15:51 ` [meta-arm] [PATCH 1/2] arm-autonomy/n1sdp: Remove support for linux-linaro-arm_5.4 Jon Mason
  0 siblings, 2 replies; 3+ messages in thread
From: Peter Hoyes @ 2021-03-25 14:00 UTC (permalink / raw)
  To: meta-arm; +Cc: nd, Peter Hoyes

From: Peter Hoyes <Peter.Hoyes@arm.com>

 * Remove linux-linaro-arm and associated patches
 * Use linux-yocto for N1SDP

Issue-Id: SCM-1506
Signed-off-by: Peter Hoyes <Peter.Hoyes@arm.com>
Change-Id: I6e0ebf7de42af98e7427132590fe813c1703d1c6
---
 .../conf/machine/n1sdp-extra-settings.inc     |  13 +-
 ...ow-specification-of-ncurses-location.patch |  52 ---
 .../linux-linaro-arm-5.4/fix-bfd-link.patch   |  60 ----
 ...arm-smmu-v3-Ignore-IOPF-capabilities.patch |  46 ---
 ...irk-add-acs-override-for-PCI-devices.patch | 156 ---------
 ...-for-the-Arm-Neoverse-N1SDP-platform.patch | 318 ------------------
 ...e-n1sdp-pci-quirk-for-SR-IOV-support.patch |  51 ---
 ...uirk-support-enabling-remote-chip-PC.patch | 134 --------
 .../n1sdp/enable-realtek-R8169.cfg            |   3 -
 .../scripts-dtc-remove-redundant-YYLOC.patch  |  59 ----
 .../perf-fixup-gcc10-01.patch                 |  76 -----
 .../perf-fixup-gcc10-02.patch                 |  50 ---
 .../perf-fixup-gcc10-03.patch                 | 246 --------------
 .../perf-fixup-gcc10-04.patch                 |  45 ---
 .../linux/linux-linaro-arm-n1sdp.inc          |  27 --
 ...asteoi_irq-to-handle-xen-dynamic-eve.patch |  80 -----
 .../linux/linux-linaro-arm-rt_5.4.bb          |  19 --
 .../recipes-kernel/linux/linux-linaro-arm.inc |  29 --
 .../linux/linux-linaro-arm_5.4.bb             |  17 -
 19 files changed, 3 insertions(+), 1478 deletions(-)
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/fix-bfd-link.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0001-TMP-iommu-arm-smmu-v3-Ignore-IOPF-capabilities.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0002-pci_quirk-add-acs-override-for-PCI-devices.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0003-pcie-Add-quirk-for-the-Arm-Neoverse-N1SDP-platform.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0004-n1sdp-update-n1sdp-pci-quirk-for-SR-IOV-support.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0005-n1sdp-pcie-add-quirk-support-enabling-remote-chip-PC.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/enable-realtek-R8169.cfg
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/scripts-dtc-remove-redundant-YYLOC.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-01.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-02.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-03.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-04.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-n1sdp.inc
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt-5.4/0001-xen-use-handle_fasteoi_irq-to-handle-xen-dynamic-eve.patch
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt_5.4.bb
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm.inc
 delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm_5.4.bb

diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/conf/machine/n1sdp-extra-settings.inc b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/conf/machine/n1sdp-extra-settings.inc
index 3612b2e..5731142 100644
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/conf/machine/n1sdp-extra-settings.inc
+++ b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/conf/machine/n1sdp-extra-settings.inc
@@ -49,23 +49,16 @@ do_image_wic[depends] += "xen:do_deploy"
 IMAGE_EFI_BOOT_FILES += "xen-n1sdp.efi;xen.efi"
 IMAGE_EFI_BOOT_FILES += "${XEN_MOD_DEVICETREE_DTBS}"
 
-# Use 5.4 kernel until later versions have been validated for autonomy-host
-python() {
-    if d.getVar('PREFERRED_PROVIDER_virtual/kernel') == 'linux-yocto':
-        d.setVar('PREFERRED_PROVIDER_virtual/kernel', 'linux-linaro-arm')
-        d.setVar('PREFERRED_VERSION_linux-linaro-arm', '5.4%')
-}
-
-# When alternate-kernel DISTRO_FEATURE is present we set the linux-linaro-arm-rt
+# When alternate-kernel DISTRO_FEATURE is present we set the linux-yocto-rt
 # by default
 PREFERRED_PROVIDER_alternate/kernel ?= "\
 ${@bb.utils.contains('DISTRO_FEATURES', 'alternate-kernel', \
-'linux-linaro-arm-rt', '', d)}"
+'linux-yocto-rt', '', d)}"
 
 KERNEL_PACKAGE_NAME_alternate/kernel ?= "kernel-rt"
 # When alternate-kernel DISTRO_FEATURE is present we set the kernel-rt by
 # default
-KERNEL_PACKAGE_NAME_pn-linux-linaro-arm-rt = "\
+KERNEL_PACKAGE_NAME_pn-linux-yocto-rt = "\
 ${@ d.getVar('KERNEL_PACKAGE_NAME_alternate/kernel') \
 if bb.utils.contains('DISTRO_FEATURES', 'alternate-kernel', True, False, d) \
 else 'kernel' }"
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch
deleted file mode 100644
index 372d0af..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-rom d078e29aa31ac3fa4c041bf89c46bc6372c1a02a Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Mon, 2 Jul 2018 23:10:28 -0400
-Subject: menuconfig,mconf-cfg: Allow specification of ncurses location
-
-In some cross build environments such as the Yocto Project build
-environment it provides an ncurses library that is compiled
-differently than the host's version.  This causes display corruption
-problems when the host's curses includes are used instead of the
-includes from the provided compiler are overridden.  There is a second
-case where there is no curses libraries at all on the host system and
-menuconfig will just fail entirely.
-
-The solution is simply to allow an override variable in
-check-lxdialog.sh for environments such as the Yocto Project.  Adding
-a CROSS_CURSES_LIB and CROSS_CURSES_INC solves the issue and allowing
-compiling and linking against the right headers and libraries.
-
-Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
-cc: Michal Marek <mmarek@suse.cz>
-cc: linux-kbuild@vger.kernel.org
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- scripts/kconfig/mconf-cfg.sh | 8 ++++++++
- 1 file changed, 8 insertions(+)
- mode change 100755 => 100644 scripts/kconfig/mconf-cfg.sh
-
-(limited to 'scripts/kconfig/mconf-cfg.sh')
-
-diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh
-old mode 100755
-new mode 100644
-index c812872d7f9d..65a9b9e5b8a6
---- a/scripts/kconfig/mconf-cfg.sh
-+++ b/scripts/kconfig/mconf-cfg.sh
-@@ -4,6 +4,14 @@
- PKG="ncursesw"
- PKG2="ncurses"
- 
-+if [ "$CROSS_CURSES_LIB" != "" ]; then
-+    echo libs=\'$CROSS_CURSES_LIB\'
-+    if [ x"$CROSS_CURSES_INC" != x ]; then
-+	echo cflags=\'$CROSS_CURSES_INC\'
-+    fi
-+    exit 0
-+fi
-+
- if [ -n "$(command -v pkg-config)" ]; then
- 	if pkg-config --exists $PKG; then
- 		echo cflags=\"$(pkg-config --cflags $PKG)\"
--- 
-cgit v1.2.2-1-g5e49
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/fix-bfd-link.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/fix-bfd-link.patch
deleted file mode 100644
index 63d4fda..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/fix-bfd-link.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From 0ada120c883d4f1f6aafd01cf0fbb10d8bbba015 Mon Sep 17 00:00:00 2001
-From: Changbin Du <changbin.du@gmail.com>
-Date: Tue, 28 Jan 2020 23:29:38 +0800
-Subject: [PATCH] perf: Make perf able to build with latest libbfd
-
-libbfd has changed the bfd_section_* macros to inline functions
-bfd_section_<field> since 2019-09-18. See below two commits:
-  o http://www.sourceware.org/ml/gdb-cvs/2019-09/msg00064.html
-  o https://www.sourceware.org/ml/gdb-cvs/2019-09/msg00072.html
-
-This fix make perf able to build with both old and new libbfd.
-
-Signed-off-by: Changbin Du <changbin.du@gmail.com>
-Acked-by: Jiri Olsa <jolsa@redhat.com>
-Cc: Peter Zijlstra <peterz@infradead.org>
-Link: http://lore.kernel.org/lkml/20200128152938.31413-1-changbin.du@gmail.com
-Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----
- tools/perf/util/srcline.c | 16 +++++++++++++++-
- 1 file changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
-index 6ccf6f6d09df9..5b7d6c16d33fe 100644
---- a/tools/perf/util/srcline.c
-+++ b/tools/perf/util/srcline.c
-@@ -193,16 +193,30 @@ static void find_address_in_section(bfd *abfd, asection *section, void *data)
- 	bfd_vma pc, vma;
- 	bfd_size_type size;
- 	struct a2l_data *a2l = data;
-+	flagword flags;
- 
- 	if (a2l->found)
- 		return;
- 
--	if ((bfd_get_section_flags(abfd, section) & SEC_ALLOC) == 0)
-+#ifdef bfd_get_section_flags
-+	flags = bfd_get_section_flags(abfd, section);
-+#else
-+	flags = bfd_section_flags(section);
-+#endif
-+	if ((flags & SEC_ALLOC) == 0)
- 		return;
- 
- 	pc = a2l->addr;
-+#ifdef bfd_get_section_vma
- 	vma = bfd_get_section_vma(abfd, section);
-+#else
-+	vma = bfd_section_vma(section);
-+#endif
-+#ifdef bfd_get_section_size
- 	size = bfd_get_section_size(section);
-+#else
-+	size = bfd_section_size(section);
-+#endif
- 
- 	if (pc < vma || pc >= vma + size)
- 		return;
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0001-TMP-iommu-arm-smmu-v3-Ignore-IOPF-capabilities.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0001-TMP-iommu-arm-smmu-v3-Ignore-IOPF-capabilities.patch
deleted file mode 100644
index e1ff4a5..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0001-TMP-iommu-arm-smmu-v3-Ignore-IOPF-capabilities.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 4ebcbe09471d6b6b18fce42993489bed3801f10c Mon Sep 17 00:00:00 2001
-From: Jean-Philippe Brucker <jean-philippe@linaro.org>
-Date: Fri, 24 Jan 2020 10:17:14 +0100
-Subject: [PATCH 1/4] TMP: iommu/arm-smmu-v3: Ignore IOPF capabilities
-
-Don't mandate PRI or stall to enable SVA. Some devices have their own
-method for managing I/O page faults when they notice a translation
-request that fails.
-
-Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
----
- drivers/iommu/arm-smmu-v3.c | 18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
-index fed6a9d5867e..a8d7d6ccbb21 100644
---- a/drivers/iommu/arm-smmu-v3.c
-+++ b/drivers/iommu/arm-smmu-v3.c
-@@ -3276,7 +3276,23 @@ static bool arm_smmu_ats_supported(struct arm_smmu_master *master)
- 
- static bool arm_smmu_iopf_supported(struct arm_smmu_master *master)
- {
--	return master->stall_enabled || master->pri_supported;
-+	/* return master->stall_enabled || master->pri_supported; */
-+
-+	/*
-+	 * FIXME: this temporary hack allows enabling SVA for any endpoint even
-+	 * when they don't have PRI/stall.
-+	 *
-+	 * To implement this more cleanly, we need a third method, complementing
-+	 * stall_enabled and pri_supported, to enable IOPF. A bit that says
-+	 * "this device's page faults are handled out of band", called for
-+	 * example master->oob_iopf. How to set it?  It can easily be a firmware
-+	 * quirk, but that does not suffice in my opinion. We need to know that
-+	 * there is software ready to handle these page faults. The device
-+	 * driver owning this endpoint could for example call
-+	 * iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_OOB_IOPF), before
-+	 * enabling IOMMU_DEV_FEAT_SVA.
-+	 */
-+	return true;
- }
- 
- static void arm_smmu_enable_ats(struct arm_smmu_master *master)
--- 
-2.25.0
-
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0002-pci_quirk-add-acs-override-for-PCI-devices.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0002-pci_quirk-add-acs-override-for-PCI-devices.patch
deleted file mode 100644
index a66083a..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0002-pci_quirk-add-acs-override-for-PCI-devices.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-From 224e4adc6bc6a23f5deb3e1ebea03a85e3cad606 Mon Sep 17 00:00:00 2001
-From: Manoj Kumar <manoj.kumar3@arm.com>
-Date: Mon, 3 Feb 2020 10:11:19 +0000
-Subject: [PATCH 2/4] pci_quirk: add acs override for PCI devices
-
-Patch taken from:
-https://gitlab.com/Queuecumber/linux-acs-override/raw/master/workspaces/5.4/acso.patch
-
-Signed-off-by: Manoj Kumar <manoj.kumar3@arm.com>
----
- .../admin-guide/kernel-parameters.txt         |   9 ++
- drivers/pci/quirks.c                          | 101 ++++++++++++++++++
- 2 files changed, 110 insertions(+)
-
-diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
-index 8d7932502edc..f2be8337e98c 100644
---- a/Documentation/admin-guide/kernel-parameters.txt
-+++ b/Documentation/admin-guide/kernel-parameters.txt
-@@ -3423,6 +3423,15 @@
- 		nomsi		[MSI] If the PCI_MSI kernel config parameter is
- 				enabled, this kernel boot option can be used to
- 				disable the use of MSI interrupts system-wide.
-+		pcie_acs_override =
-+					[PCIE] Override missing PCIe ACS support for:
-+				downstream
-+					All downstream ports - full ACS capabilities
-+				multfunction
-+					All multifunction devices - multifunction ACS subset
-+				id:nnnn:nnnn
-+					Specfic device - full ACS capabilities
-+					Specified as vid:did (vendor/device ID) in hex
- 		noioapicquirk	[APIC] Disable all boot interrupt quirks.
- 				Safety option to keep boot IRQs enabled. This
- 				should never be necessary.
-diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index d134e12aab9d..9067bc7833be 100644
---- a/drivers/pci/quirks.c
-+++ b/drivers/pci/quirks.c
-@@ -3494,6 +3494,106 @@ static void quirk_no_bus_reset(struct pci_dev *dev)
- 	dev->dev_flags |= PCI_DEV_FLAGS_NO_BUS_RESET;
- }
- 
-+static bool acs_on_downstream;
-+static bool acs_on_multifunction;
-+
-+#define NUM_ACS_IDS 16
-+struct acs_on_id {
-+	unsigned short vendor;
-+	unsigned short device;
-+};
-+static struct acs_on_id acs_on_ids[NUM_ACS_IDS];
-+static u8 max_acs_id;
-+
-+static __init int pcie_acs_override_setup(char *p)
-+{
-+	if (!p)
-+		return -EINVAL;
-+
-+	while (*p) {
-+		if (!strncmp(p, "downstream", 10))
-+			acs_on_downstream = true;
-+		if (!strncmp(p, "multifunction", 13))
-+			acs_on_multifunction = true;
-+		if (!strncmp(p, "id:", 3)) {
-+			char opt[5];
-+			int ret;
-+			long val;
-+
-+			if (max_acs_id >= NUM_ACS_IDS - 1) {
-+				pr_warn("Out of PCIe ACS override slots (%d)\n",
-+						NUM_ACS_IDS);
-+				goto next;
-+			}
-+
-+			p += 3;
-+			snprintf(opt, 5, "%s", p);
-+			ret = kstrtol(opt, 16, &val);
-+			if (ret) {
-+				pr_warn("PCIe ACS ID parse error %d\n", ret);
-+				goto next;
-+			}
-+			acs_on_ids[max_acs_id].vendor = val;
-+
-+			p += strcspn(p, ":");
-+			if (*p != ':') {
-+				pr_warn("PCIe ACS invalid ID\n");
-+				goto next;
-+			}
-+
-+			p++;
-+			snprintf(opt, 5, "%s", p);
-+			ret = kstrtol(opt, 16, &val);
-+			if (ret) {
-+				pr_warn("PCIe ACS ID parse error %d\n", ret);
-+				goto next;
-+			}
-+			acs_on_ids[max_acs_id].device = val;
-+			max_acs_id++;
-+		}
-+next:
-+		p += strcspn(p, ",");
-+		if (*p == ',')
-+			p++;
-+	}
-+
-+	if (acs_on_downstream || acs_on_multifunction || max_acs_id)
-+		pr_warn("Warning: PCIe ACS overrides enabled; This may allow non-IOMMU protected peer-to-peer DMA\n");
-+
-+	return 0;
-+}
-+early_param("pcie_acs_override", pcie_acs_override_setup);
-+
-+static int pcie_acs_overrides(struct pci_dev *dev, u16 acs_flags)
-+{
-+	int i;
-+
-+	/* Never override ACS for legacy devices or devices with ACS caps */
-+	if (!pci_is_pcie(dev) ||
-+		pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS))
-+			return -ENOTTY;
-+
-+	for (i = 0; i < max_acs_id; i++)
-+		if (acs_on_ids[i].vendor == dev->vendor &&
-+			acs_on_ids[i].device == dev->device)
-+				return 1;
-+
-+	switch (pci_pcie_type(dev)) {
-+	case PCI_EXP_TYPE_DOWNSTREAM:
-+	case PCI_EXP_TYPE_ROOT_PORT:
-+		if (acs_on_downstream)
-+			return 1;
-+		break;
-+	case PCI_EXP_TYPE_ENDPOINT:
-+	case PCI_EXP_TYPE_UPSTREAM:
-+	case PCI_EXP_TYPE_LEG_END:
-+	case PCI_EXP_TYPE_RC_END:
-+		if (acs_on_multifunction && dev->multifunction)
-+			return 1;
-+	}
-+
-+	return -ENOTTY;
-+}
- /*
-  * Some Atheros AR9xxx and QCA988x chips do not behave after a bus reset.
-  * The device will throw a Link Down error on AER-capable systems and
-@@ -4674,6 +4774,7 @@ static const struct pci_dev_acs_enabled {
- 	{ PCI_VENDOR_ID_BROADCOM, 0xD714, pci_quirk_brcm_acs },
- 	/* Amazon Annapurna Labs */
- 	{ PCI_VENDOR_ID_AMAZON_ANNAPURNA_LABS, 0x0031, pci_quirk_al_acs },
-+   { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
- 	{ 0 }
- };
- 
--- 
-2.25.0
-
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0003-pcie-Add-quirk-for-the-Arm-Neoverse-N1SDP-platform.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0003-pcie-Add-quirk-for-the-Arm-Neoverse-N1SDP-platform.patch
deleted file mode 100644
index d827e9d..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0003-pcie-Add-quirk-for-the-Arm-Neoverse-N1SDP-platform.patch
+++ /dev/null
@@ -1,318 +0,0 @@
-From 813f6c6015c75caf25553cd2e36361bac9151145 Mon Sep 17 00:00:00 2001
-From: Deepak Pandey <Deepak.Pandey@arm.com>
-Date: Mon, 9 Dec 2019 16:06:38 +0000
-Subject: [PATCH 3/4] pcie: Add quirk for the Arm Neoverse N1SDP platform
-
-The Arm N1SDP SoC suffers from some PCIe integration issues, most
-prominently config space accesses to not existing BDFs being answered
-with a bus abort, resulting in an SError.
-To mitigate this, the firmware scans the bus before boot (catching the
-SErrors) and creates a table with valid BDFs, which acts as a filter for
-Linux' config space accesses.
-
-Add code consulting the table as an ACPI PCIe quirk, also register the
-corresponding device tree based description of the host controller.
-Also fix the other two minor issues on the way, namely not being fully
-ECAM compliant and config space accesses being restricted to 32-bit
-accesses only.
-
-This allows the Arm Neoverse N1SDP board to boot Linux without crashing
-and to access *any* devices (there are no platform devices except UART).
-
-Signed-off-by: Deepak Pandey <Deepak.Pandey@arm.com>
-[Sudipto: extend to cover the CCIX root port as well]
-Signed-off-by: Sudipto Paul <sudipto.paul@arm.com>
-[Andre: fix coding style issues, rewrite some parts, add DT support]
-Signed-off-by: Andre Przywara <andre.przywara@arm.com>
----
- arch/arm64/configs/defconfig        |   1 +
- drivers/acpi/pci_mcfg.c             |   7 +
- drivers/pci/controller/Kconfig      |  11 ++
- drivers/pci/controller/Makefile     |   1 +
- drivers/pci/controller/pcie-n1sdp.c | 196 ++++++++++++++++++++++++++++
- include/linux/pci-ecam.h            |   2 +
- 6 files changed, 218 insertions(+)
- create mode 100644 drivers/pci/controller/pcie-n1sdp.c
-
-diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
-index 619a892148fb..56f00e82a4c4 100644
---- a/arch/arm64/configs/defconfig
-+++ b/arch/arm64/configs/defconfig
-@@ -177,6 +177,7 @@ CONFIG_NET_9P=y
- CONFIG_NET_9P_VIRTIO=y
- CONFIG_PCI=y
- CONFIG_PCIEPORTBUS=y
-+CONFIG_PCI_QUIRKS=y
- CONFIG_PCI_IOV=y
- CONFIG_HOTPLUG_PCI=y
- CONFIG_HOTPLUG_PCI_ACPI=y
-diff --git a/drivers/acpi/pci_mcfg.c b/drivers/acpi/pci_mcfg.c
-index 6b347d9920cc..7a2b41b9ab57 100644
---- a/drivers/acpi/pci_mcfg.c
-+++ b/drivers/acpi/pci_mcfg.c
-@@ -142,6 +142,13 @@ static struct mcfg_fixup mcfg_quirks[] = {
- 	XGENE_V2_ECAM_MCFG(4, 0),
- 	XGENE_V2_ECAM_MCFG(4, 1),
- 	XGENE_V2_ECAM_MCFG(4, 2),
-+
-+#define N1SDP_ECAM_MCFG(rev, seg, ops) \
-+	{"ARMLTD", "ARMN1SDP", rev, seg, MCFG_BUS_ANY, ops }
-+
-+	/* N1SDP SoC with v1 PCIe controller */
-+	N1SDP_ECAM_MCFG(0x20181101, 0, &pci_n1sdp_pcie_ecam_ops),
-+	N1SDP_ECAM_MCFG(0x20181101, 1, &pci_n1sdp_ccix_ecam_ops),
- };
- 
- static char mcfg_oem_id[ACPI_OEM_ID_SIZE];
-diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig
-index 70e078238899..03860176e339 100644
---- a/drivers/pci/controller/Kconfig
-+++ b/drivers/pci/controller/Kconfig
-@@ -65,6 +65,17 @@ config PCI_FTPCI100
- 	depends on OF
- 	default ARCH_GEMINI
- 
-+config PCIE_HOST_N1SDP_ECAM
-+	bool "ARM N1SDP PCIe Controller"
-+	depends on ARM64
-+	depends on OF || (ACPI && PCI_QUIRKS)
-+	select PCI_HOST_COMMON
-+	default y if ARCH_VEXPRESS
-+	help
-+	  Say Y here if you want PCIe support for the Arm N1SDP platform.
-+	  The controller is ECAM compliant, but needs a quirk to workaround
-+	  an integration issue.
-+
- config PCI_TEGRA
- 	bool "NVIDIA Tegra PCIe controller"
- 	depends on ARCH_TEGRA || COMPILE_TEST
-diff --git a/drivers/pci/controller/Makefile b/drivers/pci/controller/Makefile
-index a2a22c9d91af..7ea98c5a04ec 100644
---- a/drivers/pci/controller/Makefile
-+++ b/drivers/pci/controller/Makefile
-@@ -30,6 +30,7 @@ obj-$(CONFIG_PCIE_MEDIATEK) += pcie-mediatek.o
- obj-$(CONFIG_PCIE_MOBIVEIL) += pcie-mobiveil.o
- obj-$(CONFIG_PCIE_TANGO_SMP8759) += pcie-tango.o
- obj-$(CONFIG_VMD) += vmd.o
-+obj-$(CONFIG_PCIE_HOST_N1SDP_ECAM) += pcie-n1sdp.o
- # pcie-hisi.o quirks are needed even without CONFIG_PCIE_DW
- obj-y				+= dwc/
- 
-diff --git a/drivers/pci/controller/pcie-n1sdp.c b/drivers/pci/controller/pcie-n1sdp.c
-new file mode 100644
-index 000000000000..620ab221466c
---- /dev/null
-+++ b/drivers/pci/controller/pcie-n1sdp.c
-@@ -0,0 +1,196 @@
-+// SPDX-License-Identifier: GPL-2.0
-+/*
-+ * Copyright (C) 2018/2019 ARM Ltd.
-+ *
-+ * This quirk is to mask the following issues:
-+ * - PCIE SLVERR: config space accesses to invalid PCIe BDFs cause a bus
-+ *		  error (signalled as an asynchronous SError)
-+ * - MCFG BDF mapping: the root complex is mapped separately from the device
-+ *		       config space
-+ * - Non 32-bit accesses to config space are not supported.
-+ *
-+ * At boot time the SCP board firmware creates a discovery table with
-+ * the root complex' base address and the valid BDF values, discovered while
-+ * scanning the config space and catching the SErrors.
-+ * Linux responds only to the EPs listed in this table, returning NULL
-+ * for the rest.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/ioport.h>
-+#include <linux/sizes.h>
-+#include <linux/of_pci.h>
-+#include <linux/of.h>
-+#include <linux/pci-ecam.h>
-+#include <linux/platform_device.h>
-+#include <linux/module.h>
-+
-+/* Platform specific values as hardcoded in the firmware. */
-+#define AP_NS_SHARED_MEM_BASE	0x06000000
-+#define MAX_SEGMENTS		2		/* Two PCIe root complexes. */
-+#define BDF_TABLE_SIZE		SZ_16K
-+
-+/*
-+ * Shared memory layout as written by the SCP upon boot time:
-+ *  ----
-+ *  Discover data header --> RC base address
-+ *                       \-> BDF Count
-+ *  Discover data        --> BDF 0...n
-+ *  ----
-+ */
-+struct pcie_discovery_data {
-+	u32 rc_base_addr;
-+	u32 nr_bdfs;
-+	u32 valid_bdfs[0];
-+} *pcie_discovery_data[MAX_SEGMENTS];
-+
-+void __iomem *rc_remapped_addr[MAX_SEGMENTS];
-+
-+/*
-+ * map_bus() is called before we do a config space access for a certain
-+ * device. We use this to check whether this device is valid, avoiding
-+ * config space accesses which would result in an SError otherwise.
-+ */
-+static void __iomem *pci_n1sdp_map_bus(struct pci_bus *bus, unsigned int devfn,
-+				       int where)
-+{
-+	struct pci_config_window *cfg = bus->sysdata;
-+	unsigned int devfn_shift = cfg->ops->bus_shift - 8;
-+	unsigned int busn = bus->number;
-+	unsigned int segment = bus->domain_nr;
-+	unsigned int bdf_addr;
-+	unsigned int table_count, i;
-+
-+	if (segment >= MAX_SEGMENTS ||
-+	    busn < cfg->busr.start || busn > cfg->busr.end)
-+		return NULL;
-+
-+	/* The PCIe root complex has a separate config space mapping. */
-+	if (busn == 0 && devfn == 0)
-+		return rc_remapped_addr[segment] + where;
-+
-+	busn -= cfg->busr.start;
-+	bdf_addr = (busn << cfg->ops->bus_shift) + (devfn << devfn_shift);
-+	table_count = pcie_discovery_data[segment]->nr_bdfs;
-+	for (i = 0; i < table_count; i++) {
-+		if (bdf_addr == pcie_discovery_data[segment]->valid_bdfs[i])
-+			return pci_ecam_map_bus(bus, devfn, where);
-+	}
-+
-+	return NULL;
-+}
-+
-+static int pci_n1sdp_init(struct pci_config_window *cfg, unsigned int segment)
-+{
-+	phys_addr_t table_base;
-+	struct device *dev = cfg->parent;
-+	struct pcie_discovery_data *shared_data;
-+	size_t bdfs_size;
-+
-+	if (segment >= MAX_SEGMENTS)
-+		return -ENODEV;
-+
-+	table_base = AP_NS_SHARED_MEM_BASE + segment * BDF_TABLE_SIZE;
-+
-+	if (!request_mem_region(table_base, BDF_TABLE_SIZE,
-+				"PCIe valid BDFs")) {
-+		dev_err(dev, "PCIe BDF shared region request failed\n");
-+		return -ENOMEM;
-+	}
-+
-+	shared_data = devm_ioremap(dev,
-+				   table_base, BDF_TABLE_SIZE);
-+	if (!shared_data)
-+		return -ENOMEM;
-+
-+	/* Copy the valid BDFs structure to allocated normal memory. */
-+	bdfs_size = sizeof(struct pcie_discovery_data) +
-+		    sizeof(u32) * shared_data->nr_bdfs;
-+	pcie_discovery_data[segment] = devm_kmalloc(dev, bdfs_size, GFP_KERNEL);
-+	if (!pcie_discovery_data[segment])
-+		return -ENOMEM;
-+
-+	memcpy_fromio(pcie_discovery_data[segment], shared_data, bdfs_size);
-+
-+	rc_remapped_addr[segment] = devm_ioremap_nocache(dev,
-+						shared_data->rc_base_addr,
-+						PCI_CFG_SPACE_EXP_SIZE);
-+	if (!rc_remapped_addr[segment]) {
-+		dev_err(dev, "Cannot remap root port base\n");
-+		return -ENOMEM;
-+	}
-+
-+	devm_iounmap(dev, shared_data);
-+
-+	return 0;
-+}
-+
-+static int pci_n1sdp_pcie_init(struct pci_config_window *cfg)
-+{
-+	return pci_n1sdp_init(cfg, 0);
-+}
-+
-+static int pci_n1sdp_ccix_init(struct pci_config_window *cfg)
-+{
-+	return pci_n1sdp_init(cfg, 1);
-+}
-+
-+struct pci_ecam_ops pci_n1sdp_pcie_ecam_ops = {
-+	.bus_shift	= 20,
-+	.init		= pci_n1sdp_pcie_init,
-+	.pci_ops	= {
-+		.map_bus        = pci_n1sdp_map_bus,
-+		.read           = pci_generic_config_read32,
-+		.write          = pci_generic_config_write32,
-+	}
-+};
-+
-+struct pci_ecam_ops pci_n1sdp_ccix_ecam_ops = {
-+	.bus_shift	= 20,
-+	.init		= pci_n1sdp_ccix_init,
-+	.pci_ops	= {
-+		.map_bus        = pci_n1sdp_map_bus,
-+		.read           = pci_generic_config_read32,
-+		.write          = pci_generic_config_write32,
-+	}
-+};
-+
-+static const struct of_device_id n1sdp_pcie_of_match[] = {
-+	{ .compatible = "arm,n1sdp-pcie" },
-+	{ },
-+};
-+MODULE_DEVICE_TABLE(of, n1sdp_pcie_of_match);
-+
-+static int n1sdp_pcie_probe(struct platform_device *pdev)
-+{
-+	const struct device_node *of_node = pdev->dev.of_node;
-+	u32 segment;
-+
-+	if (of_property_read_u32(of_node, "linux,pci-domain", &segment)) {
-+		dev_err(&pdev->dev, "N1SDP PCI controllers require linux,pci-domain property\n");
-+		return -EINVAL;
-+	}
-+
-+	switch (segment) {
-+	case 0:
-+		return pci_host_common_probe(pdev, &pci_n1sdp_pcie_ecam_ops);
-+	case 1:
-+		return pci_host_common_probe(pdev, &pci_n1sdp_ccix_ecam_ops);
-+	}
-+
-+	dev_err(&pdev->dev, "Invalid segment number, must be smaller than %d\n",
-+		MAX_SEGMENTS);
-+
-+	return -EINVAL;
-+}
-+
-+static struct platform_driver n1sdp_pcie_driver = {
-+	.driver = {
-+		.name = KBUILD_MODNAME,
-+		.of_match_table = n1sdp_pcie_of_match,
-+		.suppress_bind_attrs = true,
-+	},
-+	.probe = n1sdp_pcie_probe,
-+};
-+builtin_platform_driver(n1sdp_pcie_driver);
-diff --git a/include/linux/pci-ecam.h b/include/linux/pci-ecam.h
-index a73164c85e78..03cdea69f4e8 100644
---- a/include/linux/pci-ecam.h
-+++ b/include/linux/pci-ecam.h
-@@ -57,6 +57,8 @@ extern struct pci_ecam_ops pci_thunder_ecam_ops; /* Cavium ThunderX 1.x */
- extern struct pci_ecam_ops xgene_v1_pcie_ecam_ops; /* APM X-Gene PCIe v1 */
- extern struct pci_ecam_ops xgene_v2_pcie_ecam_ops; /* APM X-Gene PCIe v2.x */
- extern struct pci_ecam_ops al_pcie_ops; /* Amazon Annapurna Labs PCIe */
-+extern struct pci_ecam_ops pci_n1sdp_pcie_ecam_ops; /* Arm N1SDP PCIe */
-+extern struct pci_ecam_ops pci_n1sdp_ccix_ecam_ops; /* Arm N1SDP PCIe */
- #endif
- 
- #ifdef CONFIG_PCI_HOST_COMMON
--- 
-2.25.0
-
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0004-n1sdp-update-n1sdp-pci-quirk-for-SR-IOV-support.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0004-n1sdp-update-n1sdp-pci-quirk-for-SR-IOV-support.patch
deleted file mode 100644
index 6fb2dac..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0004-n1sdp-update-n1sdp-pci-quirk-for-SR-IOV-support.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 7bcc0412428050b0ab1fd70cbb4aaead5ac3c0e5 Mon Sep 17 00:00:00 2001
-From: Manoj Kumar <manoj.kumar3@arm.com>
-Date: Wed, 29 Jan 2020 17:21:39 +0000
-Subject: [PATCH 4/4] n1sdp: update n1sdp pci quirk for SR-IOV support
-
-VFs are not probing the vendor ID first, which is otherwise
-the gate keeper for undiscovered devices. So any accesses using
-a config space offset greater than 0 must be coming for an
-already discovered device or from a VF that has just been created.
-
-Also if Linux already has a struct pci_dev* for a given BDF,
-this device is safe to access.
-
-Skip the firmware table in these cases and allow accesses to
-those devices. That enables SR-IOV support on the N1SDP board.
-
-Signed-off-by: Andre Przywara <andre.przywara@arm.com>
----
- drivers/pci/controller/pcie-n1sdp.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/drivers/pci/controller/pcie-n1sdp.c b/drivers/pci/controller/pcie-n1sdp.c
-index 620ab221466c..04c0de043817 100644
---- a/drivers/pci/controller/pcie-n1sdp.c
-+++ b/drivers/pci/controller/pcie-n1sdp.c
-@@ -61,6 +61,7 @@ static void __iomem *pci_n1sdp_map_bus(struct pci_bus *bus, unsigned int devfn,
- 	unsigned int segment = bus->domain_nr;
- 	unsigned int bdf_addr;
- 	unsigned int table_count, i;
-+	struct pci_dev *dev;
- 
- 	if (segment >= MAX_SEGMENTS ||
- 	    busn < cfg->busr.start || busn > cfg->busr.end)
-@@ -70,6 +71,14 @@ static void __iomem *pci_n1sdp_map_bus(struct pci_bus *bus, unsigned int devfn,
- 	if (busn == 0 && devfn == 0)
- 		return rc_remapped_addr[segment] + where;
- 
-+	dev = pci_get_domain_bus_and_slot(segment, busn, devfn);
-+	if (dev && dev->is_virtfn)
-+		return pci_ecam_map_bus(bus, devfn, where);
-+
-+	/* Accesses beyond the vendor ID always go to existing devices. */
-+	if (where > 0)
-+		return pci_ecam_map_bus(bus, devfn, where);
-+
- 	busn -= cfg->busr.start;
- 	bdf_addr = (busn << cfg->ops->bus_shift) + (devfn << devfn_shift);
- 	table_count = pcie_discovery_data[segment]->nr_bdfs;
--- 
-2.25.0
-
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0005-n1sdp-pcie-add-quirk-support-enabling-remote-chip-PC.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0005-n1sdp-pcie-add-quirk-support-enabling-remote-chip-PC.patch
deleted file mode 100644
index d3db77a..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0005-n1sdp-pcie-add-quirk-support-enabling-remote-chip-PC.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-Upstream-Status: Inappropriate [will not be submitted as its an hack required to fix the hardware issue]
-
-This patch is picked from the git repository:
-https://git.linaro.org/landing-teams/working/arm/n1sdp-pcie-quirk.git/patch/?id=04b7e76d0fe6481a803f58e54e008a1489d713a5
-
-Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
-
-From 94892f681463908e4a879258dfd6053bbb025447 Mon Sep 17 00:00:00 2001
-From: Sayanta Pattanayak <sayanta.pattanayak@arm.com>
-Date: Fri, 31 Jul 2020 15:32:24 +0530
-Subject: [PATCH 5/5] n1sdp: pcie: add quirk support enabling remote chip PCIe
-
-Base address mapping for remote chip Root PCIe ECAM space.
-
-Remote Chip PCIe topology is enumerated in Firmware and current
-change takes referecne of enumerated PCIe hierarchy of Remote chip into the
-kernel and include in complete PCIe topology for kernel framework.
-
-Change-Id: I368e51c535ac66e48bd356bd33da6c49f1a0fb2a
-Signed-off-by: Sayanta Pattanayak <sayanta.pattanayak@arm.com>
----
- drivers/acpi/pci_mcfg.c             |  1 +
- drivers/pci/controller/pcie-n1sdp.c | 34 ++++++++++++++++++++++++++---
- include/linux/pci-ecam.h            |  1 +
- 3 files changed, 33 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/acpi/pci_mcfg.c b/drivers/acpi/pci_mcfg.c
-index 7a2b41b9ab57..53d073ef941f 100644
---- a/drivers/acpi/pci_mcfg.c
-+++ b/drivers/acpi/pci_mcfg.c
-@@ -149,6 +149,7 @@ static struct mcfg_fixup mcfg_quirks[] = {
- 	/* N1SDP SoC with v1 PCIe controller */
- 	N1SDP_ECAM_MCFG(0x20181101, 0, &pci_n1sdp_pcie_ecam_ops),
- 	N1SDP_ECAM_MCFG(0x20181101, 1, &pci_n1sdp_ccix_ecam_ops),
-+	N1SDP_ECAM_MCFG(0x20181101, 2, &pci_n1sdp_remote_pcie_ecam_ops),
- };
- 
- static char mcfg_oem_id[ACPI_OEM_ID_SIZE];
-diff --git a/drivers/pci/controller/pcie-n1sdp.c b/drivers/pci/controller/pcie-n1sdp.c
-index 04c0de043817..19b573468ac5 100644
---- a/drivers/pci/controller/pcie-n1sdp.c
-+++ b/drivers/pci/controller/pcie-n1sdp.c
-@@ -28,8 +28,10 @@
- 
- /* Platform specific values as hardcoded in the firmware. */
- #define AP_NS_SHARED_MEM_BASE	0x06000000
--#define MAX_SEGMENTS		2		/* Two PCIe root complexes. */
-+/* Two PCIe root complexes in One Chip + One PCIe RC in Remote Chip*/
-+#define MAX_SEGMENTS		3
- #define BDF_TABLE_SIZE		SZ_16K
-+#define REMOTE_CHIP_ADDR_OFFSET	0x40000000000
- 
- /*
-  * Shared memory layout as written by the SCP upon boot time:
-@@ -100,7 +102,10 @@ static int pci_n1sdp_init(struct pci_config_window *cfg, unsigned int segment)
- 	if (segment >= MAX_SEGMENTS)
- 		return -ENODEV;
- 
--	table_base = AP_NS_SHARED_MEM_BASE + segment * BDF_TABLE_SIZE;
-+	if (segment > 1)
-+		table_base = AP_NS_SHARED_MEM_BASE + REMOTE_CHIP_ADDR_OFFSET;
-+	else
-+		table_base = AP_NS_SHARED_MEM_BASE + segment * BDF_TABLE_SIZE;
- 
- 	if (!request_mem_region(table_base, BDF_TABLE_SIZE,
- 				"PCIe valid BDFs")) {
-@@ -122,7 +127,13 @@ static int pci_n1sdp_init(struct pci_config_window *cfg, unsigned int segment)
- 
- 	memcpy_fromio(pcie_discovery_data[segment], shared_data, bdfs_size);
- 
--	rc_remapped_addr[segment] = devm_ioremap_nocache(dev,
-+
-+	if (segment > 1)
-+		rc_remapped_addr[segment] = devm_ioremap_nocache(dev,
-+						shared_data->rc_base_addr + REMOTE_CHIP_ADDR_OFFSET,
-+						PCI_CFG_SPACE_EXP_SIZE);
-+	else
-+		rc_remapped_addr[segment] = devm_ioremap_nocache(dev,
- 						shared_data->rc_base_addr,
- 						PCI_CFG_SPACE_EXP_SIZE);
- 	if (!rc_remapped_addr[segment]) {
-@@ -145,6 +156,11 @@ static int pci_n1sdp_ccix_init(struct pci_config_window *cfg)
- 	return pci_n1sdp_init(cfg, 1);
- }
- 
-+static int pci_n1sdp_remote_pcie_init(struct pci_config_window *cfg)
-+{
-+	return pci_n1sdp_init(cfg, 2);
-+}
-+
- struct pci_ecam_ops pci_n1sdp_pcie_ecam_ops = {
- 	.bus_shift	= 20,
- 	.init		= pci_n1sdp_pcie_init,
-@@ -165,6 +181,16 @@ struct pci_ecam_ops pci_n1sdp_ccix_ecam_ops = {
- 	}
- };
- 
-+struct pci_ecam_ops pci_n1sdp_remote_pcie_ecam_ops = {
-+	.bus_shift	= 20,
-+	.init		= pci_n1sdp_remote_pcie_init,
-+	.pci_ops	= {
-+		.map_bus        = pci_n1sdp_map_bus,
-+		.read           = pci_generic_config_read32,
-+		.write          = pci_generic_config_write32,
-+	}
-+};
-+
- static const struct of_device_id n1sdp_pcie_of_match[] = {
- 	{ .compatible = "arm,n1sdp-pcie" },
- 	{ },
-@@ -186,6 +212,8 @@ static int n1sdp_pcie_probe(struct platform_device *pdev)
- 		return pci_host_common_probe(pdev, &pci_n1sdp_pcie_ecam_ops);
- 	case 1:
- 		return pci_host_common_probe(pdev, &pci_n1sdp_ccix_ecam_ops);
-+	case 2:
-+		return pci_host_common_probe(pdev, &pci_n1sdp_remote_pcie_ecam_ops);
- 	}
- 
- 	dev_err(&pdev->dev, "Invalid segment number, must be smaller than %d\n",
-diff --git a/include/linux/pci-ecam.h b/include/linux/pci-ecam.h
-index 03cdea69f4e8..2270662428e1 100644
---- a/include/linux/pci-ecam.h
-+++ b/include/linux/pci-ecam.h
-@@ -59,6 +59,7 @@ extern struct pci_ecam_ops xgene_v2_pcie_ecam_ops; /* APM X-Gene PCIe v2.x */
- extern struct pci_ecam_ops al_pcie_ops; /* Amazon Annapurna Labs PCIe */
- extern struct pci_ecam_ops pci_n1sdp_pcie_ecam_ops; /* Arm N1SDP PCIe */
- extern struct pci_ecam_ops pci_n1sdp_ccix_ecam_ops; /* Arm N1SDP PCIe */
-+extern struct pci_ecam_ops pci_n1sdp_remote_pcie_ecam_ops; /* Arm N1SDP PCIe */
- #endif
- 
- #ifdef CONFIG_PCI_HOST_COMMON
--- 
-2.25.0
-
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/enable-realtek-R8169.cfg b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/enable-realtek-R8169.cfg
deleted file mode 100644
index 7a57474..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/enable-realtek-R8169.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-# Enable Realtek Gigabit Ethernet adapter
-CONFIG_REALTEK_PHY=y
-CONFIG_R8169=y
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/scripts-dtc-remove-redundant-YYLOC.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/scripts-dtc-remove-redundant-YYLOC.patch
deleted file mode 100644
index f3ae5e5..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/scripts-dtc-remove-redundant-YYLOC.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-Upstream-Status: Backport https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/scripts/dtc/dtc-lexer.l?h=v5.8
-Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
-
-From 35b34d264cb347909ec89d9fa895900035d5438c Mon Sep 17 00:00:00 2001
-From: Dirk Mueller <dmueller@suse.com>
-Date: Tue, 14 Jan 2020 18:53:41 +0100
-Subject: scripts/dtc: Remove redundant YYLOC global declaration
-
-commit e33a814e772cdc36436c8c188d8c42d019fda639 upstream.
-
-gcc 10 will default to -fno-common, which causes this error at link
-time:
-
-  (.text+0x0): multiple definition of `yylloc'; dtc-lexer.lex.o (symbol from plugin):(.text+0x0): first defined here
-
-This is because both dtc-lexer as well as dtc-parser define the same
-global symbol yyloc. Before with -fcommon those were merged into one
-defintion. The proper solution would be to to mark this as "extern",
-however that leads to:
-
-  dtc-lexer.l:26:16: error: redundant redeclaration of 'yylloc' [-Werror=redundant-decls]
-   26 | extern YYLTYPE yylloc;
-      |                ^~~~~~
-In file included from dtc-lexer.l:24:
-dtc-parser.tab.h:127:16: note: previous declaration of 'yylloc' was here
-  127 | extern YYLTYPE yylloc;
-      |                ^~~~~~
-cc1: all warnings being treated as errors
-
-which means the declaration is completely redundant and can just be
-dropped.
-
-Signed-off-by: Dirk Mueller <dmueller@suse.com>
-Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-[robh: cherry-pick from upstream]
-Cc: stable@vger.kernel.org
-Signed-off-by: Rob Herring <robh@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- scripts/dtc/dtc-lexer.l | 1 -
- 1 file changed, 1 deletion(-)
-
-(limited to 'scripts/dtc/dtc-lexer.l')
-
-diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l
-index 5c6c3fd557d7..b3b7270300de 100644
---- a/scripts/dtc/dtc-lexer.l
-+++ b/scripts/dtc/dtc-lexer.l
-@@ -23,7 +23,6 @@ LINECOMMENT	"//".*\n
- #include "srcpos.h"
- #include "dtc-parser.tab.h"
- 
--YYLTYPE yylloc;
- extern bool treesource_error;
- 
- /* CAUTION: this will stop working if we ever use yyless() or yyunput() */
--- 
-cgit v1.2.2-1-g5e49
-
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-01.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-01.patch
deleted file mode 100644
index efca58f..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-01.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-perf cs-etm: Move definition of 'traceid_list' global variable from header file
-Upstream-Status: Backport https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/patch/tools/perf/util?id=bc79abf4afea97d5ce682aa2bd1095fb74400916
-Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
-
-From bc79abf4afea97d5ce682aa2bd1095fb74400916 Mon Sep 17 00:00:00 2001
-From: Leo Yan <leo.yan@linaro.org>
-Date: Tue, 5 May 2020 21:36:42 +0800
-Subject: perf cs-etm: Move definition of 'traceid_list' global variable from
- header file
-
-commit 168200b6d6ea0cb5765943ec5da5b8149701f36a upstream.
-
-The variable 'traceid_list' is defined in the header file cs-etm.h,
-if multiple C files include cs-etm.h the compiler might complaint for
-multiple definition of 'traceid_list'.
-
-To fix multiple definition error, move the definition of 'traceid_list'
-into cs-etm.c.
-
-Fixes: cd8bfd8c973e ("perf tools: Add processing of coresight metadata")
-Reported-by: Thomas Backlund <tmb@mageia.org>
-Signed-off-by: Leo Yan <leo.yan@linaro.org>
-Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
-Reviewed-by: Mike Leach <mike.leach@linaro.org>
-Tested-by: Mike Leach <mike.leach@linaro.org>
-Tested-by: Thomas Backlund <tmb@mageia.org>
-Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
-Cc: Jiri Olsa <jolsa@redhat.com>
-Cc: Mark Rutland <mark.rutland@arm.com>
-Cc: Namhyung Kim <namhyung@kernel.org>
-Cc: Peter Zijlstra <peterz@infradead.org>
-Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
-Cc: Tor Jeremiassen <tor@ti.com>
-Cc: linux-arm-kernel@lists.infradead.org
-Link: http://lore.kernel.org/lkml/20200505133642.4756-1-leo.yan@linaro.org
-Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-Cc: Paul Barker <pbarker@konsulko.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- tools/perf/util/cs-etm.c | 3 +++
- tools/perf/util/cs-etm.h | 3 ---
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-(limited to 'tools/perf/util')
-
-diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
-index 451eee24165ee..f5a9cb4088080 100644
---- a/tools/perf/util/cs-etm.c
-+++ b/tools/perf/util/cs-etm.c
-@@ -94,6 +94,9 @@ struct cs_etm_queue {
- 	struct cs_etm_traceid_queue **traceid_queues;
- };
- 
-+/* RB tree for quick conversion between traceID and metadata pointers */
-+static struct intlist *traceid_list;
-+
- static int cs_etm__update_queues(struct cs_etm_auxtrace *etm);
- static int cs_etm__process_queues(struct cs_etm_auxtrace *etm);
- static int cs_etm__process_timeless_queues(struct cs_etm_auxtrace *etm,
-diff --git a/tools/perf/util/cs-etm.h b/tools/perf/util/cs-etm.h
-index 650ecc2a63492..4ad925d6d7996 100644
---- a/tools/perf/util/cs-etm.h
-+++ b/tools/perf/util/cs-etm.h
-@@ -114,9 +114,6 @@ enum cs_etm_isa {
- 	CS_ETM_ISA_T32,
- };
- 
--/* RB tree for quick conversion between traceID and metadata pointers */
--struct intlist *traceid_list;
--
- struct cs_etm_queue;
- 
- struct cs_etm_packet {
--- 
-cgit 1.2.3-1.el7
-
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-02.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-02.patch
deleted file mode 100644
index b512d3e..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-02.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-perf tests bp_account: Make global variable static
-Upstream-Status: Backport https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/patch/tools/perf/tests/bp_account.c?id=73d2d6b421dfdc66b4615452a94efcece27a3c21
-Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
-
-From 73d2d6b421dfdc66b4615452a94efcece27a3c21 Mon Sep 17 00:00:00 2001
-From: Arnaldo Carvalho de Melo <acme@redhat.com>
-Date: Mon, 2 Mar 2020 11:13:19 -0300
-Subject: perf tests bp_account: Make global variable static
-
-commit cff20b3151ccab690715cb6cf0f5da5cccb32adf upstream.
-
-To fix the build with newer gccs, that without this patch exit with:
-
-    LD       /tmp/build/perf/tests/perf-in.o
-  ld: /tmp/build/perf/tests/bp_account.o:/git/perf/tools/perf/tests/bp_account.c:22: multiple definition of `the_var'; /tmp/build/perf/tests/bp_signal.o:/git/perf/tools/perf/tests/bp_signal.c:38: first defined here
-  make[4]: *** [/git/perf/tools/build/Makefile.build:145: /tmp/build/perf/tests/perf-in.o] Error 1
-
-First noticed in fedora:rawhide/32 with:
-
-  [perfbuilder@a5ff49d6e6e4 ~]$ gcc --version
-  gcc (GCC) 10.0.1 20200216 (Red Hat 10.0.1-0.8)
-
-Reported-by: Jiri Olsa <jolsa@kernel.org>
-Cc: Adrian Hunter <adrian.hunter@intel.com>
-Cc: Namhyung Kim <namhyung@kernel.org>
-Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-Cc: Ben Hutchings <ben@decadent.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- tools/perf/tests/bp_account.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-(limited to 'tools/perf/tests/bp_account.c')
-
-diff --git a/tools/perf/tests/bp_account.c b/tools/perf/tests/bp_account.c
-index 016bba2c142db..55a9de311d7b0 100644
---- a/tools/perf/tests/bp_account.c
-+++ b/tools/perf/tests/bp_account.c
-@@ -23,7 +23,7 @@
- #include "../perf-sys.h"
- #include "cloexec.h"
- 
--volatile long the_var;
-+static volatile long the_var;
- 
- static noinline int test_function(void)
- {
--- 
-cgit 1.2.3-1.el7
-
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-03.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-03.patch
deleted file mode 100644
index 8b8a299..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-03.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-perf bench: Share some global variables to fix build with gcc 10
-Upstream-Status: Backport https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/tools/perf/bench?h=linux-5.4.y&id=df35e878d0a51755fb500e2e8e29c7ebb0239756
-Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
-
-From df35e878d0a51755fb500e2e8e29c7ebb0239756 Mon Sep 17 00:00:00 2001
-From: Arnaldo Carvalho de Melo <acme@redhat.com>
-Date: Mon, 2 Mar 2020 12:09:38 -0300
-Subject: perf bench: Share some global variables to fix build with gcc 10
-
-commit e4d9b04b973b2dbce7b42af95ea70d07da1c936d upstream.
-
-Noticed with gcc 10 (fedora rawhide) that those variables were not being
-declared as static, so end up with:
-
-  ld: /tmp/build/perf/bench/epoll-wait.o:/git/perf/tools/perf/bench/epoll-wait.c:93: multiple definition of `end'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here
-  ld: /tmp/build/perf/bench/epoll-wait.o:/git/perf/tools/perf/bench/epoll-wait.c:93: multiple definition of `start'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here
-  ld: /tmp/build/perf/bench/epoll-wait.o:/git/perf/tools/perf/bench/epoll-wait.c:93: multiple definition of `runtime'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here
-  ld: /tmp/build/perf/bench/epoll-ctl.o:/git/perf/tools/perf/bench/epoll-ctl.c:38: multiple definition of `end'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here
-  ld: /tmp/build/perf/bench/epoll-ctl.o:/git/perf/tools/perf/bench/epoll-ctl.c:38: multiple definition of `start'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here
-  ld: /tmp/build/perf/bench/epoll-ctl.o:/git/perf/tools/perf/bench/epoll-ctl.c:38: multiple definition of `runtime'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here
-  make[4]: *** [/git/perf/tools/build/Makefile.build:145: /tmp/build/perf/bench/perf-in.o] Error 1
-
-Prefix those with bench__ and add them to bench/bench.h, so that we can
-share those on the tools needing to access those variables from signal
-handlers.
-
-Acked-by: Thomas Gleixner <tglx@linutronix.de>
-Cc: Adrian Hunter <adrian.hunter@intel.com>
-Cc: Davidlohr Bueso <dave@stgolabs.net>
-Cc: Jiri Olsa <jolsa@kernel.org>
-Cc: Namhyung Kim <namhyung@kernel.org>
-Link: http://lore.kernel.org/lkml/20200303155811.GD13702@kernel.org
-Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-Cc: Ben Hutchings <ben@decadent.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- tools/perf/bench/bench.h         |  4 ++++
- tools/perf/bench/epoll-ctl.c     |  7 +++----
- tools/perf/bench/epoll-wait.c    | 11 +++++------
- tools/perf/bench/futex-hash.c    | 12 ++++++------
- tools/perf/bench/futex-lock-pi.c | 11 +++++------
- 5 files changed, 23 insertions(+), 22 deletions(-)
-
-(limited to 'tools/perf/bench')
-
-diff --git a/tools/perf/bench/bench.h b/tools/perf/bench/bench.h
-index fddb3ced9db62..4aa6de1aa67dc 100644
---- a/tools/perf/bench/bench.h
-+++ b/tools/perf/bench/bench.h
-@@ -2,6 +2,10 @@
- #ifndef BENCH_H
- #define BENCH_H
- 
-+#include <sys/time.h>
-+
-+extern struct timeval bench__start, bench__end, bench__runtime;
-+
- /*
-  * The madvise transparent hugepage constants were added in glibc
-  * 2.13. For compatibility with older versions of glibc, define these
-diff --git a/tools/perf/bench/epoll-ctl.c b/tools/perf/bench/epoll-ctl.c
-index bb617e5688412..a7526c05df382 100644
---- a/tools/perf/bench/epoll-ctl.c
-+++ b/tools/perf/bench/epoll-ctl.c
-@@ -35,7 +35,6 @@
- 
- static unsigned int nthreads = 0;
- static unsigned int nsecs    = 8;
--struct timeval start, end, runtime;
- static bool done, __verbose, randomize;
- 
- /*
-@@ -94,8 +93,8 @@ static void toggle_done(int sig __maybe_unused,
- {
- 	/* inform all threads that we're done for the day */
- 	done = true;
--	gettimeofday(&end, NULL);
--	timersub(&end, &start, &runtime);
-+	gettimeofday(&bench__end, NULL);
-+	timersub(&bench__end, &bench__start, &bench__runtime);
- }
- 
- static void nest_epollfd(void)
-@@ -361,7 +360,7 @@ int bench_epoll_ctl(int argc, const char **argv)
- 
- 	threads_starting = nthreads;
- 
--	gettimeofday(&start, NULL);
-+	gettimeofday(&bench__start, NULL);
- 
- 	do_threads(worker, cpu);
- 
-diff --git a/tools/perf/bench/epoll-wait.c b/tools/perf/bench/epoll-wait.c
-index 7af694437f4ea..d1c5cb526b9ff 100644
---- a/tools/perf/bench/epoll-wait.c
-+++ b/tools/perf/bench/epoll-wait.c
-@@ -90,7 +90,6 @@
- 
- static unsigned int nthreads = 0;
- static unsigned int nsecs    = 8;
--struct timeval start, end, runtime;
- static bool wdone, done, __verbose, randomize, nonblocking;
- 
- /*
-@@ -276,8 +275,8 @@ static void toggle_done(int sig __maybe_unused,
- {
- 	/* inform all threads that we're done for the day */
- 	done = true;
--	gettimeofday(&end, NULL);
--	timersub(&end, &start, &runtime);
-+	gettimeofday(&bench__end, NULL);
-+	timersub(&bench__end, &bench__start, &bench__runtime);
- }
- 
- static void print_summary(void)
-@@ -287,7 +286,7 @@ static void print_summary(void)
- 
- 	printf("\nAveraged %ld operations/sec (+- %.2f%%), total secs = %d\n",
- 	       avg, rel_stddev_stats(stddev, avg),
--	       (int) runtime.tv_sec);
-+	       (int)bench__runtime.tv_sec);
- }
- 
- static int do_threads(struct worker *worker, struct perf_cpu_map *cpu)
-@@ -479,7 +478,7 @@ int bench_epoll_wait(int argc, const char **argv)
- 
- 	threads_starting = nthreads;
- 
--	gettimeofday(&start, NULL);
-+	gettimeofday(&bench__start, NULL);
- 
- 	do_threads(worker, cpu);
- 
-@@ -519,7 +518,7 @@ int bench_epoll_wait(int argc, const char **argv)
- 		qsort(worker, nthreads, sizeof(struct worker), cmpworker);
- 
- 	for (i = 0; i < nthreads; i++) {
--		unsigned long t = worker[i].ops/runtime.tv_sec;
-+		unsigned long t = worker[i].ops / bench__runtime.tv_sec;
- 
- 		update_stats(&throughput_stats, t);
- 
-diff --git a/tools/perf/bench/futex-hash.c b/tools/perf/bench/futex-hash.c
-index 8ba0c3330a9a2..21776862e940f 100644
---- a/tools/perf/bench/futex-hash.c
-+++ b/tools/perf/bench/futex-hash.c
-@@ -37,7 +37,7 @@ static unsigned int nfutexes = 1024;
- static bool fshared = false, done = false, silent = false;
- static int futex_flag = 0;
- 
--struct timeval start, end, runtime;
-+struct timeval bench__start, bench__end, bench__runtime;
- static pthread_mutex_t thread_lock;
- static unsigned int threads_starting;
- static struct stats throughput_stats;
-@@ -103,8 +103,8 @@ static void toggle_done(int sig __maybe_unused,
- {
- 	/* inform all threads that we're done for the day */
- 	done = true;
--	gettimeofday(&end, NULL);
--	timersub(&end, &start, &runtime);
-+	gettimeofday(&bench__end, NULL);
-+	timersub(&bench__end, &bench__start, &bench__runtime);
- }
- 
- static void print_summary(void)
-@@ -114,7 +114,7 @@ static void print_summary(void)
- 
- 	printf("%sAveraged %ld operations/sec (+- %.2f%%), total secs = %d\n",
- 	       !silent ? "\n" : "", avg, rel_stddev_stats(stddev, avg),
--	       (int) runtime.tv_sec);
-+	       (int)bench__runtime.tv_sec);
- }
- 
- int bench_futex_hash(int argc, const char **argv)
-@@ -161,7 +161,7 @@ int bench_futex_hash(int argc, const char **argv)
- 
- 	threads_starting = nthreads;
- 	pthread_attr_init(&thread_attr);
--	gettimeofday(&start, NULL);
-+	gettimeofday(&bench__start, NULL);
- 	for (i = 0; i < nthreads; i++) {
- 		worker[i].tid = i;
- 		worker[i].futex = calloc(nfutexes, sizeof(*worker[i].futex));
-@@ -204,7 +204,7 @@ int bench_futex_hash(int argc, const char **argv)
- 	pthread_mutex_destroy(&thread_lock);
- 
- 	for (i = 0; i < nthreads; i++) {
--		unsigned long t = worker[i].ops/runtime.tv_sec;
-+		unsigned long t = worker[i].ops / bench__runtime.tv_sec;
- 		update_stats(&throughput_stats, t);
- 		if (!silent) {
- 			if (nfutexes == 1)
-diff --git a/tools/perf/bench/futex-lock-pi.c b/tools/perf/bench/futex-lock-pi.c
-index d0cae8125423f..30d97121dc4fb 100644
---- a/tools/perf/bench/futex-lock-pi.c
-+++ b/tools/perf/bench/futex-lock-pi.c
-@@ -37,7 +37,6 @@ static bool silent = false, multi = false;
- static bool done = false, fshared = false;
- static unsigned int nthreads = 0;
- static int futex_flag = 0;
--struct timeval start, end, runtime;
- static pthread_mutex_t thread_lock;
- static unsigned int threads_starting;
- static struct stats throughput_stats;
-@@ -64,7 +63,7 @@ static void print_summary(void)
- 
- 	printf("%sAveraged %ld operations/sec (+- %.2f%%), total secs = %d\n",
- 	       !silent ? "\n" : "", avg, rel_stddev_stats(stddev, avg),
--	       (int) runtime.tv_sec);
-+	       (int)bench__runtime.tv_sec);
- }
- 
- static void toggle_done(int sig __maybe_unused,
-@@ -73,8 +72,8 @@ static void toggle_done(int sig __maybe_unused,
- {
- 	/* inform all threads that we're done for the day */
- 	done = true;
--	gettimeofday(&end, NULL);
--	timersub(&end, &start, &runtime);
-+	gettimeofday(&bench__end, NULL);
-+	timersub(&bench__end, &bench__start, &bench__runtime);
- }
- 
- static void *workerfn(void *arg)
-@@ -185,7 +184,7 @@ int bench_futex_lock_pi(int argc, const char **argv)
- 
- 	threads_starting = nthreads;
- 	pthread_attr_init(&thread_attr);
--	gettimeofday(&start, NULL);
-+	gettimeofday(&bench__start, NULL);
- 
- 	create_threads(worker, thread_attr, cpu);
- 	pthread_attr_destroy(&thread_attr);
-@@ -211,7 +210,7 @@ int bench_futex_lock_pi(int argc, const char **argv)
- 	pthread_mutex_destroy(&thread_lock);
- 
- 	for (i = 0; i < nthreads; i++) {
--		unsigned long t = worker[i].ops/runtime.tv_sec;
-+		unsigned long t = worker[i].ops / bench__runtime.tv_sec;
- 
- 		update_stats(&throughput_stats, t);
- 		if (!silent)
--- 
-cgit 1.2.3-1.el7
-
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-04.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-04.patch
deleted file mode 100644
index dae1222..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-04.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-libtraceevent: Fix build with binutils 2.35
-Upstream-Status: Backport https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/patch/tools/lib/traceevent/plugins/Makefile?id=c2fd34d4311033120fa502aa8bd4723cdeee0103
-Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
-
-From c2fd34d4311033120fa502aa8bd4723cdeee0103 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Sat, 25 Jul 2020 02:06:23 +0100
-Subject: libtraceevent: Fix build with binutils 2.35
-
-commit 39efdd94e314336f4acbac4c07e0f37bdc3bef71 upstream.
-
-In binutils 2.35, 'nm -D' changed to show symbol versions along with
-symbol names, with the usual @@ separator.  When generating
-libtraceevent-dynamic-list we need just the names, so strip off the
-version suffix if present.
-
-Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-Tested-by: Salvatore Bonaccorso <carnil@debian.org>
-Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
-Cc: linux-trace-devel@vger.kernel.org
-Cc: stable@vger.kernel.org
-Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- tools/lib/traceevent/plugins/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-(limited to 'tools/lib/traceevent/plugins/Makefile')
-
-diff --git a/tools/lib/traceevent/plugins/Makefile b/tools/lib/traceevent/plugins/Makefile
-index f440989fa55e4..23c3535bcbd6b 100644
---- a/tools/lib/traceevent/plugins/Makefile
-+++ b/tools/lib/traceevent/plugins/Makefile
-@@ -196,7 +196,7 @@ define do_generate_dynamic_list_file
- 	xargs echo "U w W" | tr 'w ' 'W\n' | sort -u | xargs echo`;\
- 	if [ "$$symbol_type" = "U W" ];then				\
- 		(echo '{';                                              \
--		$(NM) -u -D $1 | awk 'NF>1 {print "\t"$$2";"}' | sort -u;\
-+		$(NM) -u -D $1 | awk 'NF>1 {sub("@.*", "", $$2); print "\t"$$2";"}' | sort -u;\
- 		echo '};';                                              \
- 		) > $2;                                                 \
- 	else                                                            \
--- 
-cgit 1.2.3-1.el7
-
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-n1sdp.inc b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-n1sdp.inc
deleted file mode 100644
index 7a2d49b..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-n1sdp.inc
+++ /dev/null
@@ -1,27 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/linux-linaro-arm-5.4:"
-
-SRC_URI_append = " \
-    file://0001-TMP-iommu-arm-smmu-v3-Ignore-IOPF-capabilities.patch \
-    file://0002-pci_quirk-add-acs-override-for-PCI-devices.patch \
-    file://0003-pcie-Add-quirk-for-the-Arm-Neoverse-N1SDP-platform.patch \
-    file://0004-n1sdp-update-n1sdp-pci-quirk-for-SR-IOV-support.patch \
-    file://0005-n1sdp-pcie-add-quirk-support-enabling-remote-chip-PC.patch \
-    file://enable-realtek-R8169.cfg \
-    file://scripts-dtc-remove-redundant-YYLOC.patch \
-    "
-
-# Referring to commit TAG N1SDP-2020.07.27
-SRCREV = "84baaae9e751c058717d9702438429257f077f03"
-
-# Use intree defconfig
-KBUILD_DEFCONFIG = "defconfig"
-
-# Since the intree defconfig in n1sdp kernel repository is not setting all the configs,
-# KCONFIG_MODE is set to "alldefconfig" to properly expand the defconfig.
-KCONFIG_MODE = "--alldefconfig"
-
-COMPATIBLE_MACHINE = "n1sdp"
-
-# Since we use the intree defconfig and the preempt-rt turns off some configs
-# do_kernel_configcheck will display warnings. So, lets disable it.
-KCONF_AUDIT_LEVEL_pn-linux-linaro-arm-rt = "0"
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt-5.4/0001-xen-use-handle_fasteoi_irq-to-handle-xen-dynamic-eve.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt-5.4/0001-xen-use-handle_fasteoi_irq-to-handle-xen-dynamic-eve.patch
deleted file mode 100644
index 39c159f..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt-5.4/0001-xen-use-handle_fasteoi_irq-to-handle-xen-dynamic-eve.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From c2971c8a3f076ea8a522ce4fbb367d112d86c13a Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <sstabellini@kernel.org>
-Date: Mon, 27 Apr 2020 16:15:26 -0700
-Subject: [PATCH] xen: use handle_fasteoi_irq to handle xen dynamic events
-
-When handling Xen events, we need to make sure the following sequence is
-followed:
-
-- mask event
-- handle event and clear event (the order does not matter)
-- unmask event
-
-It is not possible to implement this flow with handle_edge_irq, so
-switch back to handle_fasteoi_irq. Please note that Xen event irqs are
-ONESHOT. Also note that handle_fasteoi_irq was in-use before the
-following commit, that is partially reverted by this patch:
-
-7e186bdd0098 xen: do not clear and mask evtchns in __xen_evtchn_do_upcall
-
-PIRQ handling is left unchanged.
-
-This patch fixes a domU hang observed when using LinuxRT as dom0 kernel.
-
-Link: https://lkml.org/lkml/2020/4/27/1287
-Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
-
-Upstream-Status: Inappropriate since the upstream solution diverges from this patch
-Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
----
- drivers/xen/events/events_base.c | 13 +++----------
- 1 file changed, 3 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
-index 6c8843968a52..1873a19b8b24 100644
---- a/drivers/xen/events/events_base.c
-+++ b/drivers/xen/events/events_base.c
-@@ -845,7 +845,7 @@ int bind_evtchn_to_irq(unsigned int evtchn)
- 			goto out;
- 
- 		irq_set_chip_and_handler_name(irq, &xen_dynamic_chip,
--					      handle_edge_irq, "event");
-+					      handle_fasteoi_irq, "event");
- 
- 		ret = xen_irq_info_evtchn_setup(irq, evtchn);
- 		if (ret < 0) {
-@@ -978,7 +978,7 @@ int bind_virq_to_irq(unsigned int virq, unsigned int cpu, bool percpu)
- 						      handle_percpu_irq, "virq");
- 		else
- 			irq_set_chip_and_handler_name(irq, &xen_dynamic_chip,
--						      handle_edge_irq, "virq");
-+						      handle_fasteoi_irq, "virq");
- 
- 		bind_virq.virq = virq;
- 		bind_virq.vcpu = xen_vcpu_nr(cpu);
-@@ -1387,12 +1387,6 @@ static void ack_dynirq(struct irq_data *data)
- 		clear_evtchn(evtchn);
- }
- 
--static void mask_ack_dynirq(struct irq_data *data)
--{
--	disable_dynirq(data);
--	ack_dynirq(data);
--}
--
- static int retrigger_dynirq(struct irq_data *data)
- {
- 	unsigned int evtchn = evtchn_from_irq(data->irq);
-@@ -1595,8 +1589,7 @@ static struct irq_chip xen_dynamic_chip __read_mostly = {
- 	.irq_mask		= disable_dynirq,
- 	.irq_unmask		= enable_dynirq,
- 
--	.irq_ack		= ack_dynirq,
--	.irq_mask_ack		= mask_ack_dynirq,
-+	.irq_eoi		= ack_dynirq,
- 
- 	.irq_set_affinity	= set_affinity_irq,
- 	.irq_retrigger		= retrigger_dynirq,
--- 
-2.17.1
-
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt_5.4.bb b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt_5.4.bb
deleted file mode 100644
index fa3bb73..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt_5.4.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-# This recipe provides the kernel with PREEMPT_RT patches and is based on
-# linux-linaro-arm_5.4.bb. Set PREFERRED_PROVIDER_virtual/kernel to
-# linux-linaro-arm-rt to enable it as the default kernel.
-require linux-linaro-arm_5.4.bb
-
-
-#
-# Include preempt-rt patches
-#
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-5.4:"
-SRC_URI_append = " \
-    https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.4/older/patch-5.4.3-rt1.patch.gz;name=rt-patch \
-    file://0001-xen-use-handle_fasteoi_irq-to-handle-xen-dynamic-eve.patch \
-    "
-SRC_URI[rt-patch.sha256sum] = "6b92ba32c7ce30919c9b66e49e5f1dce58e1f8bd92fef91e548d6f2d434a2b39"
-
-LINUX_KERNEL_TYPE = "preempt-rt"
-
-KERNEL_FEATURES += "features/arm-autonomy/preempt-rt-extras.scc"
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm.inc b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm.inc
deleted file mode 100644
index 4859a66..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm.inc
+++ /dev/null
@@ -1,29 +0,0 @@
-# Recipe for building linaro kernel
-
-SUMMARY = "Linux Kernel Upstream, supported by Arm/Linaro"
-SECTION = "kernel"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
-
-inherit kernel
-inherit kernel-yocto
-
-# Require linux-yocto.inc in order to have separate build dirs when building
-# LINUX_KERNEL_TYPE as 'standard' and 'preempt-rt'
-require recipes-kernel/linux/linux-yocto.inc
-
-SRC_URI = "git://git.linaro.org/landing-teams/working/arm/kernel-release.git;branch=${KBRANCH} \
-           git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=${KMETA_BRANCH};destsuffix=kernel-meta \
-           file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch"
-
-DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
-DEPENDS += "openssl-native util-linux-native"
-
-LINUX_VERSION ?= "${PV}"
-S = "${WORKDIR}/git"
-
-# Add machine-specific settings
-MACHINE_KERNEL_REQUIRE ?= ""
-MACHINE_KERNEL_REQUIRE_n1sdp = "linux-linaro-arm-n1sdp.inc"
-
-require ${MACHINE_KERNEL_REQUIRE}
diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm_5.4.bb b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm_5.4.bb
deleted file mode 100644
index 8e880ed..0000000
--- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm_5.4.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SRCREV ?= "84baaae9e751c058717d9702438429257f077f03"
-SRCREV_meta ?= "e32057eca987b7abbe3eb47ba36f06af8711278a"
-
-# KBRANCH is set to n1sdp by default as there is no master or 5.4 branch on the repository
-KBRANCH ?= "n1sdp"
-KMETA_BRANCH ?= "yocto-5.4"
-
-# Apply following patches
-SRC_URI_append = " \
-    file://fix-bfd-link.patch \
-    file://perf-fixup-gcc10-01.patch \
-    file://perf-fixup-gcc10-02.patch \
-    file://perf-fixup-gcc10-03.patch \
-    file://perf-fixup-gcc10-04.patch \
-    "
-
-require linux-linaro-arm.inc
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] arm-autonomy/linux-arm-autonomy: Fix Dom0 boot issue with preempt_rt kernel
  2021-03-25 14:00 [PATCH 1/2] arm-autonomy/n1sdp: Remove support for linux-linaro-arm_5.4 Peter Hoyes
@ 2021-03-25 14:00 ` Peter Hoyes
  2021-03-29 15:51 ` [meta-arm] [PATCH 1/2] arm-autonomy/n1sdp: Remove support for linux-linaro-arm_5.4 Jon Mason
  1 sibling, 0 replies; 3+ messages in thread
From: Peter Hoyes @ 2021-03-25 14:00 UTC (permalink / raw)
  To: meta-arm; +Cc: nd, Peter Hoyes, Luca Fancellu

From: Peter Hoyes <Peter.Hoyes@arm.com>

To fix Dom0 with PREEMPT_RT kernels older than 5.10.24, backport the
following patches:
    0001-xen-events-reset-affinity-of-2-level-event-when-tear.patch
    0002-xen-events-don-t-unmask-an-event-channel-when-an-eoi.patch
    0003-xen-events-avoid-handling-the-same-event-on-two-cpus.patch

Also, add the following fix (waiting to be merged upstream):
    0004-xen-evtchn-Change-irq_info-lock-to-raw_spinlock_t.patch

Issue-Id: SCM-2147
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Change-Id: I0b3a93139b0229ceb6001d87b545704b9bfc581e
---
 ...-affinity-of-2-level-event-when-tear.patch | 119 ++++++
 ...-unmask-an-event-channel-when-an-eoi.patch | 390 ++++++++++++++++++
 ...-handling-the-same-event-on-two-cpus.patch | 130 ++++++
 ...ange-irq_info-lock-to-raw_spinlock_t.patch |  77 ++++
 .../linux/linux-arm-autonomy.inc              |  14 +-
 5 files changed, 727 insertions(+), 3 deletions(-)
 create mode 100644 meta-arm-autonomy/recipes-kernel/linux/files/0001-xen-events-reset-affinity-of-2-level-event-when-tear.patch
 create mode 100644 meta-arm-autonomy/recipes-kernel/linux/files/0002-xen-events-don-t-unmask-an-event-channel-when-an-eoi.patch
 create mode 100644 meta-arm-autonomy/recipes-kernel/linux/files/0003-xen-events-avoid-handling-the-same-event-on-two-cpus.patch
 create mode 100644 meta-arm-autonomy/recipes-kernel/linux/files/0004-xen-evtchn-Change-irq_info-lock-to-raw_spinlock_t.patch

diff --git a/meta-arm-autonomy/recipes-kernel/linux/files/0001-xen-events-reset-affinity-of-2-level-event-when-tear.patch b/meta-arm-autonomy/recipes-kernel/linux/files/0001-xen-events-reset-affinity-of-2-level-event-when-tear.patch
new file mode 100644
index 0000000..7a04073
--- /dev/null
+++ b/meta-arm-autonomy/recipes-kernel/linux/files/0001-xen-events-reset-affinity-of-2-level-event-when-tear.patch
@@ -0,0 +1,119 @@
+From c5844c4a7f3913c9ec6ac0607a7e441df7df1ba4 Mon Sep 17 00:00:00 2001
+From: Juergen Gross <jgross@suse.com>
+Date: Sat, 6 Mar 2021 17:18:31 +0100
+Subject: [PATCH 1/4] xen/events: reset affinity of 2-level event when tearing
+ it down
+
+commit 9e77d96b8e2724ed00380189f7b0ded61113b39f upstream.
+
+When creating a new event channel with 2-level events the affinity
+needs to be reset initially in order to avoid using an old affinity
+from earlier usage of the event channel port. So when tearing an event
+channel down reset all affinity bits.
+
+The same applies to the affinity when onlining a vcpu: all old
+affinity settings for this vcpu must be reset. As percpu events get
+initialized before the percpu event channel hook is called,
+resetting of the affinities happens after offlining a vcpu (this is
+working, as initial percpu memory is zeroed out).
+
+Cc: stable@vger.kernel.org
+Reported-by: Julien Grall <julien@xen.org>
+Signed-off-by: Juergen Gross <jgross@suse.com>
+Reviewed-by: Julien Grall <jgrall@amazon.com>
+Link: https://lore.kernel.org/r/20210306161833.4552-2-jgross@suse.com
+Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+Upstream-Status: Backport
+Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
+---
+ drivers/xen/events/events_2l.c       | 15 +++++++++++++++
+ drivers/xen/events/events_base.c     |  1 +
+ drivers/xen/events/events_internal.h |  8 ++++++++
+ 3 files changed, 24 insertions(+)
+
+diff --git a/drivers/xen/events/events_2l.c b/drivers/xen/events/events_2l.c
+index da87f3a1e351..a7f413c5c190 100644
+--- a/drivers/xen/events/events_2l.c
++++ b/drivers/xen/events/events_2l.c
+@@ -47,6 +47,11 @@ static unsigned evtchn_2l_max_channels(void)
+ 	return EVTCHN_2L_NR_CHANNELS;
+ }
+ 
++static void evtchn_2l_remove(evtchn_port_t evtchn, unsigned int cpu)
++{
++	clear_bit(evtchn, BM(per_cpu(cpu_evtchn_mask, cpu)));
++}
++
+ static void evtchn_2l_bind_to_cpu(evtchn_port_t evtchn, unsigned int cpu,
+ 				  unsigned int old_cpu)
+ {
+@@ -355,9 +360,18 @@ static void evtchn_2l_resume(void)
+ 				EVTCHN_2L_NR_CHANNELS/BITS_PER_EVTCHN_WORD);
+ }
+ 
++static int evtchn_2l_percpu_deinit(unsigned int cpu)
++{
++	memset(per_cpu(cpu_evtchn_mask, cpu), 0, sizeof(xen_ulong_t) *
++			EVTCHN_2L_NR_CHANNELS/BITS_PER_EVTCHN_WORD);
++
++	return 0;
++}
++
+ static const struct evtchn_ops evtchn_ops_2l = {
+ 	.max_channels      = evtchn_2l_max_channels,
+ 	.nr_channels       = evtchn_2l_max_channels,
++	.remove            = evtchn_2l_remove,
+ 	.bind_to_cpu       = evtchn_2l_bind_to_cpu,
+ 	.clear_pending     = evtchn_2l_clear_pending,
+ 	.set_pending       = evtchn_2l_set_pending,
+@@ -367,6 +381,7 @@ static const struct evtchn_ops evtchn_ops_2l = {
+ 	.unmask            = evtchn_2l_unmask,
+ 	.handle_events     = evtchn_2l_handle_events,
+ 	.resume	           = evtchn_2l_resume,
++	.percpu_deinit     = evtchn_2l_percpu_deinit,
+ };
+ 
+ void __init xen_evtchn_2l_init(void)
+diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
+index bbebe248b726..ae9215186093 100644
+--- a/drivers/xen/events/events_base.c
++++ b/drivers/xen/events/events_base.c
+@@ -338,6 +338,7 @@ static int xen_irq_info_pirq_setup(unsigned irq,
+ static void xen_irq_info_cleanup(struct irq_info *info)
+ {
+ 	set_evtchn_to_irq(info->evtchn, -1);
++	xen_evtchn_port_remove(info->evtchn, info->cpu);
+ 	info->evtchn = 0;
+ }
+ 
+diff --git a/drivers/xen/events/events_internal.h b/drivers/xen/events/events_internal.h
+index 0a97c0549db7..18a4090d0709 100644
+--- a/drivers/xen/events/events_internal.h
++++ b/drivers/xen/events/events_internal.h
+@@ -14,6 +14,7 @@ struct evtchn_ops {
+ 	unsigned (*nr_channels)(void);
+ 
+ 	int (*setup)(evtchn_port_t port);
++	void (*remove)(evtchn_port_t port, unsigned int cpu);
+ 	void (*bind_to_cpu)(evtchn_port_t evtchn, unsigned int cpu,
+ 			    unsigned int old_cpu);
+ 
+@@ -54,6 +55,13 @@ static inline int xen_evtchn_port_setup(evtchn_port_t evtchn)
+ 	return 0;
+ }
+ 
++static inline void xen_evtchn_port_remove(evtchn_port_t evtchn,
++					  unsigned int cpu)
++{
++	if (evtchn_ops->remove)
++		evtchn_ops->remove(evtchn, cpu);
++}
++
+ static inline void xen_evtchn_port_bind_to_cpu(evtchn_port_t evtchn,
+ 					       unsigned int cpu,
+ 					       unsigned int old_cpu)
+-- 
+2.17.1
+
diff --git a/meta-arm-autonomy/recipes-kernel/linux/files/0002-xen-events-don-t-unmask-an-event-channel-when-an-eoi.patch b/meta-arm-autonomy/recipes-kernel/linux/files/0002-xen-events-don-t-unmask-an-event-channel-when-an-eoi.patch
new file mode 100644
index 0000000..8b92eb5
--- /dev/null
+++ b/meta-arm-autonomy/recipes-kernel/linux/files/0002-xen-events-don-t-unmask-an-event-channel-when-an-eoi.patch
@@ -0,0 +1,390 @@
+From 3ce11f974986cb4b89126681989e4bafe612592d Mon Sep 17 00:00:00 2001
+From: Juergen Gross <jgross@suse.com>
+Date: Mon, 15 Mar 2021 08:11:29 +0100
+Subject: [PATCH 2/4] xen/events: don't unmask an event channel when an eoi is
+ pending
+
+commit 25da4618af240fbec6112401498301a6f2bc9702 upstream.
+
+An event channel should be kept masked when an eoi is pending for it.
+When being migrated to another cpu it might be unmasked, though.
+
+In order to avoid this keep three different flags for each event channel
+to be able to distinguish "normal" masking/unmasking from eoi related
+masking/unmasking and temporary masking. The event channel should only
+be able to generate an interrupt if all flags are cleared.
+
+Cc: stable@vger.kernel.org
+Fixes: 54c9de89895e ("xen/events: add a new "late EOI" evtchn framework")
+Reported-by: Julien Grall <julien@xen.org>
+Signed-off-by: Juergen Gross <jgross@suse.com>
+Reviewed-by: Julien Grall <jgrall@amazon.com>
+Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+Tested-by: Ross Lagerwall <ross.lagerwall@citrix.com>
+Link: https://lore.kernel.org/r/20210306161833.4552-3-jgross@suse.com
+[boris -- corrected Fixed tag format]
+Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+Upstream-Status: Backport
+Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
+---
+ drivers/xen/events/events_2l.c       |   7 --
+ drivers/xen/events/events_base.c     | 117 ++++++++++++++++++++-------
+ drivers/xen/events/events_fifo.c     |   7 --
+ drivers/xen/events/events_internal.h |   6 --
+ 4 files changed, 88 insertions(+), 49 deletions(-)
+
+diff --git a/drivers/xen/events/events_2l.c b/drivers/xen/events/events_2l.c
+index a7f413c5c190..b8f2f971c2f0 100644
+--- a/drivers/xen/events/events_2l.c
++++ b/drivers/xen/events/events_2l.c
+@@ -77,12 +77,6 @@ static bool evtchn_2l_is_pending(evtchn_port_t port)
+ 	return sync_test_bit(port, BM(&s->evtchn_pending[0]));
+ }
+ 
+-static bool evtchn_2l_test_and_set_mask(evtchn_port_t port)
+-{
+-	struct shared_info *s = HYPERVISOR_shared_info;
+-	return sync_test_and_set_bit(port, BM(&s->evtchn_mask[0]));
+-}
+-
+ static void evtchn_2l_mask(evtchn_port_t port)
+ {
+ 	struct shared_info *s = HYPERVISOR_shared_info;
+@@ -376,7 +370,6 @@ static const struct evtchn_ops evtchn_ops_2l = {
+ 	.clear_pending     = evtchn_2l_clear_pending,
+ 	.set_pending       = evtchn_2l_set_pending,
+ 	.is_pending        = evtchn_2l_is_pending,
+-	.test_and_set_mask = evtchn_2l_test_and_set_mask,
+ 	.mask              = evtchn_2l_mask,
+ 	.unmask            = evtchn_2l_unmask,
+ 	.handle_events     = evtchn_2l_handle_events,
+diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
+index ae9215186093..101b99576799 100644
+--- a/drivers/xen/events/events_base.c
++++ b/drivers/xen/events/events_base.c
+@@ -96,13 +96,18 @@ struct irq_info {
+ 	struct list_head eoi_list;
+ 	short refcnt;
+ 	short spurious_cnt;
+-	enum xen_irq_type type; /* type */
++	short type;             /* type */
++	u8 mask_reason;         /* Why is event channel masked */
++#define EVT_MASK_REASON_EXPLICIT	0x01
++#define EVT_MASK_REASON_TEMPORARY	0x02
++#define EVT_MASK_REASON_EOI_PENDING	0x04
+ 	unsigned irq;
+ 	evtchn_port_t evtchn;   /* event channel */
+ 	unsigned short cpu;     /* cpu bound */
+ 	unsigned short eoi_cpu; /* EOI must happen on this cpu-1 */
+ 	unsigned int irq_epoch; /* If eoi_cpu valid: irq_epoch of event */
+ 	u64 eoi_time;           /* Time in jiffies when to EOI. */
++	spinlock_t lock;
+ 
+ 	union {
+ 		unsigned short virq;
+@@ -151,6 +156,7 @@ static DEFINE_RWLOCK(evtchn_rwlock);
+  *   evtchn_rwlock
+  *     IRQ-desc lock
+  *       percpu eoi_list_lock
++ *         irq_info->lock
+  */
+ 
+ static LIST_HEAD(xen_irq_list_head);
+@@ -272,6 +278,8 @@ static int xen_irq_info_common_setup(struct irq_info *info,
+ 	info->irq = irq;
+ 	info->evtchn = evtchn;
+ 	info->cpu = cpu;
++	info->mask_reason = EVT_MASK_REASON_EXPLICIT;
++	spin_lock_init(&info->lock);
+ 
+ 	ret = set_evtchn_to_irq(evtchn, irq);
+ 	if (ret < 0)
+@@ -419,6 +427,34 @@ unsigned int cpu_from_evtchn(evtchn_port_t evtchn)
+ 	return ret;
+ }
+ 
++static void do_mask(struct irq_info *info, u8 reason)
++{
++	unsigned long flags;
++
++	spin_lock_irqsave(&info->lock, flags);
++
++	if (!info->mask_reason)
++		mask_evtchn(info->evtchn);
++
++	info->mask_reason |= reason;
++
++	spin_unlock_irqrestore(&info->lock, flags);
++}
++
++static void do_unmask(struct irq_info *info, u8 reason)
++{
++	unsigned long flags;
++
++	spin_lock_irqsave(&info->lock, flags);
++
++	info->mask_reason &= ~reason;
++
++	if (!info->mask_reason)
++		unmask_evtchn(info->evtchn);
++
++	spin_unlock_irqrestore(&info->lock, flags);
++}
++
+ #ifdef CONFIG_X86
+ static bool pirq_check_eoi_map(unsigned irq)
+ {
+@@ -546,7 +582,7 @@ static void xen_irq_lateeoi_locked(struct irq_info *info, bool spurious)
+ 	}
+ 
+ 	info->eoi_time = 0;
+-	unmask_evtchn(evtchn);
++	do_unmask(info, EVT_MASK_REASON_EOI_PENDING);
+ }
+ 
+ static void xen_irq_lateeoi_worker(struct work_struct *work)
+@@ -733,7 +769,8 @@ static void pirq_query_unmask(int irq)
+ 
+ static void eoi_pirq(struct irq_data *data)
+ {
+-	evtchn_port_t evtchn = evtchn_from_irq(data->irq);
++	struct irq_info *info = info_for_irq(data->irq);
++	evtchn_port_t evtchn = info ? info->evtchn : 0;
+ 	struct physdev_eoi eoi = { .irq = pirq_from_irq(data->irq) };
+ 	int rc = 0;
+ 
+@@ -742,14 +779,13 @@ static void eoi_pirq(struct irq_data *data)
+ 
+ 	if (unlikely(irqd_is_setaffinity_pending(data)) &&
+ 	    likely(!irqd_irq_disabled(data))) {
+-		int masked = test_and_set_mask(evtchn);
++		do_mask(info, EVT_MASK_REASON_TEMPORARY);
+ 
+ 		clear_evtchn(evtchn);
+ 
+ 		irq_move_masked_irq(data);
+ 
+-		if (!masked)
+-			unmask_evtchn(evtchn);
++		do_unmask(info, EVT_MASK_REASON_TEMPORARY);
+ 	} else
+ 		clear_evtchn(evtchn);
+ 
+@@ -802,7 +838,8 @@ static unsigned int __startup_pirq(unsigned int irq)
+ 		goto err;
+ 
+ out:
+-	unmask_evtchn(evtchn);
++	do_unmask(info, EVT_MASK_REASON_EXPLICIT);
++
+ 	eoi_pirq(irq_get_irq_data(irq));
+ 
+ 	return 0;
+@@ -829,7 +866,7 @@ static void shutdown_pirq(struct irq_data *data)
+ 	if (!VALID_EVTCHN(evtchn))
+ 		return;
+ 
+-	mask_evtchn(evtchn);
++	do_mask(info, EVT_MASK_REASON_EXPLICIT);
+ 	xen_evtchn_close(evtchn);
+ 	xen_irq_info_cleanup(info);
+ }
+@@ -1656,10 +1693,10 @@ void rebind_evtchn_irq(evtchn_port_t evtchn, int irq)
+ }
+ 
+ /* Rebind an evtchn so that it gets delivered to a specific cpu */
+-static int xen_rebind_evtchn_to_cpu(evtchn_port_t evtchn, unsigned int tcpu)
++static int xen_rebind_evtchn_to_cpu(struct irq_info *info, unsigned int tcpu)
+ {
+ 	struct evtchn_bind_vcpu bind_vcpu;
+-	int masked;
++	evtchn_port_t evtchn = info ? info->evtchn : 0;
+ 
+ 	if (!VALID_EVTCHN(evtchn))
+ 		return -1;
+@@ -1675,7 +1712,7 @@ static int xen_rebind_evtchn_to_cpu(evtchn_port_t evtchn, unsigned int tcpu)
+ 	 * Mask the event while changing the VCPU binding to prevent
+ 	 * it being delivered on an unexpected VCPU.
+ 	 */
+-	masked = test_and_set_mask(evtchn);
++	do_mask(info, EVT_MASK_REASON_TEMPORARY);
+ 
+ 	/*
+ 	 * If this fails, it usually just indicates that we're dealing with a
+@@ -1685,8 +1722,7 @@ static int xen_rebind_evtchn_to_cpu(evtchn_port_t evtchn, unsigned int tcpu)
+ 	if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_vcpu, &bind_vcpu) >= 0)
+ 		bind_evtchn_to_cpu(evtchn, tcpu);
+ 
+-	if (!masked)
+-		unmask_evtchn(evtchn);
++	do_unmask(info, EVT_MASK_REASON_TEMPORARY);
+ 
+ 	return 0;
+ }
+@@ -1695,7 +1731,7 @@ static int set_affinity_irq(struct irq_data *data, const struct cpumask *dest,
+ 			    bool force)
+ {
+ 	unsigned tcpu = cpumask_first_and(dest, cpu_online_mask);
+-	int ret = xen_rebind_evtchn_to_cpu(evtchn_from_irq(data->irq), tcpu);
++	int ret = xen_rebind_evtchn_to_cpu(info_for_irq(data->irq), tcpu);
+ 
+ 	if (!ret)
+ 		irq_data_update_effective_affinity(data, cpumask_of(tcpu));
+@@ -1714,37 +1750,39 @@ EXPORT_SYMBOL_GPL(xen_set_affinity_evtchn);
+ 
+ static void enable_dynirq(struct irq_data *data)
+ {
+-	evtchn_port_t evtchn = evtchn_from_irq(data->irq);
++	struct irq_info *info = info_for_irq(data->irq);
++	evtchn_port_t evtchn = info ? info->evtchn : 0;
+ 
+ 	if (VALID_EVTCHN(evtchn))
+-		unmask_evtchn(evtchn);
++		do_unmask(info, EVT_MASK_REASON_EXPLICIT);
+ }
+ 
+ static void disable_dynirq(struct irq_data *data)
+ {
+-	evtchn_port_t evtchn = evtchn_from_irq(data->irq);
++	struct irq_info *info = info_for_irq(data->irq);
++	evtchn_port_t evtchn = info ? info->evtchn : 0;
+ 
+ 	if (VALID_EVTCHN(evtchn))
+-		mask_evtchn(evtchn);
++		do_mask(info, EVT_MASK_REASON_EXPLICIT);
+ }
+ 
+ static void ack_dynirq(struct irq_data *data)
+ {
+-	evtchn_port_t evtchn = evtchn_from_irq(data->irq);
++	struct irq_info *info = info_for_irq(data->irq);
++	evtchn_port_t evtchn = info ? info->evtchn : 0;
+ 
+ 	if (!VALID_EVTCHN(evtchn))
+ 		return;
+ 
+ 	if (unlikely(irqd_is_setaffinity_pending(data)) &&
+ 	    likely(!irqd_irq_disabled(data))) {
+-		int masked = test_and_set_mask(evtchn);
++		do_mask(info, EVT_MASK_REASON_TEMPORARY);
+ 
+ 		clear_evtchn(evtchn);
+ 
+ 		irq_move_masked_irq(data);
+ 
+-		if (!masked)
+-			unmask_evtchn(evtchn);
++		do_unmask(info, EVT_MASK_REASON_TEMPORARY);
+ 	} else
+ 		clear_evtchn(evtchn);
+ }
+@@ -1755,18 +1793,39 @@ static void mask_ack_dynirq(struct irq_data *data)
+ 	ack_dynirq(data);
+ }
+ 
++static void lateeoi_ack_dynirq(struct irq_data *data)
++{
++	struct irq_info *info = info_for_irq(data->irq);
++	evtchn_port_t evtchn = info ? info->evtchn : 0;
++
++	if (VALID_EVTCHN(evtchn)) {
++		do_mask(info, EVT_MASK_REASON_EOI_PENDING);
++		clear_evtchn(evtchn);
++	}
++}
++
++static void lateeoi_mask_ack_dynirq(struct irq_data *data)
++{
++	struct irq_info *info = info_for_irq(data->irq);
++	evtchn_port_t evtchn = info ? info->evtchn : 0;
++
++	if (VALID_EVTCHN(evtchn)) {
++		do_mask(info, EVT_MASK_REASON_EXPLICIT);
++		clear_evtchn(evtchn);
++	}
++}
++
+ static int retrigger_dynirq(struct irq_data *data)
+ {
+-	evtchn_port_t evtchn = evtchn_from_irq(data->irq);
+-	int masked;
++	struct irq_info *info = info_for_irq(data->irq);
++	evtchn_port_t evtchn = info ? info->evtchn : 0;
+ 
+ 	if (!VALID_EVTCHN(evtchn))
+ 		return 0;
+ 
+-	masked = test_and_set_mask(evtchn);
++	do_mask(info, EVT_MASK_REASON_TEMPORARY);
+ 	set_evtchn(evtchn);
+-	if (!masked)
+-		unmask_evtchn(evtchn);
++	do_unmask(info, EVT_MASK_REASON_TEMPORARY);
+ 
+ 	return 1;
+ }
+@@ -1974,8 +2033,8 @@ static struct irq_chip xen_lateeoi_chip __read_mostly = {
+ 	.irq_mask		= disable_dynirq,
+ 	.irq_unmask		= enable_dynirq,
+ 
+-	.irq_ack		= mask_ack_dynirq,
+-	.irq_mask_ack		= mask_ack_dynirq,
++	.irq_ack		= lateeoi_ack_dynirq,
++	.irq_mask_ack		= lateeoi_mask_ack_dynirq,
+ 
+ 	.irq_set_affinity	= set_affinity_irq,
+ 	.irq_retrigger		= retrigger_dynirq,
+diff --git a/drivers/xen/events/events_fifo.c b/drivers/xen/events/events_fifo.c
+index b234f1766810..ad9fe51d3fb3 100644
+--- a/drivers/xen/events/events_fifo.c
++++ b/drivers/xen/events/events_fifo.c
+@@ -209,12 +209,6 @@ static bool evtchn_fifo_is_pending(evtchn_port_t port)
+ 	return sync_test_bit(EVTCHN_FIFO_BIT(PENDING, word), BM(word));
+ }
+ 
+-static bool evtchn_fifo_test_and_set_mask(evtchn_port_t port)
+-{
+-	event_word_t *word = event_word_from_port(port);
+-	return sync_test_and_set_bit(EVTCHN_FIFO_BIT(MASKED, word), BM(word));
+-}
+-
+ static void evtchn_fifo_mask(evtchn_port_t port)
+ {
+ 	event_word_t *word = event_word_from_port(port);
+@@ -423,7 +417,6 @@ static const struct evtchn_ops evtchn_ops_fifo = {
+ 	.clear_pending     = evtchn_fifo_clear_pending,
+ 	.set_pending       = evtchn_fifo_set_pending,
+ 	.is_pending        = evtchn_fifo_is_pending,
+-	.test_and_set_mask = evtchn_fifo_test_and_set_mask,
+ 	.mask              = evtchn_fifo_mask,
+ 	.unmask            = evtchn_fifo_unmask,
+ 	.handle_events     = evtchn_fifo_handle_events,
+diff --git a/drivers/xen/events/events_internal.h b/drivers/xen/events/events_internal.h
+index 18a4090d0709..4d3398eff9cd 100644
+--- a/drivers/xen/events/events_internal.h
++++ b/drivers/xen/events/events_internal.h
+@@ -21,7 +21,6 @@ struct evtchn_ops {
+ 	void (*clear_pending)(evtchn_port_t port);
+ 	void (*set_pending)(evtchn_port_t port);
+ 	bool (*is_pending)(evtchn_port_t port);
+-	bool (*test_and_set_mask)(evtchn_port_t port);
+ 	void (*mask)(evtchn_port_t port);
+ 	void (*unmask)(evtchn_port_t port);
+ 
+@@ -84,11 +83,6 @@ static inline bool test_evtchn(evtchn_port_t port)
+ 	return evtchn_ops->is_pending(port);
+ }
+ 
+-static inline bool test_and_set_mask(evtchn_port_t port)
+-{
+-	return evtchn_ops->test_and_set_mask(port);
+-}
+-
+ static inline void mask_evtchn(evtchn_port_t port)
+ {
+ 	return evtchn_ops->mask(port);
+-- 
+2.17.1
+
diff --git a/meta-arm-autonomy/recipes-kernel/linux/files/0003-xen-events-avoid-handling-the-same-event-on-two-cpus.patch b/meta-arm-autonomy/recipes-kernel/linux/files/0003-xen-events-avoid-handling-the-same-event-on-two-cpus.patch
new file mode 100644
index 0000000..f99aef3
--- /dev/null
+++ b/meta-arm-autonomy/recipes-kernel/linux/files/0003-xen-events-avoid-handling-the-same-event-on-two-cpus.patch
@@ -0,0 +1,130 @@
+From 50e4eb8d1b70197cf682027f501c951a39ddf172 Mon Sep 17 00:00:00 2001
+From: Juergen Gross <jgross@suse.com>
+Date: Mon, 15 Mar 2021 08:23:51 +0100
+Subject: [PATCH 3/4] xen/events: avoid handling the same event on two cpus at
+ the same time
+
+commit b6622798bc50b625a1e62f82c7190df40c1f5b21 upstream.
+
+When changing the cpu affinity of an event it can happen today that
+(with some unlucky timing) the same event will be handled on the old
+and the new cpu at the same time.
+
+Avoid that by adding an "event active" flag to the per-event data and
+call the handler only if this flag isn't set.
+
+Cc: stable@vger.kernel.org
+Reported-by: Julien Grall <julien@xen.org>
+Signed-off-by: Juergen Gross <jgross@suse.com>
+Reviewed-by: Julien Grall <jgrall@amazon.com>
+Link: https://lore.kernel.org/r/20210306161833.4552-4-jgross@suse.com
+Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+Upstream-Status: Backport
+Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
+---
+ drivers/xen/events/events_base.c | 26 ++++++++++++++++++--------
+ 1 file changed, 18 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
+index 101b99576799..7bd03f6e0422 100644
+--- a/drivers/xen/events/events_base.c
++++ b/drivers/xen/events/events_base.c
+@@ -101,6 +101,7 @@ struct irq_info {
+ #define EVT_MASK_REASON_EXPLICIT	0x01
+ #define EVT_MASK_REASON_TEMPORARY	0x02
+ #define EVT_MASK_REASON_EOI_PENDING	0x04
++	u8 is_active;		/* Is event just being handled? */
+ 	unsigned irq;
+ 	evtchn_port_t evtchn;   /* event channel */
+ 	unsigned short cpu;     /* cpu bound */
+@@ -751,6 +752,12 @@ static void xen_evtchn_close(evtchn_port_t port)
+ 		BUG();
+ }
+ 
++static void event_handler_exit(struct irq_info *info)
++{
++	smp_store_release(&info->is_active, 0);
++	clear_evtchn(info->evtchn);
++}
++
+ static void pirq_query_unmask(int irq)
+ {
+ 	struct physdev_irq_status_query irq_status;
+@@ -781,13 +788,13 @@ static void eoi_pirq(struct irq_data *data)
+ 	    likely(!irqd_irq_disabled(data))) {
+ 		do_mask(info, EVT_MASK_REASON_TEMPORARY);
+ 
+-		clear_evtchn(evtchn);
++		event_handler_exit(info);
+ 
+ 		irq_move_masked_irq(data);
+ 
+ 		do_unmask(info, EVT_MASK_REASON_TEMPORARY);
+ 	} else
+-		clear_evtchn(evtchn);
++		event_handler_exit(info);
+ 
+ 	if (pirq_needs_eoi(data->irq)) {
+ 		rc = HYPERVISOR_physdev_op(PHYSDEVOP_eoi, &eoi);
+@@ -1603,6 +1610,8 @@ void handle_irq_for_port(evtchn_port_t port, struct evtchn_loop_ctrl *ctrl)
+ 	}
+ 
+ 	info = info_for_irq(irq);
++	if (xchg_acquire(&info->is_active, 1))
++		return;
+ 
+ 	if (ctrl->defer_eoi) {
+ 		info->eoi_cpu = smp_processor_id();
+@@ -1778,13 +1787,13 @@ static void ack_dynirq(struct irq_data *data)
+ 	    likely(!irqd_irq_disabled(data))) {
+ 		do_mask(info, EVT_MASK_REASON_TEMPORARY);
+ 
+-		clear_evtchn(evtchn);
++		event_handler_exit(info);
+ 
+ 		irq_move_masked_irq(data);
+ 
+ 		do_unmask(info, EVT_MASK_REASON_TEMPORARY);
+ 	} else
+-		clear_evtchn(evtchn);
++		event_handler_exit(info);
+ }
+ 
+ static void mask_ack_dynirq(struct irq_data *data)
+@@ -1800,7 +1809,7 @@ static void lateeoi_ack_dynirq(struct irq_data *data)
+ 
+ 	if (VALID_EVTCHN(evtchn)) {
+ 		do_mask(info, EVT_MASK_REASON_EOI_PENDING);
+-		clear_evtchn(evtchn);
++		event_handler_exit(info);
+ 	}
+ }
+ 
+@@ -1811,7 +1820,7 @@ static void lateeoi_mask_ack_dynirq(struct irq_data *data)
+ 
+ 	if (VALID_EVTCHN(evtchn)) {
+ 		do_mask(info, EVT_MASK_REASON_EXPLICIT);
+-		clear_evtchn(evtchn);
++		event_handler_exit(info);
+ 	}
+ }
+ 
+@@ -1922,10 +1931,11 @@ static void restore_cpu_ipis(unsigned int cpu)
+ /* Clear an irq's pending state, in preparation for polling on it */
+ void xen_clear_irq_pending(int irq)
+ {
+-	evtchn_port_t evtchn = evtchn_from_irq(irq);
++	struct irq_info *info = info_for_irq(irq);
++	evtchn_port_t evtchn = info ? info->evtchn : 0;
+ 
+ 	if (VALID_EVTCHN(evtchn))
+-		clear_evtchn(evtchn);
++		event_handler_exit(info);
+ }
+ EXPORT_SYMBOL(xen_clear_irq_pending);
+ void xen_set_irq_pending(int irq)
+-- 
+2.17.1
+
diff --git a/meta-arm-autonomy/recipes-kernel/linux/files/0004-xen-evtchn-Change-irq_info-lock-to-raw_spinlock_t.patch b/meta-arm-autonomy/recipes-kernel/linux/files/0004-xen-evtchn-Change-irq_info-lock-to-raw_spinlock_t.patch
new file mode 100644
index 0000000..f37be44
--- /dev/null
+++ b/meta-arm-autonomy/recipes-kernel/linux/files/0004-xen-evtchn-Change-irq_info-lock-to-raw_spinlock_t.patch
@@ -0,0 +1,77 @@
+From 3bc59ed7bc26c967cfe6eb9c1ef9a1ef9108e99d Mon Sep 17 00:00:00 2001
+From: Luca Fancellu <luca.fancellu@arm.com>
+Date: Tue, 23 Mar 2021 16:16:39 +0000
+Subject: [PATCH 4/4] xen/evtchn: Change irq_info lock to raw_spinlock_t
+
+Unmask operation must be called with interrupt disabled,
+on preempt_rt spin_lock_irqsave/spin_unlock_irqrestore
+don't disable/enable interrupts, so use raw_* implementation
+and change lock variable in struct irq_info from spinlock_t
+to raw_spinlock_t
+
+Issue-Id: SCM-2147
+
+Upstream-Status: Pending
+Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
+---
+ drivers/xen/events/events_base.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
+index 7bd03f6e0422..b91c19b90b8b 100644
+--- a/drivers/xen/events/events_base.c
++++ b/drivers/xen/events/events_base.c
+@@ -108,7 +108,7 @@ struct irq_info {
+ 	unsigned short eoi_cpu; /* EOI must happen on this cpu-1 */
+ 	unsigned int irq_epoch; /* If eoi_cpu valid: irq_epoch of event */
+ 	u64 eoi_time;           /* Time in jiffies when to EOI. */
+-	spinlock_t lock;
++	raw_spinlock_t lock;
+ 
+ 	union {
+ 		unsigned short virq;
+@@ -280,7 +280,7 @@ static int xen_irq_info_common_setup(struct irq_info *info,
+ 	info->evtchn = evtchn;
+ 	info->cpu = cpu;
+ 	info->mask_reason = EVT_MASK_REASON_EXPLICIT;
+-	spin_lock_init(&info->lock);
++	raw_spin_lock_init(&info->lock);
+ 
+ 	ret = set_evtchn_to_irq(evtchn, irq);
+ 	if (ret < 0)
+@@ -432,28 +432,28 @@ static void do_mask(struct irq_info *info, u8 reason)
+ {
+ 	unsigned long flags;
+ 
+-	spin_lock_irqsave(&info->lock, flags);
++	raw_spin_lock_irqsave(&info->lock, flags);
+ 
+ 	if (!info->mask_reason)
+ 		mask_evtchn(info->evtchn);
+ 
+ 	info->mask_reason |= reason;
+ 
+-	spin_unlock_irqrestore(&info->lock, flags);
++	raw_spin_unlock_irqrestore(&info->lock, flags);
+ }
+ 
+ static void do_unmask(struct irq_info *info, u8 reason)
+ {
+ 	unsigned long flags;
+ 
+-	spin_lock_irqsave(&info->lock, flags);
++	raw_spin_lock_irqsave(&info->lock, flags);
+ 
+ 	info->mask_reason &= ~reason;
+ 
+ 	if (!info->mask_reason)
+ 		unmask_evtchn(info->evtchn);
+ 
+-	spin_unlock_irqrestore(&info->lock, flags);
++	raw_spin_unlock_irqrestore(&info->lock, flags);
+ }
+ 
+ #ifdef CONFIG_X86
+-- 
+2.17.1
+
diff --git a/meta-arm-autonomy/recipes-kernel/linux/linux-arm-autonomy.inc b/meta-arm-autonomy/recipes-kernel/linux/linux-arm-autonomy.inc
index 9750cb5..dc7accc 100644
--- a/meta-arm-autonomy/recipes-kernel/linux/linux-arm-autonomy.inc
+++ b/meta-arm-autonomy/recipes-kernel/linux/linux-arm-autonomy.inc
@@ -40,10 +40,18 @@ python() {
     kernelVersion = d.getVar('LINUX_VERSION')
     pn = d.getVar('PN')
 
-    if kernelVersion and LooseVersion(kernelVersion) < '5.9' \
-       and pn != 'linux-libc-headers' \
+    if kernelVersion and pn != 'linux-libc-headers' \
        and oe.utils.any_distro_features(d, "arm-autonomy-host arm-autonomy-guest"):
-        d.appendVar('SRC_URI', ' file://files/0001-arm-arm64-xen-Fix-to-convert-percpu-address-to-gfn-c.patch' )
+        if LooseVersion(kernelVersion) < '5.9':
+           d.appendVar('SRC_URI', ' file://files/0001-arm-arm64-xen-Fix-to-convert-percpu-address-to-gfn-c.patch' )
+        if LooseVersion(kernelVersion) == '5.10.23':
+           # Kernel version < 5.10.24 needs these backport patches to apply the
+           # 0004-xen-evtchn-Change-irq_info-lock-to-raw_spinlock_t.patch
+           d.appendVar('SRC_URI', ' file://files/0001-xen-events-reset-affinity-of-2-level-event-when-tear.patch \
+                file://files/0002-xen-events-don-t-unmask-an-event-channel-when-an-eoi.patch \
+                file://files/0003-xen-events-avoid-handling-the-same-event-on-two-cpus.patch' )
+        if LooseVersion(kernelVersion) >= '5.10':
+           d.appendVar('SRC_URI', ' file://files/0004-xen-evtchn-Change-irq_info-lock-to-raw_spinlock_t.patch' )
 
     if kernelVersion and LooseVersion(kernelVersion) < '5.10':
         if oe.utils.any_distro_features(d, "arm-autonomy-host arm-autonomy-guest"):
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [meta-arm] [PATCH 1/2] arm-autonomy/n1sdp: Remove support for linux-linaro-arm_5.4
  2021-03-25 14:00 [PATCH 1/2] arm-autonomy/n1sdp: Remove support for linux-linaro-arm_5.4 Peter Hoyes
  2021-03-25 14:00 ` [PATCH 2/2] arm-autonomy/linux-arm-autonomy: Fix Dom0 boot issue with preempt_rt kernel Peter Hoyes
@ 2021-03-29 15:51 ` Jon Mason
  1 sibling, 0 replies; 3+ messages in thread
From: Jon Mason @ 2021-03-29 15:51 UTC (permalink / raw)
  To: Peter Hoyes; +Cc: meta-arm, nd

On Thu, Mar 25, 2021 at 02:00:44PM +0000, Peter Hoyes wrote:
> From: Peter Hoyes <Peter.Hoyes@arm.com>
> 
>  * Remove linux-linaro-arm and associated patches
>  * Use linux-yocto for N1SDP
> 
> Issue-Id: SCM-1506
> Signed-off-by: Peter Hoyes <Peter.Hoyes@arm.com>
> Change-Id: I6e0ebf7de42af98e7427132590fe813c1703d1c6
> ---

Both patches applied to master.

Thanks,
Jon

>  .../conf/machine/n1sdp-extra-settings.inc     |  13 +-
>  ...ow-specification-of-ncurses-location.patch |  52 ---
>  .../linux-linaro-arm-5.4/fix-bfd-link.patch   |  60 ----
>  ...arm-smmu-v3-Ignore-IOPF-capabilities.patch |  46 ---
>  ...irk-add-acs-override-for-PCI-devices.patch | 156 ---------
>  ...-for-the-Arm-Neoverse-N1SDP-platform.patch | 318 ------------------
>  ...e-n1sdp-pci-quirk-for-SR-IOV-support.patch |  51 ---
>  ...uirk-support-enabling-remote-chip-PC.patch | 134 --------
>  .../n1sdp/enable-realtek-R8169.cfg            |   3 -
>  .../scripts-dtc-remove-redundant-YYLOC.patch  |  59 ----
>  .../perf-fixup-gcc10-01.patch                 |  76 -----
>  .../perf-fixup-gcc10-02.patch                 |  50 ---
>  .../perf-fixup-gcc10-03.patch                 | 246 --------------
>  .../perf-fixup-gcc10-04.patch                 |  45 ---
>  .../linux/linux-linaro-arm-n1sdp.inc          |  27 --
>  ...asteoi_irq-to-handle-xen-dynamic-eve.patch |  80 -----
>  .../linux/linux-linaro-arm-rt_5.4.bb          |  19 --
>  .../recipes-kernel/linux/linux-linaro-arm.inc |  29 --
>  .../linux/linux-linaro-arm_5.4.bb             |  17 -
>  19 files changed, 3 insertions(+), 1478 deletions(-)
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/fix-bfd-link.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0001-TMP-iommu-arm-smmu-v3-Ignore-IOPF-capabilities.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0002-pci_quirk-add-acs-override-for-PCI-devices.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0003-pcie-Add-quirk-for-the-Arm-Neoverse-N1SDP-platform.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0004-n1sdp-update-n1sdp-pci-quirk-for-SR-IOV-support.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0005-n1sdp-pcie-add-quirk-support-enabling-remote-chip-PC.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/enable-realtek-R8169.cfg
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/scripts-dtc-remove-redundant-YYLOC.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-01.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-02.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-03.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-04.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-n1sdp.inc
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt-5.4/0001-xen-use-handle_fasteoi_irq-to-handle-xen-dynamic-eve.patch
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt_5.4.bb
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm.inc
>  delete mode 100644 meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm_5.4.bb
> 
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/conf/machine/n1sdp-extra-settings.inc b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/conf/machine/n1sdp-extra-settings.inc
> index 3612b2e..5731142 100644
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/conf/machine/n1sdp-extra-settings.inc
> +++ b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/conf/machine/n1sdp-extra-settings.inc
> @@ -49,23 +49,16 @@ do_image_wic[depends] += "xen:do_deploy"
>  IMAGE_EFI_BOOT_FILES += "xen-n1sdp.efi;xen.efi"
>  IMAGE_EFI_BOOT_FILES += "${XEN_MOD_DEVICETREE_DTBS}"
>  
> -# Use 5.4 kernel until later versions have been validated for autonomy-host
> -python() {
> -    if d.getVar('PREFERRED_PROVIDER_virtual/kernel') == 'linux-yocto':
> -        d.setVar('PREFERRED_PROVIDER_virtual/kernel', 'linux-linaro-arm')
> -        d.setVar('PREFERRED_VERSION_linux-linaro-arm', '5.4%')
> -}
> -
> -# When alternate-kernel DISTRO_FEATURE is present we set the linux-linaro-arm-rt
> +# When alternate-kernel DISTRO_FEATURE is present we set the linux-yocto-rt
>  # by default
>  PREFERRED_PROVIDER_alternate/kernel ?= "\
>  ${@bb.utils.contains('DISTRO_FEATURES', 'alternate-kernel', \
> -'linux-linaro-arm-rt', '', d)}"
> +'linux-yocto-rt', '', d)}"
>  
>  KERNEL_PACKAGE_NAME_alternate/kernel ?= "kernel-rt"
>  # When alternate-kernel DISTRO_FEATURE is present we set the kernel-rt by
>  # default
> -KERNEL_PACKAGE_NAME_pn-linux-linaro-arm-rt = "\
> +KERNEL_PACKAGE_NAME_pn-linux-yocto-rt = "\
>  ${@ d.getVar('KERNEL_PACKAGE_NAME_alternate/kernel') \
>  if bb.utils.contains('DISTRO_FEATURES', 'alternate-kernel', True, False, d) \
>  else 'kernel' }"
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch
> deleted file mode 100644
> index 372d0af..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch
> +++ /dev/null
> @@ -1,52 +0,0 @@
> -rom d078e29aa31ac3fa4c041bf89c46bc6372c1a02a Mon Sep 17 00:00:00 2001
> -From: Bruce Ashfield <bruce.ashfield@windriver.com>
> -Date: Mon, 2 Jul 2018 23:10:28 -0400
> -Subject: menuconfig,mconf-cfg: Allow specification of ncurses location
> -
> -In some cross build environments such as the Yocto Project build
> -environment it provides an ncurses library that is compiled
> -differently than the host's version.  This causes display corruption
> -problems when the host's curses includes are used instead of the
> -includes from the provided compiler are overridden.  There is a second
> -case where there is no curses libraries at all on the host system and
> -menuconfig will just fail entirely.
> -
> -The solution is simply to allow an override variable in
> -check-lxdialog.sh for environments such as the Yocto Project.  Adding
> -a CROSS_CURSES_LIB and CROSS_CURSES_INC solves the issue and allowing
> -compiling and linking against the right headers and libraries.
> -
> -Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
> -cc: Michal Marek <mmarek@suse.cz>
> -cc: linux-kbuild@vger.kernel.org
> -Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
> ----
> - scripts/kconfig/mconf-cfg.sh | 8 ++++++++
> - 1 file changed, 8 insertions(+)
> - mode change 100755 => 100644 scripts/kconfig/mconf-cfg.sh
> -
> -(limited to 'scripts/kconfig/mconf-cfg.sh')
> -
> -diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh
> -old mode 100755
> -new mode 100644
> -index c812872d7f9d..65a9b9e5b8a6
> ---- a/scripts/kconfig/mconf-cfg.sh
> -+++ b/scripts/kconfig/mconf-cfg.sh
> -@@ -4,6 +4,14 @@
> - PKG="ncursesw"
> - PKG2="ncurses"
> - 
> -+if [ "$CROSS_CURSES_LIB" != "" ]; then
> -+    echo libs=\'$CROSS_CURSES_LIB\'
> -+    if [ x"$CROSS_CURSES_INC" != x ]; then
> -+	echo cflags=\'$CROSS_CURSES_INC\'
> -+    fi
> -+    exit 0
> -+fi
> -+
> - if [ -n "$(command -v pkg-config)" ]; then
> - 	if pkg-config --exists $PKG; then
> - 		echo cflags=\"$(pkg-config --cflags $PKG)\"
> --- 
> -cgit v1.2.2-1-g5e49
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/fix-bfd-link.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/fix-bfd-link.patch
> deleted file mode 100644
> index 63d4fda..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/fix-bfd-link.patch
> +++ /dev/null
> @@ -1,60 +0,0 @@
> -Upstream-Status: Backport
> -Signed-off-by: Ross Burton <ross.burton@arm.com>
> -
> -From 0ada120c883d4f1f6aafd01cf0fbb10d8bbba015 Mon Sep 17 00:00:00 2001
> -From: Changbin Du <changbin.du@gmail.com>
> -Date: Tue, 28 Jan 2020 23:29:38 +0800
> -Subject: [PATCH] perf: Make perf able to build with latest libbfd
> -
> -libbfd has changed the bfd_section_* macros to inline functions
> -bfd_section_<field> since 2019-09-18. See below two commits:
> -  o http://www.sourceware.org/ml/gdb-cvs/2019-09/msg00064.html
> -  o https://www.sourceware.org/ml/gdb-cvs/2019-09/msg00072.html
> -
> -This fix make perf able to build with both old and new libbfd.
> -
> -Signed-off-by: Changbin Du <changbin.du@gmail.com>
> -Acked-by: Jiri Olsa <jolsa@redhat.com>
> -Cc: Peter Zijlstra <peterz@infradead.org>
> -Link: http://lore.kernel.org/lkml/20200128152938.31413-1-changbin.du@gmail.com
> -Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> ----
> - tools/perf/util/srcline.c | 16 +++++++++++++++-
> - 1 file changed, 15 insertions(+), 1 deletion(-)
> -
> -diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
> -index 6ccf6f6d09df9..5b7d6c16d33fe 100644
> ---- a/tools/perf/util/srcline.c
> -+++ b/tools/perf/util/srcline.c
> -@@ -193,16 +193,30 @@ static void find_address_in_section(bfd *abfd, asection *section, void *data)
> - 	bfd_vma pc, vma;
> - 	bfd_size_type size;
> - 	struct a2l_data *a2l = data;
> -+	flagword flags;
> - 
> - 	if (a2l->found)
> - 		return;
> - 
> --	if ((bfd_get_section_flags(abfd, section) & SEC_ALLOC) == 0)
> -+#ifdef bfd_get_section_flags
> -+	flags = bfd_get_section_flags(abfd, section);
> -+#else
> -+	flags = bfd_section_flags(section);
> -+#endif
> -+	if ((flags & SEC_ALLOC) == 0)
> - 		return;
> - 
> - 	pc = a2l->addr;
> -+#ifdef bfd_get_section_vma
> - 	vma = bfd_get_section_vma(abfd, section);
> -+#else
> -+	vma = bfd_section_vma(section);
> -+#endif
> -+#ifdef bfd_get_section_size
> - 	size = bfd_get_section_size(section);
> -+#else
> -+	size = bfd_section_size(section);
> -+#endif
> - 
> - 	if (pc < vma || pc >= vma + size)
> - 		return;
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0001-TMP-iommu-arm-smmu-v3-Ignore-IOPF-capabilities.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0001-TMP-iommu-arm-smmu-v3-Ignore-IOPF-capabilities.patch
> deleted file mode 100644
> index e1ff4a5..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0001-TMP-iommu-arm-smmu-v3-Ignore-IOPF-capabilities.patch
> +++ /dev/null
> @@ -1,46 +0,0 @@
> -From 4ebcbe09471d6b6b18fce42993489bed3801f10c Mon Sep 17 00:00:00 2001
> -From: Jean-Philippe Brucker <jean-philippe@linaro.org>
> -Date: Fri, 24 Jan 2020 10:17:14 +0100
> -Subject: [PATCH 1/4] TMP: iommu/arm-smmu-v3: Ignore IOPF capabilities
> -
> -Don't mandate PRI or stall to enable SVA. Some devices have their own
> -method for managing I/O page faults when they notice a translation
> -request that fails.
> -
> -Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
> ----
> - drivers/iommu/arm-smmu-v3.c | 18 +++++++++++++++++-
> - 1 file changed, 17 insertions(+), 1 deletion(-)
> -
> -diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
> -index fed6a9d5867e..a8d7d6ccbb21 100644
> ---- a/drivers/iommu/arm-smmu-v3.c
> -+++ b/drivers/iommu/arm-smmu-v3.c
> -@@ -3276,7 +3276,23 @@ static bool arm_smmu_ats_supported(struct arm_smmu_master *master)
> - 
> - static bool arm_smmu_iopf_supported(struct arm_smmu_master *master)
> - {
> --	return master->stall_enabled || master->pri_supported;
> -+	/* return master->stall_enabled || master->pri_supported; */
> -+
> -+	/*
> -+	 * FIXME: this temporary hack allows enabling SVA for any endpoint even
> -+	 * when they don't have PRI/stall.
> -+	 *
> -+	 * To implement this more cleanly, we need a third method, complementing
> -+	 * stall_enabled and pri_supported, to enable IOPF. A bit that says
> -+	 * "this device's page faults are handled out of band", called for
> -+	 * example master->oob_iopf. How to set it?  It can easily be a firmware
> -+	 * quirk, but that does not suffice in my opinion. We need to know that
> -+	 * there is software ready to handle these page faults. The device
> -+	 * driver owning this endpoint could for example call
> -+	 * iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_OOB_IOPF), before
> -+	 * enabling IOMMU_DEV_FEAT_SVA.
> -+	 */
> -+	return true;
> - }
> - 
> - static void arm_smmu_enable_ats(struct arm_smmu_master *master)
> --- 
> -2.25.0
> -
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0002-pci_quirk-add-acs-override-for-PCI-devices.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0002-pci_quirk-add-acs-override-for-PCI-devices.patch
> deleted file mode 100644
> index a66083a..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0002-pci_quirk-add-acs-override-for-PCI-devices.patch
> +++ /dev/null
> @@ -1,156 +0,0 @@
> -From 224e4adc6bc6a23f5deb3e1ebea03a85e3cad606 Mon Sep 17 00:00:00 2001
> -From: Manoj Kumar <manoj.kumar3@arm.com>
> -Date: Mon, 3 Feb 2020 10:11:19 +0000
> -Subject: [PATCH 2/4] pci_quirk: add acs override for PCI devices
> -
> -Patch taken from:
> -https://gitlab.com/Queuecumber/linux-acs-override/raw/master/workspaces/5.4/acso.patch
> -
> -Signed-off-by: Manoj Kumar <manoj.kumar3@arm.com>
> ----
> - .../admin-guide/kernel-parameters.txt         |   9 ++
> - drivers/pci/quirks.c                          | 101 ++++++++++++++++++
> - 2 files changed, 110 insertions(+)
> -
> -diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> -index 8d7932502edc..f2be8337e98c 100644
> ---- a/Documentation/admin-guide/kernel-parameters.txt
> -+++ b/Documentation/admin-guide/kernel-parameters.txt
> -@@ -3423,6 +3423,15 @@
> - 		nomsi		[MSI] If the PCI_MSI kernel config parameter is
> - 				enabled, this kernel boot option can be used to
> - 				disable the use of MSI interrupts system-wide.
> -+		pcie_acs_override =
> -+					[PCIE] Override missing PCIe ACS support for:
> -+				downstream
> -+					All downstream ports - full ACS capabilities
> -+				multfunction
> -+					All multifunction devices - multifunction ACS subset
> -+				id:nnnn:nnnn
> -+					Specfic device - full ACS capabilities
> -+					Specified as vid:did (vendor/device ID) in hex
> - 		noioapicquirk	[APIC] Disable all boot interrupt quirks.
> - 				Safety option to keep boot IRQs enabled. This
> - 				should never be necessary.
> -diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> -index d134e12aab9d..9067bc7833be 100644
> ---- a/drivers/pci/quirks.c
> -+++ b/drivers/pci/quirks.c
> -@@ -3494,6 +3494,106 @@ static void quirk_no_bus_reset(struct pci_dev *dev)
> - 	dev->dev_flags |= PCI_DEV_FLAGS_NO_BUS_RESET;
> - }
> - 
> -+static bool acs_on_downstream;
> -+static bool acs_on_multifunction;
> -+
> -+#define NUM_ACS_IDS 16
> -+struct acs_on_id {
> -+	unsigned short vendor;
> -+	unsigned short device;
> -+};
> -+static struct acs_on_id acs_on_ids[NUM_ACS_IDS];
> -+static u8 max_acs_id;
> -+
> -+static __init int pcie_acs_override_setup(char *p)
> -+{
> -+	if (!p)
> -+		return -EINVAL;
> -+
> -+	while (*p) {
> -+		if (!strncmp(p, "downstream", 10))
> -+			acs_on_downstream = true;
> -+		if (!strncmp(p, "multifunction", 13))
> -+			acs_on_multifunction = true;
> -+		if (!strncmp(p, "id:", 3)) {
> -+			char opt[5];
> -+			int ret;
> -+			long val;
> -+
> -+			if (max_acs_id >= NUM_ACS_IDS - 1) {
> -+				pr_warn("Out of PCIe ACS override slots (%d)\n",
> -+						NUM_ACS_IDS);
> -+				goto next;
> -+			}
> -+
> -+			p += 3;
> -+			snprintf(opt, 5, "%s", p);
> -+			ret = kstrtol(opt, 16, &val);
> -+			if (ret) {
> -+				pr_warn("PCIe ACS ID parse error %d\n", ret);
> -+				goto next;
> -+			}
> -+			acs_on_ids[max_acs_id].vendor = val;
> -+
> -+			p += strcspn(p, ":");
> -+			if (*p != ':') {
> -+				pr_warn("PCIe ACS invalid ID\n");
> -+				goto next;
> -+			}
> -+
> -+			p++;
> -+			snprintf(opt, 5, "%s", p);
> -+			ret = kstrtol(opt, 16, &val);
> -+			if (ret) {
> -+				pr_warn("PCIe ACS ID parse error %d\n", ret);
> -+				goto next;
> -+			}
> -+			acs_on_ids[max_acs_id].device = val;
> -+			max_acs_id++;
> -+		}
> -+next:
> -+		p += strcspn(p, ",");
> -+		if (*p == ',')
> -+			p++;
> -+	}
> -+
> -+	if (acs_on_downstream || acs_on_multifunction || max_acs_id)
> -+		pr_warn("Warning: PCIe ACS overrides enabled; This may allow non-IOMMU protected peer-to-peer DMA\n");
> -+
> -+	return 0;
> -+}
> -+early_param("pcie_acs_override", pcie_acs_override_setup);
> -+
> -+static int pcie_acs_overrides(struct pci_dev *dev, u16 acs_flags)
> -+{
> -+	int i;
> -+
> -+	/* Never override ACS for legacy devices or devices with ACS caps */
> -+	if (!pci_is_pcie(dev) ||
> -+		pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS))
> -+			return -ENOTTY;
> -+
> -+	for (i = 0; i < max_acs_id; i++)
> -+		if (acs_on_ids[i].vendor == dev->vendor &&
> -+			acs_on_ids[i].device == dev->device)
> -+				return 1;
> -+
> -+	switch (pci_pcie_type(dev)) {
> -+	case PCI_EXP_TYPE_DOWNSTREAM:
> -+	case PCI_EXP_TYPE_ROOT_PORT:
> -+		if (acs_on_downstream)
> -+			return 1;
> -+		break;
> -+	case PCI_EXP_TYPE_ENDPOINT:
> -+	case PCI_EXP_TYPE_UPSTREAM:
> -+	case PCI_EXP_TYPE_LEG_END:
> -+	case PCI_EXP_TYPE_RC_END:
> -+		if (acs_on_multifunction && dev->multifunction)
> -+			return 1;
> -+	}
> -+
> -+	return -ENOTTY;
> -+}
> - /*
> -  * Some Atheros AR9xxx and QCA988x chips do not behave after a bus reset.
> -  * The device will throw a Link Down error on AER-capable systems and
> -@@ -4674,6 +4774,7 @@ static const struct pci_dev_acs_enabled {
> - 	{ PCI_VENDOR_ID_BROADCOM, 0xD714, pci_quirk_brcm_acs },
> - 	/* Amazon Annapurna Labs */
> - 	{ PCI_VENDOR_ID_AMAZON_ANNAPURNA_LABS, 0x0031, pci_quirk_al_acs },
> -+   { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
> - 	{ 0 }
> - };
> - 
> --- 
> -2.25.0
> -
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0003-pcie-Add-quirk-for-the-Arm-Neoverse-N1SDP-platform.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0003-pcie-Add-quirk-for-the-Arm-Neoverse-N1SDP-platform.patch
> deleted file mode 100644
> index d827e9d..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0003-pcie-Add-quirk-for-the-Arm-Neoverse-N1SDP-platform.patch
> +++ /dev/null
> @@ -1,318 +0,0 @@
> -From 813f6c6015c75caf25553cd2e36361bac9151145 Mon Sep 17 00:00:00 2001
> -From: Deepak Pandey <Deepak.Pandey@arm.com>
> -Date: Mon, 9 Dec 2019 16:06:38 +0000
> -Subject: [PATCH 3/4] pcie: Add quirk for the Arm Neoverse N1SDP platform
> -
> -The Arm N1SDP SoC suffers from some PCIe integration issues, most
> -prominently config space accesses to not existing BDFs being answered
> -with a bus abort, resulting in an SError.
> -To mitigate this, the firmware scans the bus before boot (catching the
> -SErrors) and creates a table with valid BDFs, which acts as a filter for
> -Linux' config space accesses.
> -
> -Add code consulting the table as an ACPI PCIe quirk, also register the
> -corresponding device tree based description of the host controller.
> -Also fix the other two minor issues on the way, namely not being fully
> -ECAM compliant and config space accesses being restricted to 32-bit
> -accesses only.
> -
> -This allows the Arm Neoverse N1SDP board to boot Linux without crashing
> -and to access *any* devices (there are no platform devices except UART).
> -
> -Signed-off-by: Deepak Pandey <Deepak.Pandey@arm.com>
> -[Sudipto: extend to cover the CCIX root port as well]
> -Signed-off-by: Sudipto Paul <sudipto.paul@arm.com>
> -[Andre: fix coding style issues, rewrite some parts, add DT support]
> -Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ----
> - arch/arm64/configs/defconfig        |   1 +
> - drivers/acpi/pci_mcfg.c             |   7 +
> - drivers/pci/controller/Kconfig      |  11 ++
> - drivers/pci/controller/Makefile     |   1 +
> - drivers/pci/controller/pcie-n1sdp.c | 196 ++++++++++++++++++++++++++++
> - include/linux/pci-ecam.h            |   2 +
> - 6 files changed, 218 insertions(+)
> - create mode 100644 drivers/pci/controller/pcie-n1sdp.c
> -
> -diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
> -index 619a892148fb..56f00e82a4c4 100644
> ---- a/arch/arm64/configs/defconfig
> -+++ b/arch/arm64/configs/defconfig
> -@@ -177,6 +177,7 @@ CONFIG_NET_9P=y
> - CONFIG_NET_9P_VIRTIO=y
> - CONFIG_PCI=y
> - CONFIG_PCIEPORTBUS=y
> -+CONFIG_PCI_QUIRKS=y
> - CONFIG_PCI_IOV=y
> - CONFIG_HOTPLUG_PCI=y
> - CONFIG_HOTPLUG_PCI_ACPI=y
> -diff --git a/drivers/acpi/pci_mcfg.c b/drivers/acpi/pci_mcfg.c
> -index 6b347d9920cc..7a2b41b9ab57 100644
> ---- a/drivers/acpi/pci_mcfg.c
> -+++ b/drivers/acpi/pci_mcfg.c
> -@@ -142,6 +142,13 @@ static struct mcfg_fixup mcfg_quirks[] = {
> - 	XGENE_V2_ECAM_MCFG(4, 0),
> - 	XGENE_V2_ECAM_MCFG(4, 1),
> - 	XGENE_V2_ECAM_MCFG(4, 2),
> -+
> -+#define N1SDP_ECAM_MCFG(rev, seg, ops) \
> -+	{"ARMLTD", "ARMN1SDP", rev, seg, MCFG_BUS_ANY, ops }
> -+
> -+	/* N1SDP SoC with v1 PCIe controller */
> -+	N1SDP_ECAM_MCFG(0x20181101, 0, &pci_n1sdp_pcie_ecam_ops),
> -+	N1SDP_ECAM_MCFG(0x20181101, 1, &pci_n1sdp_ccix_ecam_ops),
> - };
> - 
> - static char mcfg_oem_id[ACPI_OEM_ID_SIZE];
> -diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig
> -index 70e078238899..03860176e339 100644
> ---- a/drivers/pci/controller/Kconfig
> -+++ b/drivers/pci/controller/Kconfig
> -@@ -65,6 +65,17 @@ config PCI_FTPCI100
> - 	depends on OF
> - 	default ARCH_GEMINI
> - 
> -+config PCIE_HOST_N1SDP_ECAM
> -+	bool "ARM N1SDP PCIe Controller"
> -+	depends on ARM64
> -+	depends on OF || (ACPI && PCI_QUIRKS)
> -+	select PCI_HOST_COMMON
> -+	default y if ARCH_VEXPRESS
> -+	help
> -+	  Say Y here if you want PCIe support for the Arm N1SDP platform.
> -+	  The controller is ECAM compliant, but needs a quirk to workaround
> -+	  an integration issue.
> -+
> - config PCI_TEGRA
> - 	bool "NVIDIA Tegra PCIe controller"
> - 	depends on ARCH_TEGRA || COMPILE_TEST
> -diff --git a/drivers/pci/controller/Makefile b/drivers/pci/controller/Makefile
> -index a2a22c9d91af..7ea98c5a04ec 100644
> ---- a/drivers/pci/controller/Makefile
> -+++ b/drivers/pci/controller/Makefile
> -@@ -30,6 +30,7 @@ obj-$(CONFIG_PCIE_MEDIATEK) += pcie-mediatek.o
> - obj-$(CONFIG_PCIE_MOBIVEIL) += pcie-mobiveil.o
> - obj-$(CONFIG_PCIE_TANGO_SMP8759) += pcie-tango.o
> - obj-$(CONFIG_VMD) += vmd.o
> -+obj-$(CONFIG_PCIE_HOST_N1SDP_ECAM) += pcie-n1sdp.o
> - # pcie-hisi.o quirks are needed even without CONFIG_PCIE_DW
> - obj-y				+= dwc/
> - 
> -diff --git a/drivers/pci/controller/pcie-n1sdp.c b/drivers/pci/controller/pcie-n1sdp.c
> -new file mode 100644
> -index 000000000000..620ab221466c
> ---- /dev/null
> -+++ b/drivers/pci/controller/pcie-n1sdp.c
> -@@ -0,0 +1,196 @@
> -+// SPDX-License-Identifier: GPL-2.0
> -+/*
> -+ * Copyright (C) 2018/2019 ARM Ltd.
> -+ *
> -+ * This quirk is to mask the following issues:
> -+ * - PCIE SLVERR: config space accesses to invalid PCIe BDFs cause a bus
> -+ *		  error (signalled as an asynchronous SError)
> -+ * - MCFG BDF mapping: the root complex is mapped separately from the device
> -+ *		       config space
> -+ * - Non 32-bit accesses to config space are not supported.
> -+ *
> -+ * At boot time the SCP board firmware creates a discovery table with
> -+ * the root complex' base address and the valid BDF values, discovered while
> -+ * scanning the config space and catching the SErrors.
> -+ * Linux responds only to the EPs listed in this table, returning NULL
> -+ * for the rest.
> -+ */
> -+
> -+#include <linux/kernel.h>
> -+#include <linux/init.h>
> -+#include <linux/ioport.h>
> -+#include <linux/sizes.h>
> -+#include <linux/of_pci.h>
> -+#include <linux/of.h>
> -+#include <linux/pci-ecam.h>
> -+#include <linux/platform_device.h>
> -+#include <linux/module.h>
> -+
> -+/* Platform specific values as hardcoded in the firmware. */
> -+#define AP_NS_SHARED_MEM_BASE	0x06000000
> -+#define MAX_SEGMENTS		2		/* Two PCIe root complexes. */
> -+#define BDF_TABLE_SIZE		SZ_16K
> -+
> -+/*
> -+ * Shared memory layout as written by the SCP upon boot time:
> -+ *  ----
> -+ *  Discover data header --> RC base address
> -+ *                       \-> BDF Count
> -+ *  Discover data        --> BDF 0...n
> -+ *  ----
> -+ */
> -+struct pcie_discovery_data {
> -+	u32 rc_base_addr;
> -+	u32 nr_bdfs;
> -+	u32 valid_bdfs[0];
> -+} *pcie_discovery_data[MAX_SEGMENTS];
> -+
> -+void __iomem *rc_remapped_addr[MAX_SEGMENTS];
> -+
> -+/*
> -+ * map_bus() is called before we do a config space access for a certain
> -+ * device. We use this to check whether this device is valid, avoiding
> -+ * config space accesses which would result in an SError otherwise.
> -+ */
> -+static void __iomem *pci_n1sdp_map_bus(struct pci_bus *bus, unsigned int devfn,
> -+				       int where)
> -+{
> -+	struct pci_config_window *cfg = bus->sysdata;
> -+	unsigned int devfn_shift = cfg->ops->bus_shift - 8;
> -+	unsigned int busn = bus->number;
> -+	unsigned int segment = bus->domain_nr;
> -+	unsigned int bdf_addr;
> -+	unsigned int table_count, i;
> -+
> -+	if (segment >= MAX_SEGMENTS ||
> -+	    busn < cfg->busr.start || busn > cfg->busr.end)
> -+		return NULL;
> -+
> -+	/* The PCIe root complex has a separate config space mapping. */
> -+	if (busn == 0 && devfn == 0)
> -+		return rc_remapped_addr[segment] + where;
> -+
> -+	busn -= cfg->busr.start;
> -+	bdf_addr = (busn << cfg->ops->bus_shift) + (devfn << devfn_shift);
> -+	table_count = pcie_discovery_data[segment]->nr_bdfs;
> -+	for (i = 0; i < table_count; i++) {
> -+		if (bdf_addr == pcie_discovery_data[segment]->valid_bdfs[i])
> -+			return pci_ecam_map_bus(bus, devfn, where);
> -+	}
> -+
> -+	return NULL;
> -+}
> -+
> -+static int pci_n1sdp_init(struct pci_config_window *cfg, unsigned int segment)
> -+{
> -+	phys_addr_t table_base;
> -+	struct device *dev = cfg->parent;
> -+	struct pcie_discovery_data *shared_data;
> -+	size_t bdfs_size;
> -+
> -+	if (segment >= MAX_SEGMENTS)
> -+		return -ENODEV;
> -+
> -+	table_base = AP_NS_SHARED_MEM_BASE + segment * BDF_TABLE_SIZE;
> -+
> -+	if (!request_mem_region(table_base, BDF_TABLE_SIZE,
> -+				"PCIe valid BDFs")) {
> -+		dev_err(dev, "PCIe BDF shared region request failed\n");
> -+		return -ENOMEM;
> -+	}
> -+
> -+	shared_data = devm_ioremap(dev,
> -+				   table_base, BDF_TABLE_SIZE);
> -+	if (!shared_data)
> -+		return -ENOMEM;
> -+
> -+	/* Copy the valid BDFs structure to allocated normal memory. */
> -+	bdfs_size = sizeof(struct pcie_discovery_data) +
> -+		    sizeof(u32) * shared_data->nr_bdfs;
> -+	pcie_discovery_data[segment] = devm_kmalloc(dev, bdfs_size, GFP_KERNEL);
> -+	if (!pcie_discovery_data[segment])
> -+		return -ENOMEM;
> -+
> -+	memcpy_fromio(pcie_discovery_data[segment], shared_data, bdfs_size);
> -+
> -+	rc_remapped_addr[segment] = devm_ioremap_nocache(dev,
> -+						shared_data->rc_base_addr,
> -+						PCI_CFG_SPACE_EXP_SIZE);
> -+	if (!rc_remapped_addr[segment]) {
> -+		dev_err(dev, "Cannot remap root port base\n");
> -+		return -ENOMEM;
> -+	}
> -+
> -+	devm_iounmap(dev, shared_data);
> -+
> -+	return 0;
> -+}
> -+
> -+static int pci_n1sdp_pcie_init(struct pci_config_window *cfg)
> -+{
> -+	return pci_n1sdp_init(cfg, 0);
> -+}
> -+
> -+static int pci_n1sdp_ccix_init(struct pci_config_window *cfg)
> -+{
> -+	return pci_n1sdp_init(cfg, 1);
> -+}
> -+
> -+struct pci_ecam_ops pci_n1sdp_pcie_ecam_ops = {
> -+	.bus_shift	= 20,
> -+	.init		= pci_n1sdp_pcie_init,
> -+	.pci_ops	= {
> -+		.map_bus        = pci_n1sdp_map_bus,
> -+		.read           = pci_generic_config_read32,
> -+		.write          = pci_generic_config_write32,
> -+	}
> -+};
> -+
> -+struct pci_ecam_ops pci_n1sdp_ccix_ecam_ops = {
> -+	.bus_shift	= 20,
> -+	.init		= pci_n1sdp_ccix_init,
> -+	.pci_ops	= {
> -+		.map_bus        = pci_n1sdp_map_bus,
> -+		.read           = pci_generic_config_read32,
> -+		.write          = pci_generic_config_write32,
> -+	}
> -+};
> -+
> -+static const struct of_device_id n1sdp_pcie_of_match[] = {
> -+	{ .compatible = "arm,n1sdp-pcie" },
> -+	{ },
> -+};
> -+MODULE_DEVICE_TABLE(of, n1sdp_pcie_of_match);
> -+
> -+static int n1sdp_pcie_probe(struct platform_device *pdev)
> -+{
> -+	const struct device_node *of_node = pdev->dev.of_node;
> -+	u32 segment;
> -+
> -+	if (of_property_read_u32(of_node, "linux,pci-domain", &segment)) {
> -+		dev_err(&pdev->dev, "N1SDP PCI controllers require linux,pci-domain property\n");
> -+		return -EINVAL;
> -+	}
> -+
> -+	switch (segment) {
> -+	case 0:
> -+		return pci_host_common_probe(pdev, &pci_n1sdp_pcie_ecam_ops);
> -+	case 1:
> -+		return pci_host_common_probe(pdev, &pci_n1sdp_ccix_ecam_ops);
> -+	}
> -+
> -+	dev_err(&pdev->dev, "Invalid segment number, must be smaller than %d\n",
> -+		MAX_SEGMENTS);
> -+
> -+	return -EINVAL;
> -+}
> -+
> -+static struct platform_driver n1sdp_pcie_driver = {
> -+	.driver = {
> -+		.name = KBUILD_MODNAME,
> -+		.of_match_table = n1sdp_pcie_of_match,
> -+		.suppress_bind_attrs = true,
> -+	},
> -+	.probe = n1sdp_pcie_probe,
> -+};
> -+builtin_platform_driver(n1sdp_pcie_driver);
> -diff --git a/include/linux/pci-ecam.h b/include/linux/pci-ecam.h
> -index a73164c85e78..03cdea69f4e8 100644
> ---- a/include/linux/pci-ecam.h
> -+++ b/include/linux/pci-ecam.h
> -@@ -57,6 +57,8 @@ extern struct pci_ecam_ops pci_thunder_ecam_ops; /* Cavium ThunderX 1.x */
> - extern struct pci_ecam_ops xgene_v1_pcie_ecam_ops; /* APM X-Gene PCIe v1 */
> - extern struct pci_ecam_ops xgene_v2_pcie_ecam_ops; /* APM X-Gene PCIe v2.x */
> - extern struct pci_ecam_ops al_pcie_ops; /* Amazon Annapurna Labs PCIe */
> -+extern struct pci_ecam_ops pci_n1sdp_pcie_ecam_ops; /* Arm N1SDP PCIe */
> -+extern struct pci_ecam_ops pci_n1sdp_ccix_ecam_ops; /* Arm N1SDP PCIe */
> - #endif
> - 
> - #ifdef CONFIG_PCI_HOST_COMMON
> --- 
> -2.25.0
> -
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0004-n1sdp-update-n1sdp-pci-quirk-for-SR-IOV-support.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0004-n1sdp-update-n1sdp-pci-quirk-for-SR-IOV-support.patch
> deleted file mode 100644
> index 6fb2dac..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0004-n1sdp-update-n1sdp-pci-quirk-for-SR-IOV-support.patch
> +++ /dev/null
> @@ -1,51 +0,0 @@
> -From 7bcc0412428050b0ab1fd70cbb4aaead5ac3c0e5 Mon Sep 17 00:00:00 2001
> -From: Manoj Kumar <manoj.kumar3@arm.com>
> -Date: Wed, 29 Jan 2020 17:21:39 +0000
> -Subject: [PATCH 4/4] n1sdp: update n1sdp pci quirk for SR-IOV support
> -
> -VFs are not probing the vendor ID first, which is otherwise
> -the gate keeper for undiscovered devices. So any accesses using
> -a config space offset greater than 0 must be coming for an
> -already discovered device or from a VF that has just been created.
> -
> -Also if Linux already has a struct pci_dev* for a given BDF,
> -this device is safe to access.
> -
> -Skip the firmware table in these cases and allow accesses to
> -those devices. That enables SR-IOV support on the N1SDP board.
> -
> -Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ----
> - drivers/pci/controller/pcie-n1sdp.c | 9 +++++++++
> - 1 file changed, 9 insertions(+)
> -
> -diff --git a/drivers/pci/controller/pcie-n1sdp.c b/drivers/pci/controller/pcie-n1sdp.c
> -index 620ab221466c..04c0de043817 100644
> ---- a/drivers/pci/controller/pcie-n1sdp.c
> -+++ b/drivers/pci/controller/pcie-n1sdp.c
> -@@ -61,6 +61,7 @@ static void __iomem *pci_n1sdp_map_bus(struct pci_bus *bus, unsigned int devfn,
> - 	unsigned int segment = bus->domain_nr;
> - 	unsigned int bdf_addr;
> - 	unsigned int table_count, i;
> -+	struct pci_dev *dev;
> - 
> - 	if (segment >= MAX_SEGMENTS ||
> - 	    busn < cfg->busr.start || busn > cfg->busr.end)
> -@@ -70,6 +71,14 @@ static void __iomem *pci_n1sdp_map_bus(struct pci_bus *bus, unsigned int devfn,
> - 	if (busn == 0 && devfn == 0)
> - 		return rc_remapped_addr[segment] + where;
> - 
> -+	dev = pci_get_domain_bus_and_slot(segment, busn, devfn);
> -+	if (dev && dev->is_virtfn)
> -+		return pci_ecam_map_bus(bus, devfn, where);
> -+
> -+	/* Accesses beyond the vendor ID always go to existing devices. */
> -+	if (where > 0)
> -+		return pci_ecam_map_bus(bus, devfn, where);
> -+
> - 	busn -= cfg->busr.start;
> - 	bdf_addr = (busn << cfg->ops->bus_shift) + (devfn << devfn_shift);
> - 	table_count = pcie_discovery_data[segment]->nr_bdfs;
> --- 
> -2.25.0
> -
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0005-n1sdp-pcie-add-quirk-support-enabling-remote-chip-PC.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0005-n1sdp-pcie-add-quirk-support-enabling-remote-chip-PC.patch
> deleted file mode 100644
> index d3db77a..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/0005-n1sdp-pcie-add-quirk-support-enabling-remote-chip-PC.patch
> +++ /dev/null
> @@ -1,134 +0,0 @@
> -Upstream-Status: Inappropriate [will not be submitted as its an hack required to fix the hardware issue]
> -
> -This patch is picked from the git repository:
> -https://git.linaro.org/landing-teams/working/arm/n1sdp-pcie-quirk.git/patch/?id=04b7e76d0fe6481a803f58e54e008a1489d713a5
> -
> -Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
> -
> -From 94892f681463908e4a879258dfd6053bbb025447 Mon Sep 17 00:00:00 2001
> -From: Sayanta Pattanayak <sayanta.pattanayak@arm.com>
> -Date: Fri, 31 Jul 2020 15:32:24 +0530
> -Subject: [PATCH 5/5] n1sdp: pcie: add quirk support enabling remote chip PCIe
> -
> -Base address mapping for remote chip Root PCIe ECAM space.
> -
> -Remote Chip PCIe topology is enumerated in Firmware and current
> -change takes referecne of enumerated PCIe hierarchy of Remote chip into the
> -kernel and include in complete PCIe topology for kernel framework.
> -
> -Change-Id: I368e51c535ac66e48bd356bd33da6c49f1a0fb2a
> -Signed-off-by: Sayanta Pattanayak <sayanta.pattanayak@arm.com>
> ----
> - drivers/acpi/pci_mcfg.c             |  1 +
> - drivers/pci/controller/pcie-n1sdp.c | 34 ++++++++++++++++++++++++++---
> - include/linux/pci-ecam.h            |  1 +
> - 3 files changed, 33 insertions(+), 3 deletions(-)
> -
> -diff --git a/drivers/acpi/pci_mcfg.c b/drivers/acpi/pci_mcfg.c
> -index 7a2b41b9ab57..53d073ef941f 100644
> ---- a/drivers/acpi/pci_mcfg.c
> -+++ b/drivers/acpi/pci_mcfg.c
> -@@ -149,6 +149,7 @@ static struct mcfg_fixup mcfg_quirks[] = {
> - 	/* N1SDP SoC with v1 PCIe controller */
> - 	N1SDP_ECAM_MCFG(0x20181101, 0, &pci_n1sdp_pcie_ecam_ops),
> - 	N1SDP_ECAM_MCFG(0x20181101, 1, &pci_n1sdp_ccix_ecam_ops),
> -+	N1SDP_ECAM_MCFG(0x20181101, 2, &pci_n1sdp_remote_pcie_ecam_ops),
> - };
> - 
> - static char mcfg_oem_id[ACPI_OEM_ID_SIZE];
> -diff --git a/drivers/pci/controller/pcie-n1sdp.c b/drivers/pci/controller/pcie-n1sdp.c
> -index 04c0de043817..19b573468ac5 100644
> ---- a/drivers/pci/controller/pcie-n1sdp.c
> -+++ b/drivers/pci/controller/pcie-n1sdp.c
> -@@ -28,8 +28,10 @@
> - 
> - /* Platform specific values as hardcoded in the firmware. */
> - #define AP_NS_SHARED_MEM_BASE	0x06000000
> --#define MAX_SEGMENTS		2		/* Two PCIe root complexes. */
> -+/* Two PCIe root complexes in One Chip + One PCIe RC in Remote Chip*/
> -+#define MAX_SEGMENTS		3
> - #define BDF_TABLE_SIZE		SZ_16K
> -+#define REMOTE_CHIP_ADDR_OFFSET	0x40000000000
> - 
> - /*
> -  * Shared memory layout as written by the SCP upon boot time:
> -@@ -100,7 +102,10 @@ static int pci_n1sdp_init(struct pci_config_window *cfg, unsigned int segment)
> - 	if (segment >= MAX_SEGMENTS)
> - 		return -ENODEV;
> - 
> --	table_base = AP_NS_SHARED_MEM_BASE + segment * BDF_TABLE_SIZE;
> -+	if (segment > 1)
> -+		table_base = AP_NS_SHARED_MEM_BASE + REMOTE_CHIP_ADDR_OFFSET;
> -+	else
> -+		table_base = AP_NS_SHARED_MEM_BASE + segment * BDF_TABLE_SIZE;
> - 
> - 	if (!request_mem_region(table_base, BDF_TABLE_SIZE,
> - 				"PCIe valid BDFs")) {
> -@@ -122,7 +127,13 @@ static int pci_n1sdp_init(struct pci_config_window *cfg, unsigned int segment)
> - 
> - 	memcpy_fromio(pcie_discovery_data[segment], shared_data, bdfs_size);
> - 
> --	rc_remapped_addr[segment] = devm_ioremap_nocache(dev,
> -+
> -+	if (segment > 1)
> -+		rc_remapped_addr[segment] = devm_ioremap_nocache(dev,
> -+						shared_data->rc_base_addr + REMOTE_CHIP_ADDR_OFFSET,
> -+						PCI_CFG_SPACE_EXP_SIZE);
> -+	else
> -+		rc_remapped_addr[segment] = devm_ioremap_nocache(dev,
> - 						shared_data->rc_base_addr,
> - 						PCI_CFG_SPACE_EXP_SIZE);
> - 	if (!rc_remapped_addr[segment]) {
> -@@ -145,6 +156,11 @@ static int pci_n1sdp_ccix_init(struct pci_config_window *cfg)
> - 	return pci_n1sdp_init(cfg, 1);
> - }
> - 
> -+static int pci_n1sdp_remote_pcie_init(struct pci_config_window *cfg)
> -+{
> -+	return pci_n1sdp_init(cfg, 2);
> -+}
> -+
> - struct pci_ecam_ops pci_n1sdp_pcie_ecam_ops = {
> - 	.bus_shift	= 20,
> - 	.init		= pci_n1sdp_pcie_init,
> -@@ -165,6 +181,16 @@ struct pci_ecam_ops pci_n1sdp_ccix_ecam_ops = {
> - 	}
> - };
> - 
> -+struct pci_ecam_ops pci_n1sdp_remote_pcie_ecam_ops = {
> -+	.bus_shift	= 20,
> -+	.init		= pci_n1sdp_remote_pcie_init,
> -+	.pci_ops	= {
> -+		.map_bus        = pci_n1sdp_map_bus,
> -+		.read           = pci_generic_config_read32,
> -+		.write          = pci_generic_config_write32,
> -+	}
> -+};
> -+
> - static const struct of_device_id n1sdp_pcie_of_match[] = {
> - 	{ .compatible = "arm,n1sdp-pcie" },
> - 	{ },
> -@@ -186,6 +212,8 @@ static int n1sdp_pcie_probe(struct platform_device *pdev)
> - 		return pci_host_common_probe(pdev, &pci_n1sdp_pcie_ecam_ops);
> - 	case 1:
> - 		return pci_host_common_probe(pdev, &pci_n1sdp_ccix_ecam_ops);
> -+	case 2:
> -+		return pci_host_common_probe(pdev, &pci_n1sdp_remote_pcie_ecam_ops);
> - 	}
> - 
> - 	dev_err(&pdev->dev, "Invalid segment number, must be smaller than %d\n",
> -diff --git a/include/linux/pci-ecam.h b/include/linux/pci-ecam.h
> -index 03cdea69f4e8..2270662428e1 100644
> ---- a/include/linux/pci-ecam.h
> -+++ b/include/linux/pci-ecam.h
> -@@ -59,6 +59,7 @@ extern struct pci_ecam_ops xgene_v2_pcie_ecam_ops; /* APM X-Gene PCIe v2.x */
> - extern struct pci_ecam_ops al_pcie_ops; /* Amazon Annapurna Labs PCIe */
> - extern struct pci_ecam_ops pci_n1sdp_pcie_ecam_ops; /* Arm N1SDP PCIe */
> - extern struct pci_ecam_ops pci_n1sdp_ccix_ecam_ops; /* Arm N1SDP PCIe */
> -+extern struct pci_ecam_ops pci_n1sdp_remote_pcie_ecam_ops; /* Arm N1SDP PCIe */
> - #endif
> - 
> - #ifdef CONFIG_PCI_HOST_COMMON
> --- 
> -2.25.0
> -
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/enable-realtek-R8169.cfg b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/enable-realtek-R8169.cfg
> deleted file mode 100644
> index 7a57474..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/enable-realtek-R8169.cfg
> +++ /dev/null
> @@ -1,3 +0,0 @@
> -# Enable Realtek Gigabit Ethernet adapter
> -CONFIG_REALTEK_PHY=y
> -CONFIG_R8169=y
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/scripts-dtc-remove-redundant-YYLOC.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/scripts-dtc-remove-redundant-YYLOC.patch
> deleted file mode 100644
> index f3ae5e5..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/n1sdp/scripts-dtc-remove-redundant-YYLOC.patch
> +++ /dev/null
> @@ -1,59 +0,0 @@
> -Upstream-Status: Backport https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/scripts/dtc/dtc-lexer.l?h=v5.8
> -Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
> -
> -From 35b34d264cb347909ec89d9fa895900035d5438c Mon Sep 17 00:00:00 2001
> -From: Dirk Mueller <dmueller@suse.com>
> -Date: Tue, 14 Jan 2020 18:53:41 +0100
> -Subject: scripts/dtc: Remove redundant YYLOC global declaration
> -
> -commit e33a814e772cdc36436c8c188d8c42d019fda639 upstream.
> -
> -gcc 10 will default to -fno-common, which causes this error at link
> -time:
> -
> -  (.text+0x0): multiple definition of `yylloc'; dtc-lexer.lex.o (symbol from plugin):(.text+0x0): first defined here
> -
> -This is because both dtc-lexer as well as dtc-parser define the same
> -global symbol yyloc. Before with -fcommon those were merged into one
> -defintion. The proper solution would be to to mark this as "extern",
> -however that leads to:
> -
> -  dtc-lexer.l:26:16: error: redundant redeclaration of 'yylloc' [-Werror=redundant-decls]
> -   26 | extern YYLTYPE yylloc;
> -      |                ^~~~~~
> -In file included from dtc-lexer.l:24:
> -dtc-parser.tab.h:127:16: note: previous declaration of 'yylloc' was here
> -  127 | extern YYLTYPE yylloc;
> -      |                ^~~~~~
> -cc1: all warnings being treated as errors
> -
> -which means the declaration is completely redundant and can just be
> -dropped.
> -
> -Signed-off-by: Dirk Mueller <dmueller@suse.com>
> -Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> -[robh: cherry-pick from upstream]
> -Cc: stable@vger.kernel.org
> -Signed-off-by: Rob Herring <robh@kernel.org>
> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ----
> - scripts/dtc/dtc-lexer.l | 1 -
> - 1 file changed, 1 deletion(-)
> -
> -(limited to 'scripts/dtc/dtc-lexer.l')
> -
> -diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l
> -index 5c6c3fd557d7..b3b7270300de 100644
> ---- a/scripts/dtc/dtc-lexer.l
> -+++ b/scripts/dtc/dtc-lexer.l
> -@@ -23,7 +23,6 @@ LINECOMMENT	"//".*\n
> - #include "srcpos.h"
> - #include "dtc-parser.tab.h"
> - 
> --YYLTYPE yylloc;
> - extern bool treesource_error;
> - 
> - /* CAUTION: this will stop working if we ever use yyless() or yyunput() */
> --- 
> -cgit v1.2.2-1-g5e49
> -
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-01.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-01.patch
> deleted file mode 100644
> index efca58f..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-01.patch
> +++ /dev/null
> @@ -1,76 +0,0 @@
> -perf cs-etm: Move definition of 'traceid_list' global variable from header file
> -Upstream-Status: Backport https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/patch/tools/perf/util?id=bc79abf4afea97d5ce682aa2bd1095fb74400916
> -Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
> -
> -From bc79abf4afea97d5ce682aa2bd1095fb74400916 Mon Sep 17 00:00:00 2001
> -From: Leo Yan <leo.yan@linaro.org>
> -Date: Tue, 5 May 2020 21:36:42 +0800
> -Subject: perf cs-etm: Move definition of 'traceid_list' global variable from
> - header file
> -
> -commit 168200b6d6ea0cb5765943ec5da5b8149701f36a upstream.
> -
> -The variable 'traceid_list' is defined in the header file cs-etm.h,
> -if multiple C files include cs-etm.h the compiler might complaint for
> -multiple definition of 'traceid_list'.
> -
> -To fix multiple definition error, move the definition of 'traceid_list'
> -into cs-etm.c.
> -
> -Fixes: cd8bfd8c973e ("perf tools: Add processing of coresight metadata")
> -Reported-by: Thomas Backlund <tmb@mageia.org>
> -Signed-off-by: Leo Yan <leo.yan@linaro.org>
> -Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> -Reviewed-by: Mike Leach <mike.leach@linaro.org>
> -Tested-by: Mike Leach <mike.leach@linaro.org>
> -Tested-by: Thomas Backlund <tmb@mageia.org>
> -Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> -Cc: Jiri Olsa <jolsa@redhat.com>
> -Cc: Mark Rutland <mark.rutland@arm.com>
> -Cc: Namhyung Kim <namhyung@kernel.org>
> -Cc: Peter Zijlstra <peterz@infradead.org>
> -Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
> -Cc: Tor Jeremiassen <tor@ti.com>
> -Cc: linux-arm-kernel@lists.infradead.org
> -Link: http://lore.kernel.org/lkml/20200505133642.4756-1-leo.yan@linaro.org
> -Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> -Cc: Paul Barker <pbarker@konsulko.com>
> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ----
> - tools/perf/util/cs-etm.c | 3 +++
> - tools/perf/util/cs-etm.h | 3 ---
> - 2 files changed, 3 insertions(+), 3 deletions(-)
> -
> -(limited to 'tools/perf/util')
> -
> -diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
> -index 451eee24165ee..f5a9cb4088080 100644
> ---- a/tools/perf/util/cs-etm.c
> -+++ b/tools/perf/util/cs-etm.c
> -@@ -94,6 +94,9 @@ struct cs_etm_queue {
> - 	struct cs_etm_traceid_queue **traceid_queues;
> - };
> - 
> -+/* RB tree for quick conversion between traceID and metadata pointers */
> -+static struct intlist *traceid_list;
> -+
> - static int cs_etm__update_queues(struct cs_etm_auxtrace *etm);
> - static int cs_etm__process_queues(struct cs_etm_auxtrace *etm);
> - static int cs_etm__process_timeless_queues(struct cs_etm_auxtrace *etm,
> -diff --git a/tools/perf/util/cs-etm.h b/tools/perf/util/cs-etm.h
> -index 650ecc2a63492..4ad925d6d7996 100644
> ---- a/tools/perf/util/cs-etm.h
> -+++ b/tools/perf/util/cs-etm.h
> -@@ -114,9 +114,6 @@ enum cs_etm_isa {
> - 	CS_ETM_ISA_T32,
> - };
> - 
> --/* RB tree for quick conversion between traceID and metadata pointers */
> --struct intlist *traceid_list;
> --
> - struct cs_etm_queue;
> - 
> - struct cs_etm_packet {
> --- 
> -cgit 1.2.3-1.el7
> -
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-02.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-02.patch
> deleted file mode 100644
> index b512d3e..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-02.patch
> +++ /dev/null
> @@ -1,50 +0,0 @@
> -perf tests bp_account: Make global variable static
> -Upstream-Status: Backport https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/patch/tools/perf/tests/bp_account.c?id=73d2d6b421dfdc66b4615452a94efcece27a3c21
> -Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
> -
> -From 73d2d6b421dfdc66b4615452a94efcece27a3c21 Mon Sep 17 00:00:00 2001
> -From: Arnaldo Carvalho de Melo <acme@redhat.com>
> -Date: Mon, 2 Mar 2020 11:13:19 -0300
> -Subject: perf tests bp_account: Make global variable static
> -
> -commit cff20b3151ccab690715cb6cf0f5da5cccb32adf upstream.
> -
> -To fix the build with newer gccs, that without this patch exit with:
> -
> -    LD       /tmp/build/perf/tests/perf-in.o
> -  ld: /tmp/build/perf/tests/bp_account.o:/git/perf/tools/perf/tests/bp_account.c:22: multiple definition of `the_var'; /tmp/build/perf/tests/bp_signal.o:/git/perf/tools/perf/tests/bp_signal.c:38: first defined here
> -  make[4]: *** [/git/perf/tools/build/Makefile.build:145: /tmp/build/perf/tests/perf-in.o] Error 1
> -
> -First noticed in fedora:rawhide/32 with:
> -
> -  [perfbuilder@a5ff49d6e6e4 ~]$ gcc --version
> -  gcc (GCC) 10.0.1 20200216 (Red Hat 10.0.1-0.8)
> -
> -Reported-by: Jiri Olsa <jolsa@kernel.org>
> -Cc: Adrian Hunter <adrian.hunter@intel.com>
> -Cc: Namhyung Kim <namhyung@kernel.org>
> -Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> -Cc: Ben Hutchings <ben@decadent.org.uk>
> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ----
> - tools/perf/tests/bp_account.c | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -(limited to 'tools/perf/tests/bp_account.c')
> -
> -diff --git a/tools/perf/tests/bp_account.c b/tools/perf/tests/bp_account.c
> -index 016bba2c142db..55a9de311d7b0 100644
> ---- a/tools/perf/tests/bp_account.c
> -+++ b/tools/perf/tests/bp_account.c
> -@@ -23,7 +23,7 @@
> - #include "../perf-sys.h"
> - #include "cloexec.h"
> - 
> --volatile long the_var;
> -+static volatile long the_var;
> - 
> - static noinline int test_function(void)
> - {
> --- 
> -cgit 1.2.3-1.el7
> -
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-03.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-03.patch
> deleted file mode 100644
> index 8b8a299..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-03.patch
> +++ /dev/null
> @@ -1,246 +0,0 @@
> -perf bench: Share some global variables to fix build with gcc 10
> -Upstream-Status: Backport https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/tools/perf/bench?h=linux-5.4.y&id=df35e878d0a51755fb500e2e8e29c7ebb0239756
> -Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
> -
> -From df35e878d0a51755fb500e2e8e29c7ebb0239756 Mon Sep 17 00:00:00 2001
> -From: Arnaldo Carvalho de Melo <acme@redhat.com>
> -Date: Mon, 2 Mar 2020 12:09:38 -0300
> -Subject: perf bench: Share some global variables to fix build with gcc 10
> -
> -commit e4d9b04b973b2dbce7b42af95ea70d07da1c936d upstream.
> -
> -Noticed with gcc 10 (fedora rawhide) that those variables were not being
> -declared as static, so end up with:
> -
> -  ld: /tmp/build/perf/bench/epoll-wait.o:/git/perf/tools/perf/bench/epoll-wait.c:93: multiple definition of `end'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here
> -  ld: /tmp/build/perf/bench/epoll-wait.o:/git/perf/tools/perf/bench/epoll-wait.c:93: multiple definition of `start'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here
> -  ld: /tmp/build/perf/bench/epoll-wait.o:/git/perf/tools/perf/bench/epoll-wait.c:93: multiple definition of `runtime'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here
> -  ld: /tmp/build/perf/bench/epoll-ctl.o:/git/perf/tools/perf/bench/epoll-ctl.c:38: multiple definition of `end'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here
> -  ld: /tmp/build/perf/bench/epoll-ctl.o:/git/perf/tools/perf/bench/epoll-ctl.c:38: multiple definition of `start'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here
> -  ld: /tmp/build/perf/bench/epoll-ctl.o:/git/perf/tools/perf/bench/epoll-ctl.c:38: multiple definition of `runtime'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here
> -  make[4]: *** [/git/perf/tools/build/Makefile.build:145: /tmp/build/perf/bench/perf-in.o] Error 1
> -
> -Prefix those with bench__ and add them to bench/bench.h, so that we can
> -share those on the tools needing to access those variables from signal
> -handlers.
> -
> -Acked-by: Thomas Gleixner <tglx@linutronix.de>
> -Cc: Adrian Hunter <adrian.hunter@intel.com>
> -Cc: Davidlohr Bueso <dave@stgolabs.net>
> -Cc: Jiri Olsa <jolsa@kernel.org>
> -Cc: Namhyung Kim <namhyung@kernel.org>
> -Link: http://lore.kernel.org/lkml/20200303155811.GD13702@kernel.org
> -Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> -Cc: Ben Hutchings <ben@decadent.org.uk>
> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ----
> - tools/perf/bench/bench.h         |  4 ++++
> - tools/perf/bench/epoll-ctl.c     |  7 +++----
> - tools/perf/bench/epoll-wait.c    | 11 +++++------
> - tools/perf/bench/futex-hash.c    | 12 ++++++------
> - tools/perf/bench/futex-lock-pi.c | 11 +++++------
> - 5 files changed, 23 insertions(+), 22 deletions(-)
> -
> -(limited to 'tools/perf/bench')
> -
> -diff --git a/tools/perf/bench/bench.h b/tools/perf/bench/bench.h
> -index fddb3ced9db62..4aa6de1aa67dc 100644
> ---- a/tools/perf/bench/bench.h
> -+++ b/tools/perf/bench/bench.h
> -@@ -2,6 +2,10 @@
> - #ifndef BENCH_H
> - #define BENCH_H
> - 
> -+#include <sys/time.h>
> -+
> -+extern struct timeval bench__start, bench__end, bench__runtime;
> -+
> - /*
> -  * The madvise transparent hugepage constants were added in glibc
> -  * 2.13. For compatibility with older versions of glibc, define these
> -diff --git a/tools/perf/bench/epoll-ctl.c b/tools/perf/bench/epoll-ctl.c
> -index bb617e5688412..a7526c05df382 100644
> ---- a/tools/perf/bench/epoll-ctl.c
> -+++ b/tools/perf/bench/epoll-ctl.c
> -@@ -35,7 +35,6 @@
> - 
> - static unsigned int nthreads = 0;
> - static unsigned int nsecs    = 8;
> --struct timeval start, end, runtime;
> - static bool done, __verbose, randomize;
> - 
> - /*
> -@@ -94,8 +93,8 @@ static void toggle_done(int sig __maybe_unused,
> - {
> - 	/* inform all threads that we're done for the day */
> - 	done = true;
> --	gettimeofday(&end, NULL);
> --	timersub(&end, &start, &runtime);
> -+	gettimeofday(&bench__end, NULL);
> -+	timersub(&bench__end, &bench__start, &bench__runtime);
> - }
> - 
> - static void nest_epollfd(void)
> -@@ -361,7 +360,7 @@ int bench_epoll_ctl(int argc, const char **argv)
> - 
> - 	threads_starting = nthreads;
> - 
> --	gettimeofday(&start, NULL);
> -+	gettimeofday(&bench__start, NULL);
> - 
> - 	do_threads(worker, cpu);
> - 
> -diff --git a/tools/perf/bench/epoll-wait.c b/tools/perf/bench/epoll-wait.c
> -index 7af694437f4ea..d1c5cb526b9ff 100644
> ---- a/tools/perf/bench/epoll-wait.c
> -+++ b/tools/perf/bench/epoll-wait.c
> -@@ -90,7 +90,6 @@
> - 
> - static unsigned int nthreads = 0;
> - static unsigned int nsecs    = 8;
> --struct timeval start, end, runtime;
> - static bool wdone, done, __verbose, randomize, nonblocking;
> - 
> - /*
> -@@ -276,8 +275,8 @@ static void toggle_done(int sig __maybe_unused,
> - {
> - 	/* inform all threads that we're done for the day */
> - 	done = true;
> --	gettimeofday(&end, NULL);
> --	timersub(&end, &start, &runtime);
> -+	gettimeofday(&bench__end, NULL);
> -+	timersub(&bench__end, &bench__start, &bench__runtime);
> - }
> - 
> - static void print_summary(void)
> -@@ -287,7 +286,7 @@ static void print_summary(void)
> - 
> - 	printf("\nAveraged %ld operations/sec (+- %.2f%%), total secs = %d\n",
> - 	       avg, rel_stddev_stats(stddev, avg),
> --	       (int) runtime.tv_sec);
> -+	       (int)bench__runtime.tv_sec);
> - }
> - 
> - static int do_threads(struct worker *worker, struct perf_cpu_map *cpu)
> -@@ -479,7 +478,7 @@ int bench_epoll_wait(int argc, const char **argv)
> - 
> - 	threads_starting = nthreads;
> - 
> --	gettimeofday(&start, NULL);
> -+	gettimeofday(&bench__start, NULL);
> - 
> - 	do_threads(worker, cpu);
> - 
> -@@ -519,7 +518,7 @@ int bench_epoll_wait(int argc, const char **argv)
> - 		qsort(worker, nthreads, sizeof(struct worker), cmpworker);
> - 
> - 	for (i = 0; i < nthreads; i++) {
> --		unsigned long t = worker[i].ops/runtime.tv_sec;
> -+		unsigned long t = worker[i].ops / bench__runtime.tv_sec;
> - 
> - 		update_stats(&throughput_stats, t);
> - 
> -diff --git a/tools/perf/bench/futex-hash.c b/tools/perf/bench/futex-hash.c
> -index 8ba0c3330a9a2..21776862e940f 100644
> ---- a/tools/perf/bench/futex-hash.c
> -+++ b/tools/perf/bench/futex-hash.c
> -@@ -37,7 +37,7 @@ static unsigned int nfutexes = 1024;
> - static bool fshared = false, done = false, silent = false;
> - static int futex_flag = 0;
> - 
> --struct timeval start, end, runtime;
> -+struct timeval bench__start, bench__end, bench__runtime;
> - static pthread_mutex_t thread_lock;
> - static unsigned int threads_starting;
> - static struct stats throughput_stats;
> -@@ -103,8 +103,8 @@ static void toggle_done(int sig __maybe_unused,
> - {
> - 	/* inform all threads that we're done for the day */
> - 	done = true;
> --	gettimeofday(&end, NULL);
> --	timersub(&end, &start, &runtime);
> -+	gettimeofday(&bench__end, NULL);
> -+	timersub(&bench__end, &bench__start, &bench__runtime);
> - }
> - 
> - static void print_summary(void)
> -@@ -114,7 +114,7 @@ static void print_summary(void)
> - 
> - 	printf("%sAveraged %ld operations/sec (+- %.2f%%), total secs = %d\n",
> - 	       !silent ? "\n" : "", avg, rel_stddev_stats(stddev, avg),
> --	       (int) runtime.tv_sec);
> -+	       (int)bench__runtime.tv_sec);
> - }
> - 
> - int bench_futex_hash(int argc, const char **argv)
> -@@ -161,7 +161,7 @@ int bench_futex_hash(int argc, const char **argv)
> - 
> - 	threads_starting = nthreads;
> - 	pthread_attr_init(&thread_attr);
> --	gettimeofday(&start, NULL);
> -+	gettimeofday(&bench__start, NULL);
> - 	for (i = 0; i < nthreads; i++) {
> - 		worker[i].tid = i;
> - 		worker[i].futex = calloc(nfutexes, sizeof(*worker[i].futex));
> -@@ -204,7 +204,7 @@ int bench_futex_hash(int argc, const char **argv)
> - 	pthread_mutex_destroy(&thread_lock);
> - 
> - 	for (i = 0; i < nthreads; i++) {
> --		unsigned long t = worker[i].ops/runtime.tv_sec;
> -+		unsigned long t = worker[i].ops / bench__runtime.tv_sec;
> - 		update_stats(&throughput_stats, t);
> - 		if (!silent) {
> - 			if (nfutexes == 1)
> -diff --git a/tools/perf/bench/futex-lock-pi.c b/tools/perf/bench/futex-lock-pi.c
> -index d0cae8125423f..30d97121dc4fb 100644
> ---- a/tools/perf/bench/futex-lock-pi.c
> -+++ b/tools/perf/bench/futex-lock-pi.c
> -@@ -37,7 +37,6 @@ static bool silent = false, multi = false;
> - static bool done = false, fshared = false;
> - static unsigned int nthreads = 0;
> - static int futex_flag = 0;
> --struct timeval start, end, runtime;
> - static pthread_mutex_t thread_lock;
> - static unsigned int threads_starting;
> - static struct stats throughput_stats;
> -@@ -64,7 +63,7 @@ static void print_summary(void)
> - 
> - 	printf("%sAveraged %ld operations/sec (+- %.2f%%), total secs = %d\n",
> - 	       !silent ? "\n" : "", avg, rel_stddev_stats(stddev, avg),
> --	       (int) runtime.tv_sec);
> -+	       (int)bench__runtime.tv_sec);
> - }
> - 
> - static void toggle_done(int sig __maybe_unused,
> -@@ -73,8 +72,8 @@ static void toggle_done(int sig __maybe_unused,
> - {
> - 	/* inform all threads that we're done for the day */
> - 	done = true;
> --	gettimeofday(&end, NULL);
> --	timersub(&end, &start, &runtime);
> -+	gettimeofday(&bench__end, NULL);
> -+	timersub(&bench__end, &bench__start, &bench__runtime);
> - }
> - 
> - static void *workerfn(void *arg)
> -@@ -185,7 +184,7 @@ int bench_futex_lock_pi(int argc, const char **argv)
> - 
> - 	threads_starting = nthreads;
> - 	pthread_attr_init(&thread_attr);
> --	gettimeofday(&start, NULL);
> -+	gettimeofday(&bench__start, NULL);
> - 
> - 	create_threads(worker, thread_attr, cpu);
> - 	pthread_attr_destroy(&thread_attr);
> -@@ -211,7 +210,7 @@ int bench_futex_lock_pi(int argc, const char **argv)
> - 	pthread_mutex_destroy(&thread_lock);
> - 
> - 	for (i = 0; i < nthreads; i++) {
> --		unsigned long t = worker[i].ops/runtime.tv_sec;
> -+		unsigned long t = worker[i].ops / bench__runtime.tv_sec;
> - 
> - 		update_stats(&throughput_stats, t);
> - 		if (!silent)
> --- 
> -cgit 1.2.3-1.el7
> -
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-04.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-04.patch
> deleted file mode 100644
> index dae1222..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-5.4/perf-fixup-gcc10-04.patch
> +++ /dev/null
> @@ -1,45 +0,0 @@
> -libtraceevent: Fix build with binutils 2.35
> -Upstream-Status: Backport https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/patch/tools/lib/traceevent/plugins/Makefile?id=c2fd34d4311033120fa502aa8bd4723cdeee0103
> -Signed-off-by: Khasim Syed Mohammed <khasim.mohammed@arm.com>
> -
> -From c2fd34d4311033120fa502aa8bd4723cdeee0103 Mon Sep 17 00:00:00 2001
> -From: Ben Hutchings <ben@decadent.org.uk>
> -Date: Sat, 25 Jul 2020 02:06:23 +0100
> -Subject: libtraceevent: Fix build with binutils 2.35
> -
> -commit 39efdd94e314336f4acbac4c07e0f37bdc3bef71 upstream.
> -
> -In binutils 2.35, 'nm -D' changed to show symbol versions along with
> -symbol names, with the usual @@ separator.  When generating
> -libtraceevent-dynamic-list we need just the names, so strip off the
> -version suffix if present.
> -
> -Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> -Tested-by: Salvatore Bonaccorso <carnil@debian.org>
> -Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
> -Cc: linux-trace-devel@vger.kernel.org
> -Cc: stable@vger.kernel.org
> -Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ----
> - tools/lib/traceevent/plugins/Makefile | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -(limited to 'tools/lib/traceevent/plugins/Makefile')
> -
> -diff --git a/tools/lib/traceevent/plugins/Makefile b/tools/lib/traceevent/plugins/Makefile
> -index f440989fa55e4..23c3535bcbd6b 100644
> ---- a/tools/lib/traceevent/plugins/Makefile
> -+++ b/tools/lib/traceevent/plugins/Makefile
> -@@ -196,7 +196,7 @@ define do_generate_dynamic_list_file
> - 	xargs echo "U w W" | tr 'w ' 'W\n' | sort -u | xargs echo`;\
> - 	if [ "$$symbol_type" = "U W" ];then				\
> - 		(echo '{';                                              \
> --		$(NM) -u -D $1 | awk 'NF>1 {print "\t"$$2";"}' | sort -u;\
> -+		$(NM) -u -D $1 | awk 'NF>1 {sub("@.*", "", $$2); print "\t"$$2";"}' | sort -u;\
> - 		echo '};';                                              \
> - 		) > $2;                                                 \
> - 	else                                                            \
> --- 
> -cgit 1.2.3-1.el7
> -
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-n1sdp.inc b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-n1sdp.inc
> deleted file mode 100644
> index 7a2d49b..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-n1sdp.inc
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -FILESEXTRAPATHS_prepend := "${THISDIR}/linux-linaro-arm-5.4:"
> -
> -SRC_URI_append = " \
> -    file://0001-TMP-iommu-arm-smmu-v3-Ignore-IOPF-capabilities.patch \
> -    file://0002-pci_quirk-add-acs-override-for-PCI-devices.patch \
> -    file://0003-pcie-Add-quirk-for-the-Arm-Neoverse-N1SDP-platform.patch \
> -    file://0004-n1sdp-update-n1sdp-pci-quirk-for-SR-IOV-support.patch \
> -    file://0005-n1sdp-pcie-add-quirk-support-enabling-remote-chip-PC.patch \
> -    file://enable-realtek-R8169.cfg \
> -    file://scripts-dtc-remove-redundant-YYLOC.patch \
> -    "
> -
> -# Referring to commit TAG N1SDP-2020.07.27
> -SRCREV = "84baaae9e751c058717d9702438429257f077f03"
> -
> -# Use intree defconfig
> -KBUILD_DEFCONFIG = "defconfig"
> -
> -# Since the intree defconfig in n1sdp kernel repository is not setting all the configs,
> -# KCONFIG_MODE is set to "alldefconfig" to properly expand the defconfig.
> -KCONFIG_MODE = "--alldefconfig"
> -
> -COMPATIBLE_MACHINE = "n1sdp"
> -
> -# Since we use the intree defconfig and the preempt-rt turns off some configs
> -# do_kernel_configcheck will display warnings. So, lets disable it.
> -KCONF_AUDIT_LEVEL_pn-linux-linaro-arm-rt = "0"
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt-5.4/0001-xen-use-handle_fasteoi_irq-to-handle-xen-dynamic-eve.patch b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt-5.4/0001-xen-use-handle_fasteoi_irq-to-handle-xen-dynamic-eve.patch
> deleted file mode 100644
> index 39c159f..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt-5.4/0001-xen-use-handle_fasteoi_irq-to-handle-xen-dynamic-eve.patch
> +++ /dev/null
> @@ -1,80 +0,0 @@
> -From c2971c8a3f076ea8a522ce4fbb367d112d86c13a Mon Sep 17 00:00:00 2001
> -From: Stefano Stabellini <sstabellini@kernel.org>
> -Date: Mon, 27 Apr 2020 16:15:26 -0700
> -Subject: [PATCH] xen: use handle_fasteoi_irq to handle xen dynamic events
> -
> -When handling Xen events, we need to make sure the following sequence is
> -followed:
> -
> -- mask event
> -- handle event and clear event (the order does not matter)
> -- unmask event
> -
> -It is not possible to implement this flow with handle_edge_irq, so
> -switch back to handle_fasteoi_irq. Please note that Xen event irqs are
> -ONESHOT. Also note that handle_fasteoi_irq was in-use before the
> -following commit, that is partially reverted by this patch:
> -
> -7e186bdd0098 xen: do not clear and mask evtchns in __xen_evtchn_do_upcall
> -
> -PIRQ handling is left unchanged.
> -
> -This patch fixes a domU hang observed when using LinuxRT as dom0 kernel.
> -
> -Link: https://lkml.org/lkml/2020/4/27/1287
> -Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
> -
> -Upstream-Status: Inappropriate since the upstream solution diverges from this patch
> -Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
> ----
> - drivers/xen/events/events_base.c | 13 +++----------
> - 1 file changed, 3 insertions(+), 10 deletions(-)
> -
> -diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
> -index 6c8843968a52..1873a19b8b24 100644
> ---- a/drivers/xen/events/events_base.c
> -+++ b/drivers/xen/events/events_base.c
> -@@ -845,7 +845,7 @@ int bind_evtchn_to_irq(unsigned int evtchn)
> - 			goto out;
> - 
> - 		irq_set_chip_and_handler_name(irq, &xen_dynamic_chip,
> --					      handle_edge_irq, "event");
> -+					      handle_fasteoi_irq, "event");
> - 
> - 		ret = xen_irq_info_evtchn_setup(irq, evtchn);
> - 		if (ret < 0) {
> -@@ -978,7 +978,7 @@ int bind_virq_to_irq(unsigned int virq, unsigned int cpu, bool percpu)
> - 						      handle_percpu_irq, "virq");
> - 		else
> - 			irq_set_chip_and_handler_name(irq, &xen_dynamic_chip,
> --						      handle_edge_irq, "virq");
> -+						      handle_fasteoi_irq, "virq");
> - 
> - 		bind_virq.virq = virq;
> - 		bind_virq.vcpu = xen_vcpu_nr(cpu);
> -@@ -1387,12 +1387,6 @@ static void ack_dynirq(struct irq_data *data)
> - 		clear_evtchn(evtchn);
> - }
> - 
> --static void mask_ack_dynirq(struct irq_data *data)
> --{
> --	disable_dynirq(data);
> --	ack_dynirq(data);
> --}
> --
> - static int retrigger_dynirq(struct irq_data *data)
> - {
> - 	unsigned int evtchn = evtchn_from_irq(data->irq);
> -@@ -1595,8 +1589,7 @@ static struct irq_chip xen_dynamic_chip __read_mostly = {
> - 	.irq_mask		= disable_dynirq,
> - 	.irq_unmask		= enable_dynirq,
> - 
> --	.irq_ack		= ack_dynirq,
> --	.irq_mask_ack		= mask_ack_dynirq,
> -+	.irq_eoi		= ack_dynirq,
> - 
> - 	.irq_set_affinity	= set_affinity_irq,
> - 	.irq_retrigger		= retrigger_dynirq,
> --- 
> -2.17.1
> -
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt_5.4.bb b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt_5.4.bb
> deleted file mode 100644
> index fa3bb73..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm-rt_5.4.bb
> +++ /dev/null
> @@ -1,19 +0,0 @@
> -# This recipe provides the kernel with PREEMPT_RT patches and is based on
> -# linux-linaro-arm_5.4.bb. Set PREFERRED_PROVIDER_virtual/kernel to
> -# linux-linaro-arm-rt to enable it as the default kernel.
> -require linux-linaro-arm_5.4.bb
> -
> -
> -#
> -# Include preempt-rt patches
> -#
> -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-5.4:"
> -SRC_URI_append = " \
> -    https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.4/older/patch-5.4.3-rt1.patch.gz;name=rt-patch \
> -    file://0001-xen-use-handle_fasteoi_irq-to-handle-xen-dynamic-eve.patch \
> -    "
> -SRC_URI[rt-patch.sha256sum] = "6b92ba32c7ce30919c9b66e49e5f1dce58e1f8bd92fef91e548d6f2d434a2b39"
> -
> -LINUX_KERNEL_TYPE = "preempt-rt"
> -
> -KERNEL_FEATURES += "features/arm-autonomy/preempt-rt-extras.scc"
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm.inc b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm.inc
> deleted file mode 100644
> index 4859a66..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm.inc
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -# Recipe for building linaro kernel
> -
> -SUMMARY = "Linux Kernel Upstream, supported by Arm/Linaro"
> -SECTION = "kernel"
> -LICENSE = "GPLv2"
> -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
> -
> -inherit kernel
> -inherit kernel-yocto
> -
> -# Require linux-yocto.inc in order to have separate build dirs when building
> -# LINUX_KERNEL_TYPE as 'standard' and 'preempt-rt'
> -require recipes-kernel/linux/linux-yocto.inc
> -
> -SRC_URI = "git://git.linaro.org/landing-teams/working/arm/kernel-release.git;branch=${KBRANCH} \
> -           git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=${KMETA_BRANCH};destsuffix=kernel-meta \
> -           file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch"
> -
> -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
> -DEPENDS += "openssl-native util-linux-native"
> -
> -LINUX_VERSION ?= "${PV}"
> -S = "${WORKDIR}/git"
> -
> -# Add machine-specific settings
> -MACHINE_KERNEL_REQUIRE ?= ""
> -MACHINE_KERNEL_REQUIRE_n1sdp = "linux-linaro-arm-n1sdp.inc"
> -
> -require ${MACHINE_KERNEL_REQUIRE}
> diff --git a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm_5.4.bb b/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm_5.4.bb
> deleted file mode 100644
> index 8e880ed..0000000
> --- a/meta-arm-autonomy/dynamic-layers/meta-arm-bsp/recipes-kernel/linux/linux-linaro-arm_5.4.bb
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -SRCREV ?= "84baaae9e751c058717d9702438429257f077f03"
> -SRCREV_meta ?= "e32057eca987b7abbe3eb47ba36f06af8711278a"
> -
> -# KBRANCH is set to n1sdp by default as there is no master or 5.4 branch on the repository
> -KBRANCH ?= "n1sdp"
> -KMETA_BRANCH ?= "yocto-5.4"
> -
> -# Apply following patches
> -SRC_URI_append = " \
> -    file://fix-bfd-link.patch \
> -    file://perf-fixup-gcc10-01.patch \
> -    file://perf-fixup-gcc10-02.patch \
> -    file://perf-fixup-gcc10-03.patch \
> -    file://perf-fixup-gcc10-04.patch \
> -    "
> -
> -require linux-linaro-arm.inc
> -- 
> 2.25.1
> 

> 
> 
> 


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-03-29 15:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-25 14:00 [PATCH 1/2] arm-autonomy/n1sdp: Remove support for linux-linaro-arm_5.4 Peter Hoyes
2021-03-25 14:00 ` [PATCH 2/2] arm-autonomy/linux-arm-autonomy: Fix Dom0 boot issue with preempt_rt kernel Peter Hoyes
2021-03-29 15:51 ` [meta-arm] [PATCH 1/2] arm-autonomy/n1sdp: Remove support for linux-linaro-arm_5.4 Jon Mason

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.