Skip to content
  • Vaibhav Jain's avatar
    cxl: Disable prefault_mode in Radix mode · c9debbd1
    Vaibhav Jain authored
    commit b6c84ba2 upstream.
    
    Currently we see a kernel-oops reported on Power-9 while attaching a
    context to an AFU, with radix-mode and sysfs attr 'prefault_mode' set
    to anything other than 'none'. The backtrace of the oops is of this
    form:
    
      Unable to handle kernel paging request for data at address 0x00000080
      Faulting instruction address: 0xc00800000bcf3b20
      cpu 0x1: Vector: 300 (Data Access) at [c00000037f003800]
          pc: c00800000bcf3b20: cxl_load_segment+0x178/0x290 [cxl]
          lr: c00800000bcf39f0: cxl_load_segment+0x48/0x290 [cxl]
          sp: c00000037f003a80
         msr: 9000000000009033
         dar: 80
       dsisr: 40000000
        current = 0xc00000037f280000
        paca    = 0xc0000003ffffe600   softe: 3        irq_happened: 0x01
          pid   = 3529, comm = afp_no_int
      <snip>
      cxl_prefault+0xfc/0x248 [cxl]
      process_element_entry_psl9+0xd8/0x1a0 [cxl]
      cxl_attach_dedicated_process_psl9+0x44/0x130 [cxl]
      native_attach_process+0xc0/0x130 [cxl]
      afu_ioctl+0x3f4/0x5e0 [cxl]
      do_vfs_ioctl+0xdc/0x890
      ksys_ioctl+0x68/0xf0
      sys_ioctl+0x40/0xa0
      system_call+0x58/0x6c
    
    The issue is caused as on Power-8 the AFU attr 'prefault_mode' was
    used to improve initial storage fault performance by prefaulting
    process segments. However on Power-9 with radix mode we don't have
    Storage-Segments that we can prefault. Also prefaulting process Pages
    will be too costly and fine-grained.
    
    Hence, since the prefaulting mechanism doesn't makes sense of
    radix-mode, this patch updates prefault_mode_store() to not allow any
    other value apart from CXL_PREFAULT_NONE when radix mode is enabled.
    
    Fixes: f24be42a
    
     ("cxl: Add psl9 specific code")
    Cc: stable@vger.kernel.org # v4.12+
    Signed-off-by: default avatarVaibhav Jain <vaibhav@linux.ibm.com>
    Acked-by: default avatarFrederic Barrat <fbarrat@linux.vnet.ibm.com>
    Acked-by: default avatarAndrew Donnellan <andrew.donnellan@au1.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c9debbd1