Ross, Thanks for your reply.Here is the kernel information 
root@ubuntu:/home/soccerl/linux# make kernelversion
4.10.0-rc3
root@ubuntu:/home/soccerl/linux# uname -a
Linux ubuntu 4.10.0-rc3+ #4 SMP Wed Jan 25 22:51:07 PST 2017 x86_64 x86_64 
x86_64 GNU/Linux
root@ubuntu:/home/soccerl/Linux#// NVDIMM related flags used in my build 
environment
root@ubuntu:/home/soccerl/linux# egrep -i 'dax|pmem|nvdimm' .config
CONFIG_X86_PMEM_LEGACY_DEVICE=y
CONFIG_X86_PMEM_LEGACY=y
CONFIG_BLK_DEV_RAM_DAX=y
CONFIG_LIBNVDIMM=y
CONFIG_BLK_DEV_PMEM=y
CONFIG_NVDIMM_PFN=y
CONFIG_NVDIMM_DAX=y
CONFIG_DEV_DAX=y
CONFIG_DEV_DAX_PMEM=m
CONFIG_NR_DEV_DAX=32768
CONFIG_FS_DAX=y
CONFIG_FS_DAX_PMD=y
CONFIG_ARCH_HAS_PMEM_API=y
For the addresses zeros, I found it only happens some boot instances. 
Here is one instance of non-zero iomem that I got after I reboot my linux 
box.root@ubuntu:~# cat /proc/iomem
00000000-00000fff : reserved
00001000-0009ffff : System RAM
000c0000-000fffff : reserved
  000f0000-000fffff : System ROM
00100000-0fffffff : System RAM
  01000000-018a7718 : Kernel code
  018a7719-01f6db7f : Kernel data
  02101000-02241fff : Kernel bss
                                    ----------à I expect a Persistent Memory 
(legacy) range here, but it’s nowhere to be found.
20000000-7eeecfff : System RAM
7eeed000-7eef1fff : ACPI Tables
7ef1b000-7ff9afff : System RAM
7ffb7000-7ffb8fff : reserved
7ffbb000-7ffbbfff : reserved
7ffbe000-7ffbefff : reserved
7ffc1000-7ffc1fff : reserved
7ffc4000-7ffc5fff : reserved
7ffc8000-7ffc8fff : reserved
7fff3000-7fffafff : ACPI Tables
7fffb000-7fffefff : ACPI Non-volatile Storage
7ffff000-7fffffff : System RAM
f8800000-f8ffffff : 5620e0c7-8062-4dce-aeb7-520c7ef76171
fec00000-fec00fff : PNP0003:00
fee00000-fee00fff : Local APIC
  fee00000-fee00fff : PNP0003:00
root@ubuntu:~#By the way, this is a Linux VM on Hyper-V, I am not sure it that 
make any difference.
ThanksSoccer 

    On Thursday, January 26, 2017 3:34 PM, Ross Zwisler 
<[email protected]> wrote:
 

 On Thu, Jan 26, 2017 at 07:56:58AM +0000, Soccer Liu wrote:
> Hi:
> 
>  I am trying to play with the NVDIMM driver and follow instructions in 
> https://nvdimm.wiki.kernel.org/how_to_choose_the_correct_memmap_kernel_parameter_for_pmem_on_your_system
>  and 
> https://www.suse.com/communities/blog/nvdimm-enabling-part-2-intel
> 
> for setting up an emulated NVDIMM memory. 
> 
> I claimed the memory range from 0x10000000 -- 0x1fffffff via adding a kernel 
> command line param memmap=256M!256M .
> 
> soccerl@ubuntu:~$ dmesg | grep e820
> [    0.000000] e820: BIOS-provided physical RAM map:
> [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009ffff] usable
> [    0.000000] BIOS-e820: [mem 0x00000000000c0000-0x00000000000fffff] reserved
> [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007eeecfff] usable  
>  <------------------------------- *
> [    0.000000] BIOS-e820: [mem 0x000000007eeed000-0x000000007eef1fff] ACPI 
> data
> [    0.000000] BIOS-e820: [mem 0x000000007eef2000-0x000000007ef1afff] reserved
> [    0.000000] BIOS-e820: [mem 0x000000007ef1b000-0x000000007ff9afff] usable
> [    0.000000] BIOS-e820: [mem 0x000000007ff9b000-0x000000007ffb6fff] reserved
> [    0.000000] BIOS-e820: [mem 0x000000007ffb7000-0x000000007ffb8fff] type 20
> [    0.000000] BIOS-e820: [mem 0x000000007ffb9000-0x000000007ffbafff] reserved
> [    0.000000] BIOS-e820: [mem 0x000000007ffbb000-0x000000007ffbbfff] type 20
> [    0.000000] BIOS-e820: [mem 0x000000007ffbc000-0x000000007ffbdfff] reserved
> [    0.000000] BIOS-e820: [mem 0x000000007ffbe000-0x000000007ffbefff] type 20
> [    0.000000] BIOS-e820: [mem 0x000000007ffbf000-0x000000007ffc0fff] reserved
> [    0.000000] BIOS-e820: [mem 0x000000007ffc1000-0x000000007ffc1fff] type 20
> [    0.000000] BIOS-e820: [mem 0x000000007ffc2000-0x000000007ffc3fff] reserved
> [    0.000000] BIOS-e820: [mem 0x000000007ffc4000-0x000000007ffc5fff] type 20
> [    0.000000] BIOS-e820: [mem 0x000000007ffc6000-0x000000007ffc7fff] reserved
> [    0.000000] BIOS-e820: [mem 0x000000007ffc8000-0x000000007ffc8fff] type 20
> [    0.000000] BIOS-e820: [mem 0x000000007ffc9000-0x000000007fff2fff] reserved
> [    0.000000] BIOS-e820: [mem 0x000000007fff3000-0x000000007fffafff] ACPI 
> data
> [    0.000000] BIOS-e820: [mem 0x000000007fffb000-0x000000007fffefff] ACPI NVS
> [    0.000000] BIOS-e820: [mem 0x000000007ffff000-0x000000007fffffff] usable
> [    0.000000] e820: user-defined physical RAM map:
> [    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
> [    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
> [    0.000000] e820: last_pfn = 0x80000 max_arch_pfn = 0x400000000
> [    0.000000] e820: [mem 0x80000000-0xffffffff] available for PCI devices
> 
> soccerl@ubuntu:~$ dmesg | grep user
> [    0.000000] e820: user-defined physical RAM map:
> [    0.000000] user: [mem 0x0000000000000000-0x000000000009ffff] usable
> [    0.000000] user: [mem 0x00000000000c0000-0x00000000000fffff] reserved
> [    0.000000] user: [mem 0x0000000000100000-0x000000000fffffff] usable
> [    0.000000] user: [mem 0x0000000010000000-0x000000001fffffff] persistent 
> (type 12)  <-------- this shows  the memmap works as expected
> [    0.000000] user: [mem 0x0000000020000000-0x000000007eeecfff] usable
> [    0.000000] user: [mem 0x000000007eeed000-0x000000007eef1fff] ACPI data
> [    0.000000] user: [mem 0x000000007eef2000-0x000000007ef1afff] reserved
> [    0.000000] user: [mem 0x000000007ef1b000-0x000000007ff9afff] usable
> [    0.000000] user: [mem 0x000000007ff9b000-0x000000007ffb6fff] reserved
> [    0.000000] user: [mem 0x000000007ffb7000-0x000000007ffb8fff] type 20
> [    0.000000] user: [mem 0x000000007ffb9000-0x000000007ffbafff] reserved
> [    0.000000] user: [mem 0x000000007ffbb000-0x000000007ffbbfff] type 20
> [    0.000000] user: [mem 0x000000007ffbc000-0x000000007ffbdfff] reserved
> [    0.000000] user: [mem 0x000000007ffbe000-0x000000007ffbefff] type 20
> [    0.000000] user: [mem 0x000000007ffbf000-0x000000007ffc0fff] reserved
> [    0.000000] user: [mem 0x000000007ffc1000-0x000000007ffc1fff] type 20
> [    0.000000] user: [mem 0x000000007ffc2000-0x000000007ffc3fff] reserved
> [    0.000000] user: [mem 0x000000007ffc4000-0x000000007ffc5fff] type 20
> [    0.000000] user: [mem 0x000000007ffc6000-0x000000007ffc7fff] reserved
> [    0.000000] user: [mem 0x000000007ffc8000-0x000000007ffc8fff] type 20
> [    0.000000] user: [mem 0x000000007ffc9000-0x000000007fff2fff] reserved
> [    0.000000] user: [mem 0x000000007fff3000-0x000000007fffafff] ACPI data
> [    0.000000] user: [mem 0x000000007fffb000-0x000000007fffefff] ACPI NVS
> [    0.000000] user: [mem 0x000000007ffff000-0x000000007fffffff] usable

This all looks fine.  I ran my QEMU guest with this same reservation and it
worked, so I don't think it's an issue with the size or placement of the
reservation.

> However,  I could not find any Persistent Memory (legacy) from the iomem 
> output.
> I was expecting something like 
> 10000000-1fffffff : Persistent Memory (legacy)

Yep, here are the lines in my guest: 
    10000000-1fffffff : Persistent Memory (legacy)
      10000000-1fffffff : namespace0.0

> soccerl@ubuntu:~$ cat /proc/iomem
> 00000000-00000000 : reserved
> 00000000-00000000 : System RAM
> 00000000-00000000 : reserved
>   00000000-00000000 : System ROM
> 00000000-00000000 : System RAM
>   00000000-00000000 : Kernel code
>   00000000-00000000 : Kernel data
>   00000000-00000000 : Kernel bss
> 00000000-00000000 : System RAM
> 00000000-00000000 : ACPI Tables
> 00000000-00000000 : System RAM
> 00000000-00000000 : reserved
> 00000000-00000000 : reserved
> 00000000-00000000 : reserved
> 00000000-00000000 : reserved
> 00000000-00000000 : reserved
> 00000000-00000000 : reserved
> 00000000-00000000 : ACPI Tables
> 00000000-00000000 : ACPI Non-volatile Storage
> 00000000-00000000 : System RAM
> 00000000-00000000 : 5620e0c7-8062-4dce-aeb7-520c7ef76171
> 00000000-00000000 : PNP0003:00
> 00000000-00000000 : Local APIC
>   00000000-00000000 : PNP0003:00

Ummm...all the addresses are zero?  I don't know what would cause this - a
broken kconfig option?

> I do have the following kernel config flags set
> 
> CONFIG_ARCH_HAS_PMEM_API=y
> CONFIG_BLK_DEV_PMEM=m
> CONFIG_LIBNVDIMM=y
> CONFIG_X86_PMEM_LEGACY=y
> CONFIG_FS_DAX=y
> CONFIG_BLK_DEV_RAM_DAX=y
> 
> Any idea on what I might have missed?

My best guess is that it's a missed kernel config option.  Here are the
relevant ones from my v4.9 config:

$ egrep -i 'dax|pmem|nvdimm' .config
CONFIG_X86_PMEM_LEGACY_DEVICE=y
CONFIG_X86_PMEM_LEGACY=m
CONFIG_BLK_DEV_RAM_DAX=y
CONFIG_LIBNVDIMM=m
CONFIG_BLK_DEV_PMEM=m
CONFIG_NVDIMM_PFN=y
CONFIG_NVDIMM_DAX=y
CONFIG_DEV_DAX=m
CONFIG_DEV_DAX_PMEM=m
CONFIG_NR_DEV_DAX=32768
CONFIG_FS_DAX=y
CONFIG_ARCH_HAS_PMEM_API=y

The DEV_DAX ones won't matter, but I'd verify the rest of them and make sure
they're set.

Also, what kernel version are you using?

- Ross


   
_______________________________________________
Linux-nvdimm mailing list
[email protected]
https://lists.01.org/mailman/listinfo/linux-nvdimm

Reply via email to