[PATCH v2] ARM: remove name from machine_desc for DT platforms

Rob Herring robherring2 at gmail.com
Wed Nov 13 15:04:04 EST 2013


On 11/13/2013 01:21 PM, Olof Johansson wrote:
> On Wed, Nov 13, 2013 at 11:00 AM, Rob Herring <robherring2 at gmail.com> wrote:
>> On 11/11/2013 11:38 AM, Olof Johansson wrote:
>>> On Tue, Nov 05, 2013 at 08:34:56AM -0600, Rob Herring wrote:
>>>> On Mon, Nov 4, 2013 at 5:36 AM, Grant Likely <grant.likely at secretlab.ca> wrote:
>>>>> On Sun, Nov 3, 2013 at 8:50 PM, Rob Herring <robherring2 at gmail.com> wrote:
>>>>>> From: Rob Herring <rob.herring at calxeda.com>
>>>>>>
>>>>>> As part of the effort to ultimately remove struct machine_desc, the
>>>>>> machine name is not really needed. It is only used for /proc/cpuinfo
>>>>>> "Hardware" field. Get this information from the DT instead and remove
>>>>>> the name string in the machine descriptor for DT machine descriptors. The
>>>>>> model or machine compatible property from the DT is used instead.
>>>>>
>>>>> I've obviously missed some discussions because I wasn't aware of the
>>>>> plan to remove machine_desc. That's neither here not there, but for as
>>>>> long as the structure still exists it is really useful to discover
>>>>> which machine_desc the kernel chooses at boot time. If you're going to
>>>>> remove this, then at the very least I would embed the filename or
>>>>> something similar into the machine desc so it is available for
>>>>> debugging. It can go away when the structure is removed.
>>>>
>>>> It's a very long term goal to remove it completely, but it is now
>>>> optional for "simple" platforms with the default machine_desc and
>>>> default init ptrs. You might want to look at the patches and the WIP
>>>> branch I posted[1] which removes the machine_desc for highbank.
>>>> There's some core boilerplate I'd like your opinion on. Also, I'm sure
>>>> you are aware of the resistance to add a machine_desc to arm64, so I'm
>>>> looking at this from that perspective as well. I'm sure there will be
>>>> platforms which look very similar across arm and arm64.
>>>>
>>>> On boot, the model or compatible string from the DTB is printed out
>>>> (that change is actually in my DT arch clean-up series, not this
>>>> patch). This has made what is printed out on boot consistent across
>>>> arches using DT. There is no good reason for this to be arch specific.
>>>> Presumably the compatible string is unique and just as easily grepped
>>>> for in the kernel source as the machine_desc name is. Adding a
>>>> filename string here seems like useless bloat to me.
>>>
>>> I think I agree a bit with Grant's concern here.
>>>
>>> The compatible string is unique, but the machine descriptors might not
>>> be -- a given device tree might match two of them (one more generic,
>>> one more specific) -- it would be useful to know which one was used. Or,
>>> if you missed to enable the platform support for your board so it booted
>>> with the generic descriptor, but you still needed your own.
>>
>> I would push back on anyone having multiple machine descriptors for that
>> purpose.
>>
>>> Matching it back to which devicetree the kernel was booted with shouldn't be
>>> hard, I agree -- but knowing which machine entry was picked at boot time
>>> is still useful information.
>>
>> We need to separate what we print on boot vs. what is in /proc/cpuinfo.
>>
>> One issue I'm trying to solve here is customers complain that Midway
>> systems print "Calxeda Highbank" in /proc/cpuinfo. I don't think adding
>> a machine desc only for adding a string for Midway would be right. Also,
>> I'm close to removing the highbank machine descriptor altogether and
>> printing out "Generic DT" from the default machine desc is not
>> particularly useful. Do we at least have agreement that the "right"
>> thing to print in cpuinfo is the model or compatible from DT?
>>
>> What is printed on boot is already changed to be based on DT, but that
>> seems to be what you and Grant care about. Does something like this work
>> for you? This will print either "Machine model: model string (matched
>> compat)" or "Machine model: 1st compat str (matched compat)"
> 
> 
> PowerPC prints both platform (which is the equivalent to machine
> descriptor name on ARM), _and_ the /model property from the device
> tree:

IMHO, pointless architectural variation.

> chitra:~# cat /proc/cpuinfo
> processor : 0
> cpu : PA6T, altivec supported
> clock : 500.000000MHz
> revision : 1.2 (pvr 0090 0102)
> 
> processor : 1
> cpu : PA6T, altivec supported
> clock : 500.000000MHz
> revision : 1.2 (pvr 0090 0102)
> 
> timebase : 66666666
> platform : PA Semi PWRficient
> model : pasemi,chitra
> chitra:~#
> 
> (Not sure why we chose "pasemi,chitra" instead of a clear-text model
> name in this case :-)
> 
> Maybe that's the best of both worlds, to add a Model-equivalent entry
> in /proc/cpuinfo? Ideally we'd like to rename the "Hardware" one to
> "Platform", but since that's an ABI it'll be hard.
> 
> Perhaps it's better to use the /model string for Hardware:, and add a
> "Machine type" under it? In your case the machine type would
> (eventually) be "Generic DT", which should be acceptable.

I'm not inclined to expand cpuinfo and prior attempts to add more info
to cpuinfo like SoC name have failed. The differences between x86 and
arm cpuinfo already cause issues for arm. lscpu does not really work on arm.

I'd actually prefer If you really want more system info, then go read
/proc/device-tree.

Rob




More information about the linux-arm-kernel mailing list