Several members of the PC-BSD and FreeNAS teams will be attending MeetBSD, to be held on November 1 and 2 in San Jose, CA. There’s some great presentations lined up for this event and registration is only $75.

As usual, we’ll be giving out PC-BSD and FreeNAS media and swag. There will also be a FreeBSD Foundation booth that will accept donations to the Foundation. The BSDA certification exam will be held at 18:00 on November 1.

Pootle Translation System is now Updated to Version!

If any of you have tried to use the PC-BSD Translation / Pootle web interface in the last year you probably don’t have a lot of good things to say about it.  A 35 word translation might take you a good 30 minutes between the load times (if you could even login to the site without it timing out).  Thankfully those days are behind us!  PC-BSD has upgraded their translation system to use Pootle version and it is blazingly fast.  I went through localizing a small 35 word applet for PC-BSD and it took me roughly 4 minutes compared to what would have taken at least half an hour before due to the slowness of the old pootle software.  Check out the new translation site at translate.pcbsd.org.

There’s a couple of things you are going to want to keep in mind about the new translation system.  You will have to create a new account.  Upgrading Pootle directly was proving disastrous so we exported all the strings and imported them into the new Pootle server.  What this means is no accounts were transferred since a direct upgrade was not done.  This also means that the strings that were brought in also appear as “fuzzy” translations.  If you have some free time you can help by going to the translation site and approving some of the fuzzy translations.  Many languages have already been done they just need to be reviewed and marked as acceptable (uncheck the fuzzy box if you are 100% certain on the translation).

I hope you guys are as excited as I am over the new translation possibilities!  For more information on how you can help with localization / translating contact me at [email protected]

Best Regards,



EuroBSDCon Trip Report: Kamil Czekirda

The next trip report is from Kamil Czekirda:

The FreeBSD Foundation sponsored my trip to Sofia, Bulgaria in September 2014, where I attended the FreeBSD DevSummit and EuroBSDcon 2014. I'm a GSoC student and it was my first DevSummit. I would like to thank the FreeBSD Foundation for sponsoring my trip, Gavin Atkinson for an invitation to the DevSummit, Mariusz Zaborski for support during the conference, and the mentor of my project, Devin Teske, for directions.

I arrived in Sofia on Wednesday evening, found my Hill hotel, checked in, and dropped off my luggage. I tried to contact Mariusz, the only person I knew. It was too late for lounging about so I stayed for the rest of the day at the hotel.

The first day of the Developer Summit started with self-presentations and trying to divide participants into smaller groups. It didn’t happen and everybody stayed in the room for one track. It was the first time I could see who is who, because I knew only people’s nicks or names . That day we discussed the future of the 11.0 release, 10/40/100GigE, ports and packages, embedded systems, mainly ARM and MIPS, and tools and support for cross-compilation. That day I met some people: the first was Michał Dubiel from Semihalf. We talked about Network Virtualization, SDN, and OpenContrail. The next person was Daniel Peyrolon, another GSoC student. I showed him my project and he showed me his magic. During lunch break, Mariusz introduced me to Hiroki Sato. We talked about the organization of the conference from the organizers’ side.

The second day of the DevSummit started by dividing groups in two parts. The first track was about developer tools like Phabricator and Jenkins and DNS and DNSSEC on FreeBSD. The second track was about ASLR. I attended the first track. I tried to pass BSDA certificate, so I missed the most important aspects of the DNS session. After lunch break, we had a discussion about crypto algorithms and a documentation session. It was my first DevSummit, so I was only an observer. Next person who Mariusz introduced me to was Gavin Atkinson, but there was no time to talk, just say 'Hi'.

The main conference started on Saturday with Jordan Hubbard's keynote about the past and the future of FreeBSD. I stayed in this track for the next talks. Kris Moore talked about PC-BSD and features based on ZFS, such as snapshots, replication, and encrypted zfs-root with only one pool. Next talk which I attended was about implementation of ZFS. Kirk McKusick made the introduction to internal implementation. After lunch break I joined John-Mark Gurney’s talk about optimizing GELI performance. Results of speed benchmark are amazing. For the rest of the talks, I changed the room and attended Henning Brauer’s talk about OpenBGPD. He talked about the history of the open source implementation of the Border Gateway Protocol. Next, I changed the track the second time and joined Peter Hessler’s talk about routing domains. The last talk was about using QEMU and cross-compilation packages for the ARM architecture. Sean Bruno made a demonstration on how to use those tools. Unfortunately, I wasn’t able to attend the amazing Andy Tanenbaum’s talk. After the last speech, I found Gavin and we talked about my GSoC project, the documentation for it, and what I should do in the near future. He offered me his help and introductions to people from the community who could take a look at my code. That day I met Jakub Klama, who is also from Poland. He said 'Hi' in Polish and I was surprised. Jakub was the third FreeBSD GSoC student attending EuroBSDcon 2014. It was sad as I expected to meet more students.

During a social event I met with Eric Allman and Kirk McKusick. Of course, Mariusz was the middleman. Eric told us a lot of stories from his life, about the first steps of networking and transatlantic communication. He drew attention to students’ bad practices on memory management and how important it is. I talked with Kirk about my project and how GSoC looks from the organizational side.

The second day of EuroBSDcon was less busy for the people after the social event. I started with Baptiste Daroussin’s talk about cross building. I attended  the LibreSSL and ASLR talks. Very interesting for me was the talk about OpenContrail and OpenStack for FreeBSD. Michał Dubiel described software architecture and support for OpenContrail and OpenStack in the FreeBSD world. The most interesting talk was about securing sensitive data at the
University of Oslo. Dag-Erling Smøgrav described the system they use. The keynote was very interesting too. Atanas Chobanov showed us how to use SecureDrop, Tails, and Tor for anonymously submitting documents. During the closing session, Deb Goodkin presented about the FreeBSD Foundation, and Shteryana Shopova and Paul Schenkeveld presented about the EuroBSD Foundation. After the closing session, we organized an unofficial social event.

I think that attending conferences is a huge motivation for work for new people. It was a great opportunity to meet people I had known only from the Internet. I hope I will be able to participate in DevSummits and BSD conferences again in the future.

More RSS UDP tests – this time on a Dell R720

I've recently had the chance to run my RSS UDP test suite up on a pair of Dell R720s. They came with on-board 10G Intel NICs (ixgbe(4) in FreeBSD) so I figured I'd run my test suite up on it.

Thank you to the Enterprise Storage Division at Dell for providing hardware for me to develop on!

The config is like in the previous blog post, but now I have two 8-core Sandy Bridge Xeon CPUs to play with. To simply things (and to not have to try and solve NUMA related issues) I'm running this on the first socket. The Intel NIC is attached to the first CPU socket.


  • CPU: Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz (2000.04-MHz K8-class CPU) x 2
  • RAM: 64GiB
  • HTT disabled

# ... until ncpus is tunable, make it use 8 buckets.

This time I want to test with 8 streams, so after some trial and error I found the right IPv4 addresses to use:

  • Server:
  • Client:,,,,,,,
The test was like before - the server ran one rss-udp-srv program that spawns one thread per RSS bucket. The client side runs rss-clt programs to generate traffic - but now there's eight of them instead of four.

The results are what I expected: the contention is in the same place (UDP receive) and it's per-core - it doesn't contend between CPU cores.

Each CPU is transmitting and receiving 215,000 510-byte UDP frames a second. It scales linearly - 1 CPU is 215,000 TX/RX frames a second. 8 CPUs is 215,000 TX/RX frames a second * 8. There's no degrading as the CPU core count increases.

That's 1.72 million packets per second. At 510 bytes frames it's about 7 gigabits/sec in and out.

The other 8 cores are idle. Ideally we'd be able to run an application in those cores - so hopefully I can get my network / rss library up and running enough to prototype an RSS-aware memcached and see if it'll handle this particular workload.

It's a far cry from what I think we can likely achieve - but please keep in mind that I know I could do more awesome looking results with netmap, PF_RING or Intel's DPDK software. What I'm trying to do is push the existing kernel networking subsystem to its limits so the issues can be exposed and fixed.

So, where's the CPU going?

In the UDP server program (pid 1620), it looks thus:

# pmcstat -P CPU_CLK_UNHALTED_CORE -T -w 1 -p 1620
PMC: [CPU_CLK_UNHALTED_CORE] Samples: 34298 (100.0%) , 155 unresolved

  8.0 kernel     fget_unlocked        kern_sendit:4.2 kern_recvit:3.9
  7.0 kernel     copyout              soreceive_dgram:5.6 amd64_syscall:0.9
  3.6 kernel     __mtx_unlock_flags   ixgbe_mq_start
  3.5 kernel     copyin               m_uiotombuf:1.8 amd64_syscall:1.2
  3.4 kernel     memcpy               ip_output:2.9 ether_output:0.6
  3.4 kernel     toeplitz_hash        rss_hash_ip4_2tuple
  3.3 kernel     bcopy                rss_hash_ip4_2tuple:1.4 rss_proto_software_hash_v4:0.9
  3.0 kernel     _mtx_lock_spin_cooki pmclog_reserve
  2.7 kernel     udp_send             sosend_dgram
  2.5 kernel     ip_output            udp_send

In the NIC receive / transmit thread(s) (pid 12), it looks thus:

# pmcstat -P CPU_CLK_UNHALTED_CORE -T -w 1 -p 12

PMC: [CPU_CLK_UNHALTED_CORE] Samples: 79319 (100.0%) , 0 unresolved

 10.3 kernel     ixgbe_rxeof          ixgbe_msix_que
  9.3 kernel     __mtx_unlock_flags   ixgbe_rxeof:4.8 netisr_dispatch_src:2.1 in_pcblookup_mbuf:1.3
  8.3 kernel     __mtx_lock_flags     ixgbe_rxeof:2.8 netisr_dispatch_src:2.4 udp_append:1.2 in_pcblookup_mbuf:1.1 knote:0.6
  3.8 kernel     bcmp                 netisr_dispatch_src
  3.6 kernel     uma_zalloc_arg       sbappendaddr_locked_internal:2.0 m_getjcl:1.6
  3.4 kernel     ip_input             netisr_dispatch_src
  3.4 kernel     lock_profile_release __mtx_unlock_flags
  3.4 kernel     in_pcblookup_mbuf    udp_input
  3.0 kernel     ether_nh_input       netisr_dispatch_src
  2.4 kernel     udp_input            ip_input
  2.4 kernel     mb_free_ext          m_freem
  2.2 kernel     lock_profile_obtain_ __mtx_lock_flags
  2.1 kernel     ixgbe_refresh_mbufs  ixgbe_rxeof

It looks like there's some obvious optimisations to poke at (what the heck is fget_unlocked() doing up there?) and yes, copyout/copyin are really terrible but currently unavoidable. The toeplitz hash and bcopy aren't very nice but they're occuring in the transmit path because at the moment there's no nice way to efficiently set both the outbound RSS hash and RSS bucket ID and send to a non-connected socket destination (ie, specify the destination IP:port as part of the send.) There's also some lock contention that needs to be addressed.

The output of the netisr queue statistics looks good:

root@abaddon:/home/adrian/git/github/erikarn/freebsd-rss # netstat -Q
Setting                        Current        Limit
Thread count                         8            8
Default queue limit                256        10240
Dispatch policy                 direct          n/a
Threads bound to CPUs          enabled          n/a

Name   Proto QLimit Policy Dispatch Flags
ip         1    256    cpu   hybrid   C--
igmp       2    256 source  default   ---
rtsock     3    256 source  default   ---
arp        4    256 source  default   ---
ether      5    256    cpu   direct   C--
ip6        6    256   flow  default   ---
ip_direct     9    256    cpu   hybrid   C--

WSID CPU   Name     Len WMark   Disp'd  HDisp'd   QDrops   Queued  Handled
   0   0   ip         0    25        0 839349259        0       49 839349308
   0   0   igmp       0     0        0        0        0        0        0
   0   0   rtsock     0     2        0        0        0       92       92
   0   0   arp        0     0      118        0        0        0      118
   0   0   ether      0     0 839349600        0        0        0 839349600
   0   0   ip6        0     0        0        0        0        0        0
   0   0   ip_direct     0     0        0        0        0        0        0
   1   1   ip         0    20        0 829928186        0      286 829928472
   1   1   igmp       0     0        0        0        0        0        0
   1   1   rtsock     0     0        0        0        0        0        0
   1   1   arp        0     0        0        0        0        0        0
   1   1   ether      0     0 829928672        0        0        0 829928672
   1   1   ip6        0     0        0        0        0        0        0
   1   1   ip_direct     0     0        0        0        0        0        0
   2   2   ip         0     0        0 835558437        0        0 835558437
   2   2   igmp       0     0        0        0        0        0        0
   2   2   rtsock     0     0        0        0        0        0        0
   2   2   arp        0     0        0        0        0        0        0
   2   2   ether      0     0 835558610        0        0        0 835558610
   2   2   ip6        0     0        0        0        0        0        0
   2   2   ip_direct     0     0        0        0        0        0        0
   3   3   ip         0     1        0 850271162        0       23 850271185
   3   3   igmp       0     0        0        0        0        0        0
   3   3   rtsock     0     0        0        0        0        0        0
   3   3   arp        0     0        0        0        0        0        0
   3   3   ether      0     0 850271163        0        0        0 850271163
   3   3   ip6        0     0        0        0        0        0        0
   3   3   ip_direct     0     0        0        0        0        0        0
   4   4   ip         0    23        0 817439448        0      345 817439793
   4   4   igmp       0     0        0        0        0        0        0
   4   4   rtsock     0     0        0        0        0        0        0
   4   4   arp        0     0        0        0        0        0        0
   4   4   ether      0     0 817439625        0        0        0 817439625
   4   4   ip6        0     0        0        0        0        0        0
   4   4   ip_direct     0     0        0        0        0        0        0
   5   5   ip         0    19        0 817862508        0      332 817862840
   5   5   igmp       0     0        0        0        0        0        0
   5   5   rtsock     0     0        0        0        0        0        0
   5   5   arp        0     0        0        0        0        0        0
   5   5   ether      0     0 817862675        0        0        0 817862675
   5   5   ip6        0     0        0        0        0        0        0
   5   5   ip_direct     0     0        0        0        0        0        0
   6   6   ip         0    19        0 817281399        0      457 817281856
   6   6   igmp       0     0        0        0        0        0        0
   6   6   rtsock     0     0        0        0        0        0        0
   6   6   arp        0     0        0        0        0        0        0
   6   6   ether      0     0 817281665        0        0        0 817281665
   6   6   ip6        0     0        0        0        0        0        0
   6   6   ip_direct     0     0        0        0        0        0        0
   7   7   ip         0     0        0 813562616        0        0 813562616
   7   7   igmp       0     0        0        0        0        0        0
   7   7   rtsock     0     0        0        0        0        0        0
   7   7   arp        0     0        0        0        0        0        0
   7   7   ether      0     0 813562620        0        0        0 813562620
   7   7   ip6        0     0        0        0        0        0        0
   7   7   ip_direct     0     0        0        0        0        0        0
root@abaddon:/home/adrian/git/github/erikarn/freebsd-rss # 

It looks like everything is being dispatched correctly; nothing is being queued and/or dropped.

But yes, we're running out of socket buffers because each core is 100% pinned:

root@abaddon:/home/adrian/git/github/erikarn/freebsd-rss # netstat -sp udp
        6773040390 datagrams received
        0 with incomplete header
        0 with bad data length field
        0 with bad checksum
        0 with no checksum
        17450880 dropped due to no socket
        136 broadcast/multicast datagrams undelivered
        1634117674 dropped due to full socket buffers
        0 not for hashed pcb
        5121471700 delivered
        5121471044 datagrams output
        0 times multicast source filter matched

There's definitely room for improvement.

PC-BSD 10.1-RC1 Released

The PC-BSD team is pleased to announce the availability of RC1 images for the upcoming PC-BSD 10.1 release.

PC-BSD Notable Changes

* KDE 4.14.2
* GNOME 3.12.2
* Cinnamon 2.2.16
* Chromium 38.0.2125.104_1
* Firefox 33.0
* NVIDIA Driver 340.24
* Lumina desktop 0.7.0-beta
* Pkg 1.3.8_3
* New AppCafe HTML5 web/remote interface, for both desktop / server usage
* New CD-sized text-installer ISO files for TrueOS / server deployments
* New Centos 6.5 Linux emulation base
* New HostAP mode for Wifi GUI utilities
* Misc bug fixes and other stability improvements


Along with our traditional PC-BSD DVD ISO image, we have also created a CD-sized ISO image of TrueOS, our server edition.

This is a text-based installer which includes FreeBSD 10.0-Release under the hood. It includes the following features:

* ZFS on Root installation
* Boot-Environment support
* Command-Line versions of PC-BSD utilities, such as Warden, Life-Preserver and more.
* Support for full-disk (GELI) encryption without an unencrypted /boot partition


A testing update is available for 10.0.3 users to upgrade to 10.1-RC1. To apply this update, do the following:

edit: /usr/local/share/pcbsd/pc-updatemanager/conf/sysupdate.conf (As root)

Change “PATCHSET: updates”


“PATCHSET: test-updates”

% sudo pc-updatemanager check

This should show you a new “Update system to 10.1-RELEASE” patch available. To install run the following:

% sudo pc-updatemanager install 10.1-update-10152014–10


As with any major system upgrade, please backup important data  and files beforehand!!!

This update will automatically reboot your system several times during the various upgrade phases, please expect it to take between 30–60 minutes.

Getting media

10.1-RC1 DVD/USB media can be downloaded from here via HTTP or Torrent.

Reporting Bugs

Found a bug in 10.1? Please report it (with as much detail as possible) to our bugs database.


Sponsor Spotlight: Silicon Valley FreeBSD Developer and Vendor Summit

The FreeBSD Foundation has been a long-time sponsor of events like the upcoming FreeBSD Developer and Vendor Summit. This year we would also like to thank Microsoft and RootBSD for their extended support of the event.  Opportunities to bring the developer and vendor communities together to further the Project would not be possible without the support of companies like these two. Please take a minute and find out more about why these organizations are involved with the FreeBSD Project.

Microsoft's customers have been clear that they want a single hypervisor for their environments, whether they are running Windows, Linux or FreeBSD operating systems. Microsoft is committed to working with the FreeBSD Foundation to ensure that FreeBSD is a first-class guest operating system on Windows Server Hyper-V and is focused on improving reliability, performance and support of new Hyper-V features in our upcoming updated release of BSD Integration Services. Find out more here.

RootBSD is a provider of hosting services with an emphasis on the BSD family of operating systems.   As users of FreeBSD ourselves, we believe it is important to contribute back to the community and do so by sponsoring services for individual developers as well as events such as the Developer's Summit.  We are thrilled to be able to support the Silicon Valley Developer's Summit, as we've seen first hand the results that face-to-face meetings can have in sparking new ideas and discussions that might not happen through strictly online communication. Find out more about RootBSD here.

FreeBSD 10.1-RC3 Now Available

The third RC build of the 10.1-RELEASE release cycle is now available on the FTP servers for the amd64, armv6, i386, ia64, powerpc, powerpc64 and sparc64 architectures.

The image checksums follow are included in the original announcement email.

Installer images and memory stick images are available here.

If you notice problems you can report them through the Bugzilla PR system or on the -stable mailing list.

If you would like to use SVN to do a source based update of an existing system, use the "releng/10.1" branch.

A list of changes since 10.0-RELEASE are available here.

Changes between 10.1-RC2 and 10.1-RC3 include:
  • Several fixes to the UDPLite protocol implementation.
  • The vt(4) driver has been updated to save and restore keyboard mode and LED states when switching windows.
  • Several fixes to the SCTP protocol implementation.
  • A potential race condition in obtaining a file pointer has been corrected.
  • Fix ZFS ZVOL deadlock and rename issues.
  • Restore libopie.so ABI compatibility with 10.0-RELEASE.
  • Removed the last vestige of MD5 password hashes.
  • Several rc(8) script updates and fixes.
  • bsdinstall(8) has been updated to allow selecting local_unbound in the default services to enable at first boot.
  • Prevent ZFS leaking pool free space.
  • Fix rtsold(8) remote buffer overflow vulnerability. [SA-14:20]
  • Fix routed(8) remote denial of service vulnerability. [SA-14:21]
  • Fix memory leak in sandboxed namei lookup. [SA-14:22]
  • OpenSSL has been updated to version 1.0.1j. [SA-14:23]
  • Fix an issue where a FreeBSD virtual machine provisioned in the Microsoft Azure service does not recognize the second attached disk on the system.
    Pre-installed virtual machine images for 10.1-RC3 are also available for amd64 and i386 architectures.  The images are located here.

    The disk images are available in QCOW2, VHD, VMDK, and raw disk image formats.  The image download size is approximately 135 MB, which decompress to a 20GB sparse image.

    The partition layout is:
    • 512k - freebsd-boot GPT partition type (bootfs GPT label)
    • 1GB  - freebsd-swap GPT partition type (swapfs GPT label)
    • ~17GB - freebsd-ufs GPT partition type (rootfs GPT label)
    To install packages from the dvd1.iso installer, create and mount the /dist directory:

    # mkdir -p /dist
    # mount -t cd9660 /dev/cd0 /dist

    Next, install pkg(8) from the DVD:

    # env REPOS_DIR=/dist/packages/repos pkg bootstrap

    At this point, pkg-add(8) can be used to install additional packages from the DVD.  Please note, the REPOS_DIR environment variable should be used each time using the DVD as the package repository, otherwise conflicts with packages from the upstream mirrors may occur when they are fetched.  For example, to install Gnome and Xorg, run:

    # env REPOS_DIR=/dist/packages/repos pkg install \
      xorg-server xorg gnome2 [...]

    The freebsd-update(8) utility supports binary upgrades of amd64 and i386 systems running earlier FreeBSD releases.  Systems running earlier
    FreeBSD releases can upgrade as follows:

    # freebsd-update upgrade -r 10.1-RC3

    During this process, freebsd-update(8) may ask the user to help by merging some configuration files or by confirming that the automatically
    performed merging was done correctly.

    # freebsd-update install

    The system must be rebooted with the newly installed kernel before continuing.

    # shutdown -r now

    After rebooting, freebsd-update needs to be run again to install the new userland components:

    # freebsd-update install
    It is recommended to rebuild and install all applications if possible, especially if upgrading from an earlier FreeBSD release, for example,
    FreeBSD 8.x.  Alternatively, the user can install misc/compat9x and other compatibility libraries, afterwards the system must be rebooted
    into the new userland:

    # shutdown -r now

    Finally, after rebooting, freebsd-update needs to be run again to remove stale files:

    # freebsd-update install

    Love FreeBSD?  Support this and future releases with a donation to the FreeBSD Foundation!

    FreeBSD 10.1-RC3 Available

    The third RC build for the FreeBSD 10.1 release cycle is now available. ISO images for the amd64, armv6, i386, ia64, powerpc, powerpc64 and sparc64 architectures are available on most of our FreeBSD mirror sites.

    FreeBSD Foundation Goes to EuroBSDcon 2014

    We were thrilled to be a Gold Sponsor and to attend EuroBSDCon 2014 held in Sofia, Bulgaria September 27-28. We were also a sponsor of the developer summit. The conference was well attended, with over 225 people there.

    Students working together on a project
    Not only did we sponsor four FreeBSD contributors to attend the conference, but with help from Google providing women computer scientists scholarships, I saw more women attending this conference than I had ever seen before.

    I attend these events to touch base with the FreeBSD user and developer community. It’s a chance for
    me to find out what people are working on, what kind of help they could use from the Foundation, feedback on what we can be doing to support the FreeBSD Project and community, and what features/functions people want supported in FreeBSD. In addition, the other Foundation members, who are active developers, writers, and teachers in the FreeBSD world, attend, not only to connect with the community, but also go to sessions to get a more in-depth understanding of new features and functions, as well as learn what others are working on.

    During the event, we held our fall fundraising campaign and raised over $2,000 in donations! One lucky donor won a copy of the newly released Design and Implementation of the FreeBSD Operating System (2nd Edition). Thank you to everyone who donated.

    It really was a great opportunity to meet FreeBSD contributors from around the world. Attendees were mostly from Europe, including Spain, Belgium, Switzerland, France, Sweden, Finland, Estonia, Russia, and Germany. There were also people from Japan, Canada, and the US. Every time I attend one of these BSD-related conferences, I’m blown away by the excitement and passion these people have and share. I’m full of admiration as I watch these dedicated people interact with each other, sharing information on their projects, helping each other with their work, and inspiring new people to get involved. I love watching the newbies interact with the more seasoned FreeBSD contributors (Rockstars!), as the latter instills a sense a pride, curiosity, and engagement in FreeBSD. It’s a chance for people to work face-to-face, get inspired, and learn about areas to get involved with. So much work gets accomplished at these conferences.
    Kirk about to give a presentation

    We had 7 Foundation board and staff members attend the conference. Kirk McKusick gave a two day tutorial on the FreeBSD Kernel Internals based on the newly released 2nd edition of The Design and Implementation of the FreeBSD Operating System. He also gave a talk on the implementation of ZFS in FreeBSD. Erwin Lansing chaired the DNS and Ports sessions of the developer summit, while Ed Maste gave a presentation on the current state of the LLDB debugger in FreeBSD. On the FreeBSD Journal front, George Neville-Neil was able to recruit more material.

    The Foundation also held a board meeting which focused on advocacy in Europe and how to approach more European companies to help facilitate collaboration with the Project, as well as seeking more donations from that part of the world. We held many discussions with FreeBSD developers on current and future projects, increasing efforts for greater collaboration on graphics stack maintenance and a variety of technical topics.
    Working the FreeBSD Foundation table

    Overall, it was another successful conference and we are looking forward to participating in next year’s European conference in Stockholm, Sweden.

    --contributed by Deb Goodkin, FreeBSD Foundation Executive Director

    EuroBSDCon Trip Report: Bjoern Heidotting

    The FreeBSD Foundation was a gold sponsor of EuroBSDCon 2014, which was held in Sofia, Bulgaria in September. The Foundation also sponsored Bjoern Heidotting to attend the conference, who provides the following trip report:

    Since I'm fairly new to the FreeBSD community I would like to introduce myself first. My name is Bjoern Heidotting, I live in Germany, I work as a system administrator and I'm a FreeBSD user since 2006 and a contributor since 2012. I mostly contribute patches for the German documentation in the doc-tree. Why do I contribute? Well, the short version is that I simply wanted to give something back to FreeBSD and the community.

    Thanks to Benedict Reuschling, who invited me, and the FreeBSD Foundation, I was able to attend the DevSummit and the conference at EuroBSDCon 2014 in Sofia.

    I arrived at Sofia airport on Wednesday and I took a taxi to get to my hotel the Best Western Expo, directly located at the IEC where the conference was held. However, the taxidriver decided to take me on a sightseeing tour through the city of Sofia. But after 1,5 hours I finally arrived at the hotel. The actual time to get from the airport to my hotel is about 10 minutes. Fortunately taxis are cheap in Bulgaria compared to Germany. And the city is really, really worth seeing.

    Later that day, I met Daniel Peyrolon, a GSoC student with whom I shared a room. We decided to take dinner together and started getting to know each other. Afterwards, we socialized with some other FreeBSD people at the hotel bar.

    On Thursday the DevSummit started with every attendee and developer introducing himself. Then some interesting topics and roadmaps were discussed for the upcoming 11.0 release, as well as other topics such as ASLR, UEFI, 10G Ethernet, just to name a few. It was a very interesting brainstorming with valuable input from all attendees. Since it was my first time at a DevSummit, I was impressed to see how fast these people can fill a bunch of foils with topics and ideas. Awesome!

    After lunch a small group, including me, sat together in another room where I started to work on several patches for the Handbook. In the evening we had dinner at Lebed Restaurant. A very nice location. This is where I first met Deb Goodkin from the Foundation. She was the one I talked to prior to the conference and she brought Daniel and me together. Thank you Deb. It was very nice meeting her.

    On Friday I mostly worked on a big patch for the network-servers section in the Handbook. I also met Beat Gaetzi while catching fresh air outside and we talked about our roles in the Project and what we do. After lunch the documentation topic started, which I was very interested in. We talked about issues on the website, Handbook sections, etc. The details of the session can be found on the wiki.

    In the evening we had dinner at "The Windmill" and I met Henning Brauer from the OpenBSD project. It was really fun talking to him. Man, this guy can tell crazy stories.

    Saturday and Sunday were conference days with one interesting talk chasing the next. All the talks were great, altough I had some favorites, including "Snapshots, Replication, and Boot-Environments" by Kris Moore, "Introducing ASLR in FreeBSD" by Shawn Webb, and "Securing sensitive & restricted data" by Dag-Erling Smorgrav. One of the highlights for me was the social event in Hotel Balkan on Saturday. Again, meeting the people behind the email addresses and talking to them was a great experience.

    A big thanks goes out to Shteryana Shopova and her crew for organizing this great event.

    VC4 driver status update

    I've just spent another week hanging out with my Broadcom and Raspberry Pi teammates, and it's unblocked a lot of my work.

    Notably, I learned some unstated rules about how loading and storing from the tilebuffer work, which has significantly improved stability on the Pi (as opposed to simulation, which only asserted about following half of these rules).

    I got an intro on the debug process for GPU hangs, which ultimately just looks like "run it through simpenrose (the simulator) directly. If that doesn't catch the problem, you capture a .CLIF file of all the buffers involved and feed it into RTL simulation, at which point you can confirm for yourself that yes, it's hanging, and then you hand it to somebody who understands the RTL and they tell you what the deal is." There's also the opportunity to use JTAG to look at the GPU's perspective of memory, which might be useful for some classes of problems. I've started on .CLIF generation (currently simulation-environment-only), but I've got some bugs in my generated files because I'm using packets that the .CLIF generator wasn't prepared for.

    I got an overview of the cache hierarchy, which pointed out that I wasn't flushing the ARM dcache to get my writes out into system L2 (more like an L3) so that the GPU could see it. This should also improve stability, since before we were only getting lucky that the GPU would actually see our command stream.

    Most importantly, I ended up fixing a mistake in my attempt at reset using the mailbox commands, and now I've got working reset. Testing cycles for GPU hangs have dropped from about 5 minutes to 2-30 seconds. Between working reset and improved stability from loads/stores, we're at the point that X is almost stable. I can now run piglit on actual hardware! (it takes hours, though)

    On the X front, the modesetting driver is now merged to the X Server with glamor-based X rendering acceleration. It also happens to support DRI3 buffer passing, but not Present's pageflipping/vblank synchronization. I've submitted a patch series for DRI2 support with vblank synchronization (again, no pageflipping), which will get us more complete GLX extension support, including things like GLX_INTEL_swap_event that gnome-shell really wants.

    In other news, I've been talking to a developer at Raspberry Pi who's building the KMS support. Combined with the discussions with keithp and ajax last week about compositing inside the X Server, I think we've got a pretty solid plan for what we want our display stack to look like, so that we can get GL swaps and video presentation into HVS planes, and avoid copies on our very bandwidth-limited hardware. Baby steps first, though -- he's still working on putting giant piles of clock management code into the kernel module so we can even turn on the GPU and displays on our own without using the firmware blob.

    Testing status:
    - 93.8% passrate on piglit on simulation
    - 86.3% passrate on piglit gpu.py on Raspberry Pi

    All those opcodes I mentioned in the previous post are now completed -- sadly, I didn't get people up to speed fast enough to contribute before those projects were the biggest things holding back the passrate. I've started a page at http://dri.freedesktop.org/wiki/VC4/ for documenting the setup process and status.

    And now, next steps. Now that I've got GPU reset, a high priority is switching to interrupt-based render job tracking and putting an actual command queue in the kernel so we can have multiple GPU jobs queued up by userland at the same time (the VC4 sadly has no ringbuffer like other GPUs have). Then I need to clean up user <-> kernel ABI so that I can start pushing my linux code upstream, and probably work on building userspace BO caching.

    Migrating xorg-dev to Git

    We are experimenting with Git to replace the “xorg-dev” Subversion repository.

    Remember, this repository is used to work on the graphics stack ports before they go to the official Ports tree. For instance, this is where we worked on the update to Mesa 10.3.0. Now, that Mesa 10.3.0 is committed, xorg-dev contains Mesa 10.3.1.

    xorg-dev is a Subversion repository containing only the ports and infrastructure Makefiles which differ from the official Ports tree. The current workflow simply consists of:

    1. prepare a new port or update in xorg-dev’s trunk
    2. when ready, copy the files in a Ports tree working copy
    3. remove the obsolete files
    4. commit the change in the Ports tree
    5. optionally, remove the committed work from xorg-dev

    A nice advantage is that xorg-dev remains lighweight. This makes svn commands fast.

    But problems arise when there are changes committed directly to the Ports tree. We must be careful to bring those changes to xorg-dev but from time to time, we fail to do so and they are lost. Furthermore, it’s very hard to track history between xorg-dev and the official Ports tree.

    That’s why we want to change this workflow and switch to a complete Git clone of the Ports tree.

    There’s already a Git mirror of the Ports tree available on GitHub. We are going to use this as our upstream repository and create another repository, called freebsd-ports-graphics on GitHub: this is going to be the new xorg-dev.

    This will allow us to:

    • have a full Ports tree, so it’s easier to test: no need to merge anything to /usr/ports
    • handle conflicts during the developments, not when we want to commit the final patch
    • keep the history in a single place
    • accept GitHub pull requests from anyone (not discussed yet)

    We’ll try to use topic branches too (eg. a branch for xorg-server 1.14, another one for Mesa 10.3.1 and so on), though this is subject to change.

    The workflow is described on the wiki.

    Once the experiment concludes, we’ll inform you about our decision to either keep Subversion or move to Git.

    PC-BSD YouTube Channel

    Hey everyone just a quick heads up we’ve just started a PC-BSD YouTube channel!  If you want to check it out you can follow this link https://www.youtube.com/channel/UCyd7MaPVUpa-ueUsGjUujag.  Don’t forget to subscribe for new videos and if you have a video or tutorial you’d like to submit send it my way!  We only have a couple videos right now so we need your help to grow our channel :).  Also we’d love for you to submit your ideas we can do for videos in the future.