remap_page_range an caching

From: thomas joseph (thomascanny@yahoo.co.nz)
Date: Thu Mar 20 2003 - 08:08:24 EST


Hi All,

 I am using remap_page_range to map a memory region
 to user space. (This is a device memory mapped in
 to kernel space by ioremap_nocache.)

 I am setting the page protection flags as
  _PAGE_PCD | _PAGE_PWT to disable caching as
  specified in the documentation.

  But when I try to read these device registers in the
  user space it shows different values from
  those of driver. I declared the necessary
  members as volatile. But it still does not help.

  When I try to read the register twice I seem to be
getting the correct value.

  Like,
   /* ulBWStatus is defined as volatile. */
   status = pRpRegs->ulBStatus;
   status = pRpRegs->ulBStatus;
This gives me the updated values. Could you
just help me if I am missing anything here.

 D0 I need to insert a memory barrier in the user
space
 before accessing these registers ?
 If I do so then it looks like giving correct values
too.

 Could somebody help to understand on what is
happening here.

Thanks in advance.

best regards,

 --thomas

 

http://mobile.yahoo.com.au - Yahoo! Mobile
- Check & compose your email via SMS on your Telstra or Vodafone mobile.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Mar 23 2003 - 22:00:30 EST