Skip to content
Snippets Groups Projects
  1. Sep 08, 2015
  2. Sep 04, 2015
  3. Sep 01, 2015
  4. Aug 31, 2015
  5. Aug 29, 2015
    • Dan Williams's avatar
      libnvdimm, pmem: 'struct page' for pmem · 32ab0a3f
      Dan Williams authored
      
      Enable the pmem driver to handle PFN device instances.  Attaching a pmem
      namespace to a pfn device triggers the driver to allocate and initialize
      struct page entries for pmem.  Memory capacity for this allocation comes
      exclusively from RAM for now which is suitable for low PMEM to RAM
      ratios.  This mechanism will be expanded later for setting an "allocate
      from PMEM" policy.
      
      Cc: Boaz Harrosh <boaz@plexistor.com>
      Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      32ab0a3f
    • Dan Williams's avatar
      libnvdimm, pfn: 'struct page' provider infrastructure · e1455744
      Dan Williams authored
      
      Implement the base infrastructure for libnvdimm PFN devices. Similar to
      BTT devices they take a namespace as a backing device and layer
      functionality on top. In this case the functionality is reserving space
      for an array of 'struct page' entries to be handed out through
      pfn_to_page(). For now this is just the basic libnvdimm-device-model for
      configuring the base PFN device.
      
      As the namespace claiming mechanism for PFN devices is mostly identical
      to BTT devices drivers/nvdimm/claim.c is created to house the common
      bits.
      
      Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      e1455744
  6. Aug 28, 2015
  7. Aug 27, 2015
    • Ross Zwisler's avatar
      nd_blk: change aperture mapping from WC to WB · 67a3e8fe
      Ross Zwisler authored
      This should result in a pretty sizeable performance gain for reads.  For
      rough comparison I did some simple read testing using PMEM to compare
      reads of write combining (WC) mappings vs write-back (WB).  This was
      done on a random lab machine.
      
      PMEM reads from a write combining mapping:
      	# dd of=/dev/null if=/dev/pmem0 bs=4096 count=100000
      	100000+0 records in
      	100000+0 records out
      	409600000 bytes (410 MB) copied, 9.2855 s, 44.1 MB/s
      
      PMEM reads from a write-back mapping:
      	# dd of=/dev/null if=/dev/pmem0 bs=4096 count=1000000
      	1000000+0 records in
      	1000000+0 records out
      	4096000000 bytes (4.1 GB) copied, 3.44034 s, 1.2 GB/s
      
      To be able to safely support a write-back aperture I needed to add
      support for the "read flush" _DSM flag, as outlined in the DSM spec:
      
      http://pmem.io/documents/NVDIMM_DSM_Interface_Example.pdf
      
      
      
      This flag tells the ND BLK driver that it needs to flush the cache lines
      associated with the aperture after the aperture is moved but before any
      new data is read.  This ensures that any stale cache lines from the
      previous contents of the aperture will be discarded from the processor
      cache, and the new data will be read properly from the DIMM.  We know
      that the cache lines are clean and will be discarded without any
      writeback because either a) the previous aperture operation was a read,
      and we never modified the contents of the aperture, or b) the previous
      aperture operation was a write and we must have written back the dirtied
      contents of the aperture to the DIMM before the I/O was completed.
      
      In order to add support for the "read flush" flag I needed to add a
      generic routine to invalidate cache lines, mmio_flush_range().  This is
      protected by the ARCH_HAS_MMIO_FLUSH Kconfig variable, and is currently
      only supported on x86.
      
      Signed-off-by: default avatarRoss Zwisler <ross.zwisler@linux.intel.com>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      67a3e8fe
    • Bamvor Jian Zhang's avatar
    • Bamvor Jian Zhang's avatar
      selftests: check before install · a7d0f078
      Bamvor Jian Zhang authored
      
      When the test cases is not supported by the current architecture
      the install files(TEST_PROGS, TEST_PROGS_EXTENDED and TEST_FILES)
      will be empty. Check it before installation to dismiss a failure
      reported by install program.
      
      Signed-off-by: default avatarBamvor Jian Zhang <bamvor.zhangjian@linaro.org>
      Signed-off-by: default avatarShuah Khan <shuahkh@osg.samsung.com>
      a7d0f078
    • Naresh Kamboju's avatar
      selftests/zram: Adding zram tests · f21fb798
      Naresh Kamboju authored
      
      zram: Compressed RAM based block devices
      ----------------------------------------
      The zram module creates RAM based block devices named /dev/zram<id>
      (<id> = 0, 1, ...). Pages written to these disks are compressed and stored
      in memory itself. These disks allow very fast I/O and compression provides
      good amounts of memory savings. Some of the usecases include /tmp storage,
      use as swap disks, various caches under /var and maybe many more :)
      
      Statistics for individual zram devices are exported through sysfs nodes at
      /sys/block/zram<id>/
      
      This patch is to validate the zram functionality. Test interacts with block
      device /dev/zram<id> and sysfs nodes /sys/block/zram<id>/
      
      zram.sh: sanity check of CONFIG_ZRAM and to run zram01 and zram02 tests
      zram01.sh: creates general purpose ram disks with different filesystems
      zram02.sh: creates block device for swap
      zram_lib.sh: create library with initialization/cleanup functions
      README: ZRAM introduction and Kconfig required.
      Makefile: To run zram tests
      
      zram test output
      -----------------
      ./zram.sh
      --------------------
      running zram tests
      --------------------
      /dev/zram0 device file found: OK
      set max_comp_streams to zram device(s)
      /sys/block/zram0/max_comp_streams = '2' (1/1)
      zram max streams: OK
      test that we can set compression algorithm
      supported algs: [lzo] lz4
      /sys/block/zram0/comp_algorithm = 'lzo' (1/1)
      zram set compression algorithm: OK
      set disk size to zram device(s)
      /sys/block/zram0/disksize = '2097152' (1/1)
      zram set disksizes: OK
      set memory limit to zram device(s)
      /sys/block/zram0/mem_limit = '2M' (1/1)
      zram set memory limit: OK
      make ext4 filesystem on /dev/zram0
      zram mkfs.ext4: OK
      mount /dev/zram0
      zram mount of zram device(s): OK
      fill zram0...
      zram0 can be filled with '1932' KB
      zram used 3M, zram disk sizes 2097152M
      zram compression ratio: 699050.66:1: OK
      zram cleanup
      zram01 : [PASS]
      
      /dev/zram0 device file found: OK
      set max_comp_streams to zram device(s)
      /sys/block/zram0/max_comp_streams = '2' (1/1)
      zram max streams: OK
      set disk size to zram device(s)
      /sys/block/zram0/disksize = '1048576' (1/1)
      zram set disksizes: OK
      set memory limit to zram device(s)
      /sys/block/zram0/mem_limit = '1M' (1/1)
      zram set memory limit: OK
      make swap with zram device(s)
      done with /dev/zram0
      zram making zram mkswap and swapon: OK
      zram swapoff: OK
      zram cleanup
      zram02 : [PASS]
      
      CC: Shuah Khan <shuahkh@osg.samsung.com>
      CC: Tyler Baker <tyler.baker@linaro.org>
      CC: Milosz Wasilewski <milosz.wasilewski@linaro.org>
      CC: Alexey Kodanev <alexey.kodanev@oracle.com>
      Signed-off-by: default avatarNaresh Kamboju <naresh.kamboju@linaro.org>
      Signed-off-by: default avatarAlexey Kodanev <alexey.kodanev@oracle.com>
      Reviewed-By: default avatarTyler Baker <tyler.baker@linaro.org>
      Signed-off-by: default avatarShuah Khan <shuahkh@osg.samsung.com>
      f21fb798
  8. Aug 26, 2015
    • Wang Nan's avatar
      perf probe: Support probing at absolute address · da15bd9d
      Wang Nan authored
      
      It should be useful to allow 'perf probe' probe at absolute offset of a
      target. For example, when (u)probing at a instruction of a shared object
      in a embedded system where debuginfo is not avaliable but we know the
      offset of that instruction by manually digging.
      
      This patch enables following perf probe command syntax:
      
        # perf probe 0xffffffff811e6615
      
      And
      
        # perf probe /lib/x86_64-linux-gnu/libc-2.19.so 0xeb860
      
      In the above example, we don't need a anchor symbol, so it is possible
      to compute absolute addresses using other methods and then use 'perf
      probe' to create the probing points.
      
      v1 -> v2:
        Drop the leading '+' in cmdline;
        Allow uprobing at offset 0x0;
        Improve 'perf probe -l' result when uprobe at area without debuginfo.
      
      v2 -> v3:
        Split bugfix to a separated patch.
      
      Test result:
      
        # perf probe 0xffffffff8119d175 %ax
        # perf probe sys_write %ax
        # perf probe /lib64/libc-2.18.so 0x0 %ax
        # perf probe /lib64/libc-2.18.so 0x5 %ax
        # perf probe /lib64/libc-2.18.so 0xd8e40 %ax
        # perf probe /lib64/libc-2.18.so __write %ax
        # perf probe /lib64/libc-2.18.so 0xd8e49 %ax
        # cat /sys/kernel/debug/tracing/uprobe_events
      
        p:probe_libc/abs_0 /lib64/libc-2.18.so:0x          (null) arg1=%ax
        p:probe_libc/abs_5 /lib64/libc-2.18.so:0x0000000000000005 arg1=%ax
        p:probe_libc/abs_d8e40 /lib64/libc-2.18.so:0x00000000000d8e40 arg1=%ax
        p:probe_libc/__write /lib64/libc-2.18.so:0x00000000000d8e40 arg1=%ax
        p:probe_libc/abs_d8e49 /lib64/libc-2.18.so:0x00000000000d8e49 arg1=%ax
      
        # cat /sys/kernel/debug/tracing/kprobe_events
      
        p:probe/abs_ffffffff8119d175 0xffffffff8119d175 arg1=%ax
        p:probe/sys_write _text+1692016 arg1=%ax
      
        # perf probe -l
      
        Failed to find debug information for address 5
          probe:abs_ffffffff8119d175 (on sys_write+5 with arg1)
          probe:sys_write      (on sys_write with arg1)
          probe_libc:__write   (on @unix/syscall-template.S:81 in /lib64/libc-2.18.so with arg1)
          probe_libc:abs_0     (on 0x0 in /lib64/libc-2.18.so with arg1)
          probe_libc:abs_5     (on 0x5 in /lib64/libc-2.18.so with arg1)
          probe_libc:abs_d8e40 (on @unix/syscall-template.S:81 in /lib64/libc-2.18.so with arg1)
          probe_libc:abs_d8e49 (on __GI___libc_write+9 in /lib64/libc-2.18.so with arg1)
      
      Signed-off-by: default avatarWang Nan <wangnan0@huawei.com>
      Acked-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1440586666-235233-7-git-send-email-wangnan0@huawei.com
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      da15bd9d
    • Wang Nan's avatar
      perf probe: Fix error reported when offset without function · 6c6e024f
      Wang Nan authored
      
      This patch fixes a bug that, when offset is provided but function is
      lost, parse_perf_probe_point() will give a "" string as function name,
      so the checking code at the end of parse_perf_probe_point() become
      useless.  For example:
      
        # perf probe +0x1234
        Failed to find symbol  in kernel
          Error: Failed to add events.
      
      After this patch:
      
        # perf probe +0x1234
        Semantic error :Offset requires an entry function.
          Error: Command Parse Error.
      
      Signed-off-by: default avatarWang Nan <wangnan0@huawei.com>
      Acked-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1440586666-235233-6-git-send-email-wangnan0@huawei.com
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      6c6e024f
    • Wang Nan's avatar
      perf probe: Fix list result when address is zero · be07afe9
      Wang Nan authored
      
      When manually added uprobe point with zero address, 'perf probe -l'
      reports error. For example:
      
        # echo p:probe_libc/abs_0 /path/to/lib.bin:0x0 arg1=%ax > \
                 /sys/kernel/debug/tracing/uprobe_events
      
        # perf probe -l
        Error: Failed to show event list.
      
      Probing at 0x0 is possible and useful when lib.bin is not a normal
      shared object but is manually mapped. However, in this case kernel
      report:
      
        # cat /sys/kernel/debug/tracing/uprobe_events
        p:probe_libc/abs_0 /path/to/lib.bin:0x          (null) arg1=%ax
      
      This patch supports the above kernel output.
      
      Signed-off-by: default avatarWang Nan <wangnan0@huawei.com>
      Acked-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1440586666-235233-5-git-send-email-wangnan0@huawei.com
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      be07afe9
Loading