Re: [PATCH v6] drivers/misc: Add Aspeed LPC control driver

From: Greg KH
Date: Thu Mar 16 2017 - 04:09:00 EST


On Fri, Feb 17, 2017 at 05:44:57PM +1100, Benjamin Herrenschmidt wrote:
> On Fri, 2017-02-17 at 14:28 +1100, Cyril Bur wrote:
> > In order to manage server systems, there is typically another
> > processor
> > known as a BMC (Baseboard Management Controller) which is responsible
> > for powering the server and other various elements, sometimes fans,
> > often the system flash.
>
> .../...
>
> > It is important to note that due to the way the Aspeed chip lets the
> > kernel configure the mapping between host LPC addresses and BMC ram
> > addresses the offset within the window must be a multiple of size.
> > Not doing so will fragment the accessible space rather than simply
> > moving 'zero' upwards. This is caused by the nature of HICR8 being a
> > mask and the way host LPC addresses are translated.
> >
> > Signed-off-by: Cyril Bur <cyrilbur@xxxxxxxxx>
>
> Reviewed-by: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>
>
> Greg, quick Q for you:
>
> We will need to also add a mechanism to poke at a few registers
> in the same LPC controllers from userspace.
>
> Mostly those are "scratch" registers that the BMC is supposed to set to
> specific values to indicates features it supports etc... (or to enable
> the host BIOS to run in some kind of verbose debug mode).
>
> Think of it as a communication channel between the BMC and the BIOS
> running on the host.
>
> The BMC userspace needs to set them to various platform specific
> values as appropriate for a given vendor/system (userspace policy
> from the BMC perspective) during boot and/or change them as the result
> of some user actions (enable debug mode) etc...
>
> The question here is read/write or sysfs files attached to the
> sysfs node ?
>
> The former means userspace needs to "seek" to the right magic
> offset to write to one of them which is non-trivial to do from
> simple shell scripts but is a more natural interface.
>
> It also means the owner/permissions of the /dev entry as set
> by uboot apply which can be nice.
>
> The latter can expose each register by its name which provides
> a nice way to echo in/out of them from a shell script.
>
> The drawback is that pretty much restricts access to root.
>
> What do you recommend ?

That wasn't a quick question :)

I really have no idea, sorry, try some things out and see what seems to
work.

greg k-h