lkml.org 
[lkml]   [2010]   [Aug]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH wq#for-linus] drm: fix a fallout from slow-work -> wq conversion
    On Mon, Aug 09, 2010 at 12:00:49PM +0200, Tejun Heo wrote:
    > Commit 991ea75c (drm: use workqueue instead of slow-work), which made
    > drm to use wq instead of slow-work, didn't account for the return
    > value difference between delayed_slow_work_enqueue() and
    > queue_delayed_work(). The former returns 0 on success and -errno on
    > failures while the latter never fails and only uses the return value
    > to indicate whether the work was already pending or not.
    >
    > This misconversion triggered spurious error messages. Remove the now
    > unnecessary return value check and error message.
    >
    > Signed-off-by: Tejun Heo <tj@kernel.org>
    > Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de>
    > Cc: David Airlie <airlied@linux.ie>
    > Cc: dri-devel@lists.freedesktop.org
    > ---
    > Markus, it's almost trivial but it would be great if you can test this
    > one too.

    Looks good, but drm_kms_helper_poll_disable needs the same treatment.


    diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
    index 4598130..b9e4dbf 100644
    --- a/drivers/gpu/drm/drm_crtc_helper.c
    +++ b/drivers/gpu/drm/drm_crtc_helper.c
    @@ -839,7 +839,6 @@ static void output_poll_execute(struct work_struct *work)
    struct drm_connector *connector;
    enum drm_connector_status old_status, status;
    bool repoll = false, changed = false;
    - int ret;

    mutex_lock(&dev->mode_config.mutex);
    list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
    @@ -874,11 +873,8 @@ static void output_poll_execute(struct work_struct *work)
    dev->mode_config.funcs->output_poll_changed(dev);
    }

    - if (repoll) {
    - ret = queue_delayed_work(system_nrt_wq, delayed_work, DRM_OUTPUT_POLL_PERIOD);
    - if (ret)
    - DRM_ERROR("delayed enqueue failed %d\n", ret);
    - }
    + if (repoll)
    + queue_delayed_work(system_nrt_wq, delayed_work, DRM_OUTPUT_POLL_PERIOD);
    }

    void drm_kms_helper_poll_disable(struct drm_device *dev)
    @@ -893,18 +889,14 @@ void drm_kms_helper_poll_enable(struct drm_device *dev)
    {
    bool poll = false;
    struct drm_connector *connector;
    - int ret;

    list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
    if (connector->polled)
    poll = true;
    }

    - if (poll) {
    - ret = queue_delayed_work(system_nrt_wq, &dev->mode_config.output_poll_work, DRM_OUTPUT_POLL_PERIOD);
    - if (ret)
    - DRM_ERROR("delayed enqueue failed %d\n", ret);
    - }
    + if (poll)
    + queue_delayed_work(system_nrt_wq, &dev->mode_config.output_poll_work, DRM_OUTPUT_POLL_PERIOD);
    }
    EXPORT_SYMBOL(drm_kms_helper_poll_enable);

    --
    »A man who doesn't know he is in prison can never escape.«
    William S. Burroughs
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2010-08-09 12:17    [W:0.023 / U:0.936 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site