aboutsummaryrefslogtreecommitdiff
path: root/en/news/status/report-2004-05-2004-06.xml
blob: 135a9a92915956bd9a23a485b86bda9f31f32a08 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
<!-- $FreeBSD: www/en/news/status/report-may-2004-june-2004.xml,v 1.4 2004/08/04 01:30:13 cperciva Exp $ -->
<report>
  <date>
    <month>May-June</month>
    <year>2004</year>
  </date>
  
  <section>
    <title>Introduction</title>
    
    <p>This installment of the Bi-Monthly Status Report is a few days late,
      but I'm pleased to say that it is chocked full of over 30 articles.
      May and June were yet again busy months; the Netperf project passed
      major milestones and can now be run with the debug.mpsafenet tunable
      turned on from sources in CVS.  The ARM, MIPS, and PPC ports saw quite
      a bit of progress, as did several other SMPng and Netgraph projects.
      FreeBSD 5.3 is just around the corner, so don't hesitate to grab a
      snapshot and test the progress!</p>

    <p>On a more serious note, it's very important to remember that code
      freeze for FreeBSD 5.3 will happen on August 15, 2004.  This is only
      a few weeks away and there is still a lot to do.  The TODO list for
      the release can be found at
      <a href="http://www.freebsd.org/releases/5.3R/todo.html">
      http://www.freebsd.org/releases/5.3R/todo.html</a>.  If
      you are looking for a way to contribute to the release, this TODO list
      has several items that are in urgent and in need of attention.
      Testing is also very important.  The tree has had some stability
      stability problems in the past few weeks, but there are work-arounds
      that should allow everyone to continue testing and using FreeBSD.  We
      absolutely must have FreeBSD 5.3 be a rock-solid release, so every
      little bit of contributed effort helps!</p>
    <p>Thanks,</p>
    <p>Scott Long</p>
  </section>
  
  <project>
    <title>Network Stack Locking</title>
    
    <contact>
      <person>
        <name>
          <given>Robert</given>
          <common>Watson</common>
        </name>
        <email>rwatson@FreeBSD.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://www.freebsd.org/smp/">FreeBSD SMPng Web Page</url>
      <url href="http://www.watson.org/~robert/freebsd/netperf/">Netperf Web Page</url>
    </links>
    
    <body>
      <p>This project is aimed at converting the FreeBSD network stack from
        running under the single Giant kernel lock to permitting it to
        run in a fully parallel manner on multiple CPUs (i.e., a fully
        threaded network stack).  This will improve performance/latency
        through reentrancy and preemption on single-processor machines, and
        also on multi-processor machines by permitting real parallelism in
        the processing of network traffic. As of FreeBSD 5.2, it was
        possible to run low level network functions, as well as the IP
        filtering and forwarding plane, without the Giant lock, as well as
        "process to completion" in the interrupt handler.  This permitted
        both inbound and outbound traffic to run in parallel across
        multiple interfaces and CPUs.</p>
      
      <p>Work continues to improve the maturity and completeness of the
        locking (and performance) of the network stack for 5.3. The network
        stack development branch has been updated to the latest CVS HEAD,
        as well as the following and more.  Many but not all of these
        changes have been merged to the FreeBSD CVS tree as of the writing
        of this report.  Complete details and more minor changes are
        documented in the README file on the netperf web page.</p>
      
      <ul>
        <li>Addition of hard-coded WITNESS lock orders for socket-related
          locks, route locks, interface locks, file descriptor locks,
          SLIP, and PCB locks for various protocols (UDP, TCP, UNIX
          domain sockets).  (Merged)</li>
        <li>Modified MAC Framework to use inpcbs as the source for mbuf
          labels rather than reaching up to the socket layer, avoiding the
          additional acquisition of socket locks.  Locked access to
          so_label and so_peerlabel using the socket lock throughout;
          assert socket lock in the MAC Framework where depended on.  MAC
          Framework now makes a copy of the socket label before
          externalizing to prevent a copyout while holding the label lock
          (and potentially seeing an inconsistent label). (Merged)</li>
        <li>Extensive annotation of locking state throughout the network
          stack, especially relating to sockets.</li>
        <li>Several locking fixes for ng_base.c, the basic Netgraph
          infrastructure. (Merged)</li>
        <li>Global accept filter list locking, especially during registration.
          (Partially merged)</li>
        <li>Revise locking in socket state transition helpers, such as
          soisconnecting(), soisconnected(), etc, to simplify lock
          handling. (Merged)</li>
        <li>Fix bugs in netatalk DDP locking, merge all netatalk locking to
          CVS. (Merged)</li>
        <li>soref() socket locking assertions and associated fixes.
          (Merged)</li>
        <li>Fifofs now uses its own mutex instead of the vnode interlock to
          synchronize fifo operations, avoiding lock order issues with
          socket buffer locking. (Merged)</li>
        <li>Cleanup of locking related to file descriptor close and Giant
          requirements.  Experimentation with reducing locking here.</li>
        <li>Review and fix several instances of socket locking in the TCP
          code.  (Merged)</li>
        <li>NFS server locking merged to FreeBSD CVS.  (Merged)</li>
        <li>Accept locking merged to rwatson_netperf, and to FreeBSD CVS.
          A new global mutex, accept_mtx, now protects all socket related
          accept queue and state fields (SS_COMP, SS_INCOMP), and flags
          relating to accept are moved from the generic so_state field to
          so_qstate.  accept1() rearranged, as with sonewconn() as a result,
          and a file descriptor leak fixed.  Close a variety of races in
          socket referencing during accept.  soabort() and other partially
          connected socket related functions updated to take locking into
          account.  (Merged)</li>
        <li>Issue associated with non-atomic setting of SS_NBIO in fifofs
          resolved by adding MSG_NBIO.  (Merged)</li>
        <li>Several flags from so_state moved to sb_state so they can be
          locked properly using the socket buffer mutex.  (Merged)</li>
        <li>Socket locks are now not held over calls into the protocol
          preventing many lock order issues between socket and protocol
          locks, and avoiding a substantial amount of conditional locking.
          (Merged)</li>
        <li>mbuma, the UMA-based mbuf allocator, is merged to CVS.  This
          reduces the kernel to one widely used memory allocator, improves
          performance, and allows memory from mbufs to be reclaimed and
          reused for other types of storage when pressure lowers.
          (Merged)</li>
        <li>sb_flags now properly locked.  (Merged)</li>
        <li>Global MAC label ifnet lock introduced to protect labels on
          network interfaces.  (Merged)</li>
        <li>Rewrites of parts of soreceive() and sosend() to improve
          MP safety merged to CVS, including modifications to make sure
          socket buffer cache state is consistent when locks are released.
          sockbuf_pushsync() added to guarantee consistency of cached
          pointers.  (Merged)</li>
        <li>UNIX domain socket locking revised to use a subsystem lock due
          to inconsistencies in lock order and inconsistent coverage ofunpcb
          fields.  Cleanup of global variable locking in UNIX domain
          sockets, Giant handling when entering VFS.  All UNIX domain socket
          locking merged to CVS.  (Merged)</li>
        <li>netisr dispatch introduced in the routing code such that routing
          socket message delivery is performed asynchronously from routing
          events to avoid lock order issues.  (Merged)</li>
        <li>IGMP and multicast locking merged to CVS.  (Merged)</li>
        <li>Cleanup of lasting recursive Giant acquisition left over from
          forwarding/bridging plane only locking.  (Merged)</li>
        <li>ALTQ imported into the FreeBSD in a locked state.  (Merged)</li>
        <li>Conditional locking in sbdrop(), sbdroprecord(), sbrelease(),
          sbflush(), spappend(), sbappendstream(), sbappendrecord(),
          sbinsertoob(), sbappendaddr(), sbappendcontrol() eliminated.
          (Merged)</li>
        <li>Some cleanup of IP stack management ioctls and lock order issues.
          (Merged)</li>
        <li>Cleanup and annotation of sorflush() use of a temporary stack held
          socket buffer during flush.  (Merged)</li>
        <li>Substantial cleanup of socket wakeup mechanisms to drop locks in
          advance of wakeup, avoid holding locks over upcalls, and
          assertions of proper lock state.  (Merged)</li>
        <li>With the integration of revised ifnet cloning, cloning data
          structures are now better locked.  (Merged)</li>
        <li>Socket locking for portalfs.  (Merged)</li>
        <li>Global so_global_mtx introduced to protect generation numbers and
          socket counts.  (Merged)</li>
        <li>KAME IPSEC and FAST_IPSEC now use rawcb_mtx to protect raw socket
          list integration.  More work required here.  (Merged)</li>
        <li>Socket locking around SO_SNDLOWAT and SO_RCVLOWAT.  (Merged)</li>
        <li>soreserve() and sbreserve() reformulation to improve locking and
          consistency.  Similar cleanup in the use of reservation
          functions in tcp_mss().  (Merged)</li>
        <li>Locking cost reduction in sbappend*().  (Merged)</li>
        <li>Global locking for a number of Netgraph modules, including
          ng_iface, ng_ppp, ng_socket, ng_pppoe, ng_frame_relay, ng_tty,
          ng_eiface.  (Merged)</li>
        <li>IPv6 inpcb locking.  Resulting cleanup of inpcb locking
          assertions, and enabling of inpcb locking assertions by default
          even with IPv6 compiled in.</li>
        <li>if_xl now MPSAFE.  (Merged)</li>
        <li>soreceive() non-inline OOB support placed in its own function.
          (Merged)</li>
        <li>NFS client socket locking.  (Merged)</li>
        <li>SLIP now uses a asynchronous task queue to prevent Giant-free
          entrance of the TTY code.</li>
        <li>E-mail sent to current@ providing Giant-free operation guidelines
          and details.</li>
      </ul>
    </body>
  </project>
  
  <project>
    <title>FreeBSD/MIPS Status Report</title>
    
    <contact>
      <person>
        <name>
          <given>Juli</given>
          <common>Mallett</common>
        </name>
        <email>jmallett@FreeBSD.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://www.FreeBSD.org/projects/mips/" />
      <url href="http://www.mdstud.chalmers.se/~md1gavan/mips64emul/">mips64emul</url>
    </links>
    
    <body>
      <p>In the past two months, opportunities to perform a good chunk of
        work on FreeBSD/MIPS have arisen and significant issues with
        context switching, clocks, interrupts, and kernel virtual memory
        have been resolved.  A number of issues with caches were fixed,
        however those are far from complete and at last check, there
        were issues when running cached which would prevent booting
        sometimes.
        Due to toolchain issues in progress, current kernels are no
        longer bootable on real hardware.</p>
      <p>A 64-bit MIPS emulator has arisen giving the ability to test and
        debug in an emulator, and much testing has taken place in it. 
        It has been added to the FreeBSD ports tree, and the port will be
        actively tracking the main codebase as possible.  In general,
        FreeBSD/MIPS kernels should run fine in it.</p>
      <p>Before toolchain and cache issues, the first kernel threads would
        run, busses and some devices would attach, and the system would
        boot to a mountroot prompt.</p>
    </body>
  </project>
  
  <project>
    <title>PowerPC Port</title>
    
    <contact>
      <person>
        <name>
          <given>Peter</given>
          <common>Grehan</common>
        </name>
        
        <email>grehan@FreeBSD.org</email>
      </person>
    </contact>
    
    <body>
      <p>The port has been moving along steadily. There have been
        reports of buildworld running natively. Works is almost complete
        on make release so there will be bootable CD images in the near
        future.</p>
    </body>
  </project>
  
  <project>
    <title>IPFilter Upgraded to 3.4.35</title>
    <contact>
      <person>
        <name>
          <given>Darren</given> <common>Reed</common>
        </name>
        <email>darrenr@FreeBSD.org</email>
      </person>
    </contact>
    <links>
      <url href="http://coombs.anu.edu.au/~avalon/ip-filter.html">IPFilter home page</url>
    </links>
    <body>
      <p>IPFilter has been upgraded in both FreeBSD-current and 4-STABLE
        (post 4.10) from version 3.4.31 to 3.4.35.</p>
    </body>
  </project>
  
  <project>
    <title>Low-overhead performance monitoring for FreeBSD</title>
    
    <contact>
      <person>
        <name>
          <given>Joseph</given>
          <common>Koshy</common>
        </name>
        <email>jkoshy@FreeBSD.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://people.freebsd.org/~jkoshy/projects/perf-measurement/">A
        best-in-class performance monitoring system for FreeBSD built
        over the hardware performance monitoring facilities of modern
        CPUs.</url>
    </links>
    
    <body>
      <p>The current design attempts to support both per-process and
        system-wide statistical profiling and per-process "virtual"
        performance counters.  The userland API libpmc(3) is somewhat
        stable now, but the kernel module's design is being redone to
        handle MP better.  Initial development is targeting the AMD
        Athlon CPUs, but the intent is to support all the CPUs that
        FreeBSD runs on.</p>
      
      <p>An early prototype is available under Perforce [under
        //depot/user/jkoshy/projects/pmc/].</p>
    </body>
  </project>
  
  <project>
    <title>FreeBSD profile.sh</title>
    
    <contact>
      <person>
        <name>
          <given>Tobias</given>
          
          <common>Roth</common>
        </name>
        
        <email>ports@fsck.ch</email>
      </person>
    </contact>
    
    <links>
      <url href="https://projects.fsck.ch/profile/" />
    </links>
    
    <body>
      <p>FreeBSD profile.sh is an enhancement to the FreeBSD 5 rcng boot
        system, targeted at laptops. One can configure multiple network
        environments (eg, home, work, university). After this initial
        configuration, the laptop detects automatically in what environment
        it is started and configures itself accordingly. Not only network
        settings, but almost everything from under /etc can be configured
        per environment.  It is also possible to suspend the machine in one
        environment and wake it up in a different one, and reconfiguration
        will happen automatically.</p>
    </body>
  </project>
  
  <project>
    <title>Sync protocols (Netgraph and SPPP)</title>
    
    <contact>
      <person>
        <name>
          <given>Roman</given>
          <common>Kurakin</common>
        </name>
        <email>rik@FreeBSD.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://www.freebsd.org/~rik">Current code, ideas, problems.</url>
    </links>
    
    <body>
      <p>Currently I work on two directions: if_spppfr.c and sppp locking
        (on behalf of netperf). At the moment of writing this sppp locking
        is not ready yet. But it would be ready in couple of days. Also you
        may find as a part of this work some user space fixes for rwatson
        netperf code (Only that I was able to catch while world compilation.
        If you know some others let me know and I'll try to fix them
        too).</p>
      
      <p>Since sppp code is quite big and state machine is very complicated,
        it would be difficult to test all code paths. I will glad to get
        any help in testing all this stuff. More tester more probability to
        test all possible cases.</p>
      
      <p>Work on FRF.12 (ng_frf12) is frozen since of low interest and
        lack of time. Current state of stable code: support of FRF.12
        End-to-End fragmentation. Support of FRF.12 Interface (UNI and NNI)
        fragmentation is not tested.</p>
    </body>
  </project>
  
  <project>
    <title>Cronyx Adapters Drivers</title>
    
    <contact>
      <person>
        <name>
          <given>Roman</given>
          <common>Kurakin</common>
        </name>
        <email>rik@FreeBSD.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://www.cronyx.ru/hardware/wan.html">Cronyx WAN Adapters.</url>
    </links>
    
    <body>
      <p>cp(4) driver for Cronyx Tau-PCI was added. Cronyx Tau-PCI is family
        of synchronous WAN adapters with various set of interfaces such as
        V.35, RS-232, RS-530(449), X.21, E1, E3, T3, STS-1. This is a third
        family of Cronyx adapters that is supported by FreeBSD now. Now all
        three drivers cx(4), ctau(4) and cp(4) are on both major branches
        (HEAD and RELENG_4).</p>
      <p>Busdma conversion was recently finished. Current work is
        concentrated on locking both for adapters drivers and for sppp (see
        my other report for additional information).</p>
    </body>
  </project>
  
  <project>
    <title>Network interface naming changes</title>
    
    <contact>
      <person>
        <name>
          <given>Brooks</given>
          <common>Davis</common>
        </name>
        <email>brooks@FreeBSD.org</email>
      </person>
    </contact>
    
    <body>
      <p>An enhanced network interface cloning API has been committed.  It
        allows interfaces to support more complex names then the current
        <code>name#</code> style.  This functionality has been used to
        enable interesting cloners like auto-configuring vlan interfaces.
        Other features include locking of cloner structures and the ability
        of drivers to reject destroy requests.</p>
      <p>Work on userland support for this functionality is ongoing.</p>
    </body>
  </project>
  
  <project>
    <title>SMPng Status Report</title>
    
    <contact>
      <person>
        <name>
          <given>John</given>
          <common>Baldwin</common>
        </name>
        <email>jhb@FreeBSD.org</email>
      </person>
      <person>
        <email>smp@FreeBSD.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://www.FreeBSD.org/smp/" />
    </links>
    
    <body>
      <p>Not a lot happened on the SMPng front outside of the work on
        locking the network stack (which is a large amount of work).
        The priorities of the various software interrupt threads were
        corrected and locking for taskqueues was improved.  The return
        value of the sema_timedwait() function was adjusted to be more
        consistent with cv_timedwait().  A small fix was made to the
        sleepqueue code to shorten the amount of time that a
        sleepqueue chain lock is held when waking up threads.  Some
        simple debug code for profiling the hash tables used in the
        sleep queue and turnstile code was added.  This will allow
        developers to measure the impact of any tweaks to the hash
        table sizes or the hash algorithm.</p>
    </body>
  </project>
  
  <project>
    <title>i386 Interrupt Code &amp; PCI Interrupt Routing</title>
    
    <contact>
      <person>
        <name>
          <given>John</given>
          <common>Baldwin</common>
        </name>
        <email>jhb@FreeBSD.org</email>
      </person>
    </contact>
    
    <body>
      <p>Support for programming the polarity and trigger mode of
        interrupt sources at runtime was added.  This includes a
        mini-driver for the ELCR register used to control the
        configuration for ISA and EISA interrupts.  The atpic driver
        reprograms the ELCR as necessary, while the apic driver
        reprograms the interrupt pin associated with an interrupt
        source as necessary.  The information about which
        configuration to use mostly comes from ACPI.  However,
        non-ACPI systems also force any ISA interrupts used to route
        PCI interrupts to use active-low polarity and level
        trigger.</p>
      
      <p>Support for suspend and resume on i386 was also slightly
        improved.  Suspend and resume support was added to the ELCR,
        $PIR, and apic drivers.</p>
      
      <p>The ACPI PCI-PCI bridge driver was fixed to fall back to the
        PCI-PCI bridge swizzle method for routing interrupts when a
        routing table was not provided by the BIOS.</p>
      
      <p>Mixed mode can now be disabled or enabled at boot time via a
        loader tunable.</p>
    </body>
  </project>
  
  <project>
    <title>KDE on FreeBSD</title>
    
    <contact>
      <person>
        <name>
          <given>Michael</given>
          <common>Nottebrock</common>
        </name>
        <email>lofi@FreeBSD.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://freebsd.kde.org" />
    </links>
    
    <body>
      <p>The work on converting the build switches/OPTIONS
        currently present in the ports of the main KDE modules into
        separate ports in order to make packages available for the
        software/features they provide is progressing. Porting of 
        KOffice 1.3.2 are nearly completed. The Swedish FreeBSD
        snapshot server <a href="http://snapshots.se.freebsd.org">
	http://snapshots.se.freebsd.org</a>,
        operated and maintained by members of the KDE/FreeBSD team,
        is back up and running at full steam. Additional amd64
        hardware has been added and amd64 snapshots will be available
        soon.</p>
    </body>
  </project>
  
  <project>
    <title>Various GEOM classes and geom(8) utility</title>
    
    <contact>
      <person>
        <name>
          <given>Pawel Jakub</given>
          <common>Dawidek</common>
        </name>
        <email>pjd@FreeBSD.org</email>
      </person>
    </contact>
    
    <body>
      <p>I'm working on various GEOM classes. Some of them are already
        committed and ready for use (GATE, CONCAT, STRIPE, LABEL, NOP). The
        MIRROR class is finished in 90% and will be committed in very near
        future.  Next I want to work on RAID3 and RAID5 implementations.
        Userland utility to control GEOM classes (geom(8)) is already in
        the tree.</p>
    </body>
  </project>
  
  <project>
    <title>FreeBSD Handbook, 3rd Edition, Volume II: Administrator Guide</title>
    
    <contact>
      <person>
        <name>
          <given>Murray</given>
          <common>Stokely</common>
        </name>
        <email>murray@FreeBSD.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://www.freebsd.org/docproj/handbook3.html">FreeBSD Handbook 3rd Edition Task List.</url>
    </links>
    
    <body>
      <p>The Third Edition of the FreeBSD Handbook has been split
        into two volumes.  The first volume, the User Guide, has been
        published.  Work is progressing on the second volume.  The
        following chapters are included in the second volume :
        advanced-networking, network-servers, config, boot, cutting-edge,
        disks, l10n, mac, mail, ppp-and-slip, security, serialcomms,
        users, vinum, eresources, bibliography, mirrors.  Please see the
        Task List for information about what work remains to be done.  In
        addition to technical and grammatical review, a number of HTML
        output assumptions in the document need to be corrected.</p>
    </body>
  </project>
  
  <project>
    <title>VuXML and portaudit</title>
    
    <contact>
      <person>
        <name>
          <given>Tom</given>
          <common>Rhodes</common>
        </name>
        <email>trhodes@FreeBSD.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://www.vuxml.org">VuXML DTD and more information</url>
      <url href="http://vuxml.FreeBSD.org">Rendered contents of FreeBSD VuXML</url>
      <url href="http://www.freebsd.org/ports/portaudit/">Rendered version of portaudit.txt</url>
    </links>
    
    <body>
      <p>The portaudit utility is currently an add-on to FreeBSD
        designed to give administrators and users a heads up
        with regards to security vulnerabilities in third
        party software.  The VuXML database keeps a record
        of these security vulnerabilities along with internal
        security holes.  When installed, the portaudit utility
        periodically downloads a database with known issues and
        checks all installed ports or packages against it; should
        it find vulnerable software installed the administrator
        or user is notified during the daily run output of the
        periodic scripts.</p>
      
      <p>These utilities are considered to be of production
        quality and discussion is taking place over whether or not
        they should be included as part of the base system.  All
        ports committers are urged to add entries when when a
        vulnerability is discovered; any questions may be sent to
        eik@ or myself.</p>
    </body>
  </project>
  
  <project>
    <title>
      Bluetooth stack for FreeBSD (Netgraph implementation)
    </title>
    
    <contact>
      <person>
        <name>
          <given>Maksim</given>
          <common>Yevmenkin</common>
        </name>
        <email>m_evmenkin@yahoo.com</email>
      </person>
    </contact>
    
    <body>
      <p>Bluetooth code was marked as non-i386 specific. It is now possible
        to build it on all supported platforms. Please help with testing.
        Other then this there was not much progress during last few months.
        I've been very busy with Real Life.</p>
    </body>
  </project>
  
  <project>
    <title>FreeBSD Dutch Documentation Project</title>
    <contact>
      <person>
        <name>
          <given>Remko</given>
          <common>Lodder</common>
        </name>
        <email>remko@elvandar.org</email>
      </person>
    </contact>
    <links>
      <url href="http://www.evilcoder.org/freebsd_html">Preview html documentation</url>
      <url href="http://www.evilcoder.org/freebsd/handbook.tbz">Preview documentation tree</url>
      <url href="http://www.evilcoder.org/freebsd/html.tbz">Preview html in in tbz</url>
    </links>
    <body>
      <p>The FreeBSD Dutch Documentation project is a ongoing project
        translating the FreeBSD handbook {and others} to  the dutch
        language. We are still on the look for translators and people
        that are willing to check the current html documentation.
        If you are interested, contact me at the email address shown   
        above. We currently are reading for some checkups and then
        insert the first documents into the documentation tree.</p>
    </body>
  </project>
  
  <project>
    <title>FreeBSD Brazilian Documentation Project</title>
    
    <contact>
      <person>
        <name>
          <given>DOC-BR</given>
          <common>Discussion List</common>
        </name>
        <email>doc@fugspbr.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://doc.fugspbr.org" />
      <url href="http://lists.fugspbr.org/listinfo.cgi/doc-fugspbr.org" />
      <url href="http://developer.berlios.de/projects/doc-br/" />
    </links>
    
    <body>
      <p>The FreeBSD Brazilian Documentation Project is an effort of
        the Brazilian FreeBSD Users Group (FUG-BR) to translate the
        available documentation to pt_BR. We are proud to announce
        that we've finished the Handbook and FDP Primer translation and
        they are being revised. Both should be integrated to the FreeBSD
        CVS repository shortly.</p>
      <p>There are many other articles being translated and their status
        can be checked at our website. If you want to help please
        create an account at BerliOS, since our CVS repository is being
        hosted there, and contact us through our mailing list. Any help is
        welcome!</p>
    </body>
  </project>
  
  <project>
    <title>Packet Filter - pf</title>
    
    <contact>
      <person>
        <name>
          <given>Max</given>
          <common>Laier</common>
        </name>
        <email>mlaier@FreeBSD.org</email>
      </person>
      <person>
        <name>
          <given>Daniel</given>
          <common>Hartmeier</common>
        </name>
        <email>dhartmei@FreeBSD.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://www.benzedrine.cx/pf.html">The pf homepage.</url>
    </links>
    
    <body>
      <p>We imported pf as of OpenBSD 3.5 stable on June, 17th which will be
        the base for 5-STABLE pf (according to the current schedule).  The
        most important improvement in this release is the new interface
        handling which makes it possible to write pf rule sets for
        hot-pluggable devices and pseudo cloning devices, before they exist.
        The import of the ALTQ framework enabled us to finally provide the
        related pf functions as well.</p>
      
      <p>Before 5-STABLE we will import some bug fixes from OpenBSD-current,
        which have not been merged to their stable branch, as well as some
        FreeBSD specific features. The planned ALTQ API make-over will also
        affect pf.</p>
      
      <p>We are (desperately) looking for non-manpage documentation for
        FreeBSD pf and somebody to write it. Few things have changed
        so a port of the excellent "PF FAQ" on the OpenBSD homepage should
        be fitting. There are, however, a couple of points that need
        conversion.  A simple tutorial how to setup a NAT gateway with pf
        would also help.  The in-kernel NAT engine is very easy to use, we
        should tell people about this alternative. This is even more true
        since the pf module now plugs into GENERIC without modifications.</p>
    </body>
  </project>
  
  <project>
    <title>ALTQ import</title>
    
    <contact>
      <person>
        <name>
          <given>Max</given>
          <common>Laier</common>
        </name>
        <email>mlaier@FreeBSD.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://www.csl.sony.co.jp/person/kjc/kjc/software.html#ALTQ"> ALTQ homepage.</url>
      <url href="http://www.rofug.ro/projects/freebsd-altq/">ALTQ integration in FreeBSD project.</url>
      <url href="http://kerneltrap.org/node.php?id=505">ALTQ merged into pf.</url>
      <url href="http://people.freebsd.org/~mlaier/ALTQ_driver/" />

    </links> 
    <body>
      <p>The ALTQ framework is part of KAME for more than 4 years and has
        been adopted by Net- and OpenBSD since more than 3 years. It
        provides means of managing outgoing packets to do QoS and bandwidth
        limitations.  OpenBSD developed a different way to interact with
        ALTQ using pf, which was adopted by KAME as the "default for
        everyday use".</p>
      
      <p>The Romanian FreeBSD Users Group has had a project to work towards
        integration of ALTQ into FreeBSD, which provided a very good
        starting point for the final import. The import only provides the
        "pf mode" configuration and classification API as the older ALTQ3
        API does not suit to our SMP approach.</p>
      
      <p>A reworked configuration API (decoupled from pf) is in the making
        as are additional driver modifications. Both should be done before
        5-STABLE is branched, although additional drivers can be imported
        during the lifetime of 5-STABLE as well.</p>
    </body>
  </project>
  
  <project>
    <title>HP Network Scanjet 5</title>

    <contact>
      <person>
        <name>
          <given>Julian</given>
          <common>Stacey</common>
        </name>
        <email>jhs@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://berklix.com/scanjet/">HP Network Scanjet 5 Running FreeBSD Inside</url>
    </links>

    <body>
      <p>HP Network Scanjet 5 can unobtrusively run FreeBSD <i>inside</i> the
        scanner.  Those who miss their Unix at work can have a FreeBSD box,
        un-noticed &amp; un-challenged by blinkered managers who block any
        non Microsoft PC in the building.  http://berklix.com/scanjet/</p>
    </body>
  </project>
  
  <project>
    <title>EuroBSDCon 2004 registration now open</title>
    
    <contact>
      <person>
        <name>
          <given>Patrick M.</given>
          <common>Hausen</common>
        </name>
        <email>hausen@punkt.de</email>
      </person>
    </contact>
    
    <links>
      <url href="http://www.eurobsdcon2004.de/">EuroBSDCon 2004 official website</url>
    </links>
    
    <body>
      <p>Registration for EuroBSDCon 2004 taking place in Karlsruhe, Germany,
        from Oct. 29th to 31st has just opened.  An early bird discount will
        be offered to all registering until Aug. 15th. Please see the
        conference website for details.</p>
    </body>
  </project>
  
  <project>
    <title>Buf Junta project</title>
    
    <contact>
      <person>
        <name>
          <given>Poul-Henning</given>
          <common>Kamp</common>
        </name>
        <email>phk@FreeBSD.org</email>
      </person>
    </contact>
    
    <body>
      <p>The buf-junta project is underway, I am trying to bisect the code
        such that we get a struct bufobj which is the handle and method
        carrier for a buffer-cache object.  All vnodes contain a bufobj, but
        as filesystems get migrated to GEOM backing, bufobj's will exist
        which do not have an associated vnode.  The work is ongoing.</p>
    </body>
  </project>
  
  <project>
    <title>TTY subsystem realignment</title>
    
    <contact>
      <person>
        <name>
          <given>Poul-Henning</given>
          <common>Kamp</common>
        </name>
        <email>phk@FreeBSD.org</email>
      </person>
    </contact>
    
    <body>
      <p>An effort to get the tty subsystem out from under Giant has
        morphed into an more general effort to eliminate a lot of
        code which have been improperly copy &amp; pasted into device
        drivers.  In an ideal world, tty drivers would never get
        near a cdevsw, but since some drivers are more than just
        tty drivers (for instance sync) a more sensible compromise
        must be reached.  The work is ongoing.</p>
    </body>
  </project>
  
  <project>
    <title>kgi4BSD</title>
    
    <contact>
      <person>
        <name>
          <given>Nicholas</given>
          <common>Souchu</common>
        </name>
        <email>nsouch@FreeBSD.org</email>
      </person>
    </contact>
    
    <links>
      <url href="http://www.FreeBSD.org/~nsouch/kgi4BSD"> Project URL</url>
    </links>
    
    <body>
      <p>KGI is going slowly but surely. The port of the KGI/Linux accel to
        FreeBSD is in progress. It's no more than a double buffering API for
        graphic command passing to the HW engine.</p>
      
      <p>Most of the work in the past months was about console management
        and more especially dual head console. Otherwise a new driver
        building tree is now ready to compile Linux and FreeBSD drivers in
        the same tree.</p>
      
      <p>Documentation about KGI design is in progress.</p>
    </body>
  </project>
  
  <project>
    <title>FreeBSD ports monitoring system</title>
    
    <contact>
      <person>
        <name>
          <given>Mark</given>
          <common>Linimon</common>
        </name>
        
        <email>linimon_at_lonesome_dot_com</email>
      </person>
    </contact>
    
    <links>
      <url href="http://portsmon.firepipe.net/index.html">FreeBSD ports monitoring system</url>
    </links>
    
    <body>
      <p>The system continues to function well.  The accuracy of the
        automatic classification algorithm has been improved by
        assigning a higher priority to port names found in pieces of
        Makefiles.</p>
      <p>Several bugs had to be fixed due to the transition from bento to
        pointyhat.  For about two weeks the URLs to the build errors
        were wrong.  This has now been corrected (but note that some of the
        pointyhat summary pages themselves still show the broken
        links.)</p>
      <p>A report was added to show only PRs in the 'feedback' state, so
        that committers can focus on maintainer and/or responsible timeouts.
        (As a reminder, the policy is 2 weeks).  Another report on 'ports
        that are in ports/MOVED, but still exist' has also been added to the
        Anomalies page.  Sometimes these are actual errors but not always.</p>
      <p>Here are my latest observations about the trends in ports PRs:</p>
      <ul>
        <li>We were (very briefly) down to 650 ports PRs.  From looking
          at the graphs, this appears to be the lowest number since 2001.
          This is despite the fact that between the two time periods the
          number of ports had increased 70%.</li>
        <li>We have made a little bit of progress on the number of PRs
          which apply to existing ports and have been assigned to a FreeBSD
          committer, from 400 to around 350.  This is partly due to some
          committers going through the database, putting old PRs into the
          'feedback' state, and then later invoking the 'maintainer timeout'
          rule mentioned above.  (In some cases the PRs are now too old to
          still apply, and those are just closed.)</li>
        <li>A few maintainers are currently responsible for one-third of
          those 350.  Please, if you feel that you are over committed,
          consider asking for new volunteers to maintain these ports.</li>
        <li>In terms of build errors, there is some new breakage from
          the preliminary testing with gcc3.4, which is even stricter with
          respect to the code it will accept than was gcc3.3.  Many of these
          errors are shown as 'unknown' by the classification script.  I
          have submitted a patch to fix this.</li>
        <li>The majority of the build errors are still due to compilation
          problems, primarily from the gcc upgrades.  Since FreeBSD tends to
          be at the forefront of gcc adaptation, this is to be expected, but
          IMHO we should really try to fix as many of these as possible
          before 5.3 is released.</li>
        <li>The next highest number of build errors are caused by code
          that does not build on our 64-bit architectures due to the
          assumption that "all the world's a PC".
          <a href="http://portsmon.firepipe.net/ploticus/uniqueerrorcounts.html">
          Here is the entire list</a>; the individual bars are
          clickable.</li>
      </ul>
    </body>
  </project>
  
  <project>
    <title>Improved Multibyte/Wide Character Support</title>
    <contact>
      <person>
        <name>
          <given>Tim</given>
          <common>Robbins</common>
        </name>
        <email>tjr@FreeBSD.org</email>
      </person>
    </contact>
    <body>
      <p>Many more text-processing utilities in the FreeBSD base system have
        been updated to work with multibyte characters, including comm, cut,
        expand, fold, join, paste, unexpand, and uniq. New versions of GNU
        grep and GNU sort (from coreutils) have been imported, together with
        multibyte support patches from developers at IBM and Red Hat.</p>
      <p>Future work will focus on modifying the regular expression
        functions to work with multibyte characters, improving performance
        of the C library routines, and updating the remaining utilities (sed
        and tr are two important ones still remaining).</p>
    </body>
  </project>
  
  <project>
    <title>FreeBSD/arm</title>
    
    <contact>
      <person>
        <name>
          <given>Olivier</given>
          <common>Houchard</common>
        </name>
        <email>cognet@FreeBSD.org</email>
      </person>
    </contact>
    
    <body>
      Not much to report, Xscale support is in progress, and should
      boot at least single user really soon on an Intel IQ31244
      <p>Evaluation board.</p>
    </body>
  </project>

  <project>
    <title>CAM Lockdown</title>

    <contact>
      <person>
        <name>
          <given>Scott</given>
          <common>Long</common>
        </name>
        <email>scottl@freebsd.org</email>
      </person>
    </contact>

    <body>
      <p>Not much coding has taken place on this lately, with the recent
        focus being on refining the design.  We are currently investigating
        per-CPU completion queues and threads in order to reduce locks and
        increase concurrency.  Also reviewing the BSD/OS CAM lockdown to see
        what ideas can be shared.  Work should hopefully puck back up in late
        July.  Development is taking place in the FreeBSD Perforce repository
        under the <tt>//depot/projects/scottl-camlock/...</tt> branch for now.</p>
    </body>
  </project>

  <project>
    <title>Project Mini-Evil</title>

    <contact>
      <person>
        <name>
          <given>Scott</given>
          <common>Long</common>
        </name>
        <email>scottl@freebsd.org</email>
      </person>
    </contact>

    <body>
      <p>Project Mini-Evil is an attempt to extend Bill Paul's 'Project Evil'
        Windows NDIS wrapper layer to the SCSI MiniPort and StorePort layers.
        While drivers exist for most storage controllers that are on the
        market today, many companies are integrating software RAID into their
        products but not providing any source code or design specs.  Instead
        of constantly reverse-engineering these raid layers and attempting to
        shoehorn them into the ata-raid driver, Project Mini-Evil will run
        the Windows drivers directly.  It will hopefully also run most any
        SCSI/ATA/RAID drivers that conform to the SCSI Miniport or Storeport
        specification.</p>
      <p>Work on this project is split between making the NDIS wrapper code
        more general and implementing the new APIs.  Development is taking
        place in the FreeBSD Perforce repository under the
        //depot/projects/sonofevil/... branch.</p>
    </body>
  </project>

</report>