Thread (5 messages) 5 messages, 3 authors, 2010-08-30

Re: [PATCH] starfire: use BUILD_BUG_ON for netdrv_addr_t

From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Date: 2010-08-29 22:59:56
Also in: linux-arch

CC'ed to linux-arch,

On Sat, 28 Aug 2010 15:41:25 -0700 (PDT)
David Miller [off-list ref] wrote:
From: Akinobu Mita <akinobu.mita@gmail.com>
Date: Sat, 28 Aug 2010 14:08:45 +0900
quoted
Detect size mismatch for netdrv_addr_t at build time rather than
checking at module load time.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Ion Badulescu <ionut@badula.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: netdev@vger.kernel.org
Applied, but I suspect we will see some interesting build failures now
if that ugly and brittle ifdef test which constrols the netdrv_addr_t
define isn't %100 accurate.
Yeah, looks like you need to add another hack for powerpc?

Fujita-san, what this driver does is actually pretty reasonable.  It
has two kinds of descriptors, one supports 32-bit addresses and the
other supports 64-bit addresses.  It wants to CPP test which one to
use so that the driver is not burdoned with two duplicated sets of
routines.

Maybe we should provide a DMA_ADDR_T_SIZE or similar macro?  What do
you think?  Anything is better than what it uses now:
Introducing something like CONFIG_DMA_ADDR_T_64BIT works?

include/asm-generic/types.h has:

#ifndef dma_addr_t
#ifdef CONFIG_PHYS_ADDR_T_64BIT
typedef u64 dma_addr_t;
#else
typedef u32 dma_addr_t;
#endif /* CONFIG_PHYS_ADDR_T_64BIT */
#endif /* dma_addr_t */

But the above can't be perfect so about twenty architectures define
dma_addr_t. With CONFIG_DMA_ADDR_T_64BIT, we can clean up all the
mess nicely, I guess.

/*
 * This SUCKS.
 * We need a much better method to determine if dma_addr_t is 64-bit.
 */
#if (defined(__i386__) && defined(CONFIG_HIGHMEM64G)) || defined(__x86_64__) || defined (__ia64__) || defined(__alpha__) || defined(__mips64__) || (defined(__mips__) && defined(CONFIG_HIGHMEM) && defined(CONFIG_64BIT_PHYS_ADDR))
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help