Thread (45 messages) 45 messages, 7 authors, 2016-06-22

Re: Kernel 4.7: PAGE_GUARDED and _PAGE_NO_CACHE

From: Julian Margetson <hidden>
Date: 2016-06-06 01:25:00

On 6/5/2016 8:57 PM, Michael Ellerman wrote:
On Sun, 2016-06-05 at 18:09 +0200, Christian Zigotzky wrote:
quoted
All,

I need an answer because I think Darren's guess is correct. It isn't a
problem in the pci code. I replaced the file head_64.S that Darren
mentioned with the one from the kernel 4.6 and it compiled but
unfortunately it doesn't boot. We know "head_64.S" is one file for the
early boot phase but I think there are some other files.
There's lots of files used in the early boot, you can't revert individual files
and expect it to work.
quoted
On 28 May 2016 at 8:51 PM, Darren Stevens wrote:
quoted
You can see from this that the 4.7 kernel hangs right after the booting linux
via __start(), whereas in the 4.4 there's about 29 lines of output before it
gets to the Initialised io_base_virt printk in our patch.
If the last thing you see is "booting linux via __start()" that means the kernel
crashed early, before it could detect and initialise the console.

Do you have a serial or other console in that machine at a known location? If so
you can hard-code the kernel to use that console, which means you can get
messages earlier in boot. See udbg_early_init() for starters.

cheers



Julian Margetson [off-list ref] writes:
quoted
Hi Christian,

I am also having a problem with _PAGE_NO_CACHE on Sam460ex.

Regards
Julian

drivers/gpu/drm/drm_vm.c: In function ‘drm_dma_prot’:
drivers/gpu/drm/drm_vm.c:83:6: error: invalid operands to binary | 
(have ‘pgprot_t {aka struct <anonymous>}’ and ‘int’)
    tmp |= _PAGE_NO_CACHE;
        ^
scripts/Makefile.build:289: recipe for target 
'drivers/gpu/drm/drm_vm.o' failed
make[3]: *** [drivers/gpu/drm/drm_vm.o] Error 1
scripts/Makefile.build:440: recipe for target 'drivers/gpu/drm' failed
make[2]: *** [drivers/gpu/drm] Error 2
scripts/Makefile.build:440: recipe for target 'drivers/gpu' failed
make[1]: *** [drivers/gpu] Error 2
Makefile:985: recipe for target 'drivers' failed
make: *** [drivers] Error 2
That is because that usage is wrong based on type. _PAGE_NO_CACHE is not
of type pgprot_t. What you really need there is

tmp = __pgprot(pgprot_val(tmp) | _PAGE_NO_CACHE);

or a better option would be

tmp = pgprot_noncached_wc(tmp);

-aneesh

@Julian

What about the issues with the Sam460ex? Have you solved the problem 
with the commit powerpc-4.7-1?

Cheers,

Christian

On 04 June 2016 at 5:25 PM, Christian Zigotzky wrote:
tmp = pgprot_noncached_wc(tmp);

compiles but  I then run in to the following

  CC      drivers/gpu/drm/drm_scatter.o
drivers/gpu/drm/drm_scatter.c: In function ‘drm_vmalloc_dma’:
drivers/gpu/drm/drm_scatter.c:44:49: error: invalid operands to binary | 
(have ‘pgprot_t {aka struct <anonymous>}’ and ‘int’)
   return __vmalloc(size, GFP_KERNEL, PAGE_KERNEL | _PAGE_NO_CACHE);
                                                  ^
drivers/gpu/drm/drm_scatter.c:48:1: warning: control reaches end of 
non-void function [-Wreturn-type]
  }
  ^
scripts/Makefile.build:289: recipe for target 
'drivers/gpu/drm/drm_scatter.o' failed
make[3]: *** [drivers/gpu/drm/drm_scatter.o] Error 1
scripts/Makefile.build:440: recipe for target 'drivers/gpu/drm' failed
make[2]: *** [drivers/gpu/drm] Error 2
scripts/Makefile.build:440: recipe for target 'drivers/gpu' failed
make[1]: *** [drivers/gpu] Error 2
Makefile:985: recipe for target 'drivers' failed
make: *** [drivers] Error 2

Regards

Julian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help