On Fri, 2008-03-28 at 14:48 -0700, akpm@xxxxxxxxxxxxxxxxxxxx wrote: > From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > > powerpc: > > drivers/scsi/hptiop.c: In function 'iop_set_config_mv': > drivers/scsi/hptiop.c:395: warning: large integer implicitly truncated to unsigned type > > This field is only 32-bit, so cpu_to_le64() seems wrong. > > Cc: HighPoint Linux Team <linux@xxxxxxxxxxxxxxxxxx> > Cc: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> > Cc: FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > --- > > drivers/scsi/hptiop.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff -puN drivers/scsi/hptiop.c~drivers-scsi-hptiopc-fix-build-warning drivers/scsi/hptiop.c > --- a/drivers/scsi/hptiop.c~drivers-scsi-hptiopc-fix-build-warning > +++ a/drivers/scsi/hptiop.c > @@ -392,7 +392,7 @@ static int iop_set_config_mv(struct hpti > req->header.size = > cpu_to_le32(sizeof(struct hpt_iop_request_set_config)); > req->header.result = cpu_to_le32(IOP_RESULT_PENDING); > - req->header.context = cpu_to_le64(IOP_REQUEST_TYPE_SET_CONFIG<<5); > + req->header.context = cpu_to_le32(IOP_REQUEST_TYPE_SET_CONFIG<<5); > > if (iop_send_sync_request_mv(hba, 0, 20000)) { > dprintk("Set config send cmd failed\n"); I'm curious to know why the identical statement in iop_get_config_mv() doesn't trigger any warnings. Regardless, the usage of this field is 64 bits; it's just split high and low, so the correct fix is to do the le32 for the low field and to zero out the high one. Fortunately, I suspect nothing ever sets the high field, so it's probably accidentally zero most of the time. Can I get an ack for this (or a better fix) from the highpoint team? James --- diff --git a/drivers/scsi/hptiop.c b/drivers/scsi/hptiop.c index 44dccf2..beecda9 100644 --- a/drivers/scsi/hptiop.c +++ b/drivers/scsi/hptiop.c @@ -338,7 +338,8 @@ static int iop_get_config_mv(struct hptiop_hba *hba, req->header.size = cpu_to_le32(sizeof(struct hpt_iop_request_get_config)); req->header.result = cpu_to_le32(IOP_RESULT_PENDING); - req->header.context = cpu_to_le64(IOP_REQUEST_TYPE_GET_CONFIG<<5); + req->header.context = cpu_to_le32(IOP_REQUEST_TYPE_GET_CONFIG<<5); + req->header.context_hi32 = 0; if (iop_send_sync_request_mv(hba, 0, 20000)) { dprintk("Get config send cmd failed\n"); @@ -392,7 +393,8 @@ static int iop_set_config_mv(struct hptiop_hba *hba, req->header.size = cpu_to_le32(sizeof(struct hpt_iop_request_set_config)); req->header.result = cpu_to_le32(IOP_RESULT_PENDING); - req->header.context = cpu_to_le64(IOP_REQUEST_TYPE_SET_CONFIG<<5); + req->header.context = cpu_to_le32(IOP_REQUEST_TYPE_SET_CONFIG<<5); + req->header.context_hi32 = 0; if (iop_send_sync_request_mv(hba, 0, 20000)) { dprintk("Set config send cmd failed\n"); -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html