<br><br>
<div class="gmail_quote">On Sat, Feb 19, 2011 at 2:44 PM, Rajat Sharma <span dir="ltr">&lt;<a href="mailto:fs.rajat@gmail.com">fs.rajat@gmail.com</a>&gt;</span> wrote:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div class="im">&gt; So, in the start, the page might have kernel mode address, but in the<br>&gt; end it has user mode address. But kernel is still the one that tracks<br>&gt; all the page...be it anonymous or non anonymous ones.<br>
<br></div>Not really. In this particular case of .nopage (page fault handler) of<br>vma, we already have a user space virtual address for the faulty page,<br>we just need it to map it with a physical page frame (RAM or device<br>
memory). Just allocate a physical page frame without any address,<br>caller for .nopage will take care of properly setting its user space<br>virtual address (page-&gt;va). So, no association with kernel space<br>virtual address is required, e.g. it can be high memory page too<br>
without any kernel mapping.<br><br></blockquote>
<div>so after the setting of user space virtual address the physical memory can be directly addreseed by just doing a page table translation in user space and kernel doesn&#39;t need to be involved.As it has already created the page table and returned the corresponding page.Am i right?</div>

<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">Rajat<br>
<div>
<div></div>
<div class="h5"><br>On Sat, Feb 19, 2011 at 2:10 PM, Mulyadi Santosa<br>&lt;<a href="mailto:mulyadi.santosa@gmail.com">mulyadi.santosa@gmail.com</a>&gt; wrote:<br>&gt; Hi :)<br>&gt;<br>&gt; I&#39;ll try to help...<br>&gt;<br>
&gt; On Sat, Feb 19, 2011 at 13:10, anish singh &lt;<a href="mailto:anish198519851985@gmail.com">anish198519851985@gmail.com</a>&gt; wrote:<br>&gt;&gt; As i understood whenver a user space program is run it is represented in<br>
&gt;&gt; kernel using VMA which is managed by struct mm_struct<br>&gt;&gt; and whenever the program is trying to read/write to a memory location in<br>&gt;&gt; user space it will be directed to physical address using PAGE TABLE<br>
&gt;&gt; translation done by struct mm_struct(done in kernel space).Am i right?<br>&gt;<br>&gt; i think not &quot;done&quot; but mm_struct points to PGD that represent&#39;s the<br>&gt; whole process address space. Using information provided there, MMU<br>
&gt; does translation.<br>&gt;<br>&gt;&gt; Suppose a simple driver wants the user to directly access its device memory<br>&gt;&gt; then we use mmap.This mmap associates a set of user space virtual address<br>&gt;&gt; with device driver memory and it is done by creating kernel page tables for<br>
&gt;&gt; the user space virtual addresses.Is the page table translation done<br>&gt;&gt; everytime whenever user space does read/write to the device memory??<br>&gt;<br>&gt; if it&#39;s recently translated, quite likely it is already cached in TLB<br>
&gt; (translation look aside buffer)<br>&gt;<br>&gt;&gt; In .nopage function call we return the page associated with the physical<br>&gt;&gt; address which the user wants to associate with user space virtual address.Is<br>
&gt;&gt; the page address returned by the nopage function same as seen by the user or<br>&gt;&gt; will it be converted to user space virtual address(range between 0-2 GB)?<br>&gt;<br>&gt; AFAIK, nopage is one of the functions that handle minor page fault, no?<br>
&gt;<br>&gt; Anyway, memory allocation, usually start by kernel allocates a page.<br>&gt; Then it is &quot;handed&quot; to user space memory allocator.<br>&gt;<br>&gt; So, in the start, the page might have kernel mode address, but in the<br>
&gt; end it has user mode address. But kernel is still the one that tracks<br>&gt; all the page...be it anonymous or non anonymous ones.<br>&gt;<br>&gt; Does it help? :)<br>&gt;<br>&gt;<br>&gt;<br>&gt; --<br>&gt; regards,<br>
&gt;<br>&gt; Mulyadi Santosa<br>&gt; Freelance Linux trainer and consultant<br>&gt;<br>&gt; blog: <a href="http://the-hydra.blogspot.com/" target="_blank">the-hydra.blogspot.com</a><br>&gt; training: <a href="http://mulyaditraining.blogspot.com/" target="_blank">mulyaditraining.blogspot.com</a><br>
&gt;<br></div></div>&gt; _______________________________________________<br>&gt; Kernelnewbies mailing list<br>&gt; <a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>&gt; <a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
&gt;<br><br>_______________________________________________<br>Kernelnewbies mailing list<br><a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br><a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
</blockquote></div><br>