[coreboot] SuperI/O Access (Kernelspace)

Gregg Levine gregg.drwho8 at gmail.com
Fri Apr 15 01:49:41 CEST 2011

On Thu, Apr 14, 2011 at 7:13 PM, Jeremy Moles <cubicool at gmail.com> wrote:
> Hey guys, me again. :)
> So, my device is working great now that I can access the GPIO pins via
> userspace (using iotools w/ Tom Sylla's help) and can power on the
> device. However, I'd like to be able to toggle the power on via a kernel
> driver as well, but I'm having trouble accessing the same memory range
> from kernelspace.
> For example:
>        iotools io_read8 0xA00
> Will return the state of the first 5 GPIO pins. I see that iotools calls
> iopl() to be able to access this location from userspace.
> When I try to do the same thing in the kernel:
>        unsigned short  b;
>        unsigned short* ptr = (unsigned short*)(0xA00);
>        if(access_ok(VERIFY_READ, ptr, 8)) {
>                get_user(b, ptr);
> ...I immediately get a segfault. From what I've read and seen in other
> example code, I believe I'm doing this right. However, I may be making
> some wrong assumptions. I was just curious if anyone would be able to
> shed some light on the subject--perhaps I'm missing some virtual memory
> offset functions or similar...

I'm not a C programmer, I just make use of its strengths and some of
its weaknesses. That being stated, why don't you explain more about
what you're trying to achieve without of course releasing anything
considered a trade secret.

For example are you using the uncommitted GPIO lines to access a
feature on your device? And is your device returning something back to
your board? Come to that, what is your device doing? That's the big
thing I am curious about, again without doing that above.

For what I do with Linux, I am interested in making use of your ideas,
but again there is that limitation. Also is this being done on a board
that was built by your shop, or did it start out life as a reference

Gregg C Levine gregg.drwho8 at gmail.com
"This signature fought the Time Wars, time and again."

More information about the coreboot mailing list