mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
mm: Add arch_make_folio_accessible()
As a default implementation, call arch_make_page_accessible n times. If an architecture can do better, it can override this. Also move the default implementation of arch_make_page_accessible() from gfp.h to mm.h. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: David Howells <dhowells@redhat.com> Acked-by: Vlastimil Babka <vbabka@suse.cz>
This commit is contained in:
@@ -520,12 +520,6 @@ static inline void arch_free_page(struct page *page, int order) { }
|
|||||||
#ifndef HAVE_ARCH_ALLOC_PAGE
|
#ifndef HAVE_ARCH_ALLOC_PAGE
|
||||||
static inline void arch_alloc_page(struct page *page, int order) { }
|
static inline void arch_alloc_page(struct page *page, int order) { }
|
||||||
#endif
|
#endif
|
||||||
#ifndef HAVE_ARCH_MAKE_PAGE_ACCESSIBLE
|
|
||||||
static inline int arch_make_page_accessible(struct page *page)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct page *__alloc_pages(gfp_t gfp, unsigned int order, int preferred_nid,
|
struct page *__alloc_pages(gfp_t gfp, unsigned int order, int preferred_nid,
|
||||||
nodemask_t *nodemask);
|
nodemask_t *nodemask);
|
||||||
|
|||||||
@@ -1734,6 +1734,29 @@ static inline size_t folio_size(struct folio *folio)
|
|||||||
return PAGE_SIZE << folio_order(folio);
|
return PAGE_SIZE << folio_order(folio);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef HAVE_ARCH_MAKE_PAGE_ACCESSIBLE
|
||||||
|
static inline int arch_make_page_accessible(struct page *page)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_ARCH_MAKE_FOLIO_ACCESSIBLE
|
||||||
|
static inline int arch_make_folio_accessible(struct folio *folio)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
long i, nr = folio_nr_pages(folio);
|
||||||
|
|
||||||
|
for (i = 0; i < nr; i++) {
|
||||||
|
ret = arch_make_page_accessible(folio_page(folio, i));
|
||||||
|
if (ret)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some inline functions in vmstat.h depend on page_zone()
|
* Some inline functions in vmstat.h depend on page_zone()
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user