PAGE_GUARDED

Christian Zigotzky chzigotzky at xenosoft.de
Wed May 25 16:58:03 AEST 2016


Aneesh,

Thank you for your help. I tried

/* Workaround for lack of device tree */
                        if (primary) {
                                __ioremap_at(range.cpu_addr, (void 
*)ISA_IO_BASE,
                                range.size, HPTE_R_C | HPTE_R_M);
                        hose->io_base_virt = (void *)_IO_BASE;
                        printk("Initialised io_base_virt 0x%lx _IO_BASE 
0x%llx\n", (unsigned long)hose->io_base_virt, (unsigned long long)_IO_BASE);
                     }

Unfortunately the kernel doesn't boot.

Cheers,

Christian

On 24 May 2016 at 5:37 PM, Aneesh Kumar K.V wrote:
> You can look at commit 72176dd0ad36c ("powerpc/mm: Use a helper for
> finding pte bits mapping I/O area") to find similar conversion we did.
>
> For ex:
>   	__ioremap_at(phb_io_base_phys, (void *)ISA_IO_BASE,
> 		     size, _PAGE_NO_CACHE|_PAGE_GUARDED);
>
> gets replaced by
>
>   	__ioremap_at(phb_io_base_phys, (void *)ISA_IO_BASE,
> 		     size, pgprot_val(pgprot_noncached(__pgprot(0))));
>
> Now that gets mapped to the below hpte bits
>
> pte bit -> _PAGE_NON_IDEMPOTENT
>
> Which get converted in htab_convert_pte_flags(unsigned long pteflags)
> to
>
> 	if ((pteflags & _PAGE_CACHE_CTL ) == _PAGE_NON_IDEMPOTENT)
> 		rflags |= (HPTE_R_I | HPTE_R_G);
>
> BTW we default add (HPTE_R_C | HPTE_R_M ).
>
> Hence the final pte WIMG bits will be MIG. I guess that is what you
> wanted ?
>
>
> If that doesn't work, can you point me the current code so that I can
> look at it and suggest correct alternative.
>
> -aneesh
>
>



More information about the Linuxppc-dev mailing list