<p dir="ltr"><br>
On 09-Sep-2014 10:25 pm, &quot;Jeff Haran&quot; &lt;<a href="mailto:Jeff.Haran@citrix.com">Jeff.Haran@citrix.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; While reading the book Essential Linux device drivers it says &quot;user mode code is allowed to page fault, however, whereas kernel mode code isn&#39;t&quot;.<br>
&gt;<br>
&gt; Why is it so? Why can&#39;t kernel mode code handle the page fault and reload the page from swap? Also, can page fault occur when kernel is executing in process context and/or interrupt context?<br>
&gt;<br>
&gt; -- manav m-n<br>
&gt;<br>
&gt; Think about handling the case where a page fault has occurred but the code that handles the page fault is itself not already in RAM, which leads to another page fault. Gets complicated. That complexity can be avoided by keeping all the kernel code in RAM all the time. Same applies to the kernel data that is needed to handle a page fault.<br>
&gt;<br>
&gt; Jeff Haran<br>
&gt;<br>
&gt;  </p>
<p dir="ltr">But if the total RAM is limited (less than 896MB LOWMEM), for example as in embedded devices how the kernel code be kept in RAM all the time. Am I correct to assume that the kernel pre-fetches all pages when entering kernel mode from user mode?</p>