From: Andi Kleen <andi@firstfloor.org>
To: linux-scsi@vger.kernel.org, James.Bottomley@HansenPartnership.com
Subject: [PATCH] [11/22] Remove unchecked_isa_dma checks in sg.c
Date: Mon, 25 Feb 2008 00:35:24 +0100 (CET) [thread overview]
Message-ID: <20080224233524.2D5D01B4183@basil.firstfloor.org> (raw)
In-Reply-To: <200802251235.889863872@firstfloor.org>
They are only used to allocate data buffers, and those are bounced
by the block layer anyways.
Signed-off-by: Andi Kleen <ak@suse.de>
---
drivers/scsi/sg.c | 36 +++++++++---------------------------
1 file changed, 9 insertions(+), 27 deletions(-)
Index: linux/drivers/scsi/sg.c
===================================================================
--- linux.orig/drivers/scsi/sg.c
+++ linux/drivers/scsi/sg.c
@@ -150,7 +150,6 @@ typedef struct sg_fd { /* holds the sta
Sg_request *headrp; /* head of request slist, NULL->empty */
struct fasync_struct *async_qp; /* used by asynchronous notification */
Sg_request req_arr[SG_MAX_QUEUE]; /* used as singly-linked list */
- char low_dma; /* as in parent but possibly overridden to 1 */
char force_packid; /* 1 -> pack_id input to read(), 0 -> ignored */
volatile char closed; /* 1 -> fd closed but request(s) outstanding */
char cmd_q; /* 1 -> allow command queuing, 0 -> don't */
@@ -195,7 +194,7 @@ static void sg_remove_scat(Sg_scatter_ho
static void sg_build_reserve(Sg_fd * sfp, int req_size);
static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size);
static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp);
-static struct page *sg_page_malloc(int rqSz, int lowDma, int *retSzp);
+static struct page *sg_page_malloc(int rqSz, int *retSzp);
static void sg_page_free(struct page *page, int size);
static Sg_fd *sg_add_sfp(Sg_device * sdp, int dev);
static int sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp);
@@ -844,8 +843,7 @@ sg_ioctl(struct inode *inode, struct fil
if (result)
return result;
if (val) {
- sfp->low_dma = 1;
- if ((0 == sfp->low_dma) && (0 == sg_res_in_use(sfp))) {
+ if (0 == sg_res_in_use(sfp)) {
val = (int) sfp->reserve.bufflen;
sg_remove_scat(&sfp->reserve);
sg_build_reserve(sfp, val);
@@ -853,11 +851,10 @@ sg_ioctl(struct inode *inode, struct fil
} else {
if (sdp->detached)
return -ENODEV;
- sfp->low_dma = sdp->device->host->unchecked_isa_dma;
}
return 0;
case SG_GET_LOW_DMA:
- return put_user((int) sfp->low_dma, ip);
+ return put_user(0, ip);
case SG_GET_SCSI_ID:
if (!access_ok(VERIFY_WRITE, p, sizeof (sg_scsi_id_t)))
return -EFAULT;
@@ -1622,8 +1619,7 @@ sg_start_req(Sg_request * srp)
if ((dxfer_len <= 0) || (dxfer_dir == SG_DXFER_NONE))
return 0;
if (sg_allow_dio && (hp->flags & SG_FLAG_DIRECT_IO) &&
- (dxfer_dir != SG_DXFER_UNKNOWN) && (0 == hp->iovec_count) &&
- (!sfp->parentdp->device->host->unchecked_isa_dma)) {
+ (dxfer_dir != SG_DXFER_UNKNOWN) && (0 == hp->iovec_count)) {
res = sg_build_direct(srp, sfp, dxfer_len);
if (res <= 0) /* -ve -> error, 0 -> done, 1 -> try indirect */
return res;
@@ -1660,14 +1656,6 @@ sg_build_sgat(Sg_scatter_hold * schp, co
int sg_bufflen = tablesize * sizeof(struct scatterlist);
gfp_t gfp_flags = GFP_ATOMIC | __GFP_NOWARN;
- /*
- * TODO: test without low_dma, we should not need it since
- * the block layer will bounce the buffer for us
- *
- * XXX(hch): we shouldn't need GFP_DMA for the actual S/G list.
- */
- if (sfp->low_dma)
- gfp_flags |= GFP_DMA;
schp->buffer = kzalloc(sg_bufflen, gfp_flags);
if (!schp->buffer)
return -ENOMEM;
@@ -1860,7 +1848,7 @@ sg_build_indirect(Sg_scatter_hold * schp
num = (rem_sz > scatter_elem_sz_prev) ?
scatter_elem_sz_prev : rem_sz;
- p = sg_page_malloc(num, sfp->low_dma, &ret_sz);
+ p = sg_page_malloc(num, &ret_sz);
if (!p)
return -ENOMEM;
@@ -2345,8 +2333,6 @@ sg_add_sfp(Sg_device * sdp, int dev)
sfp->timeout = SG_DEFAULT_TIMEOUT;
sfp->timeout_user = SG_DEFAULT_TIMEOUT_USER;
sfp->force_packid = SG_DEF_FORCE_PACK_ID;
- sfp->low_dma = (SG_DEF_FORCE_LOW_DMA == 0) ?
- sdp->device->host->unchecked_isa_dma : 1;
sfp->cmd_q = SG_DEF_COMMAND_Q;
sfp->keep_orphan = SG_DEF_KEEP_ORPHAN;
sfp->parentdp = sdp;
@@ -2456,7 +2442,7 @@ sg_res_in_use(Sg_fd * sfp)
/* The size fetched (value output via retSzp) set when non-NULL return */
static struct page *
-sg_page_malloc(int rqSz, int lowDma, int *retSzp)
+sg_page_malloc(int rqSz, int *retSzp)
{
struct page *resp = NULL;
gfp_t page_mask;
@@ -2466,10 +2452,7 @@ sg_page_malloc(int rqSz, int lowDma, int
if ((rqSz <= 0) || (NULL == retSzp))
return resp;
- if (lowDma)
- page_mask = GFP_ATOMIC | GFP_DMA | __GFP_COMP | __GFP_NOWARN;
- else
- page_mask = GFP_ATOMIC | __GFP_COMP | __GFP_NOWARN;
+ page_mask = GFP_ATOMIC | __GFP_COMP | __GFP_NOWARN;
for (order = 0, a_size = PAGE_SIZE; a_size < rqSz;
order++, a_size <<= 1) ;
@@ -2869,11 +2852,10 @@ static void sg_proc_debug_helper(struct
for (k = 0; (fp = sg_get_nth_sfp(sdp, k)); ++k) {
seq_printf(s, " FD(%d): timeout=%dms bufflen=%d "
- "(res)sgat=%d low_dma=%d\n", k + 1,
+ "(res)sgat=%d\n", k + 1,
jiffies_to_msecs(fp->timeout),
fp->reserve.bufflen,
- (int) fp->reserve.k_use_sg,
- (int) fp->low_dma);
+ (int) fp->reserve.k_use_sg);
seq_printf(s, " cmd_q=%d f_packid=%d k_orphan=%d closed=%d\n",
(int) fp->cmd_q, (int) fp->force_packid,
(int) fp->keep_orphan, (int) fp->closed);
next prev parent reply other threads:[~2008-02-24 23:51 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-24 23:35 [PATCH] [0/22] Remove isa_unchecked_dma and some more GFP_DMAs in the mid layer Andi Kleen
2008-02-24 23:35 ` [PATCH] [1/22] Add new sense_buffer_mask host template field Andi Kleen
2008-02-25 14:48 ` James Bottomley
2008-02-25 15:01 ` Andi Kleen
2008-02-24 23:35 ` [PATCH] [2/22] Remove unchecked_isa in BusLogic Andi Kleen
2008-02-24 23:35 ` [PATCH] [3/22] Remove unchecked_isa_dma in advansys.c Andi Kleen
2008-02-25 21:47 ` Matthew Wilcox
2008-02-25 22:40 ` Andi Kleen
2008-02-25 22:50 ` Matthew Wilcox
2008-02-25 22:54 ` Jeff Garzik
2008-02-25 22:58 ` James Bottomley
2008-02-26 3:44 ` Andi Kleen
2008-02-26 15:18 ` James Bottomley
2008-02-26 18:40 ` Matthew Wilcox
2008-02-26 13:56 ` Matthew Wilcox
2008-02-24 23:35 ` [PATCH] [4/22] Remove unchecked_isa_dma in gdth Andi Kleen
2008-02-24 23:35 ` [PATCH] [6/22] Remove unchecked_isa_dma in aha1542 Andi Kleen
2008-02-24 23:35 ` [PATCH] [7/22] Remove unchecked_isa_dma in aha152x/wd7000/sym53c416/u14-34f/NCR53c406a Andi Kleen
2008-02-24 23:35 ` [PATCH] [8/22] Remove random noop unchecked_isa_dma users Andi Kleen
2008-02-25 14:19 ` Salyzyn, Mark
2008-02-24 23:35 ` [PATCH] [10/22] Remove unchecked_isa_dma support for hostdata Andi Kleen
2008-02-24 23:35 ` Andi Kleen [this message]
2008-02-24 23:35 ` [PATCH] [12/22] Remove GFP_DMAs/unchecked_isa_dma checks in scsi_scan.c Andi Kleen
2008-02-25 14:46 ` James Bottomley
2008-02-25 14:58 ` Andi Kleen
2008-02-25 15:04 ` James Bottomley
2008-02-25 15:11 ` Andi Kleen
2008-02-25 15:45 ` James Bottomley
2008-02-25 16:34 ` Andi Kleen
2008-02-24 23:35 ` [PATCH] [13/22] Don't disable direct_io for unchecked_isa_dma in st.c Andi Kleen
2008-02-24 23:35 ` [PATCH] [14/22] Remove automatic block layer bouncing for unchecked_isa_dma Andi Kleen
2008-02-24 23:35 ` [PATCH] [15/22] Remove GFP_DMA use in sr_ioctl Andi Kleen
2008-02-24 23:35 ` [PATCH] [16/22] Remove unchecked_isa_dma from sysfs Andi Kleen
2008-02-24 23:35 ` [PATCH] [17/22] Switch to a single SCSI command pool Andi Kleen
2008-02-24 23:35 ` [PATCH] [18/22] Finally remove unchecked_isa_dma support for Cmnds Andi Kleen
2008-02-24 23:35 ` [PATCH] [19/22] Finally kill unchecked_isa_dma Andi Kleen
2008-02-24 23:35 ` [PATCH] [20/22] Remove GFP_DMA in sr.c Andi Kleen
2008-02-24 23:35 ` [PATCH] [21/22] Remove GFP_DMA in ch.c Andi Kleen
2008-02-24 23:35 ` [PATCH] [22/22] Remove GFP_DMA in sr_vendor.c Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080224233524.2D5D01B4183@basil.firstfloor.org \
--to=andi@firstfloor.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).