Date: Sat, 7 Sep 2013 20:21:23 +0100 From: Mark R V Murray <mark@grondar.org> To: sbruno@freebsd.org Cc: "freebsd-current@freebsd.org" <freebsd-current@freebsd.org> Subject: Re: random(4) update causes mips compile fail | mips boot fail Message-ID: <C8A27508-4874-4DE1-A703-030925181097@grondar.org> In-Reply-To: <1378581133.1588.18.camel@localhost> References: <1378572186.1588.5.camel@localhost> <24DB010A-F374-491B-9203-FDDD7EA14A51@grondar.org> <1378579011.1588.16.camel@localhost> <9240BEF1-2791-4D58-A422-08AEF1CD306C@grondar.org> <1378579756.1588.17.camel@localhost> <D8D37885-C474-44C9-9ED2-E35D31CD87F8@grondar.org> <1378581133.1588.18.camel@localhost>
next in thread | previous in thread | raw e-mail | index | archive | help
--Apple-Mail=_6773E15C-F2D7-4499-9C6C-B6C799B2C96A Content-Type: multipart/mixed; boundary="Apple-Mail=_0B85307E-2FF8-44C6-9BCD-82B73B023BB7" --Apple-Mail=_0B85307E-2FF8-44C6-9BCD-82B73B023BB7 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii On 7 Sep 2013, at 20:12, Sean Bruno <sean_bruno@yahoo.com> wrote: > On Sat, 2013-09-07 at 19:56 +0100, Mark R V Murray wrote: >>> Ok. Right now, the mips kernel doesn't build unless I have random >> built >>> in, we were using it as a module previously. >> >> >> I'm testing a fix, but if you want to help out, please move the >> random_null_func() >> from randomdev.c to pseudo_rng.c in sys/dev/random. Patch enclosed. >> >> Thanks! >> >> M > > Closer: > > --- kernel.debug --- > linking kernel.debug > random_adaptors.o: In function `random_sysctl_active_adaptor_handler': > /home/sbruno/bsd/head/sys/dev/random/random_adaptors.c:(.text+0x2dc): > undefined reference to `random_get_active_adaptor' > /home/sbruno/bsd/head/sys/dev/random/random_adaptors.c:(.text+0x2dc): > relocation truncated to fit: R_MIPS_26 against > `random_get_active_adaptor' > *** [kernel.debug] Error code 1 Nearly there - I saw that too. Proposed fix enclosed. M -- Mark R V Murray --Apple-Mail=_0B85307E-2FF8-44C6-9BCD-82B73B023BB7 Content-Disposition: attachment; filename=rng_fix.patch Content-Type: application/octet-stream; name="rng_fix.patch" Content-Transfer-Encoding: 7bit Index: arm/arm/locore.S =================================================================== --- arm/arm/locore.S (revision 255362) +++ arm/arm/locore.S (working copy) @@ -84,6 +84,17 @@ mov ip, r2 /* Save meta data */ mov fp, r3 /* Future expantion */ +#if defined(CPU_CORTEXA) + /* Get this bit done early so we have some decent startup jitter in CCNT */ + /* Better to do access to these counters as some kind of device? */ + /* Set INTENS to 0 to block all counter interrupts */ + mov r7, #0x8000000F + mcr p15, 0, r7, c9, c14, 2 + /* Set PMNC[0] to 1 to enable CCNT, used in get_cyclecount() */ + mov r7, #1 + mcr p15, 0, r7, c9, c12, 0 +#endif + /* Make sure interrupts are disabled. */ mrs r7, cpsr orr r7, r7, #(I32_bit|F32_bit) Index: arm/include/cpu.h =================================================================== --- arm/include/cpu.h (revision 255362) +++ arm/include/cpu.h (working copy) @@ -13,11 +13,18 @@ static __inline uint64_t get_cyclecount(void) { +#if defined(CPU_CORTEXA) + uint32_t ccnt; + + /* Read CCNT. Darn; its only 32 bits. */ + __asm __volatile("mrc p15, 0, %0, c9, c13, 0": "=r" (ccnt)); + return ((uint64_t)ccnt); +#else struct bintime bt; binuptime(&bt); return ((uint64_t)bt.sec << 56 | bt.frac >> 8); - +#endif } #endif Index: dev/random/pseudo_rng.c =================================================================== --- dev/random/pseudo_rng.c (revision 255362) +++ dev/random/pseudo_rng.c (working copy) @@ -39,6 +39,12 @@ static struct mtx pseudo_random_block_mtx; +/* Used to fake out unused random calls in random_adaptor */ +void +random_null_func(void) +{ +} + static int pseudo_random_block_read(void *buf __unused, int c __unused) { Index: dev/random/random_adaptors.c =================================================================== --- dev/random/random_adaptors.c (revision 255362) +++ dev/random/random_adaptors.c (working copy) @@ -53,6 +53,8 @@ /* List for the dynamic sysctls */ static struct sysctl_ctx_list random_clist; +struct random_adaptor *random_adaptor; + MALLOC_DEFINE(M_RANDOM_ADAPTORS, "random_adaptors", "Random adaptors buffers"); int @@ -230,7 +232,7 @@ int error; name = NULL; - rsp = random_get_active_adaptor(); + rsp = random_adaptor; if (rsp != NULL) { sx_slock(&adaptors_lock); Index: dev/random/random_adaptors.h =================================================================== --- dev/random/random_adaptors.h (revision 255362) +++ dev/random/random_adaptors.h (working copy) @@ -41,6 +41,8 @@ int random_adaptor_register(const char *, struct random_adaptor *); void random_adaptor_choose(struct random_adaptor **); +extern struct random_adaptor *random_adaptor; + /* * random_adaptor's should be registered prior to * random module (SI_SUB_DRIVERS/SI_ORDER_MIDDLE) Index: dev/random/randomdev.c =================================================================== --- dev/random/randomdev.c (revision 255362) +++ dev/random/randomdev.c (working copy) @@ -72,27 +72,12 @@ .d_name = "random", }; -static struct random_adaptor *random_adaptor; static eventhandler_tag attach_tag; static int random_inited; - /* For use with make_dev(9)/destroy_dev(9). */ static struct cdev *random_dev; -/* Used to fake out unused random calls in random_adaptor */ -void -random_null_func(void) -{ -} - -struct random_adaptor * -random_get_active_adaptor(void) -{ - - return (random_adaptor); -} - /* ARGSUSED */ static int random_close(struct cdev *dev __unused, int flags, int fmt __unused, Index: dev/random/randomdev.h =================================================================== --- dev/random/randomdev.h (revision 255362) +++ dev/random/randomdev.h (working copy) @@ -53,4 +53,3 @@ extern void random_ident_hardware(struct random_adaptor **); extern void random_null_func(void); -struct random_adaptor *random_get_active_adaptor(void); --Apple-Mail=_0B85307E-2FF8-44C6-9BCD-82B73B023BB7 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_0B85307E-2FF8-44C6-9BCD-82B73B023BB7-- --Apple-Mail=_6773E15C-F2D7-4499-9C6C-B6C799B2C96A Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.20 (Darwin) Comment: GPGTools - http://gpgtools.org iQCVAwUBUit8s958vKOKE6LNAQouFgP8CUonQkFn7z4JUsPLKVjeij2LVWBGIKmu mK9MeKSV3K/qZg8Z2eGQyWDHFcp6enCrv4eTiTY2tYpw6wNA4VZGpOlMs0fqUrYK 5cqxzyoZzop8KTwkuoCF5DRBX0/ykvrQ/KMhEuuV7TTDEWbgbKuLeM7vbdFDXt9b elpIRkNSs4g= =mN42 -----END PGP SIGNATURE----- --Apple-Mail=_6773E15C-F2D7-4499-9C6C-B6C799B2C96A--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?C8A27508-4874-4DE1-A703-030925181097>