i386_set_ioperm on FreeBSD 5.3
Tom Alsberg
alsbergt at cs.huji.ac.il
Sun Dec 26 23:56:41 PST 2004
Hi there.
I'm trying to use some code I wrote quite a while ago using Doug
White's FreeBSD IPMI code (kcs.c, send-kcs-command.c, etc.).
It still works as it did back then on FreeBSD 4.10. On FreeBSD 5.3 it
does not.
Problem seems to be, that i386_set_ioperm isn't doing what it should.
The program gets SIGBUS when doing outb, while it shouldn't.
I looked in /usr/src/sys/i386/i386/sys_machdep.c, not many changes
from 4.10 - all except one are additions that would return an error in
case of failure. One seems to be quite modest (struct change):
- if (p->p_addr->u_pcb.pcb_ext == 0)
- if ((error = i386_extend_pcb(p)) != 0)
+ if (td->td_pcb->pcb_ext == 0)
+ if ((error = i386_extend_pcb(td)) != 0)
Yet, clearly something fails on FreeBSD 5.3. I can confirm that this
is indeed the problem with a few-line program that will
i386_set_ioperm and then try to do outb. Any idea if i386_set_ioperm
broke somehow in 5.3? Haven't checked much, but it seems that the
data it is changing is not being used after all.
Thanks, any help appreciated,
-- Tom
--
Tom Alsberg - hacker (being the best description fitting this space)
Web page: http://www.cs.huji.ac.il/~alsbergt/
DISCLAIMER: The above message does not even necessarily represent what
my fingers have typed on the keyboard, save anything further.
More information about the freebsd-hackers
mailing list