What's new

Asus TinkerBoard

  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

However, for Armbian or TinkerOS - in the userland neither cryptodev or af_alg appears to be exposed -
Armbian kernel is mostly taken as-is from the work done by a Polish gent who appears like a Pine64 employee(?). The gent is putting in lots of effort and doing great work. But like anybody else it shares a fair amount of guess work. From DTS perspective, if it still doesn't work, check the clock/interrupt wiring against rk3288 TRM part 1.

there's likely some extra effort for userland stuff like OpenSSL to rebuild with the right options for cryptodev, or building the af_alg plugin and adding it to openssl.cnf

Forget about crypodev, let it rot. You've also need to enable AFALG in kernel. I didn't have the exact flag handy but search for AF/ALG in menuconfig. Once all these checked, your kernel should be ready.

my focus as the moment is more on the power domains.

Waiting to hear great news on power. Take your time!
 
Making some progress - bit of a performance hit at the moment, but have been clawing much of it back...

Current objective with the power/temp situation - pretty much concede that at 1.8GHz, the rk3288 is going to always be throttling, so the next step is to give it more range, as throttling is a passive cooler in it's own right.

Current Armbian has idle close to 70C, with the clocks for cpu/mem, along with governors for cpu and io - and 70C is where we start throttling, so the least amount of activity there is going to the wall already.

All the core clocks are still locked together on a hw basis, can control via SW, but it's global - still looking at docs and code to see if we can break that out into individual core clocks - might not be possible.

This is where Armbian is now - min clock is 600MHz, max clock is 1800MHz - this is all set in uboot..

Code:
  driver: cpufreq-dt
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 0 1 2 3
  maximum transition latency: 136 us.
  hardware limits: 600 MHz - 1.80 GHz
  available frequency steps: 600 MHz, 816 MHz, 1.01 GHz, 1.20 GHz, 1.42 GHz, 1.51 GHz, 1.61 GHz, 1.70 GHz, 1.80 GHz
  available cpufreq governors: conservative, userspace, powersave, ondemand, performance, schedutil

With the stock HS provided by Asus, it's not bad... but it's got a hysteresis all it's own - it's going to absorb heat from the CPU and radiate it out at a given rate, and with the Armbian clocks, min freq at 600 under load, the CPU is going to keep putting heat into it - the HS can only remove so much

Pretty much got all the performance back, some stability issues* at the moment using the Armbian uBoot and Device Tree, so time to set up an Ubuntu 16.04 image and do the kernel rebuild and put the stock Rockchip configuration items back in as Rockchip and Linaro pushed in a lot of updates back in June 2018 which Armbian might not have picked up...

* stability - yes, we're crashing threads, this happens when playing around with dvfs primitives​

While I'm at it, might as well check on the rest of the crypto stuff for cryptodev and AF ALG while I'm in there - then we can tweak openssl to turn on those engines for userland once I get the power/temp sorted...

Good resources of info on the rk3288
  • The ChromiumOS git - lot of good info there, as many ChromeBooks run this chip, board level stuff has been helpful, and might as well fast follow Google there
  • The Rockchip Wiki and Docs - the Wiki has the best info, and note that TinkerBoard is a fully supported platform now in mainline with 4.14.67, which the the kernel I'm working with here
  • The ARM ARM - the ARM Architecture Reference Manual, and there is a great tool for any ARM chip -ensure that it's current (can't share, but there's many copies on the web, so it's easy to get, just make sure it covers the core that's being worked with) - with rk3288, treat it like A12, as that's what it really is, the A17 intrinsics complicate things by assuming it can be big.LITTLE, which the rk3288 is not...
  • byte-unixbench - perhaps not the best benchmark these days, but it's still a good load tester to push a lot of work into a processor - look at the options in the .Run file to focus things and save time perhaps - but once there, if tweaking the make file, not looking to improve numbers in the benchmark, but see what impact changes on kernel/dtree/uboot can offer...
 
Last edited:
Pretty much got all the performance back, some stability issues* at the moment using the Armbian uBoot and Device Tree, so time to set up an Ubuntu 16.04 image and do the kernel rebuild and put the stock Rockchip configuration items back in as Rockchip and Linaro pushed in a lot of updates back in June 2018 which Armbian might not have picked up...

* stability - yes, we're crashing threads, this happens when playing around with dvfs primitives

Hokay - looks like the mmcblk driver, or perhaps the SD Card being used for test doesn't really care of the cfq IO governor - the cfq starts to die with heavy IO with either this card or the chip (or the board perhaps) - dig into this a bit more later...

I suspect it's the driver, not the sdcard, as when I throw constant 100 msec interrupts at the processor, the problem goes away, so it's timing related... and only happens on rockchip

Code:
[20341.804588] ------------[ cut here ]------------
[20341.804612] WARNING: CPU: 0 PID: 32753 at lib/iov_iter.c:695 copy_page_to_iter+0xbc/0x464
[20341.804617] Modules linked in: fuse snd_soc_hdmi_codec rk_crypto r8723bs(C) syscon_reboot_mode dw_wdt reboot_mode zram sch_fq_codel ip_tables autofs4 mali_kbase dw_hdmi_i2s_audio
[20341.804675] CPU: 0 PID: 32753 Comm: od Tainted: G         C      4.14.67-rockchip #88
[20341.804680] Hardware name: Rockchip (Device Tree)
[20341.804706] [<c0110994>] (unwind_backtrace) from [<c010c14c>] (show_stack+0x20/0x24)
[20341.804722] [<c010c14c>] (show_stack) from [<c0d5e330>] (dump_stack+0x78/0x94)
[20341.804738] [<c0d5e330>] (dump_stack) from [<c0120d18>] (__warn+0xf0/0x110)
[20341.804751] [<c0120d18>] (__warn) from [<c0120e08>] (warn_slowpath_null+0x30/0x38)
[20341.804762] [<c0120e08>] (warn_slowpath_null) from [<c068eb68>] (copy_page_to_iter+0xbc/0x464)
[20341.804777] [<c068eb68>] (copy_page_to_iter) from [<c02051d8>] (generic_file_read_iter+0x654/0x944)
[20341.804793] [<c02051d8>] (generic_file_read_iter) from [<c03168c4>] (ext4_file_read_iter+0x40/0x54)
[20341.804807] [<c03168c4>] (ext4_file_read_iter) from [<c025ed78>] (new_sync_read+0xdc/0xfc)
[20341.804819] [<c025ed78>] (new_sync_read) from [<c0260ea8>] (__vfs_read+0x3c/0x48)
[20341.804829] [<c0260ea8>] (__vfs_read) from [<c0260f54>] (vfs_read+0xa0/0x158)
[20341.804839] [<c0260f54>] (vfs_read) from [<c02613ec>] (SyS_read+0x50/0x88)
[20341.804853] [<c02613ec>] (SyS_read) from [<c0107880>] (ret_fast_syscall+0x0/0x54)
[20341.804860] ---[ end trace 95c87d1cf2534789 ]---

Figured I would toss everything at the problem, and sort out what doesn't work, this for now is one that didn't work, and it wasn't a lot of benefit anyways...

One of three choices there - noop, deadline, or cfq - so moving it back to the default for the moment, which is noop...

Code:
$ cat /sys/block/mmcblk0/queue/scheduler
[noop] deadline cfq

BTW - switching items there - one has to be root, not a user with sudo...

apologies to the rest of the forum - @kvic and I have gone down, perhaps, a rathole with a decent SBC family... if anything, one can more appreciate the 3rd party devs that release firmware - this is what they're going thru as well, and in a more constrained environment building on the OEM firmware.
 
Last edited:
Hokay - looks like the mmcblk driver, or perhaps the SD Card being used for test doesn't really care of the cfq IO governor - the cfq starts to die with heavy IO with either this card or the chip (or the board perhaps) - dig into this a bit more later...

Some interesting stuff.... debug effort on the mmcblk...

Telling the story for storage IO...

Screen Shot 2018-09-19 at 7.53.15 PM.png


But when we get to eMMC and the driver there - we have the mmcblk, and we have the mmc translation layer, and there is some timing dependency there with the device...

Screen Shot 2018-09-19 at 7.53.34 PM.png
 
Similar threads

Similar threads

Latest threads

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top