1. 22 7月, 2016 1 次提交
    • L
      acpi, nfit: treat virtual ramdisk SPA as pmem region · c2f32acd
      Lee, Chun-Yi 提交于
      This patch adds logic to treat virtual ramdisk SPA as pmem region, then
      ramdisk's /dev/pmem* device can be mounted with iso9660.
      
      It's useful to work with the httpboot in EFI firmware to pull a remote
      ISO file to the local memory region for booting and installation.
      
      Wiki page of UEFI HTTPBoot with OVMF:
      	https://en.opensuse.org/UEFI_HTTPBoot_with_OVMF
      
      The ramdisk function in EDK2/OVMF generates a ACPI0012 root device that
      it contains empty _STA but without _DSM:
      
      DefinitionBlock ("ssdt2.aml", "SSDT", 2, "INTEL ", "RamDisk ", 0x00001000)
      {
          Scope (\_SB)
          {
              Device (NVDR)
              {
                  Name (_HID, "ACPI0012")  // _HID: Hardware ID
                  Name (_STR, Unicode ("NVDIMM Root Device"))  // _STR: Description String
                  Method (_STA, 0, NotSerialized)  // _STA: Status
                  {
                      Return (0x0F)
                  }
              }
          }
      }
      
      In section 5.2.25.2 of ACPI 6.1 spec, it mentions that the "SPA Range
      Structure Index" of virtual SPA shall be set to zero. That means virtual SPA
      will not be associated by any NVDIMM region mapping.
      
      The VCD's SPA Range Structure in NFIT is similar to virtual disk region
      as following:
      
      [028h 0040   2]                Subtable Type : 0000 [System Physical Address Range]
      [02Ah 0042   2]                       Length : 0038
      
      [02Ch 0044   2]                  Range Index : 0000
      [02Eh 0046   2]        Flags (decoded below) : 0000
                         Add/Online Operation Only : 0
                            Proximity Domain Valid : 0
      [030h 0048   4]                     Reserved : 00000000
      [034h 0052   4]             Proximity Domain : 00000000
      [038h 0056  16]           Address Range GUID : 77AB535A-45FC-624B-5560-F7B281D1F96E
      [048h 0072   8]           Address Range Base : 00000000B6ABD018
      [050h 0080   8]         Address Range Length : 0000000005500000
      [058h 0088   8]         Memory Map Attribute : 0000000000000000
      
      The way to not associate a SPA range is to never reference it from a "flush hint",
      "interleave", or "control region" table.
      
      After testing on OVMF, pmem driver can support the region that it doesn't
      assoicate to any NVDIMM mapping. So, treat VCD like pmem is a idea to get
      a pmem block device that it contains iso.
      
      v4:
      Instoduce nfit_spa_is_virtual() to check virtual ramdisk SPA and create
      pmem region.
      
      v3:
      To simplify patch, removed useless VCD region in libnvdimm.
      
      v2:
      Removed the code for setting VCD to a read-only region.
      
      Cc: Gary Lin <GLin@suse.com>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
      Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
      Cc: Linda Knippers <linda.knippers@hpe.com>
      Signed-off-by: NLee, Chun-Yi <jlee@suse.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      c2f32acd
  2. 13 7月, 2016 5 次提交
  3. 12 7月, 2016 7 次提交
    • D
      libnvdimm, pmem: use REQ_FUA, REQ_FLUSH for nvdimm_flush() · 7e267a8c
      Dan Williams 提交于
      Given that nvdimm_flush() has higher overhead than wmb_pmem() (pointer
      chasing through nd_region), and that we otherwise assume a platform has
      ADR capability when flush hints are not present, move nvdimm_flush() to
      REQ_FLUSH context.
      
      Note that we still arrange for nvdimm_flush() to be called even in the
      ADR case. We need at least once wmb() fence to push buffered writes in
      the cpu out to the ADR protected domain.
      
      Cc: Toshi Kani <toshi.kani@hpe.com>
      Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      7e267a8c
    • D
      libnvdimm: cycle flush hints · 0c27af60
      Dan Williams 提交于
      When the NFIT provides multiple flush hint addresses per-dimm it is
      expressing that the platform is capable of processing multiple flush
      requests in parallel.  There is some fixed cost per flush request, let
      the cost be shared in parallel on multiple cpus.
      
      Since there may not be enough flush hint addresses for each cpu to have
      one, keep a per-cpu index of the last used hint, hash it with current
      pid, and assume that access pattern and scheduler randomness will keep
      the flush-hint usage somewhat staggered across cpus.
      
      Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      0c27af60
    • D
      libnvdimm: introduce nvdimm_flush() and nvdimm_has_flush() · f284a4f2
      Dan Williams 提交于
      nvdimm_flush() is a replacement for the x86 'pcommit' instruction.  It is
      an optional write flushing mechanism that an nvdimm bus can provide for
      the pmem driver to consume.  In the case of the NFIT nvdimm-bus-provider
      nvdimm_flush() is implemented as a series of flush-hint-address [1]
      writes to each dimm in the interleave set (region) that backs the
      namespace.
      
      The nvdimm_has_flush() routine relies on platform firmware to describe
      the flushing capabilities of a platform.  It uses the heuristic of
      whether an nvdimm bus provider provides flush address data to return a
      ternary result:
      
            1: flush addresses defined
            0: dimm topology described without flush addresses (assume ADR)
       -errno: no topology information, unable to determine flush mechanism
      
      The pmem driver is expected to take the following actions on this ternary
      result:
      
            1: nvdimm_flush() in response to REQ_FUA / REQ_FLUSH and shutdown
            0: do not set, WC or FUA on the queue, take no further action
       -errno: warn and then operate as if nvdimm_has_flush() returned '0'
      
      The caveat of this heuristic is that it can not distinguish the "dimm
      does not have flush address" case from the "platform firmware is broken
      and failed to describe a flush address".  Given we are already
      explicitly trusting the NFIT there's not much more we can do beyond
      blacklisting broken firmwares if they are ever encountered.
      
      Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      f284a4f2
    • D
      libnvdimm: keep region data alive over namespace removal · a8f72022
      Dan Williams 提交于
      nd_region device driver data will be used in the namespace i/o path.
      Re-order nd_region_remove() to ensure this data stays live across
      namespace device removal
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      a8f72022
    • D
      tools/testing/nvdimm: simulate multiple flush hints per-dimm · 85d3fa02
      Dan Williams 提交于
      Sample nfit data to test the kernel's handling of the multiple
      flush-hint case.
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      85d3fa02
    • D
      libnvdimm, nfit: move flush hint mapping to region-device driver-data · e5ae3b25
      Dan Williams 提交于
      In preparation for triggering flushes of a DIMM's writes-posted-queue
      (WPQ) via the pmem driver move mapping of flush hint addresses to the
      region driver.  Since this uses devm_nvdimm_memremap() the flush
      addresses will remain mapped while any region to which the dimm belongs
      is active.
      
      We need to communicate more information to the nvdimm core to facilitate
      this mapping, namely each dimm object now carries an array of flush hint
      address resources.
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      e5ae3b25
    • D
      libnvdimm, nfit: remove nfit_spa_map() infrastructure · a8a6d2e0
      Dan Williams 提交于
      Now that all shared mappings are handled by devm_nvdimm_memremap() we no
      longer need nfit_spa_map() nor do we need to trigger a callback to the
      bus provider at region disable time.
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      a8a6d2e0
  4. 08 7月, 2016 4 次提交
  5. 07 7月, 2016 3 次提交
  6. 28 6月, 2016 1 次提交
  7. 25 6月, 2016 1 次提交
    • D
      libnvdimm, pmem: allow nfit_test to override pmem_direct_access() · f295e53b
      Dan Williams 提交于
      Currently phys_to_pfn_t() is an exported symbol to allow nfit_test to
      override it and indicate that nfit_test-pmem is not device-mapped.  Now,
      we want to enable nfit_test to operate without DMA_CMA and the pmem it
      provides will no longer be physically contiguous, i.e. won't be capable
      of supporting direct_access requests larger than a page.  Make
      pmem_direct_access() a weak symbol so that it can be replaced by the
      tools/testing/nvdimm/ version, and move phys_to_pfn_t() to a static
      inline now that it no longer needs to be overridden.
      Acked-by: NJohannes Thumshirn <jthumshirn@suse.de>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      f295e53b
  8. 21 6月, 2016 1 次提交
  9. 18 6月, 2016 3 次提交
  10. 16 6月, 2016 1 次提交
  11. 12 6月, 2016 8 次提交
    • L
      Linux 4.7-rc3 · 5edb5649
      Linus Torvalds 提交于
      5edb5649
    • L
      Merge branch 'for-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux · 57120fac
      Linus Torvalds 提交于
      Pull thermal management fixes from Zhang Rui:
      
       - fix an ordering issue in cpu cooling that cooling device is
         registered before it's ready (freq_table being populated).
         (Lukasz Luba)
      
       - fix a missing comment update (Caesar Wang)
      
      * 'for-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux:
        thermal: add the note for set_trip_temp
        thermal: cpu_cooling: fix improper order during initialization
      57120fac
    • L
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · 8714f8f5
      Linus Torvalds 提交于
      Pull block layer fixes from Jens Axboe:
       "A small collection of fixes for the current series.  This contains:
      
         - Two fixes for xen-blkfront, from Bob Liu.
      
         - A bug fix for NVMe, releasing only the specific resources we
           requested.
      
         - Fix for a debugfs flags entry for nbd, from Josef.
      
         - Plug fix from Omar, fixing up a case of code being switched between
           two functions.
      
         - A missing bio_put() for the new discard callers of
           submit_bio_wait(), fixing a regression causing a leak of the bio.
           From Shaun.
      
         - Improve dirty limit calculation precision in the writeback code,
           fixing a case where setting a limit lower than 1% of memory would
           end up being zero.  From Tejun"
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        NVMe: Only release requested regions
        xen-blkfront: fix resume issues after a migration
        xen-blkfront: don't call talk_to_blkback when already connected to blkback
        nbd: pass the nbd pointer for flags debugfs
        block: missing bio_put following submit_bio_wait
        blk-mq: really fix plug list flushing for nomerge queues
        writeback: use higher precision calculation in domain_dirty_limits()
      8714f8f5
    • L
      Merge tag 'gpio-v4.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio · 3a7c114d
      Linus Torvalds 提交于
      Pull GPIO fixes from Linus Walleij:
       "A new bunch of GPIO fixes for v4.7.
      
        This time I am very grateful that Ricardo Ribalda Delgado went in and
        fixed my stupid refcounting mistakes in the removal path for GPIO
        chips.  I had a feeling something was wrong here and so it was.  It
        exploded on OMAP and it fixes their problem.  Now it should be (more)
        solid.
      
        The rest i compilation, Kconfig and driver fixes.  Some tagged for
        stable.
      
        Summary:
      
         - Fix a NULL pointer dereference when we are searching the GPIO
           device list but one of the devices have been removed (struct
           gpio_chip pointer is NULL).
      
         - Fix unaligned reference counters: we were ending on +3 after all
           said and done.  It should be 0.  Remove an extraneous get_device(),
           and call cdev_del() followed by device_del() in gpiochip_remove()
           instead and the count goes to zero and calls the release() function
           properly.
      
         - Fix a compile warning due to a missing #include in the OF/device
           tree portions.
      
         - Select ANON_INODES for GPIOLIB, we're using that for our character
           device.  Some randconfig tests disclosed the problem.
      
         - Make sure the Zynq driver clock runs also without CONFIG_PM enabled
      
         - Fix an off-by-one error in the 104-DIO-48E driver
      
         - Fix warnings in bcm_kona_gpio_reset()"
      
      * tag 'gpio-v4.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:
        gpio: bcm-kona: fix bcm_kona_gpio_reset() warnings
        gpio: select ANON_INODES
        gpio: include <linux/io-mapping.h> in gpiolib-of
        gpiolib: Fix unaligned used of reference counters
        gpiolib: Fix NULL pointer deference
        gpio: zynq: initialize clock even without CONFIG_PM
        gpio: 104-dio-48e: Fix control port offset computation off-by-one error
      3a7c114d
    • L
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · 45b00c94
      Linus Torvalds 提交于
      Pull SCSI fixes from James Bottomley:
       "Two current fixes:
      
         - one affects Qemu CD ROM emulation, which stopped working after the
           updates in SCSI to require VPD pages from all conformant devices.
      
           Fix temporarily by blacklisting Qemu (we can relax later when they
           come into compliance).
      
         - The other is a fix to the optimal transfer size.  We set up a
           minefield for ourselves by being confused about whether the limits
           are in bytes or sectors (SCSI optimal is in blocks and the queue
           parameter is in bytes).
      
           This tries to fix the problem (wrong setting for queue limits
           max_sectors) and make the problem more obvious by introducing a
           wrapper function"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        sd: Fix rw_max for devices that report an optimal xfer size
        scsi: Add QEMU CD-ROM to VPD Inquiry Blacklist
      45b00c94
    • L
      Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · 5d1f7023
      Linus Torvalds 提交于
      Pull i2c fixes from Wolfram Sang:
      
       - a bigger fix for i801 to finally be able to be loaded on some
         machines again
      
       - smaller driver fixes
      
       - documentation update because of a renamed file
      
      * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        i2c: mux: reg: Provide of_match_table
        i2c: mux: refer to i2c-mux.txt
        i2c: octeon: Avoid printk after too long SMBUS message
        i2c: octeon: Missing AAK flag in case of I2C_M_RECV_LEN
        i2c: i801: Allow ACPI SystemIO OpRegion to conflict with PCI BAR
      5d1f7023
    • L
      Merge tag 'devicetree-fixes-for-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · 90735c99
      Linus Torvalds 提交于
      Pull DeviceTree fixes from Rob Herring:
      
       - fix unflatten_dt_nodes when dad parameter is set.
      
       - add vendor prefixes for TechNexion and UniWest
      
       - documentation fix for Marvell BT
      
       - OF IRQ kerneldoc fixes
      
       - restrict CMA alignment adjustments to non dma-coherent
      
       - a couple of warning fixes in reserved-memory code
      
       - DT maintainers updates
      
      * tag 'devicetree-fixes-for-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
        drivers: of: add definition of early_init_dt_alloc_reserved_memory_arch
        drivers/of: Fix depth for sub-tree blob in unflatten_dt_nodes()
        drivers: of: Fix of_pci.h header guard
        dt-bindings: Add vendor prefix for TechNexion
        of: add vendor prefix for UniWest
        dt: bindings: fix documentation for MARVELL's bt-sd8xxx wireless device
        of: add missing const for of_parse_phandle_with_args() in !CONFIG_OF
        of: silence warnings due to max() usage
        drivers: of: of_reserved_mem: fixup the CMA alignment not to affect dma-coherent
        of: irq: fix of_irq_get[_byname]() kernel-doc
        MAINTAINERS: DeviceTree maintainer updates
      90735c99
    • L
      Merge tag '20160610_uvc_compat_for_linus' of... · f1c32afd
      Linus Torvalds 提交于
      Merge tag '20160610_uvc_compat_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/luto/linux
      
      Pull uvc compat XU ioctl fixes from Andy Lutomirski:
       "uvc's compat XU ioctls go through tons of potentially buggy
        indirection.  The first patch removes the indirection.  The second one
        cleans up the code.
      
        Compile-tested only.  I have the hardware, but I have absolutely no
        idea what XU does, how to use it, what software to recompile as
        32-bit, or what to test in that software"
      
      * tag '20160610_uvc_compat_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/luto/linux:
        uvc_v4l2: Simplify compat ioctl implementation
        uvc: Forward compat ioctls to their handlers directly
      f1c32afd
  12. 11 6月, 2016 5 次提交
    • A
      uvc_v4l2: Simplify compat ioctl implementation · f89dec72
      Andy Lutomirski 提交于
      The uvc compat ioctl implementation seems to have copied user data
      for no good reason.  Remove a bunch of copies.
      Signed-off-by: NAndy Lutomirski <luto@kernel.org>
      f89dec72
    • A
      uvc: Forward compat ioctls to their handlers directly · a44323e2
      Andy Lutomirski 提交于
      The current code goes through a lot of indirection just to call a
      known handler.  Simplify it: just call the handlers directly.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NAndy Lutomirski <luto@kernel.org>
      a44323e2
    • L
      Merge branch 'for-linus-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs · 3d0f0b6a
      Linus Torvalds 提交于
      Pull btrfs fixes from Chris Mason:
       "Has some fixes and some new self tests for btrfs.  The self tests are
        usually disabled in the .config file (unless you're doing btrfs dev
        work), and this bunch is meant to find problems with the 64K page size
        patches.
      
        Jeff has a patch to help people see if they are using the hardware
        assist crc32c module, which really helps us nail down problems when
        people ask why crcs are using so much CPU.
      
        Otherwise, it's small fixes"
      
      * 'for-linus-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
        Btrfs: self-tests: Fix extent buffer bitmap test fail on BE system
        Btrfs: self-tests: Fix test_bitmaps fail on 64k sectorsize
        Btrfs: self-tests: Use macros instead of constants and add missing newline
        Btrfs: self-tests: Support testing all possible sectorsizes and nodesizes
        Btrfs: self-tests: Execute page straddling test only when nodesize < PAGE_SIZE
        btrfs: advertise which crc32c implementation is being used at module load
        Btrfs: add validadtion checks for chunk loading
        Btrfs: add more validation checks for superblock
        Btrfs: clear uptodate flags of pages in sys_array eb
        Btrfs: self-tests: Support non-4k page size
        Btrfs: Fix integer overflow when calculating bytes_per_bitmap
        Btrfs: test_check_exists: Fix infinite loop when searching for free space entries
        Btrfs: end transaction if we abort when creating uuid root
        btrfs: Use __u64 in exported linux/btrfs.h.
      3d0f0b6a
    • L
      Merge tag 'powerpc-4.7-3Michael Ellerman:' of... · ccf55f73
      Linus Torvalds 提交于
      Merge tag 'powerpc-4.7-3Michael Ellerman:' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
      
      Pull powerpc fixes from
       - ptrace: Fix out of bounds array access warning from Khem Raj
       - pseries: Fix PCI config address for DDW from Gavin Shan
       - pseries: Fix IBM_ARCH_VEC_NRCORES_OFFSET since POWER8NVL was added
         from Michael Ellerman
       - of: fix autoloading due to broken modalias with no 'compatible' from
         Wolfram Sang
       - radix: Fix always false comparison against MMU_NO_CONTEXT from Aneesh
         Kumar K.V
       - hash: Compute the segment size correctly for ISA 3.0 from Aneesh
         Kumar K.V
       - nohash: Fix build break with 64K pages from Michael Ellerman
      
      * tag 'powerpc-4.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/nohash: Fix build break with 64K pages
        powerpc/mm/hash: Compute the segment size correctly for ISA 3.0
        powerpc/mm/radix: Fix always false comparison against MMU_NO_CONTEXT
        of: fix autoloading due to broken modalias with no 'compatible'
        powerpc/pseries: Fix IBM_ARCH_VEC_NRCORES_OFFSET since POWER8NVL was added
        powerpc/pseries: Fix PCI config address for DDW
        powerpc/ptrace: Fix out of bounds array access warning
      ccf55f73
    • L
      Merge tag 'hwmon-for-linus-v4.7-rc3' of... · c8f17d60
      Linus Torvalds 提交于
      Merge tag 'hwmon-for-linus-v4.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
      
       - fix regression in fam15h_power driver
      
       - minor variable type fix in lm90 driver
      
       - document compatible statement for ina2xx driver
      
      * tag 'hwmon-for-linus-v4.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (lm90) use proper type for update_interval
        hwmon: (ina2xx) Document compatible for INA231
        hwmon: (fam15h_power) Disable preemption when reading registers
      c8f17d60