How does get_user_pages() pin a process page in Linux?2019 Community Moderator ElectionHow do “pinned” pages in Linux present (or actually “pin”) themselvesHow does the linux kernel manage less than 1GB physical memory?Walking page tables of a process in LinuxDumping the pfn from /proc/<pid>/pagemap does not give the expected contentGetting a memory physical to pid mapping in linuxHow kernel threaduse memory descriptor(mm_struct) of last ran process in Linux?How are memory read, write, execute permissions enforced in the Linux kernel?Is there a way to use remap_pfn_range() to get hugepages?mmap query on linux platformcan we use virt_to_phys for user space memory in kernel module?How to count the anonymous pages and shared pages for a process in Linux using kernel module
What do you call someone who likes to pick fights?
School performs periodic password audits. Is my password compromised?
Are small insurances worth it?
Why couldn't the separatists legally leave the Republic?
What are some noteworthy "mic-drop" moments in math?
Confusion about Complex Continued Fraction
Recommendation letter by significant other if you worked with them professionally?
How can I manipulate the output of Information?
Windows Server Datacenter Edition - Unlimited Virtual Machines
Why do we say ‘pairwise disjoint’, rather than ‘disjoint’?
What ability score modifier does a javelin's damage use?
Doubts in understanding some concepts of potential energy
Drawing close together horizontal lines in Latex
Did Amazon pay $0 in taxes last year?
Signed and unsigned numbers
Vocabulary for giving just numbers, not a full answer
Is it possible that a question has only two answers?
How can I get players to focus on the story aspect of D&D?
Is there a difference between equilibrium and steady state?
Doesn't allowing a user mode program to access kernel space memory and execute the IN and OUT instructions defeat the purpose of having CPU modes?
Does a difference of tense count as a difference of meaning in a minimal pair?
Is it possible to avoid unpacking when merging Association?
Why is there an extra space when I type "ls" in the Desktop directory?
Whose blood did Carol Danver's receive, Mar-vell's or Yon-Rogg's in the movie?
How does get_user_pages() pin a process page in Linux?
2019 Community Moderator ElectionHow do “pinned” pages in Linux present (or actually “pin”) themselvesHow does the linux kernel manage less than 1GB physical memory?Walking page tables of a process in LinuxDumping the pfn from /proc/<pid>/pagemap does not give the expected contentGetting a memory physical to pid mapping in linuxHow kernel threaduse memory descriptor(mm_struct) of last ran process in Linux?How are memory read, write, execute permissions enforced in the Linux kernel?Is there a way to use remap_pfn_range() to get hugepages?mmap query on linux platformcan we use virt_to_phys for user space memory in kernel module?How to count the anonymous pages and shared pages for a process in Linux using kernel module
I am trying to pin a Linux process page by using get_user_pages() function in kernel. (I am using Ubuntu 16.04, Linux-4.4.0).
But I am not clear, how does get_user_pages() pin the process page, or how does that pin mean in the funtion's description.
I did following test to check if the page is pinned.
1. A process, called aligned_alloc(0x1000, 0x1000) to allocation a 4KB memory.
2. A kernel module, which will receive a virtual address from a process by ioctl().
3. Once the virtual address is received in kernel module, it is used to call get_user_pages() like this,
res = get_user_pages(current, current->mm, vaddr, 1, 1, 1, &page);
4. The process is sleeping for hours, for me to check the status.
With above steps, from /proc/pid/maps, /proc/pid/smaps, and /proc/meminfo, I could NOT find the locking (or pinning) of the process's virtual address.
I also checked the ref_count of the page struct for the process virtual address, before and after call get_user_pages(), the ref_count is the same (3 in my test case), like below.
[ 7159.432196] Before, page flag = ffff800004004c, count=3
[ 7159.432196] Pinned Got mmaped.
[ 7159.432197] After, page flags = ffff800004004c, count = 3
Did I miss something?
And how does get_user_pages() pin the process pages?
I found a similar question in SO, How do "pinned" pages in Linux present (or actually "pin") themselves, but no answers.
memory-management linux-kernel
add a comment |
I am trying to pin a Linux process page by using get_user_pages() function in kernel. (I am using Ubuntu 16.04, Linux-4.4.0).
But I am not clear, how does get_user_pages() pin the process page, or how does that pin mean in the funtion's description.
I did following test to check if the page is pinned.
1. A process, called aligned_alloc(0x1000, 0x1000) to allocation a 4KB memory.
2. A kernel module, which will receive a virtual address from a process by ioctl().
3. Once the virtual address is received in kernel module, it is used to call get_user_pages() like this,
res = get_user_pages(current, current->mm, vaddr, 1, 1, 1, &page);
4. The process is sleeping for hours, for me to check the status.
With above steps, from /proc/pid/maps, /proc/pid/smaps, and /proc/meminfo, I could NOT find the locking (or pinning) of the process's virtual address.
I also checked the ref_count of the page struct for the process virtual address, before and after call get_user_pages(), the ref_count is the same (3 in my test case), like below.
[ 7159.432196] Before, page flag = ffff800004004c, count=3
[ 7159.432196] Pinned Got mmaped.
[ 7159.432197] After, page flags = ffff800004004c, count = 3
Did I miss something?
And how does get_user_pages() pin the process pages?
I found a similar question in SO, How do "pinned" pages in Linux present (or actually "pin") themselves, but no answers.
memory-management linux-kernel
add a comment |
I am trying to pin a Linux process page by using get_user_pages() function in kernel. (I am using Ubuntu 16.04, Linux-4.4.0).
But I am not clear, how does get_user_pages() pin the process page, or how does that pin mean in the funtion's description.
I did following test to check if the page is pinned.
1. A process, called aligned_alloc(0x1000, 0x1000) to allocation a 4KB memory.
2. A kernel module, which will receive a virtual address from a process by ioctl().
3. Once the virtual address is received in kernel module, it is used to call get_user_pages() like this,
res = get_user_pages(current, current->mm, vaddr, 1, 1, 1, &page);
4. The process is sleeping for hours, for me to check the status.
With above steps, from /proc/pid/maps, /proc/pid/smaps, and /proc/meminfo, I could NOT find the locking (or pinning) of the process's virtual address.
I also checked the ref_count of the page struct for the process virtual address, before and after call get_user_pages(), the ref_count is the same (3 in my test case), like below.
[ 7159.432196] Before, page flag = ffff800004004c, count=3
[ 7159.432196] Pinned Got mmaped.
[ 7159.432197] After, page flags = ffff800004004c, count = 3
Did I miss something?
And how does get_user_pages() pin the process pages?
I found a similar question in SO, How do "pinned" pages in Linux present (or actually "pin") themselves, but no answers.
memory-management linux-kernel
I am trying to pin a Linux process page by using get_user_pages() function in kernel. (I am using Ubuntu 16.04, Linux-4.4.0).
But I am not clear, how does get_user_pages() pin the process page, or how does that pin mean in the funtion's description.
I did following test to check if the page is pinned.
1. A process, called aligned_alloc(0x1000, 0x1000) to allocation a 4KB memory.
2. A kernel module, which will receive a virtual address from a process by ioctl().
3. Once the virtual address is received in kernel module, it is used to call get_user_pages() like this,
res = get_user_pages(current, current->mm, vaddr, 1, 1, 1, &page);
4. The process is sleeping for hours, for me to check the status.
With above steps, from /proc/pid/maps, /proc/pid/smaps, and /proc/meminfo, I could NOT find the locking (or pinning) of the process's virtual address.
I also checked the ref_count of the page struct for the process virtual address, before and after call get_user_pages(), the ref_count is the same (3 in my test case), like below.
[ 7159.432196] Before, page flag = ffff800004004c, count=3
[ 7159.432196] Pinned Got mmaped.
[ 7159.432197] After, page flags = ffff800004004c, count = 3
Did I miss something?
And how does get_user_pages() pin the process pages?
I found a similar question in SO, How do "pinned" pages in Linux present (or actually "pin") themselves, but no answers.
memory-management linux-kernel
memory-management linux-kernel
asked Mar 7 at 5:15
wangt13wangt13
1499
1499
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55036524%2fhow-does-get-user-pages-pin-a-process-page-in-linux%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55036524%2fhow-does-get-user-pages-pin-a-process-page-in-linux%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown