All of lore.kernel.org
 help / color / mirror / Atom feed
* 16KB PAGE_SIZE not work on DB410C
@ 2015-12-21  4:00 Pingbo Wen
  2015-12-21  7:06 ` Ard Biesheuvel
  0 siblings, 1 reply; 6+ messages in thread
From: Pingbo Wen @ 2015-12-21  4:00 UTC (permalink / raw)
  To: linux-arm-kernel

Hello, 

I want to do some tests over 16KB page size on dragonboard 410c. And I merged 
arm64-upstream branch over 

  https://git.linaro.org/landing-teams/working/qualcomm/kernel.git integration-linux-qcomlt

which is based on Linux Kernel 4.3.

The db410c can boot into ubuntu in 4KB / 64KB page size, but when I set 16K page size, with
47bit VA, the kernel hang before kernel_start(), no log output.

Does db410c support 16K page size? What can I do to boot it up?

Below is what I got through serial port:

B -    437888 - QSEE Execution, Start
D -        61 - QSEE Execution, Delta
B -    443561 - SBL1, End
D -    245982 - SBL1, Delta
S - Flash Throughput, 111000 KB/s  (1151760 Bytes,  10309 us)
S - DDR Frequency, 400 MHz
Android Bootloader - UART_DM Initialized!!!
[0] welcome to lk

[10] platform_init()
[10] target_init()
[40] SDHC Running in HS200 mode
[90] Done initialization of the card
[90] pm8x41_get_is_cold_boot: cold boot
[90] No 'frp' partition found
[100] Not able to search the panel:
[100] Display not enabled for 24 HW type
[100] Target panel init not found!
[110] pm8x41_get_is_cold_boot: cold boot
[110] partition misc doesn't exist
[110] error in emmc_recovery_init
[120] Unable to locate /bootselect partition
[120] No 'misc' partition found
[120] Error reading MISC partition
[130] failed to get ffbm cookie[130] use_signed_kernel=0, is_unlocked=0, is_tampered=0.
[140] Loading boot image (15704064): start
[240] Loading boot image (15704064): done
[350] DTB Total entry: 15, DTB version: 2
[360] Using DTB entry 0x000000f7/00000000/0x00010018/0 for device 0x000000f7/00010000/0x00010018/0
[370] Using pmic info 0x2000b/0x0/0x0/0x0 for device 0x2000b/0x0/0x0/0x0
[370] target_display_panel_node:510: hw_id=24 panel_name=""
[380] cmdline: root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=ttyMSM0,115200n8 earlycon=msm_serial androidboot.emmc=true androidboot.serialno=a4ce2318 androidboot.baseband=apq mdss_mdp.panel=0:dsi:0:
[400] Updating device tree: start
[490] Updating device tree: done
[500] booting linux @ 0x80080000, ramdisk @ 0x82000000 (2854016), tags/device tree @ 0x81e00000
[500] Jumping to kernel via monitor

Pingbo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* 16KB PAGE_SIZE not work on DB410C
  2015-12-21  4:00 16KB PAGE_SIZE not work on DB410C Pingbo Wen
@ 2015-12-21  7:06 ` Ard Biesheuvel
  2015-12-25 12:24   ` Pingbo Wen
  0 siblings, 1 reply; 6+ messages in thread
From: Ard Biesheuvel @ 2015-12-21  7:06 UTC (permalink / raw)
  To: linux-arm-kernel

On 21 December 2015 at 05:00, Pingbo Wen <pingbo.wen@linaro.org> wrote:
> Hello,
>
> I want to do some tests over 16KB page size on dragonboard 410c. And I merged
> arm64-upstream branch over
>
>   https://git.linaro.org/landing-teams/working/qualcomm/kernel.git integration-linux-qcomlt
>
> which is based on Linux Kernel 4.3.
>
> The db410c can boot into ubuntu in 4KB / 64KB page size, but when I set 16K page size, with
> 47bit VA, the kernel hang before kernel_start(), no log output.
>
> Does db410c support 16K page size? What can I do to boot it up?
>

Cortex-A5x does not support 16 KB page size

-- 
Ard.


> Below is what I got through serial port:
>
> B -    437888 - QSEE Execution, Start
> D -        61 - QSEE Execution, Delta
> B -    443561 - SBL1, End
> D -    245982 - SBL1, Delta
> S - Flash Throughput, 111000 KB/s  (1151760 Bytes,  10309 us)
> S - DDR Frequency, 400 MHz
> Android Bootloader - UART_DM Initialized!!!
> [0] welcome to lk
>
> [10] platform_init()
> [10] target_init()
> [40] SDHC Running in HS200 mode
> [90] Done initialization of the card
> [90] pm8x41_get_is_cold_boot: cold boot
> [90] No 'frp' partition found
> [100] Not able to search the panel:
> [100] Display not enabled for 24 HW type
> [100] Target panel init not found!
> [110] pm8x41_get_is_cold_boot: cold boot
> [110] partition misc doesn't exist
> [110] error in emmc_recovery_init
> [120] Unable to locate /bootselect partition
> [120] No 'misc' partition found
> [120] Error reading MISC partition
> [130] failed to get ffbm cookie[130] use_signed_kernel=0, is_unlocked=0, is_tampered=0.
> [140] Loading boot image (15704064): start
> [240] Loading boot image (15704064): done
> [350] DTB Total entry: 15, DTB version: 2
> [360] Using DTB entry 0x000000f7/00000000/0x00010018/0 for device 0x000000f7/00010000/0x00010018/0
> [370] Using pmic info 0x2000b/0x0/0x0/0x0 for device 0x2000b/0x0/0x0/0x0
> [370] target_display_panel_node:510: hw_id=24 panel_name=""
> [380] cmdline: root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=ttyMSM0,115200n8 earlycon=msm_serial androidboot.emmc=true androidboot.serialno=a4ce2318 androidboot.baseband=apq mdss_mdp.panel=0:dsi:0:
> [400] Updating device tree: start
> [490] Updating device tree: done
> [500] booting linux @ 0x80080000, ramdisk @ 0x82000000 (2854016), tags/device tree @ 0x81e00000
> [500] Jumping to kernel via monitor
>
> Pingbo
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* 16KB PAGE_SIZE not work on DB410C
  2015-12-21  7:06 ` Ard Biesheuvel
@ 2015-12-25 12:24   ` Pingbo Wen
  2015-12-26 11:52     ` Suzuki K. Poulose
                       ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Pingbo Wen @ 2015-12-25 12:24 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Ard

> ? 2015?12?21??15:06?Ard Biesheuvel <ard.biesheuvel@linaro.org> ???
> 
> On 21 December 2015 at 05:00, Pingbo Wen <pingbo.wen@linaro.org> wrote:
>> Hello,
>> 
>> I want to do some tests over 16KB page size on dragonboard 410c. And I merged
>> arm64-upstream branch over
>> 
>>  https://git.linaro.org/landing-teams/working/qualcomm/kernel.git integration-linux-qcomlt
>> 
>> which is based on Linux Kernel 4.3.
>> 
>> The db410c can boot into ubuntu in 4KB / 64KB page size, but when I set 16K page size, with
>> 47bit VA, the kernel hang before kernel_start(), no log output.
>> 
>> Does db410c support 16K page size? What can I do to boot it up?
>> 
> 
> Cortex-A5x does not support 16 KB page size

Is there any documents I can reference? As I have get from ARM document, the Cortex-A53 support 16k page size, and Cortex-A57 don?t. The document can be found at:

	http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/BABDJHAD.html

Reference it here:

The supported granule sizes are 4KB, 16KB, and 64KB, and it is implementation defined which of the three are supported. Code that creates page tables is able to read the system register ID_AA64MMFR0_EL1, to find out which are the supported sizes. The Cortex-A53 processor supports all three sizes, but this is not the case for early versions of some processors, such as the Cortex-A57, which did not support the 16K granule size. The size is configurable for each translation table within the Translation Control Register (TCR_EL1).

Did I miss something?

Pingbo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* 16KB PAGE_SIZE not work on DB410C
  2015-12-25 12:24   ` Pingbo Wen
@ 2015-12-26 11:52     ` Suzuki K. Poulose
  2015-12-31  9:05     ` Ard Biesheuvel
  2016-01-11 12:18     ` Mark Rutland
  2 siblings, 0 replies; 6+ messages in thread
From: Suzuki K. Poulose @ 2015-12-26 11:52 UTC (permalink / raw)
  To: linux-arm-kernel

On 25/12/15 12:24, Pingbo Wen wrote:
> Hi Ard

Pingbo

>> Cortex-A5x does not support 16 KB page size
>
> Is there any documents I can reference? As I have get from ARM document, the Cortex-A53 support 16k page size, and Cortex-A57 don?t. The document can be found at:
>
> 	http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/BABDJHAD.html
>
> Reference it here:
>
> The supported granule sizes are 4KB, 16KB, and 64KB, and it is implementation defined which of the three are supported. Code that creates page tables is able to read the system register ID_AA64MMFR0_EL1, to find out which are the supported sizes. The Cortex-A53 processor supports all three sizes, but this is not the case for early versions of some processors, such as the Cortex-A57, which did not support the 16K granule size. The size is configurable for each translation table within the Translation Control Register (TCR_EL1).
>


As it clearly says, it really depends on the implementation and by default A53 doesn't enable 16K support. If you have a debugger
could you check the $PC on the booting core and map it to the vmlinux symbol ? Please be aware that the address could be PA.
If the 16K is not supported the $PC will be in PA(__no_granule_support).

Cheers
Suzuki

^ permalink raw reply	[flat|nested] 6+ messages in thread

* 16KB PAGE_SIZE not work on DB410C
  2015-12-25 12:24   ` Pingbo Wen
  2015-12-26 11:52     ` Suzuki K. Poulose
@ 2015-12-31  9:05     ` Ard Biesheuvel
  2016-01-11 12:18     ` Mark Rutland
  2 siblings, 0 replies; 6+ messages in thread
From: Ard Biesheuvel @ 2015-12-31  9:05 UTC (permalink / raw)
  To: linux-arm-kernel

On 25 December 2015 at 13:24, Pingbo Wen <pingbo.wen@linaro.org> wrote:
> Hi Ard
>
>> ? 2015?12?21??15:06?Ard Biesheuvel <ard.biesheuvel@linaro.org> ???
>>
>> On 21 December 2015 at 05:00, Pingbo Wen <pingbo.wen@linaro.org> wrote:
>>> Hello,
>>>
>>> I want to do some tests over 16KB page size on dragonboard 410c. And I merged
>>> arm64-upstream branch over
>>>
>>>  https://git.linaro.org/landing-teams/working/qualcomm/kernel.git integration-linux-qcomlt
>>>
>>> which is based on Linux Kernel 4.3.
>>>
>>> The db410c can boot into ubuntu in 4KB / 64KB page size, but when I set 16K page size, with
>>> 47bit VA, the kernel hang before kernel_start(), no log output.
>>>
>>> Does db410c support 16K page size? What can I do to boot it up?
>>>
>>
>> Cortex-A5x does not support 16 KB page size
>
> Is there any documents I can reference? As I have get from ARM document, the Cortex-A53 support 16k page size, and Cortex-A57 don?t. The document can be found at:
>
>         http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/BABDJHAD.html
>
> Reference it here:
>
> The supported granule sizes are 4KB, 16KB, and 64KB, and it is implementation defined which of the three are supported. Code that creates page tables is able to read the system register ID_AA64MMFR0_EL1, to find out which are the supported sizes. The Cortex-A53 processor supports all three sizes, but this is not the case for early versions of some processors, such as the Cortex-A57, which did not support the 16K granule size. The size is configurable for each translation table within the Translation Control Register (TCR_EL1).
>
> Did I miss something?
>

Ah, apologies for sharing incorrect information. I was under the
impression that A53 does not support 16k pages either, but apparently
I was wrong.
So what does your ID_AA64MMFR0_EL1 register say?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* 16KB PAGE_SIZE not work on DB410C
  2015-12-25 12:24   ` Pingbo Wen
  2015-12-26 11:52     ` Suzuki K. Poulose
  2015-12-31  9:05     ` Ard Biesheuvel
@ 2016-01-11 12:18     ` Mark Rutland
  2 siblings, 0 replies; 6+ messages in thread
From: Mark Rutland @ 2016-01-11 12:18 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Dec 25, 2015 at 08:24:59PM +0800, Pingbo Wen wrote:
> Hi Ard
> 
> > ? 2015?12?21??15:06?Ard Biesheuvel <ard.biesheuvel@linaro.org> ???
> > 
> > On 21 December 2015 at 05:00, Pingbo Wen <pingbo.wen@linaro.org> wrote:
> >> Hello,
> >> 
> >> I want to do some tests over 16KB page size on dragonboard 410c. And I merged
> >> arm64-upstream branch over
> >> 
> >>  https://git.linaro.org/landing-teams/working/qualcomm/kernel.git integration-linux-qcomlt
> >> 
> >> which is based on Linux Kernel 4.3.
> >> 
> >> The db410c can boot into ubuntu in 4KB / 64KB page size, but when I set 16K page size, with
> >> 47bit VA, the kernel hang before kernel_start(), no log output.
> >> 
> >> Does db410c support 16K page size? What can I do to boot it up?
> >> 
> > 
> > Cortex-A5x does not support 16 KB page size
> 
> Is there any documents I can reference? As I have get from ARM document, the Cortex-A53 support 16k page size, and Cortex-A57 don?t. The document can be found at:
> 
> 	http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/BABDJHAD.html
> 
> Reference it here:
> 
> The supported granule sizes are 4KB, 16KB, and 64KB, and it is implementation defined which of the three are supported. Code that creates page tables is able to read the system register ID_AA64MMFR0_EL1, to find out which are the supported sizes. The Cortex-A53 processor supports all three sizes, but this is not the case for early versions of some processors, such as the Cortex-A57, which did not support the 16K granule size. The size is configurable for each translation table within the Translation Control Register (TCR_EL1).
> 
> Did I miss something?

I think the documentation above is wrong. The Cortex-A Series
Programmer?s Guide for ARMv8-A should not be taken as gospel; it says
many things which are not quite correct.

If you take a look in the Cortex-A53 TRM, in "5.1 About the MMU", only
4K and 64K translation granules are described.

Additionally, in the TRM's description of ID_AA64MMFR0_EL1 it describes
that 4K and 64K are supported, and 16K is not, for all configurations.

So Cortex-A53 does not support a 16K translation granule.

Thanks,
Mark.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-01-11 12:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-21  4:00 16KB PAGE_SIZE not work on DB410C Pingbo Wen
2015-12-21  7:06 ` Ard Biesheuvel
2015-12-25 12:24   ` Pingbo Wen
2015-12-26 11:52     ` Suzuki K. Poulose
2015-12-31  9:05     ` Ard Biesheuvel
2016-01-11 12:18     ` Mark Rutland

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.