Another Test Run with Alternative pmap Implementation
Ulrich Grey
usenet at ulrich-grey.de
Wed Nov 26 11:58:43 UTC 2014
Hello,
yesterday I have made two testruns with your updated source tree.
In the FIRST run no debug options were activated. Only ARM_NEW_PMAP was added to the
kernel configuration.
The _build_ (make -j20) hung after about 6 to 7 hours here (see my email from 2014-11-22,
the same situation, I think):
--- cpp_helpers ---
c++ -O -pipe -I/usr/local/DEVEL/STREJDA/freebsd/contrib/atf -Qunused-arguments -Wno-c+
+11-extensions -L/usr/obj/usr/local/DEVEL/STREJDA/freebsd/tmp/usr/lib/private
-rpath /usr/lib/private -o cpp_helpers
cpp_helpers.o /usr/obj/usr/local/DEVEL/STREJDA/freebsd/lib/atf/libatf-c++/libatf-c+
+.so /usr/obj/usr/local/DEVEL/STREJDA/freebsd/lib/atf/libatf-c/libatf-c.so
I tried a second run with make -DNO_CLEAN buildworld, but that hung here:
===> share/termcap (all)
TERM=dumb TERMCAP=dumb: ex - /usr/local/DEVEL/STREJDA/freebsd/share/termcap/termcap.src
< /usr/local/DEVEL/STREJDA/freebsd/share/termcap/reorder
##
To prepare the SECOND run, I build a new kernel with debug options and ARM_NEW_PMAP:
# Debugging support. Always need this:
options KDB # Enable kernel debugger support.
# For minimum debugger support use KDB_TRACE, for interactive use DDB.
options KDB_TRACE # Print a stack trace for a panic.
options DDB # Support DDB.
# For full debugger support use this instead:
#options GDB # Support remote GDB.
# Other debugging options...
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
options ALT_BREAK_TO_DEBUGGER # Use <CR><tilde><ctrl-b> to enter debugger.
options DEBUG
options DEADLKRES # Enable the deadlock resolver
options INVARIANTS # Enable calls of extra sanity checking
options INVARIANT_SUPPORT # Extra sanity checks of internal structures,
# required by INVARIANTS
options WITNESS # Enable
# checks to detect deadlocks and cycles
options DIAGNOSTIC
#
I build a new kernel, checked all filesystems twice, deleted /usr/obj/* and cleaned the
source tree twice.
Then I did:
root at quad:/usr/src # make -j20 buildworld
the _build_ hung after ca. 8 - 9 hours. top -P on another terminal works, the system
works furthermore. I have waited some time, then breaked to debugger.
--- cpp_helpers ---
c++ -O -pipe -I/usr/local/DEVEL/STREJDA/freebsd/contrib/atf -Qunused-arguments -Wno-c+
+11-extensions -L/usr/obj/usr/local/DEVEL/STREJDA/freebsd/tmp/usr/lib/private
-rpath /usr/lib/private -o cpp_helpers
cpp_helpers.o /usr/obj/usr/local/DEVEL/STREJDA/freebsd/lib/atf/libatf-c++/libatf-c+
+.so /usr/obj/usr/local/DEVEL/STREJDA/freebsd/lib/atf/libatf-c/libatf-c.so
It is the same place, I think.
##
root at quad:/usr/src/sys/arm/include #
from file vm.h:
#define VM_MEMATTR_UNCACHEABLE VM_MEMATTR_NOCACHE /*name is misused by DMA */
regards
Ulrich
----------------------------------
On Wed, 26 Nov 2014 11:54:42 +0100
Svatopluk Kraus <onwahe at gmail.com> wrote:
> On Tue, Nov 25, 2014 at 10:54 PM, Ulrich Grey <usenet at ulrich-grey.de> wrote:
>
> > Hello,
> >
> > I updated the source tree from Svatopluk Kraus and build an Image (crochet,
> > wandboard-quad). The kernel is compiled with ARM_NEW_PMAP:
> >
> > root at quad:/usr/home/gwgpi # uname -a
> > FreeBSD quad 11.0-CURRENT FreeBSD 11.0-CURRENT #0 428e9d2(master)-dirty:
> > Tue Nov 25
> > 09:45:07 UTC 2014
> > root at quad:/usr/local/DEVEL/obj/usr/local/DEVEL/STREJDA/freebsd/sys/WANDBOARD-QUAD
> > arm
> >
> > root at quad:/usr/home/gwgpi # sysctl vm.pmap.
> > vm.pmap.pv_entry_max: 1745184
> > vm.pmap.shpgperproc: 200
> > vm.pmap.nkpt2pg: 32
> > vm.pmap.sp_enabled: 1
> > vm.pmap.pte1.demotions: 22
> > vm.pmap.pte1.mappings: 0
> > vm.pmap.pte1.p_failures: 122
> > vm.pmap.pte1.promotions: 38
> > vm.pmap.pv_entry_count: 12369
> > vm.pmap.pc_chunk_count: 43
> > vm.pmap.pc_chunk_allocs: 1981
> > vm.pmap.pc_chunk_frees: 1938
> > vm.pmap.pc_chunk_tryfail: 0
> > vm.pmap.pv_entry_frees: 417470
> > vm.pmap.pv_entry_allocs: 429839
> > vm.pmap.pv_entry_spare: 2079
> >
> > #
> > Then I did:
> > root at quad:/usr/src # make -j20 buildworld
> >
> > #
> > The build hangs here (not for the first time):
> >
> > --- cpp_helpers ---
> >
> > c++ -O -pipe -I/usr/local/DEVEL/STREJDA/freebsd/contrib/atf
> > -Qunused-arguments -Wno-c+
> > +11-extensions
> > -L/usr/obj/usr/local/DEVEL/STREJDA/freebsd/tmp/usr/lib/private
> > -rpath /usr/lib/private -o cpp_helpers
> > cpp_helpers.o
> > /usr/obj/usr/local/DEVEL/STREJDA/freebsd/lib/atf/libatf-c++/libatf-c+
> > +.so /usr/obj/usr/local/DEVEL/STREJDA/freebsd/lib/atf/libatf-c/libatf-c.so
> >
> > #
> > I did a break into the debugger and this is the output:
> > [...]
> >
>
> Please tell me:
> (0) Does system hang or only the build? Can you terminate the build when it
> hangs by ctrl c?
> (1) Invariants was on or off?
> (2) Memory attributes for DMA buffers was VM_MEMATTR_NOCACHE or
> VM_MEMATTR_SO?
> (3) How long does the build run before it hangs?
> (4) Does it really hang on same place?
>
> Can you run the test with invariants on if it was off and with memory
> attributes for DMA buffers VM_MEMATTR_SO if it was VM_MEMATTR_NOCACHE? If
> it helps, set invariants off and try again.
>
> It's always worth to try it with vm.pmap.sp_enabled=0.
>
> Considering debug terminal, after you type "show all pcpu", look at output
> and type "where #pid" for current threads on all cpus except idle ones. For
> example, in sent debug output, there is only one non idle current thread on
> cpu #3, so it would be "where 92540".
>
> Svatopluk Kraus
More information about the freebsd-arm
mailing list