• Home
  • Raw
  • Download

Lines Matching full:page

42 other, not the struct page(s).
64 severely by huge pages, because each tail page adds a refcount to the
65 head page. And in fact, testing revealed that, without a separate pincount
66 field, refcount overflows were seen in some huge page stress tests.
81 of each page by +1.::
95 * An actual reference count, per struct page, is required. This is because
96 multiple processes may pin and unpin a page.
98 * False positives (reporting that a page is dma-pinned, when in fact it is not)
101 * struct page may not be increased in size for this, and all fields are already
104 * Given the above, we can overload the page->_refcount field by using, sort of,
106 rather than dividing page->_refcount into bit fields, we simple add a medium-
108 page->_refcount. This provides fuzzy behavior: if a page has get_page() called
116 when using FOLL_PIN. We only pretend to pin a zero page - we don't alter its
118 unpinning functions also don't do anything to a zero page. This is
153 because DAX pages do not have a separate page cache, and so "pinning" implies
158 CASE 3: MMU notifier registration, with or without page faulting hardware
166 Or, if the hardware supports replayable page faults, then the device driver can
169 callback, simply remove the range from the device's page tables.
175 CASE 4: Pinning for struct page manipulation only
177 If only struct page data (as opposed to the actual memory contents that a page
181 CASE 5: Pinning in order to write to the data within the page
184 write to a page's data, unpin" can cause a problem. Case 5 may be considered a
220 FOLL_GET is for struct page manipulation, without affecting the data that the
221 struct page refers to. FOLL_PIN is a *replacement* for FOLL_GET, and is for
248 acquired since the system was powered on. For huge pages, the head page is
249 pinned once for each page (head page and each tail page) within the huge page.
251 pages: the head page is refcounted once for each tail or head page in the huge
252 page, when get_user_pages() is applied to a huge page.
256 PAGE_SIZE granularity, even if the original pin was applied to a huge page.
261 for (each page in huge_page)
262 unpin_user_page(page);