projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rk_sdmmc: recalculate audib rx_wmark
[firefly-linux-kernel-4.4.55.git]
/
mm
/
page_alloc.c
diff --git
a/mm/page_alloc.c
b/mm/page_alloc.c
index 82e897fc291f53b4d2a9202efddfb871fa6f9609..bf6c9285013fb0372693ef82f75cdd50007b2620 100644
(file)
--- a/
mm/page_alloc.c
+++ b/
mm/page_alloc.c
@@
-373,9
+373,11
@@
void prep_compound_page(struct page *page, unsigned long order)
__SetPageHead(page);
for (i = 1; i < nr_pages; i++) {
struct page *p = page + i;
__SetPageHead(page);
for (i = 1; i < nr_pages; i++) {
struct page *p = page + i;
- __SetPageTail(p);
set_page_count(p, 0);
p->first_page = page;
set_page_count(p, 0);
p->first_page = page;
+ /* Make sure p->first_page is always valid for PageTail() */
+ smp_wmb();
+ __SetPageTail(p);
}
}
}
}
@@
-1048,6
+1050,15
@@
__rmqueue_fallback(struct zone *zone, int order, int start_migratetype)
page = list_entry(area->free_list[migratetype].next,
struct page, lru);
page = list_entry(area->free_list[migratetype].next,
struct page, lru);
+
+#ifdef CONFIG_ARCH_ROCKCHIP
+ if (is_migrate_cma(migratetype)){
+ int mt = get_pageblock_migratetype(page);
+ if (unlikely(is_migrate_isolate(mt)))
+ continue;
+ }
+#endif
+
area->nr_free--;
/*
area->nr_free--;
/*
@@
-4540,7
+4551,7
@@
static inline void setup_usemap(struct pglist_data *pgdat, struct zone *zone,
#ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
/* Initialise the number of pages represented by NR_PAGEBLOCK_BITS */
#ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
/* Initialise the number of pages represented by NR_PAGEBLOCK_BITS */
-void __init set_pageblock_order(void)
+void __
paging
init set_pageblock_order(void)
{
unsigned int order;
{
unsigned int order;
@@
-4568,7
+4579,7
@@
void __init set_pageblock_order(void)
* include/linux/pageblock-flags.h for the values of pageblock_order based on
* the kernel config
*/
* include/linux/pageblock-flags.h for the values of pageblock_order based on
* the kernel config
*/
-void __init set_pageblock_order(void)
+void __
paging
init set_pageblock_order(void)
{
}
{
}