From 51478575942b6105b3d5dedf139f79f68afb765a Mon Sep 17 00:00:00 2001 From: graysky Date: Tue, 27 Aug 2024 15:15:43 -0400 Subject: [PATCH] core/linux-aarch64-rc to 6.11.rc5-2 Apply patch from raspberry kernel to fix PPS signal on aarch64 which closes #2057. Also fix typo in config --- ...tibility-hack-should-be-X86-specific.patch | 53 +++++++++++++++++++ core/linux-aarch64-rc/PKGBUILD | 7 ++- core/linux-aarch64-rc/config | 4 +- 3 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 core/linux-aarch64-rc/0003-pps-Compatibility-hack-should-be-X86-specific.patch diff --git a/core/linux-aarch64-rc/0003-pps-Compatibility-hack-should-be-X86-specific.patch b/core/linux-aarch64-rc/0003-pps-Compatibility-hack-should-be-X86-specific.patch new file mode 100644 index 000000000..1fd7d071e --- /dev/null +++ b/core/linux-aarch64-rc/0003-pps-Compatibility-hack-should-be-X86-specific.patch @@ -0,0 +1,53 @@ +From fa7109e14af17148c6081396e02aa9a05cde91fb Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Mon, 22 May 2023 14:22:55 +0100 +Subject: [PATCH] pps: Compatibility hack should be X86-specific + +As of [1], using PPS_FETCH on a 64-bit ARM kernel with a 32-bit userland +is broken, returning a timeout. This is because the requested 4-byte +alignment for struct pps_ktime_compat (illegal on arm64) results in the +timeout flags field being uninitialised. + +Make the hack specific to X86_64 builds with CONFIG_COMPAT defined. + +[1] commit c2a49fe8eeef ("pps: fix padding issue with PPS_FETCH for + ioctl_compat") + +See: https://github.com/raspberrypi/linux/issues/5430 +Fixes: c2a49fe8eeef ("pps: fix padding issue with PPS_FETCH for ioctl_compat") +Signed-off-by: Phil Elwell +--- + drivers/pps/pps.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/pps/pps.c b/drivers/pps/pps.c +index 5d19baae6a38..0675c8a2e560 100644 +--- a/drivers/pps/pps.c ++++ b/drivers/pps/pps.c +@@ -249,12 +249,13 @@ static long pps_cdev_ioctl(struct file *file, + static long pps_cdev_compat_ioctl(struct file *file, + unsigned int cmd, unsigned long arg) + { +- struct pps_device *pps = file->private_data; +- void __user *uarg = (void __user *) arg; + + cmd = _IOC(_IOC_DIR(cmd), _IOC_TYPE(cmd), _IOC_NR(cmd), sizeof(void *)); + ++#ifdef CONFIG_X86_64 + if (cmd == PPS_FETCH) { ++ struct pps_device *pps = file->private_data; ++ void __user *uarg = (void __user *) arg; + struct pps_fdata_compat compat; + struct pps_fdata fdata; + int err; +@@ -289,6 +290,7 @@ static long pps_cdev_compat_ioctl(struct file *file, + return copy_to_user(uarg, &compat, + sizeof(struct pps_fdata_compat)) ? -EFAULT : 0; + } ++#endif + + return pps_cdev_ioctl(file, cmd, arg); + } +-- +2.46.0 + diff --git a/core/linux-aarch64-rc/PKGBUILD b/core/linux-aarch64-rc/PKGBUILD index 4210a5a55..477aca354 100644 --- a/core/linux-aarch64-rc/PKGBUILD +++ b/core/linux-aarch64-rc/PKGBUILD @@ -11,7 +11,7 @@ _srcname=linux-${_rcver}-rc${_rcrel} _kernelname=${pkgbase#linux} _desc="AArch64 multi-platform (release candidate)" pkgver=${_rcver}.rc${_rcrel} -pkgrel=1 +pkgrel=2 arch=('aarch64') url="http://www.kernel.org/" license=('GPL2') @@ -20,6 +20,7 @@ options=('!strip') source=("https://git.kernel.org/torvalds/t/${_srcname}.tar.gz" '0001-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch' '0002-arm64-dts-rockchip-disable-pwm0-on-rk3399-firefly.patch' + '0003-pps-Compatibility-hack-should-be-X86-specific.patch' 'pinctrl-rockchip-correct-RK3328-iomux-width-flag-for-GPIO2-B-pins.patch' 'config' 'generate_chromebook_its.sh' @@ -29,8 +30,9 @@ source=("https://git.kernel.org/torvalds/t/${_srcname}.tar.gz" md5sums=('de6eafed84cbe0b046c5da35fccf7278' '7b08a199a97e3e2288e5c03d8e8ded2d' 'c9d4e392555b77034e24e9f87c5ff0b3' + 'a6abfb191ecb3d7d5f6ccdaca335a11d' 'd4add3377b26d8b6f0818f7dddfb8cda' - '6f408ceb5e0229083a763a54975b796a' + '446e57145238096debfddbde33294270' '7c97cf141750ad810235b1ad06eb9f75' '61c5ff73c136ed07a7aadbf58db3d96a' '584777ae88bce2c5659960151b64c7d8' @@ -46,6 +48,7 @@ prepare() { # ALARM patches git apply ../0001-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch git apply ../0002-arm64-dts-rockchip-disable-pwm0-on-rk3399-firefly.patch + git apply ../0003-pps-Compatibility-hack-should-be-X86-specific.patch # https://archlinuxarm.org/forum/viewtopic.php?f=65&t=16981 patch -p1 -i ../pinctrl-rockchip-correct-RK3328-iomux-width-flag-for-GPIO2-B-pins.patch diff --git a/core/linux-aarch64-rc/config b/core/linux-aarch64-rc/config index bef91beaa..1093f7b4a 100644 --- a/core/linux-aarch64-rc/config +++ b/core/linux-aarch64-rc/config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 6.11.0-rc4 Kernel Configuration +# Linux/arm64 6.11.0-rc5 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (GCC) 14.1.1 20240507" CONFIG_CC_IS_GCC=y @@ -5463,7 +5463,7 @@ CONFIG_MFD_SPMI_PMIC=y # CONFIG_MFD_RC5T583 is not set CONFIG_MFD_RK8XX=y CONFIG_MFD_RK8XX_I2C=y -ONFIG_MFD_RK8XX_SPI=y +CONFIG_MFD_RK8XX_SPI=y # CONFIG_MFD_RN5T618 is not set CONFIG_MFD_SEC_CORE=y # CONFIG_MFD_SI476X_CORE is not set