cvs commit: src/sys/dev/kbdmux kbdmux.c

Maksim Yevmenkin maksim.yevmenkin at gmail.com
Tue Sep 19 13:00:58 PDT 2006


On 9/19/06, Ruslan Ermilov <ru at freebsd.org> wrote:
> On Tue, Sep 19, 2006 at 12:36:38PM -0700, Maksim Yevmenkin wrote:
> > nope, same crash. the only thing that seems to help is to reverting
> > back to (int *) cast just like other keyboard drivers do. then it
> > works.
> >
> > i'm in the process of getting amd64 snapshot iso to try it on a couple
> > of boxes. if it will work then i'm going to back (int *) -> (intptr_t
> > *) changes introduced in rev 1.8.
> >
> Why?  amd64 and i386 are unaffected (both of my i386 and amd64 work
> with the committed revision), and on sparc64 we need to find a proper
> fix.  It cannot work properly with (intptr_t *) removed as demonstrated
> by the test program I sent to you.  Here it's again for reference:

ok, i'm officially confused now. from what i understood,

i386 is not affected (intptr_t *) casing, right?

(intptr_t *) casing causes problem with amd64, right?

sparc64 crashes with (intptr_t *) casting (tested locally)

now,

what i'm suggesting is to replace (intptr_t *) casting with (int *) as
it was before rev 1.8. i claim that after this change

i386 will not affected.

sparc64 will work and will not crash (tested locally)

amd64 should work (i think), but i'm in the process of getting amd64
iso to build a test box.

i tested (int *) casting on sparc64 with SETLED, SETREPEAT and it
works fine. i made sure that parameters passed via ioctl() are all
correct. i will do the same test on amd64 before committing.

also, like i said before, all other keyboard drivers, including
sunkbd(4) use (int *) cast and NOT (intptr_t *), and it seems to work
just fine.

while i'm interested what is going on here, i'd rather commit
something that is tested and known to work then wait. it will buy some
time to do the proper analysis and fix.

thanks,
max


More information about the cvs-src mailing list