title: linux kernel function page_address()
body: <p>I'm confused with the function:</p>
  
  <pre><code>void * page_address(struct page *page)
  </code></pre>
  
  <p>which 
  (1) "convert a given page to its logical address" according to "Linux Kerenl developement 3rd edition"
  (2) "returns the linear address associated with the page frame" according to "understanding the linux kernel>>"
  (3) "returns the physical address of the page" according to "understanding the linux virtual memory manager"</p>
  
  <p>which one is correct then?</p>
  
  <p>Let's take (1): this function takes a pointer to the physical page (page frame), isn't that pointer the "logical address associated with that page frame" already? what's the difference between that pointer value and the returned value then? thanks.</p>