Patch "powerpc/pseries: Don't fail hash page table insert for bolted mapping" has been added to the 4.14-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    powerpc/pseries: Don't fail hash page table insert for bolted mapping

to the 4.14-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     powerpc-pseries-don-t-fail-hash-page-table-insert-fo.patch
and it can be found in the queue-4.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit a419333554f0c1412283116cca882314cc7ec4ba
Author: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxx>
Date:   Thu Oct 24 15:05:41 2019 +0530

    powerpc/pseries: Don't fail hash page table insert for bolted mapping
    
    [ Upstream commit 75838a3290cd4ebbd1f567f310ba04b6ef017ce4 ]
    
    If the hypervisor returned H_PTEG_FULL for H_ENTER hcall, retry a hash page table
    insert by removing a random entry from the group.
    
    After some runtime, it is very well possible to find all the 8 hash page table
    entry slot in the hpte group used for mapping. Don't fail a bolted entry insert
    in that case. With Storage class memory a user can find this error easily since
    a namespace enable/disable is equivalent to memory add/remove.
    
    This results in failures as reported below:
    
    $ ndctl create-namespace -r region1 -t pmem -m devdax -a 65536 -s 100M
    libndctl: ndctl_dax_enable: dax1.3: failed to enable
      Error: namespace1.2: failed to enable
    
    failed to create namespace: No such device or address
    
    In kernel log we find the details as below:
    
    Unable to create mapping for hot added memory 0xc000042006000000..0xc00004200d000000: -1
    dax_pmem: probe of dax1.3 failed with error -14
    
    This indicates that we failed to create a bolted hash table entry for direct-map
    address backing the namespace.
    
    We also observe failures such that not all namespaces will be enabled with
    ndctl enable-namespace all command.
    
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxx>
    Signed-off-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20191024093542.29777-2-aneesh.kumar@xxxxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 58c14749bb0c..cf1d76e03635 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -292,7 +292,14 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
 		ret = mmu_hash_ops.hpte_insert(hpteg, vpn, paddr, tprot,
 					       HPTE_V_BOLTED, psize, psize,
 					       ssize);
-
+		if (ret == -1) {
+			/* Try to remove a non bolted entry */
+			ret = mmu_hash_ops.hpte_remove(hpteg);
+			if (ret != -1)
+				ret = mmu_hash_ops.hpte_insert(hpteg, vpn, paddr, tprot,
+							       HPTE_V_BOLTED, psize, psize,
+							       ssize);
+		}
 		if (ret < 0)
 			break;
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux