You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'sg' of git://git.kernel.dk/linux-2.6-block
* 'sg' of git://git.kernel.dk/linux-2.6-block: fix sg_phys to use dma_addr_t ub: add sg_init_table for sense and read capacity commands x86: pci-gart fix blackfin: fix sg fallout xtensa: dma-mapping.h is using linux/scatterlist.h functions, so include it SG: audit of drivers that use blk_rq_map_sg() arch/um/drivers/ubd_kern.c: fix a building error SG: Change sg_set_page() to take length and offset argument AVR32: Fix sg_page breakage mmc: sg fallout m68k: sg fallout More SG build fixes sg: add missing sg_init_table calls to zfcp SG build fix
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
#include <linux/device.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/scatterlist.h>
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/bfin-global.h>
|
||||
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/scatterlist.h>
|
||||
#include <linux/vmalloc.h>
|
||||
|
||||
#include <asm/pgalloc.h>
|
||||
#include <asm/scatterlist.h>
|
||||
|
||||
void *dma_alloc_coherent(struct device *dev, size_t size,
|
||||
dma_addr_t *handle, gfp_t flag)
|
||||
|
||||
@@ -234,7 +234,7 @@ unsigned long prepare_sg(struct scatterlist *sg, int nents)
|
||||
dma_sg->dma_length = dent_len;
|
||||
|
||||
if (dma_sg != sg) {
|
||||
dma_sg = next_sg(dma_sg);
|
||||
dma_sg = sg_next(dma_sg);
|
||||
dma_sg->dma_length = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -2121,7 +2121,7 @@ int ldc_map_sg(struct ldc_channel *lp,
|
||||
state.nc = 0;
|
||||
|
||||
for (i = 0; i < num_sg; i++)
|
||||
fill_cookies(&state, page_to_pfn(sg[i].page) << PAGE_SHIFT,
|
||||
fill_cookies(&state, page_to_pfn(sg_page(&sg[i])) << PAGE_SHIFT,
|
||||
sg[i].offset, sg[i].length);
|
||||
|
||||
return state.nc;
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "linux/genhd.h"
|
||||
#include "linux/spinlock.h"
|
||||
#include "linux/platform_device.h"
|
||||
#include "linux/scatterlist.h"
|
||||
#include "asm/segment.h"
|
||||
#include "asm/uaccess.h"
|
||||
#include "asm/irq.h"
|
||||
@@ -704,6 +705,7 @@ static int ubd_add(int n, char **error_out)
|
||||
ubd_dev->size = ROUND_BLOCK(ubd_dev->size);
|
||||
|
||||
INIT_LIST_HEAD(&ubd_dev->restart);
|
||||
sg_init_table(&ubd_dev->sg, MAX_SG);
|
||||
|
||||
err = -ENOMEM;
|
||||
ubd_dev->queue = blk_init_queue(do_ubd_request, &ubd_dev->lock);
|
||||
|
||||
@@ -338,7 +338,6 @@ static int __dma_map_cont(struct scatterlist *start, int nelems,
|
||||
|
||||
BUG_ON(s != start && s->offset);
|
||||
if (s == start) {
|
||||
*sout = *s;
|
||||
sout->dma_address = iommu_bus_base;
|
||||
sout->dma_address += iommu_page*PAGE_SIZE + s->offset;
|
||||
sout->dma_length = s->length;
|
||||
@@ -365,7 +364,7 @@ static inline int dma_map_cont(struct scatterlist *start, int nelems,
|
||||
{
|
||||
if (!need) {
|
||||
BUG_ON(nelems != 1);
|
||||
*sout = *start;
|
||||
sout->dma_address = start->dma_address;
|
||||
sout->dma_length = start->length;
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-3
@@ -1366,9 +1366,7 @@ new_segment:
|
||||
sg = sg_next(sg);
|
||||
}
|
||||
|
||||
sg_set_page(sg, bvec->bv_page);
|
||||
sg->length = nbytes;
|
||||
sg->offset = bvec->bv_offset;
|
||||
sg_set_page(sg, bvec->bv_page, nbytes, bvec->bv_offset);
|
||||
nsegs++;
|
||||
}
|
||||
bvprv = bvec;
|
||||
|
||||
+1
-2
@@ -160,8 +160,7 @@ static int hmac_digest(struct hash_desc *pdesc, struct scatterlist *sg,
|
||||
|
||||
sg_set_buf(sg1, ipad, bs);
|
||||
|
||||
sg_set_page(&sg[1], (void *) sg);
|
||||
sg1[1].length = 0;
|
||||
sg_set_page(&sg[1], (void *) sg, 0, 0);
|
||||
sg_set_buf(sg2, opad, bs + ds);
|
||||
|
||||
err = crypto_hash_digest(&desc, sg1, nbytes + bs, digest);
|
||||
|
||||
@@ -4689,8 +4689,8 @@ static int ata_sg_setup(struct ata_queued_cmd *qc)
|
||||
* data in this function or read data in ata_sg_clean.
|
||||
*/
|
||||
offset = lsg->offset + lsg->length - qc->pad_len;
|
||||
sg_set_page(psg, nth_page(sg_page(lsg), offset >> PAGE_SHIFT));
|
||||
psg->offset = offset_in_page(offset);
|
||||
sg_set_page(psg, nth_page(sg_page(lsg), offset >> PAGE_SHIFT),
|
||||
qc->pad_len, offset_in_page(offset));
|
||||
|
||||
if (qc->tf.flags & ATA_TFLAG_WRITE) {
|
||||
void *addr = kmap_atomic(sg_page(psg), KM_IRQ0);
|
||||
|
||||
@@ -150,13 +150,8 @@ cryptoloop_transfer(struct loop_device *lo, int cmd,
|
||||
u32 iv[4] = { 0, };
|
||||
iv[0] = cpu_to_le32(IV & 0xffffffff);
|
||||
|
||||
sg_set_page(&sg_in, in_page);
|
||||
sg_in.offset = in_offs;
|
||||
sg_in.length = sz;
|
||||
|
||||
sg_set_page(&sg_out, out_page);
|
||||
sg_out.offset = out_offs;
|
||||
sg_out.length = sz;
|
||||
sg_set_page(&sg_in, in_page, sz, in_offs);
|
||||
sg_set_page(&sg_out, out_page, sz, out_offs);
|
||||
|
||||
desc.info = iv;
|
||||
err = encdecfunc(&desc, &sg_out, &sg_in, sz);
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/scatterlist.h>
|
||||
|
||||
#include <asm/vio.h>
|
||||
#include <asm/ldc.h>
|
||||
|
||||
+5
-6
@@ -1428,9 +1428,9 @@ static void ub_state_sense(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
|
||||
scmd->state = UB_CMDST_INIT;
|
||||
scmd->nsg = 1;
|
||||
sg = &scmd->sgv[0];
|
||||
sg_set_page(sg, virt_to_page(sc->top_sense));
|
||||
sg->offset = (unsigned long)sc->top_sense & (PAGE_SIZE-1);
|
||||
sg->length = UB_SENSE_SIZE;
|
||||
sg_init_table(sg, UB_MAX_REQ_SG);
|
||||
sg_set_page(sg, virt_to_page(sc->top_sense), UB_SENSE_SIZE,
|
||||
(unsigned long)sc->top_sense & (PAGE_SIZE-1));
|
||||
scmd->len = UB_SENSE_SIZE;
|
||||
scmd->lun = cmd->lun;
|
||||
scmd->done = ub_top_sense_done;
|
||||
@@ -1864,9 +1864,8 @@ static int ub_sync_read_cap(struct ub_dev *sc, struct ub_lun *lun,
|
||||
cmd->state = UB_CMDST_INIT;
|
||||
cmd->nsg = 1;
|
||||
sg = &cmd->sgv[0];
|
||||
sg_set_page(sg, virt_to_page(p));
|
||||
sg->offset = (unsigned long)p & (PAGE_SIZE-1);
|
||||
sg->length = 8;
|
||||
sg_init_table(sg, UB_MAX_REQ_SG);
|
||||
sg_set_page(sg, virt_to_page(p), 8, (unsigned long)p & (PAGE_SIZE-1));
|
||||
cmd->len = 8;
|
||||
cmd->lun = lun;
|
||||
cmd->done = ub_probe_done;
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
#include <linux/hdreg.h>
|
||||
#include <linux/virtio.h>
|
||||
#include <linux/virtio_blk.h>
|
||||
#include <linux/virtio_blk.h>
|
||||
#include <linux/scatterlist.h>
|
||||
|
||||
#define VIRTIO_MAX_SG (3+MAX_PHYS_SEGMENTS)
|
||||
|
||||
static unsigned char virtblk_index = 'a';
|
||||
struct virtio_blk
|
||||
@@ -23,7 +25,7 @@ struct virtio_blk
|
||||
mempool_t *pool;
|
||||
|
||||
/* Scatterlist: can be too big for stack. */
|
||||
struct scatterlist sg[3+MAX_PHYS_SEGMENTS];
|
||||
struct scatterlist sg[VIRTIO_MAX_SG];
|
||||
};
|
||||
|
||||
struct virtblk_req
|
||||
@@ -94,8 +96,8 @@ static bool do_req(struct request_queue *q, struct virtio_blk *vblk,
|
||||
if (blk_barrier_rq(vbr->req))
|
||||
vbr->out_hdr.type |= VIRTIO_BLK_T_BARRIER;
|
||||
|
||||
/* We have to zero this, otherwise blk_rq_map_sg gets upset. */
|
||||
memset(vblk->sg, 0, sizeof(vblk->sg));
|
||||
/* This init could be done at vblk creation time */
|
||||
sg_init_table(vblk->sg, VIRTIO_MAX_SG);
|
||||
sg_set_buf(&vblk->sg[0], &vbr->out_hdr, sizeof(vbr->out_hdr));
|
||||
num = blk_rq_map_sg(q, vbr->req, vblk->sg+1);
|
||||
sg_set_buf(&vblk->sg[num+1], &vbr->in_hdr, sizeof(vbr->in_hdr));
|
||||
|
||||
@@ -41,9 +41,9 @@
|
||||
#include <linux/completion.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/scatterlist.h>
|
||||
|
||||
#include <asm/vio.h>
|
||||
#include <asm/scatterlist.h>
|
||||
#include <asm/iseries/hv_types.h>
|
||||
#include <asm/iseries/hv_lp_event.h>
|
||||
#include <asm/iseries/vio.h>
|
||||
@@ -258,6 +258,7 @@ static int send_request(struct request *req)
|
||||
cmd = viomajorsubtype_cdio | viocdwrite;
|
||||
}
|
||||
|
||||
sg_init_table(&sg, 1);
|
||||
if (blk_rq_map_sg(req->q, req, &sg) == 0) {
|
||||
printk(VIOCD_KERN_WARNING
|
||||
"error setting up scatter/gather list\n");
|
||||
|
||||
@@ -111,8 +111,8 @@ int dma_region_alloc(struct dma_region *dma, unsigned long n_bytes,
|
||||
unsigned long va =
|
||||
(unsigned long)dma->kvirt + (i << PAGE_SHIFT);
|
||||
|
||||
sg_set_page(&dma->sglist[i], vmalloc_to_page((void *)va));
|
||||
dma->sglist[i].length = PAGE_SIZE;
|
||||
sg_set_page(&dma->sglist[i], vmalloc_to_page((void *)va),
|
||||
PAGE_SIZE, 0);
|
||||
}
|
||||
|
||||
/* map sglist to the IOMMU */
|
||||
|
||||
@@ -171,9 +171,7 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr,
|
||||
if (vma_list &&
|
||||
!is_vm_hugetlb_page(vma_list[i + off]))
|
||||
umem->hugetlb = 0;
|
||||
sg_set_page(&chunk->page_list[i], page_list[i + off]);
|
||||
chunk->page_list[i].offset = 0;
|
||||
chunk->page_list[i].length = PAGE_SIZE;
|
||||
sg_set_page(&chunk->page_list[i], page_list[i + off], PAGE_SIZE, 0);
|
||||
}
|
||||
|
||||
chunk->nmap = ib_dma_map_sg(context->device,
|
||||
|
||||
@@ -113,9 +113,7 @@ static int mthca_alloc_icm_pages(struct scatterlist *mem, int order, gfp_t gfp_m
|
||||
if (!page)
|
||||
return -ENOMEM;
|
||||
|
||||
sg_set_page(mem, page);
|
||||
mem->length = PAGE_SIZE << order;
|
||||
mem->offset = 0;
|
||||
sg_set_page(mem, page, PAGE_SIZE << order, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -481,9 +479,8 @@ int mthca_map_user_db(struct mthca_dev *dev, struct mthca_uar *uar,
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
sg_set_page(&db_tab->page[i].mem, pages[0]);
|
||||
db_tab->page[i].mem.length = MTHCA_ICM_PAGE_SIZE;
|
||||
db_tab->page[i].mem.offset = uaddr & ~PAGE_MASK;
|
||||
sg_set_page(&db_tab->page[i].mem, pages[0], MTHCA_ICM_PAGE_SIZE,
|
||||
uaddr & ~PAGE_MASK);
|
||||
|
||||
ret = pci_map_sg(dev->pdev, &db_tab->page[i].mem, 1, PCI_DMA_TODEVICE);
|
||||
if (ret < 0) {
|
||||
|
||||
@@ -351,14 +351,10 @@ static int crypt_convert(struct crypt_config *cc,
|
||||
struct scatterlist sg_in, sg_out;
|
||||
|
||||
sg_init_table(&sg_in, 1);
|
||||
sg_set_page(&sg_in, bv_in->bv_page);
|
||||
sg_in.offset = bv_in->bv_offset + ctx->offset_in;
|
||||
sg_in.length = 1 << SECTOR_SHIFT;
|
||||
sg_set_page(&sg_in, bv_in->bv_page, 1 << SECTOR_SHIFT, bv_in->bv_offset + ctx->offset_in);
|
||||
|
||||
sg_init_table(&sg_out, 1);
|
||||
sg_set_page(&sg_out, bv_out->bv_page);
|
||||
sg_out.offset = bv_out->bv_offset + ctx->offset_out;
|
||||
sg_out.length = 1 << SECTOR_SHIFT;
|
||||
sg_set_page(&sg_out, bv_out->bv_page, 1 << SECTOR_SHIFT, bv_out->bv_offset + ctx->offset_out);
|
||||
|
||||
ctx->offset_in += sg_in.length;
|
||||
if (ctx->offset_in >= bv_in->bv_len) {
|
||||
|
||||
@@ -118,8 +118,7 @@ static struct scatterlist* vmalloc_to_sg(unsigned char *virt, int nr_pages)
|
||||
if (NULL == pg)
|
||||
goto err;
|
||||
BUG_ON(PageHighMem(pg));
|
||||
sg_set_page(&sglist[i], pg);
|
||||
sglist[i].length = PAGE_SIZE;
|
||||
sg_set_page(&sglist[i], pg, PAGE_SIZE, 0);
|
||||
}
|
||||
return sglist;
|
||||
|
||||
|
||||
@@ -49,8 +49,6 @@ int ivtv_udma_fill_sg_list (struct ivtv_user_dma *dma, struct ivtv_dma_page_info
|
||||
unsigned int len = (i == dma_page->page_count - 1) ?
|
||||
dma_page->tail : PAGE_SIZE - offset;
|
||||
|
||||
dma->SGlist[map_offset].length = len;
|
||||
dma->SGlist[map_offset].offset = offset;
|
||||
if (PageHighMem(dma->map[map_offset])) {
|
||||
void *src;
|
||||
|
||||
@@ -63,10 +61,10 @@ int ivtv_udma_fill_sg_list (struct ivtv_user_dma *dma, struct ivtv_dma_page_info
|
||||
memcpy(page_address(dma->bouncemap[map_offset]) + offset, src, len);
|
||||
kunmap_atomic(src, KM_BOUNCE_READ);
|
||||
local_irq_restore(flags);
|
||||
sg_set_page(&dma->SGlist[map_offset], dma->bouncemap[map_offset]);
|
||||
sg_set_page(&dma->SGlist[map_offset], dma->bouncemap[map_offset], len, offset);
|
||||
}
|
||||
else {
|
||||
sg_set_page(&dma->SGlist[map_offset], dma->map[map_offset]);
|
||||
sg_set_page(&dma->SGlist[map_offset], dma->map[map_offset], len, offset);
|
||||
}
|
||||
offset = 0;
|
||||
map_offset++;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user