1. 06 2月, 2015 4 次提交
  2. 29 1月, 2015 4 次提交
  3. 24 1月, 2015 2 次提交
    • S
      blk-mq: add tag allocation policy · 24391c0d
      Shaohua Li 提交于
      This is the blk-mq part to support tag allocation policy. The default
      allocation policy isn't changed (though it's not a strict FIFO). The new
      policy is round-robin for libata. But it's a try-best implementation. If
      multiple tasks are competing, the tags returned will be mixed (which is
      unavoidable even with !mq, as requests from different tasks can be
      mixed in queue)
      
      Cc: Jens Axboe <axboe@fb.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Christoph Hellwig <hch@infradead.org>
      Signed-off-by: NShaohua Li <shli@fb.com>
      Signed-off-by: NJens Axboe <axboe@fb.com>
      24391c0d
    • S
      block: support different tag allocation policy · ee1b6f7a
      Shaohua Li 提交于
      The libata tag allocation is using a round-robin policy. Next patch will
      make libata use block generic tag allocation, so let's add a policy to
      tag allocation.
      
      Currently two policies: FIFO (default) and round-robin.
      
      Cc: Jens Axboe <axboe@fb.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Christoph Hellwig <hch@infradead.org>
      Signed-off-by: NShaohua Li <shli@fb.com>
      Signed-off-by: NJens Axboe <axboe@fb.com>
      ee1b6f7a
  4. 22 1月, 2015 3 次提交
    • B
      block: Remove annoying "unknown partition table" message · bb5c3cdd
      Boaz Harrosh 提交于
      As Christoph put it:
        Can we just get rid of the warnings?  It's fairly annoying as devices
        without partitions are perfectly fine and very useful.
      
      Me too I see this message every VM boot for ages on all my
      devices. Would love to just remove it. For me a partition-table
      is only needed for a booting BIOS, grub, and stuff.
      
      CC: Christoph Hellwig <hch@infradead.org>
      Signed-off-by: NBoaz Harrosh <boaz@plexistor.com>
      Signed-off-by: NJens Axboe <axboe@fb.com>
      bb5c3cdd
    • M
      block: Add discard flag to blkdev_issue_zeroout() function · d93ba7a5
      Martin K. Petersen 提交于
      blkdev_issue_discard() will zero a given block range. This is done by
      way of explicit writing, thus provisioning or allocating the blocks on
      disk.
      
      There are use cases where the desired behavior is to zero the blocks but
      unprovision them if possible. The blocks must deterministically contain
      zeroes when they are subsequently read back.
      
      This patch adds a flag to blkdev_issue_zeroout() that provides this
      variant. If the discard flag is set and a block device guarantees
      discard_zeroes_data we will use REQ_DISCARD to clear the block range. If
      the device does not support discard_zeroes_data or if the discard
      request fails we will fall back to first REQ_WRITE_SAME and then a
      regular REQ_WRITE.
      
      Also update the callers of blkdev_issue_zero() to reflect the new flag
      and make sb_issue_zeroout() prefer the discard approach.
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NJens Axboe <axboe@fb.com>
      d93ba7a5
    • J
      cfq-iosched: fix incorrect filing of rt async cfqq · c6ce1943
      Jeff Moyer 提交于
      Hi,
      
      If you can manage to submit an async write as the first async I/O from
      the context of a process with realtime scheduling priority, then a
      cfq_queue is allocated, but filed into the wrong async_cfqq bucket.  It
      ends up in the best effort array, but actually has realtime I/O
      scheduling priority set in cfqq->ioprio.
      
      The reason is that cfq_get_queue assumes the default scheduling class and
      priority when there is no information present (i.e. when the async cfqq
      is created):
      
      static struct cfq_queue *
      cfq_get_queue(struct cfq_data *cfqd, bool is_sync, struct cfq_io_cq *cic,
      	      struct bio *bio, gfp_t gfp_mask)
      {
      	const int ioprio_class = IOPRIO_PRIO_CLASS(cic->ioprio);
      	const int ioprio = IOPRIO_PRIO_DATA(cic->ioprio);
      
      cic->ioprio starts out as 0, which is "invalid".  So, class of 0
      (IOPRIO_CLASS_NONE) is passed to cfq_async_queue_prio like so:
      
      		async_cfqq = cfq_async_queue_prio(cfqd, ioprio_class, ioprio);
      
      static struct cfq_queue **
      cfq_async_queue_prio(struct cfq_data *cfqd, int ioprio_class, int ioprio)
      {
              switch (ioprio_class) {
              case IOPRIO_CLASS_RT:
                      return &cfqd->async_cfqq[0][ioprio];
              case IOPRIO_CLASS_NONE:
                      ioprio = IOPRIO_NORM;
                      /* fall through */
              case IOPRIO_CLASS_BE:
                      return &cfqd->async_cfqq[1][ioprio];
              case IOPRIO_CLASS_IDLE:
                      return &cfqd->async_idle_cfqq;
              default:
                      BUG();
              }
      }
      
      Here, instead of returning a class mapped from the process' scheduling
      priority, we get back the bucket associated with IOPRIO_CLASS_BE.
      
      Now, there is no queue allocated there yet, so we create it:
      
      		cfqq = cfq_find_alloc_queue(cfqd, is_sync, cic, bio, gfp_mask);
      
      That function ends up doing this:
      
      			cfq_init_cfqq(cfqd, cfqq, current->pid, is_sync);
      			cfq_init_prio_data(cfqq, cic);
      
      cfq_init_cfqq marks the priority as having changed.  Then, cfq_init_prio
      data does this:
      
      	ioprio_class = IOPRIO_PRIO_CLASS(cic->ioprio);
      	switch (ioprio_class) {
      	default:
      		printk(KERN_ERR "cfq: bad prio %x\n", ioprio_class);
      	case IOPRIO_CLASS_NONE:
      		/*
      		 * no prio set, inherit CPU scheduling settings
      		 */
      		cfqq->ioprio = task_nice_ioprio(tsk);
      		cfqq->ioprio_class = task_nice_ioclass(tsk);
      		break;
      
      So we basically have two code paths that treat IOPRIO_CLASS_NONE
      differently, which results in an RT async cfqq filed into a best effort
      bucket.
      
      Attached is a patch which fixes the problem.  I'm not sure how to make
      it cleaner.  Suggestions would be welcome.
      Signed-off-by: NJeff Moyer <jmoyer@redhat.com>
      Tested-by: NHidehiro Kawai <hidehiro.kawai.ez@hitachi.com>
      Cc: stable@kernel.org
      Signed-off-by: NJens Axboe <axboe@fb.com>
      c6ce1943
  5. 14 1月, 2015 2 次提交
    • J
      blk-mq: fix false negative out-of-tags condition · 0bf36498
      Jens Axboe 提交于
      The blk-mq tagging tries to maintain some locality between CPUs and
      the tags issued. The tags are split into groups of words, and the
      words may not be fully populated. When searching for a new free tag,
      blk-mq may look at partial words, hence it passes in an offset/size
      to find_next_zero_bit(). However, it does that wrong, the size must
      always be the full length of the number of tags in that word,
      otherwise we'll potentially miss some near the end.
      
      Another issue is when __bt_get() goes from one word set to the next.
      It bumps the index, but not the last_tag associated with the
      previous index. Bump that to be in the range of the new word.
      
      Finally, clean up __bt_get() and __bt_get_word() a bit and get
      rid of the goto in there, and the unnecessary 'wrap' variable.
      Signed-off-by: NJens Axboe <axboe@fb.com>
      0bf36498
    • M
      block: Change direct_access calling convention · dd22f551
      Matthew Wilcox 提交于
      In order to support accesses to larger chunks of memory, pass in a
      'size' parameter (counted in bytes), and return the amount available at
      that address.
      
      Add a new helper function, bdev_direct_access(), to handle common
      functionality including partition handling, checking the length requested
      is positive, checking for the sector being page-aligned, and checking
      the length of the request does not pass the end of the partition.
      Signed-off-by: NMatthew Wilcox <matthew.r.wilcox@intel.com>
      Reviewed-by: NJan Kara <jack@suse.cz>
      Reviewed-by: NBoaz Harrosh <boaz@plexistor.com>
      Signed-off-by: NJens Axboe <axboe@fb.com>
      dd22f551
  6. 03 1月, 2015 3 次提交
  7. 01 1月, 2015 1 次提交
  8. 29 12月, 2014 3 次提交
  9. 28 12月, 2014 5 次提交
  10. 27 12月, 2014 3 次提交
  11. 26 12月, 2014 4 次提交
    • L
      ALSA: hda_intel: apply the Seperate stream_tag for Skylake · d6795827
      Libin Yang 提交于
      The total stream number of Skylake's input and output stream
      exceeds 15, which will cause some streams do not work because
      of the overflow on SDxCTL.STRM field if using the legacy
      stream tag allocation method.
      
      This patch uses the new stream tag allocation method by add
      the flag AZX_DCAPS_SEPARATE_STREAM_TAG for Skylake platform.
      Signed-off-by: NLibin Yang <libin.yang@intel.com>
      Reviewed-by: NVinod Koul <vinod.koul@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      d6795827
    • R
      ALSA: hda_controller: Separate stream_tag for input and output streams. · 93e3423e
      Rafal Redzimski 提交于
      Implemented separate stream_tag assignment for input and output streams.
      According to hda specification stream tag must be unique throughout the
      input streams group, however an output stream might use a stream tag
      which is already in use by an input stream. This change is necessary
      to support HW which provides a total of more than 15 stream DMA engines
      which with legacy implementation causes an overflow on SDxCTL.STRM
      field (and the whole SDxCTL register) and as a result usage of
      Reserved value 0 in the SDxCTL.STRM field which confuses HDA controller.
      Signed-off-by: NRafal Redzimski <rafal.f.redzimski@intel.com>
      Signed-off-by: NJayachandran B <jayachandran.b@intel.com>
      Signed-off-by: NLibin Yang <libin.yang@intel.com>
      Reviewed-by: NVinod Koul <vinod.koul@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      93e3423e
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 08b022a9
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "Xmas fixes pull:
      
        core:
            one atomic fix, revert the WARN_ON dumb buffers patch.
      
        agp:
            fixup Dave J.
      
        nouveau:
            fix 3.18 regression for old userspace
      
        tegra fixes:
            vblank and iommu fixes
      
        amdkfd:
            fix bugs shown by testing with userspace, init apertures once
      
        msm:
            hdmi fixes and cleanup
      
        i915:
            misc fixes
      
        There is also a link ordering fix that I've asked to be cc'ed to you,
        putting iommu before gpu, it fixes an issue with amdkfd when things
        are all in the kernel, but I didn't like sending it via my tree
        without discussion.
      
        I'll probably be a bit on/off for a few weeks with pulls now, due to
        holidays and LCA, so don't be surprised if stuff gets a bit backed up,
        and things end up a bit large due to lag"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (28 commits)
        Revert "drm/gem: Warn on illegal use of the dumb buffer interface v2"
        agp: Fix up email address & attributions in AGP MODULE_AUTHOR tags
        nouveau: bring back legacy mmap handler
        drm/msm/hdmi: rework HDMI IRQ handler
        drm/msm/hdmi: enable regulators before clocks to avoid warnings
        drm/msm/mdp5: update irqs on crtc<->encoder link change
        drm/msm: block incoming update on pending updates
        drm/atomic: fix potential null ptr on plane enable
        drm/msm: Deletion of unnecessary checks before the function call "release_firmware"
        drm/msm: Deletion of unnecessary checks before two function calls
        drm/tegra: dc: Select root window for event dispatch
        drm/tegra: gem: Use the proper size for GEM objects
        drm/tegra: gem: Flush buffer objects upon allocation
        drm/tegra: dc: Fix a potential race on page-flip completion
        drm/tegra: dc: Consistently use the same pipe
        drm/irq: Add drm_crtc_vblank_count()
        drm/irq: Add drm_crtc_handle_vblank()
        drm/irq: Add drm_crtc_send_vblank_event()
        drm/i915: Disable PSMI sleep messages on all rings around context switches
        drm/i915: Force the CS stall for invalidate flushes
        ...
      08b022a9
    • L
      Merge tag 'for-linus-2' of git://git.code.sf.net/p/openipmi/linux-ipmi · ebda37c9
      Linus Torvalds 提交于
      Pull ipmi driver bugfixes from Corey Minyard:
       "Fix two bugs:
      
        One that lockdep turned up, I didn't go far enough with cleanup of
        attributes for IPMI.  This has been there a long time; my previous fix
        of this didn't fix all the attributes.
      
        One fix for some arches that need an explicit linux/ctype.h for
        isspace()"
      
      * tag 'for-linus-2' of git://git.code.sf.net/p/openipmi/linux-ipmi:
        ipmi: Fix compile issue with isspace()
        ipmi: Finish cleanup of BMC attributes
      ebda37c9
  12. 24 12月, 2014 6 次提交
    • D
      Revert "drm/gem: Warn on illegal use of the dumb buffer interface v2" · da6b51d0
      Dave Airlie 提交于
      This reverts commit 355a7018.
      
      This had some bad side effects under normal operation, and should
      have been dropped earlier.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      da6b51d0
    • D
      Merge tag 'amdkfd-fixes-2014-12-23' of git://people.freedesktop.org/~gabbayo/linux into drm-fixes · 0d83b72a
      Dave Airlie 提交于
      - Display MEC fw version in topology. Without this, the HSA userspace
        stack is broken.
      
      - Init apertures information only once per process
      
      * tag 'amdkfd-fixes-2014-12-23' of git://people.freedesktop.org/~gabbayo/linux:
        amdkfd: init aperture once per process
        amdkfd: Display MEC fw version in topology node
        drm/radeon: Add implementation of get_fw_version
        drm/amd: Add get_fw_version to kfd-->kgd interface
      0d83b72a
    • L
      Merge branch 'upstream' of git://git.infradead.org/users/pcmoore/audit · 66b3f4f0
      Linus Torvalds 提交于
      Pull audit fixes from Paul Moore:
       "Four patches to fix various problems with the audit subsystem, all are
        fairly small and straightforward.
      
        One patch fixes a problem where we weren't using the correct gfp
        allocation flags (GFP_KERNEL regardless of context, oops), one patch
        fixes a problem with old userspace tools (this was broken for a
        while), one patch fixes a problem where we weren't recording pathnames
        correctly, and one fixes a problem with PID based filters.
      
        In general I don't think there is anything controversial with this
        patchset, and it fixes some rather unfortunate bugs; the allocation
        flag one can be particularly scary looking for users"
      
      * 'upstream' of git://git.infradead.org/users/pcmoore/audit:
        audit: restore AUDIT_LOGINUID unset ABI
        audit: correctly record file names with different path name types
        audit: use supplied gfp_mask from audit_buffer in kauditd_send_multicast_skb
        audit: don't attempt to lookup PIDs when changing PID filtering audit rules
      66b3f4f0
    • R
      audit: restore AUDIT_LOGINUID unset ABI · 041d7b98
      Richard Guy Briggs 提交于
      A regression was caused by commit 780a7654:
      	 audit: Make testing for a valid loginuid explicit.
      (which in turn attempted to fix a regression caused by e1760bd5)
      
      When audit_krule_to_data() fills in the rules to get a listing, there was a
      missing clause to convert back from AUDIT_LOGINUID_SET to AUDIT_LOGINUID.
      
      This broke userspace by not returning the same information that was sent and
      expected.
      
      The rule:
      	auditctl -a exit,never -F auid=-1
      gives:
      	auditctl -l
      		LIST_RULES: exit,never f24=0 syscall=all
      when it should give:
      		LIST_RULES: exit,never auid=-1 (0xffffffff) syscall=all
      
      Tag it so that it is reported the same way it was set.  Create a new
      private flags audit_krule field (pflags) to store it that won't interact with
      the public one from the API.
      
      Cc: stable@vger.kernel.org # v3.10-rc1+
      Signed-off-by: NRichard Guy Briggs <rgb@redhat.com>
      Signed-off-by: NPaul Moore <pmoore@redhat.com>
      041d7b98
    • L
      Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 53262d12
      Linus Torvalds 提交于
      Pull arm64 fixes from Catalin Marinas:
       - __cpu_suspend mm switching fix after warm boot
       - arch_setup_dma_ops implementation
       - pgd_page compilation error fix
       - defconfig updates
      
      * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
        arm64: mm: Add pgd_page to support RCU fast_gup
        arm64: defconfig: defconfig update for 3.19
        arm64: kernel: fix __cpu_suspend mm switch on warm-boot
        arm64: Replace set_arch_dma_coherent_ops with arch_setup_dma_ops
      53262d12
    • J
      arm64: mm: Add pgd_page to support RCU fast_gup · 5d96e0cb
      Jungseok Lee 提交于
      This patch adds pgd_page definition in order to keep supporting
      HAVE_GENERIC_RCU_GUP configuration. In addition, it changes pud_page
      expression to align with pmd_page for readability.
      
      An introduction of pgd_page resolves the following build breakage
      under 4KB + 4Level memory management combo.
      
      mm/gup.c: In function 'gup_huge_pgd':
      mm/gup.c:889:2: error: implicit declaration of function 'pgd_page' [-Werror=implicit-function-declaration]
        head = pgd_page(orig);
        ^
      mm/gup.c:889:7: warning: assignment makes pointer from integer without a cast
        head = pgd_page(orig);
      
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Steve Capper <steve.capper@linaro.org>
      Signed-off-by: NJungseok Lee <jungseoklee85@gmail.com>
      [catalin.marinas@arm.com: remove duplicate pmd_page definition]
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      5d96e0cb