Linux Audio

Check our new training course

Loading...
v3.1
 
   1/*
   2 *  Copyright (C) 2009  Red Hat, Inc.
   3 *
   4 *  This work is licensed under the terms of the GNU GPL, version 2. See
   5 *  the COPYING file in the top-level directory.
   6 */
   7
 
 
   8#include <linux/mm.h>
   9#include <linux/sched.h>
 
 
  10#include <linux/highmem.h>
  11#include <linux/hugetlb.h>
  12#include <linux/mmu_notifier.h>
  13#include <linux/rmap.h>
  14#include <linux/swap.h>
 
  15#include <linux/mm_inline.h>
  16#include <linux/kthread.h>
 
  17#include <linux/khugepaged.h>
  18#include <linux/freezer.h>
 
  19#include <linux/mman.h>
 
 
 
 
 
 
 
 
 
 
 
 
  20#include <asm/tlb.h>
  21#include <asm/pgalloc.h>
  22#include "internal.h"
  23
  24/*
  25 * By default transparent hugepage support is enabled for all mappings
  26 * and khugepaged scans all mappings. Defrag is only invoked by
  27 * khugepaged hugepage allocations and by page faults inside
  28 * MADV_HUGEPAGE regions to avoid the risk of slowing down short lived
  29 * allocations.
 
  30 */
  31unsigned long transparent_hugepage_flags __read_mostly =
  32#ifdef CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS
  33	(1<<TRANSPARENT_HUGEPAGE_FLAG)|
  34#endif
  35#ifdef CONFIG_TRANSPARENT_HUGEPAGE_MADVISE
  36	(1<<TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG)|
  37#endif
  38	(1<<TRANSPARENT_HUGEPAGE_DEFRAG_FLAG)|
  39	(1<<TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG);
 
  40
  41/* default scan 8*512 pte (or vmas) every 30 second */
  42static unsigned int khugepaged_pages_to_scan __read_mostly = HPAGE_PMD_NR*8;
  43static unsigned int khugepaged_pages_collapsed;
  44static unsigned int khugepaged_full_scans;
  45static unsigned int khugepaged_scan_sleep_millisecs __read_mostly = 10000;
  46/* during fragmentation poll the hugepage allocator once every minute */
  47static unsigned int khugepaged_alloc_sleep_millisecs __read_mostly = 60000;
  48static struct task_struct *khugepaged_thread __read_mostly;
  49static DEFINE_MUTEX(khugepaged_mutex);
  50static DEFINE_SPINLOCK(khugepaged_mm_lock);
  51static DECLARE_WAIT_QUEUE_HEAD(khugepaged_wait);
  52/*
  53 * default collapse hugepages if there is at least one pte mapped like
  54 * it would have happened if the vma was large enough during page
  55 * fault.
  56 */
  57static unsigned int khugepaged_max_ptes_none __read_mostly = HPAGE_PMD_NR-1;
  58
  59static int khugepaged(void *none);
  60static int mm_slots_hash_init(void);
  61static int khugepaged_slab_init(void);
  62static void khugepaged_slab_free(void);
  63
  64#define MM_SLOTS_HASH_HEADS 1024
  65static struct hlist_head *mm_slots_hash __read_mostly;
  66static struct kmem_cache *mm_slot_cache __read_mostly;
  67
  68/**
  69 * struct mm_slot - hash lookup from mm to mm_slot
  70 * @hash: hash collision list
  71 * @mm_node: khugepaged scan list headed in khugepaged_scan.mm_head
  72 * @mm: the mm that this information is valid for
  73 */
  74struct mm_slot {
  75	struct hlist_node hash;
  76	struct list_head mm_node;
  77	struct mm_struct *mm;
  78};
  79
  80/**
  81 * struct khugepaged_scan - cursor for scanning
  82 * @mm_head: the head of the mm list to scan
  83 * @mm_slot: the current mm_slot we are scanning
  84 * @address: the next address inside that to be scanned
  85 *
  86 * There is only the one khugepaged_scan instance of this cursor structure.
  87 */
  88struct khugepaged_scan {
  89	struct list_head mm_head;
  90	struct mm_slot *mm_slot;
  91	unsigned long address;
  92} khugepaged_scan = {
  93	.mm_head = LIST_HEAD_INIT(khugepaged_scan.mm_head),
  94};
  95
 
 
 
 
 
 
  96
  97static int set_recommended_min_free_kbytes(void)
 
 
 
  98{
  99	struct zone *zone;
 100	int nr_zones = 0;
 101	unsigned long recommended_min;
 102	extern int min_free_kbytes;
 103
 104	if (!test_bit(TRANSPARENT_HUGEPAGE_FLAG,
 105		      &transparent_hugepage_flags) &&
 106	    !test_bit(TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG,
 107		      &transparent_hugepage_flags))
 108		return 0;
 109
 110	for_each_populated_zone(zone)
 111		nr_zones++;
 
 
 
 
 
 
 
 
 
 
 
 112
 113	/* Make sure at least 2 hugepages are free for MIGRATE_RESERVE */
 114	recommended_min = pageblock_nr_pages * nr_zones * 2;
 
 
 
 115
 
 
 116	/*
 117	 * Make sure that on average at least two pageblocks are almost free
 118	 * of another type, one for a migratetype to fall back to and a
 119	 * second to avoid subsequent fallbacks of other types There are 3
 120	 * MIGRATE_TYPES we care about.
 121	 */
 122	recommended_min += pageblock_nr_pages * nr_zones *
 123			   MIGRATE_PCPTYPES * MIGRATE_PCPTYPES;
 124
 125	/* don't ever allow to reserve more than 5% of the lowmem */
 126	recommended_min = min(recommended_min,
 127			      (unsigned long) nr_free_buffer_pages() / 20);
 128	recommended_min <<= (PAGE_SHIFT-10);
 129
 130	if (recommended_min > min_free_kbytes)
 131		min_free_kbytes = recommended_min;
 132	setup_per_zone_wmarks();
 133	return 0;
 
 
 
 134}
 135late_initcall(set_recommended_min_free_kbytes);
 136
 137static int start_khugepaged(void)
 138{
 139	int err = 0;
 140	if (khugepaged_enabled()) {
 141		int wakeup;
 142		if (unlikely(!mm_slot_cache || !mm_slots_hash)) {
 143			err = -ENOMEM;
 144			goto out;
 145		}
 146		mutex_lock(&khugepaged_mutex);
 147		if (!khugepaged_thread)
 148			khugepaged_thread = kthread_run(khugepaged, NULL,
 149							"khugepaged");
 150		if (unlikely(IS_ERR(khugepaged_thread))) {
 151			printk(KERN_ERR
 152			       "khugepaged: kthread_run(khugepaged) failed\n");
 153			err = PTR_ERR(khugepaged_thread);
 154			khugepaged_thread = NULL;
 155		}
 156		wakeup = !list_empty(&khugepaged_scan.mm_head);
 157		mutex_unlock(&khugepaged_mutex);
 158		if (wakeup)
 159			wake_up_interruptible(&khugepaged_wait);
 160
 161		set_recommended_min_free_kbytes();
 162	} else
 163		/* wakeup to exit */
 164		wake_up_interruptible(&khugepaged_wait);
 165out:
 166	return err;
 167}
 168
 169#ifdef CONFIG_SYSFS
 
 
 
 
 
 
 
 
 170
 171static ssize_t double_flag_show(struct kobject *kobj,
 172				struct kobj_attribute *attr, char *buf,
 173				enum transparent_hugepage_flag enabled,
 174				enum transparent_hugepage_flag req_madv)
 
 
 
 
 
 
 
 
 175{
 176	if (test_bit(enabled, &transparent_hugepage_flags)) {
 177		VM_BUG_ON(test_bit(req_madv, &transparent_hugepage_flags));
 178		return sprintf(buf, "[always] madvise never\n");
 179	} else if (test_bit(req_madv, &transparent_hugepage_flags))
 180		return sprintf(buf, "always [madvise] never\n");
 181	else
 182		return sprintf(buf, "always madvise [never]\n");
 183}
 184static ssize_t double_flag_store(struct kobject *kobj,
 185				 struct kobj_attribute *attr,
 186				 const char *buf, size_t count,
 187				 enum transparent_hugepage_flag enabled,
 188				 enum transparent_hugepage_flag req_madv)
 189{
 
 
 190	if (!memcmp("always", buf,
 191		    min(sizeof("always")-1, count))) {
 192		set_bit(enabled, &transparent_hugepage_flags);
 193		clear_bit(req_madv, &transparent_hugepage_flags);
 194	} else if (!memcmp("madvise", buf,
 195			   min(sizeof("madvise")-1, count))) {
 196		clear_bit(enabled, &transparent_hugepage_flags);
 197		set_bit(req_madv, &transparent_hugepage_flags);
 198	} else if (!memcmp("never", buf,
 199			   min(sizeof("never")-1, count))) {
 200		clear_bit(enabled, &transparent_hugepage_flags);
 201		clear_bit(req_madv, &transparent_hugepage_flags);
 202	} else
 203		return -EINVAL;
 204
 205	return count;
 206}
 207
 208static ssize_t enabled_show(struct kobject *kobj,
 209			    struct kobj_attribute *attr, char *buf)
 210{
 211	return double_flag_show(kobj, attr, buf,
 212				TRANSPARENT_HUGEPAGE_FLAG,
 213				TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG);
 214}
 215static ssize_t enabled_store(struct kobject *kobj,
 216			     struct kobj_attribute *attr,
 217			     const char *buf, size_t count)
 218{
 219	ssize_t ret;
 220
 221	ret = double_flag_store(kobj, attr, buf, count,
 222				TRANSPARENT_HUGEPAGE_FLAG,
 223				TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG);
 224
 225	if (ret > 0) {
 226		int err = start_khugepaged();
 227		if (err)
 228			ret = err;
 229	}
 230
 231	if (ret > 0 &&
 232	    (test_bit(TRANSPARENT_HUGEPAGE_FLAG,
 233		      &transparent_hugepage_flags) ||
 234	     test_bit(TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG,
 235		      &transparent_hugepage_flags)))
 236		set_recommended_min_free_kbytes();
 237
 238	return ret;
 239}
 240static struct kobj_attribute enabled_attr =
 241	__ATTR(enabled, 0644, enabled_show, enabled_store);
 242
 243static ssize_t single_flag_show(struct kobject *kobj,
 244				struct kobj_attribute *attr, char *buf,
 245				enum transparent_hugepage_flag flag)
 246{
 247	return sprintf(buf, "%d\n",
 248		       !!test_bit(flag, &transparent_hugepage_flags));
 249}
 250
 251static ssize_t single_flag_store(struct kobject *kobj,
 252				 struct kobj_attribute *attr,
 253				 const char *buf, size_t count,
 254				 enum transparent_hugepage_flag flag)
 255{
 256	unsigned long value;
 257	int ret;
 258
 259	ret = kstrtoul(buf, 10, &value);
 260	if (ret < 0)
 261		return ret;
 262	if (value > 1)
 263		return -EINVAL;
 264
 265	if (value)
 266		set_bit(flag, &transparent_hugepage_flags);
 267	else
 268		clear_bit(flag, &transparent_hugepage_flags);
 269
 270	return count;
 271}
 272
 273/*
 274 * Currently defrag only disables __GFP_NOWAIT for allocation. A blind
 275 * __GFP_REPEAT is too aggressive, it's never worth swapping tons of
 276 * memory just to allocate one more hugepage.
 277 */
 278static ssize_t defrag_show(struct kobject *kobj,
 279			   struct kobj_attribute *attr, char *buf)
 280{
 281	return double_flag_show(kobj, attr, buf,
 282				TRANSPARENT_HUGEPAGE_DEFRAG_FLAG,
 283				TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG);
 
 
 
 
 
 
 284}
 
 285static ssize_t defrag_store(struct kobject *kobj,
 286			    struct kobj_attribute *attr,
 287			    const char *buf, size_t count)
 288{
 289	return double_flag_store(kobj, attr, buf, count,
 290				 TRANSPARENT_HUGEPAGE_DEFRAG_FLAG,
 291				 TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 292}
 293static struct kobj_attribute defrag_attr =
 294	__ATTR(defrag, 0644, defrag_show, defrag_store);
 295
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 296#ifdef CONFIG_DEBUG_VM
 297static ssize_t debug_cow_show(struct kobject *kobj,
 298				struct kobj_attribute *attr, char *buf)
 299{
 300	return single_flag_show(kobj, attr, buf,
 301				TRANSPARENT_HUGEPAGE_DEBUG_COW_FLAG);
 302}
 303static ssize_t debug_cow_store(struct kobject *kobj,
 304			       struct kobj_attribute *attr,
 305			       const char *buf, size_t count)
 306{
 307	return single_flag_store(kobj, attr, buf, count,
 308				 TRANSPARENT_HUGEPAGE_DEBUG_COW_FLAG);
 309}
 310static struct kobj_attribute debug_cow_attr =
 311	__ATTR(debug_cow, 0644, debug_cow_show, debug_cow_store);
 312#endif /* CONFIG_DEBUG_VM */
 313
 314static struct attribute *hugepage_attr[] = {
 315	&enabled_attr.attr,
 316	&defrag_attr.attr,
 
 
 
 
 
 317#ifdef CONFIG_DEBUG_VM
 318	&debug_cow_attr.attr,
 319#endif
 320	NULL,
 321};
 322
 323static struct attribute_group hugepage_attr_group = {
 324	.attrs = hugepage_attr,
 325};
 326
 327static ssize_t scan_sleep_millisecs_show(struct kobject *kobj,
 328					 struct kobj_attribute *attr,
 329					 char *buf)
 330{
 331	return sprintf(buf, "%u\n", khugepaged_scan_sleep_millisecs);
 332}
 333
 334static ssize_t scan_sleep_millisecs_store(struct kobject *kobj,
 335					  struct kobj_attribute *attr,
 336					  const char *buf, size_t count)
 337{
 338	unsigned long msecs;
 339	int err;
 340
 341	err = strict_strtoul(buf, 10, &msecs);
 342	if (err || msecs > UINT_MAX)
 343		return -EINVAL;
 344
 345	khugepaged_scan_sleep_millisecs = msecs;
 346	wake_up_interruptible(&khugepaged_wait);
 347
 348	return count;
 349}
 350static struct kobj_attribute scan_sleep_millisecs_attr =
 351	__ATTR(scan_sleep_millisecs, 0644, scan_sleep_millisecs_show,
 352	       scan_sleep_millisecs_store);
 353
 354static ssize_t alloc_sleep_millisecs_show(struct kobject *kobj,
 355					  struct kobj_attribute *attr,
 356					  char *buf)
 357{
 358	return sprintf(buf, "%u\n", khugepaged_alloc_sleep_millisecs);
 359}
 360
 361static ssize_t alloc_sleep_millisecs_store(struct kobject *kobj,
 362					   struct kobj_attribute *attr,
 363					   const char *buf, size_t count)
 364{
 365	unsigned long msecs;
 366	int err;
 367
 368	err = strict_strtoul(buf, 10, &msecs);
 369	if (err || msecs > UINT_MAX)
 370		return -EINVAL;
 371
 372	khugepaged_alloc_sleep_millisecs = msecs;
 373	wake_up_interruptible(&khugepaged_wait);
 374
 375	return count;
 376}
 377static struct kobj_attribute alloc_sleep_millisecs_attr =
 378	__ATTR(alloc_sleep_millisecs, 0644, alloc_sleep_millisecs_show,
 379	       alloc_sleep_millisecs_store);
 380
 381static ssize_t pages_to_scan_show(struct kobject *kobj,
 382				  struct kobj_attribute *attr,
 383				  char *buf)
 384{
 385	return sprintf(buf, "%u\n", khugepaged_pages_to_scan);
 386}
 387static ssize_t pages_to_scan_store(struct kobject *kobj,
 388				   struct kobj_attribute *attr,
 389				   const char *buf, size_t count)
 390{
 391	int err;
 392	unsigned long pages;
 393
 394	err = strict_strtoul(buf, 10, &pages);
 395	if (err || !pages || pages > UINT_MAX)
 396		return -EINVAL;
 397
 398	khugepaged_pages_to_scan = pages;
 
 
 
 
 399
 400	return count;
 401}
 402static struct kobj_attribute pages_to_scan_attr =
 403	__ATTR(pages_to_scan, 0644, pages_to_scan_show,
 404	       pages_to_scan_store);
 405
 406static ssize_t pages_collapsed_show(struct kobject *kobj,
 407				    struct kobj_attribute *attr,
 408				    char *buf)
 409{
 410	return sprintf(buf, "%u\n", khugepaged_pages_collapsed);
 411}
 412static struct kobj_attribute pages_collapsed_attr =
 413	__ATTR_RO(pages_collapsed);
 414
 415static ssize_t full_scans_show(struct kobject *kobj,
 416			       struct kobj_attribute *attr,
 417			       char *buf)
 418{
 419	return sprintf(buf, "%u\n", khugepaged_full_scans);
 420}
 421static struct kobj_attribute full_scans_attr =
 422	__ATTR_RO(full_scans);
 423
 424static ssize_t khugepaged_defrag_show(struct kobject *kobj,
 425				      struct kobj_attribute *attr, char *buf)
 426{
 427	return single_flag_show(kobj, attr, buf,
 428				TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG);
 
 429}
 430static ssize_t khugepaged_defrag_store(struct kobject *kobj,
 431				       struct kobj_attribute *attr,
 432				       const char *buf, size_t count)
 433{
 434	return single_flag_store(kobj, attr, buf, count,
 435				 TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG);
 436}
 437static struct kobj_attribute khugepaged_defrag_attr =
 438	__ATTR(defrag, 0644, khugepaged_defrag_show,
 439	       khugepaged_defrag_store);
 440
 441/*
 442 * max_ptes_none controls if khugepaged should collapse hugepages over
 443 * any unmapped ptes in turn potentially increasing the memory
 444 * footprint of the vmas. When max_ptes_none is 0 khugepaged will not
 445 * reduce the available free memory in the system as it
 446 * runs. Increasing max_ptes_none will instead potentially reduce the
 447 * free memory in the system during the khugepaged scan.
 448 */
 449static ssize_t khugepaged_max_ptes_none_show(struct kobject *kobj,
 450					     struct kobj_attribute *attr,
 451					     char *buf)
 452{
 453	return sprintf(buf, "%u\n", khugepaged_max_ptes_none);
 454}
 455static ssize_t khugepaged_max_ptes_none_store(struct kobject *kobj,
 456					      struct kobj_attribute *attr,
 457					      const char *buf, size_t count)
 458{
 459	int err;
 460	unsigned long max_ptes_none;
 461
 462	err = strict_strtoul(buf, 10, &max_ptes_none);
 463	if (err || max_ptes_none > HPAGE_PMD_NR-1)
 464		return -EINVAL;
 465
 466	khugepaged_max_ptes_none = max_ptes_none;
 467
 468	return count;
 469}
 470static struct kobj_attribute khugepaged_max_ptes_none_attr =
 471	__ATTR(max_ptes_none, 0644, khugepaged_max_ptes_none_show,
 472	       khugepaged_max_ptes_none_store);
 473
 474static struct attribute *khugepaged_attr[] = {
 475	&khugepaged_defrag_attr.attr,
 476	&khugepaged_max_ptes_none_attr.attr,
 477	&pages_to_scan_attr.attr,
 478	&pages_collapsed_attr.attr,
 479	&full_scans_attr.attr,
 480	&scan_sleep_millisecs_attr.attr,
 481	&alloc_sleep_millisecs_attr.attr,
 482	NULL,
 483};
 484
 485static struct attribute_group khugepaged_attr_group = {
 486	.attrs = khugepaged_attr,
 487	.name = "khugepaged",
 488};
 489#endif /* CONFIG_SYSFS */
 490
 491static int __init hugepage_init(void)
 492{
 493	int err;
 494#ifdef CONFIG_SYSFS
 495	static struct kobject *hugepage_kobj;
 496#endif
 497
 498	err = -EINVAL;
 499	if (!has_transparent_hugepage()) {
 500		transparent_hugepage_flags = 0;
 501		goto out;
 502	}
 503
 504#ifdef CONFIG_SYSFS
 505	err = -ENOMEM;
 506	hugepage_kobj = kobject_create_and_add("transparent_hugepage", mm_kobj);
 507	if (unlikely(!hugepage_kobj)) {
 508		printk(KERN_ERR "hugepage: failed kobject create\n");
 509		goto out;
 510	}
 511
 512	err = sysfs_create_group(hugepage_kobj, &hugepage_attr_group);
 513	if (err) {
 514		printk(KERN_ERR "hugepage: failed register hugeage group\n");
 515		goto out;
 516	}
 
 
 
 
 517
 518	err = sysfs_create_group(hugepage_kobj, &khugepaged_attr_group);
 519	if (err) {
 520		printk(KERN_ERR "hugepage: failed register hugeage group\n");
 521		goto out;
 522	}
 523#endif
 524
 525	err = khugepaged_slab_init();
 526	if (err)
 527		goto out;
 528
 529	err = mm_slots_hash_init();
 530	if (err) {
 531		khugepaged_slab_free();
 532		goto out;
 533	}
 
 534
 535	/*
 536	 * By default disable transparent hugepages on smaller systems,
 537	 * where the extra memory used could hurt more than TLB overhead
 538	 * is likely to save.  The admin can still enable it through /sys.
 539	 */
 540	if (totalram_pages < (512 << (20 - PAGE_SHIFT)))
 541		transparent_hugepage_flags = 0;
 
 
 542
 543	start_khugepaged();
 544
 545	set_recommended_min_free_kbytes();
 546
 547out:
 
 
 
 
 
 
 
 
 
 548	return err;
 549}
 550module_init(hugepage_init)
 551
 552static int __init setup_transparent_hugepage(char *str)
 553{
 554	int ret = 0;
 555	if (!str)
 556		goto out;
 557	if (!strcmp(str, "always")) {
 558		set_bit(TRANSPARENT_HUGEPAGE_FLAG,
 559			&transparent_hugepage_flags);
 560		clear_bit(TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG,
 561			  &transparent_hugepage_flags);
 562		ret = 1;
 563	} else if (!strcmp(str, "madvise")) {
 564		clear_bit(TRANSPARENT_HUGEPAGE_FLAG,
 565			  &transparent_hugepage_flags);
 566		set_bit(TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG,
 567			&transparent_hugepage_flags);
 568		ret = 1;
 569	} else if (!strcmp(str, "never")) {
 570		clear_bit(TRANSPARENT_HUGEPAGE_FLAG,
 571			  &transparent_hugepage_flags);
 572		clear_bit(TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG,
 573			  &transparent_hugepage_flags);
 574		ret = 1;
 575	}
 576out:
 577	if (!ret)
 578		printk(KERN_WARNING
 579		       "transparent_hugepage= cannot parse, ignored\n");
 580	return ret;
 581}
 582__setup("transparent_hugepage=", setup_transparent_hugepage);
 583
 584static void prepare_pmd_huge_pte(pgtable_t pgtable,
 585				 struct mm_struct *mm)
 586{
 587	assert_spin_locked(&mm->page_table_lock);
 
 
 
 
 
 
 
 
 
 588
 589	/* FIFO */
 590	if (!mm->pmd_huge_pte)
 591		INIT_LIST_HEAD(&pgtable->lru);
 592	else
 593		list_add(&pgtable->lru, &mm->pmd_huge_pte->lru);
 594	mm->pmd_huge_pte = pgtable;
 595}
 
 
 
 
 
 
 
 
 596
 597static inline pmd_t maybe_pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma)
 598{
 599	if (likely(vma->vm_flags & VM_WRITE))
 600		pmd = pmd_mkwrite(pmd);
 601	return pmd;
 
 
 
 
 602}
 603
 604static int __do_huge_pmd_anonymous_page(struct mm_struct *mm,
 605					struct vm_area_struct *vma,
 606					unsigned long haddr, pmd_t *pmd,
 607					struct page *page)
 608{
 609	int ret = 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 610	pgtable_t pgtable;
 
 
 611
 612	VM_BUG_ON(!PageCompound(page));
 613	pgtable = pte_alloc_one(mm, haddr);
 614	if (unlikely(!pgtable)) {
 615		mem_cgroup_uncharge_page(page);
 616		put_page(page);
 617		return VM_FAULT_OOM;
 
 618	}
 619
 620	clear_huge_page(page, haddr, HPAGE_PMD_NR);
 
 
 
 
 
 
 
 
 
 
 
 621	__SetPageUptodate(page);
 622
 623	spin_lock(&mm->page_table_lock);
 624	if (unlikely(!pmd_none(*pmd))) {
 625		spin_unlock(&mm->page_table_lock);
 626		mem_cgroup_uncharge_page(page);
 627		put_page(page);
 628		pte_free(mm, pgtable);
 629	} else {
 630		pmd_t entry;
 631		entry = mk_pmd(page, vma->vm_page_prot);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 632		entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma);
 633		entry = pmd_mkhuge(entry);
 634		/*
 635		 * The spinlocking to take the lru_lock inside
 636		 * page_add_new_anon_rmap() acts as a full memory
 637		 * barrier to be sure clear_huge_page writes become
 638		 * visible after the set_pmd_at() write.
 639		 */
 640		page_add_new_anon_rmap(page, vma, haddr);
 641		set_pmd_at(mm, haddr, pmd, entry);
 642		prepare_pmd_huge_pte(pgtable, mm);
 643		add_mm_counter(mm, MM_ANONPAGES, HPAGE_PMD_NR);
 644		spin_unlock(&mm->page_table_lock);
 645	}
 646
 
 
 
 
 
 
 
 
 647	return ret;
 648}
 649
 650static inline gfp_t alloc_hugepage_gfpmask(int defrag, gfp_t extra_gfp)
 651{
 652	return (GFP_TRANSHUGE & ~(defrag ? 0 : __GFP_WAIT)) | extra_gfp;
 653}
 654
 655static inline struct page *alloc_hugepage_vma(int defrag,
 656					      struct vm_area_struct *vma,
 657					      unsigned long haddr, int nd,
 658					      gfp_t extra_gfp)
 
 
 
 
 
 
 659{
 660	return alloc_pages_vma(alloc_hugepage_gfpmask(defrag, extra_gfp),
 661			       HPAGE_PMD_ORDER, vma, haddr, nd);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 662}
 663
 664#ifndef CONFIG_NUMA
 665static inline struct page *alloc_hugepage(int defrag)
 
 
 666{
 667	return alloc_pages(alloc_hugepage_gfpmask(defrag, 0),
 668			   HPAGE_PMD_ORDER);
 
 
 
 
 
 
 
 
 669}
 670#endif
 671
 672int do_huge_pmd_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
 673			       unsigned long address, pmd_t *pmd,
 674			       unsigned int flags)
 675{
 
 
 676	struct page *page;
 677	unsigned long haddr = address & HPAGE_PMD_MASK;
 678	pte_t *pte;
 679
 680	if (haddr >= vma->vm_start && haddr + HPAGE_PMD_SIZE <= vma->vm_end) {
 681		if (unlikely(anon_vma_prepare(vma)))
 682			return VM_FAULT_OOM;
 683		if (unlikely(khugepaged_enter(vma)))
 
 
 
 
 
 
 
 
 
 
 
 684			return VM_FAULT_OOM;
 685		page = alloc_hugepage_vma(transparent_hugepage_defrag(vma),
 686					  vma, haddr, numa_node_id(), 0);
 687		if (unlikely(!page)) {
 688			count_vm_event(THP_FAULT_FALLBACK);
 689			goto out;
 690		}
 691		count_vm_event(THP_FAULT_ALLOC);
 692		if (unlikely(mem_cgroup_newpage_charge(page, mm, GFP_KERNEL))) {
 693			put_page(page);
 694			goto out;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 695		}
 696
 697		return __do_huge_pmd_anonymous_page(mm, vma, haddr, pmd, page);
 698	}
 699out:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 700	/*
 701	 * Use __pte_alloc instead of pte_alloc_map, because we can't
 702	 * run pte_offset_map on the pmd, if an huge pmd could
 703	 * materialize from under us from a different thread.
 704	 */
 705	if (unlikely(__pte_alloc(mm, vma, pmd, address)))
 706		return VM_FAULT_OOM;
 707	/* if an huge pmd materialized from under us just retry later */
 708	if (unlikely(pmd_trans_huge(*pmd)))
 709		return 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 710	/*
 711	 * A regular pmd is established and it can't morph into a huge pmd
 712	 * from under us anymore at this point because we hold the mmap_sem
 713	 * read mode and khugepaged takes it in write mode. So now it's
 714	 * safe to run pte_offset_map().
 715	 */
 716	pte = pte_offset_map(pmd, address);
 717	return handle_pte_fault(mm, vma, address, pte, pmd, flags);
 
 
 
 
 
 
 
 
 
 718}
 719
 720int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 721		  pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
 722		  struct vm_area_struct *vma)
 723{
 
 724	struct page *src_page;
 725	pmd_t pmd;
 726	pgtable_t pgtable;
 727	int ret;
 
 
 
 
 728
 729	ret = -ENOMEM;
 730	pgtable = pte_alloc_one(dst_mm, addr);
 731	if (unlikely(!pgtable))
 732		goto out;
 733
 734	spin_lock(&dst_mm->page_table_lock);
 735	spin_lock_nested(&src_mm->page_table_lock, SINGLE_DEPTH_NESTING);
 
 736
 737	ret = -EAGAIN;
 738	pmd = *src_pmd;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 739	if (unlikely(!pmd_trans_huge(pmd))) {
 740		pte_free(dst_mm, pgtable);
 741		goto out_unlock;
 742	}
 743	if (unlikely(pmd_trans_splitting(pmd))) {
 744		/* split huge page running from under us */
 745		spin_unlock(&src_mm->page_table_lock);
 746		spin_unlock(&dst_mm->page_table_lock);
 747		pte_free(dst_mm, pgtable);
 748
 749		wait_split_huge_page(vma->anon_vma, src_pmd); /* src_vma */
 750		goto out;
 
 
 
 
 
 
 
 
 
 751	}
 
 752	src_page = pmd_page(pmd);
 753	VM_BUG_ON(!PageHead(src_page));
 754	get_page(src_page);
 755	page_dup_rmap(src_page);
 756	add_mm_counter(dst_mm, MM_ANONPAGES, HPAGE_PMD_NR);
 
 
 757
 758	pmdp_set_wrprotect(src_mm, addr, src_pmd);
 759	pmd = pmd_mkold(pmd_wrprotect(pmd));
 760	set_pmd_at(dst_mm, addr, dst_pmd, pmd);
 761	prepare_pmd_huge_pte(pgtable, dst_mm);
 762
 763	ret = 0;
 764out_unlock:
 765	spin_unlock(&src_mm->page_table_lock);
 766	spin_unlock(&dst_mm->page_table_lock);
 767out:
 768	return ret;
 769}
 770
 771/* no "address" argument so destroys page coloring of some arch */
 772pgtable_t get_pmd_huge_pte(struct mm_struct *mm)
 
 773{
 774	pgtable_t pgtable;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 775
 776	assert_spin_locked(&mm->page_table_lock);
 
 
 
 777
 778	/* FIFO */
 779	pgtable = mm->pmd_huge_pte;
 780	if (list_empty(&pgtable->lru))
 781		mm->pmd_huge_pte = NULL;
 782	else {
 783		mm->pmd_huge_pte = list_entry(pgtable->lru.next,
 784					      struct page, lru);
 785		list_del(&pgtable->lru);
 786	}
 787	return pgtable;
 788}
 789
 790static int do_huge_pmd_wp_page_fallback(struct mm_struct *mm,
 791					struct vm_area_struct *vma,
 792					unsigned long address,
 793					pmd_t *pmd, pmd_t orig_pmd,
 794					struct page *page,
 795					unsigned long haddr)
 796{
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 797	pgtable_t pgtable;
 798	pmd_t _pmd;
 799	int ret = 0, i;
 
 800	struct page **pages;
 
 801
 802	pages = kmalloc(sizeof(struct page *) * HPAGE_PMD_NR,
 803			GFP_KERNEL);
 804	if (unlikely(!pages)) {
 805		ret |= VM_FAULT_OOM;
 806		goto out;
 807	}
 808
 809	for (i = 0; i < HPAGE_PMD_NR; i++) {
 810		pages[i] = alloc_page_vma_node(GFP_HIGHUSER_MOVABLE |
 811					       __GFP_OTHER_NODE,
 812					       vma, address, page_to_nid(page));
 813		if (unlikely(!pages[i] ||
 814			     mem_cgroup_newpage_charge(pages[i], mm,
 815						       GFP_KERNEL))) {
 816			if (pages[i])
 817				put_page(pages[i]);
 818			mem_cgroup_uncharge_start();
 819			while (--i >= 0) {
 820				mem_cgroup_uncharge_page(pages[i]);
 
 
 
 821				put_page(pages[i]);
 822			}
 823			mem_cgroup_uncharge_end();
 824			kfree(pages);
 825			ret |= VM_FAULT_OOM;
 826			goto out;
 827		}
 
 828	}
 829
 830	for (i = 0; i < HPAGE_PMD_NR; i++) {
 831		copy_user_highpage(pages[i], page + i,
 832				   haddr + PAGE_SHIFT*i, vma);
 833		__SetPageUptodate(pages[i]);
 834		cond_resched();
 835	}
 836
 837	spin_lock(&mm->page_table_lock);
 838	if (unlikely(!pmd_same(*pmd, orig_pmd)))
 
 
 
 
 839		goto out_free_pages;
 840	VM_BUG_ON(!PageHead(page));
 841
 842	pmdp_clear_flush_notify(vma, haddr, pmd);
 843	/* leave pmd empty until pte is filled */
 
 
 
 
 
 
 
 844
 845	pgtable = get_pmd_huge_pte(mm);
 846	pmd_populate(mm, &_pmd, pgtable);
 847
 848	for (i = 0; i < HPAGE_PMD_NR; i++, haddr += PAGE_SIZE) {
 849		pte_t *pte, entry;
 850		entry = mk_pte(pages[i], vma->vm_page_prot);
 851		entry = maybe_mkwrite(pte_mkdirty(entry), vma);
 852		page_add_new_anon_rmap(pages[i], vma, haddr);
 853		pte = pte_offset_map(&_pmd, haddr);
 854		VM_BUG_ON(!pte_none(*pte));
 855		set_pte_at(mm, haddr, pte, entry);
 856		pte_unmap(pte);
 
 
 
 
 857	}
 858	kfree(pages);
 859
 860	mm->nr_ptes++;
 861	smp_wmb(); /* make pte visible before pmd */
 862	pmd_populate(mm, pmd, pgtable);
 863	page_remove_rmap(page);
 864	spin_unlock(&mm->page_table_lock);
 
 
 
 
 
 
 865
 866	ret |= VM_FAULT_WRITE;
 867	put_page(page);
 868
 869out:
 870	return ret;
 871
 872out_free_pages:
 873	spin_unlock(&mm->page_table_lock);
 874	mem_cgroup_uncharge_start();
 875	for (i = 0; i < HPAGE_PMD_NR; i++) {
 876		mem_cgroup_uncharge_page(pages[i]);
 
 
 877		put_page(pages[i]);
 878	}
 879	mem_cgroup_uncharge_end();
 880	kfree(pages);
 881	goto out;
 882}
 883
 884int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
 885			unsigned long address, pmd_t *pmd, pmd_t orig_pmd)
 886{
 887	int ret = 0;
 888	struct page *page, *new_page;
 889	unsigned long haddr;
 890
 891	VM_BUG_ON(!vma->anon_vma);
 892	spin_lock(&mm->page_table_lock);
 893	if (unlikely(!pmd_same(*pmd, orig_pmd)))
 
 
 
 
 
 
 
 894		goto out_unlock;
 895
 896	page = pmd_page(orig_pmd);
 897	VM_BUG_ON(!PageCompound(page) || !PageHead(page));
 898	haddr = address & HPAGE_PMD_MASK;
 899	if (page_mapcount(page) == 1) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 900		pmd_t entry;
 901		entry = pmd_mkyoung(orig_pmd);
 902		entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma);
 903		if (pmdp_set_access_flags(vma, haddr, pmd, entry,  1))
 904			update_mmu_cache(vma, address, entry);
 905		ret |= VM_FAULT_WRITE;
 
 906		goto out_unlock;
 907	}
 
 908	get_page(page);
 909	spin_unlock(&mm->page_table_lock);
 910
 911	if (transparent_hugepage_enabled(vma) &&
 912	    !transparent_hugepage_debug_cow())
 913		new_page = alloc_hugepage_vma(transparent_hugepage_defrag(vma),
 914					      vma, haddr, numa_node_id(), 0);
 915	else
 916		new_page = NULL;
 917
 918	if (unlikely(!new_page)) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 919		count_vm_event(THP_FAULT_FALLBACK);
 920		ret = do_huge_pmd_wp_page_fallback(mm, vma, address,
 921						   pmd, orig_pmd, page, haddr);
 922		put_page(page);
 923		goto out;
 924	}
 925	count_vm_event(THP_FAULT_ALLOC);
 926
 927	if (unlikely(mem_cgroup_newpage_charge(new_page, mm, GFP_KERNEL))) {
 
 928		put_page(new_page);
 929		put_page(page);
 930		ret |= VM_FAULT_OOM;
 
 
 
 931		goto out;
 932	}
 933
 934	copy_user_huge_page(new_page, page, haddr, vma, HPAGE_PMD_NR);
 
 
 
 
 
 
 
 935	__SetPageUptodate(new_page);
 936
 937	spin_lock(&mm->page_table_lock);
 938	put_page(page);
 939	if (unlikely(!pmd_same(*pmd, orig_pmd))) {
 940		mem_cgroup_uncharge_page(new_page);
 
 
 
 
 
 
 941		put_page(new_page);
 
 942	} else {
 943		pmd_t entry;
 944		VM_BUG_ON(!PageHead(page));
 945		entry = mk_pmd(new_page, vma->vm_page_prot);
 946		entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma);
 947		entry = pmd_mkhuge(entry);
 948		pmdp_clear_flush_notify(vma, haddr, pmd);
 949		page_add_new_anon_rmap(new_page, vma, haddr);
 950		set_pmd_at(mm, haddr, pmd, entry);
 951		update_mmu_cache(vma, address, entry);
 952		page_remove_rmap(page);
 953		put_page(page);
 
 
 
 
 
 
 954		ret |= VM_FAULT_WRITE;
 955	}
 956out_unlock:
 957	spin_unlock(&mm->page_table_lock);
 
 
 
 
 
 958out:
 959	return ret;
 
 
 
 
 
 
 
 
 
 
 
 
 
 960}
 961
 962struct page *follow_trans_huge_pmd(struct mm_struct *mm,
 963				   unsigned long addr,
 964				   pmd_t *pmd,
 965				   unsigned int flags)
 966{
 
 967	struct page *page = NULL;
 968
 969	assert_spin_locked(&mm->page_table_lock);
 970
 971	if (flags & FOLL_WRITE && !pmd_write(*pmd))
 
 
 
 
 
 
 
 
 972		goto out;
 973
 974	page = pmd_page(*pmd);
 975	VM_BUG_ON(!PageHead(page));
 976	if (flags & FOLL_TOUCH) {
 977		pmd_t _pmd;
 
 978		/*
 979		 * We should set the dirty bit only for FOLL_WRITE but
 980		 * for now the dirty bit in the pmd is meaningless.
 981		 * And if the dirty bit will become meaningful and
 982		 * we'll only set it with FOLL_WRITE, an atomic
 983		 * set_bit will be required on the pmd to set the
 984		 * young bit, instead of the current set_pmd_at.
 
 
 
 
 
 
 
 
 
 
 
 
 985		 */
 986		_pmd = pmd_mkyoung(pmd_mkdirty(*pmd));
 987		set_pmd_at(mm, addr & HPAGE_PMD_MASK, pmd, _pmd);
 
 
 
 
 
 
 
 
 
 988	}
 
 989	page += (addr & ~HPAGE_PMD_MASK) >> PAGE_SHIFT;
 990	VM_BUG_ON(!PageCompound(page));
 991	if (flags & FOLL_GET)
 992		get_page(page);
 993
 994out:
 995	return page;
 996}
 997
 998int zap_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
 999		 pmd_t *pmd)
1000{
1001	int ret = 0;
1002
1003	spin_lock(&tlb->mm->page_table_lock);
1004	if (likely(pmd_trans_huge(*pmd))) {
1005		if (unlikely(pmd_trans_splitting(*pmd))) {
1006			spin_unlock(&tlb->mm->page_table_lock);
1007			wait_split_huge_page(vma->anon_vma,
1008					     pmd);
1009		} else {
1010			struct page *page;
1011			pgtable_t pgtable;
1012			pgtable = get_pmd_huge_pte(tlb->mm);
1013			page = pmd_page(*pmd);
1014			pmd_clear(pmd);
1015			page_remove_rmap(page);
1016			VM_BUG_ON(page_mapcount(page) < 0);
1017			add_mm_counter(tlb->mm, MM_ANONPAGES, -HPAGE_PMD_NR);
1018			VM_BUG_ON(!PageHead(page));
1019			spin_unlock(&tlb->mm->page_table_lock);
1020			tlb_remove_page(tlb, page);
1021			pte_free(tlb->mm, pgtable);
1022			ret = 1;
1023		}
1024	} else
1025		spin_unlock(&tlb->mm->page_table_lock);
1026
1027	return ret;
1028}
1029
1030int mincore_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
1031		unsigned long addr, unsigned long end,
1032		unsigned char *vec)
1033{
1034	int ret = 0;
1035
1036	spin_lock(&vma->vm_mm->page_table_lock);
1037	if (likely(pmd_trans_huge(*pmd))) {
1038		ret = !pmd_trans_splitting(*pmd);
1039		spin_unlock(&vma->vm_mm->page_table_lock);
1040		if (unlikely(!ret))
1041			wait_split_huge_page(vma->anon_vma, pmd);
1042		else {
1043			/*
1044			 * All logical pages in the range are present
1045			 * if backed by a huge page.
1046			 */
1047			memset(vec, 1, (end - addr) >> PAGE_SHIFT);
1048		}
1049	} else
1050		spin_unlock(&vma->vm_mm->page_table_lock);
1051
1052	return ret;
1053}
1054
1055int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
1056		unsigned long addr, pgprot_t newprot)
1057{
1058	struct mm_struct *mm = vma->vm_mm;
1059	int ret = 0;
1060
1061	spin_lock(&mm->page_table_lock);
1062	if (likely(pmd_trans_huge(*pmd))) {
1063		if (unlikely(pmd_trans_splitting(*pmd))) {
1064			spin_unlock(&mm->page_table_lock);
1065			wait_split_huge_page(vma->anon_vma, pmd);
1066		} else {
1067			pmd_t entry;
1068
1069			entry = pmdp_get_and_clear(mm, addr, pmd);
1070			entry = pmd_modify(entry, newprot);
1071			set_pmd_at(mm, addr, pmd, entry);
1072			spin_unlock(&vma->vm_mm->page_table_lock);
1073			flush_tlb_range(vma, addr, addr + HPAGE_PMD_SIZE);
1074			ret = 1;
1075		}
1076	} else
1077		spin_unlock(&vma->vm_mm->page_table_lock);
1078
1079	return ret;
1080}
 
 
 
 
 
 
 
 
 
 
 
1081
1082pmd_t *page_check_address_pmd(struct page *page,
1083			      struct mm_struct *mm,
1084			      unsigned long address,
1085			      enum page_check_address_pmd_flag flag)
1086{
1087	pgd_t *pgd;
1088	pud_t *pud;
1089	pmd_t *pmd, *ret = NULL;
 
1090
1091	if (address & ~HPAGE_PMD_MASK)
1092		goto out;
 
1093
1094	pgd = pgd_offset(mm, address);
1095	if (!pgd_present(*pgd))
1096		goto out;
 
 
 
 
 
 
 
 
1097
1098	pud = pud_offset(pgd, address);
1099	if (!pud_present(*pud))
 
 
 
 
 
1100		goto out;
 
1101
1102	pmd = pmd_offset(pud, address);
1103	if (pmd_none(*pmd))
1104		goto out;
1105	if (pmd_page(*pmd) != page)
1106		goto out;
1107	/*
1108	 * split_vma() may create temporary aliased mappings. There is
1109	 * no risk as long as all huge pmd are found and have their
1110	 * splitting bit set before __split_huge_page_refcount
1111	 * runs. Finding the same huge pmd more than once during the
1112	 * same rmap walk is not a problem.
1113	 */
1114	if (flag == PAGE_CHECK_ADDRESS_PMD_NOTSPLITTING_FLAG &&
1115	    pmd_trans_splitting(*pmd))
1116		goto out;
1117	if (pmd_trans_huge(*pmd)) {
1118		VM_BUG_ON(flag == PAGE_CHECK_ADDRESS_PMD_SPLITTING_FLAG &&
1119			  !pmd_trans_splitting(*pmd));
1120		ret = pmd;
 
 
 
 
1121	}
1122out:
1123	return ret;
1124}
1125
1126static int __split_huge_page_splitting(struct page *page,
1127				       struct vm_area_struct *vma,
1128				       unsigned long address)
1129{
1130	struct mm_struct *mm = vma->vm_mm;
1131	pmd_t *pmd;
1132	int ret = 0;
1133
1134	spin_lock(&mm->page_table_lock);
1135	pmd = page_check_address_pmd(page, mm, address,
1136				     PAGE_CHECK_ADDRESS_PMD_NOTSPLITTING_FLAG);
1137	if (pmd) {
 
 
 
 
 
 
 
 
 
1138		/*
1139		 * We can't temporarily set the pmd to null in order
1140		 * to split it, the pmd must remain marked huge at all
1141		 * times or the VM won't take the pmd_trans_huge paths
1142		 * and it won't wait on the anon_vma->root->mutex to
1143		 * serialize against split_huge_page*.
 
 
1144		 */
1145		pmdp_splitting_flush_notify(vma, address, pmd);
1146		ret = 1;
1147	}
1148	spin_unlock(&mm->page_table_lock);
1149
1150	return ret;
1151}
1152
1153static void __split_huge_page_refcount(struct page *page)
1154{
1155	int i;
1156	unsigned long head_index = page->index;
1157	struct zone *zone = page_zone(page);
1158	int zonestat;
1159
1160	/* prevent PageLRU to go away from under us, and freeze lru stats */
1161	spin_lock_irq(&zone->lru_lock);
1162	compound_lock(page);
1163
1164	for (i = 1; i < HPAGE_PMD_NR; i++) {
1165		struct page *page_tail = page + i;
1166
1167		/* tail_page->_count cannot change */
1168		atomic_sub(atomic_read(&page_tail->_count), &page->_count);
1169		BUG_ON(page_count(page) <= 0);
1170		atomic_add(page_mapcount(page) + 1, &page_tail->_count);
1171		BUG_ON(atomic_read(&page_tail->_count) <= 0);
 
 
1172
1173		/* after clearing PageTail the gup refcount can be released */
1174		smp_mb();
 
 
 
 
 
 
 
 
 
 
 
1175
1176		/*
1177		 * retain hwpoison flag of the poisoned tail page:
1178		 *   fix for the unsuitable process killed on Guest Machine(KVM)
1179		 *   by the memory-failure.
1180		 */
1181		page_tail->flags &= ~PAGE_FLAGS_CHECK_AT_PREP | __PG_HWPOISON;
1182		page_tail->flags |= (page->flags &
1183				     ((1L << PG_referenced) |
1184				      (1L << PG_swapbacked) |
1185				      (1L << PG_mlocked) |
1186				      (1L << PG_uptodate)));
1187		page_tail->flags |= (1L << PG_dirty);
1188
1189		/*
1190		 * 1) clear PageTail before overwriting first_page
1191		 * 2) clear PageTail before clearing PageHead for VM_BUG_ON
1192		 */
1193		smp_wmb();
1194
1195		/*
1196		 * __split_huge_page_splitting() already set the
1197		 * splitting bit in all pmd that could map this
1198		 * hugepage, that will ensure no CPU can alter the
1199		 * mapcount on the head page. The mapcount is only
1200		 * accounted in the head page and it has to be
1201		 * transferred to all tail pages in the below code. So
1202		 * for this code to be safe, the split the mapcount
1203		 * can't change. But that doesn't mean userland can't
1204		 * keep changing and reading the page contents while
1205		 * we transfer the mapcount, so the pmd splitting
1206		 * status is achieved setting a reserved bit in the
1207		 * pmd, not by clearing the present bit.
1208		*/
1209		BUG_ON(page_mapcount(page_tail));
1210		page_tail->_mapcount = page->_mapcount;
1211
1212		BUG_ON(page_tail->mapping);
1213		page_tail->mapping = page->mapping;
 
 
 
 
 
 
 
 
 
 
1214
1215		page_tail->index = ++head_index;
1216
1217		BUG_ON(!PageAnon(page_tail));
1218		BUG_ON(!PageUptodate(page_tail));
1219		BUG_ON(!PageDirty(page_tail));
1220		BUG_ON(!PageSwapBacked(page_tail));
1221
1222		mem_cgroup_split_huge_fixup(page, page_tail);
 
 
1223
1224		lru_add_page_tail(zone, page, page_tail);
 
 
 
1225	}
1226
1227	__dec_zone_page_state(page, NR_ANON_TRANSPARENT_HUGEPAGES);
1228	__mod_zone_page_state(zone, NR_ANON_PAGES, HPAGE_PMD_NR);
1229
1230	/*
1231	 * A hugepage counts for HPAGE_PMD_NR pages on the LRU statistics,
1232	 * so adjust those appropriately if this page is on the LRU.
1233	 */
1234	if (PageLRU(page)) {
1235		zonestat = NR_LRU_BASE + page_lru(page);
1236		__mod_zone_page_state(zone, zonestat, -(HPAGE_PMD_NR-1));
1237	}
1238
1239	ClearPageCompound(page);
1240	compound_unlock(page);
1241	spin_unlock_irq(&zone->lru_lock);
1242
1243	for (i = 1; i < HPAGE_PMD_NR; i++) {
1244		struct page *page_tail = page + i;
1245		BUG_ON(page_count(page_tail) <= 0);
1246		/*
1247		 * Tail pages may be freed if there wasn't any mapping
1248		 * like if add_to_swap() is running on a lru page that
1249		 * had its mapping zapped. And freeing these pages
1250		 * requires taking the lru_lock so we do the put_page
1251		 * of the tail pages after the split is complete.
1252		 */
1253		put_page(page_tail);
1254	}
1255
1256	/*
1257	 * Only the head page (now become a regular page) is required
1258	 * to be pinned by the caller.
1259	 */
1260	BUG_ON(page_count(page) <= 0);
1261}
 
 
 
 
 
 
1262
1263static int __split_huge_page_map(struct page *page,
1264				 struct vm_area_struct *vma,
1265				 unsigned long address)
1266{
1267	struct mm_struct *mm = vma->vm_mm;
1268	pmd_t *pmd, _pmd;
1269	int ret = 0, i;
1270	pgtable_t pgtable;
1271	unsigned long haddr;
1272
1273	spin_lock(&mm->page_table_lock);
1274	pmd = page_check_address_pmd(page, mm, address,
1275				     PAGE_CHECK_ADDRESS_PMD_SPLITTING_FLAG);
1276	if (pmd) {
1277		pgtable = get_pmd_huge_pte(mm);
1278		pmd_populate(mm, &_pmd, pgtable);
1279
1280		for (i = 0, haddr = address; i < HPAGE_PMD_NR;
1281		     i++, haddr += PAGE_SIZE) {
1282			pte_t *pte, entry;
1283			BUG_ON(PageCompound(page+i));
1284			entry = mk_pte(page + i, vma->vm_page_prot);
1285			entry = maybe_mkwrite(pte_mkdirty(entry), vma);
1286			if (!pmd_write(*pmd))
1287				entry = pte_wrprotect(entry);
1288			else
1289				BUG_ON(page_mapcount(page) != 1);
1290			if (!pmd_young(*pmd))
1291				entry = pte_mkold(entry);
1292			pte = pte_offset_map(&_pmd, haddr);
1293			BUG_ON(!pte_none(*pte));
1294			set_pte_at(mm, haddr, pte, entry);
1295			pte_unmap(pte);
1296		}
1297
1298		mm->nr_ptes++;
1299		smp_wmb(); /* make pte visible before pmd */
1300		/*
1301		 * Up to this point the pmd is present and huge and
1302		 * userland has the whole access to the hugepage
1303		 * during the split (which happens in place). If we
1304		 * overwrite the pmd with the not-huge version
1305		 * pointing to the pte here (which of course we could
1306		 * if all CPUs were bug free), userland could trigger
1307		 * a small page size TLB miss on the small sized TLB
1308		 * while the hugepage TLB entry is still established
1309		 * in the huge TLB. Some CPU doesn't like that. See
1310		 * http://support.amd.com/us/Processor_TechDocs/41322.pdf,
1311		 * Erratum 383 on page 93. Intel should be safe but is
1312		 * also warns that it's only safe if the permission
1313		 * and cache attributes of the two entries loaded in
1314		 * the two TLB is identical (which should be the case
1315		 * here). But it is generally safer to never allow
1316		 * small and huge TLB entries for the same virtual
1317		 * address to be loaded simultaneously. So instead of
1318		 * doing "pmd_populate(); flush_tlb_range();" we first
1319		 * mark the current pmd notpresent (atomically because
1320		 * here the pmd_trans_huge and pmd_trans_splitting
1321		 * must remain set at all times on the pmd until the
1322		 * split is complete for this pmd), then we flush the
1323		 * SMP TLB and finally we write the non-huge version
1324		 * of the pmd entry with pmd_populate.
1325		 */
1326		set_pmd_at(mm, address, pmd, pmd_mknotpresent(*pmd));
1327		flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE);
1328		pmd_populate(mm, pmd, pgtable);
1329		ret = 1;
1330	}
1331	spin_unlock(&mm->page_table_lock);
1332
 
 
 
 
 
1333	return ret;
1334}
1335
1336/* must be called with anon_vma->root->mutex hold */
1337static void __split_huge_page(struct page *page,
1338			      struct anon_vma *anon_vma)
1339{
1340	int mapcount, mapcount2;
1341	struct anon_vma_chain *avc;
1342
1343	BUG_ON(!PageHead(page));
1344	BUG_ON(PageTail(page));
1345
1346	mapcount = 0;
1347	list_for_each_entry(avc, &anon_vma->head, same_anon_vma) {
1348		struct vm_area_struct *vma = avc->vma;
1349		unsigned long addr = vma_address(page, vma);
1350		BUG_ON(is_vma_temporary_stack(vma));
1351		if (addr == -EFAULT)
1352			continue;
1353		mapcount += __split_huge_page_splitting(page, vma, addr);
1354	}
1355	/*
1356	 * It is critical that new vmas are added to the tail of the
1357	 * anon_vma list. This guarantes that if copy_huge_pmd() runs
1358	 * and establishes a child pmd before
1359	 * __split_huge_page_splitting() freezes the parent pmd (so if
1360	 * we fail to prevent copy_huge_pmd() from running until the
1361	 * whole __split_huge_page() is complete), we will still see
1362	 * the newly established pmd of the child later during the
1363	 * walk, to be able to set it as pmd_trans_splitting too.
1364	 */
1365	if (mapcount != page_mapcount(page))
1366		printk(KERN_ERR "mapcount %d page_mapcount %d\n",
1367		       mapcount, page_mapcount(page));
1368	BUG_ON(mapcount != page_mapcount(page));
1369
1370	__split_huge_page_refcount(page);
1371
1372	mapcount2 = 0;
1373	list_for_each_entry(avc, &anon_vma->head, same_anon_vma) {
1374		struct vm_area_struct *vma = avc->vma;
1375		unsigned long addr = vma_address(page, vma);
1376		BUG_ON(is_vma_temporary_stack(vma));
1377		if (addr == -EFAULT)
1378			continue;
1379		mapcount2 += __split_huge_page_map(page, vma, addr);
1380	}
1381	if (mapcount != mapcount2)
1382		printk(KERN_ERR "mapcount %d mapcount2 %d page_mapcount %d\n",
1383		       mapcount, mapcount2, page_mapcount(page));
1384	BUG_ON(mapcount != mapcount2);
1385}
1386
1387int split_huge_page(struct page *page)
 
1388{
1389	struct anon_vma *anon_vma;
1390	int ret = 1;
1391
1392	BUG_ON(!PageAnon(page));
1393	anon_vma = page_lock_anon_vma(page);
1394	if (!anon_vma)
1395		goto out;
1396	ret = 0;
1397	if (!PageCompound(page))
1398		goto out_unlock;
1399
1400	BUG_ON(!PageSwapBacked(page));
1401	__split_huge_page(page, anon_vma);
1402	count_vm_event(THP_SPLIT);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1403
1404	BUG_ON(PageCompound(page));
1405out_unlock:
1406	page_unlock_anon_vma(anon_vma);
1407out:
1408	return ret;
1409}
 
 
 
 
 
 
 
 
1410
1411#define VM_NO_THP (VM_SPECIAL|VM_INSERTPAGE|VM_MIXEDMAP|VM_SAO| \
1412		   VM_HUGETLB|VM_SHARED|VM_MAYSHARE)
 
 
 
 
 
 
1413
1414int hugepage_madvise(struct vm_area_struct *vma,
1415		     unsigned long *vm_flags, int advice)
1416{
1417	switch (advice) {
1418	case MADV_HUGEPAGE:
1419		/*
1420		 * Be somewhat over-protective like KSM for now!
1421		 */
1422		if (*vm_flags & (VM_HUGEPAGE | VM_NO_THP))
1423			return -EINVAL;
1424		*vm_flags &= ~VM_NOHUGEPAGE;
1425		*vm_flags |= VM_HUGEPAGE;
1426		/*
1427		 * If the vma become good for khugepaged to scan,
1428		 * register it here without waiting a page fault that
1429		 * may not happen any time soon.
1430		 */
1431		if (unlikely(khugepaged_enter_vma_merge(vma)))
1432			return -ENOMEM;
1433		break;
1434	case MADV_NOHUGEPAGE:
1435		/*
1436		 * Be somewhat over-protective like KSM for now!
1437		 */
1438		if (*vm_flags & (VM_NOHUGEPAGE | VM_NO_THP))
1439			return -EINVAL;
1440		*vm_flags &= ~VM_HUGEPAGE;
1441		*vm_flags |= VM_NOHUGEPAGE;
1442		/*
1443		 * Setting VM_NOHUGEPAGE will prevent khugepaged from scanning
1444		 * this vma even if we leave the mm registered in khugepaged if
1445		 * it got registered before VM_NOHUGEPAGE was set.
1446		 */
1447		break;
1448	}
1449
1450	return 0;
1451}
1452
1453static int __init khugepaged_slab_init(void)
 
 
 
1454{
1455	mm_slot_cache = kmem_cache_create("khugepaged_mm_slot",
1456					  sizeof(struct mm_slot),
1457					  __alignof__(struct mm_slot), 0, NULL);
1458	if (!mm_slot_cache)
1459		return -ENOMEM;
1460
1461	return 0;
1462}
 
1463
1464static void __init khugepaged_slab_free(void)
1465{
1466	kmem_cache_destroy(mm_slot_cache);
1467	mm_slot_cache = NULL;
 
 
 
 
 
1468}
1469
1470static inline struct mm_slot *alloc_mm_slot(void)
 
 
1471{
1472	if (!mm_slot_cache)	/* initialization failed */
1473		return NULL;
1474	return kmem_cache_zalloc(mm_slot_cache, GFP_KERNEL);
1475}
1476
1477static inline void free_mm_slot(struct mm_slot *mm_slot)
1478{
1479	kmem_cache_free(mm_slot_cache, mm_slot);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1480}
1481
1482static int __init mm_slots_hash_init(void)
 
 
 
 
 
 
 
1483{
1484	mm_slots_hash = kzalloc(MM_SLOTS_HASH_HEADS * sizeof(struct hlist_head),
1485				GFP_KERNEL);
1486	if (!mm_slots_hash)
1487		return -ENOMEM;
1488	return 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1489}
1490
1491#if 0
1492static void __init mm_slots_hash_free(void)
 
 
 
 
 
1493{
1494	kfree(mm_slots_hash);
1495	mm_slots_hash = NULL;
 
 
 
 
 
1496}
1497#endif
1498
1499static struct mm_slot *get_mm_slot(struct mm_struct *mm)
 
 
 
 
 
 
1500{
1501	struct mm_slot *mm_slot;
1502	struct hlist_head *bucket;
1503	struct hlist_node *node;
1504
1505	bucket = &mm_slots_hash[((unsigned long)mm / sizeof(struct mm_struct))
1506				% MM_SLOTS_HASH_HEADS];
1507	hlist_for_each_entry(mm_slot, node, bucket, hash) {
1508		if (mm == mm_slot->mm)
1509			return mm_slot;
1510	}
1511	return NULL;
1512}
1513
1514static void insert_to_mm_slots_hash(struct mm_struct *mm,
1515				    struct mm_slot *mm_slot)
 
1516{
1517	struct hlist_head *bucket;
1518
1519	bucket = &mm_slots_hash[((unsigned long)mm / sizeof(struct mm_struct))
1520				% MM_SLOTS_HASH_HEADS];
1521	mm_slot->mm = mm;
1522	hlist_add_head(&mm_slot->hash, bucket);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1523}
1524
1525static inline int khugepaged_test_exit(struct mm_struct *mm)
 
1526{
1527	return atomic_read(&mm->mm_users) == 0;
 
 
 
 
 
 
 
1528}
1529
1530int __khugepaged_enter(struct mm_struct *mm)
 
1531{
1532	struct mm_slot *mm_slot;
1533	int wakeup;
1534
1535	mm_slot = alloc_mm_slot();
1536	if (!mm_slot)
1537		return -ENOMEM;
1538
1539	/* __khugepaged_exit() must not run from under us */
1540	VM_BUG_ON(khugepaged_test_exit(mm));
1541	if (unlikely(test_and_set_bit(MMF_VM_HUGEPAGE, &mm->flags))) {
1542		free_mm_slot(mm_slot);
1543		return 0;
1544	}
 
 
1545
1546	spin_lock(&khugepaged_mm_lock);
1547	insert_to_mm_slots_hash(mm, mm_slot);
1548	/*
1549	 * Insert just behind the scanning cursor, to let the area settle
1550	 * down a little.
1551	 */
1552	wakeup = list_empty(&khugepaged_scan.mm_head);
1553	list_add_tail(&mm_slot->mm_node, &khugepaged_scan.mm_head);
1554	spin_unlock(&khugepaged_mm_lock);
1555
1556	atomic_inc(&mm->mm_count);
1557	if (wakeup)
1558		wake_up_interruptible(&khugepaged_wait);
1559
1560	return 0;
1561}
 
1562
1563int khugepaged_enter_vma_merge(struct vm_area_struct *vma)
 
1564{
1565	unsigned long hstart, hend;
1566	if (!vma->anon_vma)
1567		/*
1568		 * Not yet faulted in so we will register later in the
1569		 * page fault if needed.
1570		 */
1571		return 0;
1572	if (vma->vm_ops)
1573		/* khugepaged not yet working on file or special mappings */
1574		return 0;
1575	/*
1576	 * If is_pfn_mapping() is true is_learn_pfn_mapping() must be
1577	 * true too, verify it here.
 
 
 
 
1578	 */
1579	VM_BUG_ON(is_linear_pfn_mapping(vma) || vma->vm_flags & VM_NO_THP);
1580	hstart = (vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK;
1581	hend = vma->vm_end & HPAGE_PMD_MASK;
1582	if (hstart < hend)
1583		return khugepaged_enter(vma);
1584	return 0;
1585}
1586
1587void __khugepaged_exit(struct mm_struct *mm)
1588{
1589	struct mm_slot *mm_slot;
1590	int free = 0;
1591
1592	spin_lock(&khugepaged_mm_lock);
1593	mm_slot = get_mm_slot(mm);
1594	if (mm_slot && khugepaged_scan.mm_slot != mm_slot) {
1595		hlist_del(&mm_slot->hash);
1596		list_del(&mm_slot->mm_node);
1597		free = 1;
1598	}
1599	spin_unlock(&khugepaged_mm_lock);
1600
1601	if (free) {
1602		clear_bit(MMF_VM_HUGEPAGE, &mm->flags);
1603		free_mm_slot(mm_slot);
1604		mmdrop(mm);
1605	} else if (mm_slot) {
1606		/*
1607		 * This is required to serialize against
1608		 * khugepaged_test_exit() (which is guaranteed to run
1609		 * under mmap sem read mode). Stop here (after we
1610		 * return all pagetables will be destroyed) until
1611		 * khugepaged has finished working on the pagetables
1612		 * under the mmap_sem.
1613		 */
1614		down_write(&mm->mmap_sem);
1615		up_write(&mm->mmap_sem);
1616	}
 
 
1617}
1618
1619static void release_pte_page(struct page *page)
 
1620{
1621	/* 0 stands for page_is_file_cache(page) == false */
1622	dec_zone_page_state(page, NR_ISOLATED_ANON + 0);
1623	unlock_page(page);
1624	putback_lru_page(page);
1625}
 
 
1626
1627static void release_pte_pages(pte_t *pte, pte_t *_pte)
1628{
1629	while (--_pte >= pte) {
1630		pte_t pteval = *_pte;
1631		if (!pte_none(pteval))
1632			release_pte_page(pte_page(pteval));
1633	}
1634}
1635
1636static void release_all_pte_pages(pte_t *pte)
1637{
1638	release_pte_pages(pte, pte + HPAGE_PMD_NR);
1639}
1640
1641static int __collapse_huge_page_isolate(struct vm_area_struct *vma,
1642					unsigned long address,
1643					pte_t *pte)
1644{
1645	struct page *page;
1646	pte_t *_pte;
1647	int referenced = 0, isolated = 0, none = 0;
1648	for (_pte = pte; _pte < pte+HPAGE_PMD_NR;
1649	     _pte++, address += PAGE_SIZE) {
1650		pte_t pteval = *_pte;
1651		if (pte_none(pteval)) {
1652			if (++none <= khugepaged_max_ptes_none)
1653				continue;
1654			else {
1655				release_pte_pages(pte, _pte);
1656				goto out;
1657			}
1658		}
1659		if (!pte_present(pteval) || !pte_write(pteval)) {
1660			release_pte_pages(pte, _pte);
1661			goto out;
1662		}
1663		page = vm_normal_page(vma, address, pteval);
1664		if (unlikely(!page)) {
1665			release_pte_pages(pte, _pte);
1666			goto out;
1667		}
1668		VM_BUG_ON(PageCompound(page));
1669		BUG_ON(!PageAnon(page));
1670		VM_BUG_ON(!PageSwapBacked(page));
1671
1672		/* cannot use mapcount: can't collapse if there's a gup pin */
1673		if (page_count(page) != 1) {
1674			release_pte_pages(pte, _pte);
1675			goto out;
1676		}
1677		/*
1678		 * We can do it before isolate_lru_page because the
1679		 * page can't be freed from under us. NOTE: PG_lock
1680		 * is needed to serialize against split_huge_page
1681		 * when invoked from the VM.
1682		 */
1683		if (!trylock_page(page)) {
1684			release_pte_pages(pte, _pte);
1685			goto out;
1686		}
 
 
 
 
 
 
 
 
 
 
1687		/*
1688		 * Isolate the page to avoid collapsing an hugepage
1689		 * currently in use by the VM.
 
 
 
 
 
1690		 */
1691		if (isolate_lru_page(page)) {
1692			unlock_page(page);
1693			release_pte_pages(pte, _pte);
1694			goto out;
1695		}
1696		/* 0 stands for page_is_file_cache(page) == false */
1697		inc_zone_page_state(page, NR_ISOLATED_ANON + 0);
1698		VM_BUG_ON(!PageLocked(page));
1699		VM_BUG_ON(PageLRU(page));
1700
1701		/* If there is no mapped pte young don't collapse the page */
1702		if (pte_young(pteval) || PageReferenced(page) ||
1703		    mmu_notifier_test_young(vma->vm_mm, address))
1704			referenced = 1;
1705	}
1706	if (unlikely(!referenced))
1707		release_all_pte_pages(pte);
1708	else
1709		isolated = 1;
1710out:
1711	return isolated;
1712}
1713
1714static void __collapse_huge_page_copy(pte_t *pte, struct page *page,
1715				      struct vm_area_struct *vma,
1716				      unsigned long address,
1717				      spinlock_t *ptl)
1718{
1719	pte_t *_pte;
1720	for (_pte = pte; _pte < pte+HPAGE_PMD_NR; _pte++) {
1721		pte_t pteval = *_pte;
1722		struct page *src_page;
1723
1724		if (pte_none(pteval)) {
1725			clear_user_highpage(page, address);
1726			add_mm_counter(vma->vm_mm, MM_ANONPAGES, 1);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1727		} else {
1728			src_page = pte_page(pteval);
1729			copy_user_highpage(page, src_page, address, vma);
1730			VM_BUG_ON(page_mapcount(src_page) != 1);
1731			VM_BUG_ON(page_count(src_page) != 2);
1732			release_pte_page(src_page);
1733			/*
1734			 * ptl mostly unnecessary, but preempt has to
1735			 * be disabled to update the per-cpu stats
1736			 * inside page_remove_rmap().
1737			 */
1738			spin_lock(ptl);
1739			/*
1740			 * paravirt calls inside pte_clear here are
1741			 * superfluous.
1742			 */
1743			pte_clear(vma->vm_mm, address, _pte);
1744			page_remove_rmap(src_page);
1745			spin_unlock(ptl);
1746			free_page_and_swap_cache(src_page);
1747		}
 
 
 
 
 
 
1748
1749		address += PAGE_SIZE;
1750		page++;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1751	}
1752}
1753
1754static void collapse_huge_page(struct mm_struct *mm,
1755			       unsigned long address,
1756			       struct page **hpage,
1757			       struct vm_area_struct *vma,
1758			       int node)
1759{
1760	pgd_t *pgd;
1761	pud_t *pud;
1762	pmd_t *pmd, _pmd;
1763	pte_t *pte;
1764	pgtable_t pgtable;
1765	struct page *new_page;
1766	spinlock_t *ptl;
1767	int isolated;
1768	unsigned long hstart, hend;
1769
1770	VM_BUG_ON(address & ~HPAGE_PMD_MASK);
1771#ifndef CONFIG_NUMA
1772	up_read(&mm->mmap_sem);
1773	VM_BUG_ON(!*hpage);
1774	new_page = *hpage;
1775#else
1776	VM_BUG_ON(*hpage);
1777	/*
1778	 * Allocate the page while the vma is still valid and under
1779	 * the mmap_sem read mode so there is no memory allocation
1780	 * later when we take the mmap_sem in write mode. This is more
1781	 * friendly behavior (OTOH it may actually hide bugs) to
1782	 * filesystems in userland with daemons allocating memory in
1783	 * the userland I/O paths.  Allocating memory with the
1784	 * mmap_sem in read mode is good idea also to allow greater
1785	 * scalability.
1786	 */
1787	new_page = alloc_hugepage_vma(khugepaged_defrag(), vma, address,
1788				      node, __GFP_OTHER_NODE);
1789
1790	/*
1791	 * After allocating the hugepage, release the mmap_sem read lock in
1792	 * preparation for taking it in write mode.
1793	 */
1794	up_read(&mm->mmap_sem);
1795	if (unlikely(!new_page)) {
1796		count_vm_event(THP_COLLAPSE_ALLOC_FAILED);
1797		*hpage = ERR_PTR(-ENOMEM);
1798		return;
1799	}
1800#endif
1801
1802	count_vm_event(THP_COLLAPSE_ALLOC);
1803	if (unlikely(mem_cgroup_newpage_charge(new_page, mm, GFP_KERNEL))) {
1804#ifdef CONFIG_NUMA
1805		put_page(new_page);
1806#endif
1807		return;
1808	}
1809
1810	/*
1811	 * Prevent all access to pagetables with the exception of
1812	 * gup_fast later hanlded by the ptep_clear_flush and the VM
1813	 * handled by the anon_vma lock + PG_lock.
1814	 */
1815	down_write(&mm->mmap_sem);
1816	if (unlikely(khugepaged_test_exit(mm)))
1817		goto out;
1818
1819	vma = find_vma(mm, address);
1820	hstart = (vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK;
1821	hend = vma->vm_end & HPAGE_PMD_MASK;
1822	if (address < hstart || address + HPAGE_PMD_SIZE > hend)
1823		goto out;
1824
1825	if ((!(vma->vm_flags & VM_HUGEPAGE) && !khugepaged_always()) ||
1826	    (vma->vm_flags & VM_NOHUGEPAGE))
1827		goto out;
1828
1829	if (!vma->anon_vma || vma->vm_ops)
1830		goto out;
1831	if (is_vma_temporary_stack(vma))
1832		goto out;
 
 
 
1833	/*
1834	 * If is_pfn_mapping() is true is_learn_pfn_mapping() must be
1835	 * true too, verify it here.
 
 
 
 
 
 
 
 
 
1836	 */
1837	VM_BUG_ON(is_linear_pfn_mapping(vma) || vma->vm_flags & VM_NO_THP);
 
1838
1839	pgd = pgd_offset(mm, address);
 
 
 
 
 
 
 
 
1840	if (!pgd_present(*pgd))
1841		goto out;
 
 
 
 
1842
1843	pud = pud_offset(pgd, address);
1844	if (!pud_present(*pud))
1845		goto out;
1846
1847	pmd = pmd_offset(pud, address);
1848	/* pmd can't go away or become huge under us */
1849	if (!pmd_present(*pmd) || pmd_trans_huge(*pmd))
1850		goto out;
1851
1852	anon_vma_lock(vma->anon_vma);
 
1853
1854	pte = pte_offset_map(pmd, address);
1855	ptl = pte_lockptr(mm, pmd);
 
 
 
 
 
 
 
 
 
 
 
 
1856
1857	spin_lock(&mm->page_table_lock); /* probably unnecessary */
1858	/*
1859	 * After this gup_fast can't run anymore. This also removes
1860	 * any huge TLB entry from the CPU so we won't allow
1861	 * huge and small TLB entries for the same virtual address
1862	 * to avoid the risk of CPU bugs in that area.
1863	 */
1864	_pmd = pmdp_clear_flush_notify(vma, address, pmd);
1865	spin_unlock(&mm->page_table_lock);
 
 
1866
1867	spin_lock(ptl);
1868	isolated = __collapse_huge_page_isolate(vma, address, pte);
1869	spin_unlock(ptl);
 
 
 
 
 
 
 
 
 
 
 
 
1870
1871	if (unlikely(!isolated)) {
1872		pte_unmap(pte);
1873		spin_lock(&mm->page_table_lock);
1874		BUG_ON(!pmd_none(*pmd));
1875		set_pmd_at(mm, address, pmd, _pmd);
1876		spin_unlock(&mm->page_table_lock);
1877		anon_vma_unlock(vma->anon_vma);
1878		goto out;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1879	}
 
 
 
 
 
 
 
 
1880
1881	/*
1882	 * All pages are isolated and locked so anon_vma rmap
1883	 * can't run anymore.
 
 
1884	 */
1885	anon_vma_unlock(vma->anon_vma);
 
 
 
 
 
 
 
 
 
 
 
1886
1887	__collapse_huge_page_copy(pte, new_page, vma, address, ptl);
1888	pte_unmap(pte);
1889	__SetPageUptodate(new_page);
1890	pgtable = pmd_pgtable(_pmd);
1891	VM_BUG_ON(page_count(pgtable) != 1);
1892	VM_BUG_ON(page_mapcount(pgtable) != 0);
1893
1894	_pmd = mk_pmd(new_page, vma->vm_page_prot);
1895	_pmd = maybe_pmd_mkwrite(pmd_mkdirty(_pmd), vma);
1896	_pmd = pmd_mkhuge(_pmd);
1897
1898	/*
1899	 * spin_lock() below is not the equivalent of smp_wmb(), so
1900	 * this is needed to avoid the copy_huge_page writes to become
1901	 * visible after the set_pmd_at() write.
 
1902	 */
1903	smp_wmb();
1904
1905	spin_lock(&mm->page_table_lock);
1906	BUG_ON(!pmd_none(*pmd));
1907	page_add_new_anon_rmap(new_page, vma, address);
1908	set_pmd_at(mm, address, pmd, _pmd);
1909	update_mmu_cache(vma, address, entry);
1910	prepare_pmd_huge_pte(pgtable, mm);
1911	mm->nr_ptes--;
1912	spin_unlock(&mm->page_table_lock);
1913
1914#ifndef CONFIG_NUMA
1915	*hpage = NULL;
1916#endif
1917	khugepaged_pages_collapsed++;
1918out_up_write:
1919	up_write(&mm->mmap_sem);
1920	return;
1921
1922out:
1923	mem_cgroup_uncharge_page(new_page);
1924#ifdef CONFIG_NUMA
1925	put_page(new_page);
1926#endif
1927	goto out_up_write;
 
 
1928}
1929
1930static int khugepaged_scan_pmd(struct mm_struct *mm,
1931			       struct vm_area_struct *vma,
1932			       unsigned long address,
1933			       struct page **hpage)
1934{
1935	pgd_t *pgd;
1936	pud_t *pud;
1937	pmd_t *pmd;
1938	pte_t *pte, *_pte;
1939	int ret = 0, referenced = 0, none = 0;
1940	struct page *page;
1941	unsigned long _address;
1942	spinlock_t *ptl;
1943	int node = -1;
1944
1945	VM_BUG_ON(address & ~HPAGE_PMD_MASK);
1946
1947	pgd = pgd_offset(mm, address);
1948	if (!pgd_present(*pgd))
1949		goto out;
1950
1951	pud = pud_offset(pgd, address);
1952	if (!pud_present(*pud))
1953		goto out;
1954
1955	pmd = pmd_offset(pud, address);
1956	if (!pmd_present(*pmd) || pmd_trans_huge(*pmd))
1957		goto out;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1958
1959	pte = pte_offset_map_lock(mm, pmd, address, &ptl);
1960	for (_address = address, _pte = pte; _pte < pte+HPAGE_PMD_NR;
1961	     _pte++, _address += PAGE_SIZE) {
1962		pte_t pteval = *_pte;
1963		if (pte_none(pteval)) {
1964			if (++none <= khugepaged_max_ptes_none)
1965				continue;
1966			else
1967				goto out_unmap;
 
 
 
1968		}
1969		if (!pte_present(pteval) || !pte_write(pteval))
1970			goto out_unmap;
1971		page = vm_normal_page(vma, _address, pteval);
1972		if (unlikely(!page))
1973			goto out_unmap;
 
 
 
 
 
 
 
 
 
 
 
1974		/*
1975		 * Chose the node of the first page. This could
1976		 * be more sophisticated and look at more pages,
1977		 * but isn't for now.
 
 
1978		 */
1979		if (node == -1)
1980			node = page_to_nid(page);
1981		VM_BUG_ON(PageCompound(page));
1982		if (!PageLRU(page) || PageLocked(page) || !PageAnon(page))
1983			goto out_unmap;
1984		/* cannot use mapcount: can't collapse if there's a gup pin */
1985		if (page_count(page) != 1)
1986			goto out_unmap;
1987		if (pte_young(pteval) || PageReferenced(page) ||
1988		    mmu_notifier_test_young(vma->vm_mm, address))
1989			referenced = 1;
1990	}
1991	if (referenced)
1992		ret = 1;
1993out_unmap:
1994	pte_unmap_unlock(pte, ptl);
1995	if (ret)
1996		/* collapse_huge_page will return with the mmap_sem released */
1997		collapse_huge_page(mm, address, hpage, vma, node);
1998out:
1999	return ret;
2000}
2001
2002static void collect_mm_slot(struct mm_slot *mm_slot)
2003{
2004	struct mm_struct *mm = mm_slot->mm;
2005
2006	VM_BUG_ON(!spin_is_locked(&khugepaged_mm_lock));
2007
2008	if (khugepaged_test_exit(mm)) {
2009		/* free mm_slot */
2010		hlist_del(&mm_slot->hash);
2011		list_del(&mm_slot->mm_node);
2012
2013		/*
2014		 * Not strictly needed because the mm exited already.
2015		 *
2016		 * clear_bit(MMF_VM_HUGEPAGE, &mm->flags);
2017		 */
2018
2019		/* khugepaged_mm_lock actually not necessary for the below */
2020		free_mm_slot(mm_slot);
2021		mmdrop(mm);
2022	}
 
 
2023}
2024
2025static unsigned int khugepaged_scan_mm_slot(unsigned int pages,
2026					    struct page **hpage)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2027{
2028	struct mm_slot *mm_slot;
2029	struct mm_struct *mm;
2030	struct vm_area_struct *vma;
2031	int progress = 0;
2032
2033	VM_BUG_ON(!pages);
2034	VM_BUG_ON(!spin_is_locked(&khugepaged_mm_lock));
2035
2036	if (khugepaged_scan.mm_slot)
2037		mm_slot = khugepaged_scan.mm_slot;
2038	else {
2039		mm_slot = list_entry(khugepaged_scan.mm_head.next,
2040				     struct mm_slot, mm_node);
2041		khugepaged_scan.address = 0;
2042		khugepaged_scan.mm_slot = mm_slot;
2043	}
2044	spin_unlock(&khugepaged_mm_lock);
2045
2046	mm = mm_slot->mm;
2047	down_read(&mm->mmap_sem);
2048	if (unlikely(khugepaged_test_exit(mm)))
2049		vma = NULL;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2050	else
2051		vma = find_vma(mm, khugepaged_scan.address);
 
 
 
 
2052
2053	progress++;
2054	for (; vma; vma = vma->vm_next) {
2055		unsigned long hstart, hend;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2056
2057		cond_resched();
2058		if (unlikely(khugepaged_test_exit(mm))) {
2059			progress++;
2060			break;
 
 
 
 
 
 
 
 
 
 
 
 
2061		}
 
 
 
 
 
2062
2063		if ((!(vma->vm_flags & VM_HUGEPAGE) &&
2064		     !khugepaged_always()) ||
2065		    (vma->vm_flags & VM_NOHUGEPAGE)) {
2066		skip:
2067			progress++;
2068			continue;
2069		}
2070		if (!vma->anon_vma || vma->vm_ops)
2071			goto skip;
2072		if (is_vma_temporary_stack(vma))
2073			goto skip;
2074		/*
2075		 * If is_pfn_mapping() is true is_learn_pfn_mapping()
2076		 * must be true too, verify it here.
 
 
 
2077		 */
2078		VM_BUG_ON(is_linear_pfn_mapping(vma) ||
2079			  vma->vm_flags & VM_NO_THP);
2080
2081		hstart = (vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK;
2082		hend = vma->vm_end & HPAGE_PMD_MASK;
2083		if (hstart >= hend)
2084			goto skip;
2085		if (khugepaged_scan.address > hend)
2086			goto skip;
2087		if (khugepaged_scan.address < hstart)
2088			khugepaged_scan.address = hstart;
2089		VM_BUG_ON(khugepaged_scan.address & ~HPAGE_PMD_MASK);
2090
2091		while (khugepaged_scan.address < hend) {
2092			int ret;
2093			cond_resched();
2094			if (unlikely(khugepaged_test_exit(mm)))
2095				goto breakouterloop;
2096
2097			VM_BUG_ON(khugepaged_scan.address < hstart ||
2098				  khugepaged_scan.address + HPAGE_PMD_SIZE >
2099				  hend);
2100			ret = khugepaged_scan_pmd(mm, vma,
2101						  khugepaged_scan.address,
2102						  hpage);
2103			/* move to next address */
2104			khugepaged_scan.address += HPAGE_PMD_SIZE;
2105			progress += HPAGE_PMD_NR;
2106			if (ret)
2107				/* we released mmap_sem so break loop */
2108				goto breakouterloop_mmap_sem;
2109			if (progress >= pages)
2110				goto breakouterloop;
2111		}
2112	}
2113breakouterloop:
2114	up_read(&mm->mmap_sem); /* exit_mmap will destroy ptes after this */
2115breakouterloop_mmap_sem:
2116
2117	spin_lock(&khugepaged_mm_lock);
2118	VM_BUG_ON(khugepaged_scan.mm_slot != mm_slot);
2119	/*
2120	 * Release the current mm_slot if this mm is about to die, or
2121	 * if we scanned all vmas of this mm.
2122	 */
2123	if (khugepaged_test_exit(mm) || !vma) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2124		/*
2125		 * Make sure that if mm_users is reaching zero while
2126		 * khugepaged runs here, khugepaged_exit will find
2127		 * mm_slot not pointing to the exiting mm.
2128		 */
2129		if (mm_slot->mm_node.next != &khugepaged_scan.mm_head) {
2130			khugepaged_scan.mm_slot = list_entry(
2131				mm_slot->mm_node.next,
2132				struct mm_slot, mm_node);
2133			khugepaged_scan.address = 0;
2134		} else {
2135			khugepaged_scan.mm_slot = NULL;
2136			khugepaged_full_scans++;
 
 
 
 
 
 
 
 
 
 
 
2137		}
2138
2139		collect_mm_slot(mm_slot);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2140	}
2141
2142	return progress;
 
 
 
 
 
 
 
 
 
2143}
2144
2145static int khugepaged_has_work(void)
2146{
2147	return !list_empty(&khugepaged_scan.mm_head) &&
2148		khugepaged_enabled();
2149}
2150
2151static int khugepaged_wait_event(void)
2152{
2153	return !list_empty(&khugepaged_scan.mm_head) ||
2154		!khugepaged_enabled();
 
 
 
2155}
2156
2157static void khugepaged_do_scan(struct page **hpage)
2158{
2159	unsigned int progress = 0, pass_through_head = 0;
2160	unsigned int pages = khugepaged_pages_to_scan;
 
 
 
2161
2162	barrier(); /* write khugepaged_pages_to_scan to local stack */
2163
2164	while (progress < pages) {
2165		cond_resched();
 
 
 
 
 
 
 
 
 
 
2166
2167#ifndef CONFIG_NUMA
2168		if (!*hpage) {
2169			*hpage = alloc_hugepage(khugepaged_defrag());
2170			if (unlikely(!*hpage)) {
2171				count_vm_event(THP_COLLAPSE_ALLOC_FAILED);
2172				break;
2173			}
2174			count_vm_event(THP_COLLAPSE_ALLOC);
2175		}
2176#else
2177		if (IS_ERR(*hpage))
2178			break;
2179#endif
2180
2181		if (unlikely(kthread_should_stop() || freezing(current)))
2182			break;
2183
2184		spin_lock(&khugepaged_mm_lock);
2185		if (!khugepaged_scan.mm_slot)
2186			pass_through_head++;
2187		if (khugepaged_has_work() &&
2188		    pass_through_head < 2)
2189			progress += khugepaged_scan_mm_slot(pages - progress,
2190							    hpage);
2191		else
2192			progress = pages;
2193		spin_unlock(&khugepaged_mm_lock);
2194	}
 
2195}
2196
2197static void khugepaged_alloc_sleep(void)
2198{
2199	DEFINE_WAIT(wait);
2200	add_wait_queue(&khugepaged_wait, &wait);
2201	schedule_timeout_interruptible(
2202		msecs_to_jiffies(
2203			khugepaged_alloc_sleep_millisecs));
2204	remove_wait_queue(&khugepaged_wait, &wait);
2205}
2206
2207#ifndef CONFIG_NUMA
2208static struct page *khugepaged_alloc_hugepage(void)
2209{
2210	struct page *hpage;
2211
2212	do {
2213		hpage = alloc_hugepage(khugepaged_defrag());
2214		if (!hpage) {
2215			count_vm_event(THP_COLLAPSE_ALLOC_FAILED);
2216			khugepaged_alloc_sleep();
2217		} else
2218			count_vm_event(THP_COLLAPSE_ALLOC);
2219	} while (unlikely(!hpage) &&
2220		 likely(khugepaged_enabled()));
2221	return hpage;
2222}
2223#endif
2224
2225static void khugepaged_loop(void)
2226{
2227	struct page *hpage;
 
2228
2229#ifdef CONFIG_NUMA
2230	hpage = NULL;
 
2231#endif
2232	while (likely(khugepaged_enabled())) {
2233#ifndef CONFIG_NUMA
2234		hpage = khugepaged_alloc_hugepage();
2235		if (unlikely(!hpage))
2236			break;
2237#else
2238		if (IS_ERR(hpage)) {
2239			khugepaged_alloc_sleep();
2240			hpage = NULL;
2241		}
2242#endif
2243
2244		khugepaged_do_scan(&hpage);
2245#ifndef CONFIG_NUMA
2246		if (hpage)
2247			put_page(hpage);
2248#endif
2249		try_to_freeze();
2250		if (unlikely(kthread_should_stop()))
2251			break;
2252		if (khugepaged_has_work()) {
2253			DEFINE_WAIT(wait);
2254			if (!khugepaged_scan_sleep_millisecs)
2255				continue;
2256			add_wait_queue(&khugepaged_wait, &wait);
2257			schedule_timeout_interruptible(
2258				msecs_to_jiffies(
2259					khugepaged_scan_sleep_millisecs));
2260			remove_wait_queue(&khugepaged_wait, &wait);
2261		} else if (khugepaged_enabled())
2262			wait_event_freezable(khugepaged_wait,
2263					     khugepaged_wait_event());
2264	}
2265}
2266
2267static int khugepaged(void *none)
 
2268{
2269	struct mm_slot *mm_slot;
2270
2271	set_freezable();
2272	set_user_nice(current, 19);
2273
2274	/* serialize with start_khugepaged() */
2275	mutex_lock(&khugepaged_mutex);
2276
2277	for (;;) {
2278		mutex_unlock(&khugepaged_mutex);
2279		VM_BUG_ON(khugepaged_thread != current);
2280		khugepaged_loop();
2281		VM_BUG_ON(khugepaged_thread != current);
2282
2283		mutex_lock(&khugepaged_mutex);
2284		if (!khugepaged_enabled())
2285			break;
2286		if (unlikely(kthread_should_stop()))
 
 
 
 
 
 
 
 
 
2287			break;
2288	}
 
2289
2290	spin_lock(&khugepaged_mm_lock);
2291	mm_slot = khugepaged_scan.mm_slot;
2292	khugepaged_scan.mm_slot = NULL;
2293	if (mm_slot)
2294		collect_mm_slot(mm_slot);
2295	spin_unlock(&khugepaged_mm_lock);
 
 
 
 
 
2296
2297	khugepaged_thread = NULL;
2298	mutex_unlock(&khugepaged_mutex);
 
2299
2300	return 0;
 
 
 
 
 
 
2301}
2302
2303void __split_huge_page_pmd(struct mm_struct *mm, pmd_t *pmd)
 
 
 
 
 
 
 
 
 
2304{
 
2305	struct page *page;
 
 
2306
2307	spin_lock(&mm->page_table_lock);
2308	if (unlikely(!pmd_trans_huge(*pmd))) {
2309		spin_unlock(&mm->page_table_lock);
2310		return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2311	}
2312	page = pmd_page(*pmd);
2313	VM_BUG_ON(!page_count(page));
2314	get_page(page);
2315	spin_unlock(&mm->page_table_lock);
2316
2317	split_huge_page(page);
2318
2319	put_page(page);
2320	BUG_ON(pmd_trans_huge(*pmd));
2321}
 
 
2322
2323static void split_huge_page_address(struct mm_struct *mm,
2324				    unsigned long address)
2325{
2326	pgd_t *pgd;
2327	pud_t *pud;
2328	pmd_t *pmd;
 
 
 
2329
2330	VM_BUG_ON(!(address & ~HPAGE_PMD_MASK));
 
 
 
 
 
 
 
 
 
2331
2332	pgd = pgd_offset(mm, address);
2333	if (!pgd_present(*pgd))
2334		return;
2335
2336	pud = pud_offset(pgd, address);
2337	if (!pud_present(*pud))
2338		return;
2339
2340	pmd = pmd_offset(pud, address);
2341	if (!pmd_present(*pmd))
2342		return;
2343	/*
2344	 * Caller holds the mmap_sem write mode, so a huge pmd cannot
2345	 * materialize from under us.
2346	 */
2347	split_huge_page_pmd(mm, pmd);
2348}
2349
2350void __vma_adjust_trans_huge(struct vm_area_struct *vma,
2351			     unsigned long start,
2352			     unsigned long end,
2353			     long adjust_next)
2354{
2355	/*
2356	 * If the new start address isn't hpage aligned and it could
2357	 * previously contain an hugepage: check if we need to split
2358	 * an huge pmd.
2359	 */
2360	if (start & ~HPAGE_PMD_MASK &&
2361	    (start & HPAGE_PMD_MASK) >= vma->vm_start &&
2362	    (start & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE <= vma->vm_end)
2363		split_huge_page_address(vma->vm_mm, start);
2364
2365	/*
2366	 * If the new end address isn't hpage aligned and it could
2367	 * previously contain an hugepage: check if we need to split
2368	 * an huge pmd.
2369	 */
2370	if (end & ~HPAGE_PMD_MASK &&
2371	    (end & HPAGE_PMD_MASK) >= vma->vm_start &&
2372	    (end & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE <= vma->vm_end)
2373		split_huge_page_address(vma->vm_mm, end);
2374
2375	/*
2376	 * If we're also updating the vma->vm_next->vm_start, if the new
2377	 * vm_next->vm_start isn't page aligned and it could previously
2378	 * contain an hugepage: check if we need to split an huge pmd.
2379	 */
2380	if (adjust_next > 0) {
2381		struct vm_area_struct *next = vma->vm_next;
2382		unsigned long nstart = next->vm_start;
2383		nstart += adjust_next << PAGE_SHIFT;
2384		if (nstart & ~HPAGE_PMD_MASK &&
2385		    (nstart & HPAGE_PMD_MASK) >= next->vm_start &&
2386		    (nstart & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE <= next->vm_end)
2387			split_huge_page_address(next->vm_mm, nstart);
2388	}
 
 
 
2389}
v5.4
   1// SPDX-License-Identifier: GPL-2.0-only
   2/*
   3 *  Copyright (C) 2009  Red Hat, Inc.
 
 
 
   4 */
   5
   6#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
   7
   8#include <linux/mm.h>
   9#include <linux/sched.h>
  10#include <linux/sched/coredump.h>
  11#include <linux/sched/numa_balancing.h>
  12#include <linux/highmem.h>
  13#include <linux/hugetlb.h>
  14#include <linux/mmu_notifier.h>
  15#include <linux/rmap.h>
  16#include <linux/swap.h>
  17#include <linux/shrinker.h>
  18#include <linux/mm_inline.h>
  19#include <linux/swapops.h>
  20#include <linux/dax.h>
  21#include <linux/khugepaged.h>
  22#include <linux/freezer.h>
  23#include <linux/pfn_t.h>
  24#include <linux/mman.h>
  25#include <linux/memremap.h>
  26#include <linux/pagemap.h>
  27#include <linux/debugfs.h>
  28#include <linux/migrate.h>
  29#include <linux/hashtable.h>
  30#include <linux/userfaultfd_k.h>
  31#include <linux/page_idle.h>
  32#include <linux/shmem_fs.h>
  33#include <linux/oom.h>
  34#include <linux/numa.h>
  35#include <linux/page_owner.h>
  36
  37#include <asm/tlb.h>
  38#include <asm/pgalloc.h>
  39#include "internal.h"
  40
  41/*
  42 * By default, transparent hugepage support is disabled in order to avoid
  43 * risking an increased memory footprint for applications that are not
  44 * guaranteed to benefit from it. When transparent hugepage support is
  45 * enabled, it is for all mappings, and khugepaged scans all mappings.
  46 * Defrag is invoked by khugepaged hugepage allocations and by page faults
  47 * for all hugepage allocations.
  48 */
  49unsigned long transparent_hugepage_flags __read_mostly =
  50#ifdef CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS
  51	(1<<TRANSPARENT_HUGEPAGE_FLAG)|
  52#endif
  53#ifdef CONFIG_TRANSPARENT_HUGEPAGE_MADVISE
  54	(1<<TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG)|
  55#endif
  56	(1<<TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG)|
  57	(1<<TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG)|
  58	(1<<TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG);
  59
  60static struct shrinker deferred_split_shrinker;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  61
  62static atomic_t huge_zero_refcount;
  63struct page *huge_zero_page __read_mostly;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  64
  65bool transparent_hugepage_enabled(struct vm_area_struct *vma)
  66{
  67	/* The addr is used to check if the vma size fits */
  68	unsigned long addr = (vma->vm_end & HPAGE_PMD_MASK) - HPAGE_PMD_SIZE;
 
 
 
 
 
 
 
 
 
 
 
  69
  70	if (!transhuge_vma_suitable(vma, addr))
  71		return false;
  72	if (vma_is_anonymous(vma))
  73		return __transparent_hugepage_enabled(vma);
  74	if (vma_is_shmem(vma))
  75		return shmem_huge_enabled(vma);
  76
  77	return false;
  78}
  79
  80static struct page *get_huge_zero_page(void)
  81{
  82	struct page *zero_page;
  83retry:
  84	if (likely(atomic_inc_not_zero(&huge_zero_refcount)))
  85		return READ_ONCE(huge_zero_page);
 
 
 
 
 
 
  86
  87	zero_page = alloc_pages((GFP_TRANSHUGE | __GFP_ZERO) & ~__GFP_MOVABLE,
  88			HPAGE_PMD_ORDER);
  89	if (!zero_page) {
  90		count_vm_event(THP_ZERO_PAGE_ALLOC_FAILED);
  91		return NULL;
  92	}
  93	count_vm_event(THP_ZERO_PAGE_ALLOC);
  94	preempt_disable();
  95	if (cmpxchg(&huge_zero_page, NULL, zero_page)) {
  96		preempt_enable();
  97		__free_pages(zero_page, compound_order(zero_page));
  98		goto retry;
  99	}
 100
 101	/* We take additional reference here. It will be put back by shrinker */
 102	atomic_set(&huge_zero_refcount, 2);
 103	preempt_enable();
 104	return READ_ONCE(huge_zero_page);
 105}
 106
 107static void put_huge_zero_page(void)
 108{
 109	/*
 110	 * Counter should never go to zero here. Only shrinker can put
 111	 * last reference.
 
 
 112	 */
 113	BUG_ON(atomic_dec_and_test(&huge_zero_refcount));
 114}
 115
 116struct page *mm_get_huge_zero_page(struct mm_struct *mm)
 117{
 118	if (test_bit(MMF_HUGE_ZERO_PAGE, &mm->flags))
 119		return READ_ONCE(huge_zero_page);
 120
 121	if (!get_huge_zero_page())
 122		return NULL;
 123
 124	if (test_and_set_bit(MMF_HUGE_ZERO_PAGE, &mm->flags))
 125		put_huge_zero_page();
 126
 127	return READ_ONCE(huge_zero_page);
 128}
 
 129
 130void mm_put_huge_zero_page(struct mm_struct *mm)
 131{
 132	if (test_bit(MMF_HUGE_ZERO_PAGE, &mm->flags))
 133		put_huge_zero_page();
 134}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 135
 136static unsigned long shrink_huge_zero_page_count(struct shrinker *shrink,
 137					struct shrink_control *sc)
 138{
 139	/* we can free zero page only if last reference remains */
 140	return atomic_read(&huge_zero_refcount) == 1 ? HPAGE_PMD_NR : 0;
 
 141}
 142
 143static unsigned long shrink_huge_zero_page_scan(struct shrinker *shrink,
 144				       struct shrink_control *sc)
 145{
 146	if (atomic_cmpxchg(&huge_zero_refcount, 1, 0) == 1) {
 147		struct page *zero_page = xchg(&huge_zero_page, NULL);
 148		BUG_ON(zero_page == NULL);
 149		__free_pages(zero_page, compound_order(zero_page));
 150		return HPAGE_PMD_NR;
 151	}
 152
 153	return 0;
 154}
 155
 156static struct shrinker huge_zero_page_shrinker = {
 157	.count_objects = shrink_huge_zero_page_count,
 158	.scan_objects = shrink_huge_zero_page_scan,
 159	.seeks = DEFAULT_SEEKS,
 160};
 161
 162#ifdef CONFIG_SYSFS
 163static ssize_t enabled_show(struct kobject *kobj,
 164			    struct kobj_attribute *attr, char *buf)
 165{
 166	if (test_bit(TRANSPARENT_HUGEPAGE_FLAG, &transparent_hugepage_flags))
 
 167		return sprintf(buf, "[always] madvise never\n");
 168	else if (test_bit(TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG, &transparent_hugepage_flags))
 169		return sprintf(buf, "always [madvise] never\n");
 170	else
 171		return sprintf(buf, "always madvise [never]\n");
 172}
 173
 174static ssize_t enabled_store(struct kobject *kobj,
 175			     struct kobj_attribute *attr,
 176			     const char *buf, size_t count)
 
 177{
 178	ssize_t ret = count;
 179
 180	if (!memcmp("always", buf,
 181		    min(sizeof("always")-1, count))) {
 182		clear_bit(TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG, &transparent_hugepage_flags);
 183		set_bit(TRANSPARENT_HUGEPAGE_FLAG, &transparent_hugepage_flags);
 184	} else if (!memcmp("madvise", buf,
 185			   min(sizeof("madvise")-1, count))) {
 186		clear_bit(TRANSPARENT_HUGEPAGE_FLAG, &transparent_hugepage_flags);
 187		set_bit(TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG, &transparent_hugepage_flags);
 188	} else if (!memcmp("never", buf,
 189			   min(sizeof("never")-1, count))) {
 190		clear_bit(TRANSPARENT_HUGEPAGE_FLAG, &transparent_hugepage_flags);
 191		clear_bit(TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG, &transparent_hugepage_flags);
 192	} else
 193		ret = -EINVAL;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 194
 195	if (ret > 0) {
 196		int err = start_stop_khugepaged();
 197		if (err)
 198			ret = err;
 199	}
 
 
 
 
 
 
 
 
 200	return ret;
 201}
 202static struct kobj_attribute enabled_attr =
 203	__ATTR(enabled, 0644, enabled_show, enabled_store);
 204
 205ssize_t single_hugepage_flag_show(struct kobject *kobj,
 206				struct kobj_attribute *attr, char *buf,
 207				enum transparent_hugepage_flag flag)
 208{
 209	return sprintf(buf, "%d\n",
 210		       !!test_bit(flag, &transparent_hugepage_flags));
 211}
 212
 213ssize_t single_hugepage_flag_store(struct kobject *kobj,
 214				 struct kobj_attribute *attr,
 215				 const char *buf, size_t count,
 216				 enum transparent_hugepage_flag flag)
 217{
 218	unsigned long value;
 219	int ret;
 220
 221	ret = kstrtoul(buf, 10, &value);
 222	if (ret < 0)
 223		return ret;
 224	if (value > 1)
 225		return -EINVAL;
 226
 227	if (value)
 228		set_bit(flag, &transparent_hugepage_flags);
 229	else
 230		clear_bit(flag, &transparent_hugepage_flags);
 231
 232	return count;
 233}
 234
 
 
 
 
 
 235static ssize_t defrag_show(struct kobject *kobj,
 236			   struct kobj_attribute *attr, char *buf)
 237{
 238	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG, &transparent_hugepage_flags))
 239		return sprintf(buf, "[always] defer defer+madvise madvise never\n");
 240	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG, &transparent_hugepage_flags))
 241		return sprintf(buf, "always [defer] defer+madvise madvise never\n");
 242	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG, &transparent_hugepage_flags))
 243		return sprintf(buf, "always defer [defer+madvise] madvise never\n");
 244	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG, &transparent_hugepage_flags))
 245		return sprintf(buf, "always defer defer+madvise [madvise] never\n");
 246	return sprintf(buf, "always defer defer+madvise madvise [never]\n");
 247}
 248
 249static ssize_t defrag_store(struct kobject *kobj,
 250			    struct kobj_attribute *attr,
 251			    const char *buf, size_t count)
 252{
 253	if (!memcmp("always", buf,
 254		    min(sizeof("always")-1, count))) {
 255		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG, &transparent_hugepage_flags);
 256		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG, &transparent_hugepage_flags);
 257		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG, &transparent_hugepage_flags);
 258		set_bit(TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG, &transparent_hugepage_flags);
 259	} else if (!memcmp("defer+madvise", buf,
 260		    min(sizeof("defer+madvise")-1, count))) {
 261		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG, &transparent_hugepage_flags);
 262		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG, &transparent_hugepage_flags);
 263		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG, &transparent_hugepage_flags);
 264		set_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG, &transparent_hugepage_flags);
 265	} else if (!memcmp("defer", buf,
 266		    min(sizeof("defer")-1, count))) {
 267		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG, &transparent_hugepage_flags);
 268		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG, &transparent_hugepage_flags);
 269		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG, &transparent_hugepage_flags);
 270		set_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG, &transparent_hugepage_flags);
 271	} else if (!memcmp("madvise", buf,
 272			   min(sizeof("madvise")-1, count))) {
 273		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG, &transparent_hugepage_flags);
 274		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG, &transparent_hugepage_flags);
 275		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG, &transparent_hugepage_flags);
 276		set_bit(TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG, &transparent_hugepage_flags);
 277	} else if (!memcmp("never", buf,
 278			   min(sizeof("never")-1, count))) {
 279		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG, &transparent_hugepage_flags);
 280		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG, &transparent_hugepage_flags);
 281		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG, &transparent_hugepage_flags);
 282		clear_bit(TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG, &transparent_hugepage_flags);
 283	} else
 284		return -EINVAL;
 285
 286	return count;
 287}
 288static struct kobj_attribute defrag_attr =
 289	__ATTR(defrag, 0644, defrag_show, defrag_store);
 290
 291static ssize_t use_zero_page_show(struct kobject *kobj,
 292		struct kobj_attribute *attr, char *buf)
 293{
 294	return single_hugepage_flag_show(kobj, attr, buf,
 295				TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG);
 296}
 297static ssize_t use_zero_page_store(struct kobject *kobj,
 298		struct kobj_attribute *attr, const char *buf, size_t count)
 299{
 300	return single_hugepage_flag_store(kobj, attr, buf, count,
 301				 TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG);
 302}
 303static struct kobj_attribute use_zero_page_attr =
 304	__ATTR(use_zero_page, 0644, use_zero_page_show, use_zero_page_store);
 305
 306static ssize_t hpage_pmd_size_show(struct kobject *kobj,
 307		struct kobj_attribute *attr, char *buf)
 308{
 309	return sprintf(buf, "%lu\n", HPAGE_PMD_SIZE);
 310}
 311static struct kobj_attribute hpage_pmd_size_attr =
 312	__ATTR_RO(hpage_pmd_size);
 313
 314#ifdef CONFIG_DEBUG_VM
 315static ssize_t debug_cow_show(struct kobject *kobj,
 316				struct kobj_attribute *attr, char *buf)
 317{
 318	return single_hugepage_flag_show(kobj, attr, buf,
 319				TRANSPARENT_HUGEPAGE_DEBUG_COW_FLAG);
 320}
 321static ssize_t debug_cow_store(struct kobject *kobj,
 322			       struct kobj_attribute *attr,
 323			       const char *buf, size_t count)
 324{
 325	return single_hugepage_flag_store(kobj, attr, buf, count,
 326				 TRANSPARENT_HUGEPAGE_DEBUG_COW_FLAG);
 327}
 328static struct kobj_attribute debug_cow_attr =
 329	__ATTR(debug_cow, 0644, debug_cow_show, debug_cow_store);
 330#endif /* CONFIG_DEBUG_VM */
 331
 332static struct attribute *hugepage_attr[] = {
 333	&enabled_attr.attr,
 334	&defrag_attr.attr,
 335	&use_zero_page_attr.attr,
 336	&hpage_pmd_size_attr.attr,
 337#if defined(CONFIG_SHMEM) && defined(CONFIG_TRANSPARENT_HUGE_PAGECACHE)
 338	&shmem_enabled_attr.attr,
 339#endif
 340#ifdef CONFIG_DEBUG_VM
 341	&debug_cow_attr.attr,
 342#endif
 343	NULL,
 344};
 345
 346static const struct attribute_group hugepage_attr_group = {
 347	.attrs = hugepage_attr,
 348};
 349
 350static int __init hugepage_init_sysfs(struct kobject **hugepage_kobj)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 351{
 
 352	int err;
 353
 354	*hugepage_kobj = kobject_create_and_add("transparent_hugepage", mm_kobj);
 355	if (unlikely(!*hugepage_kobj)) {
 356		pr_err("failed to create transparent hugepage kobject\n");
 357		return -ENOMEM;
 358	}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 359
 360	err = sysfs_create_group(*hugepage_kobj, &hugepage_attr_group);
 361	if (err) {
 362		pr_err("failed to register transparent hugepage group\n");
 363		goto delete_obj;
 364	}
 365
 366	err = sysfs_create_group(*hugepage_kobj, &khugepaged_attr_group);
 367	if (err) {
 368		pr_err("failed to register transparent hugepage group\n");
 369		goto remove_hp_group;
 370	}
 371
 372	return 0;
 
 
 
 
 
 
 
 373
 374remove_hp_group:
 375	sysfs_remove_group(*hugepage_kobj, &hugepage_attr_group);
 376delete_obj:
 377	kobject_put(*hugepage_kobj);
 378	return err;
 379}
 
 
 380
 381static void __init hugepage_exit_sysfs(struct kobject *hugepage_kobj)
 
 382{
 383	sysfs_remove_group(hugepage_kobj, &khugepaged_attr_group);
 384	sysfs_remove_group(hugepage_kobj, &hugepage_attr_group);
 385	kobject_put(hugepage_kobj);
 386}
 387#else
 388static inline int hugepage_init_sysfs(struct kobject **hugepage_kobj)
 
 389{
 390	return 0;
 
 391}
 
 
 
 392
 393static inline void hugepage_exit_sysfs(struct kobject *hugepage_kobj)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 394{
 
 
 
 
 
 
 
 
 
 
 395}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 396#endif /* CONFIG_SYSFS */
 397
 398static int __init hugepage_init(void)
 399{
 400	int err;
 401	struct kobject *hugepage_kobj;
 
 
 402
 
 403	if (!has_transparent_hugepage()) {
 404		transparent_hugepage_flags = 0;
 405		return -EINVAL;
 
 
 
 
 
 
 
 
 406	}
 407
 408	/*
 409	 * hugepages can't be allocated by the buddy allocator
 410	 */
 411	MAYBE_BUILD_BUG_ON(HPAGE_PMD_ORDER >= MAX_ORDER);
 412	/*
 413	 * we use page->mapping and page->index in second tail page
 414	 * as list_head: assuming THP order >= 2
 415	 */
 416	MAYBE_BUILD_BUG_ON(HPAGE_PMD_ORDER < 2);
 417
 418	err = hugepage_init_sysfs(&hugepage_kobj);
 419	if (err)
 420		goto err_sysfs;
 
 
 
 421
 422	err = khugepaged_init();
 423	if (err)
 424		goto err_slab;
 425
 426	err = register_shrinker(&huge_zero_page_shrinker);
 427	if (err)
 428		goto err_hzp_shrinker;
 429	err = register_shrinker(&deferred_split_shrinker);
 430	if (err)
 431		goto err_split_shrinker;
 432
 433	/*
 434	 * By default disable transparent hugepages on smaller systems,
 435	 * where the extra memory used could hurt more than TLB overhead
 436	 * is likely to save.  The admin can still enable it through /sys.
 437	 */
 438	if (totalram_pages() < (512 << (20 - PAGE_SHIFT))) {
 439		transparent_hugepage_flags = 0;
 440		return 0;
 441	}
 442
 443	err = start_stop_khugepaged();
 444	if (err)
 445		goto err_khugepaged;
 446
 447	return 0;
 448err_khugepaged:
 449	unregister_shrinker(&deferred_split_shrinker);
 450err_split_shrinker:
 451	unregister_shrinker(&huge_zero_page_shrinker);
 452err_hzp_shrinker:
 453	khugepaged_destroy();
 454err_slab:
 455	hugepage_exit_sysfs(hugepage_kobj);
 456err_sysfs:
 457	return err;
 458}
 459subsys_initcall(hugepage_init);
 460
 461static int __init setup_transparent_hugepage(char *str)
 462{
 463	int ret = 0;
 464	if (!str)
 465		goto out;
 466	if (!strcmp(str, "always")) {
 467		set_bit(TRANSPARENT_HUGEPAGE_FLAG,
 468			&transparent_hugepage_flags);
 469		clear_bit(TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG,
 470			  &transparent_hugepage_flags);
 471		ret = 1;
 472	} else if (!strcmp(str, "madvise")) {
 473		clear_bit(TRANSPARENT_HUGEPAGE_FLAG,
 474			  &transparent_hugepage_flags);
 475		set_bit(TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG,
 476			&transparent_hugepage_flags);
 477		ret = 1;
 478	} else if (!strcmp(str, "never")) {
 479		clear_bit(TRANSPARENT_HUGEPAGE_FLAG,
 480			  &transparent_hugepage_flags);
 481		clear_bit(TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG,
 482			  &transparent_hugepage_flags);
 483		ret = 1;
 484	}
 485out:
 486	if (!ret)
 487		pr_warn("transparent_hugepage= cannot parse, ignored\n");
 
 488	return ret;
 489}
 490__setup("transparent_hugepage=", setup_transparent_hugepage);
 491
 492pmd_t maybe_pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma)
 
 493{
 494	if (likely(vma->vm_flags & VM_WRITE))
 495		pmd = pmd_mkwrite(pmd);
 496	return pmd;
 497}
 498
 499#ifdef CONFIG_MEMCG
 500static inline struct deferred_split *get_deferred_split_queue(struct page *page)
 501{
 502	struct mem_cgroup *memcg = compound_head(page)->mem_cgroup;
 503	struct pglist_data *pgdat = NODE_DATA(page_to_nid(page));
 504
 505	if (memcg)
 506		return &memcg->deferred_split_queue;
 
 507	else
 508		return &pgdat->deferred_split_queue;
 
 509}
 510#else
 511static inline struct deferred_split *get_deferred_split_queue(struct page *page)
 512{
 513	struct pglist_data *pgdat = NODE_DATA(page_to_nid(page));
 514
 515	return &pgdat->deferred_split_queue;
 516}
 517#endif
 518
 519void prep_transhuge_page(struct page *page)
 520{
 521	/*
 522	 * we use page->mapping and page->indexlru in second tail page
 523	 * as list_head: assuming THP order >= 2
 524	 */
 525
 526	INIT_LIST_HEAD(page_deferred_list(page));
 527	set_compound_page_dtor(page, TRANSHUGE_PAGE_DTOR);
 528}
 529
 530static unsigned long __thp_get_unmapped_area(struct file *filp, unsigned long len,
 531		loff_t off, unsigned long flags, unsigned long size)
 
 
 532{
 533	unsigned long addr;
 534	loff_t off_end = off + len;
 535	loff_t off_align = round_up(off, size);
 536	unsigned long len_pad;
 537
 538	if (off_end <= off_align || (off_end - off_align) < size)
 539		return 0;
 540
 541	len_pad = len + size;
 542	if (len_pad < len || (off + len_pad) < off)
 543		return 0;
 544
 545	addr = current->mm->get_unmapped_area(filp, 0, len_pad,
 546					      off >> PAGE_SHIFT, flags);
 547	if (IS_ERR_VALUE(addr))
 548		return 0;
 549
 550	addr += (off - addr) & (size - 1);
 551	return addr;
 552}
 553
 554unsigned long thp_get_unmapped_area(struct file *filp, unsigned long addr,
 555		unsigned long len, unsigned long pgoff, unsigned long flags)
 556{
 557	loff_t off = (loff_t)pgoff << PAGE_SHIFT;
 558
 559	if (addr)
 560		goto out;
 561	if (!IS_DAX(filp->f_mapping->host) || !IS_ENABLED(CONFIG_FS_DAX_PMD))
 562		goto out;
 563
 564	addr = __thp_get_unmapped_area(filp, len, off, flags, PMD_SIZE);
 565	if (addr)
 566		return addr;
 567
 568 out:
 569	return current->mm->get_unmapped_area(filp, addr, len, pgoff, flags);
 570}
 571EXPORT_SYMBOL_GPL(thp_get_unmapped_area);
 572
 573static vm_fault_t __do_huge_pmd_anonymous_page(struct vm_fault *vmf,
 574			struct page *page, gfp_t gfp)
 575{
 576	struct vm_area_struct *vma = vmf->vma;
 577	struct mem_cgroup *memcg;
 578	pgtable_t pgtable;
 579	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
 580	vm_fault_t ret = 0;
 581
 582	VM_BUG_ON_PAGE(!PageCompound(page), page);
 583
 584	if (mem_cgroup_try_charge_delay(page, vma->vm_mm, gfp, &memcg, true)) {
 
 585		put_page(page);
 586		count_vm_event(THP_FAULT_FALLBACK);
 587		return VM_FAULT_FALLBACK;
 588	}
 589
 590	pgtable = pte_alloc_one(vma->vm_mm);
 591	if (unlikely(!pgtable)) {
 592		ret = VM_FAULT_OOM;
 593		goto release;
 594	}
 595
 596	clear_huge_page(page, vmf->address, HPAGE_PMD_NR);
 597	/*
 598	 * The memory barrier inside __SetPageUptodate makes sure that
 599	 * clear_huge_page writes become visible before the set_pmd_at()
 600	 * write.
 601	 */
 602	__SetPageUptodate(page);
 603
 604	vmf->ptl = pmd_lock(vma->vm_mm, vmf->pmd);
 605	if (unlikely(!pmd_none(*vmf->pmd))) {
 606		goto unlock_release;
 
 
 
 607	} else {
 608		pmd_t entry;
 609
 610		ret = check_stable_address_space(vma->vm_mm);
 611		if (ret)
 612			goto unlock_release;
 613
 614		/* Deliver the page fault to userland */
 615		if (userfaultfd_missing(vma)) {
 616			vm_fault_t ret2;
 617
 618			spin_unlock(vmf->ptl);
 619			mem_cgroup_cancel_charge(page, memcg, true);
 620			put_page(page);
 621			pte_free(vma->vm_mm, pgtable);
 622			ret2 = handle_userfault(vmf, VM_UFFD_MISSING);
 623			VM_BUG_ON(ret2 & VM_FAULT_FALLBACK);
 624			return ret2;
 625		}
 626
 627		entry = mk_huge_pmd(page, vma->vm_page_prot);
 628		entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma);
 629		page_add_new_anon_rmap(page, vma, haddr, true);
 630		mem_cgroup_commit_charge(page, memcg, false, true);
 631		lru_cache_add_active_or_unevictable(page, vma);
 632		pgtable_trans_huge_deposit(vma->vm_mm, vmf->pmd, pgtable);
 633		set_pmd_at(vma->vm_mm, haddr, vmf->pmd, entry);
 634		add_mm_counter(vma->vm_mm, MM_ANONPAGES, HPAGE_PMD_NR);
 635		mm_inc_nr_ptes(vma->vm_mm);
 636		spin_unlock(vmf->ptl);
 637		count_vm_event(THP_FAULT_ALLOC);
 638		count_memcg_events(memcg, THP_FAULT_ALLOC, 1);
 
 
 639	}
 640
 641	return 0;
 642unlock_release:
 643	spin_unlock(vmf->ptl);
 644release:
 645	if (pgtable)
 646		pte_free(vma->vm_mm, pgtable);
 647	mem_cgroup_cancel_charge(page, memcg, true);
 648	put_page(page);
 649	return ret;
 
 650
 
 
 
 651}
 652
 653/*
 654 * always: directly stall for all thp allocations
 655 * defer: wake kswapd and fail if not immediately available
 656 * defer+madvise: wake kswapd and directly stall for MADV_HUGEPAGE, otherwise
 657 *		  fail if not immediately available
 658 * madvise: directly stall for MADV_HUGEPAGE, otherwise fail if not immediately
 659 *	    available
 660 * never: never stall for any thp allocation
 661 */
 662static inline gfp_t alloc_hugepage_direct_gfpmask(struct vm_area_struct *vma)
 663{
 664	const bool vma_madvised = !!(vma->vm_flags & VM_HUGEPAGE);
 665
 666	/* Always do synchronous compaction */
 667	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG, &transparent_hugepage_flags))
 668		return GFP_TRANSHUGE | (vma_madvised ? 0 : __GFP_NORETRY);
 669
 670	/* Kick kcompactd and fail quickly */
 671	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG, &transparent_hugepage_flags))
 672		return GFP_TRANSHUGE_LIGHT | __GFP_KSWAPD_RECLAIM;
 673
 674	/* Synchronous compaction if madvised, otherwise kick kcompactd */
 675	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG, &transparent_hugepage_flags))
 676		return GFP_TRANSHUGE_LIGHT |
 677			(vma_madvised ? __GFP_DIRECT_RECLAIM :
 678					__GFP_KSWAPD_RECLAIM);
 679
 680	/* Only do synchronous compaction if madvised */
 681	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG, &transparent_hugepage_flags))
 682		return GFP_TRANSHUGE_LIGHT |
 683		       (vma_madvised ? __GFP_DIRECT_RECLAIM : 0);
 684
 685	return GFP_TRANSHUGE_LIGHT;
 686}
 687
 688/* Caller must hold page table lock. */
 689static bool set_huge_zero_page(pgtable_t pgtable, struct mm_struct *mm,
 690		struct vm_area_struct *vma, unsigned long haddr, pmd_t *pmd,
 691		struct page *zero_page)
 692{
 693	pmd_t entry;
 694	if (!pmd_none(*pmd))
 695		return false;
 696	entry = mk_pmd(zero_page, vma->vm_page_prot);
 697	entry = pmd_mkhuge(entry);
 698	if (pgtable)
 699		pgtable_trans_huge_deposit(mm, pmd, pgtable);
 700	set_pmd_at(mm, haddr, pmd, entry);
 701	mm_inc_nr_ptes(mm);
 702	return true;
 703}
 
 704
 705vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf)
 
 
 706{
 707	struct vm_area_struct *vma = vmf->vma;
 708	gfp_t gfp;
 709	struct page *page;
 710	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
 
 711
 712	if (!transhuge_vma_suitable(vma, haddr))
 713		return VM_FAULT_FALLBACK;
 714	if (unlikely(anon_vma_prepare(vma)))
 715		return VM_FAULT_OOM;
 716	if (unlikely(khugepaged_enter(vma, vma->vm_flags)))
 717		return VM_FAULT_OOM;
 718	if (!(vmf->flags & FAULT_FLAG_WRITE) &&
 719			!mm_forbids_zeropage(vma->vm_mm) &&
 720			transparent_hugepage_use_zero_page()) {
 721		pgtable_t pgtable;
 722		struct page *zero_page;
 723		bool set;
 724		vm_fault_t ret;
 725		pgtable = pte_alloc_one(vma->vm_mm);
 726		if (unlikely(!pgtable))
 727			return VM_FAULT_OOM;
 728		zero_page = mm_get_huge_zero_page(vma->vm_mm);
 729		if (unlikely(!zero_page)) {
 730			pte_free(vma->vm_mm, pgtable);
 731			count_vm_event(THP_FAULT_FALLBACK);
 732			return VM_FAULT_FALLBACK;
 733		}
 734		vmf->ptl = pmd_lock(vma->vm_mm, vmf->pmd);
 735		ret = 0;
 736		set = false;
 737		if (pmd_none(*vmf->pmd)) {
 738			ret = check_stable_address_space(vma->vm_mm);
 739			if (ret) {
 740				spin_unlock(vmf->ptl);
 741			} else if (userfaultfd_missing(vma)) {
 742				spin_unlock(vmf->ptl);
 743				ret = handle_userfault(vmf, VM_UFFD_MISSING);
 744				VM_BUG_ON(ret & VM_FAULT_FALLBACK);
 745			} else {
 746				set_huge_zero_page(pgtable, vma->vm_mm, vma,
 747						   haddr, vmf->pmd, zero_page);
 748				spin_unlock(vmf->ptl);
 749				set = true;
 750			}
 751		} else
 752			spin_unlock(vmf->ptl);
 753		if (!set)
 754			pte_free(vma->vm_mm, pgtable);
 755		return ret;
 756	}
 757	gfp = alloc_hugepage_direct_gfpmask(vma);
 758	page = alloc_hugepage_vma(gfp, vma, haddr, HPAGE_PMD_ORDER);
 759	if (unlikely(!page)) {
 760		count_vm_event(THP_FAULT_FALLBACK);
 761		return VM_FAULT_FALLBACK;
 762	}
 763	prep_transhuge_page(page);
 764	return __do_huge_pmd_anonymous_page(vmf, page, gfp);
 765}
 766
 767static void insert_pfn_pmd(struct vm_area_struct *vma, unsigned long addr,
 768		pmd_t *pmd, pfn_t pfn, pgprot_t prot, bool write,
 769		pgtable_t pgtable)
 770{
 771	struct mm_struct *mm = vma->vm_mm;
 772	pmd_t entry;
 773	spinlock_t *ptl;
 774
 775	ptl = pmd_lock(mm, pmd);
 776	if (!pmd_none(*pmd)) {
 777		if (write) {
 778			if (pmd_pfn(*pmd) != pfn_t_to_pfn(pfn)) {
 779				WARN_ON_ONCE(!is_huge_zero_pmd(*pmd));
 780				goto out_unlock;
 781			}
 782			entry = pmd_mkyoung(*pmd);
 783			entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma);
 784			if (pmdp_set_access_flags(vma, addr, pmd, entry, 1))
 785				update_mmu_cache_pmd(vma, addr, pmd);
 786		}
 787
 788		goto out_unlock;
 789	}
 790
 791	entry = pmd_mkhuge(pfn_t_pmd(pfn, prot));
 792	if (pfn_t_devmap(pfn))
 793		entry = pmd_mkdevmap(entry);
 794	if (write) {
 795		entry = pmd_mkyoung(pmd_mkdirty(entry));
 796		entry = maybe_pmd_mkwrite(entry, vma);
 797	}
 798
 799	if (pgtable) {
 800		pgtable_trans_huge_deposit(mm, pmd, pgtable);
 801		mm_inc_nr_ptes(mm);
 802		pgtable = NULL;
 803	}
 804
 805	set_pmd_at(mm, addr, pmd, entry);
 806	update_mmu_cache_pmd(vma, addr, pmd);
 807
 808out_unlock:
 809	spin_unlock(ptl);
 810	if (pgtable)
 811		pte_free(mm, pgtable);
 812}
 813
 814vm_fault_t vmf_insert_pfn_pmd(struct vm_fault *vmf, pfn_t pfn, bool write)
 815{
 816	unsigned long addr = vmf->address & PMD_MASK;
 817	struct vm_area_struct *vma = vmf->vma;
 818	pgprot_t pgprot = vma->vm_page_prot;
 819	pgtable_t pgtable = NULL;
 820
 821	/*
 822	 * If we had pmd_special, we could avoid all these restrictions,
 823	 * but we need to be consistent with PTEs and architectures that
 824	 * can't support a 'special' bit.
 825	 */
 826	BUG_ON(!(vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP)) &&
 827			!pfn_t_devmap(pfn));
 828	BUG_ON((vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP)) ==
 829						(VM_PFNMAP|VM_MIXEDMAP));
 830	BUG_ON((vma->vm_flags & VM_PFNMAP) && is_cow_mapping(vma->vm_flags));
 831
 832	if (addr < vma->vm_start || addr >= vma->vm_end)
 833		return VM_FAULT_SIGBUS;
 834
 835	if (arch_needs_pgtable_deposit()) {
 836		pgtable = pte_alloc_one(vma->vm_mm);
 837		if (!pgtable)
 838			return VM_FAULT_OOM;
 839	}
 840
 841	track_pfn_insert(vma, &pgprot, pfn);
 842
 843	insert_pfn_pmd(vma, addr, vmf->pmd, pfn, pgprot, write, pgtable);
 844	return VM_FAULT_NOPAGE;
 845}
 846EXPORT_SYMBOL_GPL(vmf_insert_pfn_pmd);
 847
 848#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
 849static pud_t maybe_pud_mkwrite(pud_t pud, struct vm_area_struct *vma)
 850{
 851	if (likely(vma->vm_flags & VM_WRITE))
 852		pud = pud_mkwrite(pud);
 853	return pud;
 854}
 855
 856static void insert_pfn_pud(struct vm_area_struct *vma, unsigned long addr,
 857		pud_t *pud, pfn_t pfn, pgprot_t prot, bool write)
 858{
 859	struct mm_struct *mm = vma->vm_mm;
 860	pud_t entry;
 861	spinlock_t *ptl;
 862
 863	ptl = pud_lock(mm, pud);
 864	if (!pud_none(*pud)) {
 865		if (write) {
 866			if (pud_pfn(*pud) != pfn_t_to_pfn(pfn)) {
 867				WARN_ON_ONCE(!is_huge_zero_pud(*pud));
 868				goto out_unlock;
 869			}
 870			entry = pud_mkyoung(*pud);
 871			entry = maybe_pud_mkwrite(pud_mkdirty(entry), vma);
 872			if (pudp_set_access_flags(vma, addr, pud, entry, 1))
 873				update_mmu_cache_pud(vma, addr, pud);
 874		}
 875		goto out_unlock;
 876	}
 877
 878	entry = pud_mkhuge(pfn_t_pud(pfn, prot));
 879	if (pfn_t_devmap(pfn))
 880		entry = pud_mkdevmap(entry);
 881	if (write) {
 882		entry = pud_mkyoung(pud_mkdirty(entry));
 883		entry = maybe_pud_mkwrite(entry, vma);
 884	}
 885	set_pud_at(mm, addr, pud, entry);
 886	update_mmu_cache_pud(vma, addr, pud);
 887
 888out_unlock:
 889	spin_unlock(ptl);
 890}
 891
 892vm_fault_t vmf_insert_pfn_pud(struct vm_fault *vmf, pfn_t pfn, bool write)
 893{
 894	unsigned long addr = vmf->address & PUD_MASK;
 895	struct vm_area_struct *vma = vmf->vma;
 896	pgprot_t pgprot = vma->vm_page_prot;
 897
 898	/*
 899	 * If we had pud_special, we could avoid all these restrictions,
 900	 * but we need to be consistent with PTEs and architectures that
 901	 * can't support a 'special' bit.
 902	 */
 903	BUG_ON(!(vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP)) &&
 904			!pfn_t_devmap(pfn));
 905	BUG_ON((vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP)) ==
 906						(VM_PFNMAP|VM_MIXEDMAP));
 907	BUG_ON((vma->vm_flags & VM_PFNMAP) && is_cow_mapping(vma->vm_flags));
 908
 909	if (addr < vma->vm_start || addr >= vma->vm_end)
 910		return VM_FAULT_SIGBUS;
 911
 912	track_pfn_insert(vma, &pgprot, pfn);
 913
 914	insert_pfn_pud(vma, addr, vmf->pud, pfn, pgprot, write);
 915	return VM_FAULT_NOPAGE;
 916}
 917EXPORT_SYMBOL_GPL(vmf_insert_pfn_pud);
 918#endif /* CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */
 919
 920static void touch_pmd(struct vm_area_struct *vma, unsigned long addr,
 921		pmd_t *pmd, int flags)
 922{
 923	pmd_t _pmd;
 924
 925	_pmd = pmd_mkyoung(*pmd);
 926	if (flags & FOLL_WRITE)
 927		_pmd = pmd_mkdirty(_pmd);
 928	if (pmdp_set_access_flags(vma, addr & HPAGE_PMD_MASK,
 929				pmd, _pmd, flags & FOLL_WRITE))
 930		update_mmu_cache_pmd(vma, addr, pmd);
 931}
 932
 933struct page *follow_devmap_pmd(struct vm_area_struct *vma, unsigned long addr,
 934		pmd_t *pmd, int flags, struct dev_pagemap **pgmap)
 935{
 936	unsigned long pfn = pmd_pfn(*pmd);
 937	struct mm_struct *mm = vma->vm_mm;
 938	struct page *page;
 939
 940	assert_spin_locked(pmd_lockptr(mm, pmd));
 941
 942	/*
 943	 * When we COW a devmap PMD entry, we split it into PTEs, so we should
 944	 * not be in this function with `flags & FOLL_COW` set.
 945	 */
 946	WARN_ONCE(flags & FOLL_COW, "mm: In follow_devmap_pmd with FOLL_COW set");
 947
 948	if (flags & FOLL_WRITE && !pmd_write(*pmd))
 949		return NULL;
 950
 951	if (pmd_present(*pmd) && pmd_devmap(*pmd))
 952		/* pass */;
 953	else
 954		return NULL;
 955
 956	if (flags & FOLL_TOUCH)
 957		touch_pmd(vma, addr, pmd, flags);
 958
 959	/*
 960	 * device mapped pages can only be returned if the
 961	 * caller will manage the page reference count.
 
 
 962	 */
 963	if (!(flags & FOLL_GET))
 964		return ERR_PTR(-EEXIST);
 965
 966	pfn += (addr & ~PMD_MASK) >> PAGE_SHIFT;
 967	*pgmap = get_dev_pagemap(pfn, *pgmap);
 968	if (!*pgmap)
 969		return ERR_PTR(-EFAULT);
 970	page = pfn_to_page(pfn);
 971	get_page(page);
 972
 973	return page;
 974}
 975
 976int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 977		  pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
 978		  struct vm_area_struct *vma)
 979{
 980	spinlock_t *dst_ptl, *src_ptl;
 981	struct page *src_page;
 982	pmd_t pmd;
 983	pgtable_t pgtable = NULL;
 984	int ret = -ENOMEM;
 985
 986	/* Skip if can be re-fill on fault */
 987	if (!vma_is_anonymous(vma))
 988		return 0;
 989
 990	pgtable = pte_alloc_one(dst_mm);
 
 991	if (unlikely(!pgtable))
 992		goto out;
 993
 994	dst_ptl = pmd_lock(dst_mm, dst_pmd);
 995	src_ptl = pmd_lockptr(src_mm, src_pmd);
 996	spin_lock_nested(src_ptl, SINGLE_DEPTH_NESTING);
 997
 998	ret = -EAGAIN;
 999	pmd = *src_pmd;
1000
1001#ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION
1002	if (unlikely(is_swap_pmd(pmd))) {
1003		swp_entry_t entry = pmd_to_swp_entry(pmd);
1004
1005		VM_BUG_ON(!is_pmd_migration_entry(pmd));
1006		if (is_write_migration_entry(entry)) {
1007			make_migration_entry_read(&entry);
1008			pmd = swp_entry_to_pmd(entry);
1009			if (pmd_swp_soft_dirty(*src_pmd))
1010				pmd = pmd_swp_mksoft_dirty(pmd);
1011			set_pmd_at(src_mm, addr, src_pmd, pmd);
1012		}
1013		add_mm_counter(dst_mm, MM_ANONPAGES, HPAGE_PMD_NR);
1014		mm_inc_nr_ptes(dst_mm);
1015		pgtable_trans_huge_deposit(dst_mm, dst_pmd, pgtable);
1016		set_pmd_at(dst_mm, addr, dst_pmd, pmd);
1017		ret = 0;
1018		goto out_unlock;
1019	}
1020#endif
1021
1022	if (unlikely(!pmd_trans_huge(pmd))) {
1023		pte_free(dst_mm, pgtable);
1024		goto out_unlock;
1025	}
1026	/*
1027	 * When page table lock is held, the huge zero pmd should not be
1028	 * under splitting since we don't split the page itself, only pmd to
1029	 * a page table.
1030	 */
1031	if (is_huge_zero_pmd(pmd)) {
1032		struct page *zero_page;
1033		/*
1034		 * get_huge_zero_page() will never allocate a new page here,
1035		 * since we already have a zero page to copy. It just takes a
1036		 * reference.
1037		 */
1038		zero_page = mm_get_huge_zero_page(dst_mm);
1039		set_huge_zero_page(pgtable, dst_mm, vma, addr, dst_pmd,
1040				zero_page);
1041		ret = 0;
1042		goto out_unlock;
1043	}
1044
1045	src_page = pmd_page(pmd);
1046	VM_BUG_ON_PAGE(!PageHead(src_page), src_page);
1047	get_page(src_page);
1048	page_dup_rmap(src_page, true);
1049	add_mm_counter(dst_mm, MM_ANONPAGES, HPAGE_PMD_NR);
1050	mm_inc_nr_ptes(dst_mm);
1051	pgtable_trans_huge_deposit(dst_mm, dst_pmd, pgtable);
1052
1053	pmdp_set_wrprotect(src_mm, addr, src_pmd);
1054	pmd = pmd_mkold(pmd_wrprotect(pmd));
1055	set_pmd_at(dst_mm, addr, dst_pmd, pmd);
 
1056
1057	ret = 0;
1058out_unlock:
1059	spin_unlock(src_ptl);
1060	spin_unlock(dst_ptl);
1061out:
1062	return ret;
1063}
1064
1065#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
1066static void touch_pud(struct vm_area_struct *vma, unsigned long addr,
1067		pud_t *pud, int flags)
1068{
1069	pud_t _pud;
1070
1071	_pud = pud_mkyoung(*pud);
1072	if (flags & FOLL_WRITE)
1073		_pud = pud_mkdirty(_pud);
1074	if (pudp_set_access_flags(vma, addr & HPAGE_PUD_MASK,
1075				pud, _pud, flags & FOLL_WRITE))
1076		update_mmu_cache_pud(vma, addr, pud);
1077}
1078
1079struct page *follow_devmap_pud(struct vm_area_struct *vma, unsigned long addr,
1080		pud_t *pud, int flags, struct dev_pagemap **pgmap)
1081{
1082	unsigned long pfn = pud_pfn(*pud);
1083	struct mm_struct *mm = vma->vm_mm;
1084	struct page *page;
1085
1086	assert_spin_locked(pud_lockptr(mm, pud));
1087
1088	if (flags & FOLL_WRITE && !pud_write(*pud))
1089		return NULL;
1090
1091	if (pud_present(*pud) && pud_devmap(*pud))
1092		/* pass */;
1093	else
1094		return NULL;
1095
1096	if (flags & FOLL_TOUCH)
1097		touch_pud(vma, addr, pud, flags);
1098
1099	/*
1100	 * device mapped pages can only be returned if the
1101	 * caller will manage the page reference count.
1102	 */
1103	if (!(flags & FOLL_GET))
1104		return ERR_PTR(-EEXIST);
1105
1106	pfn += (addr & ~PUD_MASK) >> PAGE_SHIFT;
1107	*pgmap = get_dev_pagemap(pfn, *pgmap);
1108	if (!*pgmap)
1109		return ERR_PTR(-EFAULT);
1110	page = pfn_to_page(pfn);
1111	get_page(page);
1112
1113	return page;
1114}
1115
1116int copy_huge_pud(struct mm_struct *dst_mm, struct mm_struct *src_mm,
1117		  pud_t *dst_pud, pud_t *src_pud, unsigned long addr,
1118		  struct vm_area_struct *vma)
1119{
1120	spinlock_t *dst_ptl, *src_ptl;
1121	pud_t pud;
1122	int ret;
1123
1124	dst_ptl = pud_lock(dst_mm, dst_pud);
1125	src_ptl = pud_lockptr(src_mm, src_pud);
1126	spin_lock_nested(src_ptl, SINGLE_DEPTH_NESTING);
1127
1128	ret = -EAGAIN;
1129	pud = *src_pud;
1130	if (unlikely(!pud_trans_huge(pud) && !pud_devmap(pud)))
1131		goto out_unlock;
1132
1133	/*
1134	 * When page table lock is held, the huge zero pud should not be
1135	 * under splitting since we don't split the page itself, only pud to
1136	 * a page table.
1137	 */
1138	if (is_huge_zero_pud(pud)) {
1139		/* No huge zero pud yet */
1140	}
1141
1142	pudp_set_wrprotect(src_mm, addr, src_pud);
1143	pud = pud_mkold(pud_wrprotect(pud));
1144	set_pud_at(dst_mm, addr, dst_pud, pud);
1145
1146	ret = 0;
1147out_unlock:
1148	spin_unlock(src_ptl);
1149	spin_unlock(dst_ptl);
1150	return ret;
1151}
1152
1153void huge_pud_set_accessed(struct vm_fault *vmf, pud_t orig_pud)
1154{
1155	pud_t entry;
1156	unsigned long haddr;
1157	bool write = vmf->flags & FAULT_FLAG_WRITE;
1158
1159	vmf->ptl = pud_lock(vmf->vma->vm_mm, vmf->pud);
1160	if (unlikely(!pud_same(*vmf->pud, orig_pud)))
1161		goto unlock;
1162
1163	entry = pud_mkyoung(orig_pud);
1164	if (write)
1165		entry = pud_mkdirty(entry);
1166	haddr = vmf->address & HPAGE_PUD_MASK;
1167	if (pudp_set_access_flags(vmf->vma, haddr, vmf->pud, entry, write))
1168		update_mmu_cache_pud(vmf->vma, vmf->address, vmf->pud);
1169
1170unlock:
1171	spin_unlock(vmf->ptl);
1172}
1173#endif /* CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */
1174
1175void huge_pmd_set_accessed(struct vm_fault *vmf, pmd_t orig_pmd)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1176{
1177	pmd_t entry;
1178	unsigned long haddr;
1179	bool write = vmf->flags & FAULT_FLAG_WRITE;
1180
1181	vmf->ptl = pmd_lock(vmf->vma->vm_mm, vmf->pmd);
1182	if (unlikely(!pmd_same(*vmf->pmd, orig_pmd)))
1183		goto unlock;
1184
1185	entry = pmd_mkyoung(orig_pmd);
1186	if (write)
1187		entry = pmd_mkdirty(entry);
1188	haddr = vmf->address & HPAGE_PMD_MASK;
1189	if (pmdp_set_access_flags(vmf->vma, haddr, vmf->pmd, entry, write))
1190		update_mmu_cache_pmd(vmf->vma, vmf->address, vmf->pmd);
1191
1192unlock:
1193	spin_unlock(vmf->ptl);
1194}
1195
1196static vm_fault_t do_huge_pmd_wp_page_fallback(struct vm_fault *vmf,
1197			pmd_t orig_pmd, struct page *page)
1198{
1199	struct vm_area_struct *vma = vmf->vma;
1200	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
1201	struct mem_cgroup *memcg;
1202	pgtable_t pgtable;
1203	pmd_t _pmd;
1204	int i;
1205	vm_fault_t ret = 0;
1206	struct page **pages;
1207	struct mmu_notifier_range range;
1208
1209	pages = kmalloc_array(HPAGE_PMD_NR, sizeof(struct page *),
1210			      GFP_KERNEL);
1211	if (unlikely(!pages)) {
1212		ret |= VM_FAULT_OOM;
1213		goto out;
1214	}
1215
1216	for (i = 0; i < HPAGE_PMD_NR; i++) {
1217		pages[i] = alloc_page_vma_node(GFP_HIGHUSER_MOVABLE, vma,
1218					       vmf->address, page_to_nid(page));
 
1219		if (unlikely(!pages[i] ||
1220			     mem_cgroup_try_charge_delay(pages[i], vma->vm_mm,
1221				     GFP_KERNEL, &memcg, false))) {
1222			if (pages[i])
1223				put_page(pages[i]);
 
1224			while (--i >= 0) {
1225				memcg = (void *)page_private(pages[i]);
1226				set_page_private(pages[i], 0);
1227				mem_cgroup_cancel_charge(pages[i], memcg,
1228						false);
1229				put_page(pages[i]);
1230			}
 
1231			kfree(pages);
1232			ret |= VM_FAULT_OOM;
1233			goto out;
1234		}
1235		set_page_private(pages[i], (unsigned long)memcg);
1236	}
1237
1238	for (i = 0; i < HPAGE_PMD_NR; i++) {
1239		copy_user_highpage(pages[i], page + i,
1240				   haddr + PAGE_SIZE * i, vma);
1241		__SetPageUptodate(pages[i]);
1242		cond_resched();
1243	}
1244
1245	mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma, vma->vm_mm,
1246				haddr, haddr + HPAGE_PMD_SIZE);
1247	mmu_notifier_invalidate_range_start(&range);
1248
1249	vmf->ptl = pmd_lock(vma->vm_mm, vmf->pmd);
1250	if (unlikely(!pmd_same(*vmf->pmd, orig_pmd)))
1251		goto out_free_pages;
1252	VM_BUG_ON_PAGE(!PageHead(page), page);
1253
1254	/*
1255	 * Leave pmd empty until pte is filled note we must notify here as
1256	 * concurrent CPU thread might write to new page before the call to
1257	 * mmu_notifier_invalidate_range_end() happens which can lead to a
1258	 * device seeing memory write in different order than CPU.
1259	 *
1260	 * See Documentation/vm/mmu_notifier.rst
1261	 */
1262	pmdp_huge_clear_flush_notify(vma, haddr, vmf->pmd);
1263
1264	pgtable = pgtable_trans_huge_withdraw(vma->vm_mm, vmf->pmd);
1265	pmd_populate(vma->vm_mm, &_pmd, pgtable);
1266
1267	for (i = 0; i < HPAGE_PMD_NR; i++, haddr += PAGE_SIZE) {
1268		pte_t entry;
1269		entry = mk_pte(pages[i], vma->vm_page_prot);
1270		entry = maybe_mkwrite(pte_mkdirty(entry), vma);
1271		memcg = (void *)page_private(pages[i]);
1272		set_page_private(pages[i], 0);
1273		page_add_new_anon_rmap(pages[i], vmf->vma, haddr, false);
1274		mem_cgroup_commit_charge(pages[i], memcg, false, false);
1275		lru_cache_add_active_or_unevictable(pages[i], vma);
1276		vmf->pte = pte_offset_map(&_pmd, haddr);
1277		VM_BUG_ON(!pte_none(*vmf->pte));
1278		set_pte_at(vma->vm_mm, haddr, vmf->pte, entry);
1279		pte_unmap(vmf->pte);
1280	}
1281	kfree(pages);
1282
 
1283	smp_wmb(); /* make pte visible before pmd */
1284	pmd_populate(vma->vm_mm, vmf->pmd, pgtable);
1285	page_remove_rmap(page, true);
1286	spin_unlock(vmf->ptl);
1287
1288	/*
1289	 * No need to double call mmu_notifier->invalidate_range() callback as
1290	 * the above pmdp_huge_clear_flush_notify() did already call it.
1291	 */
1292	mmu_notifier_invalidate_range_only_end(&range);
1293
1294	ret |= VM_FAULT_WRITE;
1295	put_page(page);
1296
1297out:
1298	return ret;
1299
1300out_free_pages:
1301	spin_unlock(vmf->ptl);
1302	mmu_notifier_invalidate_range_end(&range);
1303	for (i = 0; i < HPAGE_PMD_NR; i++) {
1304		memcg = (void *)page_private(pages[i]);
1305		set_page_private(pages[i], 0);
1306		mem_cgroup_cancel_charge(pages[i], memcg, false);
1307		put_page(pages[i]);
1308	}
 
1309	kfree(pages);
1310	goto out;
1311}
1312
1313vm_fault_t do_huge_pmd_wp_page(struct vm_fault *vmf, pmd_t orig_pmd)
 
1314{
1315	struct vm_area_struct *vma = vmf->vma;
1316	struct page *page = NULL, *new_page;
1317	struct mem_cgroup *memcg;
1318	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
1319	struct mmu_notifier_range range;
1320	gfp_t huge_gfp;			/* for allocation and charge */
1321	vm_fault_t ret = 0;
1322
1323	vmf->ptl = pmd_lockptr(vma->vm_mm, vmf->pmd);
1324	VM_BUG_ON_VMA(!vma->anon_vma, vma);
1325	if (is_huge_zero_pmd(orig_pmd))
1326		goto alloc;
1327	spin_lock(vmf->ptl);
1328	if (unlikely(!pmd_same(*vmf->pmd, orig_pmd)))
1329		goto out_unlock;
1330
1331	page = pmd_page(orig_pmd);
1332	VM_BUG_ON_PAGE(!PageCompound(page) || !PageHead(page), page);
1333	/*
1334	 * We can only reuse the page if nobody else maps the huge page or it's
1335	 * part.
1336	 */
1337	if (!trylock_page(page)) {
1338		get_page(page);
1339		spin_unlock(vmf->ptl);
1340		lock_page(page);
1341		spin_lock(vmf->ptl);
1342		if (unlikely(!pmd_same(*vmf->pmd, orig_pmd))) {
1343			unlock_page(page);
1344			put_page(page);
1345			goto out_unlock;
1346		}
1347		put_page(page);
1348	}
1349	if (reuse_swap_page(page, NULL)) {
1350		pmd_t entry;
1351		entry = pmd_mkyoung(orig_pmd);
1352		entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma);
1353		if (pmdp_set_access_flags(vma, haddr, vmf->pmd, entry,  1))
1354			update_mmu_cache_pmd(vma, vmf->address, vmf->pmd);
1355		ret |= VM_FAULT_WRITE;
1356		unlock_page(page);
1357		goto out_unlock;
1358	}
1359	unlock_page(page);
1360	get_page(page);
1361	spin_unlock(vmf->ptl);
1362alloc:
1363	if (__transparent_hugepage_enabled(vma) &&
1364	    !transparent_hugepage_debug_cow()) {
1365		huge_gfp = alloc_hugepage_direct_gfpmask(vma);
1366		new_page = alloc_hugepage_vma(huge_gfp, vma, haddr, HPAGE_PMD_ORDER);
1367	} else
1368		new_page = NULL;
1369
1370	if (likely(new_page)) {
1371		prep_transhuge_page(new_page);
1372	} else {
1373		if (!page) {
1374			split_huge_pmd(vma, vmf->pmd, vmf->address);
1375			ret |= VM_FAULT_FALLBACK;
1376		} else {
1377			ret = do_huge_pmd_wp_page_fallback(vmf, orig_pmd, page);
1378			if (ret & VM_FAULT_OOM) {
1379				split_huge_pmd(vma, vmf->pmd, vmf->address);
1380				ret |= VM_FAULT_FALLBACK;
1381			}
1382			put_page(page);
1383		}
1384		count_vm_event(THP_FAULT_FALLBACK);
 
 
 
1385		goto out;
1386	}
 
1387
1388	if (unlikely(mem_cgroup_try_charge_delay(new_page, vma->vm_mm,
1389					huge_gfp, &memcg, true))) {
1390		put_page(new_page);
1391		split_huge_pmd(vma, vmf->pmd, vmf->address);
1392		if (page)
1393			put_page(page);
1394		ret |= VM_FAULT_FALLBACK;
1395		count_vm_event(THP_FAULT_FALLBACK);
1396		goto out;
1397	}
1398
1399	count_vm_event(THP_FAULT_ALLOC);
1400	count_memcg_events(memcg, THP_FAULT_ALLOC, 1);
1401
1402	if (!page)
1403		clear_huge_page(new_page, vmf->address, HPAGE_PMD_NR);
1404	else
1405		copy_user_huge_page(new_page, page, vmf->address,
1406				    vma, HPAGE_PMD_NR);
1407	__SetPageUptodate(new_page);
1408
1409	mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma, vma->vm_mm,
1410				haddr, haddr + HPAGE_PMD_SIZE);
1411	mmu_notifier_invalidate_range_start(&range);
1412
1413	spin_lock(vmf->ptl);
1414	if (page)
1415		put_page(page);
1416	if (unlikely(!pmd_same(*vmf->pmd, orig_pmd))) {
1417		spin_unlock(vmf->ptl);
1418		mem_cgroup_cancel_charge(new_page, memcg, true);
1419		put_page(new_page);
1420		goto out_mn;
1421	} else {
1422		pmd_t entry;
1423		entry = mk_huge_pmd(new_page, vma->vm_page_prot);
 
1424		entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma);
1425		pmdp_huge_clear_flush_notify(vma, haddr, vmf->pmd);
1426		page_add_new_anon_rmap(new_page, vma, haddr, true);
1427		mem_cgroup_commit_charge(new_page, memcg, false, true);
1428		lru_cache_add_active_or_unevictable(new_page, vma);
1429		set_pmd_at(vma->vm_mm, haddr, vmf->pmd, entry);
1430		update_mmu_cache_pmd(vma, vmf->address, vmf->pmd);
1431		if (!page) {
1432			add_mm_counter(vma->vm_mm, MM_ANONPAGES, HPAGE_PMD_NR);
1433		} else {
1434			VM_BUG_ON_PAGE(!PageHead(page), page);
1435			page_remove_rmap(page, true);
1436			put_page(page);
1437		}
1438		ret |= VM_FAULT_WRITE;
1439	}
1440	spin_unlock(vmf->ptl);
1441out_mn:
1442	/*
1443	 * No need to double call mmu_notifier->invalidate_range() callback as
1444	 * the above pmdp_huge_clear_flush_notify() did already call it.
1445	 */
1446	mmu_notifier_invalidate_range_only_end(&range);
1447out:
1448	return ret;
1449out_unlock:
1450	spin_unlock(vmf->ptl);
1451	return ret;
1452}
1453
1454/*
1455 * FOLL_FORCE can write to even unwritable pmd's, but only
1456 * after we've gone through a COW cycle and they are dirty.
1457 */
1458static inline bool can_follow_write_pmd(pmd_t pmd, unsigned int flags)
1459{
1460	return pmd_write(pmd) ||
1461	       ((flags & FOLL_FORCE) && (flags & FOLL_COW) && pmd_dirty(pmd));
1462}
1463
1464struct page *follow_trans_huge_pmd(struct vm_area_struct *vma,
1465				   unsigned long addr,
1466				   pmd_t *pmd,
1467				   unsigned int flags)
1468{
1469	struct mm_struct *mm = vma->vm_mm;
1470	struct page *page = NULL;
1471
1472	assert_spin_locked(pmd_lockptr(mm, pmd));
1473
1474	if (flags & FOLL_WRITE && !can_follow_write_pmd(*pmd, flags))
1475		goto out;
1476
1477	/* Avoid dumping huge zero page */
1478	if ((flags & FOLL_DUMP) && is_huge_zero_pmd(*pmd))
1479		return ERR_PTR(-EFAULT);
1480
1481	/* Full NUMA hinting faults to serialise migration in fault paths */
1482	if ((flags & FOLL_NUMA) && pmd_protnone(*pmd))
1483		goto out;
1484
1485	page = pmd_page(*pmd);
1486	VM_BUG_ON_PAGE(!PageHead(page) && !is_zone_device_page(page), page);
1487	if (flags & FOLL_TOUCH)
1488		touch_pmd(vma, addr, pmd, flags);
1489	if ((flags & FOLL_MLOCK) && (vma->vm_flags & VM_LOCKED)) {
1490		/*
1491		 * We don't mlock() pte-mapped THPs. This way we can avoid
1492		 * leaking mlocked pages into non-VM_LOCKED VMAs.
1493		 *
1494		 * For anon THP:
1495		 *
1496		 * In most cases the pmd is the only mapping of the page as we
1497		 * break COW for the mlock() -- see gup_flags |= FOLL_WRITE for
1498		 * writable private mappings in populate_vma_page_range().
1499		 *
1500		 * The only scenario when we have the page shared here is if we
1501		 * mlocking read-only mapping shared over fork(). We skip
1502		 * mlocking such pages.
1503		 *
1504		 * For file THP:
1505		 *
1506		 * We can expect PageDoubleMap() to be stable under page lock:
1507		 * for file pages we set it in page_add_file_rmap(), which
1508		 * requires page to be locked.
1509		 */
1510
1511		if (PageAnon(page) && compound_mapcount(page) != 1)
1512			goto skip_mlock;
1513		if (PageDoubleMap(page) || !page->mapping)
1514			goto skip_mlock;
1515		if (!trylock_page(page))
1516			goto skip_mlock;
1517		lru_add_drain();
1518		if (page->mapping && !PageDoubleMap(page))
1519			mlock_vma_page(page);
1520		unlock_page(page);
1521	}
1522skip_mlock:
1523	page += (addr & ~HPAGE_PMD_MASK) >> PAGE_SHIFT;
1524	VM_BUG_ON_PAGE(!PageCompound(page) && !is_zone_device_page(page), page);
1525	if (flags & FOLL_GET)
1526		get_page(page);
1527
1528out:
1529	return page;
1530}
1531
1532/* NUMA hinting page fault entry point for trans huge pmds */
1533vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
1534{
1535	struct vm_area_struct *vma = vmf->vma;
1536	struct anon_vma *anon_vma = NULL;
1537	struct page *page;
1538	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
1539	int page_nid = NUMA_NO_NODE, this_nid = numa_node_id();
1540	int target_nid, last_cpupid = -1;
1541	bool page_locked;
1542	bool migrated = false;
1543	bool was_writable;
1544	int flags = 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1545
1546	vmf->ptl = pmd_lock(vma->vm_mm, vmf->pmd);
1547	if (unlikely(!pmd_same(pmd, *vmf->pmd)))
1548		goto out_unlock;
 
 
 
 
 
 
1549
1550	/*
1551	 * If there are potential migrations, wait for completion and retry
1552	 * without disrupting NUMA hinting information. Do not relock and
1553	 * check_same as the page may no longer be mapped.
1554	 */
1555	if (unlikely(pmd_trans_migrating(*vmf->pmd))) {
1556		page = pmd_page(*vmf->pmd);
1557		if (!get_page_unless_zero(page))
1558			goto out_unlock;
1559		spin_unlock(vmf->ptl);
1560		put_and_wait_on_page_locked(page);
1561		goto out;
1562	}
1563
1564	page = pmd_page(pmd);
1565	BUG_ON(is_huge_zero_page(page));
1566	page_nid = page_to_nid(page);
1567	last_cpupid = page_cpupid_last(page);
1568	count_vm_numa_event(NUMA_HINT_FAULTS);
1569	if (page_nid == this_nid) {
1570		count_vm_numa_event(NUMA_HINT_FAULTS_LOCAL);
1571		flags |= TNF_FAULT_LOCAL;
1572	}
1573
1574	/* See similar comment in do_numa_page for explanation */
1575	if (!pmd_savedwrite(pmd))
1576		flags |= TNF_NO_GROUP;
1577
1578	/*
1579	 * Acquire the page lock to serialise THP migrations but avoid dropping
1580	 * page_table_lock if at all possible
1581	 */
1582	page_locked = trylock_page(page);
1583	target_nid = mpol_misplaced(page, vma, haddr);
1584	if (target_nid == NUMA_NO_NODE) {
1585		/* If the page was locked, there are no parallel migrations */
1586		if (page_locked)
1587			goto clear_pmdnuma;
1588	}
1589
1590	/* Migration could have started since the pmd_trans_migrating check */
1591	if (!page_locked) {
1592		page_nid = NUMA_NO_NODE;
1593		if (!get_page_unless_zero(page))
1594			goto out_unlock;
1595		spin_unlock(vmf->ptl);
1596		put_and_wait_on_page_locked(page);
1597		goto out;
1598	}
1599
 
 
 
 
 
1600	/*
1601	 * Page is misplaced. Page lock serialises migrations. Acquire anon_vma
1602	 * to serialises splits
 
 
 
1603	 */
1604	get_page(page);
1605	spin_unlock(vmf->ptl);
1606	anon_vma = page_lock_anon_vma_read(page);
1607
1608	/* Confirm the PMD did not change while page_table_lock was released */
1609	spin_lock(vmf->ptl);
1610	if (unlikely(!pmd_same(pmd, *vmf->pmd))) {
1611		unlock_page(page);
1612		put_page(page);
1613		page_nid = NUMA_NO_NODE;
1614		goto out_unlock;
1615	}
 
 
 
1616
1617	/* Bail if we fail to protect against THP splits for any reason */
1618	if (unlikely(!anon_vma)) {
1619		put_page(page);
1620		page_nid = NUMA_NO_NODE;
1621		goto clear_pmdnuma;
1622	}
 
1623
1624	/*
1625	 * Since we took the NUMA fault, we must have observed the !accessible
1626	 * bit. Make sure all other CPUs agree with that, to avoid them
1627	 * modifying the page we're about to migrate.
1628	 *
1629	 * Must be done under PTL such that we'll observe the relevant
1630	 * inc_tlb_flush_pending().
1631	 *
1632	 * We are not sure a pending tlb flush here is for a huge page
1633	 * mapping or not. Hence use the tlb range variant
1634	 */
1635	if (mm_tlb_flush_pending(vma->vm_mm)) {
1636		flush_tlb_range(vma, haddr, haddr + HPAGE_PMD_SIZE);
1637		/*
1638		 * change_huge_pmd() released the pmd lock before
1639		 * invalidating the secondary MMUs sharing the primary
1640		 * MMU pagetables (with ->invalidate_range()). The
1641		 * mmu_notifier_invalidate_range_end() (which
1642		 * internally calls ->invalidate_range()) in
1643		 * change_pmd_range() will run after us, so we can't
1644		 * rely on it here and we need an explicit invalidate.
1645		 */
1646		mmu_notifier_invalidate_range(vma->vm_mm, haddr,
1647					      haddr + HPAGE_PMD_SIZE);
1648	}
 
 
 
 
1649
1650	/*
1651	 * Migrate the THP to the requested node, returns with page unlocked
1652	 * and access rights restored.
1653	 */
1654	spin_unlock(vmf->ptl);
 
 
 
 
 
 
 
 
1655
1656	migrated = migrate_misplaced_transhuge_page(vma->vm_mm, vma,
1657				vmf->pmd, pmd, vmf->address, page, target_nid);
1658	if (migrated) {
1659		flags |= TNF_MIGRATED;
1660		page_nid = target_nid;
1661	} else
1662		flags |= TNF_MIGRATE_FAIL;
1663
1664	goto out;
1665clear_pmdnuma:
1666	BUG_ON(!PageLocked(page));
1667	was_writable = pmd_savedwrite(pmd);
1668	pmd = pmd_modify(pmd, vma->vm_page_prot);
1669	pmd = pmd_mkyoung(pmd);
1670	if (was_writable)
1671		pmd = pmd_mkwrite(pmd);
1672	set_pmd_at(vma->vm_mm, haddr, vmf->pmd, pmd);
1673	update_mmu_cache_pmd(vma, vmf->address, vmf->pmd);
1674	unlock_page(page);
1675out_unlock:
1676	spin_unlock(vmf->ptl);
1677
1678out:
1679	if (anon_vma)
1680		page_unlock_anon_vma_read(anon_vma);
 
 
 
 
 
 
 
 
 
1681
1682	if (page_nid != NUMA_NO_NODE)
1683		task_numa_fault(last_cpupid, page_nid, HPAGE_PMD_NR,
1684				flags);
 
 
1685
1686	return 0;
1687}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1688
1689/*
1690 * Return true if we do MADV_FREE successfully on entire pmd page.
1691 * Otherwise, return false.
1692 */
1693bool madvise_free_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
1694		pmd_t *pmd, unsigned long addr, unsigned long next)
1695{
1696	spinlock_t *ptl;
1697	pmd_t orig_pmd;
1698	struct page *page;
1699	struct mm_struct *mm = tlb->mm;
1700	bool ret = false;
1701
1702	tlb_change_page_size(tlb, HPAGE_PMD_SIZE);
1703
1704	ptl = pmd_trans_huge_lock(pmd, vma);
1705	if (!ptl)
1706		goto out_unlocked;
 
1707
1708	orig_pmd = *pmd;
1709	if (is_huge_zero_pmd(orig_pmd))
1710		goto out;
1711
1712	if (unlikely(!pmd_present(orig_pmd))) {
1713		VM_BUG_ON(thp_migration_supported() &&
1714				  !is_pmd_migration_entry(orig_pmd));
1715		goto out;
1716	}
1717
1718	page = pmd_page(orig_pmd);
 
 
1719	/*
1720	 * If other processes are mapping this page, we couldn't discard
1721	 * the page unless they all do MADV_FREE so let's skip the page.
1722	 */
1723	if (page_mapcount(page) != 1)
1724		goto out;
 
 
 
 
 
 
1725
1726	if (!trylock_page(page))
1727		goto out;
 
 
 
 
 
 
 
 
 
 
1728
1729	/*
1730	 * If user want to discard part-pages of THP, split it so MADV_FREE
1731	 * will deactivate only them.
1732	 */
1733	if (next - addr != HPAGE_PMD_SIZE) {
1734		get_page(page);
1735		spin_unlock(ptl);
1736		split_huge_page(page);
1737		unlock_page(page);
1738		put_page(page);
1739		goto out_unlocked;
1740	}
1741
1742	if (PageDirty(page))
1743		ClearPageDirty(page);
1744	unlock_page(page);
 
 
 
 
 
 
1745
1746	if (pmd_young(orig_pmd) || pmd_dirty(orig_pmd)) {
1747		pmdp_invalidate(vma, addr, pmd);
1748		orig_pmd = pmd_mkold(orig_pmd);
1749		orig_pmd = pmd_mkclean(orig_pmd);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1750
1751		set_pmd_at(mm, addr, pmd, orig_pmd);
1752		tlb_remove_pmd_tlb_entry(tlb, pmd, addr);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1753	}
 
1754
1755	mark_page_lazyfree(page);
1756	ret = true;
1757out:
1758	spin_unlock(ptl);
1759out_unlocked:
1760	return ret;
1761}
1762
1763static inline void zap_deposited_table(struct mm_struct *mm, pmd_t *pmd)
1764{
1765	pgtable_t pgtable;
1766
1767	pgtable = pgtable_trans_huge_withdraw(mm, pmd);
1768	pte_free(mm, pgtable);
1769	mm_dec_nr_ptes(mm);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1770}
1771
1772int zap_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
1773		 pmd_t *pmd, unsigned long addr)
1774{
1775	pmd_t orig_pmd;
1776	spinlock_t *ptl;
1777
1778	tlb_change_page_size(tlb, HPAGE_PMD_SIZE);
 
 
 
 
 
 
1779
1780	ptl = __pmd_trans_huge_lock(pmd, vma);
1781	if (!ptl)
1782		return 0;
1783	/*
1784	 * For architectures like ppc64 we look at deposited pgtable
1785	 * when calling pmdp_huge_get_and_clear. So do the
1786	 * pgtable_trans_huge_withdraw after finishing pmdp related
1787	 * operations.
1788	 */
1789	orig_pmd = pmdp_huge_get_and_clear_full(tlb->mm, addr, pmd,
1790			tlb->fullmm);
1791	tlb_remove_pmd_tlb_entry(tlb, pmd, addr);
1792	if (vma_is_dax(vma)) {
1793		if (arch_needs_pgtable_deposit())
1794			zap_deposited_table(tlb->mm, pmd);
1795		spin_unlock(ptl);
1796		if (is_huge_zero_pmd(orig_pmd))
1797			tlb_remove_page_size(tlb, pmd_page(orig_pmd), HPAGE_PMD_SIZE);
1798	} else if (is_huge_zero_pmd(orig_pmd)) {
1799		zap_deposited_table(tlb->mm, pmd);
1800		spin_unlock(ptl);
1801		tlb_remove_page_size(tlb, pmd_page(orig_pmd), HPAGE_PMD_SIZE);
1802	} else {
1803		struct page *page = NULL;
1804		int flush_needed = 1;
1805
1806		if (pmd_present(orig_pmd)) {
1807			page = pmd_page(orig_pmd);
1808			page_remove_rmap(page, true);
1809			VM_BUG_ON_PAGE(page_mapcount(page) < 0, page);
1810			VM_BUG_ON_PAGE(!PageHead(page), page);
1811		} else if (thp_migration_supported()) {
1812			swp_entry_t entry;
1813
1814			VM_BUG_ON(!is_pmd_migration_entry(orig_pmd));
1815			entry = pmd_to_swp_entry(orig_pmd);
1816			page = pfn_to_page(swp_offset(entry));
1817			flush_needed = 0;
1818		} else
1819			WARN_ONCE(1, "Non present huge pmd without pmd migration enabled!");
1820
1821		if (PageAnon(page)) {
1822			zap_deposited_table(tlb->mm, pmd);
1823			add_mm_counter(tlb->mm, MM_ANONPAGES, -HPAGE_PMD_NR);
1824		} else {
1825			if (arch_needs_pgtable_deposit())
1826				zap_deposited_table(tlb->mm, pmd);
1827			add_mm_counter(tlb->mm, mm_counter_file(page), -HPAGE_PMD_NR);
1828		}
1829
1830		spin_unlock(ptl);
1831		if (flush_needed)
1832			tlb_remove_page_size(tlb, page, HPAGE_PMD_SIZE);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1833	}
1834	return 1;
 
1835}
1836
1837#ifndef pmd_move_must_withdraw
1838static inline int pmd_move_must_withdraw(spinlock_t *new_pmd_ptl,
1839					 spinlock_t *old_pmd_ptl,
1840					 struct vm_area_struct *vma)
1841{
1842	/*
1843	 * With split pmd lock we also need to move preallocated
1844	 * PTE page table if new_pmd is on different PMD page table.
1845	 *
1846	 * We also don't deposit and withdraw tables for file pages.
1847	 */
1848	return (new_pmd_ptl != old_pmd_ptl) && vma_is_anonymous(vma);
1849}
1850#endif
1851
1852static pmd_t move_soft_dirty_pmd(pmd_t pmd)
1853{
1854#ifdef CONFIG_MEM_SOFT_DIRTY
1855	if (unlikely(is_pmd_migration_entry(pmd)))
1856		pmd = pmd_swp_mksoft_dirty(pmd);
1857	else if (pmd_present(pmd))
1858		pmd = pmd_mksoft_dirty(pmd);
1859#endif
1860	return pmd;
1861}
1862
1863bool move_huge_pmd(struct vm_area_struct *vma, unsigned long old_addr,
1864		  unsigned long new_addr, unsigned long old_end,
1865		  pmd_t *old_pmd, pmd_t *new_pmd)
1866{
1867	spinlock_t *old_ptl, *new_ptl;
1868	pmd_t pmd;
1869	struct mm_struct *mm = vma->vm_mm;
1870	bool force_flush = false;
1871
1872	if ((old_addr & ~HPAGE_PMD_MASK) ||
1873	    (new_addr & ~HPAGE_PMD_MASK) ||
1874	    old_end - old_addr < HPAGE_PMD_SIZE)
1875		return false;
1876
1877	/*
1878	 * The destination pmd shouldn't be established, free_pgtables()
1879	 * should have release it.
1880	 */
1881	if (WARN_ON(!pmd_none(*new_pmd))) {
1882		VM_BUG_ON(pmd_trans_huge(*new_pmd));
1883		return false;
1884	}
1885
1886	/*
1887	 * We don't have to worry about the ordering of src and dst
1888	 * ptlocks because exclusive mmap_sem prevents deadlock.
1889	 */
1890	old_ptl = __pmd_trans_huge_lock(old_pmd, vma);
1891	if (old_ptl) {
1892		new_ptl = pmd_lockptr(mm, new_pmd);
1893		if (new_ptl != old_ptl)
1894			spin_lock_nested(new_ptl, SINGLE_DEPTH_NESTING);
1895		pmd = pmdp_huge_get_and_clear(mm, old_addr, old_pmd);
1896		if (pmd_present(pmd))
1897			force_flush = true;
1898		VM_BUG_ON(!pmd_none(*new_pmd));
1899
1900		if (pmd_move_must_withdraw(new_ptl, old_ptl, vma)) {
1901			pgtable_t pgtable;
1902			pgtable = pgtable_trans_huge_withdraw(mm, old_pmd);
1903			pgtable_trans_huge_deposit(mm, new_pmd, pgtable);
1904		}
1905		pmd = move_soft_dirty_pmd(pmd);
1906		set_pmd_at(mm, new_addr, new_pmd, pmd);
1907		if (force_flush)
1908			flush_tlb_range(vma, old_addr, old_addr + PMD_SIZE);
1909		if (new_ptl != old_ptl)
1910			spin_unlock(new_ptl);
1911		spin_unlock(old_ptl);
1912		return true;
1913	}
1914	return false;
1915}
1916
1917/*
1918 * Returns
1919 *  - 0 if PMD could not be locked
1920 *  - 1 if PMD was locked but protections unchange and TLB flush unnecessary
1921 *  - HPAGE_PMD_NR is protections changed and TLB flush necessary
1922 */
1923int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
1924		unsigned long addr, pgprot_t newprot, int prot_numa)
1925{
1926	struct mm_struct *mm = vma->vm_mm;
1927	spinlock_t *ptl;
1928	pmd_t entry;
1929	bool preserve_write;
1930	int ret;
1931
1932	ptl = __pmd_trans_huge_lock(pmd, vma);
1933	if (!ptl)
1934		return 0;
1935
1936	preserve_write = prot_numa && pmd_write(*pmd);
1937	ret = 1;
1938
1939#ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION
1940	if (is_swap_pmd(*pmd)) {
1941		swp_entry_t entry = pmd_to_swp_entry(*pmd);
1942
1943		VM_BUG_ON(!is_pmd_migration_entry(*pmd));
1944		if (is_write_migration_entry(entry)) {
1945			pmd_t newpmd;
1946			/*
1947			 * A protection check is difficult so
1948			 * just be safe and disable write
1949			 */
1950			make_migration_entry_read(&entry);
1951			newpmd = swp_entry_to_pmd(entry);
1952			if (pmd_swp_soft_dirty(*pmd))
1953				newpmd = pmd_swp_mksoft_dirty(newpmd);
1954			set_pmd_at(mm, addr, pmd, newpmd);
1955		}
1956		goto unlock;
1957	}
1958#endif
1959
1960	/*
1961	 * Avoid trapping faults against the zero page. The read-only
1962	 * data is likely to be read-cached on the local CPU and
1963	 * local/remote hits to the zero page are not interesting.
1964	 */
1965	if (prot_numa && is_huge_zero_pmd(*pmd))
1966		goto unlock;
1967
1968	if (prot_numa && pmd_protnone(*pmd))
1969		goto unlock;
1970
1971	/*
1972	 * In case prot_numa, we are under down_read(mmap_sem). It's critical
1973	 * to not clear pmd intermittently to avoid race with MADV_DONTNEED
1974	 * which is also under down_read(mmap_sem):
1975	 *
1976	 *	CPU0:				CPU1:
1977	 *				change_huge_pmd(prot_numa=1)
1978	 *				 pmdp_huge_get_and_clear_notify()
1979	 * madvise_dontneed()
1980	 *  zap_pmd_range()
1981	 *   pmd_trans_huge(*pmd) == 0 (without ptl)
1982	 *   // skip the pmd
1983	 *				 set_pmd_at();
1984	 *				 // pmd is re-established
1985	 *
1986	 * The race makes MADV_DONTNEED miss the huge pmd and don't clear it
1987	 * which may break userspace.
1988	 *
1989	 * pmdp_invalidate() is required to make sure we don't miss
1990	 * dirty/young flags set by hardware.
1991	 */
1992	entry = pmdp_invalidate(vma, addr, pmd);
1993
1994	entry = pmd_modify(entry, newprot);
1995	if (preserve_write)
1996		entry = pmd_mk_savedwrite(entry);
1997	ret = HPAGE_PMD_NR;
1998	set_pmd_at(mm, addr, pmd, entry);
1999	BUG_ON(vma_is_anonymous(vma) && !preserve_write && pmd_write(entry));
2000unlock:
2001	spin_unlock(ptl);
2002	return ret;
2003}
2004
2005/*
2006 * Returns page table lock pointer if a given pmd maps a thp, NULL otherwise.
2007 *
2008 * Note that if it returns page table lock pointer, this routine returns without
2009 * unlocking page table lock. So callers must unlock it.
2010 */
2011spinlock_t *__pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma)
2012{
2013	spinlock_t *ptl;
2014	ptl = pmd_lock(vma->vm_mm, pmd);
2015	if (likely(is_swap_pmd(*pmd) || pmd_trans_huge(*pmd) ||
2016			pmd_devmap(*pmd)))
2017		return ptl;
2018	spin_unlock(ptl);
2019	return NULL;
2020}
 
2021
2022/*
2023 * Returns true if a given pud maps a thp, false otherwise.
2024 *
2025 * Note that if it returns true, this routine returns without unlocking page
2026 * table lock. So callers must unlock it.
2027 */
2028spinlock_t *__pud_trans_huge_lock(pud_t *pud, struct vm_area_struct *vma)
2029{
2030	spinlock_t *ptl;
2031
2032	ptl = pud_lock(vma->vm_mm, pud);
2033	if (likely(pud_trans_huge(*pud) || pud_devmap(*pud)))
2034		return ptl;
2035	spin_unlock(ptl);
 
 
 
 
2036	return NULL;
2037}
2038
2039#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
2040int zap_huge_pud(struct mmu_gather *tlb, struct vm_area_struct *vma,
2041		 pud_t *pud, unsigned long addr)
2042{
2043	spinlock_t *ptl;
2044
2045	ptl = __pud_trans_huge_lock(pud, vma);
2046	if (!ptl)
2047		return 0;
2048	/*
2049	 * For architectures like ppc64 we look at deposited pgtable
2050	 * when calling pudp_huge_get_and_clear. So do the
2051	 * pgtable_trans_huge_withdraw after finishing pudp related
2052	 * operations.
2053	 */
2054	pudp_huge_get_and_clear_full(tlb->mm, addr, pud, tlb->fullmm);
2055	tlb_remove_pud_tlb_entry(tlb, pud, addr);
2056	if (vma_is_dax(vma)) {
2057		spin_unlock(ptl);
2058		/* No zero page support yet */
2059	} else {
2060		/* No support for anonymous PUD pages yet */
2061		BUG();
2062	}
2063	return 1;
2064}
2065
2066static void __split_huge_pud_locked(struct vm_area_struct *vma, pud_t *pud,
2067		unsigned long haddr)
2068{
2069	VM_BUG_ON(haddr & ~HPAGE_PUD_MASK);
2070	VM_BUG_ON_VMA(vma->vm_start > haddr, vma);
2071	VM_BUG_ON_VMA(vma->vm_end < haddr + HPAGE_PUD_SIZE, vma);
2072	VM_BUG_ON(!pud_trans_huge(*pud) && !pud_devmap(*pud));
2073
2074	count_vm_event(THP_SPLIT_PUD);
2075
2076	pudp_huge_clear_flush_notify(vma, haddr, pud);
2077}
2078
2079void __split_huge_pud(struct vm_area_struct *vma, pud_t *pud,
2080		unsigned long address)
2081{
2082	spinlock_t *ptl;
2083	struct mmu_notifier_range range;
 
 
 
 
2084
2085	mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma, vma->vm_mm,
2086				address & HPAGE_PUD_MASK,
2087				(address & HPAGE_PUD_MASK) + HPAGE_PUD_SIZE);
2088	mmu_notifier_invalidate_range_start(&range);
2089	ptl = pud_lock(vma->vm_mm, pud);
2090	if (unlikely(!pud_trans_huge(*pud) && !pud_devmap(*pud)))
2091		goto out;
2092	__split_huge_pud_locked(vma, pud, range.start);
2093
2094out:
2095	spin_unlock(ptl);
2096	/*
2097	 * No need to double call mmu_notifier->invalidate_range() callback as
2098	 * the above pudp_huge_clear_flush_notify() did already call it.
2099	 */
2100	mmu_notifier_invalidate_range_only_end(&range);
 
 
 
 
 
 
 
 
2101}
2102#endif /* CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */
2103
2104static void __split_huge_zero_page_pmd(struct vm_area_struct *vma,
2105		unsigned long haddr, pmd_t *pmd)
2106{
2107	struct mm_struct *mm = vma->vm_mm;
2108	pgtable_t pgtable;
2109	pmd_t _pmd;
2110	int i;
2111
 
 
 
 
 
2112	/*
2113	 * Leave pmd empty until pte is filled note that it is fine to delay
2114	 * notification until mmu_notifier_invalidate_range_end() as we are
2115	 * replacing a zero pmd write protected page with a zero pte write
2116	 * protected page.
2117	 *
2118	 * See Documentation/vm/mmu_notifier.rst
2119	 */
2120	pmdp_huge_clear_flush(vma, haddr, pmd);
 
 
 
 
 
 
2121
2122	pgtable = pgtable_trans_huge_withdraw(mm, pmd);
2123	pmd_populate(mm, &_pmd, pgtable);
 
 
2124
2125	for (i = 0; i < HPAGE_PMD_NR; i++, haddr += PAGE_SIZE) {
2126		pte_t *pte, entry;
2127		entry = pfn_pte(my_zero_pfn(haddr), vma->vm_page_prot);
2128		entry = pte_mkspecial(entry);
2129		pte = pte_offset_map(&_pmd, haddr);
2130		VM_BUG_ON(!pte_none(*pte));
2131		set_pte_at(mm, haddr, pte, entry);
2132		pte_unmap(pte);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2133	}
2134	smp_wmb(); /* make pte visible before pmd */
2135	pmd_populate(mm, pmd, pgtable);
2136}
2137
2138static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd,
2139		unsigned long haddr, bool freeze)
2140{
2141	struct mm_struct *mm = vma->vm_mm;
2142	struct page *page;
2143	pgtable_t pgtable;
2144	pmd_t old_pmd, _pmd;
2145	bool young, write, soft_dirty, pmd_migration = false;
2146	unsigned long addr;
2147	int i;
2148
2149	VM_BUG_ON(haddr & ~HPAGE_PMD_MASK);
2150	VM_BUG_ON_VMA(vma->vm_start > haddr, vma);
2151	VM_BUG_ON_VMA(vma->vm_end < haddr + HPAGE_PMD_SIZE, vma);
2152	VM_BUG_ON(!is_pmd_migration_entry(*pmd) && !pmd_trans_huge(*pmd)
2153				&& !pmd_devmap(*pmd));
 
 
 
2154
2155	count_vm_event(THP_SPLIT_PMD);
 
 
 
2156
2157	if (!vma_is_anonymous(vma)) {
2158		_pmd = pmdp_huge_clear_flush_notify(vma, haddr, pmd);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2159		/*
2160		 * We are going to unmap this huge page. So
2161		 * just go ahead and zap it
 
 
2162		 */
2163		if (arch_needs_pgtable_deposit())
2164			zap_deposited_table(mm, pmd);
2165		if (vma_is_dax(vma))
2166			return;
2167		page = pmd_page(_pmd);
2168		if (!PageDirty(page) && pmd_dirty(_pmd))
2169			set_page_dirty(page);
2170		if (!PageReferenced(page) && pmd_young(_pmd))
2171			SetPageReferenced(page);
2172		page_remove_rmap(page, true);
2173		put_page(page);
2174		add_mm_counter(mm, mm_counter_file(page), -HPAGE_PMD_NR);
2175		return;
2176	} else if (is_huge_zero_pmd(*pmd)) {
2177		/*
2178		 * FIXME: Do we want to invalidate secondary mmu by calling
2179		 * mmu_notifier_invalidate_range() see comments below inside
2180		 * __split_huge_pmd() ?
2181		 *
2182		 * We are going from a zero huge page write protected to zero
2183		 * small page also write protected so it does not seems useful
2184		 * to invalidate secondary mmu at this time.
2185		 */
2186		return __split_huge_zero_page_pmd(vma, haddr, pmd);
 
 
 
 
 
 
 
 
 
 
 
 
 
2187	}
 
 
 
 
 
 
 
2188
2189	/*
2190	 * Up to this point the pmd is present and huge and userland has the
2191	 * whole access to the hugepage during the split (which happens in
2192	 * place). If we overwrite the pmd with the not-huge version pointing
2193	 * to the pte here (which of course we could if all CPUs were bug
2194	 * free), userland could trigger a small page size TLB miss on the
2195	 * small sized TLB while the hugepage TLB entry is still established in
2196	 * the huge TLB. Some CPU doesn't like that.
2197	 * See http://support.amd.com/us/Processor_TechDocs/41322.pdf, Erratum
2198	 * 383 on page 93. Intel should be safe but is also warns that it's
2199	 * only safe if the permission and cache attributes of the two entries
2200	 * loaded in the two TLB is identical (which should be the case here).
2201	 * But it is generally safer to never allow small and huge TLB entries
2202	 * for the same virtual address to be loaded simultaneously. So instead
2203	 * of doing "pmd_populate(); flush_pmd_tlb_range();" we first mark the
2204	 * current pmd notpresent (atomically because here the pmd_trans_huge
2205	 * must remain set at all times on the pmd until the split is complete
2206	 * for this pmd), then we flush the SMP TLB and finally we write the
2207	 * non-huge version of the pmd entry with pmd_populate.
2208	 */
2209	old_pmd = pmdp_invalidate(vma, haddr, pmd);
2210
2211	pmd_migration = is_pmd_migration_entry(old_pmd);
2212	if (unlikely(pmd_migration)) {
2213		swp_entry_t entry;
2214
2215		entry = pmd_to_swp_entry(old_pmd);
2216		page = pfn_to_page(swp_offset(entry));
2217		write = is_write_migration_entry(entry);
2218		young = false;
2219		soft_dirty = pmd_swp_soft_dirty(old_pmd);
2220	} else {
2221		page = pmd_page(old_pmd);
2222		if (pmd_dirty(old_pmd))
2223			SetPageDirty(page);
2224		write = pmd_write(old_pmd);
2225		young = pmd_young(old_pmd);
2226		soft_dirty = pmd_soft_dirty(old_pmd);
2227	}
2228	VM_BUG_ON_PAGE(!page_count(page), page);
2229	page_ref_add(page, HPAGE_PMD_NR - 1);
2230
2231	/*
2232	 * Withdraw the table only after we mark the pmd entry invalid.
2233	 * This's critical for some architectures (Power).
2234	 */
2235	pgtable = pgtable_trans_huge_withdraw(mm, pmd);
2236	pmd_populate(mm, &_pmd, pgtable);
2237
2238	for (i = 0, addr = haddr; i < HPAGE_PMD_NR; i++, addr += PAGE_SIZE) {
2239		pte_t entry, *pte;
2240		/*
2241		 * Note that NUMA hinting access restrictions are not
2242		 * transferred to avoid any possibility of altering
2243		 * permissions across VMAs.
2244		 */
2245		if (freeze || pmd_migration) {
2246			swp_entry_t swp_entry;
2247			swp_entry = make_migration_entry(page + i, write);
2248			entry = swp_entry_to_pte(swp_entry);
2249			if (soft_dirty)
2250				entry = pte_swp_mksoft_dirty(entry);
2251		} else {
2252			entry = mk_pte(page + i, READ_ONCE(vma->vm_page_prot));
2253			entry = maybe_mkwrite(entry, vma);
2254			if (!write)
2255				entry = pte_wrprotect(entry);
2256			if (!young)
2257				entry = pte_mkold(entry);
2258			if (soft_dirty)
2259				entry = pte_mksoft_dirty(entry);
 
 
 
 
 
 
 
 
 
 
 
2260		}
2261		pte = pte_offset_map(&_pmd, addr);
2262		BUG_ON(!pte_none(*pte));
2263		set_pte_at(mm, addr, pte, entry);
2264		atomic_inc(&page[i]._mapcount);
2265		pte_unmap(pte);
2266	}
2267
2268	/*
2269	 * Set PG_double_map before dropping compound_mapcount to avoid
2270	 * false-negative page_mapped().
2271	 */
2272	if (compound_mapcount(page) > 1 && !TestSetPageDoubleMap(page)) {
2273		for (i = 0; i < HPAGE_PMD_NR; i++)
2274			atomic_inc(&page[i]._mapcount);
2275	}
2276
2277	if (atomic_add_negative(-1, compound_mapcount_ptr(page))) {
2278		/* Last compound_mapcount is gone. */
2279		__dec_node_page_state(page, NR_ANON_THPS);
2280		if (TestClearPageDoubleMap(page)) {
2281			/* No need in mapcount reference anymore */
2282			for (i = 0; i < HPAGE_PMD_NR; i++)
2283				atomic_dec(&page[i]._mapcount);
2284		}
2285	}
2286
2287	smp_wmb(); /* make pte visible before pmd */
2288	pmd_populate(mm, pmd, pgtable);
2289
2290	if (freeze) {
2291		for (i = 0; i < HPAGE_PMD_NR; i++) {
2292			page_remove_rmap(page + i, false);
2293			put_page(page + i);
2294		}
2295	}
2296}
2297
2298void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
2299		unsigned long address, bool freeze, struct page *page)
 
 
 
2300{
 
 
 
 
 
 
2301	spinlock_t *ptl;
2302	struct mmu_notifier_range range;
 
2303
2304	mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma, vma->vm_mm,
2305				address & HPAGE_PMD_MASK,
2306				(address & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE);
2307	mmu_notifier_invalidate_range_start(&range);
2308	ptl = pmd_lock(vma->vm_mm, pmd);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2309
2310	/*
2311	 * If caller asks to setup a migration entries, we need a page to check
2312	 * pmd against. Otherwise we can end up replacing wrong page.
 
2313	 */
2314	VM_BUG_ON(freeze && !page);
2315	if (page && page != pmd_page(*pmd))
2316	        goto out;
 
 
 
 
 
 
2317
2318	if (pmd_trans_huge(*pmd)) {
2319		page = pmd_page(*pmd);
2320		if (PageMlocked(page))
2321			clear_page_mlock(page);
2322	} else if (!(pmd_devmap(*pmd) || is_pmd_migration_entry(*pmd)))
 
 
2323		goto out;
2324	__split_huge_pmd_locked(vma, pmd, range.start, freeze);
2325out:
2326	spin_unlock(ptl);
2327	/*
2328	 * No need to double call mmu_notifier->invalidate_range() callback.
2329	 * They are 3 cases to consider inside __split_huge_pmd_locked():
2330	 *  1) pmdp_huge_clear_flush_notify() call invalidate_range() obvious
2331	 *  2) __split_huge_zero_page_pmd() read only zero page and any write
2332	 *    fault will trigger a flush_notify before pointing to a new page
2333	 *    (it is fine if the secondary mmu keeps pointing to the old zero
2334	 *    page in the meantime)
2335	 *  3) Split a huge pmd into pte pointing to the same page. No need
2336	 *     to invalidate secondary tlb entry they are all still valid.
2337	 *     any further changes to individual pte will notify. So no need
2338	 *     to call mmu_notifier->invalidate_range()
2339	 */
2340	mmu_notifier_invalidate_range_only_end(&range);
2341}
2342
2343void split_huge_pmd_address(struct vm_area_struct *vma, unsigned long address,
2344		bool freeze, struct page *page)
2345{
2346	pgd_t *pgd;
2347	p4d_t *p4d;
2348	pud_t *pud;
2349	pmd_t *pmd;
2350
2351	pgd = pgd_offset(vma->vm_mm, address);
2352	if (!pgd_present(*pgd))
2353		return;
2354
2355	p4d = p4d_offset(pgd, address);
2356	if (!p4d_present(*p4d))
2357		return;
2358
2359	pud = pud_offset(p4d, address);
2360	if (!pud_present(*pud))
2361		return;
2362
2363	pmd = pmd_offset(pud, address);
 
 
 
2364
2365	__split_huge_pmd(vma, pmd, address, freeze, page);
2366}
2367
2368void vma_adjust_trans_huge(struct vm_area_struct *vma,
2369			     unsigned long start,
2370			     unsigned long end,
2371			     long adjust_next)
2372{
2373	/*
2374	 * If the new start address isn't hpage aligned and it could
2375	 * previously contain an hugepage: check if we need to split
2376	 * an huge pmd.
2377	 */
2378	if (start & ~HPAGE_PMD_MASK &&
2379	    (start & HPAGE_PMD_MASK) >= vma->vm_start &&
2380	    (start & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE <= vma->vm_end)
2381		split_huge_pmd_address(vma, start, false, NULL);
2382
 
2383	/*
2384	 * If the new end address isn't hpage aligned and it could
2385	 * previously contain an hugepage: check if we need to split
2386	 * an huge pmd.
 
2387	 */
2388	if (end & ~HPAGE_PMD_MASK &&
2389	    (end & HPAGE_PMD_MASK) >= vma->vm_start &&
2390	    (end & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE <= vma->vm_end)
2391		split_huge_pmd_address(vma, end, false, NULL);
2392
2393	/*
2394	 * If we're also updating the vma->vm_next->vm_start, if the new
2395	 * vm_next->vm_start isn't page aligned and it could previously
2396	 * contain an hugepage: check if we need to split an huge pmd.
2397	 */
2398	if (adjust_next > 0) {
2399		struct vm_area_struct *next = vma->vm_next;
2400		unsigned long nstart = next->vm_start;
2401		nstart += adjust_next << PAGE_SHIFT;
2402		if (nstart & ~HPAGE_PMD_MASK &&
2403		    (nstart & HPAGE_PMD_MASK) >= next->vm_start &&
2404		    (nstart & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE <= next->vm_end)
2405			split_huge_pmd_address(next, nstart, false, NULL);
2406	}
2407}
2408
2409static void unmap_page(struct page *page)
2410{
2411	enum ttu_flags ttu_flags = TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS |
2412		TTU_RMAP_LOCKED | TTU_SPLIT_HUGE_PMD;
2413	bool unmap_success;
2414
2415	VM_BUG_ON_PAGE(!PageHead(page), page);
2416
2417	if (PageAnon(page))
2418		ttu_flags |= TTU_SPLIT_FREEZE;
2419
2420	unmap_success = try_to_unmap(page, ttu_flags);
2421	VM_BUG_ON_PAGE(!unmap_success, page);
2422}
2423
2424static void remap_page(struct page *page)
2425{
2426	int i;
2427	if (PageTransHuge(page)) {
2428		remove_migration_ptes(page, page, true);
2429	} else {
2430		for (i = 0; i < HPAGE_PMD_NR; i++)
2431			remove_migration_ptes(page + i, page + i, true);
2432	}
2433}
2434
2435static void __split_huge_page_tail(struct page *head, int tail,
2436		struct lruvec *lruvec, struct list_head *list)
2437{
2438	struct page *page_tail = head + tail;
2439
2440	VM_BUG_ON_PAGE(atomic_read(&page_tail->_mapcount) != -1, page_tail);
2441
2442	/*
2443	 * Clone page flags before unfreezing refcount.
2444	 *
2445	 * After successful get_page_unless_zero() might follow flags change,
2446	 * for exmaple lock_page() which set PG_waiters.
2447	 */
2448	page_tail->flags &= ~PAGE_FLAGS_CHECK_AT_PREP;
2449	page_tail->flags |= (head->flags &
2450			((1L << PG_referenced) |
2451			 (1L << PG_swapbacked) |
2452			 (1L << PG_swapcache) |
2453			 (1L << PG_mlocked) |
2454			 (1L << PG_uptodate) |
2455			 (1L << PG_active) |
2456			 (1L << PG_workingset) |
2457			 (1L << PG_locked) |
2458			 (1L << PG_unevictable) |
2459			 (1L << PG_dirty)));
2460
2461	/* ->mapping in first tail page is compound_mapcount */
2462	VM_BUG_ON_PAGE(tail > 2 && page_tail->mapping != TAIL_MAPPING,
2463			page_tail);
2464	page_tail->mapping = head->mapping;
2465	page_tail->index = head->index + tail;
2466
2467	/* Page flags must be visible before we make the page non-compound. */
2468	smp_wmb();
 
 
2469
2470	/*
2471	 * Clear PageTail before unfreezing page refcount.
2472	 *
2473	 * After successful get_page_unless_zero() might follow put_page()
2474	 * which needs correct compound_head().
2475	 */
2476	clear_compound_head(page_tail);
2477
2478	/* Finally unfreeze refcount. Additional reference from page cache. */
2479	page_ref_unfreeze(page_tail, 1 + (!PageAnon(head) ||
2480					  PageSwapCache(head)));
 
 
 
 
 
2481
2482	if (page_is_young(head))
2483		set_page_young(page_tail);
2484	if (page_is_idle(head))
2485		set_page_idle(page_tail);
 
 
 
2486
2487	page_cpupid_xchg_last(page_tail, page_cpupid_last(head));
2488
2489	/*
2490	 * always add to the tail because some iterators expect new
2491	 * pages to show after the currently processed elements - e.g.
2492	 * migrate_pages
2493	 */
2494	lru_add_page_tail(head, page_tail, lruvec, list);
2495}
2496
2497static void __split_huge_page(struct page *page, struct list_head *list,
2498		pgoff_t end, unsigned long flags)
 
 
2499{
2500	struct page *head = compound_head(page);
2501	pg_data_t *pgdat = page_pgdat(head);
2502	struct lruvec *lruvec;
2503	struct address_space *swap_cache = NULL;
2504	unsigned long offset = 0;
2505	int i;
 
 
 
2506
2507	lruvec = mem_cgroup_page_lruvec(head, pgdat);
2508
2509	/* complete memcg works before add pages to LRU */
2510	mem_cgroup_split_huge_fixup(head);
 
2511
2512	if (PageAnon(head) && PageSwapCache(head)) {
2513		swp_entry_t entry = { .val = page_private(head) };
 
2514
2515		offset = swp_offset(entry);
2516		swap_cache = swap_address_space(entry);
2517		xa_lock(&swap_cache->i_pages);
2518	}
2519
2520	for (i = HPAGE_PMD_NR - 1; i >= 1; i--) {
2521		__split_huge_page_tail(head, i, lruvec, list);
2522		/* Some pages can be beyond i_size: drop them from page cache */
2523		if (head[i].index >= end) {
2524			ClearPageDirty(head + i);
2525			__delete_from_page_cache(head + i, NULL);
2526			if (IS_ENABLED(CONFIG_SHMEM) && PageSwapBacked(head))
2527				shmem_uncharge(head->mapping->host, 1);
2528			put_page(head + i);
2529		} else if (!PageAnon(page)) {
2530			__xa_store(&head->mapping->i_pages, head[i].index,
2531					head + i, 0);
2532		} else if (swap_cache) {
2533			__xa_store(&swap_cache->i_pages, offset + i,
2534					head + i, 0);
2535		}
2536	}
2537
2538	ClearPageCompound(head);
2539
2540	split_page_owner(head, HPAGE_PMD_ORDER);
2541
2542	/* See comment in __split_huge_page_tail() */
2543	if (PageAnon(head)) {
2544		/* Additional pin to swap cache */
2545		if (PageSwapCache(head)) {
2546			page_ref_add(head, 2);
2547			xa_unlock(&swap_cache->i_pages);
2548		} else {
2549			page_ref_inc(head);
2550		}
2551	} else {
2552		/* Additional pin to page cache */
2553		page_ref_add(head, 2);
2554		xa_unlock(&head->mapping->i_pages);
2555	}
2556
2557	spin_unlock_irqrestore(&pgdat->lru_lock, flags);
2558
2559	remap_page(head);
2560
2561	for (i = 0; i < HPAGE_PMD_NR; i++) {
2562		struct page *subpage = head + i;
2563		if (subpage == page)
2564			continue;
2565		unlock_page(subpage);
2566
2567		/*
2568		 * Subpages may be freed if there wasn't any mapping
2569		 * like if add_to_swap() is running on a lru page that
2570		 * had its mapping zapped. And freeing these pages
2571		 * requires taking the lru_lock so we do the put_page
2572		 * of the tail pages after the split is complete.
2573		 */
2574		put_page(subpage);
 
 
 
 
 
 
 
 
 
 
2575	}
 
 
 
 
 
 
 
 
 
2576}
2577
2578int total_mapcount(struct page *page)
2579{
2580	int i, compound, ret;
2581
2582	VM_BUG_ON_PAGE(PageTail(page), page);
2583
2584	if (likely(!PageCompound(page)))
2585		return atomic_read(&page->_mapcount) + 1;
 
 
2586
2587	compound = compound_mapcount(page);
2588	if (PageHuge(page))
2589		return compound;
2590	ret = compound;
2591	for (i = 0; i < HPAGE_PMD_NR; i++)
2592		ret += atomic_read(&page[i]._mapcount) + 1;
2593	/* File pages has compound_mapcount included in _mapcount */
2594	if (!PageAnon(page))
2595		return ret - compound * HPAGE_PMD_NR;
2596	if (PageDoubleMap(page))
2597		ret -= HPAGE_PMD_NR;
2598	return ret;
2599}
2600
2601/*
2602 * This calculates accurately how many mappings a transparent hugepage
2603 * has (unlike page_mapcount() which isn't fully accurate). This full
2604 * accuracy is primarily needed to know if copy-on-write faults can
2605 * reuse the page and change the mapping to read-write instead of
2606 * copying them. At the same time this returns the total_mapcount too.
2607 *
2608 * The function returns the highest mapcount any one of the subpages
2609 * has. If the return value is one, even if different processes are
2610 * mapping different subpages of the transparent hugepage, they can
2611 * all reuse it, because each process is reusing a different subpage.
2612 *
2613 * The total_mapcount is instead counting all virtual mappings of the
2614 * subpages. If the total_mapcount is equal to "one", it tells the
2615 * caller all mappings belong to the same "mm" and in turn the
2616 * anon_vma of the transparent hugepage can become the vma->anon_vma
2617 * local one as no other process may be mapping any of the subpages.
2618 *
2619 * It would be more accurate to replace page_mapcount() with
2620 * page_trans_huge_mapcount(), however we only use
2621 * page_trans_huge_mapcount() in the copy-on-write faults where we
2622 * need full accuracy to avoid breaking page pinning, because
2623 * page_trans_huge_mapcount() is slower than page_mapcount().
2624 */
2625int page_trans_huge_mapcount(struct page *page, int *total_mapcount)
2626{
2627	int i, ret, _total_mapcount, mapcount;
 
 
 
2628
2629	/* hugetlbfs shouldn't call it */
2630	VM_BUG_ON_PAGE(PageHuge(page), page);
2631
2632	if (likely(!PageTransCompound(page))) {
2633		mapcount = atomic_read(&page->_mapcount) + 1;
2634		if (total_mapcount)
2635			*total_mapcount = mapcount;
2636		return mapcount;
 
 
2637	}
 
2638
2639	page = compound_head(page);
2640
2641	_total_mapcount = ret = 0;
2642	for (i = 0; i < HPAGE_PMD_NR; i++) {
2643		mapcount = atomic_read(&page[i]._mapcount) + 1;
2644		ret = max(ret, mapcount);
2645		_total_mapcount += mapcount;
2646	}
2647	if (PageDoubleMap(page)) {
2648		ret -= 1;
2649		_total_mapcount -= HPAGE_PMD_NR;
2650	}
2651	mapcount = compound_mapcount(page);
2652	ret += mapcount;
2653	_total_mapcount += mapcount;
2654	if (total_mapcount)
2655		*total_mapcount = _total_mapcount;
2656	return ret;
2657}
2658
2659/* Racy check whether the huge page can be split */
2660bool can_split_huge_page(struct page *page, int *pextra_pins)
2661{
2662	int extra_pins;
2663
2664	/* Additional pins from page cache */
2665	if (PageAnon(page))
2666		extra_pins = PageSwapCache(page) ? HPAGE_PMD_NR : 0;
2667	else
2668		extra_pins = HPAGE_PMD_NR;
2669	if (pextra_pins)
2670		*pextra_pins = extra_pins;
2671	return total_mapcount(page) == page_count(page) - extra_pins - 1;
2672}
2673
2674/*
2675 * This function splits huge page into normal pages. @page can point to any
2676 * subpage of huge page to split. Split doesn't change the position of @page.
2677 *
2678 * Only caller must hold pin on the @page, otherwise split fails with -EBUSY.
2679 * The huge page must be locked.
2680 *
2681 * If @list is null, tail pages will be added to LRU list, otherwise, to @list.
2682 *
2683 * Both head page and tail pages will inherit mapping, flags, and so on from
2684 * the hugepage.
2685 *
2686 * GUP pin and PG_locked transferred to @page. Rest subpages can be freed if
2687 * they are not mapped.
2688 *
2689 * Returns 0 if the hugepage is split successfully.
2690 * Returns -EBUSY if the page is pinned or if anon_vma disappeared from under
2691 * us.
2692 */
2693int split_huge_page_to_list(struct page *page, struct list_head *list)
2694{
2695	struct page *head = compound_head(page);
2696	struct pglist_data *pgdata = NODE_DATA(page_to_nid(head));
2697	struct deferred_split *ds_queue = get_deferred_split_queue(page);
2698	struct anon_vma *anon_vma = NULL;
2699	struct address_space *mapping = NULL;
2700	int count, mapcount, extra_pins, ret;
2701	bool mlocked;
2702	unsigned long flags;
2703	pgoff_t end;
2704
2705	VM_BUG_ON_PAGE(is_huge_zero_page(page), page);
2706	VM_BUG_ON_PAGE(!PageLocked(page), page);
2707	VM_BUG_ON_PAGE(!PageCompound(page), page);
2708
2709	if (PageWriteback(page))
2710		return -EBUSY;
2711
2712	if (PageAnon(head)) {
2713		/*
2714		 * The caller does not necessarily hold an mmap_sem that would
2715		 * prevent the anon_vma disappearing so we first we take a
2716		 * reference to it and then lock the anon_vma for write. This
2717		 * is similar to page_lock_anon_vma_read except the write lock
2718		 * is taken to serialise against parallel split or collapse
2719		 * operations.
2720		 */
2721		anon_vma = page_get_anon_vma(head);
2722		if (!anon_vma) {
2723			ret = -EBUSY;
2724			goto out;
2725		}
2726		end = -1;
2727		mapping = NULL;
2728		anon_vma_lock_write(anon_vma);
2729	} else {
2730		mapping = head->mapping;
2731
2732		/* Truncated ? */
2733		if (!mapping) {
2734			ret = -EBUSY;
2735			goto out;
 
 
2736		}
2737
2738		anon_vma = NULL;
2739		i_mmap_lock_read(mapping);
2740
2741		/*
2742		 *__split_huge_page() may need to trim off pages beyond EOF:
2743		 * but on 32-bit, i_size_read() takes an irq-unsafe seqlock,
2744		 * which cannot be nested inside the page tree lock. So note
2745		 * end now: i_size itself may be changed at any moment, but
2746		 * head page lock is good enough to serialize the trimming.
2747		 */
2748		end = DIV_ROUND_UP(i_size_read(mapping->host), PAGE_SIZE);
2749	}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2750
 
 
2751	/*
2752	 * Racy check if we can split the page, before unmap_page() will
2753	 * split PMDs
2754	 */
2755	if (!can_split_huge_page(head, &extra_pins)) {
2756		ret = -EBUSY;
2757		goto out_unlock;
2758	}
2759
2760	mlocked = PageMlocked(page);
2761	unmap_page(head);
2762	VM_BUG_ON_PAGE(compound_mapcount(head), head);
2763
2764	/* Make sure the page is not on per-CPU pagevec as it takes pin */
2765	if (mlocked)
2766		lru_add_drain();
2767
2768	/* prevent PageLRU to go away from under us, and freeze lru stats */
2769	spin_lock_irqsave(&pgdata->lru_lock, flags);
2770
2771	if (mapping) {
2772		XA_STATE(xas, &mapping->i_pages, page_index(head));
2773
2774		/*
2775		 * Check if the head page is present in page cache.
2776		 * We assume all tail are present too, if head is there.
 
2777		 */
2778		xa_lock(&mapping->i_pages);
2779		if (xas_load(&xas) != head)
2780			goto fail;
2781	}
2782
2783	/* Prevent deferred_split_scan() touching ->_refcount */
2784	spin_lock(&ds_queue->split_queue_lock);
2785	count = page_count(head);
2786	mapcount = total_mapcount(head);
2787	if (!mapcount && page_ref_freeze(head, 1 + extra_pins)) {
2788		if (!list_empty(page_deferred_list(head))) {
2789			ds_queue->split_queue_len--;
2790			list_del(page_deferred_list(head));
2791		}
2792		if (mapping) {
2793			if (PageSwapBacked(page))
2794				__dec_node_page_state(page, NR_SHMEM_THPS);
2795			else
2796				__dec_node_page_state(page, NR_FILE_THPS);
2797		}
2798
2799		spin_unlock(&ds_queue->split_queue_lock);
2800		__split_huge_page(page, list, end, flags);
2801		if (PageSwapCache(head)) {
2802			swp_entry_t entry = { .val = page_private(head) };
2803
2804			ret = split_swap_cluster(entry);
2805		} else
2806			ret = 0;
2807	} else {
2808		if (IS_ENABLED(CONFIG_DEBUG_VM) && mapcount) {
2809			pr_alert("total_mapcount: %u, page_count(): %u\n",
2810					mapcount, count);
2811			if (PageTail(page))
2812				dump_page(head, NULL);
2813			dump_page(page, "total_mapcount(head) > 0");
2814			BUG();
2815		}
2816		spin_unlock(&ds_queue->split_queue_lock);
2817fail:		if (mapping)
2818			xa_unlock(&mapping->i_pages);
2819		spin_unlock_irqrestore(&pgdata->lru_lock, flags);
2820		remap_page(head);
2821		ret = -EBUSY;
2822	}
2823
2824out_unlock:
2825	if (anon_vma) {
2826		anon_vma_unlock_write(anon_vma);
2827		put_anon_vma(anon_vma);
2828	}
2829	if (mapping)
2830		i_mmap_unlock_read(mapping);
2831out:
2832	count_vm_event(!ret ? THP_SPLIT_PAGE : THP_SPLIT_PAGE_FAILED);
2833	return ret;
2834}
2835
2836void free_transhuge_page(struct page *page)
2837{
2838	struct deferred_split *ds_queue = get_deferred_split_queue(page);
2839	unsigned long flags;
 
2840
2841	spin_lock_irqsave(&ds_queue->split_queue_lock, flags);
2842	if (!list_empty(page_deferred_list(page))) {
2843		ds_queue->split_queue_len--;
2844		list_del(page_deferred_list(page));
2845	}
2846	spin_unlock_irqrestore(&ds_queue->split_queue_lock, flags);
2847	free_compound_page(page);
2848}
2849
2850void deferred_split_huge_page(struct page *page)
2851{
2852	struct deferred_split *ds_queue = get_deferred_split_queue(page);
2853#ifdef CONFIG_MEMCG
2854	struct mem_cgroup *memcg = compound_head(page)->mem_cgroup;
2855#endif
2856	unsigned long flags;
2857
2858	VM_BUG_ON_PAGE(!PageTransHuge(page), page);
2859
2860	/*
2861	 * The try_to_unmap() in page reclaim path might reach here too,
2862	 * this may cause a race condition to corrupt deferred split queue.
2863	 * And, if page reclaim is already handling the same page, it is
2864	 * unnecessary to handle it again in shrinker.
2865	 *
2866	 * Check PageSwapCache to determine if the page is being
2867	 * handled by page reclaim since THP swap would add the page into
2868	 * swap cache before calling try_to_unmap().
2869	 */
2870	if (PageSwapCache(page))
2871		return;
2872
2873	spin_lock_irqsave(&ds_queue->split_queue_lock, flags);
2874	if (list_empty(page_deferred_list(page))) {
2875		count_vm_event(THP_DEFERRED_SPLIT_PAGE);
2876		list_add_tail(page_deferred_list(page), &ds_queue->split_queue);
2877		ds_queue->split_queue_len++;
2878#ifdef CONFIG_MEMCG
2879		if (memcg)
2880			memcg_set_shrinker_bit(memcg, page_to_nid(page),
2881					       deferred_split_shrinker.id);
 
 
 
2882#endif
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2883	}
2884	spin_unlock_irqrestore(&ds_queue->split_queue_lock, flags);
2885}
2886
2887static unsigned long deferred_split_count(struct shrinker *shrink,
2888		struct shrink_control *sc)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2889{
2890	struct pglist_data *pgdata = NODE_DATA(sc->nid);
2891	struct deferred_split *ds_queue = &pgdata->deferred_split_queue;
2892
2893#ifdef CONFIG_MEMCG
2894	if (sc->memcg)
2895		ds_queue = &sc->memcg->deferred_split_queue;
2896#endif
2897	return READ_ONCE(ds_queue->split_queue_len);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2898}
2899
2900static unsigned long deferred_split_scan(struct shrinker *shrink,
2901		struct shrink_control *sc)
2902{
2903	struct pglist_data *pgdata = NODE_DATA(sc->nid);
2904	struct deferred_split *ds_queue = &pgdata->deferred_split_queue;
2905	unsigned long flags;
2906	LIST_HEAD(list), *pos, *next;
2907	struct page *page;
2908	int split = 0;
 
2909
2910#ifdef CONFIG_MEMCG
2911	if (sc->memcg)
2912		ds_queue = &sc->memcg->deferred_split_queue;
2913#endif
 
2914
2915	spin_lock_irqsave(&ds_queue->split_queue_lock, flags);
2916	/* Take pin on all head pages to avoid freeing them under us */
2917	list_for_each_safe(pos, next, &ds_queue->split_queue) {
2918		page = list_entry((void *)pos, struct page, mapping);
2919		page = compound_head(page);
2920		if (get_page_unless_zero(page)) {
2921			list_move(page_deferred_list(page), &list);
2922		} else {
2923			/* We lost race with put_compound_page() */
2924			list_del_init(page_deferred_list(page));
2925			ds_queue->split_queue_len--;
2926		}
2927		if (!--sc->nr_to_scan)
2928			break;
2929	}
2930	spin_unlock_irqrestore(&ds_queue->split_queue_lock, flags);
2931
2932	list_for_each_safe(pos, next, &list) {
2933		page = list_entry((void *)pos, struct page, mapping);
2934		if (!trylock_page(page))
2935			goto next;
2936		/* split_huge_page() removes page from list on success */
2937		if (!split_huge_page(page))
2938			split++;
2939		unlock_page(page);
2940next:
2941		put_page(page);
2942	}
2943
2944	spin_lock_irqsave(&ds_queue->split_queue_lock, flags);
2945	list_splice_tail(&list, &ds_queue->split_queue);
2946	spin_unlock_irqrestore(&ds_queue->split_queue_lock, flags);
2947
2948	/*
2949	 * Stop shrinker if we didn't split any page, but the queue is empty.
2950	 * This can happen if pages were freed under us.
2951	 */
2952	if (!split && list_empty(&ds_queue->split_queue))
2953		return SHRINK_STOP;
2954	return split;
2955}
2956
2957static struct shrinker deferred_split_shrinker = {
2958	.count_objects = deferred_split_count,
2959	.scan_objects = deferred_split_scan,
2960	.seeks = DEFAULT_SEEKS,
2961	.flags = SHRINKER_NUMA_AWARE | SHRINKER_MEMCG_AWARE |
2962		 SHRINKER_NONSLAB,
2963};
2964
2965#ifdef CONFIG_DEBUG_FS
2966static int split_huge_pages_set(void *data, u64 val)
2967{
2968	struct zone *zone;
2969	struct page *page;
2970	unsigned long pfn, max_zone_pfn;
2971	unsigned long total = 0, split = 0;
2972
2973	if (val != 1)
2974		return -EINVAL;
2975
2976	for_each_populated_zone(zone) {
2977		max_zone_pfn = zone_end_pfn(zone);
2978		for (pfn = zone->zone_start_pfn; pfn < max_zone_pfn; pfn++) {
2979			if (!pfn_valid(pfn))
2980				continue;
2981
2982			page = pfn_to_page(pfn);
2983			if (!get_page_unless_zero(page))
2984				continue;
2985
2986			if (zone != page_zone(page))
2987				goto next;
2988
2989			if (!PageHead(page) || PageHuge(page) || !PageLRU(page))
2990				goto next;
2991
2992			total++;
2993			lock_page(page);
2994			if (!split_huge_page(page))
2995				split++;
2996			unlock_page(page);
2997next:
2998			put_page(page);
2999		}
3000	}
 
 
 
 
3001
3002	pr_info("%lu of %lu THP split\n", split, total);
3003
3004	return 0;
 
3005}
3006DEFINE_SIMPLE_ATTRIBUTE(split_huge_pages_fops, NULL, split_huge_pages_set,
3007		"%llu\n");
3008
3009static int __init split_huge_pages_debugfs(void)
 
3010{
3011	debugfs_create_file("split_huge_pages", 0200, NULL, NULL,
3012			    &split_huge_pages_fops);
3013	return 0;
3014}
3015late_initcall(split_huge_pages_debugfs);
3016#endif
3017
3018#ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION
3019void set_pmd_migration_entry(struct page_vma_mapped_walk *pvmw,
3020		struct page *page)
3021{
3022	struct vm_area_struct *vma = pvmw->vma;
3023	struct mm_struct *mm = vma->vm_mm;
3024	unsigned long address = pvmw->address;
3025	pmd_t pmdval;
3026	swp_entry_t entry;
3027	pmd_t pmdswp;
3028
3029	if (!(pvmw->pmd && !pvmw->pte))
 
3030		return;
3031
3032	flush_cache_range(vma, address, address + HPAGE_PMD_SIZE);
3033	pmdval = *pvmw->pmd;
3034	pmdp_invalidate(vma, address, pvmw->pmd);
3035	if (pmd_dirty(pmdval))
3036		set_page_dirty(page);
3037	entry = make_migration_entry(page, pmd_write(pmdval));
3038	pmdswp = swp_entry_to_pmd(entry);
3039	if (pmd_soft_dirty(pmdval))
3040		pmdswp = pmd_swp_mksoft_dirty(pmdswp);
3041	set_pmd_at(mm, address, pvmw->pmd, pmdswp);
3042	page_remove_rmap(page, true);
3043	put_page(page);
3044}
3045
3046void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new)
 
 
 
3047{
3048	struct vm_area_struct *vma = pvmw->vma;
3049	struct mm_struct *mm = vma->vm_mm;
3050	unsigned long address = pvmw->address;
3051	unsigned long mmun_start = address & HPAGE_PMD_MASK;
3052	pmd_t pmde;
3053	swp_entry_t entry;
 
 
 
3054
3055	if (!(pvmw->pmd && !pvmw->pte))
3056		return;
 
 
 
 
 
 
 
3057
3058	entry = pmd_to_swp_entry(*pvmw->pmd);
3059	get_page(new);
3060	pmde = pmd_mkold(mk_huge_pmd(new, vma->vm_page_prot));
3061	if (pmd_swp_soft_dirty(*pvmw->pmd))
3062		pmde = pmd_mksoft_dirty(pmde);
3063	if (is_write_migration_entry(entry))
3064		pmde = maybe_pmd_mkwrite(pmde, vma);
3065
3066	flush_cache_range(vma, mmun_start, mmun_start + HPAGE_PMD_SIZE);
3067	if (PageAnon(new))
3068		page_add_anon_rmap(new, vma, mmun_start, true);
3069	else
3070		page_add_file_rmap(new, true);
3071	set_pmd_at(mm, mmun_start, pvmw->pmd, pmde);
3072	if ((vma->vm_flags & VM_LOCKED) && !PageDoubleMap(new))
3073		mlock_vma_page(new);
3074	update_mmu_cache_pmd(vma, address, pvmw->pmd);
3075}
3076#endif