Re: (reposting) how to get DMA'able memory within 4GB on 64-bit m

David S. Miller (davem@redhat.com)
Wed, 11 Jul 2001 16:17:02 -0700 (PDT)


Chris Wedgwood writes:
> What kind of packing makes a 32-bit value take 8-bytes on any
> currently supported archicture? The worst-case I can think of is
> 7-bytes in the case of misaligned by 3 (e.g. __attribute__((packed))
> struct blah { char foo[3]; long bar }; sort of thing).

If you have this:

struct {
u32 foo;
void *bar;
};

"bar" will be at offset 8 on a 64-bit platforms since it must be
aligned on a 64-byte boundary, so what Jes is saying is that for:

struct {
dma_addr_t foo;
void *bar;
};

the "dma_addr_t" is already consuming 8 bytes of space on 64-bit
systems.

Later,
David S. Miller
davem@redhat.com

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/