Question 1:
if I malloc a buffer in user space, but I don't read/write it. I just pass the virtual address of this buffer to driver by ioctl. In driver, I am trying to use get_user_pages() to get all the pages of this virtual address. Is there page mapping in the page table? If yes, when does it setup? If no, could get_user_pages() get all the pages?
Answer:
get_user_pages() could try to trigger page fault to setup the page mapping in the page table by faultin_page() function.
Question 2:
If we use the pages we get by get_user_pages() in Question1 to peripherals such as DMA, is it possible the page was swapped out when the HW trying to use it?
Yes, it is possible. And this is a bad usage of user space pages.