From: Christian Lamparter <chunkeey@gmail.com>
To: christophe leroy <christophe.leroy@c-s.fr>
Cc: linuxppc-dev@lists.ozlabs.org,
Markus Elfring <elfring@users.sourceforge.net>,
Paul Mackerras <paulus@samba.org>
Subject: Re: [PATCH] powerpc/4xx/ocm: fix compiler error
Date: Sat, 22 Dec 2018 15:32:49 +0100 [thread overview]
Message-ID: <10812488.F0pUFFIo3t@debian64> (raw)
In-Reply-To: <06576f55-e31f-2554-255d-d10f8576c7ab@c-s.fr>
On Saturday, December 22, 2018 2:08:02 PM CET christophe leroy wrote:
>
> Le 22/12/2018 à 12:27, Christian Lamparter a écrit :
> > On Saturday, December 22, 2018 11:59:04 AM CET christophe leroy wrote:
> >>
> >> Le 22/12/2018 à 11:09, Christian Lamparter a écrit :
> >>> This patch fixes a recent regression in ocm:
> >>>
> >>> ocm.c: In function ‘ocm_init_node’:
> >>> ocm.c:182:18: error: invalid operands to binary |
> >>> ocm.c:197:17: error: invalid operands to binary |
> >>>
> >>> Fixes: 56f3c1413f5c ("powerpc/mm: properly set PAGE_KERNEL flags in ioremap()")
> >>> Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
> >>
> >> What's the problem here ? Is PAGE_KERNEL_NCG undefined ? If that's the
> >> case, wouldn't it be better for fix that by including asm/pgtable.h ?
> >
> > PAGE_KERNEL[_NCG] type is a struct of pgprot_t, whereas _PAGE_EXEC is
> > considered an int.
>
> Oops, I missed that.
>
> Could you put the entire error message in the commit log ?
Will do in v2... which I'm going to sent out shortly. I mainly wanted to
make the most "trivial fix" since it probably needs to be backported to
4.20-stable at this late in the rc phase.
> >
> > arch/powerpc/platforms/4xx/ocm.c: In function ‘ocm_init_node’:
> > arch/powerpc/platforms/4xx/ocm.c:182:18: error: invalid operands to binary | (have ‘int’ and ‘pgprot_t’ {aka ‘struct <anonymous>’})
> > _PAGE_EXEC | PAGE_KERNEL_NCG);
>
> Usually, Guarded implies no exec (at least on 6xx and 8xx). Does the 4xx
> accept guarded exec ?
Oh, I simply copied over the individual _PAGE_* flags that the PAGE_KERNEL_NCG
macro set. The OCM is usually a small (32 KiB) DMA descriptor storage, I don't
think anyone would want to execute code in there.
>
> > ^
> > arch/powerpc/platforms/4xx/ocm.c:197:17: error: invalid operands to binary | (have ‘int’ and ‘pgprot_t’ {aka ‘struct <anonymous>’})
> > _PAGE_EXEC | PAGE_KERNEL);
>
> That's PAGE_KERNEL_X
>
> > ^
> >
> > I think pgprot_val(PAGE_KERNEL[_NCG]) could be an option too.
>
> Yes I may have a preference for that.
K, I liked having all _PAGE_*. But I'm fine either way.
see you for v2. :-D
> >
> > Christian
> >>> ---
> >>> arch/powerpc/platforms/4xx/ocm.c | 6 ++++--
> >>> 1 file changed, 4 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/arch/powerpc/platforms/4xx/ocm.c b/arch/powerpc/platforms/4xx/ocm.c
> >>> index 561b09de69bf..04ff69ddac09 100644
> >>> --- a/arch/powerpc/platforms/4xx/ocm.c
> >>> +++ b/arch/powerpc/platforms/4xx/ocm.c
> >>> @@ -179,7 +179,8 @@ static void __init ocm_init_node(int count, struct device_node *node)
> >>> /* ioremap the non-cached region */
> >>> if (ocm->nc.memtotal) {
> >>> ocm->nc.virt = __ioremap(ocm->nc.phys, ocm->nc.memtotal,
> >>> - _PAGE_EXEC | PAGE_KERNEL_NCG);
> >>> + _PAGE_EXEC | _PAGE_BASE_NC |
> >>> + _PAGE_KERNEL_RW | _PAGE_NO_CACHE | _PAGE_GUARDED);
>
> Could be _PAGE_BASE_NC | _PAGE_KERNEL_RWX | _PAGE_NO_CACHE | _PAGE_GUARDED
>
> Or pgprot_val(PAGE_KERNEL_NCG) | _PAGE_EXEC
>
> Or pgprot_val(pgprot_noncached(PAGE_KERNEL_RWX)) (that's my preference)
>
> >>>
> >>> if (!ocm->nc.virt) {
> >>> printk(KERN_ERR
> >>> @@ -194,7 +195,8 @@ static void __init ocm_init_node(int count, struct device_node *node)
> >>>
> >>> if (ocm->c.memtotal) {
> >>> ocm->c.virt = __ioremap(ocm->c.phys, ocm->c.memtotal,
> >>> - _PAGE_EXEC | PAGE_KERNEL);
> >>> + _PAGE_EXEC | _PAGE_BASE |
> >>> + _PAGE_KERNEL_RW);
>
> What about _PAGE_BASE | _PAGE_KERNEL_RWX instead ?
>
> Or pgprot_val(PAGE_KERNEL_RWX) (that's my preference)
I'll test if any of these make a difference and sent a separate patch.
Christian
next prev parent reply other threads:[~2018-12-22 14:35 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-22 10:09 [PATCH] powerpc/4xx/ocm: fix compiler error Christian Lamparter
2018-12-22 10:59 ` christophe leroy
2018-12-22 11:27 ` Christian Lamparter
2018-12-22 13:08 ` christophe leroy
2018-12-22 14:32 ` Christian Lamparter [this message]
2018-12-22 17:16 ` Segher Boessenkool
2018-12-22 19:37 ` christophe leroy
2018-12-22 23:04 ` Segher Boessenkool
2018-12-23 8:29 ` Gabriel Paubert
2018-12-23 9:31 ` Segher Boessenkool
2018-12-23 9:58 ` christophe leroy
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=10812488.F0pUFFIo3t@debian64 \
--to=chunkeey@gmail.com \
--cc=christophe.leroy@c-s.fr \
--cc=elfring@users.sourceforge.net \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paulus@samba.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.