• Aneesh Kumar K.V's avatar
    powerpc/nvdimm: use H_SCM_QUERY hcall on H_OVERLAP error · faa6d211
    Aneesh Kumar K.V authored
    Right now we force an unbind of SCM memory at drcindex on H_OVERLAP error.
    This really slows down operations like kexec where we get the H_OVERLAP
    error because we don't go through a full hypervisor re init.
    
    H_OVERLAP error for a H_SCM_BIND_MEM hcall indicates that SCM memory at
    drc index is already bound. Since we don't specify a logical memory
    address for bind hcall, we can use the H_SCM_QUERY hcall to query
    the already bound logical address.
    
    Boot time difference with and without patch is:
    
    [    5.583617] IOMMU table initialized, virtual merging enabled
    [    5.603041] papr_scm ibm,persistent-memory:ibm,pmemory@44104001: Retrying bind after unbinding
    [  301.514221] papr_scm ibm,persistent-memory:ibm,pmemory@44108001: Retrying bind after unbinding
    [  340.057238] hv-24x7: read 1530 catalog entries, created 537 event attrs (0 failures), 275 descs
    
    after fix
    
    [    5.101572] IOMMU table initialized, virtual merging enabled
    [    5.116984] papr_scm ibm,persistent-memory:ibm,pmemory@44104001: Querying SCM details
    [    5.117223] papr_scm ibm,persistent-memory:ibm,pmemory@44108001: Querying SCM details
    [    5.120530] hv-24x7: read 1530 catalog entries, created 537 event attrs (0 failures), 275 descs
    Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20190903123452.28620-2-aneesh.kumar@linux.ibm.com
    faa6d211
papr_scm.c 12.1 KB