Re: RFC: New event timers infrastructure

2010-06-20 Thread Alexander Motin
Brandon Gooch wrote:
 I've been testing these patches since the first iteration
 (et.20100606), and I haven't discovered any related issues.

Thank you!

 I am unclear about the number of interrupts I should expect from the
 hpet0 device (compared to the 99 from the rtc at 100Hz), so here is
 the output of vmstat -i with and without the et patches:
 
 With et patches:
 
 interrupt  total   rate
 irq1: atkbd0 369  3
 irq9: acpi0  961  8
 irq12: psm0 1002  9
 irq18: uhci5 140  1
 irq19: uhci2 ehci0* 4823 45
 irq20: hpet0   23893223
 irq23: uhci3 ehci111  0
 irq256: vgapci0 1031  9
 irq257: hdac0 14  0
 irq258: iwn04258 39
 irq259: bge0   1  0
 Total  36503341
 
 Without et patches:
 
 interrupt  total   rate
 irq1: atkbd0 449  2
 irq0: clk  17334 99
 irq9: acpi0 1701  9
 irq12: psm0 8784 50
 irq18: uhci5 188  1
 irq19: uhci2 ehci0* 5828 33
 irq23: uhci3 ehci111  0
 irq256: vgapci0 1896 10
 irq257: hdac0 14  0
 irq258: iwn0   29571169
 irq259: bge0   1  0
 Total  65777378
 
 And lastly, the values of the kern.eventtimer sysctls:
 
 $ sysctl kern.eventtimer
 kern.eventtimer.choice: HPET(450) HPET1(440) HPET2(440) HPET3(440) i8254(100)
 kern.eventtimer.timer2: HPET1
 kern.eventtimer.timer1: HPET
 kern.eventtimer.singlemul: 4

I don't see there neither LAPIC, nor RTC timer. I suppose you have
disabled them via device hints. I also suppose you've done it to left
with only 100Hz IRQs of i8254 timer. Now, with the patch, these two are
still disabled, but system got 4 more HPET timers. As they have higher
precedence, two of them were taken (HPET and HPET1). Number if
interrupts can be explained by the line:

Starting kernel event timers: HPET @ 100Hz, HPET1 @ 128Hz

As result, you've got 228Hz IRQs (which then redistributed to every
CPU). As your HPET timer doesn't support FSB interrupts, all it's timers
share same IRQ vector, seen as hpet0.

If you wish to get back to 100Hz IRQs as before, you may remove your
previous clock-disabling hints and add instead:

kern.eventtimer.timer1=HPET
kern.eventtimer.timer2=NONE
kern.eventtimer.singlemul=1

As result, you will have single timer, running at HZ rate. Instead of
HPET there you may choose any timer:
 LAPIC - it is per-CPU, so saves on IPI interrupts, supports one-shot
mode and so suitable for further tickless kernel, but it doesn't work in
C3 state;
 HPET{x} - on this hardware it can't be used as per-CPU, it supports
one-shot mode, but less suitable for further tickless kernel, as CPUs
can't run independently;
 i8254 - somewhat faster, as it doesn't needs status reading, but due to
being also a timecounter it can't be used in one-shot mode;
 RTC - somewhat slower, has limited set of supported frequencies (powers
of 2), only periodic mode.

-- 
Alexander Motin
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [CFT] SIFTR - Statistical Information For TCP Research: Uncle Lawrence needs YOU!

2010-06-20 Thread Lawrence Stewart

Hi Fabian,

On 06/20/10 03:58, Fabian Keil wrote:

Lawrence Stewartlstew...@freebsd.org  wrote:


On 06/13/10 18:12, Lawrence Stewart wrote:



The time has come to solicit some external testing for my SIFTR tool.
I'm hoping to commit it within a week or so unless problems are discovered.



I'm interested in all feedback and reports of success/failure, along
with details of the architecture tested and number of CPUs if you would
be so kind.


I got the following hand-transcribed panic maybe a second after
sysctl net.inet.siftr.enabled=1

Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
[...]
current process = 12 (swi4: clock)
[ thread pid 12 tid 16 ]
Stopped at  siftr_chkpkt+0xd0:  addq$0x1,0x8(%r14)
db  where
Tracing pid 12 tid 16 td 0xff00034037e0
siftr_chkpt() at siftr_chkpkt+0xd0
pfil_run_hooks() at pfil_run_hooks+0xb4
ip_output() at ip_output+0x382
tcp_output() tcp_output+0xa41
tcp_timer_rexmt() at tcp_timer_rexmt+0x251
softclock() at softclock+0x291
intr_event_execute_handlers() at intr_event_execute_handlers+0x66
ithread_loop at ithread_loop+0x8e
fork_exit() at fork_exit+0x112
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xff83ad30, rbp = 0 ---


So I've tracked down the line of code where the page fault is occurring:

if (dir == PFIL_IN)
ss-n_in++;
else
ss-n_out++;

ss is a DPCPU (dynamic per-cpu) variable used to keep a set of stats 
per-cpu and is initialised at the start of the function like so:


ss = DPCPU_PTR(ss);

So for ss to be NULL, that implies DPCPU_PTR() is returning NULL on your 
machine. I know very little about the inner workings of the DPCPU_* 
macros, but I'm pretty sure the way I use them in SIFTR is correct or at 
least as intended.


Could you please go ahead and retest using a GENERIC kernel and see if 
you can reproduce? There could be something in your custom kernel 
causing the offsets or linker set magic used by the DPCPU bits to break 
which in turn is triggering this panic in SIFTR.


Whether its your custom changes breaking DPCPU or DPCPU being fragile 
remains to be seen, but the good news for me is that it looks like SIFTR 
is off the hook :)


Cheers,
Lawrence
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [CFT] SIFTR - Statistical Information For TCP Research: Uncle Lawrence needs YOU!

2010-06-20 Thread Fabian Keil
Lawrence Stewart lstew...@freebsd.org wrote:

 On 06/20/10 03:58, Fabian Keil wrote:
  Lawrence Stewartlstew...@freebsd.org  wrote:
 
  On 06/13/10 18:12, Lawrence Stewart wrote:
 
  The time has come to solicit some external testing for my SIFTR tool.
  I'm hoping to commit it within a week or so unless problems are 
  discovered.
 
  I'm interested in all feedback and reports of success/failure, along
  with details of the architecture tested and number of CPUs if you would
  be so kind.
 
  I got the following hand-transcribed panic maybe a second after
  sysctl net.inet.siftr.enabled=1
 
  Fatal trap 12: page fault while in kernel mode
  cpuid = 1; apic id = 01
  [...]
  current process = 12 (swi4: clock)
  [ thread pid 12 tid 16 ]
  Stopped at  siftr_chkpkt+0xd0:  addq$0x1,0x8(%r14)
  db  where
  Tracing pid 12 tid 16 td 0xff00034037e0
  siftr_chkpt() at siftr_chkpkt+0xd0
  pfil_run_hooks() at pfil_run_hooks+0xb4
  ip_output() at ip_output+0x382
  tcp_output() tcp_output+0xa41
  tcp_timer_rexmt() at tcp_timer_rexmt+0x251
  softclock() at softclock+0x291
  intr_event_execute_handlers() at intr_event_execute_handlers+0x66
  ithread_loop at ithread_loop+0x8e
  fork_exit() at fork_exit+0x112
  fork_trampoline() at fork_trampoline+0xe
  --- trap 0, rip = 0, rsp = 0xff83ad30, rbp = 0 ---
 
 So I've tracked down the line of code where the page fault is occurring:
 
  if (dir == PFIL_IN)
  ss-n_in++;
  else
  ss-n_out++;
 
 ss is a DPCPU (dynamic per-cpu) variable used to keep a set of stats 
 per-cpu and is initialised at the start of the function like so:
 
  ss = DPCPU_PTR(ss);
 
 So for ss to be NULL, that implies DPCPU_PTR() is returning NULL on your 
 machine. I know very little about the inner workings of the DPCPU_* 
 macros, but I'm pretty sure the way I use them in SIFTR is correct or at 
 least as intended.

siftr_chkpkt() passes ss to siftr_chkreinject() before dereferencing
it itself. I think if ss was NULL, the panic should already occur in
siftr_chkreinject().

To be sure I added:

diff --git a/sys/netinet/siftr.c b/sys/netinet/siftr.c
index 8bc3498..b9fdfe4 100644
--- a/sys/netinet/siftr.c
+++ b/sys/netinet/siftr.c
@@ -788,6 +788,16 @@ siftr_chkpkt(void *arg, struct mbuf **m, struct ifnet 
*ifp, int dir,
if (siftr_chkreinject(*m, dir, ss))
goto ret;
 
+   if (ss == NULL) {
+   printf(ss is NULL);
+   ss = DPCPU_PTR(ss);
+   if (ss == NULL) {
+  printf(ss is still NULL);
+  goto ret;
+   }
+}
+
+
if (dir == PFIL_IN)
ss-n_in++;
else

which doesn't seem to affect the problem.

 Could you please go ahead and retest using a GENERIC kernel and see if 
 you can reproduce? There could be something in your custom kernel 
 causing the offsets or linker set magic used by the DPCPU bits to break 
 which in turn is triggering this panic in SIFTR.

I'll retry without pf first, and with GENERIC afterwards.

Fabian


signature.asc
Description: PGP signature


[head tinderbox] failure on arm/arm

2010-06-20 Thread FreeBSD Tinderbox
TB --- 2010-06-20 11:25:00 - tinderbox 2.6 running on freebsd-current.sentex.ca
TB --- 2010-06-20 11:25:00 - starting HEAD tinderbox run for arm/arm
TB --- 2010-06-20 11:25:00 - cleaning the object tree
TB --- 2010-06-20 11:25:06 - cvsupping the source tree
TB --- 2010-06-20 11:25:06 - /usr/bin/csup -z -r 3 -g -L 1 -h cvsup.sentex.ca 
/tinderbox/HEAD/arm/arm/supfile
TB --- 2010-06-20 11:25:47 - building world
TB --- 2010-06-20 11:25:47 - MAKEOBJDIRPREFIX=/obj
TB --- 2010-06-20 11:25:47 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
TB --- 2010-06-20 11:25:47 - TARGET=arm
TB --- 2010-06-20 11:25:47 - TARGET_ARCH=arm
TB --- 2010-06-20 11:25:47 - TZ=UTC
TB --- 2010-06-20 11:25:47 - __MAKE_CONF=/dev/null
TB --- 2010-06-20 11:25:47 - cd /src
TB --- 2010-06-20 11:25:47 - /usr/bin/make -B buildworld
 World build started on Sun Jun 20 11:25:48 UTC 2010
 Rebuilding the temporary build tree
 stage 1.1: legacy release compatibility shims
 stage 1.2: bootstrap tools
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3: cross tools
 stage 4.1: building includes
 stage 4.2: building libraries
[...]
cc -O -pipe  -I/obj/arm/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -Wsystem-headers -Werror -Wno-pointer-sign 
-Wno-unknown-pragmas -c dt_grammar.c
cc -O -pipe  -I/obj/arm/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -Wsystem-headers -Werror -Wno-pointer-sign 
-Wno-unknown-pragmas -c 
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_handle.c
cc -O -pipe  -I/obj/arm/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -Wsystem-headers -Werror -Wno-pointer-sign 
-Wno-unknown-pragmas -c 
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_ident.c
cc -O -pipe  -I/obj/arm/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -Wsystem-headers -Werror -Wno-pointer-sign 
-Wno-unknown-pragmas -c 
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_inttab.c
cc -O -pipe  -I/obj/arm/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -Wsystem-headers -Werror -Wno-pointer-sign 
-Wno-unknown-pragmas -c dt_lex.c
cc1: warnings being treated as errors
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_lex.l:
 In function 'yylex':

Re: [CFT] SIFTR - Statistical Information For TCP Research: Uncle Lawrence needs YOU!

2010-06-20 Thread Lawrence Stewart

On 06/20/10 21:15, Fabian Keil wrote:

Lawrence Stewartlstew...@freebsd.org  wrote:


On 06/20/10 03:58, Fabian Keil wrote:

Lawrence Stewartlstew...@freebsd.org   wrote:


On 06/13/10 18:12, Lawrence Stewart wrote:



The time has come to solicit some external testing for my SIFTR tool.
I'm hoping to commit it within a week or so unless problems are discovered.



I'm interested in all feedback and reports of success/failure, along
with details of the architecture tested and number of CPUs if you would
be so kind.


I got the following hand-transcribed panic maybe a second after
sysctl net.inet.siftr.enabled=1

Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
[...]
current process = 12 (swi4: clock)
[ thread pid 12 tid 16 ]
Stopped at  siftr_chkpkt+0xd0:  addq$0x1,0x8(%r14)
db   where
Tracing pid 12 tid 16 td 0xff00034037e0
siftr_chkpt() at siftr_chkpkt+0xd0
pfil_run_hooks() at pfil_run_hooks+0xb4
ip_output() at ip_output+0x382
tcp_output() tcp_output+0xa41
tcp_timer_rexmt() at tcp_timer_rexmt+0x251
softclock() at softclock+0x291
intr_event_execute_handlers() at intr_event_execute_handlers+0x66
ithread_loop at ithread_loop+0x8e
fork_exit() at fork_exit+0x112
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xff83ad30, rbp = 0 ---


So I've tracked down the line of code where the page fault is occurring:

  if (dir == PFIL_IN)
  ss-n_in++;
  else
  ss-n_out++;

ss is a DPCPU (dynamic per-cpu) variable used to keep a set of stats
per-cpu and is initialised at the start of the function like so:

  ss = DPCPU_PTR(ss);

So for ss to be NULL, that implies DPCPU_PTR() is returning NULL on your
machine. I know very little about the inner workings of the DPCPU_*
macros, but I'm pretty sure the way I use them in SIFTR is correct or at
least as intended.


siftr_chkpkt() passes ss to siftr_chkreinject() before dereferencing
it itself. I think if ss was NULL, the panic should already occur in
siftr_chkreinject().


Yes but siftr_chkreinject() only dereferences ss in the exceptional case 
of a malloc failure or duplicate pkt. It's unlikely either case happens 
for you and so wouldn't trigger the panic.



To be sure I added:

diff --git a/sys/netinet/siftr.c b/sys/netinet/siftr.c
index 8bc3498..b9fdfe4 100644
--- a/sys/netinet/siftr.c
+++ b/sys/netinet/siftr.c
@@ -788,6 +788,16 @@ siftr_chkpkt(void *arg, struct mbuf **m, struct ifnet 
*ifp, int dir,
 if (siftr_chkreinject(*m, dir, ss))
 goto ret;

+   if (ss == NULL) {
+   printf(ss is NULL);
+   ss = DPCPU_PTR(ss);
+   if (ss == NULL) {
+  printf(ss is still NULL);
+  goto ret;
+   }
+}
+
+
 if (dir == PFIL_IN)
 ss-n_in++;
 else

which doesn't seem to affect the problem.


As in it still panics and the ss is NULL message is not printed? I 
would have expected to at least see ss is NULL printed if my 
hypothesis was correct... hmm.


Perhaps the way I discovered the line number at which the panic occurred 
was wrong. I compiled SIFTR on my amd64 dev server with CFLAGS+=-g in 
the SIFTR Makefile to get debug symbols, ran objdump -Sd siftr.ko | vim 
-, searched for the instruction reported in the panic message i.e. 
addq $0x1,0x8(%r14) and then with a bit of trial and error, recompiled 
SIFTR with the line of code volatile int blah = 0; blah = 2; at 
various points in the function and looking at the change in the objdump 
output to pinpoint which line of C code corresponded with the addq 
instruction.


The volatile int blah = 0; blah = 2; compiles to movl 
$0x0,0xffd4(%rbp) followed immediately by movl 
$0x2,0xffd4(%rbp). When I put that code above the if (dir 
== PFIL_IN) statement I see the objdump output show the assembly code 
before the addq instruction and when I move it after the if statement 
the assembly code moves after the addq instruction.


Perhaps you could reproduce the above procedure and see if you identify 
the same point in the siftr_chkpkt function I did for the instruction 
referenced by the panic message?



Could you please go ahead and retest using a GENERIC kernel and see if
you can reproduce? There could be something in your custom kernel
causing the offsets or linker set magic used by the DPCPU bits to break
which in turn is triggering this panic in SIFTR.


I'll retry without pf first, and with GENERIC afterwards.


Sounds good, thanks.

Cheers,
Lawrence
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [OpenRD Ultimate] e1000phy(88E1149/88E1121) has a initialize issue

2010-06-20 Thread Norikatsu Shigemura
Hi Kristof.

On Sun, 13 Jun 2010 22:13:31 +0200
Kristof Provost kris...@sigsegv.be wrote:
  I have a OpenRD Ultimate, which has two GbE ports - if_mge(4).  But
  I couldn't use mge1 like following.  So I tried to investigate.
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
  - - - - - - -
  Jun 13 05:02:14 sidearms kernel: mge1: watchdog timeout
  Jun 13 05:02:14 sidearms kernel: mge1: Timeout on link-up
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
  - - - - - - -
 I believe the mge(4) driver incorrectly configures the PHY address for
 the second interface. Can you give the attached patch a try?

Thank you. I think so, too.  And, by FDT, I suggest following
patch.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
- - - - -
/* Tell the MAC where to find the PHY so autoneg works */
-   miisc = LIST_FIRST(sc-mii-mii_phys);
-   MGE_WRITE(sc, MGE_REG_PHYDEV, miisc-mii_phy);
+   MGE_WRITE(sc, MGE_REG_PHYDEV, sc-phyaddr);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
- - - - -

-- 
Norikatsu Shigemura n...@freebsd.org
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [OpenRD Ultimate] e1000phy(88E1149/88E1121) has a initialize issue

2010-06-20 Thread Norikatsu Shigemura
Hi yongari.

On Tue, 15 Jun 2010 11:09:23 -0700
Pyun YongHyeon pyu...@gmail.com wrote:
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
  - - - - - - -
  Jun 13 05:02:14 sidearms kernel: mge1: watchdog timeout
  Jun 13 05:02:14 sidearms kernel: mge1: Timeout on link-up
   ^
 This part looks like a bug in mge(4). Driver does not know how long
 it would take to get a valid link. Waiting for valid link in driver
 initialization does not work(e.g Starting controller without UTP
 cable may always fail on mge(4)). I think mge(4) should implement
 correct link state change handling.

Thanks for your pointed out.  I didn't notice.
I'll fix this issue like following on mge_start_locked().
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
- - - - -
-   if ((ifp-if_drv_flags  (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) !=
-   IFF_DRV_RUNNING)
+   if (IFM_SUBTYPE(sc-mii-mii_media_active) == IFM_NONE ||
+   (ifp-if_drv_flags  (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != 
IFF_DRV_RUNNING)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
- - - - -

  I found a initialize issue in e1000phy.c.
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
  - - - - - - -
  --- sys/dev/mii/e1000phy.c.orig 2010-05-01 10:17:15.282196000 +0900
  +++ sys/dev/mii/e1000phy.c  2010-06-13 16:19:46.616650536 +0900
  @@ -278,6 +278,7 @@
  case MII_MODEL_MARVELL_E1118:
  break;
  case MII_MODEL_MARVELL_E1116:
  +   case MII_MODEL_MARVELL_E1149:
  page = PHY_READ(sc, E1000_EADR);
  /* Select page 3, LED control register. */
  PHY_WRITE(sc, E1000_EADR, 3);
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
  - - - - - - -
  I confirmed OK on my environment, OpenRD Ultimate has a 88E1121(I
  saw it, physically):
 Once it was there but I removed it due to some other issues seen on
 Yukon Ultra. That part will program LED access so I guess it
 wouldn't affect normal network activity.

Hum..., like following?  At least, by current way, second NIC
doesn't link-up if link connected.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
- - - - -
case MII_MODEL_MARVELL_E1118:
+   case MII_MODEL_MARVELL_E1149:
break;
case MII_MODEL_MARVELL_E1116:
page = PHY_READ(sc, E1000_EADR);
/* Select page 3, LED control register. */
PHY_WRITE(sc, E1000_EADR, 3);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
- - - - -


 88E1116R might be RGMII variant of 88E1116. Because I don't have
 controller that has 88E1116R I didn't treat it as 88E1116. With
 that change could you use straight cable without help of MDI/MDI-X
 converter?

Sorry, I don't have 88E1116R machine, so I don't know.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [CFT] SIFTR - Statistical Information For TCP Research: Uncle Lawrence needs YOU!

2010-06-20 Thread Fabian Keil
Lawrence Stewart lstew...@freebsd.org wrote:

 On 06/20/10 21:15, Fabian Keil wrote:
  Lawrence Stewartlstew...@freebsd.org  wrote:
 
  On 06/20/10 03:58, Fabian Keil wrote:
  Lawrence Stewartlstew...@freebsd.org   wrote:
 
  On 06/13/10 18:12, Lawrence Stewart wrote:
 
  The time has come to solicit some external testing for my SIFTR tool.
  I'm hoping to commit it within a week or so unless problems are 
  discovered.
 
  I'm interested in all feedback and reports of success/failure, along
  with details of the architecture tested and number of CPUs if you would
  be so kind.
 
  I got the following hand-transcribed panic maybe a second after
  sysctl net.inet.siftr.enabled=1
 
  Fatal trap 12: page fault while in kernel mode
  cpuid = 1; apic id = 01
  [...]
  current process = 12 (swi4: clock)
  [ thread pid 12 tid 16 ]
  Stopped atsiftr_chkpkt+0xd0:  addq$0x1,0x8(%r14)
  db   where
  Tracing pid 12 tid 16 td 0xff00034037e0
  siftr_chkpt() at siftr_chkpkt+0xd0
  pfil_run_hooks() at pfil_run_hooks+0xb4
  ip_output() at ip_output+0x382
  tcp_output() tcp_output+0xa41
  tcp_timer_rexmt() at tcp_timer_rexmt+0x251
  softclock() at softclock+0x291
  intr_event_execute_handlers() at intr_event_execute_handlers+0x66
  ithread_loop at ithread_loop+0x8e
  fork_exit() at fork_exit+0x112
  fork_trampoline() at fork_trampoline+0xe
  --- trap 0, rip = 0, rsp = 0xff83ad30, rbp = 0 ---
 
  So I've tracked down the line of code where the page fault is occurring:
 
if (dir == PFIL_IN)
ss-n_in++;
else
ss-n_out++;
 
  ss is a DPCPU (dynamic per-cpu) variable used to keep a set of stats
  per-cpu and is initialised at the start of the function like so:
 
ss = DPCPU_PTR(ss);
 
  So for ss to be NULL, that implies DPCPU_PTR() is returning NULL on your
  machine. I know very little about the inner workings of the DPCPU_*
  macros, but I'm pretty sure the way I use them in SIFTR is correct or at
  least as intended.
 
  siftr_chkpkt() passes ss to siftr_chkreinject() before dereferencing
  it itself. I think if ss was NULL, the panic should already occur in
  siftr_chkreinject().
 
 Yes but siftr_chkreinject() only dereferences ss in the exceptional case 
 of a malloc failure or duplicate pkt. It's unlikely either case happens 
 for you and so wouldn't trigger the panic.
 
  To be sure I added:
 
  diff --git a/sys/netinet/siftr.c b/sys/netinet/siftr.c
  index 8bc3498..b9fdfe4 100644
  --- a/sys/netinet/siftr.c
  +++ b/sys/netinet/siftr.c
  @@ -788,6 +788,16 @@ siftr_chkpkt(void *arg, struct mbuf **m, struct ifnet 
  *ifp, int dir,
   if (siftr_chkreinject(*m, dir, ss))
   goto ret;
 
  +   if (ss == NULL) {
  +   printf(ss is NULL);
  +   ss = DPCPU_PTR(ss);
  +   if (ss == NULL) {
  +  printf(ss is still NULL);
  +  goto ret;
  +   }
  +}
  +
  +
   if (dir == PFIL_IN)
   ss-n_in++;
   else
 
  which doesn't seem to affect the problem.
 
 As in it still panics and the ss is NULL message is not printed? I 
 would have expected to at least see ss is NULL printed if my 
 hypothesis was correct... hmm.

Yes, it still panics, but no message is printed.

 Perhaps the way I discovered the line number at which the panic occurred 
 was wrong. I compiled SIFTR on my amd64 dev server with CFLAGS+=-g in 
 the SIFTR Makefile to get debug symbols, ran objdump -Sd siftr.ko | vim 
 -, searched for the instruction reported in the panic message i.e. 
 addq $0x1,0x8(%r14) and then with a bit of trial and error, recompiled 
 SIFTR with the line of code volatile int blah = 0; blah = 2; at 
 various points in the function and looking at the change in the objdump 
 output to pinpoint which line of C code corresponded with the addq 
 instruction.
 
 The volatile int blah = 0; blah = 2; compiles to movl 
 $0x0,0xffd4(%rbp) followed immediately by movl 
 $0x2,0xffd4(%rbp). When I put that code above the if (dir 
 == PFIL_IN) statement I see the objdump output show the assembly code 
 before the addq instruction and when I move it after the if statement 
 the assembly code moves after the addq instruction.

That's a neat trick.
 
 Perhaps you could reproduce the above procedure and see if you identify 
 the same point in the siftr_chkpkt function I did for the instruction 
 referenced by the panic message?

I do. Using:

diff --git a/sys/netinet/siftr.c b/sys/netinet/siftr.c
index b9fdfe4..fc6bd9a 100644
--- a/sys/netinet/siftr.c
+++ b/sys/netinet/siftr.c
@@ -797,12 +797,15 @@ siftr_chkpkt(void *arg, struct mbuf **m, struct ifnet 
*ifp, int dir,
}
 }
 
+volatile int blah = 0; blah = 2;
 
if (dir == PFIL_IN)
ss-n_in++;
else
ss-n_out++;
 
+volatile int foo = 0; foo = 3;
+
/*
 * Create a tcphdr 

Re: [CFT] SIFTR - Statistical Information For TCP Research: Uncle Lawrence needs YOU!

2010-06-20 Thread Lawrence Stewart

On 06/20/10 22:28, Fabian Keil wrote:

Lawrence Stewartlstew...@freebsd.org  wrote:


On 06/20/10 21:15, Fabian Keil wrote:

Lawrence Stewartlstew...@freebsd.org   wrote:


On 06/20/10 03:58, Fabian Keil wrote:

Lawrence Stewartlstew...@freebsd.orgwrote:


On 06/13/10 18:12, Lawrence Stewart wrote:



The time has come to solicit some external testing for my SIFTR tool.
I'm hoping to commit it within a week or so unless problems are discovered.



I'm interested in all feedback and reports of success/failure, along
with details of the architecture tested and number of CPUs if you would
be so kind.


I got the following hand-transcribed panic maybe a second after
sysctl net.inet.siftr.enabled=1

Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
[...]
current process = 12 (swi4: clock)
[ thread pid 12 tid 16 ]
Stopped at  siftr_chkpkt+0xd0:  addq$0x1,0x8(%r14)
dbwhere
Tracing pid 12 tid 16 td 0xff00034037e0
siftr_chkpt() at siftr_chkpkt+0xd0
pfil_run_hooks() at pfil_run_hooks+0xb4
ip_output() at ip_output+0x382
tcp_output() tcp_output+0xa41
tcp_timer_rexmt() at tcp_timer_rexmt+0x251
softclock() at softclock+0x291
intr_event_execute_handlers() at intr_event_execute_handlers+0x66
ithread_loop at ithread_loop+0x8e
fork_exit() at fork_exit+0x112
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xff83ad30, rbp = 0 ---


So I've tracked down the line of code where the page fault is occurring:

   if (dir == PFIL_IN)
   ss-n_in++;
   else
   ss-n_out++;

ss is a DPCPU (dynamic per-cpu) variable used to keep a set of stats
per-cpu and is initialised at the start of the function like so:

   ss = DPCPU_PTR(ss);

So for ss to be NULL, that implies DPCPU_PTR() is returning NULL on your
machine. I know very little about the inner workings of the DPCPU_*
macros, but I'm pretty sure the way I use them in SIFTR is correct or at
least as intended.


siftr_chkpkt() passes ss to siftr_chkreinject() before dereferencing
it itself. I think if ss was NULL, the panic should already occur in
siftr_chkreinject().


Yes but siftr_chkreinject() only dereferences ss in the exceptional case
of a malloc failure or duplicate pkt. It's unlikely either case happens
for you and so wouldn't trigger the panic.


To be sure I added:

diff --git a/sys/netinet/siftr.c b/sys/netinet/siftr.c
index 8bc3498..b9fdfe4 100644
--- a/sys/netinet/siftr.c
+++ b/sys/netinet/siftr.c
@@ -788,6 +788,16 @@ siftr_chkpkt(void *arg, struct mbuf **m, struct ifnet 
*ifp, int dir,
  if (siftr_chkreinject(*m, dir, ss))
  goto ret;

+   if (ss == NULL) {
+   printf(ss is NULL);
+   ss = DPCPU_PTR(ss);
+   if (ss == NULL) {
+  printf(ss is still NULL);
+  goto ret;
+   }
+}
+
+
  if (dir == PFIL_IN)
  ss-n_in++;
  else

which doesn't seem to affect the problem.


As in it still panics and the ss is NULL message is not printed? I
would have expected to at least see ss is NULL printed if my
hypothesis was correct... hmm.


Yes, it still panics, but no message is printed.


It was just pointed out to me that ss doesn't have to be NULL in order 
to cause the page fault (duh). It could also just be a garbage ptr which 
is why your print statement isn't firing.


Can you trigger the panic again and look for some information along the 
lines of fault virtual address = ... as part of the panic info. 
Knowing the faulting address would be useful and may help further diagnosis.



Perhaps the way I discovered the line number at which the panic occurred
was wrong. I compiled SIFTR on my amd64 dev server with CFLAGS+=-g in
the SIFTR Makefile to get debug symbols, ran objdump -Sd siftr.ko | vim
-, searched for the instruction reported in the panic message i.e.
addq $0x1,0x8(%r14) and then with a bit of trial and error, recompiled
SIFTR with the line of code volatile int blah = 0; blah = 2; at
various points in the function and looking at the change in the objdump
output to pinpoint which line of C code corresponded with the addq
instruction.

The volatile int blah = 0; blah = 2; compiles to movl
$0x0,0xffd4(%rbp) followed immediately by movl
$0x2,0xffd4(%rbp). When I put that code above the if (dir
== PFIL_IN) statement I see the objdump output show the assembly code
before the addq instruction and when I move it after the if statement
the assembly code moves after the addq instruction.


That's a neat trick.


Indeed, and I thank phk@ for suggesting it to me.


Perhaps you could reproduce the above procedure and see if you identify
the same point in the siftr_chkpkt function I did for the instruction
referenced by the panic message?


I do. Using:

diff --git a/sys/netinet/siftr.c b/sys/netinet/siftr.c
index b9fdfe4..fc6bd9a 100644
--- a/sys/netinet/siftr.c
+++ b/sys/netinet/siftr.c
@@ -797,12 +797,15 

Re: [OpenRD Ultimate] e1000phy(88E1149/88E1121) has a initialize issue

2010-06-20 Thread Kristof Provost
On 2010-06-20 21:03:51 (+0900), Norikatsu Shigemura n...@freebsd.org wrote:
 On Sun, 13 Jun 2010 22:13:31 +0200
 Kristof Provost kris...@sigsegv.be wrote:
 I have a OpenRD Ultimate, which has two GbE ports - if_mge(4).  But
 I couldn't use mge1 like following.  So I tried to investigate.
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
   - - - - - - - -
   Jun 13 05:02:14 sidearms kernel: mge1: watchdog timeout
   Jun 13 05:02:14 sidearms kernel: mge1: Timeout on link-up
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
   - - - - - - - -
  I believe the mge(4) driver incorrectly configures the PHY address for
  the second interface. Can you give the attached patch a try?
 
   Thank you. I think so, too.  And, by FDT, I suggest following
   patch.
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 - - - - - -
 /* Tell the MAC where to find the PHY so autoneg works */
 -   miisc = LIST_FIRST(sc-mii-mii_phys);
 -   MGE_WRITE(sc, MGE_REG_PHYDEV, miisc-mii_phy);
 +   MGE_WRITE(sc, MGE_REG_PHYDEV, sc-phyaddr);
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 - - - - - -
 
I think that's correct, but I haven't been able to test it on my board
yet. Does this work for you on a board with two GbE ports? If so I'll
try to get someone to commit it.

Regards,
Kristof

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [CFT] SIFTR - Statistical Information For TCP Research: Uncle Lawrence needs YOU!

2010-06-20 Thread Fabian Keil
Lawrence Stewart lstew...@freebsd.org wrote:

 On 06/20/10 22:28, Fabian Keil wrote:
  Lawrence Stewartlstew...@freebsd.org  wrote:
 
  On 06/20/10 21:15, Fabian Keil wrote:
  Lawrence Stewartlstew...@freebsd.org   wrote:
 
  On 06/20/10 03:58, Fabian Keil wrote:
  Lawrence Stewartlstew...@freebsd.orgwrote:
 
  On 06/13/10 18:12, Lawrence Stewart wrote:
 
  The time has come to solicit some external testing for my SIFTR tool.
  I'm hoping to commit it within a week or so unless problems are 
  discovered.
 
  I'm interested in all feedback and reports of success/failure, along
  with details of the architecture tested and number of CPUs if you 
  would
  be so kind.
 
  I got the following hand-transcribed panic maybe a second after
  sysctl net.inet.siftr.enabled=1
 
  Fatal trap 12: page fault while in kernel mode
  cpuid = 1; apic id = 01
  [...]
  current process = 12 (swi4: clock)
  [ thread pid 12 tid 16 ]
  Stopped at  siftr_chkpkt+0xd0:  addq$0x1,0x8(%r14)
  dbwhere
  Tracing pid 12 tid 16 td 0xff00034037e0
  siftr_chkpt() at siftr_chkpkt+0xd0
  pfil_run_hooks() at pfil_run_hooks+0xb4
  ip_output() at ip_output+0x382
  tcp_output() tcp_output+0xa41
  tcp_timer_rexmt() at tcp_timer_rexmt+0x251
  softclock() at softclock+0x291
  intr_event_execute_handlers() at intr_event_execute_handlers+0x66
  ithread_loop at ithread_loop+0x8e
  fork_exit() at fork_exit+0x112
  fork_trampoline() at fork_trampoline+0xe
  --- trap 0, rip = 0, rsp = 0xff83ad30, rbp = 0 ---
 
  So I've tracked down the line of code where the page fault is occurring:
 
 if (dir == PFIL_IN)
 ss-n_in++;
 else
 ss-n_out++;
 
  ss is a DPCPU (dynamic per-cpu) variable used to keep a set of stats
  per-cpu and is initialised at the start of the function like so:
 
 ss = DPCPU_PTR(ss);
 
  So for ss to be NULL, that implies DPCPU_PTR() is returning NULL on your
  machine. I know very little about the inner workings of the DPCPU_*
  macros, but I'm pretty sure the way I use them in SIFTR is correct or at
  least as intended.
 
  siftr_chkpkt() passes ss to siftr_chkreinject() before dereferencing
  it itself. I think if ss was NULL, the panic should already occur in
  siftr_chkreinject().
 
  Yes but siftr_chkreinject() only dereferences ss in the exceptional case
  of a malloc failure or duplicate pkt. It's unlikely either case happens
  for you and so wouldn't trigger the panic.
 
  To be sure I added:
 
  diff --git a/sys/netinet/siftr.c b/sys/netinet/siftr.c
  index 8bc3498..b9fdfe4 100644
  --- a/sys/netinet/siftr.c
  +++ b/sys/netinet/siftr.c
  @@ -788,6 +788,16 @@ siftr_chkpkt(void *arg, struct mbuf **m, struct 
  ifnet *ifp, int dir,
if (siftr_chkreinject(*m, dir, ss))
goto ret;
 
  +   if (ss == NULL) {
  +   printf(ss is NULL);
  +   ss = DPCPU_PTR(ss);
  +   if (ss == NULL) {
  +  printf(ss is still NULL);
  +  goto ret;
  +   }
  +}
  +
  +
if (dir == PFIL_IN)
ss-n_in++;
else
 
  which doesn't seem to affect the problem.
 
  As in it still panics and the ss is NULL message is not printed? I
  would have expected to at least see ss is NULL printed if my
  hypothesis was correct... hmm.
 
  Yes, it still panics, but no message is printed.
 
 It was just pointed out to me that ss doesn't have to be NULL in order 
 to cause the page fault (duh). It could also just be a garbage ptr which 
 is why your print statement isn't firing.
 
 Can you trigger the panic again and look for some information along the 
 lines of fault virtual address = ... as part of the panic info. 
 Knowing the faulting address would be useful and may help further diagnosis.

Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
fault virtual address   = 0xff7f808f9de8
fault code  = supervisor write data, page not present
instruction pointer = 0x20:0x8241f800
stack pointer   = 0x28:0xff83a7d0
frame pointer   = 0x28:0xff83a840
code segment= base 0x0, limit 0xf, type 0x1b
= DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags= interrupt enabled, resume, IOPL = 0
current process = 12 (swi4: clock)
[ thread pid 12 tid 16 ]
Stopped at  siftr_chkpkt+0xd0:  addq$0x1,0x8(%r14)
db where  
Tracing pid 12 tid 16 td 0xff00034037e0
siftr_chkpt() at siftr_chkpkt+0xd0
pfil_run_hooks() at pfil_run_hooks+0xb4
ip_output() at ip_output+0x382
tcp_output() tcp_output+0xa41
tcp_timer_rexmt() at tcp_timer_rexmt+0x251
softclock() at softclock+0x291
intr_event_execute_handlers() at intr_event_execute_handlers+0x66
ithread_loop at ithread_loop+0x8e
fork_exit() at fork_exit+0x112
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xff83ad30, rbp = 0 ---

  Could 

Re: [CFT] SIFTR - Statistical Information For TCP Research: Uncle Lawrence needs YOU!

2010-06-20 Thread Lawrence Stewart

On 06/20/10 23:15, Fabian Keil wrote:

Lawrence Stewartlstew...@freebsd.org  wrote:


On 06/20/10 22:28, Fabian Keil wrote:

Lawrence Stewartlstew...@freebsd.org   wrote:


On 06/20/10 21:15, Fabian Keil wrote:

Lawrence Stewartlstew...@freebsd.orgwrote:


On 06/20/10 03:58, Fabian Keil wrote:

Lawrence Stewartlstew...@freebsd.org wrote:


On 06/13/10 18:12, Lawrence Stewart wrote:



The time has come to solicit some external testing for my SIFTR tool.
I'm hoping to commit it within a week or so unless problems are discovered.



I'm interested in all feedback and reports of success/failure, along
with details of the architecture tested and number of CPUs if you would
be so kind.


I got the following hand-transcribed panic maybe a second after
sysctl net.inet.siftr.enabled=1

Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
[...]
current process = 12 (swi4: clock)
[ thread pid 12 tid 16 ]
Stopped at  siftr_chkpkt+0xd0:  addq$0x1,0x8(%r14)
db where
Tracing pid 12 tid 16 td 0xff00034037e0
siftr_chkpt() at siftr_chkpkt+0xd0
pfil_run_hooks() at pfil_run_hooks+0xb4
ip_output() at ip_output+0x382
tcp_output() tcp_output+0xa41
tcp_timer_rexmt() at tcp_timer_rexmt+0x251
softclock() at softclock+0x291
intr_event_execute_handlers() at intr_event_execute_handlers+0x66
ithread_loop at ithread_loop+0x8e
fork_exit() at fork_exit+0x112
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xff83ad30, rbp = 0 ---


So I've tracked down the line of code where the page fault is occurring:

if (dir == PFIL_IN)
ss-n_in++;
else
ss-n_out++;

ss is a DPCPU (dynamic per-cpu) variable used to keep a set of stats
per-cpu and is initialised at the start of the function like so:

ss = DPCPU_PTR(ss);

So for ss to be NULL, that implies DPCPU_PTR() is returning NULL on your
machine. I know very little about the inner workings of the DPCPU_*
macros, but I'm pretty sure the way I use them in SIFTR is correct or at
least as intended.


siftr_chkpkt() passes ss to siftr_chkreinject() before dereferencing
it itself. I think if ss was NULL, the panic should already occur in
siftr_chkreinject().


Yes but siftr_chkreinject() only dereferences ss in the exceptional case
of a malloc failure or duplicate pkt. It's unlikely either case happens
for you and so wouldn't trigger the panic.


To be sure I added:

diff --git a/sys/netinet/siftr.c b/sys/netinet/siftr.c
index 8bc3498..b9fdfe4 100644
--- a/sys/netinet/siftr.c
+++ b/sys/netinet/siftr.c
@@ -788,6 +788,16 @@ siftr_chkpkt(void *arg, struct mbuf **m, struct ifnet 
*ifp, int dir,
   if (siftr_chkreinject(*m, dir, ss))
   goto ret;

+   if (ss == NULL) {
+   printf(ss is NULL);
+   ss = DPCPU_PTR(ss);
+   if (ss == NULL) {
+  printf(ss is still NULL);
+  goto ret;
+   }
+}
+
+
   if (dir == PFIL_IN)
   ss-n_in++;
   else

which doesn't seem to affect the problem.


As in it still panics and the ss is NULL message is not printed? I
would have expected to at least see ss is NULL printed if my
hypothesis was correct... hmm.


Yes, it still panics, but no message is printed.


It was just pointed out to me that ss doesn't have to be NULL in order
to cause the page fault (duh). It could also just be a garbage ptr which
is why your print statement isn't firing.

Can you trigger the panic again and look for some information along the
lines of fault virtual address = ... as part of the panic info.
Knowing the faulting address would be useful and may help further diagnosis.


Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
fault virtual address   = 0xff7f808f9de8
fault code  = supervisor write data, page not present
instruction pointer = 0x20:0x8241f800
stack pointer   = 0x28:0xff83a7d0
frame pointer   = 0x28:0xff83a840
code segment= base 0x0, limit 0xf, type 0x1b
= DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags= interrupt enabled, resume, IOPL = 0


None of this looks too crazy, but at least one person I've been chatting 
to about this thinks the faulting address doesn't look quite right for a 
DPCPU variable.


Can you please get the following additional info from DDB:

show reg
show dpcpu_offset
p/x pcpu_entry_modspace

And can you also please identify the upstream FreeBSD revision number 
your kernel source is based on (as opposed to the GIT rev) so we can 
make sure we're looking at the same base sources you're running.



current process = 12 (swi4: clock)
[ thread pid 12 tid 16 ]
Stopped at  siftr_chkpkt+0xd0:  addq$0x1,0x8(%r14)
db  where
Tracing pid 12 tid 16 td 0xff00034037e0
siftr_chkpt() at siftr_chkpkt+0xd0
pfil_run_hooks() at pfil_run_hooks+0xb4

Re: [CFT] SIFTR - Statistical Information For TCP Research: Uncle Lawrence needs YOU!

2010-06-20 Thread Fabian Keil
Fabian Keil freebsd-lis...@fabiankeil.de wrote:

 Lawrence Stewart lstew...@freebsd.org wrote:
 
  On 06/20/10 22:28, Fabian Keil wrote:

   Taking pf (and altq) out of the picture doesn't seem to make
   a difference.
  
  Wouldn't have expected it to. Will be very curious to know if the panic 
  is triggered in GENERIC.
 
 It's not. I, too, get pfil.c related LORs though:
 
 lock order reversal:
  1st 0x80e5c568 PFil hook read/write mutex (PFil hook read/write 
 mutex) @ /usr/src/sys/net/pfil.c:77
  2nd 0x80e5dd68 udp (udp) @ 
 /usr/src/sys/modules/pf/../../contrib/pf/net/pf.c:3035
 KDB: stack backtrace:
 db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
 _witness_debugger() at _witness_debugger+0x2e
 witness_checkorder() at witness_checkorder+0x81e
 _rw_rlock() at _rw_rlock+0x5f
 pf_socket_lookup() at pf_socket_lookup+0x1c5
 pf_test_udp() at pf_test_udp+0x8b0
 pf_test() at pf_test+0x1089
 pf_check_in() at pf_check_in+0x39
 pfil_run_hooks() at pfil_run_hooks+0xcf
 ip_input() at ip_input+0x2ae
 swi_net() at swi_net+0x151
 intr_event_execute_handlers() at intr_event_execute_handlers+0x66
 ithread_loop() at ithread_loop+0xb2
 fork_exit() at fork_exit+0x12a
 fork_trampoline() at fork_trampoline+0xe
 --- trap 0, rip = 0, rsp = 0xff844d30, rbp = 0 ---
 lock order reversal:
  1st 0x80e5c568 PFil hook read/write mutex (PFil hook read/write 
 mutex) @ /usr/src/sys/net/pfil.c:77
  2nd 0x80e5d788 tcp (tcp) @ 
 /usr/src/sys/modules/siftr/../../netinet/siftr.c:698
 KDB: stack backtrace:
 db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
 _witness_debugger() at _witness_debugger+0x2e
 witness_checkorder() at witness_checkorder+0x81e
 _rw_rlock() at _rw_rlock+0x5f
 siftr_chkpkt() at siftr_chkpkt+0x3c4
 pfil_run_hooks() at pfil_run_hooks+0xcf
 ip_input() at ip_input+0x2ae
 swi_net() at swi_net+0x151
 intr_event_execute_handlers() at intr_event_execute_handlers+0x66
 ithread_loop() at ithread_loop+0xb2
 fork_exit() at fork_exit+0x12a
 fork_trampoline() at fork_trampoline+0xe
 --- trap 0, rip = 0, rsp = 0xff844d30, rbp = 0 ---
 
 My custom kernel normally doesn't have INVARIANTS and WITNESS
 enabled, so I'll try to enable them next.

The culprit seem to be non-default KTR settings in the kernel
while loading alq as a module. With the following change siftr
works with my non-GENERIC kernel, too:

commit f43b8b5171c858df7b419f6a695e9e3b53531a8e
Author: Fabian Keil f...@fabiankeil.de
Date:   Sun Jun 20 15:43:01 2010 +0200

Disable KTR changes.

diff --git a/sys/amd64/conf/ZOEY b/sys/amd64/conf/ZOEY
index 6fb3480..c584317 100644
--- a/sys/amd64/conf/ZOEY
+++ b/sys/amd64/conf/ZOEY
@@ -16,11 +16,11 @@ options ATA_CAM
 device  atapicam
 options SC_KERNEL_CONS_ATTR=(FG_GREEN|BG_BLACK)
 
-options KTR
-options KTR_ENTRIES=262144
-options KTR_COMPILE=(KTR_SCHED)
-options KTR_MASK=(KTR_SCHED)
-options KTR_CPUMASK=0x3
+#options KTR
+#options KTR_ENTRIES=262144
+#options KTR_COMPILE=(KTR_SCHED)
+#options KTR_MASK=(KTR_SCHED)
+#options KTR_CPUMASK=0x3

 options ACCEPT_FILTER_HTTP 
 makeoptions WITH_CTF=yes

Fabian


signature.asc
Description: PGP signature


[head tinderbox] failure on powerpc/powerpc

2010-06-20 Thread FreeBSD Tinderbox
TB --- 2010-06-20 13:55:40 - tinderbox 2.6 running on freebsd-current.sentex.ca
TB --- 2010-06-20 13:55:40 - starting HEAD tinderbox run for powerpc/powerpc
TB --- 2010-06-20 13:55:40 - cleaning the object tree
TB --- 2010-06-20 13:55:45 - cvsupping the source tree
TB --- 2010-06-20 13:55:45 - /usr/bin/csup -z -r 3 -g -L 1 -h cvsup.sentex.ca 
/tinderbox/HEAD/powerpc/powerpc/supfile
TB --- 2010-06-20 13:56:08 - building world
TB --- 2010-06-20 13:56:08 - MAKEOBJDIRPREFIX=/obj
TB --- 2010-06-20 13:56:08 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
TB --- 2010-06-20 13:56:08 - TARGET=powerpc
TB --- 2010-06-20 13:56:08 - TARGET_ARCH=powerpc
TB --- 2010-06-20 13:56:08 - TZ=UTC
TB --- 2010-06-20 13:56:08 - __MAKE_CONF=/dev/null
TB --- 2010-06-20 13:56:08 - cd /src
TB --- 2010-06-20 13:56:08 - /usr/bin/make -B buildworld
 World build started on Sun Jun 20 13:56:08 UTC 2010
 Rebuilding the temporary build tree
 stage 1.1: legacy release compatibility shims
 stage 1.2: bootstrap tools
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3: cross tools
 stage 4.1: building includes
 stage 4.2: building libraries
[...]
cc -O2 -pipe  -I/obj/powerpc/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wsystem-headers -Werror 
-Wno-pointer-sign -Wno-unknown-pragmas -c dt_grammar.c
cc -O2 -pipe  -I/obj/powerpc/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wsystem-headers -Werror 
-Wno-pointer-sign -Wno-unknown-pragmas -c 
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_handle.c
cc -O2 -pipe  -I/obj/powerpc/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wsystem-headers -Werror 
-Wno-pointer-sign -Wno-unknown-pragmas -c 
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_ident.c
cc -O2 -pipe  -I/obj/powerpc/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wsystem-headers -Werror 
-Wno-pointer-sign -Wno-unknown-pragmas -c 
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_inttab.c
cc -O2 -pipe  -I/obj/powerpc/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wsystem-headers -Werror 
-Wno-pointer-sign -Wno-unknown-pragmas -c dt_lex.c
cc1: warnings being treated as errors

Re: RFC: New event timers infrastructure

2010-06-20 Thread Brandon Gooch
On Sun, Jun 20, 2010 at 1:17 AM, Alexander Motin m...@freebsd.org wrote:
 Brandon Gooch wrote:
 I've been testing these patches since the first iteration
 (et.20100606), and I haven't discovered any related issues.

 Thank you!

 I am unclear about the number of interrupts I should expect from the
 hpet0 device (compared to the 99 from the rtc at 100Hz), so here is
 the output of vmstat -i with and without the et patches:

 With et patches:

 interrupt  total   rate
 irq1: atkbd0 369  3
 irq9: acpi0  961  8
 irq12: psm0 1002  9
 irq18: uhci5 140  1
 irq19: uhci2 ehci0* 4823 45
 irq20: hpet0   23893223
 irq23: uhci3 ehci111  0
 irq256: vgapci0 1031  9
 irq257: hdac0 14  0
 irq258: iwn04258 39
 irq259: bge0   1  0
 Total  36503341

 Without et patches:

 interrupt  total   rate
 irq1: atkbd0 449  2
 irq0: clk  17334 99
 irq9: acpi0 1701  9
 irq12: psm0 8784 50
 irq18: uhci5 188  1
 irq19: uhci2 ehci0* 5828 33
 irq23: uhci3 ehci111  0
 irq256: vgapci0 1896 10
 irq257: hdac0 14  0
 irq258: iwn0   29571169
 irq259: bge0   1  0
 Total  65777378

 And lastly, the values of the kern.eventtimer sysctls:

 $ sysctl kern.eventtimer
 kern.eventtimer.choice: HPET(450) HPET1(440) HPET2(440) HPET3(440) i8254(100)
 kern.eventtimer.timer2: HPET1
 kern.eventtimer.timer1: HPET
 kern.eventtimer.singlemul: 4

 I don't see there neither LAPIC, nor RTC timer. I suppose you have
 disabled them via device hints. I also suppose you've done it to left
 with only 100Hz IRQs of i8254 timer. Now, with the patch, these two are
 still disabled, but system got 4 more HPET timers. As they have higher
 precedence, two of them were taken (HPET and HPET1). Number if
 interrupts can be explained by the line:

 Starting kernel event timers: HPET @ 100Hz, HPET1 @ 128Hz

Yes, I had the LAPIC and RTC timers disabled via my /boot/loader.conf,
as per your suggestions here:

http://wiki.freebsd.org/TuningPowerConsumption

 As result, you've got 228Hz IRQs (which then redistributed to every
 CPU). As your HPET timer doesn't support FSB interrupts, all it's timers
 share same IRQ vector, seen as hpet0.

Understood.

 If you wish to get back to 100Hz IRQs as before, you may remove your
 previous clock-disabling hints and add instead:

 kern.eventtimer.timer1=HPET
 kern.eventtimer.timer2=NONE
 kern.eventtimer.singlemul=1

In by /boot/loader.conf, I now have:

# Power Saving
kern.hz=100
#hint.apic.0.clock=0
#hint.atrtc.0.clock=0
hint.p4tcc.0.disabled=1
hint.p4tcc.1.disabled=1
hint.acpi_throttle.0.disabled=1
hint.acpi_throttle.1.disabled=1
hw.pci.do_power_nodriver=3

In /etc/sysctl.conf, I have as suggested:

kern.eventtimer.timer1=HPET
kern.eventtimer.timer2=NONE
kern.eventtimer.singlemul=1

In my /etc/rc.conf, I'm still using:

performance_cpu_freq=NONE
economy_cpu_freq=NONE
performance_cx_lowest=C3
economy_cx_lowest=C3

I'm running powerd:

powerd_enable=YES
powerd_flags=-a adaptive -b adaptive -n adaptive

But in my dmesg, I see:

# dmesg | grep Starting
Starting kernel event timers: LAPIC @ 100Hz, HPET @ 128Hz
Starting kernel event timers: LAPIC @ 400Hz, NONE @ 0Hz
Starting kernel event timers: HPET @ 200Hz, NONE @ 0Hz

So it seems as if the HPET doesn't honor kern.hz setting? Maybe I
still need to explicitly disable the apic timers...

Would you suggest using LAPIC as opposed to HPET? I have seen power
savings being able to use C3 state, but if tickless kernel eventually
buys those savings back, perhaps LAPIC would be better...

 As result, you will have single timer, running at HZ rate. Instead of
 HPET there you may choose any timer:
  LAPIC - it is per-CPU, so saves on IPI interrupts, supports one-shot
 mode and so suitable for further tickless kernel, but it doesn't work in
 C3 state;

So if LAPIC is disabled in C3 state, is there a possibility that the
on-the-fly method of changing clocks could kick in when the CPU
enters C3 state, switching to the HPET when it happens?

  HPET{x} - on this hardware it can't be used as per-CPU, it supports
 one-shot mode, but less suitable for further tickless kernel, as CPUs
 can't run independently;

Since the HPET supports running while in C3, is there a strategy that
could be used to provide a tickless mode with both LAPIC and 

Re: [OpenRD Ultimate] e1000phy(88E1149/88E1121) has a initialize issue

2010-06-20 Thread Norikatsu Shigemura
Hi Kristof.

On Sun, 20 Jun 2010 15:01:00 +0200
Kristof Provost kris...@sigsegv.be wrote:
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
  - - - - - - -
  /* Tell the MAC where to find the PHY so autoneg works */
  -   miisc = LIST_FIRST(sc-mii-mii_phys);
  -   MGE_WRITE(sc, MGE_REG_PHYDEV, miisc-mii_phy);
  +   MGE_WRITE(sc, MGE_REG_PHYDEV, sc-phyaddr);
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
  - - - - - - -
 I think that's correct, but I haven't been able to test it on my board
 yet. Does this work for you on a board with two GbE ports? If so I'll
 try to get someone to commit it.

Yes, good works well.  I reported following:
http://lists.freebsd.org/pipermail/freebsd-arm/2010-June/002402.html

Thank you.

-- 
Norikatsu Shigemura n...@freebsd.org
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: RFC: New event timers infrastructure

2010-06-20 Thread Alexander Motin
Brandon Gooch wrote:
 On Sun, Jun 20, 2010 at 1:17 AM, Alexander Motin m...@freebsd.org wrote:
 In by /boot/loader.conf, I now have:
 
 # Power Saving
 kern.hz=100
 #hint.apic.0.clock=0
 #hint.atrtc.0.clock=0
 hint.p4tcc.0.disabled=1
 hint.p4tcc.1.disabled=1
 hint.acpi_throttle.0.disabled=1
 hint.acpi_throttle.1.disabled=1
 hw.pci.do_power_nodriver=3
 
 In /etc/sysctl.conf, I have as suggested:
 
 kern.eventtimer.timer1=HPET
 kern.eventtimer.timer2=NONE
 kern.eventtimer.singlemul=1

While this can be done in sysctl.conf, it would be better to do it in
loader.conf to make it applied from the beginning, without on-the-fly
timers change.

 But in my dmesg, I see:
 
 # dmesg | grep Starting
 Starting kernel event timers: LAPIC @ 100Hz, HPET @ 128Hz
 Starting kernel event timers: LAPIC @ 400Hz, NONE @ 0Hz
 Starting kernel event timers: HPET @ 200Hz, NONE @ 0Hz

This is result of changing timers during late boot by sysctl.conf.

 So it seems as if the HPET doesn't honor kern.hz setting? Maybe I
 still need to explicitly disable the apic timers...

All timers now equally honor hz. But except hz, stathz also should be
honored, which set once during startup. In your case, as second timer
was initially present, system was free to choose stathz frequency, and
it chosen 128Hz. When you later disabled second timer, system had to
rise first timer frequency to emulate declared stathz.

If you move timers selection options from sysctl.conf to loader.conf you
will get what you want.

 Would you suggest using LAPIC as opposed to HPET? I have seen power
 savings being able to use C3 state, but if tickless kernel eventually
 buys those savings back, perhaps LAPIC would be better...

Tickless operation usually effective only together with C-states. It
increases their effectiveness (or even applicability). The only case
benefit from tickless operation without C3 - is a virtual machines.

So if your LAPIC dies on C3 (it seems not to on Core i5 any more) you
have no much other options then avoid it.

HPET same time never have problems with C-states, as it located in
chipset. But not every HPET is equally useful. Except AMD since at least
SB700) and latest Intel chipsets, HPET uses regular IRQs, that are often
shared with PCI devices and so hardly could be bound to CPU cores to
provide separate events for every core. While tickless operation is
still possible in that case, it is somewhat limited, as one core will
have wake up every time when any other need event. Mentioned chipset's
HPETs same time support FSB interrupts (alike to PCI MSI-X), that are
never shared and so timers could be dedicated to CPU cores.

 As result, you will have single timer, running at HZ rate. Instead of
 HPET there you may choose any timer:
  LAPIC - it is per-CPU, so saves on IPI interrupts, supports one-shot
 mode and so suitable for further tickless kernel, but it doesn't work in
 C3 state;
 
 So if LAPIC is disabled in C3 state, is there a possibility that the
 on-the-fly method of changing clocks could kick in when the CPU
 enters C3 state, switching to the HPET when it happens?

On-the-fly timers change is possible, as you have already tried with
sysctl.conf. But the switch is not so easy because of LAPIC specifics,
and it is meaningless to use LAPIC in that case. If you need to run C3 -
turn LAPIC off.

-- 
Alexander Motin
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Dell Perc 5/i Performance issues

2010-06-20 Thread oizs
Could you tell me exactly how did you configure your raid? I mean 
wb/read-ahead/blocksize/stripe etc.


Much appreciated.
-zsozso

On 2010.06.19. 14:26, Svein Skogen (Listmail Account) wrote:

On 19.06.2010 11:58, oizs wrote:
   

I tried almost everything raid 0 1 5 10 with all kind of stripes
32/64/128 and settings direct io/cached/read-ahead/wt/wb/disk-cache but
nothing seems to work.
I changed the card to another dell perc 5 which had an older firmware.
Tried 4 kind of motherboards even tried changing the os to linux and
windows xp/7. In windows I got some funny results 1.3MB/s with
write-back and 150MB/s reads with 5 disks in raid0.
I just wanted to have a hw raid with no problems since the motherboard
88sx7042 and bsd did not like eachother.
 

This is from a similar controller running that 8-disk raid5+0 setup:

--
CrystalDiskMark 2.2 (C) 2007-2008 hiyohiyo
   Crystal Dew World : http://crystalmark.info/
--

Sequential Read :  665.383 MB/s
   Sequential Write :  300.452 MB/s
  Random Read 512KB :  616.604 MB/s
Random Write 512KB :  306.306 MB/s
Random Read 4KB :   64.465 MB/s
   Random Write 4KB :7.646 MB/s

  Test Size : 100 MB
   Date : 2010/06/19 14:24:12

You should be looking at number about half of these. I ran the test with
adaptive readahead enabled, and write-through for cache (since I run
with BBU, I normally use write-back)

//Svein

   

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Dell Perc 5/i Performance issues

2010-06-20 Thread oizs

I've tried almost everything now.
The battery is probably fine:
mfiutil show battery
mfi0: Battery State:
 Manufacture Date: 7/25/2009
Serial Number: 3716
 Manufacturer: SMP-PA1.9
Model: DLFR463
Chemistry: LION
  Design Capacity: 1800 mAh
   Design Voltage: 3700 mV
   Current Charge: 99%

My results:
Settings:
Raid5:
Stripe: 64k
mfiutil cache 0
mfi0 volume mfid0 cache settings:
  I/O caching: writes
write caching: write-back
   read ahead: none
drive write cache: default
Raid0:
Stripe: 64k
mfiutil cache 0
mfi0 volume mfid0 cache settings:
  I/O caching: writes
write caching: write-back
   read ahead: none
drive write cache: default

Tried to play around with this as well, with almost no difference.

Raid5
read:
dd if=/dev/mfid0 of=/dev/null bs=10M
1143+0 records in
1143+0 records out
11985223680 bytes transferred in 139.104134 secs (86160083 bytes/sec)
write:
dd if=/dev/random of=/dev/mfid0 bs=64K
22747+0 records in
22747+0 records out
1490747392 bytes transferred in 23.921103 secs (62319342 bytes/sec)

Raid0
read:
dd if=/dev/mfid0 of=/dev/null bs=64K
92470+0 records in
92470+0 records out
6060113920 bytes transferred in 47.926007 secs (126447294 bytes/sec)
write:
dd if=/dev/random of=/dev/mfid0 bs=64K
16441+0 records in
16441+0 records out
1077477376 bytes transferred in 17.232486 secs (62525939 bytes/sec)

I'm writing directly to the device so im not sure any slice issues could 
cause the problems.


-zsozso
On 2010.06.20. 4:53, Scott Long wrote:

Two big things  can affect RAID-5 performance:

1. Battery backup.  If you don't have a working battery attached to the card, 
it will turn off the write-back cache, no matter what you do.  Check this.  If 
you're unsure, use the mfiutil tool that I added to FreeBSD a few months ago 
and send me the output.

2. Partition alignment.  If you're using classic MBR slices, everything gets 
misaligned by 63 sectors, making it impossible for the controller to optimize 
both reads and writes.  If the array is used for secondary storage, simply 
don't use an MBR scheme.  If it's used for primary storage, try using GPT 
instead and setting up your partitions so that they are aligned to large 
power-of-2 boundaries.

Scott

On Jun 18, 2010, at 6:27 PM, oizs wrote
   

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Dell Perc 5/i Performance issues

2010-06-20 Thread Steven Hartland

Does anyone know of a nice how to guide for achieving this?

- Original Message - 
From: Scott Long sco...@samsco.org
2. Partition alignment.  If you're using classic MBR slices, everything gets misaligned by 63 sectors, making it impossible for 
the controller to optimize both reads and writes.  If the array is used for secondary storage, simply don't use an MBR scheme.  If 
it's used for primary storage, try using GPT instead and setting up your partitions so that they are aligned to large power-of-2 
boundaries.




This e.mail is private and confidential between Multiplay (UK) Ltd. and the person or entity to whom it is addressed. In the event of misdirection, the recipient is prohibited from using, copying, printing or otherwise disseminating it or any information contained in it. 


In the event of misdirection, illegible or incomplete transmission please 
telephone +44 845 868 1337
or return the E.mail to postmas...@multiplay.co.uk.

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


page fault with the following non-sleepable locks held: exclusive sleep mutex ATA state lock

2010-06-20 Thread James R. Van Artsdalen
FreeBSD 9.0-CURRENT #1 r209275: Fri Jun 18 08:15:15 CDT 2010
r...@clank.housenet.jrv:/usr/obj/usr/src/sys/GENERIC amd64

June 17 -CURRENT

This panic was seen under VirtualBox on a Windows host.  The VM has 2
cores (the host is a Core i7).
I this infrequently under a VM.  I have yet to see it on real hardware.
...
ahcich0: AHCI reset...
ahcich0: SATA connect time=0ms status=0123
ahcich0: ready wait time=0ms
ahcich0: AHCI reset done: device found
(aprobe0:ahcich0:0:0:0): SIGNATURE: 
ugen0.1: Apple at usbus0
uhub0: Apple OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1 on usbus0
ugen1.1: Intel at usbus1
uhub1: Intel EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1 on usbus1
ahcich1: AHCI reset...
Kernel page fault with the following non-sleepable locks held:
exclusive sleep mutex ATA state lock (ATA state lock) r = 0
(0xff0002a922c0) locked @ /usr/src/sys/dev/ata/ata-all.c:503
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
_witness_debugger() at _witness_debugger+0x2e
witness_warn() at witness_warn+0x2d2
trap() at trap+0x2ee
calltrap() at calltrap+0x8
--- trap 0xc, rip = 0x805d8ef1, rsp = 0xff8f6b30, rbp =
0xff8f6b70 ---
device_get_softc() at device_get_softc+0x1
ata_interrupt() at ata_interrupt+0x9d
intr_event_execute_handlers() at intr_event_execute_handlers+0x66
ithread_loop() at ithread_loop+0xb2
fork_exit() at fork_exit+0x12a
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xff8f6d30, rbp = 0 ---


Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x80
fault code  = supervisor read data, page not present
instruction pointer = 0x20:0x805d8ef1
stack pointer   = 0x28:0xff8f6b30
frame pointer   = 0x28:0xff8f6b70
code segment= base 0x0, limit 0xf, type 0x1b
= DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags= interrupt enabled, resume, IOPL = 0
current process = 12 (irq15: ata1)
[ thread pid 12 tid 100025 ]
Stopped at  device_get_softc+0x1:   movq0x80(%rdi),%rax
db

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Dell Perc 5/i Performance issues

2010-06-20 Thread Scott Long
I just set up a machine with the following GPT scheme:

=34  5853511613  mfid0  GPT  (2.7T)
  34 128  1  freebsd-boot  (64K)
 162 862 - free -  (431K)
1024 2097152  2  freebsd-ufs  (1.0G)
 2098176 4194304  3  freebsd-swap  (2.0G)
 6292480 2097152  4  freebsd-ufs  (1.0G)
 8389632   104857600  5  freebsd-ufs  (50G)
   113247232  5740264414  6  freebsd-ufs  (2.7T)
  5853511646   1 - free -  (512B)

After the first partition, I created a deliberate gap for alignment, reflected 
in the second line.  The third line shows a starting offset of sector 1024, 
which is 512KB.  This should be a good generic start point for most RAID 
geometries with a stripe size = 512KB.  The rest are normal /, swap, /var, 
/usr and /opt partitions.  The single free sector on the final line is probably 
a calculation error on my part, there's no particular reason for it.

The gpart man page has good descriptions on how to create partitions and make 
the GPT scheme bootable.  It's not very automated, you'll need to have a 
calculator handy, but it works.

Scott

On Jun 20, 2010, at 12:20 PM, Steven Hartland wrote:

 Does anyone know of a nice how to guide for achieving this?
 
 - Original Message - From: Scott Long sco...@samsco.org
 2. Partition alignment.  If you're using classic MBR slices, everything gets 
 misaligned by 63 sectors, making it impossible for the controller to optimize 
 both reads and writes.  If the array is used for secondary storage, simply 
 don't use an MBR scheme.  If it's used for primary storage, try using GPT 
 instead and setting up your partitions so that they are aligned to large 
 power-of-2 boundaries.
 
 
 
 This e.mail is private and confidential between Multiplay (UK) Ltd. and the 
 person or entity to whom it is addressed. In the event of misdirection, the 
 recipient is prohibited from using, copying, printing or otherwise 
 disseminating it or any information contained in it. 
 In the event of misdirection, illegible or incomplete transmission please 
 telephone +44 845 868 1337
 or return the E.mail to postmas...@multiplay.co.uk.
 

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Dell Perc 5/i Performance issues

2010-06-20 Thread Artem Belevich
/dev/random and /dev/urandom are relatively slow and are not suitable
as the source of data for testing modern hard drives' sequential
throughput.

On my 3GHz dual-core amd63 box both /dev/random and /dev/urandom max
out at ~80MB/s while consuming 100% CPU time on one of the processor
cores.
That would not be enough to saturate single disk with sequential writes.

--Artem



On Sun, Jun 20, 2010 at 9:51 AM, oizs o...@freemail.hu wrote:
 I've tried almost everything now.
 The battery is probably fine:
 mfiutil show battery
 mfi0: Battery State:
  Manufacture Date: 7/25/2009
    Serial Number: 3716
     Manufacturer: SMP-PA1.9
            Model: DLFR463
        Chemistry: LION
  Design Capacity: 1800 mAh
   Design Voltage: 3700 mV
   Current Charge: 99%

 My results:
 Settings:
 Raid5:
 Stripe: 64k
 mfiutil cache 0
 mfi0 volume mfid0 cache settings:
      I/O caching: writes
    write caching: write-back
       read ahead: none
 drive write cache: default
 Raid0:
 Stripe: 64k
 mfiutil cache 0
 mfi0 volume mfid0 cache settings:
      I/O caching: writes
    write caching: write-back
       read ahead: none
 drive write cache: default

 Tried to play around with this as well, with almost no difference.

 Raid5
 read:
 dd if=/dev/mfid0 of=/dev/null bs=10M
 1143+0 records in
 1143+0 records out
 11985223680 bytes transferred in 139.104134 secs (86160083 bytes/sec)
 write:
 dd if=/dev/random of=/dev/mfid0 bs=64K
 22747+0 records in
 22747+0 records out
 1490747392 bytes transferred in 23.921103 secs (62319342 bytes/sec)

 Raid0
 read:
 dd if=/dev/mfid0 of=/dev/null bs=64K
 92470+0 records in
 92470+0 records out
 6060113920 bytes transferred in 47.926007 secs (126447294 bytes/sec)
 write:
 dd if=/dev/random of=/dev/mfid0 bs=64K
 16441+0 records in
 16441+0 records out
 1077477376 bytes transferred in 17.232486 secs (62525939 bytes/sec)

 I'm writing directly to the device so im not sure any slice issues could
 cause the problems.

 -zsozso
 On 2010.06.20. 4:53, Scott Long wrote:

 Two big things  can affect RAID-5 performance:

 1. Battery backup.  If you don't have a working battery attached to the
 card, it will turn off the write-back cache, no matter what you do.  Check
 this.  If you're unsure, use the mfiutil tool that I added to FreeBSD a few
 months ago and send me the output.

 2. Partition alignment.  If you're using classic MBR slices, everything
 gets misaligned by 63 sectors, making it impossible for the controller to
 optimize both reads and writes.  If the array is used for secondary storage,
 simply don't use an MBR scheme.  If it's used for primary storage, try using
 GPT instead and setting up your partitions so that they are aligned to large
 power-of-2 boundaries.

 Scott

 On Jun 18, 2010, at 6:27 PM, oizs wrote


 ___
 freebsd-current@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/freebsd-current
 To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Dell Perc 5/i Performance issues

2010-06-20 Thread Scott Long
Yeah, there's no value in using the /dev/random devices for testing disk i/o.  
Use /dev/zero instead.  I've known of hardware RAID engines in the past that 
can recognize certain repeating i/o benchmark patterns and optimize for them, 
but I have no idea if LSI controllers do this, tho based on your results it's 
probably safe to say that they don't.

Scott

On Jun 20, 2010, at 1:09 PM, Artem Belevich wrote:

 /dev/random and /dev/urandom are relatively slow and are not suitable
 as the source of data for testing modern hard drives' sequential
 throughput.
 
 On my 3GHz dual-core amd63 box both /dev/random and /dev/urandom max
 out at ~80MB/s while consuming 100% CPU time on one of the processor
 cores.
 That would not be enough to saturate single disk with sequential writes.
 
 --Artem
 
 
 
 On Sun, Jun 20, 2010 at 9:51 AM, oizs o...@freemail.hu wrote:
 I've tried almost everything now.
 The battery is probably fine:
 mfiutil show battery
 mfi0: Battery State:
  Manufacture Date: 7/25/2009
Serial Number: 3716
 Manufacturer: SMP-PA1.9
Model: DLFR463
Chemistry: LION
  Design Capacity: 1800 mAh
   Design Voltage: 3700 mV
   Current Charge: 99%
 
 My results:
 Settings:
 Raid5:
 Stripe: 64k
 mfiutil cache 0
 mfi0 volume mfid0 cache settings:
  I/O caching: writes
write caching: write-back
   read ahead: none
 drive write cache: default
 Raid0:
 Stripe: 64k
 mfiutil cache 0
 mfi0 volume mfid0 cache settings:
  I/O caching: writes
write caching: write-back
   read ahead: none
 drive write cache: default
 
 Tried to play around with this as well, with almost no difference.
 
 Raid5
 read:
 dd if=/dev/mfid0 of=/dev/null bs=10M
 1143+0 records in
 1143+0 records out
 11985223680 bytes transferred in 139.104134 secs (86160083 bytes/sec)
 write:
 dd if=/dev/random of=/dev/mfid0 bs=64K
 22747+0 records in
 22747+0 records out
 1490747392 bytes transferred in 23.921103 secs (62319342 bytes/sec)
 
 Raid0
 read:
 dd if=/dev/mfid0 of=/dev/null bs=64K
 92470+0 records in
 92470+0 records out
 6060113920 bytes transferred in 47.926007 secs (126447294 bytes/sec)
 write:
 dd if=/dev/random of=/dev/mfid0 bs=64K
 16441+0 records in
 16441+0 records out
 1077477376 bytes transferred in 17.232486 secs (62525939 bytes/sec)
 
 I'm writing directly to the device so im not sure any slice issues could
 cause the problems.
 
 -zsozso
 On 2010.06.20. 4:53, Scott Long wrote:
 
 Two big things  can affect RAID-5 performance:
 
 1. Battery backup.  If you don't have a working battery attached to the
 card, it will turn off the write-back cache, no matter what you do.  Check
 this.  If you're unsure, use the mfiutil tool that I added to FreeBSD a few
 months ago and send me the output.
 
 2. Partition alignment.  If you're using classic MBR slices, everything
 gets misaligned by 63 sectors, making it impossible for the controller to
 optimize both reads and writes.  If the array is used for secondary storage,
 simply don't use an MBR scheme.  If it's used for primary storage, try using
 GPT instead and setting up your partitions so that they are aligned to large
 power-of-2 boundaries.
 
 Scott
 
 On Jun 18, 2010, at 6:27 PM, oizs wrote
 
 
 ___
 freebsd-current@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/freebsd-current
 To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org
 
 ___
 freebsd-current@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/freebsd-current
 To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [CFT] SIFTR - Statistical Information For TCP Research: Uncle Lawrence needs YOU!

2010-06-20 Thread Fabian Keil
Fabian Keil freebsd-lis...@fabiankeil.de wrote:

 Fabian Keil freebsd-lis...@fabiankeil.de wrote:

  My custom kernel normally doesn't have INVARIANTS and WITNESS
  enabled, so I'll try to enable them next.
 
 The culprit seem to be non-default KTR settings in the kernel
 while loading alq as a module.

Actually whether or not alq is loaded as a module doesn't
seem to matter, with:

options KTR
options KTR_ENTRIES=262144
options KTR_COMPILE=(KTR_SCHED)
options KTR_MASK=(KTR_SCHED)
options KTR_CPUMASK=0x3
options ALQ
options KTR_ALQ

enabling siftr panics the system, too.

Fabian


signature.asc
Description: PGP signature


Bug in debug.ncores sysctl code

2010-06-20 Thread Bruce Cran
I noticed on my i386 router running 9-CURRENT that the debug.ncores sysctl 
appears to get its value from some kernel memory that gets updated frequently:

debug.ncores: -936629388

On line 2967 of sys/kern/kern_sig.c should the value of num_cores instead of 
ncores be getting returned?

-- 
Bruce Cran
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: RFC: New event timers infrastructure

2010-06-20 Thread Doug Barton

On 06/20/10 08:47, Alexander Motin wrote:

While this can be done in sysctl.conf, it would be better to do it in
loader.conf to make it applied from the beginning, without on-the-fly
timers change.


You're probably right that for something this fundamental it's better to 
do it in loader.conf, however I wanted to mention that I recently 
changed the rcorder for the early boot scripts to run sysctl first for 
very similar reasons.



Doug

--

... and that's just a little bit of history repeating.
-- Propellerheads

Improve the effectiveness of your Internet presence with
a domain name makeover!http://SupersetSolutions.com/

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [CFT] SIFTR - Statistical Information For TCP Research: Uncle Lawrence needs YOU!

2010-06-20 Thread Rui Paulo

On 20 Jun 2010, at 20:36, Fabian Keil wrote:

 Fabian Keil freebsd-lis...@fabiankeil.de wrote:
 
 Fabian Keil freebsd-lis...@fabiankeil.de wrote:
 
 My custom kernel normally doesn't have INVARIANTS and WITNESS
 enabled, so I'll try to enable them next.
 
 The culprit seem to be non-default KTR settings in the kernel
 while loading alq as a module.
 
 Actually whether or not alq is loaded as a module doesn't
 seem to matter, with:
 
 options   KTR
 options   KTR_ENTRIES=262144
 options   KTR_COMPILE=(KTR_SCHED)
 options   KTR_MASK=(KTR_SCHED)
 options   KTR_CPUMASK=0x3
 options   ALQ
 options   KTR_ALQ
 
 enabling siftr panics the system, too.

That's probably because your module was built with different compile time 
options than the ones used in the kernel. These options may change structure 
sizes, function parameters, etc. and that easily causes panics.

Regards,
--
Rui Paulo


___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Bug in debug.ncores sysctl code

2010-06-20 Thread Kostik Belousov
On Sun, Jun 20, 2010 at 08:38:37PM +0100, Bruce Cran wrote:
 I noticed on my i386 router running 9-CURRENT that the debug.ncores sysctl 
 appears to get its value from some kernel memory that gets updated frequently:
 
 debug.ncores: -936629388
 
 On line 2967 of sys/kern/kern_sig.c should the value of num_cores instead of 
 ncores be getting returned?
ncores at the line 2967 is only the name of mib. The following patch
should fix it.

diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index d52cedb..63fe81e 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -2953,7 +2953,8 @@ sysctl_debug_num_cores_check (SYSCTL_HANDLER_ARGS)
 {
int error;
int new_val;
-   
+
+   new_val = num_cores;
error = sysctl_handle_int(oidp, new_val, 0, req);
if (error != 0 || req-newptr == NULL)
return (error);


pgpnSQb6emWB8.pgp
Description: PGP signature


Re: Dell Perc 5/i Performance issues

2010-06-20 Thread Antony Mawer
On Mon, Jun 21, 2010 at 4:50 AM, Scott Long sco...@samsco.org wrote:
 I just set up a machine with the following GPT scheme:

 =        34  5853511613  mfid0  GPT  (2.7T)
          34         128      1  freebsd-boot  (64K)
         162         862         - free -  (431K)
        1024     2097152      2  freebsd-ufs  (1.0G)
     2098176     4194304      3  freebsd-swap  (2.0G)
     6292480     2097152      4  freebsd-ufs  (1.0G)
     8389632   104857600      5  freebsd-ufs  (50G)
   113247232  5740264414      6  freebsd-ufs  (2.7T)
  5853511646           1         - free -  (512B)

 After the first partition, I created a deliberate gap for alignment, 
 reflected in the second line.  The third line shows a starting offset of 
 sector 1024, which is 512KB.  This should be a good generic start point for 
 most RAID geometries with a stripe size = 512KB.  The rest are normal /, 
 swap, /var, /usr and /opt partitions.  The single free sector on the final 
 line is probably a calculation error on my part, there's no particular reason 
 for it.

 The gpart man page has good descriptions on how to create partitions and make 
 the GPT scheme bootable.  It's not very automated, you'll need to have a 
 calculator handy, but it works.

I scripted this as part of our custom installer - it uses the  same
1MB offset that Vista/Win7 do which should align for anything with a
= 1MB stripe size:


# Device to partition
diskdev=/dev/da0

# First partition offset in 512-byte sectors. This should be aligned with
# any RAID stripe size for maximum performance. 2048 aligns the partition
# start boundary at the 1MiB, consistent with Vista/Windows 7. This should
# match all common stripe sizes such as 64kb, 128kb and 256kb.
root_offset=2048

# Boot partition offset. This sits just before our first root partition and
# stores the boot loader which is used to load the OS.
boot_offset=2032

# Initialise the disk with a GPT partition table
gpart create -s gpt $diskdev

#
# System disk partitioning layout
#
gpart add -l boot -t freebsd-boot -s 16 -b $boot_offset $diskdev   # boot p1
gpart add -l root -t freebsd-ufs  -s 2G -b $root_offset $diskdev   # /p2
gpart add -l swap -t freebsd-swap -s 4G $diskdev   # swap p3
gpart add -l var  -t freebsd-ufs  -s 4G $diskdev   # /var p4
gpart add -l usr  -t freebsd-ufs$diskdev   # /usr p5

# Install the gpt boot code (pmbr into the PMBR, gptboot into our
boot partition p1)
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 $diskdev

# Make the first partition active
# (required for older BIOSes to boot from the GPT PMBR)
echo 'a 1' | fdisk -f - $diskdev

gpart is smart enough to figure out most of the math for you these days...

-- Antony
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


[RFC] Changes in stat structures

2010-06-20 Thread Gabor PALI
Hello,

I would like to integrate my Google Summer of Code project from the
last year [1].  In brief, it was about converting netstat(1) into a
library and providing a relatively clean API to access various
networking statistics available in the kernel.  The project is far
from being complete, and it needs review but I decided to split my
large patch into smaller pieces and add the results continuously to
the FreeBSD src/ repository, otherwise it might vanish.  I do not have
a src/ commit bit, thus I am also looking for a sponsor for my changes
who approves or commits them.

My plan of integration is simple: apply the necessary modifications to
the kernel, add the sysctl export routines and data structures, add
the library (called libnetstat(3)), then adapt and add applications
(netstat(1), bsnmpd(1), nettop(1), etc.) to use it.  This way I could
get some review and continue the development of this library in an
interactive style.  The first piece of this set is available on my
FreeBSD homepage as a separate patch [2], which technically proposes
to a standardization for the counter values so they could be
accessed from both 32-bit and 64-bit environments without problems
(via kvm(3) or sysctl(3)).  However, I do not know too much about the
potential consequences or how such a change should be handled in the
tree.

For more information (and the complete patch), see the project's wiki
page [3].  Any feedback is appreciated.  Nothing is carved into stone,
I am very open to comments :)

Thank you!

Cheers,
:g


[1] http://wiki.freebsd.org/PGJSoC2009
[2] http://people.freebsd.org/~pgj/libnetstat/libnetstat-sys.latest.diff
[3] http://wiki.freebsd.org/LibNetstat
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: RFC: New event timers infrastructure

2010-06-20 Thread Brandon Gooch
On Sun, Jun 20, 2010 at 3:35 PM, Doug Barton do...@freebsd.org wrote:
 On 06/20/10 08:47, Alexander Motin wrote:

 While this can be done in sysctl.conf, it would be better to do it in
 loader.conf to make it applied from the beginning, without on-the-fly
 timers change.

 You're probably right that for something this fundamental it's better to do
 it in loader.conf, however I wanted to mention that I recently changed the
 rcorder for the early boot scripts to run sysctl first for very similar
 reasons.

This is good information, so sorry if I'm being dense: does this mean
that it should have worked by applying the changes via
/etc/sysctl.conf?

No worries though, I've set it in /boot/loader.conf to avoid any
possible ambiguity or anomalous behavior, and it's working very well!

Alexander, if I haven't said it enough already, thanks! I see that you
committed this work, looking forward to wider-spread testing now...

-Brandon
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [CFT] SIFTR - Statistical Information For TCP Research: Uncle Lawrence needs YOU!

2010-06-20 Thread Lawrence Stewart

On 06/21/10 00:12, Fabian Keil wrote:

Fabian Keilfreebsd-lis...@fabiankeil.de  wrote:


Lawrence Stewartlstew...@freebsd.org  wrote:


On 06/20/10 22:28, Fabian Keil wrote:



Taking pf (and altq) out of the picture doesn't seem to make
a difference.


Wouldn't have expected it to. Will be very curious to know if the panic
is triggered in GENERIC.


It's not. I, too, get pfil.c related LORs though:

lock order reversal:
  1st 0x80e5c568 PFil hook read/write mutex (PFil hook read/write 
mutex) @ /usr/src/sys/net/pfil.c:77
  2nd 0x80e5dd68 udp (udp) @ 
/usr/src/sys/modules/pf/../../contrib/pf/net/pf.c:3035
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
_witness_debugger() at _witness_debugger+0x2e
witness_checkorder() at witness_checkorder+0x81e
_rw_rlock() at _rw_rlock+0x5f
pf_socket_lookup() at pf_socket_lookup+0x1c5
pf_test_udp() at pf_test_udp+0x8b0
pf_test() at pf_test+0x1089
pf_check_in() at pf_check_in+0x39
pfil_run_hooks() at pfil_run_hooks+0xcf
ip_input() at ip_input+0x2ae
swi_net() at swi_net+0x151
intr_event_execute_handlers() at intr_event_execute_handlers+0x66
ithread_loop() at ithread_loop+0xb2
fork_exit() at fork_exit+0x12a
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xff844d30, rbp = 0 ---
lock order reversal:
  1st 0x80e5c568 PFil hook read/write mutex (PFil hook read/write 
mutex) @ /usr/src/sys/net/pfil.c:77
  2nd 0x80e5d788 tcp (tcp) @ 
/usr/src/sys/modules/siftr/../../netinet/siftr.c:698
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
_witness_debugger() at _witness_debugger+0x2e
witness_checkorder() at witness_checkorder+0x81e
_rw_rlock() at _rw_rlock+0x5f
siftr_chkpkt() at siftr_chkpkt+0x3c4
pfil_run_hooks() at pfil_run_hooks+0xcf
ip_input() at ip_input+0x2ae
swi_net() at swi_net+0x151
intr_event_execute_handlers() at intr_event_execute_handlers+0x66
ithread_loop() at ithread_loop+0xb2
fork_exit() at fork_exit+0x12a
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xff844d30, rbp = 0 ---

My custom kernel normally doesn't have INVARIANTS and WITNESS
enabled, so I'll try to enable them next.


The culprit seem to be non-default KTR settings in the kernel
while loading alq as a module. With the following change siftr
works with my non-GENERIC kernel, too:

commit f43b8b5171c858df7b419f6a695e9e3b53531a8e
Author: Fabian Keilf...@fabiankeil.de
Date:   Sun Jun 20 15:43:01 2010 +0200

 Disable KTR changes.

diff --git a/sys/amd64/conf/ZOEY b/sys/amd64/conf/ZOEY
index 6fb3480..c584317 100644
--- a/sys/amd64/conf/ZOEY
+++ b/sys/amd64/conf/ZOEY
@@ -16,11 +16,11 @@ options ATA_CAM
  device  atapicam
  options SC_KERNEL_CONS_ATTR=(FG_GREEN|BG_BLACK)

-options KTR
-options KTR_ENTRIES=262144
-options KTR_COMPILE=(KTR_SCHED)
-options KTR_MASK=(KTR_SCHED)
-options KTR_CPUMASK=0x3
+#options KTR
+#options KTR_ENTRIES=262144
+#options KTR_COMPILE=(KTR_SCHED)
+#options KTR_MASK=(KTR_SCHED)
+#options KTR_CPUMASK=0x3

  options ACCEPT_FILTER_HTTP
  makeoptions WITH_CTF=yes


This smells very fishy. Without options KTR_ALQ, KTR shouldn't even 
care if ALQ exists or not. Not only that, but ALQ isn't even used in 
siftr_chkpkt and you clearly manage to successfully use ALQ to write the 
module load message to the log file. H...


Thanks for taking the time to find the culprit though - I'll see if I 
can reproduce here. Could you try another thing for me and see if 
reducing options KTR_ENTRIES=262144 down to a smaller number (maybe 
4096?) and leaving all the other KTR options as they are above (but 
uncommented) makes any difference? The ktr(4) man page indicates the 
default is 8192 entries and I'm curious if the your allocation of so 
many additional entries is making something unhappy.


Thanks again for your time helping with this, I really appreciate it.

Cheers,
Lawrence
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


[head tinderbox] failure on arm/arm

2010-06-20 Thread FreeBSD Tinderbox
TB --- 2010-06-21 01:50:00 - tinderbox 2.6 running on freebsd-current.sentex.ca
TB --- 2010-06-21 01:50:00 - starting HEAD tinderbox run for arm/arm
TB --- 2010-06-21 01:50:00 - cleaning the object tree
TB --- 2010-06-21 01:50:07 - cvsupping the source tree
TB --- 2010-06-21 01:50:07 - /usr/bin/csup -z -r 3 -g -L 1 -h cvsup.sentex.ca 
/tinderbox/HEAD/arm/arm/supfile
TB --- 2010-06-21 01:50:30 - building world
TB --- 2010-06-21 01:50:30 - MAKEOBJDIRPREFIX=/obj
TB --- 2010-06-21 01:50:30 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
TB --- 2010-06-21 01:50:30 - TARGET=arm
TB --- 2010-06-21 01:50:30 - TARGET_ARCH=arm
TB --- 2010-06-21 01:50:30 - TZ=UTC
TB --- 2010-06-21 01:50:30 - __MAKE_CONF=/dev/null
TB --- 2010-06-21 01:50:30 - cd /src
TB --- 2010-06-21 01:50:30 - /usr/bin/make -B buildworld
 World build started on Mon Jun 21 01:50:39 UTC 2010
 Rebuilding the temporary build tree
 stage 1.1: legacy release compatibility shims
 stage 1.2: bootstrap tools
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3: cross tools
 stage 4.1: building includes
 stage 4.2: building libraries
[...]
cc -O -pipe  -I/obj/arm/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -Wsystem-headers -Werror -Wno-pointer-sign 
-Wno-unknown-pragmas -c dt_grammar.c
cc -O -pipe  -I/obj/arm/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -Wsystem-headers -Werror -Wno-pointer-sign 
-Wno-unknown-pragmas -c 
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_handle.c
cc -O -pipe  -I/obj/arm/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -Wsystem-headers -Werror -Wno-pointer-sign 
-Wno-unknown-pragmas -c 
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_ident.c
cc -O -pipe  -I/obj/arm/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -Wsystem-headers -Werror -Wno-pointer-sign 
-Wno-unknown-pragmas -c 
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_inttab.c
cc -O -pipe  -I/obj/arm/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -Wsystem-headers -Werror -Wno-pointer-sign 
-Wno-unknown-pragmas -c dt_lex.c
cc1: warnings being treated as errors
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_lex.l:
 In function 'yylex':

Re: [CFT] SIFTR - Statistical Information For TCP Research: Uncle Lawrence needs YOU!

2010-06-20 Thread Lawrence Stewart

On 06/21/10 05:44, Rui Paulo wrote:


On 20 Jun 2010, at 20:36, Fabian Keil wrote:


Fabian Keilfreebsd-lis...@fabiankeil.de  wrote:


Fabian Keilfreebsd-lis...@fabiankeil.de  wrote:



My custom kernel normally doesn't have INVARIANTS and WITNESS
enabled, so I'll try to enable them next.


The culprit seem to be non-default KTR settings in the kernel
while loading alq as a module.


Actually whether or not alq is loaded as a module doesn't
seem to matter, with:

options KTR
options KTR_ENTRIES=262144
options KTR_COMPILE=(KTR_SCHED)
options KTR_MASK=(KTR_SCHED)
options KTR_CPUMASK=0x3
options ALQ
options KTR_ALQ

enabling siftr panics the system, too.


That's probably because your module was built with different compile time 
options than the ones used in the kernel. These options may change structure 
sizes, function parameters, etc. and that easily causes panics.


hmm I wonder if my instructions to build SIFTR manually are causing your 
problems. Fabian, is the siftr.ko module you're loading built as part of 
a make buildkernel, or did you follow my instructions and cd 
/path/to/src/sys/modules/siftr ; make ; kldload ./siftr.ko?


If the latter is true, perhaps try and explicitly build SIFTR as part of 
make buildkernel and see if loading the module built that way still 
triggers the panic when enabled (the module will be in 
/usr/obj/path/to/src/sys/KERNCONF/modules/path/to/src/sys/modules/siftr/siftr.ko 
or if you make installkernel it'll be in /boot/kernel/kernel/siftr.ko).


Cheers,
Lawrence
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


[head tinderbox] failure on powerpc/powerpc

2010-06-20 Thread FreeBSD Tinderbox
TB --- 2010-06-21 04:21:31 - tinderbox 2.6 running on freebsd-current.sentex.ca
TB --- 2010-06-21 04:21:31 - starting HEAD tinderbox run for powerpc/powerpc
TB --- 2010-06-21 04:21:31 - cleaning the object tree
TB --- 2010-06-21 04:21:37 - cvsupping the source tree
TB --- 2010-06-21 04:21:37 - /usr/bin/csup -z -r 3 -g -L 1 -h cvsup.sentex.ca 
/tinderbox/HEAD/powerpc/powerpc/supfile
TB --- 2010-06-21 04:22:06 - building world
TB --- 2010-06-21 04:22:06 - MAKEOBJDIRPREFIX=/obj
TB --- 2010-06-21 04:22:06 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
TB --- 2010-06-21 04:22:06 - TARGET=powerpc
TB --- 2010-06-21 04:22:06 - TARGET_ARCH=powerpc
TB --- 2010-06-21 04:22:06 - TZ=UTC
TB --- 2010-06-21 04:22:06 - __MAKE_CONF=/dev/null
TB --- 2010-06-21 04:22:06 - cd /src
TB --- 2010-06-21 04:22:06 - /usr/bin/make -B buildworld
 World build started on Mon Jun 21 04:22:06 UTC 2010
 Rebuilding the temporary build tree
 stage 1.1: legacy release compatibility shims
 stage 1.2: bootstrap tools
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3: cross tools
 stage 4.1: building includes
 stage 4.2: building libraries
[...]
cc -O2 -pipe  -I/obj/powerpc/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wsystem-headers -Werror 
-Wno-pointer-sign -Wno-unknown-pragmas -c dt_grammar.c
cc -O2 -pipe  -I/obj/powerpc/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wsystem-headers -Werror 
-Wno-pointer-sign -Wno-unknown-pragmas -c 
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_handle.c
cc -O2 -pipe  -I/obj/powerpc/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wsystem-headers -Werror 
-Wno-pointer-sign -Wno-unknown-pragmas -c 
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_ident.c
cc -O2 -pipe  -I/obj/powerpc/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wsystem-headers -Werror 
-Wno-pointer-sign -Wno-unknown-pragmas -c 
/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_inttab.c
cc -O2 -pipe  -I/obj/powerpc/src/cddl/lib/libdtrace  
-I/src/cddl/lib/libdtrace/../../../sys/cddl/compat/opensolaris  
-I/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/head  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libctf/common  
-I/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common
  -I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/common 
-I/src/cddl/lib/libdtrace/../../../sys/cddl/contrib/opensolaris/uts/intel 
-DNEED_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wsystem-headers -Werror 
-Wno-pointer-sign -Wno-unknown-pragmas -c dt_lex.c
cc1: warnings being treated as errors

Re: RFC: New event timers infrastructure

2010-06-20 Thread Alexander Motin
Brandon Gooch wrote:
 On Sun, Jun 20, 2010 at 3:35 PM, Doug Barton do...@freebsd.org wrote:
 On 06/20/10 08:47, Alexander Motin wrote:
 While this can be done in sysctl.conf, it would be better to do it in
 loader.conf to make it applied from the beginning, without on-the-fly
 timers change.
 You're probably right that for something this fundamental it's better to do
 it in loader.conf, however I wanted to mention that I recently changed the
 rcorder for the early boot scripts to run sysctl first for very similar
 reasons.
 
 This is good information, so sorry if I'm being dense: does this mean
 that it should have worked by applying the changes via
 /etc/sysctl.conf?

You are too old. You are already born. (c) Sergey Lukyanenko.
stathz set much earlier, just before Starting kernel event timers
logged first time. It can only be affected from loader.conf.

 No worries though, I've set it in /boot/loader.conf to avoid any
 possible ambiguity or anomalous behavior, and it's working very well!

Nice.

BTW, I've successfully tested suspend/resume on my amd64 laptop with all
timers.

-- 
Alexander Motin
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org