mm: add dma_addr_t to struct page
authorJesper Dangaard Brouer <brouer@redhat.com>
Wed, 13 Feb 2019 01:55:40 +0000 (02:55 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 14 Feb 2019 06:00:16 +0000 (22:00 -0800)
The page_pool API is using page->private to store DMA addresses.
As pointed out by David Miller we can't use that on 32-bit architectures
with 64-bit DMA

This patch adds a new dma_addr_t struct to allow storing DMA addresses

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Acked-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/mm_types.h

index 2c471a2c43fa7137f1780b976615a6cbef5f6b6e..0a36a22228e75accb3fe635dec149ace301dcf51 100644 (file)
@@ -95,6 +95,13 @@ struct page {
                         */
                        unsigned long private;
                };
+               struct {        /* page_pool used by netstack */
+                       /**
+                        * @dma_addr: might require a 64-bit value even on
+                        * 32-bit architectures.
+                        */
+                       dma_addr_t dma_addr;
+               };
                struct {        /* slab, slob and slub */
                        union {
                                struct list_head slab_list;     /* uses lru */