aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2007-10-16PS3: sg chaining supportJens Axboe
Acked-by: Geoff Levand <geoffrey.levand@am.sony.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16IA64: sg chaining supportJens Axboe
This updates the ia64 iommu/pci dma mappers to sg chaining. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16x86-64: enable sg chainingJens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16x86-64: update pci-gart iommu to sg helpersJens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16x86-64: update nommu to sg helpersJens Axboe
Acked-by: Muli Ben-Yehuda <muli@il.ibm.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16x86-64: update calgary iommu to sg helpersJens Axboe
Acked-by: Muli Ben-Yehuda <muli@il.ibm.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16swiotlb: sg chaining supportJens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16i386: enable sg chainingJens Axboe
We don't need to do more on x86, there's no iommu to be worried about. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16i386 dma_map_sg: convert to using sg helpersJens Axboe
The dma mapping helpers need to be converted to using sg helpers as well, so they will work with a chained sglist setup. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16mmc: need to zero sglist on initJens Axboe
Otherwise we could have junk in the sg fields, fooling the sg chaining into thinking ->page is valid. Acked-by: Pierre Ossman <drzeus@drzeus.cx> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16Panic in blk_rq_map_sg() from CCISS driverLee Schermerhorn
New scatter/gather list chaining [sg_next()] treats 'page' member of struct scatterlist with low bit set [0x01] as a chain pointer to another struct scatterlist [array]. The CCISS driver request function passes an uninitialized, temporary, on-stack scatterlist array to blk_rq_map_sq(). sg_next() interprets random data on the stack as a chain pointer and eventually tries to de-reference an invalid pointer, resulting in: [<ffffffff8031dd70>] blk_rq_map_sg+0x70/0x170 PGD 6090c3067 PUD 0 Oops: 0000 [1] SMP last sysfs file: /block/cciss!c0d0/cciss!c0d0p1/dev CPU 6 Modules linked in: ehci_hcd ohci_hcd uhci_hcd Pid: 1, comm: init Not tainted 2.6.23-rc6-mm1 #3 RIP: 0010:[<ffffffff8031dd70>] [<ffffffff8031dd70>] blk_rq_map_sg+0x70/0x170 RSP: 0018:ffff81060901f768 EFLAGS: 00010206 RAX: 000000040b161000 RBX: ffff81060901f7d8 RCX: 000000040b162c00 RDX: 0000000000000000 RSI: ffff81060b13a260 RDI: ffff81060b139600 RBP: 0000000000001400 R08: 00000000fffffffe R09: 0000000000000400 R10: 0000000000000000 R11: 000000040b163000 R12: ffff810102fe0000 R13: 0000000000000001 R14: 0000000000000001 R15: 00001e0000000000 FS: 00000000026108f0(0063) GS:ffff810409000b80(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b CR2: 000000010000001e CR3: 00000006090c6000 CR4: 00000000000006e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Process init (pid: 1, threadinfo ffff81060901e000, task ffff810409020800) last branch before last exception/interrupt from [<ffffffff8031de0a>] blk_rq_map_sg+0x10a/0x170 to [<ffffffff8031dd70>] blk_rq_map_sg+0x70/0x170 Stack: 000000018068ea00 ffff810102fe0000 0000000000000000 ffff810011400000 0000000000000002 0000000000000000 ffff81040b172000 ffffffff803acd3d 0000000000003ec1 ffff8106090d5000 ffff8106090d5000 ffff810102fe0000 Call Trace: [<ffffffff803acd3d>] do_cciss_request+0x15d/0x4c0 [<ffffffff80298968>] new_slab+0x1c8/0x270 [<ffffffff80298ffd>] __slab_alloc+0x22d/0x470 [<ffffffff8027327b>] mempool_alloc+0x4b/0x130 [<ffffffff8032b21e>] cfq_set_request+0xee/0x380 [<ffffffff8027327b>] mempool_alloc+0x4b/0x130 [<ffffffff8031ff98>] get_request+0x168/0x360 [<ffffffff80331b0d>] rb_insert_color+0x8d/0x110 [<ffffffff8031cfd8>] elv_rb_add+0x58/0x60 [<ffffffff8032a329>] cfq_add_rq_rb+0x69/0xa0 [<ffffffff8031c1ab>] elv_merged_request+0x5b/0x60 [<ffffffff803224fd>] __make_request+0x23d/0x650 [<ffffffff80298ffd>] __slab_alloc+0x22d/0x470 [<ffffffff80270000>] generic_write_checks+0x140/0x190 [<ffffffff8031f012>] generic_make_request+0x1c2/0x3a0 <etc> Kernel panic - not syncing: Attempted to kill init! This patch initializes the tmp_sg array to zeroes. Perhaps not the ultimate fix, but an effective work-around. I can now boot 23-rc6-mm1 on an HP Proliant x86_64 with CCISS boot disk. Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com> drivers/block/cciss.c | 1 + 1 file changed, 1 insertion(+) Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16remove sglist_lenFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16remove blk_queue_max_phys_segments in libataFUJITA Tomonori
LIBATA_MAX_PRD is the maximum number of DMA scatter/gather elements permitted by the HBA's DMA engine. It's properly set to q->max_hw_segments via the sg_tablesize parameter. libata shouldn't call blk_queue_max_phys_segments. Now LIBATA_MAX_PRD is equal to SCSI_MAX_PHYS_SEGMENTS by default (both is 128), so everything is fine. But if they are changed, some code (like the scsi mid layer, sg chaining, etc) might not work properly. (Addition from Jens) The basic issue is that the physical segment setting is purely a driver issue. And since SCSI is managing the sglist, libata has no business changing the setting. All libata should care about is the hw segment setting. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16revert sg segment size ifdefsFUJITA Tomonori
This reverts sg segment size ifdefs that the current code has in order to provide a way to reduce sgpool memory consumption. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16Fixup u14-34f ENABLE_SG_CHAININGAndrew Morton
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16qla1280: enable use_sg_chaining optionFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16[SCSI] add use_sg_chaining option to scsi_host_templateFUJITA Tomonori
This option is true if a low-level driver can support sg chaining. This will be removed eventually when all the drivers are converted to support sg chaining. q->max_phys_segments is set to SCSI_MAX_SG_SEGMENTS if false. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16qla1280: sg chaining fixesFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16libata sg chaining support fixFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16zfcp: sg chaining supportFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16ips: sg chaining supportFUJITA Tomonori
ips properly uses scsi_for_each_sg for the normal I/O path, however, the breakup path doesn't. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16IDE: sg chaining supportJens Axboe
Acked-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16i2o: sg chaining supportJens Axboe
Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16Fusion: sg chaining supportJens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16USB storage: sg chaining supportJens Axboe
[PATCH] USB storage: sg chaining support Modify usb_stor_access_xfer_buf() to take a pointer to an sg entry pointer, so we can keep track of that instead of passing around an integer index (which we can't use when dealing with multiple scatterlist arrays). Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16infiniband: sg chaining supportJens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16aha1542: convert to use the data buffer accessorsJens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16ide-scsi: sg chaining supportJens Axboe
Acked-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16qlogicpti: sg chaining supportJens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16aic94xx: sg chaining supportJens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16qla1280: sg chaining supportJens Axboe
Interesting hardware setup... Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16scsi generic: sg chaining supportJens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16scsi_debug: support sg chainingJens Axboe
Signed-off-by: Douglas Gilbert <dougg@torque.net> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16libata: convert to using sg helpersJens Axboe
This converts libata to using the sg helpers for looking up sg elements, instead of doing it manually. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16SCSI: support for allocating large scatterlistsJens Axboe
This is what enables large commands. If we need to allocate an sgtable that doesn't fit in a single page, allocate several SCSI_MAX_SG_SEGMENTS sized tables and chain them together. SCSI defaults to large chained sg tables, if the arch supports it. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16scsi: simplify scsi_free_sgtable()Jens Axboe
Just pass in the command, no point in passing in the scatterlist and scatterlist pool index seperately. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16use sg helper function in DMA mapping documentationsaeed bishara
Signed-off-by: Saeed Bishara <saeed.bishara@gmail.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16ll_rw_blk: temporarily enable max_segments tweakingJens Axboe
Expose this setting for now, so that users can play with enabling large commands without defaulting it to on globally. This is a debug patch, it will be dropped for the final versions. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16Add chained sg support to linux/scatterlist.hJens Axboe
The core of the patch - allow the last sg element in a scatterlist table to point to the start of a new table. We overload the LSB of the page pointer to indicate whether this is a valid sg entry, or merely a link to the next list. Includes a fix from Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> correcting the ifdef ARCH_HAS_SG_CHAIN guarding sg_last(). Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16scsi: convert to using sg helpersJens Axboe
This converts the SCSI mid layer to using the sg helpers for looking up sg elements, instead of doing it manually. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16block: convert to using sg helpersJens Axboe
Convert the main rq mapper (blk_rq_map_sg()) to the sg helper setup. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16Add sg helpers for iterating over a scatterlist tableJens Axboe
First step to being able to change the scatterlist setup without having to modify drivers (a lot :-) Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16crypto: don't pollute the global namespace with sg_next()Jens Axboe
It's a subsystem function, prefix it as such. Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16pktcdvd: don't rely on bio_init() preserving bio->bi_destructorLaurent Riffard
Signed-off-by: Laurent Riffard <laurent.riffard@free.fr> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16pktcdvd: don't rely on bio_init() preserving bio->bi_io_vecJens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16remove ide_get_error_location()Adrian Bunk
Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16block: convert blkdev_issue_flush() to use empty barriersJens Axboe
Then we can get rid of ->issue_flush_fn() and all the driver private implementations of that. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16block: Initial support for data-less (or empty) barrier supportJens Axboe
This implements functionality to pass down or insert a barrier in a queue, without having data attached to it. The ->prepare_flush_fn() infrastructure from data barriers are reused to provide this functionality. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16block: factor our bio_check_eod()Jens Axboe
End of device check is done twice in __generic_make_request() and it's fully inlined each time. Factor out bio_check_eod(). Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-16block: add end_queued_request() and end_dequeued_request() helpersJens Axboe
We can use this helper in the elevator core for BLKPREP_KILL, and it'll also be useful for the empty barrier patch. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>