From owner-cvs-src-old@FreeBSD.ORG Sun Mar 22 10:33:16 2009 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 775A51065672 for ; Sun, 22 Mar 2009 10:33:16 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4A0388FC16 for ; Sun, 22 Mar 2009 10:33:16 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n2MAXGjE002751 for ; Sun, 22 Mar 2009 10:33:16 GMT (envelope-from marius@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n2MAXGwo002750 for cvs-src-old@freebsd.org; Sun, 22 Mar 2009 10:33:16 GMT (envelope-from marius@repoman.freebsd.org) Message-Id: <200903221033.n2MAXGwo002750@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to marius@repoman.freebsd.org using -f From: Marius Strobl Date: Sun, 22 Mar 2009 10:33:10 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: RELENG_7 Subject: cvs commit: src/sys/sparc64/include smp.h src/sys/sparc64/sparc64 genassym.c mp_machdep.c X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Mar 2009 10:33:16 -0000 marius 2009-03-22 10:33:10 UTC FreeBSD src repository Modified files: (Branch: RELENG_7) sys/sparc64/include smp.h sys/sparc64/sparc64 genassym.c mp_machdep.c Log: SVN rev 190257 on 2009-03-22 10:33:10Z by marius MFC: r183142, r186395, 190106 - Newer firmware versions no longer provide SUNW,stop-self so just disable interrupts and loop forever instead. We still could use SUNW,stop-self if implemented but acording to comments in OpenBSD, E{2,4}50 tend to have fragile firmware versions which wedge when using the OFW test service, so given that we don't really depend on SUNW,stop-self just nuke it altogether instead of risking problems. - Hide all MP-related bits in underneath #ifdef SMP. - Inline ipi_all_but_self(9) and ipi_selected(9). We don't expose any additional bits but save a few cycles by doing so. - Remove ipi_all(9), which actually only called panic(9). It can't be implemented natively anyway and having it removed at least causes MI users to already fail when linking. - At least Fire V880 have a small hardware glitch which causes the reception of IDR_NACKs for CPUs we actually haven't tried to send an IPI to, even not as part of the initial try. According to tests this apparently can be safely ignored though, so just return if checking for the individual IDR_NACKs indicates no outstanding dispatch. Serializing the sending of IPIs between MD and MI code by the combined usage of smp_ipi_mtx makes no difference to this phenomenon. [1] - Provide relevant debugging bits already with the initial panic in case of problems with the IPI dispatch, which would have allowed to diagnose the above problem without a specially built kernel. - In case of cheetah_ipi_selected() base the delay we wait for other CPUs which also might want to dispatch IPIs on the total amount of CPUs instead of just the number of CPUs we let this CPU send IPIs to because in the worst case all CPUs also want to IPI us at the same time. - There's no need to wrap kdb_active in #ifdef KDB as it's always available. Reported and access for extensive tests provided by: beat [1] Revision Changes Path 1.22.2.3 +38 -6 src/sys/sparc64/include/smp.h 1.70.2.6 +6 -0 src/sys/sparc64/sparc64/genassym.c 1.36.2.9 +21 -57 src/sys/sparc64/sparc64/mp_machdep.c