From dadb40ffe2dfe025e170e603be260cc9bda8ac1c Mon Sep 17 00:00:00 2001 From: Jonathan Richard Robert Kimmitt Date: Fri, 3 May 2019 17:22:09 +0100 Subject: [PATCH] Hack around buggy support for SR_FS and/or SR_SD --- arch/riscv/configs/defconfig | 35 +++++++++++++++++++++++------- arch/riscv/include/asm/switch_to.h | 8 +++++++ 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig index bfca919a60e907..f526dc8c6308d2 100644 --- a/arch/riscv/configs/defconfig +++ b/arch/riscv/configs/defconfig @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/riscv 5.0.9 Kernel Configuration +# Linux/riscv 5.1.0-rc7 Kernel Configuration # # @@ -10,6 +10,7 @@ CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=80200 CONFIG_CLANG_VERSION=0 CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y CONFIG_IRQ_WORK=y CONFIG_THREAD_INFO_IN_TASK=y @@ -141,6 +142,7 @@ CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_AIO=y +CONFIG_IO_URING=y CONFIG_ADVISE_SYSCALLS=y CONFIG_MEMBARRIER=y CONFIG_KALLSYMS=y @@ -180,6 +182,7 @@ CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CSUM=y CONFIG_GENERIC_HWEIGHT=y +CONFIG_FIX_EARLYCON_MEM=y CONFIG_PGTABLE_LEVELS=3 # @@ -334,6 +337,7 @@ CONFIG_SKB_EXTENSIONS=y CONFIG_PACKET=y # CONFIG_PACKET_DIAG is not set CONFIG_UNIX=y +CONFIG_UNIX_SCM=y # CONFIG_UNIX_DIAG is not set # CONFIG_TLS is not set CONFIG_XFRM=y @@ -456,8 +460,8 @@ CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 CONFIG_DST_CACHE=y CONFIG_GRO_CELLS=y # CONFIG_NET_DEVLINK is not set -CONFIG_MAY_USE_DEVLINK=y # CONFIG_FAILOVER is not set +CONFIG_HAVE_EBPF_JIT=y # # Device Drivers @@ -504,6 +508,7 @@ CONFIG_OF_ADDRESS=y CONFIG_OF_IRQ=y CONFIG_OF_NET=y CONFIG_OF_MDIO=y +CONFIG_OF_RESERVED_MEM=y # CONFIG_OF_OVERLAY is not set # CONFIG_PARPORT is not set CONFIG_BLK_DEV=y @@ -560,6 +565,7 @@ CONFIG_BLK_DEV_NBD=y # # VOP Bus Driver # +# CONFIG_VOP_BUS is not set # # Intel MIC Host Driver @@ -598,6 +604,7 @@ CONFIG_NET_CORE=y # CONFIG_EQUALIZER is not set # CONFIG_NET_TEAM is not set # CONFIG_MACVLAN is not set +# CONFIG_IPVLAN is not set # CONFIG_VXLAN is not set # CONFIG_GENEVE is not set # CONFIG_GTP is not set @@ -657,6 +664,7 @@ CONFIG_MDIO_BUS=y # CONFIG_MDIO_BCM_UNIMAC is not set CONFIG_MDIO_BITBANG=y # CONFIG_MDIO_BUS_MUX_MMIOREG is not set +# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set # CONFIG_MDIO_HISI_FEMAC is not set # CONFIG_MDIO_MSCC_MIIM is not set # CONFIG_MDIO_OCTEON is not set @@ -874,6 +882,7 @@ CONFIG_BCMA_POSSIBLE=y # CONFIG_ABX500_CORE is not set # CONFIG_MFD_SYSCON is not set # CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_TQMX86 is not set # CONFIG_REGULATOR is not set # CONFIG_RC_CORE is not set # CONFIG_MEDIA_SUPPORT is not set @@ -884,6 +893,10 @@ CONFIG_BCMA_POSSIBLE=y # CONFIG_DRM is not set # CONFIG_DRM_DP_CEC is not set +# +# ARM devices +# + # # ACP (Audio CoProcessor) Configuration # @@ -952,6 +965,7 @@ CONFIG_COMMON_CLK=y # Common Clock Framework # # CONFIG_CLK_HSDK is not set +# CONFIG_COMMON_CLK_FIXED_MMIO is not set # CONFIG_HWSPINLOCK is not set # @@ -1031,6 +1045,7 @@ CONFIG_SIFIVE_PLIC=y # CONFIG_GENERIC_PHY is not set # CONFIG_BCM_KONA_USB2_PHY is not set # CONFIG_PHY_CADENCE_DP is not set +# CONFIG_PHY_CADENCE_DPHY is not set # CONFIG_PHY_FSL_IMX8MQ_USB is not set # CONFIG_PHY_PXA_28NM_HSIC is not set # CONFIG_PHY_PXA_28NM_USB2 is not set @@ -1055,10 +1070,12 @@ CONFIG_RAS=y # CONFIG_FSI is not set # CONFIG_SIOX is not set # CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set # # File systems # +CONFIG_VALIDATE_FS_PARSER=y CONFIG_FS_IOMAP=y CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XATTR is not set @@ -1068,7 +1085,6 @@ CONFIG_EXT3_FS=y CONFIG_EXT4_FS=y # CONFIG_EXT4_FS_POSIX_ACL is not set # CONFIG_EXT4_FS_SECURITY is not set -# CONFIG_EXT4_ENCRYPTION is not set # CONFIG_EXT4_DEBUG is not set CONFIG_JBD2=y # CONFIG_JBD2_DEBUG is not set @@ -1239,7 +1255,7 @@ CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y # CONFIG_HARDENED_USERCOPY is not set # CONFIG_STATIC_USERMODEHELPER is not set CONFIG_DEFAULT_SECURITY_DAC=y -CONFIG_DEFAULT_SECURITY="" +CONFIG_LSM="yama,loadpin,safesetid,integrity" CONFIG_CRYPTO=y # @@ -1439,8 +1455,9 @@ CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_DMA=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_DMA_DECLARE_COHERENT=y CONFIG_SWIOTLB=y +# CONFIG_DMA_API_DEBUG is not set CONFIG_SGL_ALLOC=y CONFIG_DQL=y CONFIG_NLATTR=y @@ -1462,6 +1479,7 @@ CONFIG_SBITMAP=y # printk and dmesg options # CONFIG_PRINTK_TIME=y +# CONFIG_PRINTK_CALLER is not set CONFIG_CONSOLE_LOGLEVEL_DEFAULT=15 CONFIG_CONSOLE_LOGLEVEL_QUIET=4 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 @@ -1473,7 +1491,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 # CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO_REDUCED=y -CONFIG_DEBUG_INFO_SPLIT=y +# CONFIG_DEBUG_INFO_SPLIT is not set # CONFIG_DEBUG_INFO_DWARF4 is not set # CONFIG_GDB_SCRIPTS is not set # CONFIG_ENABLE_MUST_CHECK is not set @@ -1481,7 +1499,6 @@ CONFIG_FRAME_WARN=2048 # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_READABLE_ASM is not set # CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_PAGE_OWNER is not set CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_SECTION_MISMATCH is not set @@ -1497,6 +1514,7 @@ CONFIG_DEBUG_KERNEL=y # # CONFIG_PAGE_EXTENSION is not set # CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_OWNER is not set # CONFIG_PAGE_POISONING is not set # CONFIG_DEBUG_OBJECTS is not set # CONFIG_SLUB_DEBUG_ON is not set @@ -1577,7 +1595,6 @@ CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_STACK_TRACER is not set # CONFIG_BLK_DEV_IO_TRACE is not set # CONFIG_TRACEPOINT_BENCHMARK is not set -# CONFIG_DMA_API_DEBUG is not set CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_LKDTM is not set # CONFIG_TEST_LIST_SORT is not set @@ -1603,7 +1620,9 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_TEST_SYSCTL is not set CONFIG_TEST_UDELAY=y # CONFIG_TEST_MEMCAT_P is not set +# CONFIG_TEST_STACKINIT is not set # CONFIG_MEMTEST is not set # CONFIG_BUG_ON_DATA_CORRUPTION is not set # CONFIG_SAMPLES is not set # CONFIG_UBSAN is not set +CONFIG_UBSAN_ALIGNMENT=y diff --git a/arch/riscv/include/asm/switch_to.h b/arch/riscv/include/asm/switch_to.h index 733559083f24bf..5d440df6a908b2 100644 --- a/arch/riscv/include/asm/switch_to.h +++ b/arch/riscv/include/asm/switch_to.h @@ -30,7 +30,12 @@ static inline void __fstate_clean(struct pt_regs *regs) static inline void fstate_save(struct task_struct *task, struct pt_regs *regs) { + // JRRK: Hack around buggy support for SR_FS and/or SR_SD +#if 0 if ((regs->sstatus & SR_FS) == SR_FS_DIRTY) { +#else + if ((regs->sstatus & SR_FS) != SR_FS_OFF) { +#endif __fstate_save(task); __fstate_clean(regs); } @@ -51,7 +56,10 @@ static inline void __switch_to_aux(struct task_struct *prev, struct pt_regs *regs; regs = task_pt_regs(prev); + // JRRK: Hack around buggy support for SR_FS and/or SR_SD +#if 0 if (unlikely(regs->sstatus & SR_SD)) +#endif fstate_save(prev, regs); fstate_restore(next, task_pt_regs(next)); }