mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-28 20:02:17 +00:00
RISC-V updates for v5.4-rc5
Several minor fixes and cleanups for v5.4-rc5: - Three build fixes for various SPARSEMEM-related kernel configurations - Two cleanup patches for the kernel bug and breakpoint trap handler code -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEElRDoIDdEz9/svf2Kx4+xDQu9KksFAl203dwACgkQx4+xDQu9 Kks4cxAAsun5+QPqwbexWMZXSPbGkfxFAzs9Ma0dSsAH46+g1cb+kkBpeJwX0oPS NO/oz0bxKDqCRRCEUM5UBg+JsBCUBucPHoxMfNnJKjtjIMkIjadR+6N6Zz8gyXqD qK3NLzUpadfuiphxXo+frHTlPpRZdo7MIT2FLa6dSq4uutqJZ7CmAhvAWkYQQDfS vAlxBU4lqsk4PW2IuX0Q5n90Jptyon4EJo3Cnu5IgEEH9MSGb4JsWZFBOAsFFmEH 1Q6Q2a4xiuRs0L14bZ44kem7Fg3ietN/oWMiGf58ZIc+h18S3gh0cHO64X3rZFRF 9ad5jFCqMvibApxJqsf6/wI4/LODRUPJPcj+veliH40lkIm3sNnqNdVhESaPICg6 5j0hmUMPYazj2NnADhFi1B9gEuChl9nsUxEbMxClhZxdC6+4AHeqC1KmLsQS7vyY Zs8vxU4eONsKbTP4qC1aGeUjlu7yBe35E9GUUZ6llm6uRuRAmXGG1IRdUIgrSnQt vrePKyWjRekW+F5nZeEvUhhQUWwCsanaa6pKK0ybXHkULg5v8Sf50DlIognxehTt IvtjLsD8gQKnGNY1crqYuFy95kZ0UOgtDCJW13cy3EwVIUWRdPcTZkpWQMFFILL5 EaTLERIK0DUbiKwpAlfmO2WL7tOJh+wxfZCnzXrdZMhFbmfJ5Vw= =l7GM -----END PGP SIGNATURE----- Merge tag 'riscv/for-v5.4-rc5-b' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux Pull RISC-V fixes from Paul Walmsley: "Several minor fixes and cleanups for v5.4-rc5: - Three build fixes for various SPARSEMEM-related kernel configurations - Two cleanup patches for the kernel bug and breakpoint trap handler code" * tag 'riscv/for-v5.4-rc5-b' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: riscv: cleanup do_trap_break riscv: cleanup <asm/bug.h> riscv: Fix undefined reference to vmemmap_populate_basepages riscv: Fix implicit declaration of 'page_to_section' riscv: fix fs/proc/kcore.c compilation with sparsemem enabled
This commit is contained in:
commit
6995a6a5a5
4 changed files with 11 additions and 40 deletions
|
@ -12,7 +12,6 @@
|
||||||
|
|
||||||
#include <asm/asm.h>
|
#include <asm/asm.h>
|
||||||
|
|
||||||
#ifdef CONFIG_GENERIC_BUG
|
|
||||||
#define __INSN_LENGTH_MASK _UL(0x3)
|
#define __INSN_LENGTH_MASK _UL(0x3)
|
||||||
#define __INSN_LENGTH_32 _UL(0x3)
|
#define __INSN_LENGTH_32 _UL(0x3)
|
||||||
#define __COMPRESSED_INSN_MASK _UL(0xffff)
|
#define __COMPRESSED_INSN_MASK _UL(0xffff)
|
||||||
|
@ -20,7 +19,6 @@
|
||||||
#define __BUG_INSN_32 _UL(0x00100073) /* ebreak */
|
#define __BUG_INSN_32 _UL(0x00100073) /* ebreak */
|
||||||
#define __BUG_INSN_16 _UL(0x9002) /* c.ebreak */
|
#define __BUG_INSN_16 _UL(0x9002) /* c.ebreak */
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
|
||||||
typedef u32 bug_insn_t;
|
typedef u32 bug_insn_t;
|
||||||
|
|
||||||
#ifdef CONFIG_GENERIC_BUG_RELATIVE_POINTERS
|
#ifdef CONFIG_GENERIC_BUG_RELATIVE_POINTERS
|
||||||
|
@ -43,6 +41,7 @@ typedef u32 bug_insn_t;
|
||||||
RISCV_SHORT " %2"
|
RISCV_SHORT " %2"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_GENERIC_BUG
|
||||||
#define __BUG_FLAGS(flags) \
|
#define __BUG_FLAGS(flags) \
|
||||||
do { \
|
do { \
|
||||||
__asm__ __volatile__ ( \
|
__asm__ __volatile__ ( \
|
||||||
|
@ -58,14 +57,10 @@ do { \
|
||||||
"i" (flags), \
|
"i" (flags), \
|
||||||
"i" (sizeof(struct bug_entry))); \
|
"i" (sizeof(struct bug_entry))); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#endif /* !__ASSEMBLY__ */
|
|
||||||
#else /* CONFIG_GENERIC_BUG */
|
#else /* CONFIG_GENERIC_BUG */
|
||||||
#ifndef __ASSEMBLY__
|
|
||||||
#define __BUG_FLAGS(flags) do { \
|
#define __BUG_FLAGS(flags) do { \
|
||||||
__asm__ __volatile__ ("ebreak\n"); \
|
__asm__ __volatile__ ("ebreak\n"); \
|
||||||
} while (0)
|
} while (0)
|
||||||
#endif /* !__ASSEMBLY__ */
|
|
||||||
#endif /* CONFIG_GENERIC_BUG */
|
#endif /* CONFIG_GENERIC_BUG */
|
||||||
|
|
||||||
#define BUG() do { \
|
#define BUG() do { \
|
||||||
|
@ -79,15 +74,10 @@ do { \
|
||||||
|
|
||||||
#include <asm-generic/bug.h>
|
#include <asm-generic/bug.h>
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
|
||||||
|
|
||||||
struct pt_regs;
|
struct pt_regs;
|
||||||
struct task_struct;
|
struct task_struct;
|
||||||
|
|
||||||
extern void die(struct pt_regs *regs, const char *str);
|
void die(struct pt_regs *regs, const char *str);
|
||||||
extern void do_trap(struct pt_regs *regs, int signo, int code,
|
void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr);
|
||||||
unsigned long addr);
|
|
||||||
|
|
||||||
#endif /* !__ASSEMBLY__ */
|
|
||||||
|
|
||||||
#endif /* _ASM_RISCV_BUG_H */
|
#endif /* _ASM_RISCV_BUG_H */
|
||||||
|
|
|
@ -184,10 +184,7 @@ static inline pte_t pfn_pte(unsigned long pfn, pgprot_t prot)
|
||||||
return __pte((pfn << _PAGE_PFN_SHIFT) | pgprot_val(prot));
|
return __pte((pfn << _PAGE_PFN_SHIFT) | pgprot_val(prot));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline pte_t mk_pte(struct page *page, pgprot_t prot)
|
#define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot)
|
||||||
{
|
|
||||||
return pfn_pte(page_to_pfn(page), prot);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
|
#define pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
|
||||||
|
|
||||||
|
@ -428,9 +425,7 @@ static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
|
||||||
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
|
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
|
||||||
#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
|
#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
|
||||||
|
|
||||||
#ifdef CONFIG_FLATMEM
|
|
||||||
#define kern_addr_valid(addr) (1) /* FIXME */
|
#define kern_addr_valid(addr) (1) /* FIXME */
|
||||||
#endif
|
|
||||||
|
|
||||||
extern void *dtb_early_va;
|
extern void *dtb_early_va;
|
||||||
extern void setup_bootmem(void);
|
extern void setup_bootmem(void);
|
||||||
|
|
|
@ -111,7 +111,6 @@ DO_ERROR_INFO(do_trap_ecall_s,
|
||||||
DO_ERROR_INFO(do_trap_ecall_m,
|
DO_ERROR_INFO(do_trap_ecall_m,
|
||||||
SIGILL, ILL_ILLTRP, "environment call from M-mode");
|
SIGILL, ILL_ILLTRP, "environment call from M-mode");
|
||||||
|
|
||||||
#ifdef CONFIG_GENERIC_BUG
|
|
||||||
static inline unsigned long get_break_insn_length(unsigned long pc)
|
static inline unsigned long get_break_insn_length(unsigned long pc)
|
||||||
{
|
{
|
||||||
bug_insn_t insn;
|
bug_insn_t insn;
|
||||||
|
@ -120,28 +119,15 @@ static inline unsigned long get_break_insn_length(unsigned long pc)
|
||||||
return 0;
|
return 0;
|
||||||
return (((insn & __INSN_LENGTH_MASK) == __INSN_LENGTH_32) ? 4UL : 2UL);
|
return (((insn & __INSN_LENGTH_MASK) == __INSN_LENGTH_32) ? 4UL : 2UL);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_GENERIC_BUG */
|
|
||||||
|
|
||||||
asmlinkage void do_trap_break(struct pt_regs *regs)
|
asmlinkage void do_trap_break(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
if (user_mode(regs)) {
|
if (user_mode(regs))
|
||||||
force_sig_fault(SIGTRAP, TRAP_BRKPT,
|
force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->sepc);
|
||||||
(void __user *)(regs->sepc));
|
else if (report_bug(regs->sepc, regs) == BUG_TRAP_TYPE_WARN)
|
||||||
return;
|
regs->sepc += get_break_insn_length(regs->sepc);
|
||||||
}
|
else
|
||||||
#ifdef CONFIG_GENERIC_BUG
|
die(regs, "Kernel BUG");
|
||||||
{
|
|
||||||
enum bug_trap_type type;
|
|
||||||
|
|
||||||
type = report_bug(regs->sepc, regs);
|
|
||||||
if (type == BUG_TRAP_TYPE_WARN) {
|
|
||||||
regs->sepc += get_break_insn_length(regs->sepc);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_GENERIC_BUG */
|
|
||||||
|
|
||||||
die(regs, "Kernel BUG");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_GENERIC_BUG
|
#ifdef CONFIG_GENERIC_BUG
|
||||||
|
|
|
@ -458,7 +458,7 @@ void __init paging_init(void)
|
||||||
zone_sizes_init();
|
zone_sizes_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SPARSEMEM
|
#ifdef CONFIG_SPARSEMEM_VMEMMAP
|
||||||
int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,
|
int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,
|
||||||
struct vmem_altmap *altmap)
|
struct vmem_altmap *altmap)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue