How to determine the Page Frame Number for device memory?
===

How does one determine the page frame number for device memory? From LDD3/ Ch. 15/ sections "Using remap_pfn_range" and "A Simple Implementation", pfn has been equated to the vm_pgoff field. I am confused by this. How can that be so?

Note that vm_pgoff is described as: 

> The offset of the area in the file, in pages. When a file or device is
> mapped, this is the file position of the first page mapped in this
> area.

Thus if the first page mapped corresponds to the first page of the file as well (which, I think would be quite common), vm_pgoff would be 0. correct? If so, this doesn't seem to be the correct value for the pfn parameter of remap_pfn_range( ).  What am I missing here? What is the correct value? For ease of reference, I am reproducing the relevant code from LDD3 below (Page no. 426)

    static int simple_remap_mmap(struct file *filp, struct vm_area_struct *vma)
    {
    if (remap_pfn_range(vma, vma->vm_start, vm->vm_pgoff,
                        vma->vm_end - vma->vm_start,
                        vma->vm_page_prot))
        return -EAGAIN;
    ...
    }