mm: convert totalram_pages and totalhigh_pages variables to atomic
totalram_pages and totalhigh_pages are made static inline function. Main motivation was that managed_page_count_lock handling was complicating things. It was discussed in length here, https://lore.kernel.org/patchwork/patch/995739/#1181785 So it seemes better to remove the lock and convert variables to atomic, with preventing poteintial store-to-read tearing as a bonus. [akpm@linux-foundation.org: coding style fixes] Link: http://lkml.kernel.org/r/1542090790-21750-4-git-send-email-arunks@codeaurora.org Signed-off-by: Arun KS <arunks@codeaurora.org> Suggested-by: Michal Hocko <mhocko@suse.com> Suggested-by: Vlastimil Babka <vbabka@suse.cz> Reviewed-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> Reviewed-by: Pavel Tatashin <pasha.tatashin@soleen.com> Acked-by: Michal Hocko <mhocko@suse.com> Acked-by: Vlastimil Babka <vbabka@suse.cz> Cc: David Hildenbrand <david@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Esse commit está contido em:
@@ -1251,7 +1251,7 @@ ccio_ioc_init(struct ioc *ioc)
|
||||
** Hot-Plug/Removal of PCI cards. (aka PCI OLARD).
|
||||
*/
|
||||
|
||||
iova_space_size = (u32) (totalram_pages / count_parisc_driver(&ccio_driver));
|
||||
iova_space_size = (u32) (totalram_pages() / count_parisc_driver(&ccio_driver));
|
||||
|
||||
/* limit IOVA space size to 1MB-1GB */
|
||||
|
||||
@@ -1290,7 +1290,7 @@ ccio_ioc_init(struct ioc *ioc)
|
||||
|
||||
DBG_INIT("%s() hpa 0x%p mem %luMB IOV %dMB (%d bits)\n",
|
||||
__func__, ioc->ioc_regs,
|
||||
(unsigned long) totalram_pages >> (20 - PAGE_SHIFT),
|
||||
(unsigned long) totalram_pages() >> (20 - PAGE_SHIFT),
|
||||
iova_space_size>>20,
|
||||
iov_order + PAGE_SHIFT);
|
||||
|
||||
|
@@ -1414,7 +1414,7 @@ sba_ioc_init(struct parisc_device *sba, struct ioc *ioc, int ioc_num)
|
||||
** for DMA hints - ergo only 30 bits max.
|
||||
*/
|
||||
|
||||
iova_space_size = (u32) (totalram_pages/global_ioc_cnt);
|
||||
iova_space_size = (u32) (totalram_pages()/global_ioc_cnt);
|
||||
|
||||
/* limit IOVA space size to 1MB-1GB */
|
||||
if (iova_space_size < (1 << (20 - PAGE_SHIFT))) {
|
||||
@@ -1439,7 +1439,7 @@ sba_ioc_init(struct parisc_device *sba, struct ioc *ioc, int ioc_num)
|
||||
DBG_INIT("%s() hpa 0x%lx mem %ldMB IOV %dMB (%d bits)\n",
|
||||
__func__,
|
||||
ioc->ioc_hpa,
|
||||
(unsigned long) totalram_pages >> (20 - PAGE_SHIFT),
|
||||
(unsigned long) totalram_pages() >> (20 - PAGE_SHIFT),
|
||||
iova_space_size>>20,
|
||||
iov_order + PAGE_SHIFT);
|
||||
|
||||
|
Referência em uma nova issue
Block a user