pmem.c (e82a82c19f4272ea5437cc76e5711b98e2ee6223) | pmem.c (f0c98ebc57c2d5e535bc4f9167f35650d2ba3c90) |
---|---|
1/* 2 * Copyright(c) 2016 Intel Corporation. All rights reserved. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of version 2 of the GNU General Public License as 6 * published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, but --- 88 unchanged lines hidden (view full) --- 97 98 dax_pmem->dev = dev; 99 init_completion(&dax_pmem->cmp); 100 rc = percpu_ref_init(&dax_pmem->ref, dax_pmem_percpu_release, 0, 101 GFP_KERNEL); 102 if (rc) 103 return rc; 104 | 1/* 2 * Copyright(c) 2016 Intel Corporation. All rights reserved. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of version 2 of the GNU General Public License as 6 * published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, but --- 88 unchanged lines hidden (view full) --- 97 98 dax_pmem->dev = dev; 99 init_completion(&dax_pmem->cmp); 100 rc = percpu_ref_init(&dax_pmem->ref, dax_pmem_percpu_release, 0, 101 GFP_KERNEL); 102 if (rc) 103 return rc; 104 |
105 rc = devm_add_action(dev, dax_pmem_percpu_exit, &dax_pmem->ref); 106 if (rc) { 107 dax_pmem_percpu_exit(&dax_pmem->ref); | 105 rc = devm_add_action_or_reset(dev, dax_pmem_percpu_exit, 106 &dax_pmem->ref); 107 if (rc) |
108 return rc; | 108 return rc; |
109 } | |
110 111 addr = devm_memremap_pages(dev, &res, &dax_pmem->ref, altmap); 112 if (IS_ERR(addr)) 113 return PTR_ERR(addr); 114 | 109 110 addr = devm_memremap_pages(dev, &res, &dax_pmem->ref, altmap); 111 if (IS_ERR(addr)) 112 return PTR_ERR(addr); 113 |
115 rc = devm_add_action(dev, dax_pmem_percpu_kill, &dax_pmem->ref); 116 if (rc) { 117 dax_pmem_percpu_kill(&dax_pmem->ref); | 114 rc = devm_add_action_or_reset(dev, dax_pmem_percpu_kill, 115 &dax_pmem->ref); 116 if (rc) |
118 return rc; | 117 return rc; |
119 } | |
120 121 nd_region = to_nd_region(dev->parent); 122 dax_region = alloc_dax_region(dev, nd_region->id, &res, 123 le32_to_cpu(pfn_sb->align), addr, PFN_DEV|PFN_MAP); 124 if (!dax_region) 125 return -ENOMEM; 126 127 /* TODO: support for subdividing a dax region... */ --- 31 unchanged lines hidden --- | 118 119 nd_region = to_nd_region(dev->parent); 120 dax_region = alloc_dax_region(dev, nd_region->id, &res, 121 le32_to_cpu(pfn_sb->align), addr, PFN_DEV|PFN_MAP); 122 if (!dax_region) 123 return -ENOMEM; 124 125 /* TODO: support for subdividing a dax region... */ --- 31 unchanged lines hidden --- |