All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Wilcox <willy@infradead.org>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Jesper Dangaard Brouer <brouer@redhat.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux MM <linux-mm@kvack.org>, netdev <netdev@vger.kernel.org>,
	linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	"open list:BROADCOM NVRAM DRIVER" <linux-mips@vger.kernel.org>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	mcroce@linux.microsoft.com,
	Grygorii Strashko <grygorii.strashko@ti.com>,
	Arnd Bergmann <arnd@kernel.org>, Christoph Hellwig <hch@lst.de>,
	arcml <linux-snps-arc@lists.infradead.org>,
	Michal Hocko <mhocko@kernel.org>, Mel Gorman <mgorman@suse.de>
Subject: Re: [PATCH 1/2] mm: Fix struct page layout on 32-bit systems
Date: Tue, 20 Apr 2021 12:32:16 +0100	[thread overview]
Message-ID: <20210420113216.GA3596236@casper.infradead.org> (raw)
In-Reply-To: <CAMuHMdXm1Zg=Wm-=tn5jUJwqVGUvCi5yDaW0PXWC2DEDYGcy5A@mail.gmail.com>

On Tue, Apr 20, 2021 at 09:39:54AM +0200, Geert Uytterhoeven wrote:
> > +++ b/include/linux/mm_types.h
> > @@ -97,10 +97,10 @@ struct page {
> >                 };
> >                 struct {        /* page_pool used by netstack */
> >                         /**
> > -                        * @dma_addr: might require a 64-bit value even on
> > +                        * @dma_addr: might require a 64-bit value on
> >                          * 32-bit architectures.
> >                          */
> > -                       dma_addr_t dma_addr;
> > +                       unsigned long dma_addr[2];
> 
> So we get two 64-bit words on 64-bit platforms, while only one is
> needed?

Not really.  This is part of the 5-word union in struct page, so the space
ends up being reserved anyway, event if it's not "assigned" to dma_addr.

> > +       dma_addr_t ret = page->dma_addr[0];
> > +       if (sizeof(dma_addr_t) > sizeof(unsigned long))
> > +               ret |= (dma_addr_t)page->dma_addr[1] << 16 << 16;
> 
> We don't seem to have a handy macro for a 32-bit left shift yet...
> 
> But you can also avoid the warning using
> 
>     ret |= (u64)page->dma_addr[1] << 32;

Sure.  It doesn't really matter which way we eliminate the warning;
the code is unreachable.

> > +{
> > +       page->dma_addr[0] = addr;
> > +       if (sizeof(dma_addr_t) > sizeof(unsigned long))
> > +               page->dma_addr[1] = addr >> 16 >> 16;
> 
> ... but we do have upper_32_bits() for a 32-bit right shift.

Yep, that's what my current tree looks like.

WARNING: multiple messages have this Message-ID (diff)
From: Matthew Wilcox <willy@infradead.org>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Arnd Bergmann <arnd@kernel.org>,
	Grygorii Strashko <grygorii.strashko@ti.com>,
	netdev <netdev@vger.kernel.org>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	"open list:BROADCOM NVRAM DRIVER" <linux-mips@vger.kernel.org>,
	Michal Hocko <mhocko@kernel.org>, Linux MM <linux-mm@kvack.org>,
	Mel Gorman <mgorman@suse.de>,
	Jesper Dangaard Brouer <brouer@redhat.com>,
	mcroce@linux.microsoft.com,
	arcml <linux-snps-arc@lists.infradead.org>,
	linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
	Christoph Hellwig <hch@lst.de>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 1/2] mm: Fix struct page layout on 32-bit systems
Date: Tue, 20 Apr 2021 12:32:16 +0100	[thread overview]
Message-ID: <20210420113216.GA3596236@casper.infradead.org> (raw)
In-Reply-To: <CAMuHMdXm1Zg=Wm-=tn5jUJwqVGUvCi5yDaW0PXWC2DEDYGcy5A@mail.gmail.com>

On Tue, Apr 20, 2021 at 09:39:54AM +0200, Geert Uytterhoeven wrote:
> > +++ b/include/linux/mm_types.h
> > @@ -97,10 +97,10 @@ struct page {
> >                 };
> >                 struct {        /* page_pool used by netstack */
> >                         /**
> > -                        * @dma_addr: might require a 64-bit value even on
> > +                        * @dma_addr: might require a 64-bit value on
> >                          * 32-bit architectures.
> >                          */
> > -                       dma_addr_t dma_addr;
> > +                       unsigned long dma_addr[2];
> 
> So we get two 64-bit words on 64-bit platforms, while only one is
> needed?

Not really.  This is part of the 5-word union in struct page, so the space
ends up being reserved anyway, event if it's not "assigned" to dma_addr.

> > +       dma_addr_t ret = page->dma_addr[0];
> > +       if (sizeof(dma_addr_t) > sizeof(unsigned long))
> > +               ret |= (dma_addr_t)page->dma_addr[1] << 16 << 16;
> 
> We don't seem to have a handy macro for a 32-bit left shift yet...
> 
> But you can also avoid the warning using
> 
>     ret |= (u64)page->dma_addr[1] << 32;

Sure.  It doesn't really matter which way we eliminate the warning;
the code is unreachable.

> > +{
> > +       page->dma_addr[0] = addr;
> > +       if (sizeof(dma_addr_t) > sizeof(unsigned long))
> > +               page->dma_addr[1] = addr >> 16 >> 16;
> 
> ... but we do have upper_32_bits() for a 32-bit right shift.

Yep, that's what my current tree looks like.

WARNING: multiple messages have this Message-ID (diff)
From: Matthew Wilcox <willy@infradead.org>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Jesper Dangaard Brouer <brouer@redhat.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux MM <linux-mm@kvack.org>, netdev <netdev@vger.kernel.org>,
	linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	"open list:BROADCOM NVRAM DRIVER" <linux-mips@vger.kernel.org>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	mcroce@linux.microsoft.com,
	Grygorii Strashko <grygorii.strashko@ti.com>,
	Arnd Bergmann <arnd@kernel.org>, Christoph Hellwig <hch@lst.de>,
	arcml <linux-snps-arc@lists.infradead.org>,
	Michal Hocko <mhocko@kernel.org>, Mel Gorman <mgorman@suse.de>
Subject: Re: [PATCH 1/2] mm: Fix struct page layout on 32-bit systems
Date: Tue, 20 Apr 2021 12:32:16 +0100	[thread overview]
Message-ID: <20210420113216.GA3596236@casper.infradead.org> (raw)
In-Reply-To: <CAMuHMdXm1Zg=Wm-=tn5jUJwqVGUvCi5yDaW0PXWC2DEDYGcy5A@mail.gmail.com>

On Tue, Apr 20, 2021 at 09:39:54AM +0200, Geert Uytterhoeven wrote:
> > +++ b/include/linux/mm_types.h
> > @@ -97,10 +97,10 @@ struct page {
> >                 };
> >                 struct {        /* page_pool used by netstack */
> >                         /**
> > -                        * @dma_addr: might require a 64-bit value even on
> > +                        * @dma_addr: might require a 64-bit value on
> >                          * 32-bit architectures.
> >                          */
> > -                       dma_addr_t dma_addr;
> > +                       unsigned long dma_addr[2];
> 
> So we get two 64-bit words on 64-bit platforms, while only one is
> needed?

Not really.  This is part of the 5-word union in struct page, so the space
ends up being reserved anyway, event if it's not "assigned" to dma_addr.

> > +       dma_addr_t ret = page->dma_addr[0];
> > +       if (sizeof(dma_addr_t) > sizeof(unsigned long))
> > +               ret |= (dma_addr_t)page->dma_addr[1] << 16 << 16;
> 
> We don't seem to have a handy macro for a 32-bit left shift yet...
> 
> But you can also avoid the warning using
> 
>     ret |= (u64)page->dma_addr[1] << 32;

Sure.  It doesn't really matter which way we eliminate the warning;
the code is unreachable.

> > +{
> > +       page->dma_addr[0] = addr;
> > +       if (sizeof(dma_addr_t) > sizeof(unsigned long))
> > +               page->dma_addr[1] = addr >> 16 >> 16;
> 
> ... but we do have upper_32_bits() for a 32-bit right shift.

Yep, that's what my current tree looks like.

_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc

WARNING: multiple messages have this Message-ID (diff)
From: Matthew Wilcox <willy@infradead.org>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Jesper Dangaard Brouer <brouer@redhat.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux MM <linux-mm@kvack.org>, netdev <netdev@vger.kernel.org>,
	linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	"open list:BROADCOM NVRAM DRIVER" <linux-mips@vger.kernel.org>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	mcroce@linux.microsoft.com,
	Grygorii Strashko <grygorii.strashko@ti.com>,
	Arnd Bergmann <arnd@kernel.org>, Christoph Hellwig <hch@lst.de>,
	arcml <linux-snps-arc@lists.infradead.org>,
	Michal Hocko <mhocko@kernel.org>, Mel Gorman <mgorman@suse.de>
Subject: Re: [PATCH 1/2] mm: Fix struct page layout on 32-bit systems
Date: Tue, 20 Apr 2021 12:32:16 +0100	[thread overview]
Message-ID: <20210420113216.GA3596236@casper.infradead.org> (raw)
In-Reply-To: <CAMuHMdXm1Zg=Wm-=tn5jUJwqVGUvCi5yDaW0PXWC2DEDYGcy5A@mail.gmail.com>

On Tue, Apr 20, 2021 at 09:39:54AM +0200, Geert Uytterhoeven wrote:
> > +++ b/include/linux/mm_types.h
> > @@ -97,10 +97,10 @@ struct page {
> >                 };
> >                 struct {        /* page_pool used by netstack */
> >                         /**
> > -                        * @dma_addr: might require a 64-bit value even on
> > +                        * @dma_addr: might require a 64-bit value on
> >                          * 32-bit architectures.
> >                          */
> > -                       dma_addr_t dma_addr;
> > +                       unsigned long dma_addr[2];
> 
> So we get two 64-bit words on 64-bit platforms, while only one is
> needed?

Not really.  This is part of the 5-word union in struct page, so the space
ends up being reserved anyway, event if it's not "assigned" to dma_addr.

> > +       dma_addr_t ret = page->dma_addr[0];
> > +       if (sizeof(dma_addr_t) > sizeof(unsigned long))
> > +               ret |= (dma_addr_t)page->dma_addr[1] << 16 << 16;
> 
> We don't seem to have a handy macro for a 32-bit left shift yet...
> 
> But you can also avoid the warning using
> 
>     ret |= (u64)page->dma_addr[1] << 32;

Sure.  It doesn't really matter which way we eliminate the warning;
the code is unreachable.

> > +{
> > +       page->dma_addr[0] = addr;
> > +       if (sizeof(dma_addr_t) > sizeof(unsigned long))
> > +               page->dma_addr[1] = addr >> 16 >> 16;
> 
> ... but we do have upper_32_bits() for a 32-bit right shift.

Yep, that's what my current tree looks like.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2021-04-20 11:33 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-16 23:07 [PATCH 0/2] Change struct page layout for page_pool Matthew Wilcox (Oracle)
2021-04-16 23:07 ` Matthew Wilcox (Oracle)
2021-04-16 23:07 ` Matthew Wilcox (Oracle)
2021-04-16 23:07 ` Matthew Wilcox (Oracle)
2021-04-16 23:07 ` [PATCH 1/2] mm: Fix struct page layout on 32-bit systems Matthew Wilcox (Oracle)
2021-04-16 23:07   ` Matthew Wilcox (Oracle)
2021-04-16 23:07   ` Matthew Wilcox (Oracle)
2021-04-16 23:07   ` Matthew Wilcox (Oracle)
2021-04-17  1:08   ` kernel test robot
2021-04-17  1:08     ` kernel test robot
2021-04-17  1:08     ` kernel test robot
2021-04-17  1:08     ` kernel test robot
2021-04-17  2:45   ` Matthew Wilcox
2021-04-17  2:45     ` Matthew Wilcox
2021-04-17  2:45     ` Matthew Wilcox
2021-04-17  2:45     ` Matthew Wilcox
2021-04-17 18:32     ` Ilias Apalodimas
2021-04-17 18:32       ` Ilias Apalodimas
2021-04-17 18:32       ` Ilias Apalodimas
2021-04-17 18:32       ` Ilias Apalodimas
2021-04-17 20:22       ` Matthew Wilcox
2021-04-17 20:22         ` Matthew Wilcox
2021-04-17 20:22         ` Matthew Wilcox
2021-04-17 20:22         ` Matthew Wilcox
2021-04-18 11:21         ` Ilias Apalodimas
2021-04-18 11:21           ` Ilias Apalodimas
2021-04-18 11:21           ` Ilias Apalodimas
2021-04-18 11:21           ` Ilias Apalodimas
2021-04-17 21:18     ` David Laight
2021-04-17 21:18       ` David Laight
2021-04-17 21:18       ` David Laight
2021-04-17 21:18       ` David Laight
2021-04-17 21:18       ` David Laight
2021-04-17 22:45       ` Matthew Wilcox
2021-04-17 22:45         ` Matthew Wilcox
2021-04-17 22:45         ` Matthew Wilcox
2021-04-17 22:45         ` Matthew Wilcox
2021-04-17 22:45         ` Matthew Wilcox
2021-04-20  2:48     ` Vineet Gupta
2021-04-20  2:48       ` Vineet Gupta
2021-04-20  2:48       ` Vineet Gupta
2021-04-20  2:48       ` Vineet Gupta
2021-04-20  2:48       ` Vineet Gupta
2021-04-20  3:10       ` Matthew Wilcox
2021-04-20  3:10         ` Matthew Wilcox
2021-04-20  3:10         ` Matthew Wilcox
2021-04-20  3:10         ` Matthew Wilcox
2021-04-20  3:10         ` Matthew Wilcox
2021-04-20  7:07         ` Arnd Bergmann
2021-04-20  7:07           ` Arnd Bergmann
2021-04-20  7:07           ` Arnd Bergmann
2021-04-20  7:07           ` Arnd Bergmann
2021-04-20  7:07           ` Arnd Bergmann
2021-04-20 21:14           ` Vineet Gupta
2021-04-20 21:14             ` Vineet Gupta
2021-04-20 21:14             ` Vineet Gupta
2021-04-20 21:14             ` Vineet Gupta
2021-04-20 21:14             ` Vineet Gupta
2021-04-20 21:20             ` Arnd Bergmann
2021-04-20 21:20               ` Arnd Bergmann
2021-04-20 21:20               ` Arnd Bergmann
2021-04-20 21:20               ` Arnd Bergmann
2021-04-20 21:20               ` Arnd Bergmann
2021-04-21  5:50               ` hch
2021-04-21  5:50                 ` hch
2021-04-21  5:50                 ` hch
2021-04-21  5:50                 ` hch
2021-04-21  5:50                 ` hch
2021-04-21  8:43               ` David Laight
2021-04-21  8:43                 ` David Laight
2021-04-21  8:43                 ` David Laight
2021-04-21  8:43                 ` David Laight
2021-04-21  8:43                 ` David Laight
2021-04-21  8:58                 ` Arnd Bergmann
2021-04-21  8:58                   ` Arnd Bergmann
2021-04-21  8:58                   ` Arnd Bergmann
2021-04-21  8:58                   ` Arnd Bergmann
2021-04-21  8:58                   ` Arnd Bergmann
2021-04-20  7:39     ` Geert Uytterhoeven
2021-04-20  7:39       ` Geert Uytterhoeven
2021-04-20  7:39       ` Geert Uytterhoeven
2021-04-20  7:39       ` Geert Uytterhoeven
2021-04-20  7:39       ` Geert Uytterhoeven
2021-04-20  8:39       ` David Laight
2021-04-20  8:39         ` David Laight
2021-04-20  8:39         ` David Laight
2021-04-20  8:39         ` David Laight
2021-04-20 11:32       ` Matthew Wilcox [this message]
2021-04-20 11:32         ` Matthew Wilcox
2021-04-20 11:32         ` Matthew Wilcox
2021-04-20 11:32         ` Matthew Wilcox
2021-04-17  7:34   ` Jesper Dangaard Brouer
2021-04-17  7:34     ` Jesper Dangaard Brouer
2021-04-17  7:34     ` Jesper Dangaard Brouer
2021-04-17  7:34     ` Jesper Dangaard Brouer
2021-04-20  7:21   ` Rasmus Villemoes
2021-04-20  7:21     ` Rasmus Villemoes
2021-04-20  7:21     ` Rasmus Villemoes
2021-04-20  7:21     ` Rasmus Villemoes
2021-04-16 23:07 ` [PATCH 2/2] mm: Indicate pfmemalloc pages in compound_head Matthew Wilcox (Oracle)
2021-04-16 23:07   ` Matthew Wilcox (Oracle)
2021-04-16 23:07   ` Matthew Wilcox (Oracle)
2021-04-16 23:07   ` Matthew Wilcox (Oracle)
2021-04-17 21:13   ` David Laight
2021-04-17 21:13     ` David Laight
2021-04-17 21:13     ` David Laight
2021-04-17 21:13     ` David Laight
2021-04-17 21:13     ` David Laight
2021-04-17 21:28     ` Matthew Wilcox
2021-04-17 21:28       ` Matthew Wilcox
2021-04-17 21:28       ` Matthew Wilcox
2021-04-17 21:28       ` Matthew Wilcox
2021-04-17 21:28       ` Matthew Wilcox
2021-04-20  4:03 ` [PATCH 0/2] Change struct page layout for page_pool Michael Ellerman
2021-04-20  4:03   ` Michael Ellerman
2021-04-20  4:03   ` Michael Ellerman
2021-04-20  4:03   ` Michael Ellerman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210420113216.GA3596236@casper.infradead.org \
    --to=willy@infradead.org \
    --cc=arnd@kernel.org \
    --cc=brouer@redhat.com \
    --cc=geert@linux-m68k.org \
    --cc=grygorii.strashko@ti.com \
    --cc=hch@lst.de \
    --cc=ilias.apalodimas@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-snps-arc@lists.infradead.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mcroce@linux.microsoft.com \
    --cc=mgorman@suse.de \
    --cc=mhocko@kernel.org \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.