* [PATCH 1/1] ipr: SATA DVD probing failed with 64bit adapter
2013-04-19 2:32 [PATCH 0/1] ipr: SATA DVD probing failed with 64bit adapter wenxiong
@ 2013-04-19 2:32 ` wenxiong
2013-04-19 14:23 ` Brian King
0 siblings, 1 reply; 3+ messages in thread
From: wenxiong @ 2013-04-19 2:32 UTC (permalink / raw)
To: James.Bottomley; +Cc: linux-scsi, brking, Wen Xiong
[-- Attachment #1: fix_ipr_sata_dvd --]
[-- Type: text/plain, Size: 1727 bytes --]
Driver passed the wrong IOADL address to IOA adapter. The patch
fixes the issue.
Signed-off-by: Wen Xiong <wenxiong@linux.vnet.ibm.com>
---
drivers/scsi/ipr.c | 4 ++--
drivers/scsi/ipr.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
Index: b/drivers/scsi/ipr.c
===================================================================
--- a/drivers/scsi/ipr.c 2013-04-18 14:10:44.000000000 -0500
+++ b/drivers/scsi/ipr.c 2013-04-18 14:15:08.767887656 -0500
@@ -6421,7 +6421,7 @@ static void ipr_build_ata_ioadl64(struct
{
u32 ioadl_flags = 0;
struct ipr_ioarcb *ioarcb = &ipr_cmd->ioarcb;
- struct ipr_ioadl64_desc *ioadl64 = ipr_cmd->i.ioadl64;
+ struct ipr_ioadl64_desc *ioadl64 = ipr_cmd->i.ata_ioadl.ioadl64;
struct ipr_ioadl64_desc *last_ioadl64 = NULL;
int len = qc->nbytes;
struct scatterlist *sg;
@@ -6441,7 +6441,7 @@ static void ipr_build_ata_ioadl64(struct
ioarcb->ioadl_len =
cpu_to_be32(sizeof(struct ipr_ioadl64_desc) * ipr_cmd->dma_use_sg);
ioarcb->u.sis64_addr_data.data_ioadl_addr =
- cpu_to_be64(dma_addr + offsetof(struct ipr_cmnd, i.ata_ioadl));
+ cpu_to_be64(dma_addr + offsetof(struct ipr_cmnd, i.ata_ioadl.ioadl64));
for_each_sg(qc->sg, sg, qc->n_elem, si) {
ioadl64->flags = cpu_to_be32(ioadl_flags);
Index: b/drivers/scsi/ipr.h
===================================================================
--- a/drivers/scsi/ipr.h 2013-04-18 14:08:22.000000000 -0500
+++ b/drivers/scsi/ipr.h 2013-04-18 14:12:50.677887864 -0500
@@ -552,7 +552,7 @@ struct ipr_ioarcb_ata_regs { /* 22 bytes
u8 hob_lbam;
u8 hob_lbah;
u8 ctl;
-}__attribute__ ((packed, aligned(4)));
+}__attribute__ ((packed, aligned(2)));
struct ipr_ioadl_desc {
__be32 flags_and_data_len;
--
^ permalink raw reply [flat|nested] 3+ messages in thread