diff options
author | Nathan Whitehorn <nwhitehorn@FreeBSD.org> | 2011-05-31 15:11:43 +0000 |
---|---|---|
committer | Nathan Whitehorn <nwhitehorn@FreeBSD.org> | 2011-05-31 15:11:43 +0000 |
commit | d098f93019ca215163773034de59731e92c2e52e (patch) | |
tree | 02ea093d9809e917fd683ac9ee2c87d27aa454e6 /sys/net | |
parent | c9385548e7a298c7e3185a32dddaaba375cb4caa (diff) | |
download | src-d098f93019ca215163773034de59731e92c2e52e.tar.gz src-d098f93019ca215163773034de59731e92c2e52e.zip |
On multi-core, multi-threaded PPC systems, it is important that the threads
be brought up in the order they are enumerated in the device tree (in
particular, that thread 0 on each core be brought up first). The SLIST
through which we loop to start the CPUs has all of its entries added with
SLIST_INSERT_HEAD(), which means it is in reverse order of enumeration
and so AP startup would always fail in such situations (causing a machine
check or RTAS failure). Fix this by changing the SLIST into an STAILQ,
and inserting new CPUs at the end.
Reviewed by: jhb
Notes
Notes:
svn path=/head/; revision=222531
Diffstat (limited to 'sys/net')
-rw-r--r-- | sys/net/netisr.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/net/netisr.c b/sys/net/netisr.c index 67ec16014c32..127cf67706f4 100644 --- a/sys/net/netisr.c +++ b/sys/net/netisr.c @@ -1221,7 +1221,7 @@ netisr_start(void *arg) { struct pcpu *pc; - SLIST_FOREACH(pc, &cpuhead, pc_allcpu) { + STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) { if (nws_count >= netisr_maxthreads) break; /* XXXRW: Is skipping absent CPUs still required here? */ |