Re: rndcontrol doesn't work on -STABLE?

From: Gregory Neil Shapiro (gshapiro_at_freebsd.org)
Date: 02/23/04

  • Next message: Mark Andrews: "Re: rndcontrol doesn't work on -STABLE?"
    Date: Sun, 22 Feb 2004 17:14:55 -0800
    To: "Marc G. Fournier" <scrappy@hub.org>
    
    

    > > I found this comment in src/sys/i386/i386/mem.c:
    > >
    > > * XXX the data is 16-bit due to a historical botch, so we use
    > > * magic 16's instead of ICU_LEN and can't support 24 interrupts
    > > * under SMP.
    >
    > Great ... another reason to move up ... but, short term, is there any
    > other way of doing this? user land daemon or something?

    It looks like all of the kernel interfaces for inserting random entropy
    aren't exported out of the kernel. I looked through the code involved
    and it certainly seems that the code can handle the additional APIC_IO
    interrupts with a few minor changes (which I haven't tried). Someone
    will probably point out an obvious reason why this won't work (like some
    of the low level assembly interrupt handling routines).

    Index: sys/i386/i386/mem.c
    ===================================================================
    RCS file: /home/ncvs/src/sys/i386/i386/mem.c,v
    retrieving revision 1.79.2.10
    diff -u -r1.79.2.10 mem.c
    --- sys/i386/i386/mem.c 9 Aug 2003 16:21:18 -0000 1.79.2.10
    +++ sys/i386/i386/mem.c 23 Feb 2004 01:03:44 -0000
    @@ -65,6 +65,7 @@
     #include <machine/psl.h>
     #include <machine/specialreg.h>
     #include <i386/isa/intr_machdep.h>
    +#include <i386/isa/icu.h>
     
     #include <vm/vm.h>
     #include <vm/pmap.h>
    @@ -96,7 +97,7 @@
             /* bmaj */ -1
     };
     
    -static struct random_softc random_softc[16];
    +static struct random_softc random_softc[ICU_LEN];
     static caddr_t zbuf;
     
     MALLOC_DEFINE(M_MEMDESC, "memdesc", "memory range descriptors");
    @@ -471,9 +472,6 @@
                     return (ENOTTY);
     
             /*
    - * XXX the data is 16-bit due to a historical botch, so we use
    - * magic 16's instead of ICU_LEN and can't support 24 interrupts
    - * under SMP.
              * Even inspecting the state is privileged, since it gives a hint
              * about how easily the randomness might be guessed.
              */
    @@ -489,7 +487,7 @@
                     error = suser(p);
                     if (error != 0)
                             return (error);
    - if (intr < 0 || intr >= 16)
    + if (intr < 0 || intr >= ICU_LEN)
                             return (EINVAL);
                     if (interrupt_allowed & interrupt_mask)
                             break;
    @@ -506,7 +504,7 @@
                     error = suser(p);
                     if (error != 0)
                             return (error);
    - if (intr < 0 || intr >= 16)
    + if (intr < 0 || intr >= ICU_LEN)
                             return (EINVAL);
                     if (!(interrupt_allowed & interrupt_mask))
                             break;
    Index: usr.sbin/rndcontrol/rndcontrol.c
    ===================================================================
    RCS file: /home/ncvs/src/usr.sbin/rndcontrol/Attic/rndcontrol.c,v
    retrieving revision 1.11.2.1
    diff -u -r1.11.2.1 rndcontrol.c
    --- usr.sbin/rndcontrol/rndcontrol.c 10 May 2000 02:04:44 -0000 1.11.2.1
    +++ usr.sbin/rndcontrol/rndcontrol.c 23 Feb 2004 01:03:45 -0000
    @@ -95,7 +95,7 @@
                                     return (1);
                             }
                             printf("%s: interrupts in use:", argv[0]);
    - for (i = 0; i < 16; i++)
    + for (i = 0; i < 24; i++)
                                     if (irq & (1 << i))
                                             printf(" %d", i);
                             printf("\n");
    _______________________________________________
    freebsd-stable@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-stable
    To unsubscribe, send any mail to "freebsd-stable-unsubscribe@freebsd.org"


  • Next message: Mark Andrews: "Re: rndcontrol doesn't work on -STABLE?"