Message ID | 154998294324.8783.9045146111677125556.stgit@firesoul (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix page_pool API and dma address storage | expand |
On 2/12/19 6:49 AM, Jesper Dangaard Brouer wrote: > 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> > --- > include/linux/mm_types.h | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > index 2c471a2c43fa..581737bd0878 100644 > --- a/include/linux/mm_types.h > +++ b/include/linux/mm_types.h > @@ -95,6 +95,13 @@ struct page { > */ > unsigned long private; > }; > + struct { /* page_pool used by netstack */ > + /** > + * @dma_addr: page_pool requires a 64-bit value even on > + * 32-bit architectures. > + */ Nit: might require? dma_addr_t, as you mention in the commit may have a different size based on CONFIG_ARCH_DMA_ADDR_T_64BIT.
On Tue, 12 Feb 2019 10:05:39 -0800 Florian Fainelli <f.fainelli@gmail.com> wrote: > On 2/12/19 6:49 AM, Jesper Dangaard Brouer wrote: > > 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> > > --- > > include/linux/mm_types.h | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > > index 2c471a2c43fa..581737bd0878 100644 > > --- a/include/linux/mm_types.h > > +++ b/include/linux/mm_types.h > > @@ -95,6 +95,13 @@ struct page { > > */ > > unsigned long private; > > }; > > + struct { /* page_pool used by netstack */ > > + /** > > + * @dma_addr: page_pool requires a 64-bit value even on > > + * 32-bit architectures. > > + */ > > Nit: might require? dma_addr_t, as you mention in the commit may have a > different size based on CONFIG_ARCH_DMA_ADDR_T_64BIT. So you want me to change the comment to be: /** * @dma_addr: might require a 64-bit value even on * 32-bit architectures. */ Correctly understood?
On 2/12/19 10:19 AM, Jesper Dangaard Brouer wrote: > On Tue, 12 Feb 2019 10:05:39 -0800 > Florian Fainelli <f.fainelli@gmail.com> wrote: > >> On 2/12/19 6:49 AM, Jesper Dangaard Brouer wrote: >>> 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> >>> --- >>> include/linux/mm_types.h | 7 +++++++ >>> 1 file changed, 7 insertions(+) >>> >>> diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h >>> index 2c471a2c43fa..581737bd0878 100644 >>> --- a/include/linux/mm_types.h >>> +++ b/include/linux/mm_types.h >>> @@ -95,6 +95,13 @@ struct page { >>> */ >>> unsigned long private; >>> }; >>> + struct { /* page_pool used by netstack */ >>> + /** >>> + * @dma_addr: page_pool requires a 64-bit value even on >>> + * 32-bit architectures. >>> + */ >> >> Nit: might require? dma_addr_t, as you mention in the commit may have a >> different size based on CONFIG_ARCH_DMA_ADDR_T_64BIT. > > So you want me to change the comment to be: > > /** > * @dma_addr: might require a 64-bit value even on > * 32-bit architectures. > */ > > Correctly understood? Correct, that is what I would change. The commit message is correct, but the comment makes it sound like dma_addr_t is guaranteed to be 64-bit, while it is actually platform dependent. Does that make it clearer?
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 2c471a2c43fa..581737bd0878 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -95,6 +95,13 @@ struct page { */ unsigned long private; }; + struct { /* page_pool used by netstack */ + /** + * @dma_addr: page_pool requires 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 */