Re: [RFC PATCH] arm64: dts: rockchip: Make preparations for per-RK3588-variant OPPs
From: Jonas Karlman
Date: Fri May 31 2024 - 07:28:11 EST
Hi Alexey and Dragan,
On 2024-05-30 21:31, Dragan Simic wrote:
> Hello Alexey,
>
[snip]
>>>>> That way we'll have no roadblocks if, at some point, we end up with
>>>>> having
>>>>> different OPPs defined for the RK3588 and the RK3588S variants. Or
>>>>> maybe
>>>>> even for the RK3582, which we don't know much about yet.
>>>>
>>>> Guess we'll deal with that one once we stumble upon an actual RK3582
>>>> board out in the wild and heading to the mainline kernel tree :)
>>>
>>> Of course, that was just an example for the future use.
>>
>> In fact, I've just discovered that Radxa has recently released Rock 5C
>> Lite which is based on RK3582, and starts at just $29 for the 1GB
>> version, making it interesting for tinkering. Especially given that
>> its GPU, one of the big-core clusters and one of the VPU cores seem to
>> be disabled in software (u-boot) rather than in hardware, which means
>> there is some chance that a particular SoC specimen would actually
>> have them in a working condition and possible to re-enable at no cost.
>> Ordered myself one to investigate :)
>
> Yes, I also saw the RK3582-based ROCK 5C Lite a couple of days ago. :)
> It seems that the disabled IP blocks are detected as defective during
> the manufacturing, which means that they might work correctly, or might
> actually misbehave. It seems similar to the way old three-core AMD
> Phenom II CPUs could sometimes be made quad-core.
>
I can confirm that the RK3582 include ip-state in OTP indicating
unusable cores, any unusable cpu core cannot be taken online and stalls
Linux kernel a few extra seconds during boot.
Started working on a patch for U-Boot to remove any broken cpu core
and/or cluster nodes, similar to what vendor U-Boot does, adopted to
work with a mainline DT for RK3588.
On one of my ROCK 5C Lite board one of the cpu cores is unusable, U-Boot
removes the related cpu cluster nodes. On another ROCK 5C Lite board one
rkvdec core is only marked unusable and all cpu cores can be taken
online, U-Boot does nothing in this case. Guessing we should apply
similar policy as vendor U-Boot and disable cores anyway.
Following commit contains early work-in-progress and some debug output.
https://github.com/Kwiboo/u-boot-rockchip/commit/8cdf606e616baa36751f3b4adcfaefc781126c8c
Booting ROCK 5C Lite boards using U-Boot generic-rk3588_defconfig:
ROCK 5C Lite v1.1 (RK3582 with 1 bad cpu core):
cpu-code: 3582
cpu-version: 08 10
data: fe 21
package: 11
specification: 01
ip-state: 10 00 00
bad-state: cpu core 4
ROCK 5C Lite v1.1 (RK3582 with 1 bad rkvdec core):
cpu-code: 3582
cpu-version: 08 00
data: fe 21
package: 11
specification: 01
ip-state: 00 80 00
bad-state: rkvdec core 1
Regards,
Jonas