• Dan Williams's avatar
    ioat: fix size of 'completion' for Xen · 27502935
    Dan Williams authored
    Starting with v3.2 Jonathan reports that Xen crashes loading the ioatdma
    driver.  A debug run shows:
    
      ioatdma 0000:00:16.4: desc[0]: (0x300cc7000->0x300cc7040) cookie: 0 flags: 0x2 ctl: 0x29 (op: 0 int_en: 1 compl: 1)
      ...
      ioatdma 0000:00:16.4: ioat_get_current_completion: phys_complete: 0xcc7000
    
    ...which shows that in this environment GFP_KERNEL memory may be backed
    by a 64-bit dma address.  This breaks the driver's assumption that an
    unsigned long should be able to contain the physical address for
    descriptor memory.  Switch to dma_addr_t which beyond being the right
    size, is the true type for the data i.e. an io-virtual address
    inidicating the engine's last processed descriptor.
    
    [stable: 3.2+]
    Cc: <stable@vger.kernel.org>
    Reported-by: default avatarJonathan Nieder <jrnieder@gmail.com>
    Reported-by: default avatarWilliam Dauchy <wdauchy@gmail.com>
    Tested-by: default avatarWilliam Dauchy <wdauchy@gmail.com>
    Tested-by: default avatarDave Jiang <dave.jiang@intel.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    27502935
dma.h 10.4 KB