diff options
10 files changed, 2 insertions, 673 deletions
diff --git a/conf/machine/ep108-zynqmp.conf b/conf/machine/ep108-zynqmp.conf index 85975617..8283fe15 100644 --- a/conf/machine/ep108-zynqmp.conf +++ b/conf/machine/ep108-zynqmp.conf @@ -13,8 +13,7 @@ EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native" SERIAL_CONSOLE = "115200 ttyPS0" -# Use ZynqMP recipes for Kernal and U-Boot -PREFERRED_PROVIDER_virtual/kernel ?= "linux-zynqmp-mainline" +# Use ZynqMP recipes for U-Boot PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-zynqmp-mainline" KERNEL_DEVICETREE = "xilinx/zynqmp-ep108.dtb" diff --git a/conf/machine/include/machine-xilinx-default.inc b/conf/machine/include/machine-xilinx-default.inc index e5d6584b..d654a2a2 100644 --- a/conf/machine/include/machine-xilinx-default.inc +++ b/conf/machine/include/machine-xilinx-default.inc @@ -9,6 +9,7 @@ IMAGE_CLASSES += "image_types_uboot" # Kernel Configuration XILINX_DEFAULT_KERNEL := "linux-xlnx" XILINX_DEFAULT_KERNEL_microblaze := "linux-yocto" +XILINX_DEFAULT_KERNEL_zynqmp := "linux-yocto" PREFERRED_PROVIDER_virtual/kernel ??= "${XILINX_DEFAULT_KERNEL}" PREFERRED_VERSION_linux-xlnx ?= "3.19%" diff --git a/recipes-kernel/linux/linux-zynqmp-mainline/0001-ARM64-Add-new-Xilinx-ZynqMP-SoC.patch b/recipes-kernel/linux/linux-zynqmp-mainline/0001-ARM64-Add-new-Xilinx-ZynqMP-SoC.patch deleted file mode 100644 index 9aed3963..00000000 --- a/recipes-kernel/linux/linux-zynqmp-mainline/0001-ARM64-Add-new-Xilinx-ZynqMP-SoC.patch +++ /dev/null @@ -1,436 +0,0 @@ -From a8de57243f95b3b2a5f858d416b084abb7049445 Mon Sep 17 00:00:00 2001 -From: Michal Simek <michal.simek@xilinx.com> -Date: Wed, 11 Feb 2015 14:37:23 +0100 -Subject: [PATCH 1/7] ARM64: Add new Xilinx ZynqMP SoC -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Initial version of device tree for Xilinx ZynqMP SoC. - -Signed-off-by: Michal Simek <michal.simek@xilinx.com> -Acked-by: Sören Brinkmann <soren.brinkmann@xilinx.com> ---- - arch/arm64/Kconfig | 5 + - arch/arm64/boot/dts/Makefile | 1 + - arch/arm64/boot/dts/xilinx/Makefile | 5 + - arch/arm64/boot/dts/xilinx/zynqmp-ep108.dts | 46 +++++ - arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 301 ++++++++++++++++++++++++++++ - arch/arm64/configs/defconfig | 1 + - 6 files changed, 359 insertions(+) - create mode 100644 arch/arm64/boot/dts/xilinx/Makefile - create mode 100644 arch/arm64/boot/dts/xilinx/zynqmp-ep108.dts - create mode 100644 arch/arm64/boot/dts/xilinx/zynqmp.dtsi - -diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index b1f9a20..fd103ed 100644 ---- a/arch/arm64/Kconfig -+++ b/arch/arm64/Kconfig -@@ -173,6 +173,11 @@ config ARCH_XGENE - help - This enables support for AppliedMicro X-Gene SOC Family - -+config ARCH_ZYNQMP -+ bool "Xilinx Zynq MP SOC Family" -+ help -+ This enables support for Xilinx Zynq MP SOC Family -+ - endmenu - - menu "Bus support" -diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile -index c62b0f4..9470c79 100644 ---- a/arch/arm64/boot/dts/Makefile -+++ b/arch/arm64/boot/dts/Makefile -@@ -2,5 +2,6 @@ dts-dirs += amd - dts-dirs += apm - dts-dirs += arm - dts-dirs += cavium -+dts-dirs += xilinx - - subdir-y := $(dts-dirs) -diff --git a/arch/arm64/boot/dts/xilinx/Makefile b/arch/arm64/boot/dts/xilinx/Makefile -new file mode 100644 -index 0000000..ae16427 ---- /dev/null -+++ b/arch/arm64/boot/dts/xilinx/Makefile -@@ -0,0 +1,5 @@ -+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-ep108.dtb -+ -+always := $(dtb-y) -+subdir-y := $(dts-dirs) -+clean-files := *.dtb -diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-ep108.dts b/arch/arm64/boot/dts/xilinx/zynqmp-ep108.dts -new file mode 100644 -index 0000000..121a47f ---- /dev/null -+++ b/arch/arm64/boot/dts/xilinx/zynqmp-ep108.dts -@@ -0,0 +1,46 @@ -+/* -+ * dts file for Xilinx ZynqMP ep108 development board -+ * -+ * (c) Copyright 2014 - 2015, Xilinx, Inc. -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of -+ * the License, or (at your option) any later version. -+ */ -+ -+/dts-v1/; -+ -+/include/ "zynqmp.dtsi" -+ -+/ { -+ model = "ZynqMP EP108"; -+ -+ aliases { -+ serial0 = &uart0; -+ }; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+ -+ memory { -+ device_type = "memory"; -+ reg = <0x0 0x0 0x40000000>; -+ }; -+}; -+ -+&gem0 { -+ status = "okay"; -+ phy-handle = <&phy0>; -+ phy-mode = "rgmii-id"; -+ phy0: phy@0{ -+ reg = <0>; -+ max-speed = <100>; -+ }; -+}; -+ -+&uart0 { -+ status = "okay"; -+}; -+ -diff --git a/arch/arm64/boot/dts/xilinx/zynqmp.dtsi b/arch/arm64/boot/dts/xilinx/zynqmp.dtsi -new file mode 100644 -index 0000000..d8402fd ---- /dev/null -+++ b/arch/arm64/boot/dts/xilinx/zynqmp.dtsi -@@ -0,0 +1,301 @@ -+/* -+ * dts file for Xilinx ZynqMP -+ * -+ * (c) Copyright 2014 - 2015, Xilinx, Inc. -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of -+ * the License, or (at your option) any later version. -+ */ -+ -+/ { -+ compatible = "xlnx,zynqmp"; -+ #address-cells = <2>; -+ #size-cells = <1>; -+ -+ cpus { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ cpu@0 { -+ compatible = "arm,cortex-a53", "arm,armv8"; -+ device_type = "cpu"; -+ enable-method = "psci"; -+ reg = <0x0>; -+ }; -+ -+ cpu@1 { -+ compatible = "arm,cortex-a53", "arm,armv8"; -+ device_type = "cpu"; -+ enable-method = "psci"; -+ reg = <0x1>; -+ }; -+ -+ cpu@2 { -+ compatible = "arm,cortex-a53", "arm,armv8"; -+ device_type = "cpu"; -+ enable-method = "psci"; -+ reg = <0x2>; -+ }; -+ -+ cpu@3 { -+ compatible = "arm,cortex-a53", "arm,armv8"; -+ device_type = "cpu"; -+ enable-method = "psci"; -+ reg = <0x3>; -+ }; -+ }; -+ -+ psci { -+ compatible = "arm,psci-0.2"; -+ method = "smc"; -+ }; -+ -+ pmu { -+ compatible = "arm,armv8-pmuv3"; -+ interrupts = <0 143 4>, -+ <0 144 4>, -+ <0 145 4>, -+ <0 146 4>; -+ }; -+ -+ amba_apu { -+ compatible = "simple-bus"; -+ #address-cells = <2>; -+ #size-cells = <1>; -+ ranges; -+ -+ timer { -+ compatible = "arm,armv8-timer"; -+ interrupt-parent = <&gic>; -+ interrupts = <1 13 0xff01>, -+ <1 14 0xff01>, -+ <1 11 0xff01>, -+ <1 10 0xff01>; -+ }; -+ -+ gic: interrupt-controller@f9010000 { -+ compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic"; -+ #interrupt-cells = <3>; -+ reg = <0x0 0xf9010000 0x10000>, -+ <0x0 0xf9020000 0x20000>, -+ <0x0 0xf9040000 0x20000>, -+ <0x0 0xf9060000 0x20000>; -+ interrupt-controller; -+ }; -+ }; -+ -+ amba { -+ compatible = "simple-bus"; -+ #address-cells = <2>; -+ #size-cells = <1>; -+ ranges; -+ -+ misc_clk: misc_clk { -+ compatible = "fixed-clock"; -+ #clock-cells = <0>; -+ clock-frequency = <25000000>; -+ }; -+ -+ ttc0: timer@ff110000 { -+ compatible = "cdns,ttc"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 36 4>, <0 37 4>, <0 38 4>; -+ reg = <0x0 0xff110000 0x1000>; -+ clocks = <&misc_clk>; -+ timer-width = <32>; -+ }; -+ -+ ttc1: timer@ff120000 { -+ compatible = "cdns,ttc"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 39 4>, <0 40 4>, <0 41 4>; -+ reg = <0x0 0xff120000 0x1000>; -+ clocks = <&misc_clk>; -+ timer-width = <32>; -+ }; -+ -+ ttc2: timer@ff130000 { -+ compatible = "cdns,ttc"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 42 4>, <0 43 4>, <0 44 4>; -+ reg = <0x0 0xff130000 0x1000>; -+ clocks = <&misc_clk>; -+ timer-width = <32>; -+ }; -+ -+ ttc3: timer@ff140000 { -+ compatible = "cdns,ttc"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 45 4>, <0 46 4>, <0 47 4>; -+ reg = <0x0 0xff140000 0x1000>; -+ clocks = <&misc_clk>; -+ timer-width = <32>; -+ }; -+ -+ uart0: serial@ff000000 { -+ compatible = "cdns,uart-r1p8"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 21 4>; -+ reg = <0x0 0xff000000 0x1000>; -+ clock-names = "uart_clk", "pclk"; -+ clocks = <&misc_clk &misc_clk>; -+ }; -+ -+ uart1: serial@ff010000 { -+ compatible = "cdns,uart-r1p8"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 22 4>; -+ reg = <0x0 0xff010000 0x1000>; -+ clock-names = "uart_clk", "pclk"; -+ clocks = <&misc_clk &misc_clk>; -+ }; -+ -+ gpio: gpio@ff0a0000 { -+ compatible = "xlnx,zynq-gpio-1.0"; -+ status = "disabled"; -+ #gpio-cells = <0x2>; -+ clocks = <&misc_clk>; -+ interrupt-parent = <&gic>; -+ interrupts = <0 16 4>; -+ reg = <0x0 0xff0a0000 0x1000>; -+ }; -+ -+ gem0: ethernet@ff0b0000 { -+ compatible = "cdns,gem"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 57 4>; -+ reg = <0x0 0xff0b0000 0x1000>; -+ clock-names = "pclk", "hclk", "tx_clk"; -+ clocks = <&misc_clk>, <&misc_clk>, <&misc_clk>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ }; -+ -+ gem1: ethernet@ff0c0000 { -+ compatible = "cdns,gem"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 59 4>; -+ reg = <0x0 0xff0c0000 0x1000>; -+ clock-names = "pclk", "hclk", "tx_clk"; -+ clocks = <&misc_clk>, <&misc_clk>, <&misc_clk>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ }; -+ -+ gem2: ethernet@ff0d0000 { -+ compatible = "cdns,gem"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 61 4>; -+ reg = <0x0 0xff0d0000 0x1000>; -+ clock-names = "pclk", "hclk", "tx_clk"; -+ clocks = <&misc_clk>, <&misc_clk>, <&misc_clk>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ }; -+ -+ gem3: ethernet@ff0e0000 { -+ compatible = "cdns,gem"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 63 4>; -+ reg = <0x0 0xff0e0000 0x1000>; -+ clock-names = "pclk", "hclk", "tx_clk"; -+ clocks = <&misc_clk>, <&misc_clk>, <&misc_clk>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ }; -+ -+ spi0: spi@ff040000 { -+ compatible = "cdns,spi-r1p6"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 19 4>; -+ reg = <0x0 0xff040000 0x1000>; -+ clock-names = "ref_clk", "pclk"; -+ clocks = <&misc_clk &misc_clk>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ }; -+ -+ spi1: spi@ff050000 { -+ compatible = "cdns,spi-r1p6"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 20 4>; -+ reg = <0x0 0xff050000 0x1000>; -+ clock-names = "ref_clk", "pclk"; -+ clocks = <&misc_clk &misc_clk>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ }; -+ -+ i2c_clk: i2c_clk { -+ compatible = "fixed-clock"; -+ #clock-cells = <0x0>; -+ clock-frequency = <111111111>; -+ }; -+ -+ i2c0: i2c@ff020000 { -+ compatible = "cdns,i2c-r1p10"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 17 4>; -+ reg = <0x0 0xff020000 0x1000>; -+ clocks = <&i2c_clk>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ }; -+ -+ i2c1: i2c@ff030000 { -+ compatible = "cdns,i2c-r1p10"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 18 4>; -+ reg = <0x0 0xff030000 0x1000>; -+ clocks = <&i2c_clk>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ }; -+ -+ sdhci0: sdhci@ff160000 { -+ compatible = "arasan,sdhci-8.9a"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 48 4>; -+ reg = <0x0 0xff160000 0x1000>; -+ clock-names = "clk_xin", "clk_ahb"; -+ clocks = <&misc_clk>, <&misc_clk>; -+ }; -+ -+ sdhci1: sdhci@ff170000 { -+ compatible = "arasan,sdhci-8.9a"; -+ status = "disabled"; -+ interrupt-parent = <&gic>; -+ interrupts = <0 49 4>; -+ reg = <0x0 0xff170000 0x1000>; -+ clock-names = "clk_xin", "clk_ahb"; -+ clocks = <&misc_clk>, <&misc_clk>; -+ }; -+ -+ watchdog0: watchdog@fd4d0000 { -+ compatible = "cdns,wdt-r1p2"; -+ status = "disabled"; -+ clocks= <&misc_clk>; -+ interrupt-parent = <&gic>; -+ interrupts = <0 52 1>; -+ reg = <0x0 0xfd4d0000 0x1000>; -+ timeout-sec = <10>; -+ }; -+ }; -+}; -diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig -index 5376d90..d1b5da8 100644 ---- a/arch/arm64/configs/defconfig -+++ b/arch/arm64/configs/defconfig -@@ -34,6 +34,7 @@ CONFIG_MODULE_UNLOAD=y - CONFIG_ARCH_THUNDER=y - CONFIG_ARCH_VEXPRESS=y - CONFIG_ARCH_XGENE=y -+CONFIG_ARCH_ZYNQMP=y - CONFIG_PCI=y - CONFIG_PCI_MSI=y - CONFIG_PCI_XGENE=y --- -2.1.1 - diff --git a/recipes-kernel/linux/linux-zynqmp-mainline/0002-net-cadence-Enable-MACB-driver-for-ARM64.patch b/recipes-kernel/linux/linux-zynqmp-mainline/0002-net-cadence-Enable-MACB-driver-for-ARM64.patch deleted file mode 100644 index 032137eb..00000000 --- a/recipes-kernel/linux/linux-zynqmp-mainline/0002-net-cadence-Enable-MACB-driver-for-ARM64.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 84cf0db302640fc5b29556b1064508eaa39ab08a Mon Sep 17 00:00:00 2001 -From: Michal Simek <michal.simek@xilinx.com> -Date: Wed, 11 Feb 2015 14:31:38 +0100 -Subject: [PATCH 2/7] net: cadence: Enable MACB driver for ARM64 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This driver is used on new Xilinx ZynqMP SoC. - -Signed-off-by: Michal Simek <michal.simek@xilinx.com> -Acked-by: Sören Brinkmann <soren.brinkmann@xilinx.com> ---- - drivers/net/ethernet/cadence/Kconfig | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/drivers/net/ethernet/cadence/Kconfig b/drivers/net/ethernet/cadence/Kconfig -index 321d2ad..4562f90 100644 ---- a/drivers/net/ethernet/cadence/Kconfig -+++ b/drivers/net/ethernet/cadence/Kconfig -@@ -4,7 +4,7 @@ - - config NET_CADENCE - bool "Cadence devices" -- depends on HAS_IOMEM && (ARM || AVR32 || MICROBLAZE || COMPILE_TEST) -+ depends on HAS_IOMEM && (ARM || ARM64 || AVR32 || MICROBLAZE || COMPILE_TEST) - default y - ---help--- - If you have a network (Ethernet) card belonging to this class, say Y. -@@ -30,7 +30,7 @@ config ARM_AT91_ETHER - - config MACB - tristate "Cadence MACB/GEM support" -- depends on HAS_DMA && (PLATFORM_AT32AP || ARCH_AT91 || ARCH_PICOXCELL || ARCH_ZYNQ || MICROBLAZE || COMPILE_TEST) -+ depends on HAS_DMA && (PLATFORM_AT32AP || ARCH_AT91 || ARCH_PICOXCELL || ARCH_ZYNQ || ARM64 || MICROBLAZE || COMPILE_TEST) - select PHYLIB - ---help--- - The Cadence MACB ethernet interface is found on many Atmel AT32 and --- -2.1.1 - diff --git a/recipes-kernel/linux/linux-zynqmp-mainline/0003-spi-Enable-Cadence-SPI-driver-for-ARM64.patch b/recipes-kernel/linux/linux-zynqmp-mainline/0003-spi-Enable-Cadence-SPI-driver-for-ARM64.patch deleted file mode 100644 index 9e6b9a84..00000000 --- a/recipes-kernel/linux/linux-zynqmp-mainline/0003-spi-Enable-Cadence-SPI-driver-for-ARM64.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 411f7900bf4609e398bca8ae0be39bb3ab6b2642 Mon Sep 17 00:00:00 2001 -From: Michal Simek <michal.simek@xilinx.com> -Date: Wed, 11 Feb 2015 14:34:56 +0100 -Subject: [PATCH 3/7] spi: Enable Cadence SPI driver for ARM64 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This driver is used on new Xilinx ZynqMP SoC. - -Signed-off-by: Michal Simek <michal.simek@xilinx.com> -Acked-by: Sören Brinkmann <soren.brinkmann@xilinx.com> ---- - drivers/spi/Kconfig | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig -index 9982998..07bb370 100644 ---- a/drivers/spi/Kconfig -+++ b/drivers/spi/Kconfig -@@ -159,7 +159,7 @@ config SPI_BUTTERFLY - - config SPI_CADENCE - tristate "Cadence SPI controller" -- depends on ARM -+ depends on ARM || ARM64 - help - This selects the Cadence SPI controller master driver - used by Xilinx Zynq. --- -2.1.1 - diff --git a/recipes-kernel/linux/linux-zynqmp-mainline/0004-arm64-mm-Correct-check-for-EXEC-faults.patch b/recipes-kernel/linux/linux-zynqmp-mainline/0004-arm64-mm-Correct-check-for-EXEC-faults.patch deleted file mode 100644 index 438546da..00000000 --- a/recipes-kernel/linux/linux-zynqmp-mainline/0004-arm64-mm-Correct-check-for-EXEC-faults.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 9f0f9df61d6c198528ba2fd43981b166ea337dd3 Mon Sep 17 00:00:00 2001 -From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com> -Date: Mon, 28 Apr 2014 11:15:24 +1000 -Subject: [PATCH 4/7] arm64: mm: Correct check for EXEC faults - -ESR_LNX_EXEC doesn't match anything in the specs. Replace it -with ESR.EC IABT based checks. - -Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> -Signed-off-by: Michal Simek <michal.simek@xilinx.com> ---- - arch/arm64/mm/fault.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c -index c11cd27..276529a 100644 ---- a/arch/arm64/mm/fault.c -+++ b/arch/arm64/mm/fault.c -@@ -36,6 +36,7 @@ - #include <asm/system_misc.h> - #include <asm/pgtable.h> - #include <asm/tlbflush.h> -+#include <asm/esr.h> - - static const char *fault_name(unsigned int esr); - -@@ -199,6 +200,7 @@ static int __kprobes do_page_fault(unsigned long addr, unsigned int esr, - int fault, sig, code; - unsigned long vm_flags = VM_READ | VM_WRITE | VM_EXEC; - unsigned int mm_flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; -+ unsigned long esr_ec = esr >> ESR_EL1_EC_SHIFT; - - tsk = current; - mm = tsk->mm; -@@ -217,7 +219,7 @@ static int __kprobes do_page_fault(unsigned long addr, unsigned int esr, - if (user_mode(regs)) - mm_flags |= FAULT_FLAG_USER; - -- if (esr & ESR_LNX_EXEC) { -+ if (esr_ec == ESR_EL1_EC_IABT_EL0 || esr_ec == ESR_EL1_EC_IABT_EL1) { - vm_flags = VM_EXEC; - } else if ((esr & ESR_EL1_WRITE) && !(esr & ESR_EL1_CM)) { - vm_flags = VM_WRITE; --- -2.1.1 - diff --git a/recipes-kernel/linux/linux-zynqmp-mainline/0005-arm64-Implement-cpu_relax-as-yield.patch b/recipes-kernel/linux/linux-zynqmp-mainline/0005-arm64-Implement-cpu_relax-as-yield.patch deleted file mode 100644 index 5f0c5a6d..00000000 --- a/recipes-kernel/linux/linux-zynqmp-mainline/0005-arm64-Implement-cpu_relax-as-yield.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 9a7a3eb786ef4d7221c9090f2bd47933fbbdb047 Mon Sep 17 00:00:00 2001 -From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> -Date: Thu, 12 Jun 2014 17:05:42 -0700 -Subject: [PATCH 5/7] arm64: Implement cpu_relax as yield - -ARM64 has the yield instruction which has the intended semantics of -cpu_relax. Implement. - -Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> -Signed-off-by: Michal Simek <michal.simek@xilinx.com> ---- - arch/arm64/include/asm/processor.h | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h -index f9be30e..334144d 100644 ---- a/arch/arm64/include/asm/processor.h -+++ b/arch/arm64/include/asm/processor.h -@@ -126,7 +126,10 @@ extern void release_thread(struct task_struct *); - - unsigned long get_wchan(struct task_struct *p); - --#define cpu_relax() barrier() -+static inline void cpu_relax(void) { -+ barrier(); -+ asm volatile("yield"); -+} - #define cpu_relax_lowlatency() cpu_relax() - - /* Thread switching */ --- -2.1.1 - diff --git a/recipes-kernel/linux/linux-zynqmp-mainline/0006-arm64-spinlock-sev-when-unlocking-locks.patch b/recipes-kernel/linux/linux-zynqmp-mainline/0006-arm64-spinlock-sev-when-unlocking-locks.patch deleted file mode 100644 index bc90a758..00000000 --- a/recipes-kernel/linux/linux-zynqmp-mainline/0006-arm64-spinlock-sev-when-unlocking-locks.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 761cba95ae66984cf60423190aefb3b794774033 Mon Sep 17 00:00:00 2001 -From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> -Date: Thu, 12 Jun 2014 17:05:43 -0700 -Subject: [PATCH 6/7] arm64: spinlock: sev when unlocking locks - -Because spinners are doing a wfe in their poll of the lock. - -Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> -Signed-off-by: Michal Simek <michal.simek@xilinx.com> ---- - arch/arm64/include/asm/spinlock.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/arch/arm64/include/asm/spinlock.h b/arch/arm64/include/asm/spinlock.h -index cee1287..c4df86f 100644 ---- a/arch/arm64/include/asm/spinlock.h -+++ b/arch/arm64/include/asm/spinlock.h -@@ -87,6 +87,7 @@ static inline void arch_spin_unlock(arch_spinlock_t *lock) - { - asm volatile( - " stlrh %w1, %0\n" -+" sev\n" - : "=Q" (lock->owner) - : "r" (lock->owner + 1) - : "memory"); --- -2.1.1 - diff --git a/recipes-kernel/linux/linux-zynqmp-mainline/0007-kbuild-Create-directory-for-target-DTB.patch b/recipes-kernel/linux/linux-zynqmp-mainline/0007-kbuild-Create-directory-for-target-DTB.patch deleted file mode 100644 index d90bdba9..00000000 --- a/recipes-kernel/linux/linux-zynqmp-mainline/0007-kbuild-Create-directory-for-target-DTB.patch +++ /dev/null @@ -1,31 +0,0 @@ -From d24f5867cd1120665c01fe001a601f335b99126b Mon Sep 17 00:00:00 2001 -From: Nathan Rossi <nathan.rossi@xilinx.com> -Date: Wed, 18 Feb 2015 17:34:14 +1000 -Subject: [PATCH 7/7] kbuild: Create directory for target DTB - -When building specific DTBs out of the kernel tree the vendor subdirs -(boot/dts/<vendor>) are not created, ensure that they are before -building the DTB. - -Signed-off-by: Nathan Rossi <nathan.rossi@xilinx.com> ---- - scripts/Makefile.lib | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib -index 5117552..f195f97 100644 ---- a/scripts/Makefile.lib -+++ b/scripts/Makefile.lib -@@ -272,7 +272,8 @@ $(obj)/%.dtb.S: $(obj)/%.dtb - $(call cmd,dt_S_dtb) - - quiet_cmd_dtc = DTC $@ --cmd_dtc = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ -+cmd_dtc = mkdir -p `dirname ${dtc-tmp}` ; \ -+ $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ - $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \ - -i $(dir $<) $(DTC_FLAGS) \ - -d $(depfile).dtc.tmp $(dtc-tmp) ; \ --- -2.1.1 - diff --git a/recipes-kernel/linux/linux-zynqmp-mainline_3.19.bb b/recipes-kernel/linux/linux-zynqmp-mainline_3.19.bb deleted file mode 100644 index b6258981..00000000 --- a/recipes-kernel/linux/linux-zynqmp-mainline_3.19.bb +++ /dev/null @@ -1,24 +0,0 @@ - -# This kernel is based on the mainline v3.19 release -LINUX_VERSION = "3.19" -KBRANCH ?= "master" -SRCREV ?= "bfa76d49576599a4b9f9b7a71f23d73d6dcff735" - -include linux-xlnx.inc - -FILESEXTRAPATHS_prepend := "${THISDIR}/linux-zynqmp-mainline:" -SRC_URI = " \ - git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git;protocol=https;branch=${KBRANCH} \ - file://xilinx-base;type=kmeta;destsuffix=xilinx-base \ - file://0001-ARM64-Add-new-Xilinx-ZynqMP-SoC.patch \ - file://0002-net-cadence-Enable-MACB-driver-for-ARM64.patch \ - file://0003-spi-Enable-Cadence-SPI-driver-for-ARM64.patch \ - file://0004-arm64-mm-Correct-check-for-EXEC-faults.patch \ - file://0005-arm64-Implement-cpu_relax-as-yield.patch \ - file://0006-arm64-spinlock-sev-when-unlocking-locks.patch \ - file://0007-kbuild-Create-directory-for-target-DTB.patch \ - " - -COMPATIBLE_MACHINE_zynqmp = "zynqmp" -KERNEL_DEVICETREE_ep108-zynqmp = "xilinx/zynqmp-ep108.dtb" -KERNEL_DEVICETREE_qemuzynqmp = "xilinx/zynqmp-ep108.dtb" |