Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'riscv-for-linus-5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux

Pull RISC-V fixes from Palmer Dabbelt:
"Sorry for the last minute patches, but a few things fell through the
cracks recently. I was on the fence about sending a late pull request
just for the M-mode fixes, as we don't really have any users, but the
last patch fixes the build for Fedora which I consider pretty
important.

Given that the M-mode fixes should be very low risk, I figured it's
worth sending them along as well.

Thhis passes my standard 'boot in QEMU' test"

* tag 'riscv-for-linus-5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
RISC-V: Move all address space definition macros to one place
RISC-V: Only select essential drivers for SOC_VIRT config
riscv: fix the IPI missing issue in nommu mode
riscv: uaccess should be used in nommu mode

+95 -78
-1
arch/riscv/Kconfig
··· 50 50 select PCI_DOMAINS_GENERIC if PCI 51 51 select PCI_MSI if PCI 52 52 select RISCV_TIMER 53 - select UACCESS_MEMCPY if !MMU 54 53 select GENERIC_IRQ_MULTI_HANDLER 55 54 select GENERIC_ARCH_TOPOLOGY if SMP 56 55 select ARCH_HAS_PTE_SPECIAL
-14
arch/riscv/Kconfig.socs
··· 12 12 13 13 config SOC_VIRT 14 14 bool "QEMU Virt Machine" 15 - select VIRTIO_PCI 16 - select VIRTIO_BALLOON 17 - select VIRTIO_MMIO 18 - select VIRTIO_CONSOLE 19 - select VIRTIO_NET 20 - select NET_9P_VIRTIO 21 - select VIRTIO_BLK 22 - select SCSI_VIRTIO 23 - select DRM_VIRTIO_GPU 24 - select HW_RANDOM_VIRTIO 25 - select RPMSG_CHAR 26 - select RPMSG_VIRTIO 27 - select CRYPTO_DEV_VIRTIO 28 - select VIRTIO_INPUT 29 15 select POWER_RESET_SYSCON 30 16 select POWER_RESET_SYSCON_POWEROFF 31 17 select GOLDFISH
+15 -1
arch/riscv/configs/defconfig
··· 31 31 CONFIG_IP_PNP_RARP=y 32 32 CONFIG_NETLINK_DIAG=y 33 33 CONFIG_NET_9P=y 34 + CONFIG_NET_9P_VIRTIO=y 34 35 CONFIG_PCI=y 35 36 CONFIG_PCIEPORTBUS=y 36 37 CONFIG_PCI_HOST_GENERIC=y ··· 39 38 CONFIG_DEVTMPFS=y 40 39 CONFIG_DEVTMPFS_MOUNT=y 41 40 CONFIG_BLK_DEV_LOOP=y 41 + CONFIG_VIRTIO_BLK=y 42 42 CONFIG_BLK_DEV_SD=y 43 43 CONFIG_BLK_DEV_SR=y 44 + CONFIG_SCSI_VIRTIO=y 44 45 CONFIG_ATA=y 45 46 CONFIG_SATA_AHCI=y 46 47 CONFIG_SATA_AHCI_PLATFORM=y 47 48 CONFIG_NETDEVICES=y 49 + CONFIG_VIRTIO_NET=y 48 50 CONFIG_MACB=y 49 51 CONFIG_E1000E=y 50 52 CONFIG_R8169=y ··· 58 54 CONFIG_SERIAL_OF_PLATFORM=y 59 55 CONFIG_SERIAL_EARLYCON_RISCV_SBI=y 60 56 CONFIG_HVC_RISCV_SBI=y 57 + CONFIG_VIRTIO_CONSOLE=y 61 58 CONFIG_HW_RANDOM=y 59 + CONFIG_HW_RANDOM_VIRTIO=y 62 60 CONFIG_SPI=y 63 61 CONFIG_SPI_SIFIVE=y 64 62 # CONFIG_PTP_1588_CLOCK is not set 65 63 CONFIG_POWER_RESET=y 66 64 CONFIG_DRM=y 67 65 CONFIG_DRM_RADEON=y 66 + CONFIG_DRM_VIRTIO_GPU=y 68 67 CONFIG_FRAMEBUFFER_CONSOLE=y 69 68 CONFIG_USB=y 70 69 CONFIG_USB_XHCI_HCD=y ··· 81 74 CONFIG_MMC=y 82 75 CONFIG_MMC_SPI=y 83 76 CONFIG_RTC_CLASS=y 77 + CONFIG_VIRTIO_PCI=y 78 + CONFIG_VIRTIO_BALLOON=y 79 + CONFIG_VIRTIO_INPUT=y 80 + CONFIG_VIRTIO_MMIO=y 81 + CONFIG_RPMSG_CHAR=y 82 + CONFIG_RPMSG_VIRTIO=y 84 83 CONFIG_EXT4_FS=y 85 84 CONFIG_EXT4_FS_POSIX_ACL=y 86 85 CONFIG_AUTOFS4_FS=y ··· 101 88 CONFIG_ROOT_NFS=y 102 89 CONFIG_9P_FS=y 103 90 CONFIG_CRYPTO_USER_API_HASH=y 91 + CONFIG_CRYPTO_DEV_VIRTIO=y 104 92 CONFIG_PRINTK_TIME=y 105 93 CONFIG_DEBUG_FS=y 106 94 CONFIG_DEBUG_PAGEALLOC=y 95 + CONFIG_SCHED_STACK_END_CHECK=y 107 96 CONFIG_DEBUG_VM=y 108 97 CONFIG_DEBUG_VM_PGFLAGS=y 109 98 CONFIG_DEBUG_MEMORY_INIT=y 110 99 CONFIG_DEBUG_PER_CPU_MAPS=y 111 100 CONFIG_SOFTLOCKUP_DETECTOR=y 112 101 CONFIG_WQ_WATCHDOG=y 113 - CONFIG_SCHED_STACK_END_CHECK=y 114 102 CONFIG_DEBUG_TIMEKEEPING=y 115 103 CONFIG_DEBUG_RT_MUTEXES=y 116 104 CONFIG_DEBUG_SPINLOCK=y
+15 -1
arch/riscv/configs/rv32_defconfig
··· 31 31 CONFIG_IP_PNP_RARP=y 32 32 CONFIG_NETLINK_DIAG=y 33 33 CONFIG_NET_9P=y 34 + CONFIG_NET_9P_VIRTIO=y 34 35 CONFIG_PCI=y 35 36 CONFIG_PCIEPORTBUS=y 36 37 CONFIG_PCI_HOST_GENERIC=y ··· 39 38 CONFIG_DEVTMPFS=y 40 39 CONFIG_DEVTMPFS_MOUNT=y 41 40 CONFIG_BLK_DEV_LOOP=y 41 + CONFIG_VIRTIO_BLK=y 42 42 CONFIG_BLK_DEV_SD=y 43 43 CONFIG_BLK_DEV_SR=y 44 + CONFIG_SCSI_VIRTIO=y 44 45 CONFIG_ATA=y 45 46 CONFIG_SATA_AHCI=y 46 47 CONFIG_SATA_AHCI_PLATFORM=y 47 48 CONFIG_NETDEVICES=y 49 + CONFIG_VIRTIO_NET=y 48 50 CONFIG_MACB=y 49 51 CONFIG_E1000E=y 50 52 CONFIG_R8169=y ··· 58 54 CONFIG_SERIAL_OF_PLATFORM=y 59 55 CONFIG_SERIAL_EARLYCON_RISCV_SBI=y 60 56 CONFIG_HVC_RISCV_SBI=y 57 + CONFIG_VIRTIO_CONSOLE=y 61 58 CONFIG_HW_RANDOM=y 59 + CONFIG_HW_RANDOM_VIRTIO=y 62 60 # CONFIG_PTP_1588_CLOCK is not set 63 61 CONFIG_POWER_RESET=y 64 62 CONFIG_DRM=y 65 63 CONFIG_DRM_RADEON=y 64 + CONFIG_DRM_VIRTIO_GPU=y 66 65 CONFIG_FRAMEBUFFER_CONSOLE=y 67 66 CONFIG_USB=y 68 67 CONFIG_USB_XHCI_HCD=y ··· 77 70 CONFIG_USB_STORAGE=y 78 71 CONFIG_USB_UAS=y 79 72 CONFIG_RTC_CLASS=y 73 + CONFIG_VIRTIO_PCI=y 74 + CONFIG_VIRTIO_BALLOON=y 75 + CONFIG_VIRTIO_INPUT=y 76 + CONFIG_VIRTIO_MMIO=y 77 + CONFIG_RPMSG_CHAR=y 78 + CONFIG_RPMSG_VIRTIO=y 80 79 CONFIG_EXT4_FS=y 81 80 CONFIG_EXT4_FS_POSIX_ACL=y 82 81 CONFIG_AUTOFS4_FS=y ··· 97 84 CONFIG_ROOT_NFS=y 98 85 CONFIG_9P_FS=y 99 86 CONFIG_CRYPTO_USER_API_HASH=y 87 + CONFIG_CRYPTO_DEV_VIRTIO=y 100 88 CONFIG_PRINTK_TIME=y 101 89 CONFIG_DEBUG_FS=y 102 90 CONFIG_DEBUG_PAGEALLOC=y 91 + CONFIG_SCHED_STACK_END_CHECK=y 103 92 CONFIG_DEBUG_VM=y 104 93 CONFIG_DEBUG_VM_PGFLAGS=y 105 94 CONFIG_DEBUG_MEMORY_INIT=y 106 95 CONFIG_DEBUG_PER_CPU_MAPS=y 107 96 CONFIG_SOFTLOCKUP_DETECTOR=y 108 97 CONFIG_WQ_WATCHDOG=y 109 - CONFIG_SCHED_STACK_END_CHECK=y 110 98 CONFIG_DEBUG_TIMEKEEPING=y 111 99 CONFIG_DEBUG_RT_MUTEXES=y 112 100 CONFIG_DEBUG_SPINLOCK=y
+4 -4
arch/riscv/include/asm/clint.h
··· 15 15 writel(1, clint_ipi_base + hartid); 16 16 } 17 17 18 - static inline void clint_send_ipi_mask(const struct cpumask *hartid_mask) 18 + static inline void clint_send_ipi_mask(const struct cpumask *mask) 19 19 { 20 - int hartid; 20 + int cpu; 21 21 22 - for_each_cpu(hartid, hartid_mask) 23 - clint_send_ipi_single(hartid); 22 + for_each_cpu(cpu, mask) 23 + clint_send_ipi_single(cpuid_to_hartid_map(cpu)); 24 24 } 25 25 26 26 static inline void clint_clear_ipi(unsigned long hartid)
+41 -37
arch/riscv/include/asm/pgtable.h
··· 19 19 #include <asm/tlbflush.h> 20 20 #include <linux/mm_types.h> 21 21 22 + #ifdef CONFIG_MMU 23 + 24 + #define VMALLOC_SIZE (KERN_VIRT_SIZE >> 1) 25 + #define VMALLOC_END (PAGE_OFFSET - 1) 26 + #define VMALLOC_START (PAGE_OFFSET - VMALLOC_SIZE) 27 + 28 + #define BPF_JIT_REGION_SIZE (SZ_128M) 29 + #define BPF_JIT_REGION_START (PAGE_OFFSET - BPF_JIT_REGION_SIZE) 30 + #define BPF_JIT_REGION_END (VMALLOC_END) 31 + 32 + /* 33 + * Roughly size the vmemmap space to be large enough to fit enough 34 + * struct pages to map half the virtual address space. Then 35 + * position vmemmap directly below the VMALLOC region. 36 + */ 37 + #define VMEMMAP_SHIFT \ 38 + (CONFIG_VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT) 39 + #define VMEMMAP_SIZE BIT(VMEMMAP_SHIFT) 40 + #define VMEMMAP_END (VMALLOC_START - 1) 41 + #define VMEMMAP_START (VMALLOC_START - VMEMMAP_SIZE) 42 + 43 + /* 44 + * Define vmemmap for pfn_to_page & page_to_pfn calls. Needed if kernel 45 + * is configured with CONFIG_SPARSEMEM_VMEMMAP enabled. 46 + */ 47 + #define vmemmap ((struct page *)VMEMMAP_START) 48 + 49 + #define PCI_IO_SIZE SZ_16M 50 + #define PCI_IO_END VMEMMAP_START 51 + #define PCI_IO_START (PCI_IO_END - PCI_IO_SIZE) 52 + 53 + #define FIXADDR_TOP PCI_IO_START 54 + #ifdef CONFIG_64BIT 55 + #define FIXADDR_SIZE PMD_SIZE 56 + #else 57 + #define FIXADDR_SIZE PGDIR_SIZE 58 + #endif 59 + #define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) 60 + 61 + #endif 62 + 22 63 #ifdef CONFIG_64BIT 23 64 #include <asm/pgtable-64.h> 24 65 #else ··· 130 89 #define __S101 PAGE_READ_EXEC 131 90 #define __S110 PAGE_SHARED_EXEC 132 91 #define __S111 PAGE_SHARED_EXEC 133 - 134 - #define VMALLOC_SIZE (KERN_VIRT_SIZE >> 1) 135 - #define VMALLOC_END (PAGE_OFFSET - 1) 136 - #define VMALLOC_START (PAGE_OFFSET - VMALLOC_SIZE) 137 - 138 - #define BPF_JIT_REGION_SIZE (SZ_128M) 139 - #define BPF_JIT_REGION_START (PAGE_OFFSET - BPF_JIT_REGION_SIZE) 140 - #define BPF_JIT_REGION_END (VMALLOC_END) 141 - 142 - /* 143 - * Roughly size the vmemmap space to be large enough to fit enough 144 - * struct pages to map half the virtual address space. Then 145 - * position vmemmap directly below the VMALLOC region. 146 - */ 147 - #define VMEMMAP_SHIFT \ 148 - (CONFIG_VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT) 149 - #define VMEMMAP_SIZE BIT(VMEMMAP_SHIFT) 150 - #define VMEMMAP_END (VMALLOC_START - 1) 151 - #define VMEMMAP_START (VMALLOC_START - VMEMMAP_SIZE) 152 - 153 - /* 154 - * Define vmemmap for pfn_to_page & page_to_pfn calls. Needed if kernel 155 - * is configured with CONFIG_SPARSEMEM_VMEMMAP enabled. 156 - */ 157 - #define vmemmap ((struct page *)VMEMMAP_START) 158 92 159 93 static inline int pmd_present(pmd_t pmd) 160 94 { ··· 447 431 448 432 #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) 449 433 #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) 450 - 451 - #define PCI_IO_SIZE SZ_16M 452 - #define PCI_IO_END VMEMMAP_START 453 - #define PCI_IO_START (PCI_IO_END - PCI_IO_SIZE) 454 - 455 - #define FIXADDR_TOP PCI_IO_START 456 - #ifdef CONFIG_64BIT 457 - #define FIXADDR_SIZE PMD_SIZE 458 - #else 459 - #define FIXADDR_SIZE PGDIR_SIZE 460 - #endif 461 - #define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) 462 434 463 435 /* 464 436 * Task size is 0x4000000000 for RV64 or 0x9fc00000 for RV32.
+18 -18
arch/riscv/include/asm/uaccess.h
··· 11 11 /* 12 12 * User space memory access functions 13 13 */ 14 + 15 + extern unsigned long __must_check __asm_copy_to_user(void __user *to, 16 + const void *from, unsigned long n); 17 + extern unsigned long __must_check __asm_copy_from_user(void *to, 18 + const void __user *from, unsigned long n); 19 + 20 + static inline unsigned long 21 + raw_copy_from_user(void *to, const void __user *from, unsigned long n) 22 + { 23 + return __asm_copy_from_user(to, from, n); 24 + } 25 + 26 + static inline unsigned long 27 + raw_copy_to_user(void __user *to, const void *from, unsigned long n) 28 + { 29 + return __asm_copy_to_user(to, from, n); 30 + } 31 + 14 32 #ifdef CONFIG_MMU 15 33 #include <linux/errno.h> 16 34 #include <linux/compiler.h> ··· 384 366 __put_user((x), __p) : \ 385 367 -EFAULT; \ 386 368 }) 387 - 388 - 389 - extern unsigned long __must_check __asm_copy_to_user(void __user *to, 390 - const void *from, unsigned long n); 391 - extern unsigned long __must_check __asm_copy_from_user(void *to, 392 - const void __user *from, unsigned long n); 393 - 394 - static inline unsigned long 395 - raw_copy_from_user(void *to, const void __user *from, unsigned long n) 396 - { 397 - return __asm_copy_from_user(to, from, n); 398 - } 399 - 400 - static inline unsigned long 401 - raw_copy_to_user(void __user *to, const void *from, unsigned long n) 402 - { 403 - return __asm_copy_to_user(to, from, n); 404 - } 405 369 406 370 extern long strncpy_from_user(char *dest, const char __user *src, long count); 407 371
+1 -1
arch/riscv/kernel/smp.c
··· 96 96 if (IS_ENABLED(CONFIG_RISCV_SBI)) 97 97 sbi_send_ipi(cpumask_bits(&hartid_mask)); 98 98 else 99 - clint_send_ipi_mask(&hartid_mask); 99 + clint_send_ipi_mask(mask); 100 100 } 101 101 102 102 static void send_ipi_single(int cpu, enum ipi_message_type op)
+1 -1
arch/riscv/lib/Makefile
··· 2 2 lib-y += delay.o 3 3 lib-y += memcpy.o 4 4 lib-y += memset.o 5 - lib-$(CONFIG_MMU) += uaccess.o 5 + lib-y += uaccess.o 6 6 lib-$(CONFIG_64BIT) += tishift.o