Kernel 4.7: PAGE_GUARDED and _PAGE_NO_CACHE

Christian Zigotzky chzigotzky at xenosoft.de
Thu Jun 9 18:48:15 AEST 2016


Shall I modify the workaround? Is the workaround for lack of the device 
tree the problem?

FYI: The SB600 doesn't follow normal PCIe address decoding rules, as in 
its original use as an AMD south bridge it was designed to appear as if 
it were integrated into the north bridge.

What shall I do? I don't know how long I can revert the PowerPC updates.

- Christian

On 08 June 2016 at 5:47 PM, Christian Zigotzky wrote:
> Hi Aneesh,
>
> We use it only in the file "pci-common.c".
>
> Part of the Nemo patch with ISA_IO_BASE:
>
> diff -rupN linux-4.7/arch/powerpc/kernel/pci-common.c 
> linux-4.7-nemo/arch/powerpc/kernel/pci-common.c
> --- linux-4.7/arch/powerpc/kernel/pci-common.c    2016-05-20 
> 10:23:06.588299920 +0200
> +++ linux-4.7-nemo/arch/powerpc/kernel/pci-common.c    2016-05-20 
> 10:21:28.652296699 +0200
> @@ -723,6 +723,19 @@ void pci_process_bridge_OF_ranges(struct
>                  isa_io_base =
>                      (unsigned long)hose->io_base_virt;
>  #endif /* CONFIG_PPC32 */
> +
> +
> +#ifdef CONFIG_PPC_PASEMI_SB600
> +                       /* Workaround for lack of device tree. New for 
> kernel 3.17: range.cpu_addr instead of cpu_addr and range.size instead 
> of size Ch. Zigotzky */
> +                       if (primary) {
> +                               __ioremap_at(range.cpu_addr, (void 
> *)ISA_IO_BASE,
> +                               range.size, 
> pgprot_val(pgprot_noncached(__pgprot(0))));
> +                       hose->io_base_virt = (void *)_IO_BASE;
> +               /* _IO_BASE needs unsigned long long for the kernel 
> 3.17 Ch. Zigotzky */
> +                       printk("Initialised io_base_virt 0x%lx 
> _IO_BASE 0x%llx\n", (unsigned long)hose->io_base_virt, (unsigned long 
> long)_IO_BASE);
> +                    }
> +#endif
> +
>
> Cheers,
>
> Christian
>
> On 08 June 2016 at 5:11 PM, Aneesh Kumar K.V wrote:
>>
>> Can you check the value of ISA_IO_BASE where you are
>> using it. If you are calling it early, you will find wrong value in
>> that. With the latest kernel it is a variable and is initialized in
>> hash__early_init_mmu();
>>
>> -aneesh
>>
>>
>



More information about the Linuxppc-dev mailing list