Skip to content

Conversation

@Artox
Copy link

@Artox Artox commented Jan 3, 2018

Reserve first 0x110000 bytes of SPI flash for U-Boot.
Binary of u-boot-2013.01-15t1-helios4 uses 0xD7528 bytes (03/01/2018);
Environment is located at 0x100000, up to 0x110000.
This means U-Boot needs at least the first 0x110000 bytes on SPI flash for itself.

Signed-off-by: Josua Mayer [email protected]

This creates /dev/mtdblock0 so we can write U-Boot to it!

BootROM - 1.73
Booting from SPI flash


General initialization - Version: 1.0.0
AVS selection from EFUSE disabled (Skip reading EFUSE values)
Overriding default AVS value to: 0x23
Detected Device ID 6828
High speed PHY - Version: 2.0

Init Customer board board SerDes lanes topology details:
 | Lane # | Speed|    Type     |
 ------------------------------|
 |   0    |  3   |  SATA0      |
 |   1    |  5   |  USB3 HOST0 |
 |   2    |  3   |  SATA1      |
 |   3    |  3   |  SATA3      |
 |   4    |  3   |  SATA2      |
 |   5    |  5   |  USB3 HOST1 |
 -------------------------------
High speed PHY - Ended Successfully
DDR3 Training Sequence - Ver TIP-1.46.0
DDR3 Training Sequence - Switching XBAR Window to FastPath Window 
DDR Training Sequence - Start scrubbing 
DDR Training Sequence - End scrubbing 
DDR3 Training Sequence - Ended Successfully
BootROM: Image checksum verification PASSED

 __   __                      _ _
|  \/  | __ _ _ ____   _____| | |
| |\/| |/ _` | '__\ \ / / _ \ | |
| |  | | (_| | |   \ V /  __/ | |
|_|  |_|\__,_|_|    \_/ \___|_|_|
         _   _     ____              _
        | | | |   | __ )  ___   ___ | |_ 
        | | | |___|  _ \ / _ \ / _ \| __| 
        | |_| |___| |_) | (_) | (_) | |_ 
         \___/    |____/ \___/ \___/ \__| 
 ** LOADER **


U-Boot 2013.01-g9154b7688e1-dirty (Jan 02 2018 - 18:11:49) Marvell version: 2015_T1.0p16

Board: Helios4
SoC:   MV88F6828 Rev A0
       running 2 CPUs
CPU:   ARM Cortex A9 MPCore (Rev 1) LE
       CPU 0
       CPU    @ 1600 [MHz]
       L2     @ 800 [MHz]
       TClock @ 250 [MHz]
       DDR3    @ 800 [MHz]
       DDR3 32 Bit Width,FastPath Memory Access, DLB Enabled, ECC Enabled
DRAM:  2 GiB
MMC:   mv_sdh: 0
SF: Detected W25Q32 with page size 4 KiB, total 4 MiB
*** Warning - bad CRC, using default environment

USB2.0 0: Host Mode
USB3.0 0: Host Mode
USB3.0 1: Host Mode

Map:   Code:                    0x7fee5000:0x7ff98524
       BSS:                     0x7ffeff04
       Stack:                   0x7f9d4f20
       Heap:                    0x7f9d5000:0x7fee5000
       U-Boot Environment:      0x00100000:0x00110000 (SPI)

Board configuration detected:
Net:   
|  port  | Interface | PHY address  |
|--------|-----------|--------------|
| egiga0 |   RGMII   |     0x00     |
egiga0 [PRIME]
Hit any key to stop autoboot:  0

Reserve first 0x110000 bytes of SPI flash for U-Boot.
Binary of u-boot-2013.01-15t1-helios4 uses 0xD7528 bytes (03/01/2018);
Environment is located at 0x100000, up to 0x110000.
This means U-Boot needs at least the first 0x110000 bytes on SPI flash for itself.

Signed-off-by: Josua Mayer <[email protected]>
@g-provost g-provost requested a review from aprayoga January 5, 2018 02:03
prahal added a commit to prahal/linux-marvell that referenced this pull request Jan 27, 2018
Import of upstream commit fc7a906 ("gpio: mvebu: fix gpio bank registration
when pwm is used").

    If more than one gpio bank has the "pwm" property, only one will be
    registered successfully, all the others will fail with:
    mvebu-gpio: probe of f1018140.gpio failed with error -17

    That's because in alloc_pwms(), the chip->base (aka "int pwm"), was not
    set (thus, ==0) ; and 0 is a meaningful start value in alloc_pwm().
    What was intended is mvpwm->chip->base = -1.
    Like that, the numbering will be done auto-magically

    Moreover, as the region might be already occupied by another pwm, we
    shouldn't force:
    mvpwm->chip->base = 0
    nor
    mvpwm->chip->base = id * MVEBU_MAX_GPIO_PER_BANK;

Fixes:
[    0.670354] mvebu-gpio: probe of f1018140.gpio failed with error -17

and thus prevent a kernel panic later on:
[    2.459735] Unable to handle kernel paging request at virtual address 696c3e61
[    2.466975] pgd = c0004000
[    2.469686] [696c3e61] *pgd=00000000
[    2.473282] Internal error: Oops: 5 [kobol-io#1] SMP THUMB2
[    2.478171] Modules linked in:
[    2.481243] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.4.112-mvebu kobol-io#2
[    2.487784] Hardware name: Marvell Armada 380/385 (Device Tree)
[    2.493717] task: ecce0040 ti: ecce2000 task.ti: ecce2000
[    2.499131] PC is at gpiochip_add+0x7c/0x320
[    2.503412] LR is at lock_acquired+0x19b/0x3a4
[    2.507866] pc : [<c038ac14>]    lr : [<c0158453>]    psr: 900000b3
[    2.507866] sp : ecce3c40  ip : c121cbe8  fp : ebfbe010
[    2.519370] r10: ebfc0ae0  r9 : 00000000  r8 : ebfcdc20
[    2.524606] r7 : ebfc0ae0  r6 : c0b6844c  r5 : 00000010  r4 : a0000013
[    2.531149] r3 : 696c3e2d  r2 : 64657470  r1 : 64657460  r0 : 696c3e1d
[    2.537691] Flags: NzcV  IRQs off  FIQs on  Mode SVC_32  ISA Thumb  Segment none
[    2.545103] Control: 50c5387d  Table: 0000404a  DAC: 00000051
[    2.550861] Process swapper/0 (pid: 1, stack limit = 0xecce2218)
[    2.556880] Stack: (0xecce3c40 to 0xecce4000)
[    2.561248] 3c40: ecce3c4e c015a01b ecce0630 c0b6844c c01566cb c015a291 ebfcdc00 c0b68424
[    2.569446] 3c60: c077f9e4 ebd3ff00 ebfc0a10 ebfc0a10 00000000 00000000 ebfcdc00 ebfcdc20
[    2.577645] 3c80: 00000000 ebfc0ae0 ebfbe010 c038e8bb 00000017 00000002 00000000 c04a86ad
[    2.585843] 3ca0: eedc6d1c ebfcdc20 0041d1ec c07a9f00 c0b68764 c060cc0c ebfcdc20 ebfcdc04
[    2.594040] 3cc0: ebfcdc00 c038e6d9 00000000 c0b81650 ebfbe010 c047c4d7 ebfcdc20 c141d1d8
[    2.602238] 3ce0: c141d1ec 00000000 c0b68764 c03d61db 00000000 00000001 00000000 ecce3d30
[    2.610436] 3d00: c03d634d c141d194 00000000 c03d4f59 ecdd6ef4 ece1a11c 00000000 ebfcdc20
[    2.618634] 3d20: ebfbe110 ebfcdc54 00000001 c03d607b ebfcdc20 00000001 c0364531 ebfcdc28
[    2.626831] 3d40: ebfbe110 ebfcdc20 c0b81680 c03d58f3 00000000 ebfcdc28 ebfbe110 00000000
[    2.635029] 3d60: ebfcdc20 c03d451d ebfbe010 c0153da1 ebfcdc20 c141d194 ebfcdc00 ecce3dc4
[    2.643226] 3d80: ebfbe0c0 ebfcdc20 ebfcdc04 0000249f 0ee6b280 c047e1e3 eedc6d1c ebfbe0c0
[    2.651424] 3da0: eedc6d1c ebfbe0c0 ebfbe110 00000008 ecd4d810 c047e52f 00000004 00000000
[    2.659622] 3dc0: 00000000 39616370 00353535 00000000 00000000 00000000 00200000 00000000
[    2.667820] 3de0: ecce3dbc eedc6d1c 00000000 00000000 ebfbe0c0 ebfbe0c0 eedc6d1c c047e7e7
[    2.676017] 3e00: ebfbe010 00000000 ecd4d800 00000008 ecd4d810 c04800c9 c07aa900 ebfbe010
[    2.684215] 3e20: c13a47cc 00061a80 00000000 eedc69a0 ecd4d810 ecd4d800 00061a80 000003e8
[    2.692414] 3e40: ecce0040 ecd4d810 ecd4d810 c0b82350 fffffdfb c0b82350 00000000 00000007
[    2.700611] 3e60: efffcc40 c03d7695 c03d765d ecd4d810 c141d1d8 c141d1ec 00000000 c03d61db
[    2.708810] 3e80: 00000000 ecd4d810 c0b82350 ecd4d844 c03d62f9 00000000 c0939860 c03d6339
[    2.717007] 3ea0: 00000001 00000000 c0b82350 c03d4edf ecd61ebc ecd46998 60000013 c0b82350
[    2.725205] 3ec0: ebfc67c0 00000000 c0b6ff78 c03d5a7b c07aa900 c0b82350 c0b06ca0 c0b82350
[    2.733403] 3ee0: c0b06ca0 ebfc5640 c0925c39 c03d6afd 00000000 c0b06ca0 c0b06ca0 c01017f3
[    2.741601] 3f00: c0b0f560 ecce05a0 00000001 00000000 c13a4700 c015c271 00000000 c0136329
[    2.749799] 3f20: 00000008 efffccbf 000000a6 c0136329 c07a9360 c07f89f0 00000000 00000006
[    2.757998] 3f40: 00000006 c073c084 c0961bbc 00000000 c0962150 c0ba4000 c0ba4000 c0939858
[    2.766195] 3f60: 000000a6 00000007 efffcc40 c0900c17 00000006 00000006 00000000 c0900455
[    2.774393] 3f80: ecce3f98 c0ba4000 c05c162d 00000000 00000000 00000000 00000000 00000000
[    2.782591] 3fa0: 00000000 c05c1641 00000000 c01060dd 00000000 00000000 00000000 00000000
[    2.790789] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    2.798986] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 deadbeef deadbeef
[    2.807187] [<c038ac14>] (gpiochip_add) from [<c038e8bb>] (pca953x_probe+0x1e3/0x334)
[    2.815040] [<c038e8bb>] (pca953x_probe) from [<c047c4d7>] (i2c_device_probe+0x127/0x160)
[    2.823239] [<c047c4d7>] (i2c_device_probe) from [<c03d61db>] (driver_probe_device+0xe3/0x200)
[    2.831873] [<c03d61db>] (driver_probe_device) from [<c03d4f59>] (bus_for_each_drv+0x2d/0x60)
[    2.840420] [<c03d4f59>] (bus_for_each_drv) from [<c03d607b>] (__device_attach+0x67/0xb8)
[    2.848618] [<c03d607b>] (__device_attach) from [<c03d58f3>] (bus_probe_device+0x1f/0x64)
[    2.856815] [<c03d58f3>] (bus_probe_device) from [<c03d451d>] (device_add+0x2ad/0x404)
[    2.864753] [<c03d451d>] (device_add) from [<c047e1e3>] (i2c_new_device+0xf7/0x134)
[    2.872428] [<c047e1e3>] (i2c_new_device) from [<c047e52f>] (of_i2c_register_device+0xc7/0x128)
[    2.881149] [<c047e52f>] (of_i2c_register_device) from [<c047e7e7>] (i2c_register_adapter+0x1b7/0x284)
[    2.890479] [<c047e7e7>] (i2c_register_adapter) from [<c04800c9>] (mv64xxx_i2c_probe+0x345/0x404)
[    2.899375] [<c04800c9>] (mv64xxx_i2c_probe) from [<c03d7695>] (platform_drv_probe+0x39/0x7c)
[    2.907922] [<c03d7695>] (platform_drv_probe) from [<c03d61db>] (driver_probe_device+0xe3/0x200)
[    2.916729] [<c03d61db>] (driver_probe_device) from [<c03d6339>] (__driver_attach+0x41/0x54)
[    2.925188] [<c03d6339>] (__driver_attach) from [<c03d4edf>] (bus_for_each_dev+0x2f/0x64)
[    2.933386] [<c03d4edf>] (bus_for_each_dev) from [<c03d5a7b>] (bus_add_driver+0x8f/0x170)
[    2.941583] [<c03d5a7b>] (bus_add_driver) from [<c03d6afd>] (driver_register+0x5d/0x84)
[    2.949608] [<c03d6afd>] (driver_register) from [<c01017f3>] (do_one_initcall+0xdf/0x174)
[    2.957808] [<c01017f3>] (do_one_initcall) from [<c0900c17>] (kernel_init_freeable+0x1bb/0x228)
[    2.966531] [<c0900c17>] (kernel_init_freeable) from [<c05c1641>] (kernel_init+0x15/0xa8)
[    2.974730] [<c05c1641>] (kernel_init) from [<c01060dd>] (ret_from_fork+0x11/0x34)
[    2.982320] Code: bfb8 9e03 db06 e00b (6b5a) 8f1b
Copy link
Member

@aprayoga aprayoga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @Artox , does this changes related to freebsd support as you mentioned on separate email?
Because in Linux, even without defining the partition, SPI flash still accessible thru /dev/mtdblock0

@Artox
Copy link
Author

Artox commented Feb 1, 2018

@aprayoga No, not to FreeBSD.
I did not see /dev/mtdblock0 without defining at least one partition. That was with the armbian jessie image beginning of this year.

And I think it makes sense to actually reserve the area that U-Boot uses.

@aprayoga
Copy link
Member

aprayoga commented Feb 1, 2018

ah i see, it is because I remove it on kobol-io/build@860efdc
We planned to re-enable it again maybe in form of dt overlay or any other workaround.

yes, i agree we should reserved the area. Probably it's better to create separate partition between u-boot code/binaries and u-boot env data so updating u-boot won't overwrite env data

@Artox
Copy link
Author

Artox commented Feb 1, 2018

Sounds reasonable. But I don't know if there is a strong need. Seems to me purely like a design decision.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants