martinayotte Posted August 19, 2016 Share Posted August 19, 2016 I've decided to give a try for a Mainline PineA64 Armbian Full Image build. Unfortenately, it seems that U-Boot is not in good shape, it stall right at the beginning without even trying to load kernel : HELLO! BOOT0 is starting! boot0 commit : 045061a8bb2580cb3fa02e301f52a015040c158f boot0 version : 4.0.0 set pll start set pll end rtc[0] value = 0x00000000 rtc[1] value = 0x00000000 rtc[2] value = 0x00000000 rtc[3] value = 0x00000000 rtc[4] value = 0x00000000 rtc[5] value = 0x00000000 DRAM driver version: V1.1 rsb_send_initseq: rsb clk 400Khz -> 3Mhz PMU: AXP81X ddr voltage = 1500 mv DRAM Type = 3 (2:DDR2,3:DDR3,6:LPDDR2,7:LPDDR3) DRAM clk = 672 MHz DRAM zq value: 003b3bbb DRAM single rank full DQ OK DRAM size = 2048 MB DRAM init ok dram size =2048 card boot number = 0, boot0 copy = 0 card no is 0 sdcard 0 line count 4 [mmc]: mmc driver ver 2015-05-08 20:06 [mmc]: sdc0 spd mode error, 2 [mmc]: Wrong media type 0x00000000 [mmc]: ***Try SD card 0*** [mmc]: HSSDR52/SDR25 4 bit [mmc]: 50000000 Hz [mmc]: 29664 MB [mmc]: ***SD/MMC 0 init OK!!!*** sdcard 0 init ok The size of uboot is 00068000. sum=ab1a8b8a src_sum=ab1a8b8a Succeed in loading uboot from sdmmc flash. boot0: start load other image boot0: Loading BL3-1 Loading file 0 at address 0x40000000,size 0x00000200 success boot0: Loading scp Loading file 2 at address 0x00040000,size 0x0000b200 success set arisc reset to de-assert state Ready to disable icache. Jump to secend Boot. NOTICE: BL3-1: Running in SRAM A2 (@0x44000) NOTICE: Configuring SPC Controller NOTICE: BL3-1: v1.0(debug):f11ecb4 NOTICE: BL3-1: Built : 14:12:39, Aug 19 2016 NOTICE: Configuring AXP PMIC NOTICE: PMIC: already configured for RSB NOTICE: PMIC: setup successful INFO: BL3-1: Initializing runtime services INFO: BL3-1: Preparing for EL3 exit to normal world INFO: BL3-1: Next image address: 0x4a000000, SPSR: 0x3c9 Any body can explain that stall ? Notes : the kernel build itself is Ok, because I've taken an already working Pine64 image and placed the new Kernel in it and it is booting and working properly. Link to comment Share on other sites More sharing options...
zador.blood.stained Posted August 19, 2016 Share Posted August 19, 2016 https://www.mail-archive.com/u-boot@lists.denx.de/msg221063.html Unfortunately it's a random error that can be fixed bypassed by resetting the board several times. Edit: this is the most "interesting" part The root cause of all these troubles is that on Allwinner A64 the SRAM C is apparently temporarily leased from the Cedar VE accelerator during the boot time. This was a relatively recent discovery: http://irclog.whitequark.org/linux-sunxi/2016-06-29#16862925; And an ugly part of it is that accessing SRAM C directly by the CPU is unreliable if AHB1 is clocked at 200MHz (default when running the Allwinner's Linux kernel). But the SRAM C works fine with AHB1 clocked at 100MHz (which is, for example the default clock speed in the FEL mode). So after AHB1 is reclocked (by boot0), nobody can safely access SRAM C anymore. Link to comment Share on other sites More sharing options...
martinayotte Posted August 19, 2016 Author Share Posted August 19, 2016 Hi Zador, Thanks for the info, unfortunately, the multiple reset doesn't work for me. Is it working for you ? According to the most "interesting" part, lowering the clock should be the way to go, but I haven't figured out where it should be done. EDIT : I found that, but this is already commited ... https://patchwork.ozlabs.org/patch/627962/ Link to comment Share on other sites More sharing options...
zador.blood.stained Posted August 19, 2016 Share Posted August 19, 2016 Thanks for the info, unfortunately, the multiple reset doesn't work for me. Is it working for you ? I managed to boot it once several days ago when I added mainline configuration for Pine64. According to the most "interesting" part, lowering the clock should be the way to go, but I haven't figured out where it should be done. AFAIK this fix is already present in latest u-boot, but either it's not working or something else prevents u-boot from starting up. But since reset worked for me, I'm assuming this is still the same issue. Link to comment Share on other sites More sharing options...
zador.blood.stained Posted August 19, 2016 Share Posted August 19, 2016 I found this discussion in IRC logs: https://irclog.whitequark.org/linux-sunxi/2016-07-29#17100522; Link to comment Share on other sites More sharing options...
martinayotte Posted August 20, 2016 Author Share Posted August 20, 2016 Hi Zador, Thanks for the hints, I've recompiled with having this patch Reverted : https://github.com/linux-sunxi/u-boot-sunxi/commit/1a83fb4a17d959d7b037999ab7ed7e62429abe34 U-Boot is now comes up, but with errors about ethernet, and fallback to prompt. It seems that it doesn't look at the boot.scr. It complains about "Unrecognized filesystem" but when prompt come up, I can easily do "ls mmc 0 /boot" ont the Ext4. It is like it doesn't know Ext4 until getting to the prompt. So, I've copy/paste boot.cmd commands, and it boot succesfully, but it is a tedious task on every reboot Here are the ethernet errors (BTW, all forums are different : how to make this output as spoiler ?) : HELLO! BOOT0 is starting! boot0 commit : 045061a8bb2580cb3fa02e301f52a015040c158f boot0 version : 4.0.0 set pll start set pll end rtc[0] value = 0x00000000 rtc[1] value = 0x00000000 rtc[2] value = 0x00000000 rtc[3] value = 0x00000000 rtc[4] value = 0x00000000 rtc[5] value = 0x00000000 DRAM driver version: V1.1 rsb_send_initseq: rsb clk 400Khz -> 3Mhz PMU: AXP81X ddr voltage = 1500 mv DRAM Type = 3 (2:DDR2,3:DDR3,6:LPDDR2,7:LPDDR3) DRAM clk = 672 MHz DRAM zq value: 003b3bbb DRAM single rank full DQ OK DRAM size = 2048 MB DRAM init ok dram size =2048 card boot number = 0, boot0 copy = 0 card no is 0 sdcard 0 line count 4 [mmc]: mmc driver ver 2015-05-08 20:06 [mmc]: sdc0 spd mode error, 2 [mmc]: Wrong media type 0x00000000 [mmc]: ***Try SD card 0*** [mmc]: HSSDR52/SDR25 4 bit [mmc]: 50000000 Hz [mmc]: 15193 MB [mmc]: ***SD/MMC 0 init OK!!!*** sdcard 0 init ok The size of uboot is 00068000. sum=064d2b8c src_sum=064d2b8c Succeed in loading uboot from sdmmc flash. boot0: start load other image boot0: Loading BL3-1 Loading file 0 at address 0x40000000,size 0x00000200 success boot0: Loading scp Loading file 2 at address 0x00040000,size 0x0000c200 success set arisc reset to de-assert state Ready to disable icache. Jump to secend Boot. NOTICE: BL3-1: Running in SRAM A2 (@0x44000) NOTICE: Configuring SPC Controller NOTICE: BL3-1: v1.0(debug):f11ecb4 NOTICE: BL3-1: Built : 20:02:40, Aug 19 2016 NOTICE: Configuring AXP PMIC NOTICE: PMIC: already configured for RSB NOTICE: PMIC: setup successful INFO: BL3-1: Initializing runtime services INFO: BL3-1: Preparing for EL3 exit to normal world INFO: BL3-1: Next image address: 0x4a000000, SPSR: 0x3c9 U-Boot 2016.09-rc1-g793fd86-dirty (Aug 19 2016 - 20:02:42 -0400) Allwinner Technology CPU: Allwinner A64 (SUN50I) Model: Pine64+ DRAM: 2 GiB MMC: SUNXI SD/MMC: 0 *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Net: phy interface7 Error: ethernet@01c30000 address not set. No ethernet found. starting USB... No controllers found Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... Found U-Boot script /boot/boot.scr 1574 bytes read in 175 ms (7.8 KiB/s) ## Executing script at 4fc00000 ext4load - load binary file from a Ext4 filesystem Usage: ext4load <interface> [<dev[:part]> [addr [filename [bytes [pos]]]]] - load binary file 'filename' from 'dev' on 'interface' to address 'addr' from ext4 filesystem ** Unrecognized filesystem type ** ext4load - load binary file from a Ext4 filesystem Usage: ext4load <interface> [<dev[:part]> [addr [filename [bytes [pos]]]]] - load binary file 'filename' from 'dev' on 'interface' to address 'addr' from ext4 filesystem ext4load - load binary file from a Ext4 filesystem Usage: ext4load <interface> [<dev[:part]> [addr [filename [bytes [pos]]]]] - load binary file 'filename' from 'dev' on 'interface' to address 'addr' from ext4 filesystem ** Unrecognized filesystem type ** ext4load - load binary file from a Ext4 filesystem Usage: ext4load <interface> [<dev[:part]> [addr [filename [bytes [pos]]]]] - load binary file 'filename' from 'dev' on 'interface' to address 'addr' from ext4 filesystem ext4load - load binary file from a Ext4 filesystem Usage: ext4load <interface> [<dev[:part]> [addr [filename [bytes [pos]]]]] - load binary file 'filename' from 'dev' on 'interface' to address 'addr' from ext4 filesystem ** Unrecognized filesystem type ** ext4load - load binary file from a Ext4 filesystem Usage: ext4load <interface> [<dev[:part]> [addr [filename [bytes [pos]]]]] - load binary file 'filename' from 'dev' on 'interface' to address 'addr' from ext4 filesystem ext4load - load binary file from a Ext4 filesystem Usage: ext4load <interface> [<dev[:part]> [addr [filename [bytes [pos]]]]] - load binary file 'filename' from 'dev' on 'interface' to address 'addr' from ext4 filesystem ** Unrecognized filesystem type ** ext4load - load binary file from a Ext4 filesystem Usage: ext4load <interface> [<dev[:part]> [addr [filename [bytes [pos]]]]] - load binary file 'filename' from 'dev' on 'interface' to address 'addr' from ext4 filesystem Bad Linux ARM64 Image magic! SCRIPT FAILED: continuing... starting USB... No controllers found USB is stopped. Please issue 'usb start' first. starting USB... No controllers found phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. missing environment variable: pxeuuid phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. missing environment variable: bootfile Retrieving file: pxelinux.cfg/00000000 phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. missing environment variable: bootfile Retrieving file: pxelinux.cfg/0000000 phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. missing environment variable: bootfile Retrieving file: pxelinux.cfg/000000 phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. missing environment variable: bootfile Retrieving file: pxelinux.cfg/00000 phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. missing environment variable: bootfile Retrieving file: pxelinux.cfg/0000 phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. missing environment variable: bootfile Retrieving file: pxelinux.cfg/000 phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. missing environment variable: bootfile Retrieving file: pxelinux.cfg/00 phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. missing environment variable: bootfile Retrieving file: pxelinux.cfg/0 phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. missing environment variable: bootfile Retrieving file: pxelinux.cfg/default-arm-sunxi phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. missing environment variable: bootfile Retrieving file: pxelinux.cfg/default-arm phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. missing environment variable: bootfile Retrieving file: pxelinux.cfg/default phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. Config file not found starting USB... No controllers found phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. No ethernet found. phy interface7 mdio_register: non unique device name 'ethernet@01c30000' Error: ethernet@01c30000 address not set. => <INTERRUPT> => => setenv bootargs "console=ttyS0,115200 root=/dev/mmcblk0p1 rootwait rootfstype=ext4 panic=10 consoleblank=0 enforcing=0 loglevel=7" => ext4load mmc 0 ${fdt_addr_r} /boot/dtb/allwinner/${fdtfile} 11661 bytes read in 243 ms (45.9 KiB/s) => ext4load mmc 0 ${ramdisk_addr_r} /boot/uInitrd 2910499 bytes read in 391 ms (7.1 MiB/s) => ext4load mmc 0 ${kernel_addr_r} /boot/Image 12530176 bytes read in 999 ms (12 MiB/s) => booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r} Those few manual copy/paste lines at the end making the boot process occurred successfully ... (on a SideNote, I'm seeing that my DT ConfigFS patches are not apply in this PineA64 flavor, I will have to dig that too ... Grrrr ! first investigation is that you disabled it 3 days ago : https://github.com/igorpecovnik/lib/commit/735dee1d4da978331ed018c948938b2473f9c90e Could tell me what was wrong there ? ... And please, send notice when such thing occurs ... ) Link to comment Share on other sites More sharing options...
zador.blood.stained Posted August 20, 2016 Share Posted August 20, 2016 Grrrr ! first investigation is that you disabled it 3 days ago : https://github.com/igorpecovnik/lib/commit/735dee1d4da978331ed018c948938b2473f9c90e Could tell me what was wrong there ? ... And please, send notice when such thing occurs ... ) Patches need to be updated for kernel 4.7, I disabled them since they weren't applied cleanly. Here are the ethernet errors (BTW, all forums are different : how to make this output as spoiler ?) : Wrap it in tags manually like this: [spoiler] long wall of text or quote or image or code block [/spoiler] I've recompiled with having this patch Reverted : https://github.com/linux-sunxi/u-boot-sunxi/commit/1a83fb4a17d959d7b037999ab7ed7e62429abe34 U-Boot is now comes up, but with errors about ethernet, and fallback to prompt. It seems that it doesn't look at the boot.scr. It complains about "Unrecognized filesystem" but when prompt come up, I can easily do "ls mmc 0 /boot" ont the Ext4. It is like it doesn't know Ext4 until getting to the prompt. So, I've copy/paste boot.cmd commands, and it boot succesfully, but it is a tedious task on every reboot I'll check (and fix if needed) my boot script later Link to comment Share on other sites More sharing options...
zador.blood.stained Posted August 20, 2016 Share Posted August 20, 2016 I just compiled an image for Pine64 dev target without u-boot patches. While it hanged here at first boot INFO: BL3-1: Initializing runtime services INFO: BL3-1: Preparing for EL3 exit to normal world INFO: BL3-1: Next image address: 0x4a000000, SPSR: 0x3c9 single press of reset button booted it further to u-boot prompt. And second boot attempt loaded u-boot after first try, without resetting the board. I missed address part in some ext4load/fatload commands while merging legacy and mainline boot scripts, should be fixed now. Link to comment Share on other sites More sharing options...
martinayotte Posted August 20, 2016 Author Share Posted August 20, 2016 Hi Zador, Patches need to be updated for kernel 4.7, I disabled them since they weren't applied cleanly. No worries, I've used the 4.8 version I've already done in sunxi-dev and it works, so I will submit PR in few minutes. The only thing that would be appreciated is to let authors know when such things are disactivated instead of leaving them figure out several days later single press of reset button booted it further to u-boot prompt. And second boot attempt loaded u-boot after first try, without resetting the board. It is still doesn't work for me as a workaround. But it is working is the SRAM Stack patch is unpatched. So, I've prepared the unpatch_sun50i_sram_stack_issue.patch for my next PR. I missed address part in some ext4load/fatload commands while merging legacy and mainline boot scripts, should be fixed now. Yes, thanks for that fix. No more need to manually type the boot.cmd in u-boot shell ... EDIT : PR done ! (and since Igor gave me github rights, PR merged ...) I've also added a /proc/cpuinfo patch to allow compatibility of RPi.GPIO-PineA64 against the older Longsleep kernel, by adding Processor/Hardware entries. Link to comment Share on other sites More sharing options...
mark.dunn Posted August 26, 2016 Share Posted August 26, 2016 Thanks for this, I have been banging my head on this problem for two days. My PINE64+ does not boot (tried apritzel's, DENX etc) all fail.. reverting the patch fixed it for me board: [A-64-DB-2G-rev B] Reverting the patch on git://git.denx.de/u-boot.git.. fixed u-boot hang but left "U-Boot is now comes up, but with errors about ethernet, and fallback to prompt." Link to comment Share on other sites More sharing options...
zador.blood.stained Posted August 26, 2016 Share Posted August 26, 2016 board: [A-64-DB-2G-rev B] Reverting the patch on git://git.denx.de/u-boot.git.. fixed u-boot hang but left "U-Boot is now comes up, but with errors about ethernet, and fallback to prompt." Do you have boot script and all files that it loads (kernel, DT and possibly initrd image)? U-boot will fall back to network boot (which won't work due to missing Ethernet support for A64) and then to command prompt in case boot script fails. Link to comment Share on other sites More sharing options...
Recommended Posts