RE: [RFC][PATCH v2]Add pm8001 SAS/SATA HBA driver

James Bottomley
2009-10-02T21:16:02Z

On Mon, 2009-09-28 at 09:41 +0800, lindar_liu wrote:
> On Wed, 2009-09-16 at 11:27 +0800, jack wang wrote:
> > Here is an update of our driver patch that incorporates the latest review
> > inputs from Eike.
>
> I'm afraid this driver has a slightly more serious issue: it uses
> virt_to_bus() and therefore won't compile on a lot of non-x86 systems:
>
> pm8001_hwi.c: phys_addr = cpu_to_le64(virt_to_bus((void
> *)(ccb->buf_pr
> pm8001_hwi.c: phys_addr = cpu_to_le64(virt_to_bus((void
> *)(ccb->buf_pr
>
> It' looks like MEM_CCB already has the physical address of this region,
> so you don't need to use virt_to_bus, you can just compute the offset
> from the MEM_CCB virt address and add the phys address.
>
> James
> [lindar] Thanks James, we have fixed it as your suggestion. Attachment is an
> update of our driver patch.
> Thanks.

It's heading in the right direction, but it doesn't actually compile:

drivers/scsi/pm8001/pm8001_hwi.c: In function 'pm8001_chip_ssp_io_req':
drivers/scsi/pm8001/pm8001_hwi.c:3647: error: 'struct pm8001_ccb_info' has no member named 'ccb_dma_handle'
drivers/scsi/pm8001/pm8001_hwi.c: In function 'pm8001_chip_sata_req':
drivers/scsi/pm8001/pm8001_hwi.c:3716: error: 'struct pm8001_ccb_info' has no member named 'ccb_dma_handle'

It looks like some of the files in the diff are from the old version and
some from the new one.

Plus you've now picked up this conflict from the addition of the new
SCSI commands READ_32 and WRITE_32 which went in with the DIF/DIX type 2
work:

drivers/scsi/pm8001/pm8001_chips.h:44:1: warning: "READ_32" redefined
In file included from include/scsi/scsi_host.h:9,
from include/linux/libata.h:37,
from include/scsi/libsas.h:33,
from drivers/scsi/pm8001/pm8001_sas.h:54,
from drivers/scsi/pm8001/pm8001_hwi.c:40:
include/scsi/scsi.h:133:1: warning: this is the location of the previous definition
In file included from drivers/scsi/pm8001/pm8001_hwi.c:42:
drivers/scsi/pm8001/pm8001_chips.h:47:1: warning: "WRITE_32" redefined
In file included from include/scsi/scsi_host.h:9,
from include/linux/libata.h:37,
from include/scsi/libsas.h:33,
from drivers/scsi/pm8001/pm8001_sas.h:54,
from drivers/scsi/pm8001/pm8001_hwi.c:40:
include/scsi/scsi.h:134:1: warning: this is the location of the previous definition

James