From: Mark Haverkamp <markh@osdl.org>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: linux-kernel <linux-kernel@vger.kernel.org>
Subject: [PATCH] aacraid 2.5
Date: 06 Dec 2002 07:45:42 -0800 [thread overview]
Message-ID: <1039189541.6401.8.camel@markh1.pdx.osdl.net> (raw)
This patch applies to the bitkeeper 2.5 view.
It contains three changes. The first removes some #defines that don't seem
to be needed anymore. The second fixes a problem when CONFIG_LBD is set
and sector_t is u64. The third fixes some compile warnings setting a
char * in the scsi_pointer struct to a dma_addr_t. I changed the usage
from the ptr element to the dma_handle element.
It compiles without warnings and I have run some tests on aacraid devices
on the osdl lab machines with the CONFIG_LBD option on and off.
Mark.
- - - -
aachba.c | 17 ++++++-----------
aacraid.h | 16 ++++++++++++++++
linit.c | 6 ++++--
3 files changed, 26 insertions(+), 13 deletions(-)
===== drivers/scsi/aacraid/aachba.c 1.5 vs edited =====
--- 1.5/drivers/scsi/aacraid/aachba.c Mon Nov 11 12:32:15 2002
+++ edited/drivers/scsi/aacraid/aachba.c Tue Dec 3 08:33:06 2002
@@ -33,18 +33,12 @@
#include <linux/completion.h>
#include <asm/semaphore.h>
#include <asm/uaccess.h>
-#define MAJOR_NR SCSI_DISK0_MAJOR /* For DEVICE_NR() */
#include <linux/blk.h>
#include "scsi.h"
#include "hosts.h"
#include "aacraid.h"
-#warning this is broken
-#define N_SD_MAJORS 8
-#define SD_MAJOR_MASK (N_SD_MAJORS - 1)
-#define DEVICE_NR(device) (((major(device) & SD_MAJOR_MASK) << (8 - 4)) +
(minor(device) >> 4))
-
/* SCSI Commands */
/* TODO: dmb - use the ones defined in include/scsi/scsi.h */
@@ -567,7 +561,7 @@
scsicmd->use_sg,
scsi_to_pci_dma_dir(scsicmd->sc_data_direction));
else if(scsicmd->request_bufflen)
- pci_unmap_single(dev->pdev, (dma_addr_t)(unsigned long)scsicmd->SCp.ptr,
+ pci_unmap_single(dev->pdev, scsicmd->SCp.dma_handle,
scsicmd->request_bufflen,
scsi_to_pci_dma_dir(scsicmd->sc_data_direction));
readreply = (struct aac_read_reply *)fib_data(fibptr);
@@ -611,7 +605,7 @@
scsicmd->use_sg,
scsi_to_pci_dma_dir(scsicmd->sc_data_direction));
else if(scsicmd->request_bufflen)
- pci_unmap_single(dev->pdev, (dma_addr_t)(unsigned long)scsicmd->SCp.ptr,
+ pci_unmap_single(dev->pdev, scsicmd->SCp.dma_handle,
scsicmd->request_bufflen,
scsi_to_pci_dma_dir(scsicmd->sc_data_direction));
@@ -1225,7 +1219,8 @@
scsicmd->use_sg,
scsi_to_pci_dma_dir(scsicmd->sc_data_direction));
else if(scsicmd->request_bufflen)
- pci_unmap_single(dev->pdev, (ulong)scsicmd->SCp.ptr, scsicmd->request_bufflen,
+ pci_unmap_single(dev->pdev, scsicmd->SCp.dma_handle,
+ scsicmd->request_bufflen,
scsi_to_pci_dma_dir(scsicmd->sc_data_direction));
/*
@@ -1516,7 +1511,7 @@
psg->count = cpu_to_le32(1);
psg->sg[0].addr = cpu_to_le32(addr);
psg->sg[0].count = cpu_to_le32(scsicmd->request_bufflen);
- scsicmd->SCp.ptr = (void *)addr;
+ scsicmd->SCp.dma_handle = addr;
byte_count = scsicmd->request_bufflen;
}
return byte_count;
@@ -1577,7 +1572,7 @@
psg->sg[0].addr[1] = (u32)(le_addr>>32);
psg->sg[0].addr[0] = (u32)(le_addr & 0xffffffff);
psg->sg[0].count = cpu_to_le32(scsicmd->request_bufflen);
- scsicmd->SCp.ptr = (void *)addr;
+ scsicmd->SCp.dma_handle = addr;
byte_count = scsicmd->request_bufflen;
}
return byte_count;
===== drivers/scsi/aacraid/aacraid.h 1.2 vs edited =====
--- 1.2/drivers/scsi/aacraid/aacraid.h Fri Nov 1 04:28:15 2002
+++ edited/drivers/scsi/aacraid/aacraid.h Tue Dec 3 08:15:27 2002
@@ -1369,6 +1369,22 @@
return (struct hw_fib *)addr;
}
+/**
+ * Convert capacity to cylinders
+ * accounting for the fact capacity could be a 64 bit value
+ *
+ */
+static inline u32 cap_to_cyls(sector_t capacity, u32 divisor)
+{
+#ifdef CONFIG_LBD
+ do_div(capacity, divisor);
+#else
+ capacity /= divisor;
+#endif
+ return (u32) capacity;
+}
+
+
const char *aac_driverinfo(struct Scsi_Host *);
struct fib *fib_alloc(struct aac_dev *dev);
int fib_setup(struct aac_dev *dev);
===== drivers/scsi/aacraid/linit.c 1.6 vs edited =====
--- 1.6/drivers/scsi/aacraid/linit.c Thu Nov 21 21:34:44 2002
+++ edited/drivers/scsi/aacraid/linit.c Tue Dec 3 13:22:08 2002
@@ -443,7 +443,8 @@
param->sectors = 32;
}
- param->cylinders = capacity/(param->heads * param->sectors);
+ param->cylinders = cap_to_cyls(capacity,
+ (param->heads * param->sectors));
/*
* Read the partition table block
@@ -497,7 +498,8 @@
end_sec = first->end_sector & 0x3f;
}
- param->cylinders = capacity / (param->heads * param->sectors);
+ param->cylinders = cap_to_cyls(capacity,
+ (param->heads * param->sectors));
if(num < 4 && end_sec == param->sectors)
{
--
Mark Haverkamp <markh@osdl.org>
next reply other threads:[~2002-12-06 15:37 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-06 15:45 Mark Haverkamp [this message]
2002-12-07 0:30 ` Christoph Hellwig
2002-12-09 18:55 ` Mark Haverkamp
[not found] <158487460@toto.iv>
2002-12-09 22:02 ` Peter Chubb
2002-12-09 23:13 ` Mark Haverkamp
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=1039189541.6401.8.camel@markh1.pdx.osdl.net \
--to=markh@osdl.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-kernel@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
all inboxes | Powered by JetHome®