lkml.org 
[lkml]   [2006]   [Sep]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 19 of 28] IB/ipath - call mtrr_del with correct arguments
    Date
    From
    We were passing 0 for base and length, which worked on older kernels,
    but it doesn't seem to any longer.

    Signed-off-by: Bryan O'Sullivan <bryan.osullivan@qlogic.com>

    diff -r de99d6fb2d1d -r 858280e8cbab drivers/infiniband/hw/ipath/ipath_kernel.h
    --- a/drivers/infiniband/hw/ipath/ipath_kernel.h Thu Sep 28 08:57:12 2006 -0700
    +++ b/drivers/infiniband/hw/ipath/ipath_kernel.h Thu Sep 28 08:57:12 2006 -0700
    @@ -336,6 +336,8 @@ struct ipath_devdata {
    u8 ipath_ht_slave_off;
    /* for write combining settings */
    unsigned long ipath_wc_cookie;
    + unsigned long ipath_wc_base;
    + unsigned long ipath_wc_len;
    /* ref count for each pkey */
    atomic_t ipath_pkeyrefs[4];
    /* shadow copy of all exptids physaddr; used only by funcsim */
    diff -r de99d6fb2d1d -r 858280e8cbab drivers/infiniband/hw/ipath/ipath_wc_x86_64.c
    --- a/drivers/infiniband/hw/ipath/ipath_wc_x86_64.c Thu Sep 28 08:57:12 2006 -0700
    +++ b/drivers/infiniband/hw/ipath/ipath_wc_x86_64.c Thu Sep 28 08:57:12 2006 -0700
    @@ -123,6 +123,8 @@ int ipath_enable_wc(struct ipath_devdata
    ipath_cdbg(VERBOSE, "Set mtrr for chip to WC, "
    "cookie is %d\n", cookie);
    dd->ipath_wc_cookie = cookie;
    + dd->ipath_wc_base = (unsigned long) pioaddr;
    + dd->ipath_wc_len = (unsigned long) piolen;
    }
    }

    @@ -136,9 +138,16 @@ void ipath_disable_wc(struct ipath_devda
    void ipath_disable_wc(struct ipath_devdata *dd)
    {
    if (dd->ipath_wc_cookie) {
    + int r;
    ipath_cdbg(VERBOSE, "undoing WCCOMB on pio buffers\n");
    - mtrr_del(dd->ipath_wc_cookie, 0, 0);
    - dd->ipath_wc_cookie = 0;
    + r = mtrr_del(dd->ipath_wc_cookie, dd->ipath_wc_base,
    + dd->ipath_wc_len);
    + if (r < 0)
    + dev_info(&dd->pcidev->dev,
    + "mtrr_del(%lx, %lx, %lx) failed: %d\n",
    + dd->ipath_wc_cookie, dd->ipath_wc_base,
    + dd->ipath_wc_len, r);
    + dd->ipath_wc_cookie = 0; // even on failure
    }
    }

    -
    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: 2006-09-28 18:07    [W:0.024 / U:0.012 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site