Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/kern Sprinkle cold conditionals to make tc_ticktock befo...
details: https://anonhg.NetBSD.org/src/rev/66fb8294a6ab
branches: trunk
changeset: 320310:66fb8294a6ab
user: riastradh <riastradh%NetBSD.org@localhost>
date: Sat Jun 30 22:47:51 2018 +0000
description:
Sprinkle cold conditionals to make tc_ticktock before inittimecounter.
Enables Xen to boot again.
XXX Maybe we should have a tc_ticktock_cold instead or something so we
don't have to reach this far into the call graph.
diffstat:
sys/kern/kern_ntptime.c | 6 +++---
sys/kern/kern_tc.c | 14 ++++++++------
2 files changed, 11 insertions(+), 9 deletions(-)
diffs (83 lines):
diff -r 10b9550f5ada -r 66fb8294a6ab sys/kern/kern_ntptime.c
--- a/sys/kern/kern_ntptime.c Sat Jun 30 20:53:30 2018 +0000
+++ b/sys/kern/kern_ntptime.c Sat Jun 30 22:47:51 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_ntptime.c,v 1.57 2015/11/23 23:45:44 joerg Exp $ */
+/* $NetBSD: kern_ntptime.c,v 1.58 2018/06/30 22:47:51 riastradh Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
#include <sys/cdefs.h>
/* __FBSDID("$FreeBSD: src/sys/kern/kern_ntptime.c,v 1.59 2005/05/28 14:34:41 rwatson Exp $"); */
-__KERNEL_RCSID(0, "$NetBSD: kern_ntptime.c,v 1.57 2015/11/23 23:45:44 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_ntptime.c,v 1.58 2018/06/30 22:47:51 riastradh Exp $");
#ifdef _KERNEL_OPT
#include "opt_ntp.h"
@@ -418,7 +418,7 @@
int tickrate;
l_fp ftemp; /* 32/64-bit temporary */
- KASSERT(mutex_owned(&timecounter_lock));
+ KASSERT(__predict_false(cold) || mutex_owned(&timecounter_lock));
#ifdef NTP
diff -r 10b9550f5ada -r 66fb8294a6ab sys/kern/kern_tc.c
--- a/sys/kern/kern_tc.c Sat Jun 30 20:53:30 2018 +0000
+++ b/sys/kern/kern_tc.c Sat Jun 30 22:47:51 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_tc.c,v 1.49 2018/02/13 09:26:17 maxv Exp $ */
+/* $NetBSD: kern_tc.c,v 1.50 2018/06/30 22:47:51 riastradh Exp $ */
/*-
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -40,7 +40,7 @@
#include <sys/cdefs.h>
/* __FBSDID("$FreeBSD: src/sys/kern/kern_tc.c,v 1.166 2005/09/19 22:16:31 andre Exp $"); */
-__KERNEL_RCSID(0, "$NetBSD: kern_tc.c,v 1.49 2018/02/13 09:26:17 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_tc.c,v 1.50 2018/06/30 22:47:51 riastradh Exp $");
#ifdef _KERNEL_OPT
#include "opt_ntp.h"
@@ -572,7 +572,7 @@
{
struct timecounter *best, *tc;
- KASSERT(mutex_owned(&timecounter_lock));
+ KASSERT(__predict_false(cold) || mutex_owned(&timecounter_lock));
for (best = tc = timecounters; tc != NULL; tc = tc->tc_next) {
if (tc->tc_quality > best->tc_quality)
@@ -731,7 +731,7 @@
int i, s_update;
time_t t;
- KASSERT(mutex_owned(&timecounter_lock));
+ KASSERT(__predict_false(cold) || mutex_owned(&timecounter_lock));
s_update = 0;
@@ -1308,7 +1308,8 @@
if (++count < tc_tick)
return;
count = 0;
- mutex_spin_enter(&timecounter_lock);
+ if (__predict_true(!cold))
+ mutex_spin_enter(&timecounter_lock);
if (timecounter_bad != 0) {
/* An existing timecounter has gone bad, pick a new one. */
(void)atomic_swap_uint(&timecounter_bad, 0);
@@ -1317,7 +1318,8 @@
}
}
tc_windup();
- mutex_spin_exit(&timecounter_lock);
+ if (__predict_true(!cold))
+ mutex_spin_exit(&timecounter_lock);
}
void
Home |
Main Index |
Thread Index |
Old Index