Subject: Re: 2.6.23-mm1 - build failure with advansys

From: Andrew Morton <[email-masked]>
Date: Fri, 12 Oct 2007 23:52:42 -0700

On Sat, 13 Oct 2007 10:14:22 +0530 Kamalesh Babulal <[email-masked]> wrote:

> Hi Andrew,
> 
> Another build failure with following message
> 
>   CC      drivers/scsi/advansys.o
> drivers/scsi/advansys.c:71:2: warning: #warning this driver is still not properly converted to the DMA API
> drivers/scsi/advansys.c: In function ‘AdvBuildCarrierFreelist’:
> drivers/scsi/advansys.c:6486: error: implicit declaration of function ‘virt_to_bus’
> drivers/scsi/advansys.c: In function ‘AdvInitAsc3550Driver’:
> drivers/scsi/advansys.c:6974: error: implicit declaration of function ‘bus_to_virt’
> drivers/scsi/advansys.c:6974: warning: cast to pointer from integer of different size
> drivers/scsi/advansys.c:6994: warning: cast to pointer from integer of different size
> drivers/scsi/advansys.c: In function ‘AdvInitAsc38C0800Driver’:
> drivers/scsi/advansys.c:7450: warning: cast to pointer from integer of different size
> drivers/scsi/advansys.c:7471: warning: cast to pointer from integer of different size
> drivers/scsi/advansys.c: In function ‘AdvInitAsc38C1600Driver’:
> drivers/scsi/advansys.c:7939: warning: cast to pointer from integer of different size
> drivers/scsi/advansys.c:7963: warning: cast to pointer from integer of different size
> drivers/scsi/advansys.c: In function ‘adv_isr_callback’:
> drivers/scsi/advansys.c:8175: warning: cast to pointer from integer of different size
> drivers/scsi/advansys.c: In function ‘AdvISR’:
> drivers/scsi/advansys.c:8392: warning: cast to pointer from integer of different size
> drivers/scsi/advansys.c:8412: warning: cast to pointer from integer of different size
> drivers/scsi/advansys.c: In function ‘AdvExeScsiQueue’:
> drivers/scsi/advansys.c:10845: warning: cast to pointer from integer of different size
> make[2]: *** [drivers/scsi/advansys.o] Error 1
> make[1]: *** [drivers/scsi] Error 2
> make: *** [drivers] Error 2
> 
> 
> The functions virt_to_bus and bus_to_virt are begin defined between ifdef CONFIG_PPC32
> but when i compile allyesconfig with ppc64 box,i get this error. This patch removes the
> ifdef.

Please copy the powerpc developers on powerpc patches.

> Signed-off-by : Kamalesh Babulal <[email-masked]>
> ---
> --- linux-2.6.23/include/asm-powerpc/io.h       2007-10-12 15:46:14.000000000 +0530
> +++ linux-2.6.23/include/asm-powerpc/~io.h      2007-10-12 15:46:00.000000000 +0530
> @@ -690,7 +690,6 @@ static inline void * phys_to_virt(unsign
>   * drivers (shame shame shame) that use bus_to_virt() and haven't been
>   * fixed yet so I need to define it here.
>   */
> -#ifdef CONFIG_PPC32
>  
>  static inline unsigned long virt_to_bus(volatile void * address)
>  {
> @@ -708,7 +707,6 @@ static inline void * bus_to_virt(unsigne
>  
>  #define page_to_bus(page)      (page_to_phys(page) + PCI_DRAM_OFFSET)
>  
> -#endif /* CONFIG_PPC32 */
>  
>  /* access ports */
>  #define setbits32(_addr, _v) out_be32((_addr), in_be32(_addr) |  (_v))
> 

especially ones like that ;)

Matthew has proposed that advansys should be dependent upon
CONFIG_VIRT_TO_BUS.  I don't think anyone's done a patch yet though.

(Actually, the code which you've altered there should probably be using
CONFIG_VIRT_TO_BUS, too).