RISC-V: fixups to work with crash tool
authorPalmer Dabbelt <palmer@rivosinc.com>
Thu, 11 Aug 2022 16:04:01 +0000 (09:04 -0700)
committerPalmer Dabbelt <palmer@rivosinc.com>
Thu, 11 Aug 2022 16:04:01 +0000 (09:04 -0700)
A handful of fixes to our kexec/crash kernel support that allow crash
tool to function.

Link: https://lore.kernel.org/r/mhng-f5fdaa37-e99a-4214-a297-ec81f0fed0c1@palmer-mbp2014
* commit 'f9293ad46d8ba9909187a37b7215324420ad4596':
  RISC-V: Add modules to virtual kernel memory layout dump
  RISC-V: Fixup schedule out issue in machine_crash_shutdown()
  RISC-V: Fixup get incorrect user mode PC for kernel mode regs
  RISC-V: kexec: Fixup use of smp_processor_id() in preemptible context

1  2 
arch/riscv/mm/init.c

diff --combined arch/riscv/mm/init.c
@@@ -135,6 -135,10 +135,10 @@@ static void __init print_vm_layout(void
                (unsigned long)VMEMMAP_END);
        print_ml("vmalloc", (unsigned long)VMALLOC_START,
                (unsigned long)VMALLOC_END);
+ #ifdef CONFIG_64BIT
+       print_ml("modules", (unsigned long)MODULES_VADDR,
+               (unsigned long)MODULES_END);
+ #endif
        print_ml("lowmem", (unsigned long)PAGE_OFFSET,
                (unsigned long)high_memory);
        if (IS_ENABLED(CONFIG_64BIT)) {
@@@ -288,26 -292,6 +292,26 @@@ static pmd_t __maybe_unused early_dtb_p
  #define early_pg_dir           ((pgd_t *)XIP_FIXUP(early_pg_dir))
  #endif /* CONFIG_XIP_KERNEL */
  
 +static const pgprot_t protection_map[16] = {
 +      [VM_NONE]                                       = PAGE_NONE,
 +      [VM_READ]                                       = PAGE_READ,
 +      [VM_WRITE]                                      = PAGE_COPY,
 +      [VM_WRITE | VM_READ]                            = PAGE_COPY,
 +      [VM_EXEC]                                       = PAGE_EXEC,
 +      [VM_EXEC | VM_READ]                             = PAGE_READ_EXEC,
 +      [VM_EXEC | VM_WRITE]                            = PAGE_COPY_EXEC,
 +      [VM_EXEC | VM_WRITE | VM_READ]                  = PAGE_COPY_READ_EXEC,
 +      [VM_SHARED]                                     = PAGE_NONE,
 +      [VM_SHARED | VM_READ]                           = PAGE_READ,
 +      [VM_SHARED | VM_WRITE]                          = PAGE_SHARED,
 +      [VM_SHARED | VM_WRITE | VM_READ]                = PAGE_SHARED,
 +      [VM_SHARED | VM_EXEC]                           = PAGE_EXEC,
 +      [VM_SHARED | VM_EXEC | VM_READ]                 = PAGE_READ_EXEC,
 +      [VM_SHARED | VM_EXEC | VM_WRITE]                = PAGE_SHARED_EXEC,
 +      [VM_SHARED | VM_EXEC | VM_WRITE | VM_READ]      = PAGE_SHARED_EXEC
 +};
 +DECLARE_VM_GET_PAGE_PROT
 +
  void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t prot)
  {
        unsigned long addr = __fix_to_virt(idx);