17 Jul, 2015

5 commits

  • Fixed coding style issues found by checkpatch.pl tool. Changed
    space indentation to tab, removed unneccesary braces, removed
    space between MODULE macros and parentheses.

    REMARKS: failed to 'make' this file with error message
    'fatal error: asm/mach-types.h: No such file or directory'.

    Signed-off-by: Cristian Ardelean
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Cristian Ardelean
     
  • As policy->cpu may not be same in acpi_cpufreq_cpu_init() and
    acpi_cpufreq_cpu_exit(). There is a risk that we use different CPU
    to un/register ACPI performance. So acpi_processor_unregister_performance()
    may not be able to do the cleanup work. That causes a memory leak. And
    if there will be another acpi_processor_register_performance() call,
    it may also fail thanks to the internal check of pr->performace.

    So add a new struct acpi_cpufreq_data field, acpi_perf_cpu, to fix
    this issue.

    Signed-off-by: Pan Xinhui
    Acked-by: Viresh Kumar
    [ rjw: Changelog ]
    Signed-off-by: Rafael J. Wysocki

    Pan Xinhui
     
  • cpufreq_init_policy() can fail, and we don't do anything except a call
    to ->exit() on that. The policy should be freed if this happens.

    Do it properly.

    Reported-and-tested-by: "Jon Medhurst (Tixy)"
    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     
  • These labels are are named in two ways normally:
    - Based on what caused to jump to such labels
    - Based on what we do under such labels

    We follow the first naming convention today and that leads to multiple
    labels for doing the same work. Fix it by switching to the second way of
    naming them.

    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     
  • Drivers can store their internal per-policy information in
    policy->driver_data, lets use it.

    we have benefits after this replacing.
    1) memory saving.
    2) policy is shared by several cpus, per_cpu seems not correct. using
    *driver_data* is more reasonable.
    3) fix a memory leak in acpi_cpufreq_cpu_exit. as policy->cpu might
    change during cpu hotplug. So sometimes we cant't free *data*, use
    *driver_data* to fix it.
    4) fix a zero return value of get_cur_freq_on_cpu. Only per_cpu of
    policy->cpu is set to *data*, if we try to get cpufreq on other cpus, we
    get zero instead of correct values. Use *driver_data* to fix it.

    Signed-off-by: Pan Xinhui
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Pan Xinhui
     

10 Jul, 2015

2 commits

  • Users of freq table may want to access it for any CPU from
    policy->related_cpus mask. One such user is cpu-cooling layer. It gets a
    list of 'clip_cpus' (equivalent to policy->related_cpus) during
    registration and tries to get freq_table for the first CPU of this mask.

    If the CPU, for which it tries to fetch freq_table, is offline,
    cpufreq_frequency_get_table() fails. This happens because it relies on
    cpufreq_cpu_get_raw() for its functioning which returns policy only for
    online CPUs.

    The fix is to access the policy data structure for the given CPU
    directly (which also returns a valid policy for offline CPUs), but the
    policy itself has to be active (meaning that at least one CPU using it
    is online) for the frequency table to be returned.

    Because we will be using 'cpufreq_cpu_data' now, which is internal to
    the cpufreq core, move cpufreq_frequency_get_table() to cpufreq.c.

    Reported-and-tested-by: Pi-Cheng Chen
    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     
  • When all CPUs of a policy are hot-unplugged, we EXIT the governor but
    don't mark policy->governor as NULL. This was done in order to keep last
    used governor's information intact in sysfs, while the CPUs are offline.

    But we also need to clear policy->governor when restoring the policy.

    Because policy->governor still points to the last governor while policy
    is restored, following sequence of event happens:
    - cpufreq_init_policy() called while restoring policy
    - find_governor() matches last_governor string for present governors and
    returns last used governor's pointer, say ondemand. policy->governor
    already has the same address, unless the governor was removed in
    between.
    - cpufreq_set_policy() is called with both old/new policies governor set
    as ondemand.
    - Because governors matched, we skip governor initialization and return
    after calling __cpufreq_governor(CPUFREQ_GOV_LIMITS). Because the
    governor wasn't initialized for this policy, it returned -EBUSY.
    - cpufreq_init_policy() exits the policy on this error, but doesn't
    destroy it properly (should be fixed separately).
    - And so we enter a scenario where the policy isn't completely
    initialized but used.

    Fix this by setting policy->governor to NULL while restoring the policy.

    Reported-and-tested-by: Pi-Cheng Chen
    Reported-and-tested-by: "Jon Medhurst (Tixy)"
    Reported-and-tested-by: Steven Rostedt
    Fixes: 18bf3a124ef8 (cpufreq: Mark policy->governor = NULL for inactive policies)
    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     

06 Jul, 2015

2 commits

  • Linus Torvalds
     
  • …linux-platform-drivers-x86

    Pull late x86 platform driver updates from Darren Hart:
    "The following came in a bit later and I wanted them to bake in next a
    few more days before submitting, thus the second pull.

    A new intel_pmc_ipc driver, a symmetrical allocation and free fix in
    dell-laptop, a couple minor fixes, and some updated documentation in
    the dell-laptop comments.

    intel_pmc_ipc:
    - Add Intel Apollo Lake PMC IPC driver

    tc1100-wmi:
    - Delete an unnecessary check before the function call "kfree"

    dell-laptop:
    - Fix allocating & freeing SMI buffer page
    - Show info about WiGig and UWB in debugfs
    - Update information about wireless control"

    * tag 'platform-drivers-x86-v4.2-2' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86:
    intel_pmc_ipc: Add Intel Apollo Lake PMC IPC driver
    tc1100-wmi: Delete an unnecessary check before the function call "kfree"
    dell-laptop: Fix allocating & freeing SMI buffer page
    dell-laptop: Show info about WiGig and UWB in debugfs
    dell-laptop: Update information about wireless control

    Linus Torvalds
     

05 Jul, 2015

31 commits

  • Pull more vfs updates from Al Viro:
    "Assorted VFS fixes and related cleanups (IMO the most interesting in
    that part are f_path-related things and Eric's descriptor-related
    stuff). UFS regression fixes (it got broken last cycle). 9P fixes.
    fs-cache series, DAX patches, Jan's file_remove_suid() work"

    [ I'd say this is much more than "fixes and related cleanups". The
    file_table locking rule change by Eric Dumazet is a rather big and
    fundamental update even if the patch isn't huge. - Linus ]

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (49 commits)
    9p: cope with bogus responses from server in p9_client_{read,write}
    p9_client_write(): avoid double p9_free_req()
    9p: forgetting to cancel request on interrupted zero-copy RPC
    dax: bdev_direct_access() may sleep
    block: Add support for DAX reads/writes to block devices
    dax: Use copy_from_iter_nocache
    dax: Add block size note to documentation
    fs/file.c: __fget() and dup2() atomicity rules
    fs/file.c: don't acquire files->file_lock in fd_install()
    fs:super:get_anon_bdev: fix race condition could cause dev exceed its upper limitation
    vfs: avoid creation of inode number 0 in get_next_ino
    namei: make set_root_rcu() return void
    make simple_positive() public
    ufs: use dir_pages instead of ufs_dir_pages()
    pagemap.h: move dir_pages() over there
    remove the pointless include of lglock.h
    fs: cleanup slight list_entry abuse
    xfs: Correctly lock inode when removing suid and file capabilities
    fs: Call security_ops->inode_killpriv on truncate
    fs: Provide function telling whether file_remove_privs() will do anything
    ...

    Linus Torvalds
     
  • Commit 835a6a2f8603 ("Bluetooth: Stop sabotaging list poisoning")
    thought that the code was sabotaging the list poisoning when NULL'ing
    out the list pointers and removed it.

    But what was going on was that the bluetooth code was using NULL
    pointers for the list as a way to mark it empty, and that commit just
    broke it (and replaced the test with NULL with a "list_empty()" test on
    a uninitialized list instead, breaking things even further).

    So fix it all up to use the regular and real list_empty() handling
    (which does not use NULL, but a pointer to itself), also making sure to
    initialize the list properly (the previous NULL case was initialized
    implicitly by the session being allocated with kzalloc())

    This is a combination of patches by Marcel Holtmann and Tedd Ho-Jeong
    An.

    [ I would normally expect to get this through the bt tree, but I'm going
    to release -rc1, so I'm just committing this directly - Linus ]

    Reported-and-tested-by: Jörg Otte
    Cc: Alexey Dobriyan
    Original-by: Tedd Ho-Jeong An
    Original-by: Marcel Holtmann :
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Pull SCSI target updates from Nicholas Bellinger:
    "It's been a busy development cycle for target-core in a number of
    different areas.

    The fabric API usage for se_node_acl allocation is now within
    target-core code, dropping the external API callers for all fabric
    drivers tree-wide.

    There is a new conversion to RCU hlists for se_node_acl and
    se_portal_group LUN mappings, that turns fast-past LUN lookup into a
    completely lockless code-path. It also removes the original
    hard-coded limitation of 256 LUNs per fabric endpoint.

    The configfs attributes for backends can now be shared between core
    and driver code, allowing existing drivers to use common code while
    still allowing flexibility for new backend provided attributes.

    The highlights include:

    - Merge sbc_verify_dif_* into common code (sagi)
    - Remove iscsi-target support for obsolete IFMarker/OFMarker
    (Christophe Vu-Brugier)
    - Add bidi support in target/user backend (ilias + vangelis + agover)
    - Move se_node_acl allocation into target-core code (hch)
    - Add crc_t10dif_update common helper (akinobu + mkp)
    - Handle target-core odd SGL mapping for data transfer memory
    (akinobu)
    - Move transport ID handling into target-core (hch)
    - Move task tag into struct se_cmd + support 64-bit tags (bart)
    - Convert se_node_acl->device_list[] to RCU hlist (nab + hch +
    paulmck)
    - Convert se_portal_group->tpg_lun_list[] to RCU hlist (nab + hch +
    paulmck)
    - Simplify target backend driver registration (hch)
    - Consolidate + simplify target backend attribute implementations
    (hch + nab)
    - Subsume se_port + t10_alua_tg_pt_gp_member into se_lun (hch)
    - Drop lun_sep_lock for se_lun->lun_se_dev RCU usage (hch + nab)
    - Drop unnecessary core_tpg_register TFO parameter (nab)
    - Use 64-bit LUNs tree-wide (hannes)
    - Drop left-over TARGET_MAX_LUNS_PER_TRANSPORT limit (hannes)"

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (76 commits)
    target: Bump core version to v5.0
    target: remove target_core_configfs.h
    target: remove unused TARGET_CORE_CONFIG_ROOT define
    target: consolidate version defines
    target: implement WRITE_SAME with UNMAP bit using ->execute_unmap
    target: simplify UNMAP handling
    target: replace se_cmd->execute_rw with a protocol_data field
    target/user: Fix inconsistent kmap_atomic/kunmap_atomic
    target: Send UA when changing LUN inventory
    target: Send UA upon LUN RESET tmr completion
    target: Send UA on ALUA target port group change
    target: Convert se_lun->lun_deve_lock to normal spinlock
    target: use 'se_dev_entry' when allocating UAs
    target: Remove 'ua_nacl' pointer from se_ua structure
    target_core_alua: Correct UA handling when switching states
    xen-scsiback: Fix compile warning for 64-bit LUN
    target: Remove TARGET_MAX_LUNS_PER_TRANSPORT
    target: use 64-bit LUNs
    target: Drop duplicate + unused se_dev_check_wce
    target: Drop unnecessary core_tpg_register TFO parameter
    ...

    Linus Torvalds
     
  • Pull NTB updates from Jon Mason:
    "This includes a pretty significant reworking of the NTB core code, but
    has already produced some significant performance improvements.

    An abstraction layer was added to allow the hardware and clients to be
    easily added. This required rewriting the NTB transport layer for
    this abstraction layer. This modification will allow future "high
    performance" NTB clients.

    In addition to this change, a number of performance modifications were
    added. These changes include NUMA enablement, using CPU memcpy
    instead of asyncdma, and modification of NTB layer MTU size"

    * tag 'ntb-4.2' of git://github.com/jonmason/ntb: (22 commits)
    NTB: Add split BAR output for debugfs stats
    NTB: Change WARN_ON_ONCE to pr_warn_once on unsafe
    NTB: Print driver name and version in module init
    NTB: Increase transport MTU to 64k from 16k
    NTB: Rename Intel code names to platform names
    NTB: Default to CPU memcpy for performance
    NTB: Improve performance with write combining
    NTB: Use NUMA memory in Intel driver
    NTB: Use NUMA memory and DMA chan in transport
    NTB: Rate limit ntb_qp_link_work
    NTB: Add tool test client
    NTB: Add ping pong test client
    NTB: Add parameters for Intel SNB B2B addresses
    NTB: Reset transport QP link stats on down
    NTB: Do not advance transport RX on link down
    NTB: Differentiate transport link down messages
    NTB: Check the device ID to set errata flags
    NTB: Enable link for Intel root port mode in probe
    NTB: Read peer info from local SPAD in transport
    NTB: Split ntb_hw_intel and ntb_transport drivers
    ...

    Linus Torvalds
     
  • if server claims to have written/read more than we'd told it to,
    warn and cap the claimed byte count to avoid advancing more than
    we are ready to.

    Al Viro
     
  • Braino in "9p: switch p9_client_write() to passing it struct iov_iter *";
    if response is impossible to parse and we discard the request, get the
    out of the loop right there.

    Cc: stable@vger.kernel.org
    Signed-off-by: Al Viro

    Al Viro
     
  • If we'd already sent a request and decide to abort it, we *must*
    issue TFLUSH properly and not just blindly reuse the tag, or
    we'll get seriously screwed when response eventually arrives
    and we confuse it for response to later request that had reused
    the same tag.

    Cc: stable@vger.kernel.org # v3.2 and later
    Signed-off-by: Al Viro

    Al Viro
     
  • The brd driver is the only in-tree driver that may sleep currently.
    After some discussion on linux-fsdevel, we decided that any driver
    may choose to sleep in its ->direct_access method. To ensure that all
    callers of bdev_direct_access() are prepared for this, add a call
    to might_sleep().

    Signed-off-by: Matthew Wilcox
    Signed-off-by: Al Viro

    Matthew Wilcox
     
  • If a block device supports the ->direct_access methods, bypass the normal
    DIO path and use DAX to go straight to memcpy() instead of allocating
    a DIO and a BIO.

    Includes support for the DIO_SKIP_DIO_COUNT flag in DAX, as is done in
    do_blockdev_direct_IO().

    Signed-off-by: Matthew Wilcox
    Signed-off-by: Al Viro

    Matthew Wilcox
     
  • When userspace does a write, there's no need for the written data to
    pollute the CPU cache. This matches the original XIP code.

    Signed-off-by: Matthew Wilcox
    Signed-off-by: Al Viro

    Matthew Wilcox
     
  • For block devices which are small enough, mkfs will default to creating
    a filesystem with block sizes smaller than page size.

    Signed-off-by: Matthew Wilcox
    Signed-off-by: Al Viro

    Matthew Wilcox
     
  • Pull kvm fixes from Paolo Bonzini:
    "Except for the preempt notifiers fix, these are all small bugfixes
    that could have been waited for -rc2. Sending them now since I was
    taking care of Peter's patch anyway"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    kvm: add hyper-v crash msrs values
    KVM: x86: remove data variable from kvm_get_msr_common
    KVM: s390: virtio-ccw: don't overwrite config space values
    KVM: x86: keep track of LVT0 changes under APICv
    KVM: x86: properly restore LVT0
    KVM: x86: make vapics_in_nmi_mode atomic
    sched, preempt_notifier: separate notifier registration from static_key inc/dec

    Linus Torvalds
     
  • When split BAR is enabled, the driver needs to dump out the split BAR
    registers rather than the original 64bit BAR registers.

    Signed-off-by: Dave Jiang
    Signed-off-by: Jon Mason

    Dave Jiang
     
  • The unsafe doorbell and scratchpad access should display reason when
    WARN is called. Otherwise we get a stack dump without any explanation.

    Signed-off-by: Dave Jiang
    Signed-off-by: Jon Mason

    Dave Jiang
     
  • Printouts driver name and version to indicate what is being loaded.

    Signed-off-by: Dave Jiang
    Signed-off-by: Jon Mason

    Dave Jiang
     
  • Benchmarking showed a significant performance increase with the MTU size
    to 64k instead of 16k. Change the driver default to 64k.

    Signed-off-by: Dave Jiang
    Signed-off-by: Jon Mason

    Dave Jiang
     
  • Instead of using the platform code names, use the correct platform names
    to identify the respective Intel NTB hardware.

    Signed-off-by: Dave Jiang
    Signed-off-by: Jon Mason

    Dave Jiang
     
  • Disable DMA usage by default, since the CPU provides much better
    performance with write combining. Provide a module parameter to enable
    DMA usage when offloading the memcpy is preferred.

    Signed-off-by: Dave Jiang
    Signed-off-by: Allen Hubbe
    Signed-off-by: Jon Mason

    Dave Jiang
     
  • Changing the memory window BAR mappings to write combining significantly
    boosts the performance. We will also use memcpy that uses non-temporal
    store, which showed performance improvement when doing non-cached
    memcpys.

    Signed-off-by: Dave Jiang
    Signed-off-by: Jon Mason

    Dave Jiang
     
  • Allocate memory for the NUMA node of the NTB device.

    Signed-off-by: Allen Hubbe
    Signed-off-by: Jon Mason

    Allen Hubbe
     
  • Allocate memory and request the DMA channel for the same NUMA node as
    the NTB device.

    Signed-off-by: Allen Hubbe
    Signed-off-by: Jon Mason

    Allen Hubbe
     
  • When the ntb transport is connecting and waiting for the peer, the debug
    console receives lots of debug level messages about the remote qp link
    status being down. Rate limit those messages.

    Signed-off-by: Allen Hubbe
    Signed-off-by: Jon Mason

    Allen Hubbe
     
  • This is a simple debugging driver that enables the doorbell and
    scratch pad registers to be read and written from the debugfs. This
    tool enables more complicated debugging to be scripted from user space.
    This driver may be used to test that your ntb hardware and drivers are
    functioning at a basic level.

    Signed-off-by: Allen Hubbe
    Signed-off-by: Jon Mason

    Allen Hubbe
     
  • This is a simple ping pong driver that exercises the scratch pads and
    doorbells of the ntb hardware. This driver may be used to test that
    your ntb hardware and drivers are functioning at a basic level.

    Signed-off-by: Allen Hubbe
    Signed-off-by: Jon Mason

    Allen Hubbe
     
  • Add module parameters for the addresses to be used in B2B topology.

    Signed-off-by: Allen Hubbe
    Signed-off-by: Jon Mason

    Allen Hubbe
     
  • Reset the link stats when the link goes down. In particular, the TX and
    RX index and count must be reset, or else the TX side will be sending
    packets to the RX side where the RX side is not expecting them. Reset
    all the stats, to be consistent.

    Signed-off-by: Allen Hubbe
    Signed-off-by: Jon Mason

    Allen Hubbe
     
  • On link down, don't advance RX index to the next entry. The next entry
    should never be valid after receiving the link down flag.

    Signed-off-by: Allen Hubbe
    Signed-off-by: Jon Mason

    Allen Hubbe
     
  • The same message "qp %d: Link Down\n" was printed at two locations in
    ntb_transport. Change the messages so they are distinct.

    Signed-off-by: Allen Hubbe
    Signed-off-by: Jon Mason

    Allen Hubbe
     
  • Set errata flags for the specific device IDs to which they apply,
    instead of the whole Xeon hardware class.

    Signed-off-by: Dave Jiang
    Signed-off-by: Jon Mason

    Dave Jiang
     
  • Link training should be enabled in the driver probe for root port mode.
    We should not have to wait for transport to be loaded for this to
    happen. Otherwise the ntb device will not show up on the transparent
    bridge side of the link.

    Signed-off-by: Dave Jiang
    Signed-off-by: Jon Mason

    Dave Jiang
     
  • The transport was writing and then reading the peer scratch pad,
    essentially reading what it just wrote instead of exchanging any
    information with the peer. The transport expects the peer values to be
    the same as the local values, so this issue was not obvious.

    Signed-off-by: Dave Jiang
    Signed-off-by: Jon Mason

    Dave Jiang