On inspecting the flags of the PageTable entry that holds the page base address (20002000) I inferred that the page was not dirty (i.e. the page was not written or updated). The following flags were set. 0x237 (Refer. arch/x86/include/asm/pgtable_types.h from the source code 2.6.34).
*#define _PAGE_BIT_PRESENT 0 /* is present */* #define _PAGE_BIT_RW 1 /* writeable */ #define _PAGE_BIT_USER 2 /* userspace addressable */ #define _PAGE_BIT_PWT 3 /* page write through */ #define _PAGE_BIT_PCD 4 /* page cache disabled */ #define _PAGE_BIT_ACCESSED 5 /* was accessed (raised by CPU) */ *#define _PAGE_BIT_DIRTY 6 /* was written to (raised by CPU) */* #define _PAGE_BIT_UNUSED1 9 /* available for programmer */ The following bit positions are set. 1 2 3 4 5 9 When I write into the virtual address, then the page should be dirty and I expect bit position 6 (blocked above) to be set, but I see that it is not set. *Which function is responsible to update the flags in the page table entry. ?* Thanks, Prabhu On Mon, Oct 4, 2010 at 12:25 PM, Prabhu nath <gprabhun...@gmail.com> wrote: > Dear All, > > I have an 512 MB RAM on an Intel desktop machine, of which Kernel > uses 256M for all allocation for kernel as well as for user > programs. (by passing mem=256M as a boot parameter). Hence I have > 256MB of memory which I can treat it as IO memory. > > System memory is associated from 0x00000000 - 0x20000000 (512MB) > in the physical address space. > Memory addresses from 0x00000000 - 0x10000000 (256 MB) are used by > the Kernel - memory management. Subsystem > Memory addresses from 0x10000000 - 20000000 (256MB) is used as IO > memory > > For an experiment, I used *mmap()* to map a page (4K) in IO memory > (page base address 0x20002000) to user virtual address > I used kernel function *remap_pfn_range()* in my kernel module's > mmap function. > > This is rightly mapping the physical page to a user virtual > address. But when I write to that address and then read. I get junk > value. > > To just verify, when I mapped the VGA controller memory to user > virtual address things are working fine. > > Can you please help me to resolve this problem. > > Regards, > Prabhu > > >