lkml.org 
[lkml]   [2020]   [Aug]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 00/13] MIPS: Convert Ingenic to a generic board
Hi Maciej,

Le ven. 21 août 2020 à 20:23, Maciej W. Rozycki
<macro@linux-mips.org> a écrit :
> On Fri, 7 Aug 2020, Paul Cercueil wrote:
>
>> > I'm not too sure if remove "cpu-feature-overrides.h" will cause
>> some
>> > problems for X2000, because according to my current test on
>> X2000, I found
>> > that it is somewhat different from the SoCs using XBurst1 CPU
>> core, with the
>> > kernel source code provided by Ingenic, for example, we must
>> configure
>> > "#define cpu_has_tlbinv 1" in "cpu-feature-overrides.h" to make
>> the X2000
>> > work normally, otherwise the kernel will get stuck. And X2000's
>> interrupt
>> > controller has also been redesigned. If these differences make it
>> impossible
>> > to share code, should we set a subdirectory of "xburst" and
>> "xburst2" in
>> > "arch/mips/ingenic"? (I am just worried about this situation, so
>> far I have
>> > not been able to successfully run the mainline kernel on X2000).
>>
>> The <cpu-feature-overrides.h> is kind of a hack, to hardcode
>> settings in case
>> the CPU is not properly detected. The cpu-probe.c should be able to
>> auto-detect these settings, including the inverted TLB that the
>> X2000 has,
>> reading from the CPU config registers ("TLB INV" info should be in
>> config4).
>> Right now cpu_probe_ingenic() doesn't read config4 (not present on
>> older SoCs)
>> but that's trivial to add.
>
> FAOD <cpu-feature-overrides.h> is not a hack, but an optimisation
> measure
> so that features known to be hardwired for a given machine/CPU do not
> have
> to be dynamically queried every time referred. In some cases that
> results
> in large portions of code being optimised away by the compiler as
> well.

Fair enough. Bloat-o-meter reports about ~100 KiB saved when that file
is present. But we can't use it in a generic kernel, unfortunately.

> The hardcoded value for a feature defined in
> <cpu-feature-overrides.h>
> always has to be the same as one in the corresponding bit of the
> `options'
> member of `struct cpuinfo_mips', in this case MIPS_CPU_TLBINV.

In theory yes, in practice the CPU detection code is lagging behind...

Cheers,
-Paul


\
 
 \ /
  Last update: 2020-08-22 01:20    [W:0.244 / U:0.284 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site