|
@@ -1074,8 +1074,9 @@ void mark_free_pages(struct zone *zone)
|
|
|
|
|
|
/*
|
|
/*
|
|
* Free a 0-order page
|
|
* Free a 0-order page
|
|
|
|
+ * cold == 1 ? free a cold page : free a hot page
|
|
*/
|
|
*/
|
|
-static void free_hot_cold_page(struct page *page, int cold)
|
|
|
|
|
|
+void free_hot_cold_page(struct page *page, int cold)
|
|
{
|
|
{
|
|
struct zone *zone = page_zone(page);
|
|
struct zone *zone = page_zone(page);
|
|
struct per_cpu_pages *pcp;
|
|
struct per_cpu_pages *pcp;
|
|
@@ -1135,11 +1136,6 @@ out:
|
|
local_irq_restore(flags);
|
|
local_irq_restore(flags);
|
|
}
|
|
}
|
|
|
|
|
|
-void free_hot_page(struct page *page)
|
|
|
|
-{
|
|
|
|
- free_hot_cold_page(page, 0);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* split_page takes a non-compound higher-order page, and splits it into
|
|
* split_page takes a non-compound higher-order page, and splits it into
|
|
* n (1<<order) sub-pages: page[0..n]
|
|
* n (1<<order) sub-pages: page[0..n]
|
|
@@ -2010,7 +2006,7 @@ void __free_pages(struct page *page, unsigned int order)
|
|
{
|
|
{
|
|
if (put_page_testzero(page)) {
|
|
if (put_page_testzero(page)) {
|
|
if (order == 0)
|
|
if (order == 0)
|
|
- free_hot_page(page);
|
|
|
|
|
|
+ free_hot_cold_page(page, 0);
|
|
else
|
|
else
|
|
__free_pages_ok(page, order);
|
|
__free_pages_ok(page, order);
|
|
}
|
|
}
|