<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" 
   xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" 
   xmlns:html="http://www.w3.org/1999/html" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
<channel>
   <title>Ben's technical blog</title>
   <link>http://womble.decadent.org.uk/blog</link>
   <description>Ben's technical blog</description>
   <language>en</language>
   <copyright>Copyright 2007 Ben Hutchings</copyright>
   <ttl>60</ttl>
   <pubDate>Mon, 20 Feb 2012 05:03 GMT</pubDate>
   <managingEditor>ben@decadent.org.uk</managingEditor>
   <generator>PyBlosxom http://pyblosxom.sourceforge.net/ 1.4.3 01/10/2008</generator>
<item>
   <title>Feed reading</title>
   <guid isPermaLink="false">feed-reading</guid>
   <link>http://womble.decadent.org.uk/blog/feed-reading.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>
  I switched from Google Reader to Liferea a while back.  I was mostly
  happy with the functionality of Reader but I don't really want my
  reading history to be recorded or my feed list to be vulnerable to
  the whim of Google's inscrutable abuse department.
</p>
<p>
  I'm still using Liferea but unfortunately it has a lot of problems.
  Yes I do have bug numbers:
</p>
<ul>
  <li>
    Calls sync() many times while refreshing feeds
    (<a href="http://bugs.debian.org/623619">#623619</a>).  This is
    probably related to use of SQLite and not properly batching
    writes.  I work around this by using 'eatmydata' to nullify those
    calls, but that's not ideal.
  </li>
  <li>
    The UI thread also blocks on feed updates.  Together with the
    previous bug, this can make it unresponsive for minutes while
    updating feeds
    (<a href="http://bugs.debian.org/542276">#542276</a>).
  </li>
  <li>
    It often leaks memory and other resources when I play embedded
    video (<a href="http://bugs.debian.org/660593">#660593</a>).
  </li>
  <li>
    There is no progress or 'busy' indicator for the browser
    (<a href="http://bugs.debian.org/660595">#660595</a>).
  </li>
  <li>
    Error/prompt callbacks are not handled
    (<a href="http://bugs.debian.org/660597">#660597</a>) - for
    example, if I follow a link that happens to lead to a PDF, nothing
    happens.
  </li>
  <li>
    There is no progress indicator for downloading 'enclosed' files
    (typically podcast episodes), and errors are simply ignored
    (<a href="http://bugs.debian.org/660599">#660599</a>).
  </li>
  <li>
    While updating feeds, it may reset the item pane back to the
    summary (<a href="http://bugs.debian.org/660602">#660602</a>).
  </li>
</ul>
<p>
  So, I'm looking for an alternative again.  My requirements are:
</p>
<ol>
  <li>
    MAY be a desktop or web application.
  </li>
  <li>
    If it's a web application, it MUST be reasonably secure, e.g. it
    must not be written in PHP.
  </li>
  <li>
    If it's a web application, it MUST allow for multiple independent
    users on the same server.
  </li>
  <li>
    If it's a desktop application, it MUST embed a browser engine
    (presumably Gecko or WebKit) so I can follow links without
    having to switch windows.
  </li>
  <li>
    MUST support organisation of feeds by folders or tags, including
    combined item lists.
  </li>
  <li>
    MUST keep track of which items have been read.
  </li>
  <li>
    MUST support a global 'unread items' list.  SHOULD only remove
    items from this list when I refresh it, not as soon as I move
    away from an item.
  </li>
  <li>
    SHOULD support a three-pane (folder/list/item) view or something
    similar.  Google Reader's list view with expanding items is
    perhaps even better, though it means links must be opened in a
    separate tab.
  </li>
  <li>
    SHOULD support folder and item navigation by keyboard.
  </li>
  <li>
    SHOULD have some way to flag/bookmark items for later attention.
  </li>
  <li>
    If it's a desktop application, it SHOULD have some sort of
    download manager to support podcasts.
  </li>
</ol>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Mon, 20 Feb 2012 05:03 GMT</pubDate>
</item>
<item>
   <title>Another step forward for multi-arch</title>
   <guid isPermaLink="false">another-step-forward-for-multi-arch</guid>
   <link>http://womble.decadent.org.uk/blog/another-step-forward-for-multi-arch.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<pre>
~$ dpkg --print-architecture
i386
~$ dpkg -s linux-image-$(uname -r)
Package `linux-image-3.2.0-1-amd64' is not installed and no info is available.
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.
~$ dpkg -s linux-image-$(uname -r):amd64
Package: linux-image-3.2.0-1-amd64
Status: install ok installed
Priority: optional
Section: kernel
Installed-Size: 104822
Maintainer: Debian Kernel Team &lt;debian-kernel@lists.debian.org>
Architecture: amd64
Source: linux-2.6
Version: 3.2.6-1
</pre>
...

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Fri, 17 Feb 2012 02:24 GMT</pubDate>
</item>
<item>
   <title>Testing backport of the isci driver for Intel C600 SAS/SATA controllers</title>
   <guid isPermaLink="false">testing-backport-of-the-isci-driver-for-intel-c600-sassata-controllers</guid>
   <link>http://womble.decadent.org.uk/blog/testing-backport-of-the-isci-driver-for-intel-c600-sassata-controllers.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>
  Phil Kern made a general
  <a href="http://debblog.philkern.de/2012/01/call-for-testing-upcoming-squeeze-point.html">call
  for testing of Debian 6.0.4</a>.  I would like to more specifically
  point out that I backported the isci driver for Intel C600 SAS/SATA
  controllers.  Unfortunately I have not yet had any testing results
  for this.  If you have any machines with this hardware not yet in
  production, please do consider testing the new Linux kernel package,
  version 2.6.32-41.
</p>
<p>
  <strong>Updated:</strong> I now have a positive test result from the
  user who requested this driver in the installer.
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Thu, 26 Jan 2012 15:51 GMT</pubDate>
</item>
<item>
   <title>Installing Debian GNU/Linux and Windows dual-boot under UEFI</title>
   <guid isPermaLink="false">installing-debian-gnulinux-and-windows-dual-boot-under-uefi</guid>
   <link>http://womble.decadent.org.uk/blog/installing-debian-gnulinux-and-windows-dual-boot-under-uefi.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>
  I thought it was about time to get a faster machine for... well,
  mostly for compiling kernels faster, but I'm sure I will find other
  applications for it.  I was originally intending to upgrade my
  laptop (Thinkpad T61, 1.8 GHz Core 2 Duo) but it seems that in the 3
  years since I bought it second-hand laptop prices have not dropped
  in line with Moore's law.  So instead I decided to upgrade (well,
  replace most of) a desktop PC.
</p>
<p>
  The last time I got a new desktop at home was in 2002.  It has an
  Athlon XP, PATA drives and a huge CRT monitor.  It has had some
  upgrades since then (DVD writer, more RAM, slightly faster CPU,
  replacement fan and PSU).  Obviously it was time to replace
  motherboard, CPU and RAM.  Not so obviously, the PSU needed changing
  again as modern CPUs apparently need more 12V electrons (?!).  The
  DVD writer was salvageable via a USB adapter and its local HD is
  currently a laptop drive (the only spare SATA HD I had).  The
  monitor is of course reusable, though the firmware setup program
  doesn't entirely agree with it.
</p>
<h4>Windows</h4>
<p>
  Yes, I do sometimes run Windows.  It's for games, and also seems to
  be needed for streaming video with stupid DRM.
</p>
<p>
  On the assumption that Windows is less likely to play nice with an
  existing installation, I tried installing it first.  The firmware
  appear to allow me to boot the DVD in either BIOS or UEFI mode, so I
  selected the UEFI option.  This worked so far as loading the
  initramfs (or whatever the Windows equivalent is) but then Windows
  was lacking a driver to access the DVD.  This stumped me for a day
  or so until I realised I had plugged the drive into a USB 3 (XHCI)
  port.  Apparently Windows 7 SP1 still doesn't include an XHCI driver
  in the installer (but neither does Debian 6.0.3 - we should fix
  that).
</p>
<p>
  The installation was mostly uneventful after this.  The Windows
  installer includes a reasonably capable partition editor.
</p>
<h4>Debian</h4>
<p>
  Installation of files was entirely uneventful.  The installer
  correctly detected the GPT (GUID partition table) created by
  Windows.  However, it was not able to install a boot loader.
  Currently it only includes support for the LILO and GRUB-PC
  boot loaders that run under BIOS.
</p>
<p>
  After much experimentation and cursing, I found instructions for
  <a href="http://staff.blog.ui.ac.id/jp/2011/08/25/installing-debian-squeeze-on-xserve-3-1/">installing
  Debian Squeeze on XServe 3.1</a> by Jan Peter Alexander Rajagukguk,
  which put me on the right track.  It seems that
  the <tt>grub-install</tt> script for GRUB-EFI in squeeze (and maybe
  other parts of the package) doesn't actually work.  However. JP's
  direction to build GRUB from source is no longer necessary.
  Here's what I did (minus the mis-steps):
</p>
<ol>
  <li>
    Boot the installer in rescue mode and open a shell on the
    installed system:
    <pre>
# # We start in dash, so switch to bash.
# <kbd>exec bash</kbd>
# <kbd>mkdir -p /boot/efi</kbd>
# # Mount the EFI boot partition by UUID.
# # It's probably called sda1 now, but is subject to change.
# <kbd>ls -l /dev/disk/by-uuid</kbd>
...
# <kbd>echo >>/etc/fstab 'UUID=<var>efi-boot-uuid</var> /boot/efi vfat defaults 0 0'</kbd>
# <kbd>mount /boot/efi</kbd>
# # Enable unstable sources, but use stable by default
# <kbd>echo >>/etc/apt/apt.conf 'APT::Default-Release "squeeze";'</kbd>
# <kbd>echo >>/etc/apt/sources.list 'deb http://cdn.debian.net/debian/ sid main'</kbd>
# <kbd>apt-get update</kbd>
...
# # Install unstable grub-efi-amd64
# <kbd>apt-get install -t unstable grub-efi-amd64</kbd>
...
# # Install GRUB to the EFI partition.  The '--removable' options
# # inhibits setting EFI variables, which won't work because we booted
# # through BIOS emulation.  Instead, it installs as the default boot
# # loader.
# <kbd>grub-install --bootloader-id=GRUB --removable</kbd>
# # On the AMI/ASUS firmware, you cannot select a new bootloader
# # directly but can invoke a 'shell'.  So I made GRUB the shell:
# <kbd>cp /boot/efi/boot/grub/grub.efi /boot/efi/shellx64.efi</kbd>
# <kbd>exit</kbd>
</pre>
  </li>
  <li>
    Reboot and select GRUB as the boot loader if necessary.  In my
    case I had to enter the setup program and select 'EFI shell'.
    Debian should now boot from the hard drive.
  </li>
  <li>
    Add a non-volatile boot option for GRUB (and make it the default):
    <pre>
# <kbd>apt-get install efibootmgr</kbd>
...
# <kbd>modprobe efivars</kbd>
# <kbd>efibootmgr -c -l '\efi\grub\grubx64.efi' -L GRUB</kbd>
</pre>
  </li>
</ol>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sat, 14 Jan 2012 20:25 GMT</pubDate>
</item>
<item>
   <title>IGMP denial of service in Linux (CVE-2012-0207)</title>
   <guid isPermaLink="false">igmp-denial-of-service-in-linux-cve-2012-0207</guid>
   <link>http://womble.decadent.org.uk/blog/igmp-denial-of-service-in-linux-cve-2012-0207.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<h4>The bug report</h4>
<p>
  Simon McVittie reported in Debian bug
  <a href="http://bugs.debian.org/654876">#654876</a> that his
  laptop running Linux 3.0 or 3.1 would sometimes crash (panic) while
  idle.  He initially suspected a driver bug, but the screen did not
  show any information about where the original fault occurred.
  However, using netconsole, he was able to capture a
  <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=17;filename=netconsole3a.txt;att=2;bug=654876">full
  log of the crash</a>.  This showed that a packet received through the
  wireless interface was being processed by IGMP, which then divided by
  zero.
</p>
<h4>IGMP</h4>
<p>
  IGMP is part of the IPv4 protocol suite, supporting multicast
  routing.  Every multicast address corresponds to a dynamic set of
  hosts, called a multicast group.  Multicast routers can send query
  messages asking which hosts belong to which groups, and hosts using
  multicast report back at intervals.  Routers can then limit
  forwarding of multicast packets to the interfaces where the group
  has members.  More sophisticated switches can also snoop IGMP and
  use it to limit their multicast forwarding.  There are unfortunately
  <a href="http://tools.ietf.org/html/rfc1112">three</a>
  <a href="http://tools.ietf.org/html/rfc2236">different</a>
  <a href="http://tools.ietf.org/html/rfc3376">versions</a> with
  semi-compatible message formats.  In version 1, the maximum
  reporting interval (Max Response Time) is fixed as 10 seconds, but
  from version 2 it is specified in query messages.
</p>
<p>
  The Linux IGMP implementation supports all three versions.  It
  distinguishes query messages as specified
  in <a href="http://tools.ietf.org/html/rfc3376#page-35">RFC 3376
  section 7.1</a>: v3 messages are longer than v1 or v2; v2 messages
  have a non-zero Max Response Time whereas v1 messages always have
  zero.  It is possible to force use of a specific protocol version,
  but normally if there are multiple multicast routers using different
  protocol versions it will respond according to the earliest protocol
  version in use so that all routers can understand its responses.
</p>
<h4>Source and fix for the bug</h4>
<p>
  Linux 2.6.36 included
  <a href="http://git.kernel.org/linus/7998156344b0d93de61ff8e5d75e96500e43a571">two</a>
  <a href="http://git.kernel.org/linus/5b7c84066733c5dfb0e4016d939757b38de189e4">fixes</a>
  to the version selection logic.  Unfortunately, the second of these
  introduced the bug in question.  While v2 query messages cannot
  possibly have zero Max Response Time (as that would make them v1),
  v3 query messages can.  What this means is unspecified, but the
  Linux IGMP code previously treated it as the minimum valid value of
  1/10 second.  But in the case where a v3 query is received and a v2
  query has also recently been received, this is no longer done.  This
  results in a reporting interval of 0 seconds and a division by zero
  when deciding the initial random delay.
</p>
<p>
  The fix for this is pretty obvious.  It is included in Linux 3.0.17,
  3.1.9, 3.2.1, and the Debian package version 3.1.8-2.
</p>
<h4>Security impact</h4>
<p>
  This is easily exploitable for denial of service within a local
  network.  Linux does not check the destination address of IGMP
  queries, so it may also be possible to attack a target through its
  unicast address from several hops away.  The attacker only needs to
  send a single IGMPv2 query followed by a single IGMPv3 query with
  zero Max Response Time.  All systems running Linux 2.6.36 or later
  (up to the above fixed versions) with any active IPv4 multicast
  listeners (other than for the 'all hosts' address) are vulnerable.
<p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sat, 14 Jan 2012 16:17 GMT</pubDate>
</item>
<item>
   <title>GNOME won't let you watch your videos in peace</title>
   <guid isPermaLink="false">gnome-wont-let-you-watch-your-videos-in-peace</guid>
   <link>http://womble.decadent.org.uk/blog/gnome-wont-let-you-watch-your-videos-in-peace.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>
  Screensaver control on the Linux desktop is a total mess, but
  the <tt>xdg-screensaver</tt> command provided an interim
  cross-desktop solution by detecting and using the appropriate
  underlying interfaces.  For GNOME, it depends on
  the <tt>gnome-screensaver-command --poke</tt> option, but that has
  been <a href="http://bugs.debian.org/541968">broken</a> and then
  removed in favour of <strike>the cross-desktop D-Bus API
  org.freedesktop.ScreenSaver</strike>
  <a href="https://bugzilla.gnome.org/show_bug.cgi?id=579430#c21"><em>another</em>
  GNOME-specific API</a> which can't practically be used by
  <tt>xdg-screensaver</tt>.
</p>
<p>
  What's more, switching to the new API seems to
  have <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656988">introduced</a>
  <a href="https://bugzilla.gnome.org/show_bug.cgi?id=630711">various</a>
  <a href="https://bugzilla.gnome.org/show_bug.cgi?id=647750">bugs</a>
  in GNOME's own video player, Totem, such that it often failed to
  inhibit the screensaver in GNOME 2.32 and 3.0.  Apparently
  everything is wonderful again in 3.2; here's hoping.
</p>
<p>
  (In case anyone asks where my bug report on the totem package is, I
  already looked at the bug list and it's clear that there's no
  point.)
</p>
<p>
  <b>Updated:</b> Well I said
  the <a href="http://people.gnome.org/~mccann/gnome-session/docs/gnome-session.html">GNOME
  Session D-Bus API</a> couldn't practically be used in
  xdg-screensaver, but then set out to prove myself wrong.  And with
  the aid of Perl, I <a href="http://bugs.debian.org/610155#60">may
  have succeeded</a>.
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sun, 20 Nov 2011 07:36 GMT</pubDate>
</item>
<item>
   <title>I am going to DebConf11</title>
   <guid isPermaLink="false">i-am-going-to-debconf11</guid>
   <link>http://womble.decadent.org.uk/blog/i-am-going-to-debconf11.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<a href="http://debconf11.debconf.org">
  <img src="http://wiki.debconf.org/upload/9/9e/DC11_web_120x120_01.png"
       alt="I am going to DebConf11.">
</a>
I have a talk to give, hacking to do, and I should be helping with
video as well. Hope to see you in Banja Luka!

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sun, 05 Jun 2011 03:38 GMT</pubDate>
</item>
<item>
   <title>Testing new hardware support for Debian 6.0.2</title>
   <guid isPermaLink="false">testing-new-hardware-support-for-debian-602</guid>
   <link>http://womble.decadent.org.uk/blog/testing-new-hardware-support-for-debian-602.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>
  The Debian kernel team regularly backports driver updates to the
  Linux kernel in stable releases to add support for new hardware, and
  I've prepared several updates intended for point release 6.0.2.
  Since the kernel team does not have a large collection of hardware
  on which to test driver changes, we would appreciate test reports
  from users.  It is important to test not just that new devices are
  supported properly, but that there are no regressions in support
  for older devices.
</p>
<h4>Changes</h4>
<p>
  I have updated these drivers to the versions found in Linux
  2.6.38, modulo driver API changes:
</p>
<ul>
  <li>
    bna: New driver for Brocade Ethernet adapters.
    (<a href="mailto:627699@bugs.debian.org">#627699</a>)
  </li>
  <li>
    e1000e: Add support for i82567V-4, i82579.  Bug fixes for i82577,
    i82578, i82583. (<a href="mailto:627700@bugs.debian.org">#627700</a>)
  </li>
  <li>
    hpsa: New driver for HP Smart Array controllers.  It also supports
    some devices that are currently handled by cciss, but I have
    disabled that for 'squeeze'.
    (<a href="mailto:627701@bugs.debian.org">#627701</a>)
  </li>
  <li>
    igb, igbvf: Add support for i82576-ET2, 82580, DH89xxCC, i350.
    (<a href="mailto:627702@bugs.debian.org">#627702</a>)
  </li>
  <li>
    pm8001: New driver for PMC-Sierra SAS/SATA HBAs.
    (<a href="mailto:627703@bugs.debian.org">#627703</a>)
  </li>
  <li>
    r8169: Add full support for RTL8168DP.  Bug fixes for RTL8102E.
    (<a href="mailto:627704@bugs.debian.org">#627704</a>)
  </li>
  <li>
    tg3, broadcom: Add support for BCM5717, BCM5719, BCM57765, and
    BCM50610M and BCM5241 PHYs.  Bug fixes for BCM5755.
    (<a href="mailto:627705@bugs.debian.org">#627705</a>)
  </li>
</ul>
<p>
  I have also cherry-picked some small changes:
</p>
<ul>
  <li>
    bnx2i: Add support for BCM5771E
  </li>
  <li>
    wl1251: Add support for PG11 chips
  </li>
  <li>
    bnx2x: Add support for BCM84823
  </li>
  <li>
    ar9170usb: Add several additional USB device IDs
  </li>
</ul>
<p>
  There are more drivers that I think should be added or updated
  (see <a href="http://bugs.debian.org/624794">#624794</a>) but
  they will probably have to wait for release 6.0.3.
</p>
<h4>Packages</h4>
<p>
  The source package and binary packages for i386 and amd64 are
  available on
  <a href="http://people.debian.org/~benh/packages/">people.debian.org</a>.
  They can be verified by the checksums in the
  <a href="http://people.debian.org/~benh/packages/linux-2.6_2.6.32-35~test1_multi.changes">signed
  changes file</a>.
</p>
<p>
  The current packages are version 2.6.32-35~test1, but there may be
  further test versions before an official stable update.
</p>
<h4>How to test</h4>
<p>
  For network drivers, I suggest the following regression tests:
</p>
<ol>
  <li>
    If the driver tries to load firmware (only required for some
    chips), does this work once the firmware file(s) are installed?
  </li>
  <li>
    Can you receive and transmit VLAN-tagged frames after creating a
    VLAN interface?
  </li>
  <li>
    Does the interface work after suspend and resume?
  </li>
  <li>
    Does the interface work after removing the cable for 10 seconds and
    reinserting it?
  </li>
  <li>
    Does multicast configuration work?  (IPv6 autoconfiguration or mDNS
    will cover this.)
  </li>
  <li>
    Can the interface send and receive TCP/IP across a LAN at the same
    speed, before and after these changes?  (Use e.g. netperf to test
    this, but don't forget to remove the netperf package after use.)
  </li>
  <li>
    Are any warnings or errors logged by the kernel during the
    preceding tests?
  </li>
</ol>
<p>
  For storage drivers, unfortunately I don't have a good idea of what
  tests would be suitable.  In any case, please don't test on disks
  storing valuable data!
</p>
<p>
  Please send test reports to the bug reports linked above, stating
  the driver name, the PCI ID for the device you tested
  (from <tt>lspci -n</tt>) and any other device identification that
  the kernel log (for example, r8169 logs the 'XID' of the device).
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Mon, 23 May 2011 18:51 GMT</pubDate>
</item>
<item>
   <title>Upcoming changes in Debian Linux packages for i386</title>
   <guid isPermaLink="false">upcoming-changes-in-debian-linux-packages-for-i386</guid>
   <link>http://womble.decadent.org.uk/blog/upcoming-changes-in-debian-linux-packages-for-i386.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>
  The major upcoming configuration change in Linux 2.6.39 is to get
  rid of the '686' flavour.  This may be surprising, because it's the
  most widely used flavour of the 4 we have a present:
</p>
<table>
  <tr>
    <th>Name</th>
    <th>Minimum CPU features</th>
    <th>Maximum total CPU threads</th>
    <th>Physical address space</th>
  </tr>
  <tr>
    <td>486</td>
    <td>486-class</td>
    <td>1</td>
    <td>4&nbsp;GiB</td>
  </tr>
  <tr>
    <td>686</td>
    <td>686-class; CMOV instruction</td>
    <td>32</td>
    <td>4&nbsp;GiB</td>
  </tr>
  <tr>
    <td>686-bigmem</td>
    <td>686-class; PAE</td>
    <td>32</td>
    <td>64&nbsp;GiB</td>
  </tr>
  <tr>
    <td>amd64</td>
    <td>x86-64</td>
    <td>512</td>
    <td>64&nbsp;TiB</td>
  </tr>
</table>
<p>
  However, the physical address limitation means that an increasing
  proportion of new PCs and the majority of PC servers need the
  '686-bigmem' flavour.  Even those that have less than 4&nbsp;GiB RAM
  do support PAE and can run the '686-bigmem' flavour.  There is a
  small cost (up to about 0.1% of RAM) in the use of larger hardware
  page tables.  There is also an important benefit on recent
  processors: the larger page table entries include an NX bit (also
  known as XD) which provides protection against some buffer overflow
  attacks, both in the kernel and in user-space..
</p>
<h3>Q: What about 686 processors without PAE?</h3>
<p>
  There are only a few 686-class processors that support CMOV but not
  PAE: most Intel Pentium M models, the VIA C3 'Nehemiah' and the AMD
  Geode LX.  These also all lack SMP support, which means the '486'
  flavour is suitable for them.
</p>
<p>
  Some benchmarking on two of those - a Pentium M model 745 and a C3
  'Nehemiah' - indicated that they run the '486' flavour slightly
  faster than the '686' flavour.  It appears that the performance gain
  from using plain uniprocessor code (rather than SMP-alternatives,
  which are patched with NOPs on uniprocessor systems) outweighs the
  performance loss from avoiding use of some newer instructions.
</p>
<h3>Q: Why get rid of '686' but keep the 'amd64' flavour?</h3>
<p>
  We intend to get rid of 'amd64' too, but we need to ensure that
  upgrades from linux-image-2.6-amd64:i386 to
  linux-image-2.6-amd64:amd64 work properly.
</p>
<h3>Q: If '686-bigmem' will be the default, isn't 'bigmem' redundant?</h3>
<p>
  Yes, it is.  Therefore '686-bigmem' will be renamed to '686-pae'.
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sun, 24 Apr 2011 03:34 GMT</pubDate>
</item>
<item>
   <title>Recent changes in Debian Linux packages</title>
   <guid isPermaLink="false">recent-changes-in-debian-linux-packages</guid>
   <link>http://womble.decadent.org.uk/blog/recent-changes-in-debian-linux-packages.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<h3>Linux 2.6.38 and 2.6.39</h3>
<p>
  As you've probably seen, the testing suite finally got a new
  upstream kernel version (Linux 2.6.38) and is currently synchronised
  with unstable.  I'm just about to upload a new version of linux-2.6
  based on upstream stable update 2.6.38.4.
</p>
<p>
  Linux 2.6.39 is well on its way to release, so 2.6.39-rc4 should
  soon be in experimental.  The Debian source package will add support
  for the new armhf (ARM with hardware floating-point) architecture.
</p>
<h3>Splitting linux-2.6</h3>
<p>
  The linux-base package, introduced to handle transitions and other
  support functions for 'image' packages, is now built from a separate
  source package.  It won't be changed very often, so you will no
  longer need to upgrade linux-base every time you upgrade an 'image'
  package.  (This doesn't apply within 'squeeze', but I may have a
  way to work around that.)
</p>
<p>
  The firmware-linux-free package, containing a few firmware and
  configuration blobs from Linux that are DFSG-compliant, is also now
  built from a separate source package.  These blobs have not changed
  for a very long time, so again you will no longer be recommended to
  upgrade this package every time you upgrade an 'image' package.
  Secondly, this allows us to remove the entire 'firmware' directory
  from the upstream source rather than carefully removing and patching
  to leave just the DFSG-compliant bits.
</p>
<h3>Wireless regulations</h3>
<p>
  The '2.4 GHz' and '5 GHz' ISM bands used for wifi are not defined
  identically around the world.  The exact frequency ranges and
  maximum permitted power levels vary between countries.  Radio
  equipment manufacturers have a legal responsibility to ensure their
  equipment operates within these regulations.  Since it is expensive
  to implement such regulations in hardware (including many different
  variants for different regions), these restrictions are usually
  implemented in the driver using a country code retrieved from the
  hardware's EEPROM or flash.  So this is now our responsibility.
</p>
<p>
  We need to be able to look up regulations by country codes, and we
  also need to support the case where a device sold in one country is
  used in another country with tighter regulations.  For some time,
  the wifi configuration library (cfg80211) included regulatory
  information for a small number of countries and regions.  However,
  the default since Linux 2.6.34 has been to build-in only the 'world'
  domain (intersection of all the restrictions) and to request
  information from user-space.  In Debian, we didn't have anything to
  provide this information, so for example channels 12-13 became
  unavailable for users in Europe.
</p>
<p>
  The regulatory information should be provided by the Central
  Regulatory Domain Agent (CRDA) from a current database.  These are
  now packaged as <code>crda</code> and <code>wireless-regdb</code>
  respectively.  Drivers that do not use cfg80211 (mostly those from
  the 'staging' area) will not be affected, and may or may not
  implement correct regulations.
</p>
<p>
  When you travel to another country or use an imported wifi device
  with an incorrect country code (I hear 'CN' is common), you can
  use <code>iw reg set</code> to ensure that your wifi devices operate
  within the regulations of the country you are in.  Set
  the <code>REGDOMAIN</code> variable in
  <code>/etc/default/crda</code> to make this persistent.  These will
  be <em>intersected</em> with the regulations specified by the
  hardware.
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sat, 23 Apr 2011 16:40 GMT</pubDate>
</item>
<item>
   <title>Distinguishing Ethernet-like net device types</title>
   <guid isPermaLink="false">distinguishing-ethernet-like-net-device-types</guid>
   <link>http://womble.decadent.org.uk/blog/distinguishing-ethernet-like-net-device-types.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<a href="http://www.hanskalabs.net/posts/network-devices-python-udev/">David
  Paleino asks</a>:
<blockquote>
  I'm still missing how to reliably detect if a device is a "wired" or
  a "wireless" one. I suspect that checking the existence of /phy80211
  would be enough, but I can't really tell, and seems like I'm not
  able to find an exhaustive sysfs reference manual.
</blockquote>
<p>
  Sadly there is no exhaustive manual, but many attributes found in
  sysfs are documented under
  <a href="http://www.kernel.org/doc/Documentation/ABI/">Documentation/ABI/</a>.
  In this case you need the DEVTYPE name from the net device's uevent,
  which may be e.g. 'wlan' or 'wwan' (and is absent for wired Ethernet
  devices). I don't know why this isn't also exposed as an attribute
  in its own right.
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Fri, 18 Feb 2011 22:23 GMT</pubDate>
</item>
<item>
   <title>USB serial console</title>
   <guid isPermaLink="false">usb-serial-console</guid>
   <link>http://womble.decadent.org.uk/blog/usb-serial-console.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>
  <a href="http://blog.andrew.net.au/2010/12/05#usb_serial_console">Andrew
    Pollock writes:</a>
</p>
<blockquote>
  <p>
    If you're trying to use a USB serial adapter as your Linux kernel
    console...
  </p>
  <p>
    The kernel needs to be compiled with CONFIG_USB_SERIAL_SERIAL=y
  </p>
</blockquote>
<p>
  That's CONFIG_USB_SERIAL_CONSOLE.
</p>
<blockquote>
  <p>
    Debian kernels do not appear to be. Somewhat strangely, the config
    option doesn't even wind up in the config file in the typical
    commented-out manner, so you don't even know the option exists
    until you discover it from random Web searching, and then looking
    at drivers/usb/serial/Kconfig in the kernel source.
  </p>
</blockquote>
<p>
  Console drivers need to be built-in, so CONFIG_USB_SERIAL_CONSOLE
  depends on CONFIG_USB_SERIAL=y.  We build the USB serial code as a
  module so CONFIG_USB_SERIAL_CONSOLE is not an available option.
  This is unlikely to change, as a built-in feature takes memory from
  every Debian GNU/Linux installation.
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sun, 05 Dec 2010 20:49 GMT</pubDate>
</item>
<item>
   <title>RCBW(eekend) 2010-11-01</title>
   <guid isPermaLink="false">rcbw-2010-11-01</guid>
   <link>http://womble.decadent.org.uk/blog/rcbw-2010-11-01.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<ul>
<li>
  <a href="http://bugs.debian.org/595396">#595396</a> - probably
  fixable with a binNMU, but I also changed debian/rules to catch
  regressions
</li>
<li>
  <a href="http://bugs.debian.org/596646">#596646</a> - downgraded;
  no justification given for 'serious' severity
</li>
<ins><li>
  <a href="http://bugs.debian.org/597059">#597059</a> - closed as not a bug
</li></ins>
<li>
  <a href="http://bugs.debian.org/599262">#599262</a> - reassigned
  to the kernel (linux-2.6) and downgraded as not RC there
</li>
<li>
  <a href="http://bugs.debian.org/599709">#599709</a> - applied
  the upstream fix
</li>
<li>
  <a href="http://bugs.debian.org/599711">#599711</a> - backported
  the upstream fix; downgraded as it's only a denial of service and
  may not even affect Debian
</li>
</ul>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Mon, 01 Nov 2010 17:48 GMT</pubDate>
</item>
<item>
   <title>Boot loader disruption in sid</title>
   <guid isPermaLink="false">boot-loader-disruption-in-sid</guid>
   <link>http://womble.decadent.org.uk/blog/boot-loader-disruption-in-sid.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>
  <img src="http://images.cheezburger.com/completestore/2010/8/27/12908597-8a76-4bd7-ae2e-4c304dc4b8c7.jpg"
       alt="IN UR DISTRO BRAKIN UR PACKAGEZ">
</p>
<p>
  <a href="http://bugs.debian.org/594479">Something</a> was bound to
  go <a href="http://bugs.debian.org/594189">wrong<a/> when changing
  the policy for boot loaders.  Let me try that again.
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sat, 28 Aug 2010 02:39 GMT</pubDate>
</item>
<item>
   <title>'This Week in Debian' podcast</title>
   <guid isPermaLink="false">this-week-in-debian-podcast</guid>
   <link>http://womble.decadent.org.uk/blog/this-week-in-debian-podcast.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>
  A few weeks ago
  <a href="http://upsilon.cc/~zack/blog/posts/2010/07/debian_podcast_planning/">Zack
    wrote</a> about preparations for a new podcast to be called 'This
    Week in Debian'.
    I <a href="http://wiki.debian.org/ThisWeekInDebian">volunteered to
    be interviewed</a>, and have now talked with Jonathan Nadeau for
    about 30 minutes about the work of the kernel team and the release
    process.  Hopefully he'll be editing down my rambling so the first
    episode won't be too boring!  If you do work on Debian that you'd
    like to talk about to an interested audience, follow the link
    above and add yourself to the list of potential interviewees.
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Fri, 06 Aug 2010 23:23 GMT</pubDate>
</item>
<item>
   <title>Cancelling a command in bash</title>
   <guid isPermaLink="false">cancelling-a-command-in-bash</guid>
   <link>http://womble.decadent.org.uk/blog/cancelling-a-command-in-bash.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p><a href="http://rb.doesntexist.org/blog/2010/05/22/changing-some-configuration-from-defaults/">Rog&eacute;rio Brito writes</a>:</p>
<blockquote>
  [...] whenever I was typing a command line, changed my mind and
  pressed C-c, I got a ^C printed on the screen, usually overwriting
  one or two characters of what I had typed. And this prevented me
  from automatically copying and pasting the command that I had typed.
</blockquote>
<p>
  There is an alternative to using C-c, and that is M-#.  This adds a
  '#' to the start of the line, commenting it out, and then behaves as
  if you pressed Return.  The result is that the command is cancelled
  but still remains on-screen <em>and</em> in your history.  You can
  then copy the command later using the mouse or keyboard.
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sat, 22 May 2010 21:56 GMT</pubDate>
</item>
<item>
   <title>Adding debian/source/format</title>
   <guid isPermaLink="false">adding-debiansourceformat</guid>
   <link>http://womble.decadent.org.uk/blog/adding-debiansourceformat.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<a href="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/200-guid.html">Neil Williams writes</a>:
<blockquote>
  <p>
    The new lintian addition "missing-debian-source-format" is starting to remind me of a pestering nanny.</p>
  <p>
    I use source format 3.0 only where I see a technical benefit and that
    - so far - is restricted to packages that use a .tar.bz2 upstream and
    one or two with really tricky patching requirements.
  </p>
</blockquote>
<p>
  You are missing the point - <tt>debian/source/format</tt> allows
  you to make it explicit that the source format is 1.0, if you want
  to stick with that.
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Thu, 25 Mar 2010 03:39 GMT</pubDate>
</item>
<item>
   <title>Debian Linux packages: the 'Big Bang' release</title>
   <guid isPermaLink="false">debian-linux-packages-the-big-bang-release</guid>
   <link>http://womble.decadent.org.uk/blog/debian-linux-packages-the-big-bang-release.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>
  Max Attems uploaded a new version of the Linux kernel package
  (linux-2.6) today.  This includes the last major changes to the
  package before Debian 6.0 'squeeze', which led me to label it
  the 'Big Bang' release:
</p>
<ul>
  <li>
    The Xen (dom0 and enhanced domU) flavour is back.  It should
    probably be considered experimental at the moment.
  </li>
  <li>
    The OpenVZ flavour is back.  This should also be considered
    experimental.
  </li>
  <li>
    The Direct Rendering Manager (DRM) system and drivers were updated
    to the versions in Linux 2.6.33.  This brings some bug fixes and
    extra features for the i915 driver, and working Kernel Mode
    Setting (KMS) for the radeon driver.  It also includes the
    kernel-mode part of the nouveau driver for Nvidia GPUs, but this
    will not yet be loaded automatically as the user-mode parts of
    nouveau have not been packaged.
  </li>
  <li>
    The
    <a href="/blog/this-season-i-have-mostly-been-building-kernels.html">libata
    transition for PATA (IDE) controller drivers</a>.  After some
    review we realised that this only affects PC hardware at the
    moment, so only users of the i386 or amd64 architectures will see
    the upgrade prompts.  Thanks to everyone who tested and reported
    bugs in the experimental packages.
  </li>
</ul>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Thu, 18 Mar 2010 03:01 GMT</pubDate>
</item>
<item>
   <title>KVM reliability</title>
   <guid isPermaLink="false">kvm-reliability</guid>
   <link>http://womble.decadent.org.uk/blog/kvm-reliability.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<a href="http://etbe.coker.com.au/?p=1829">Russell Coker writes</a>:
<blockquote>
  I had also hoped that it would be really reliable and work with the
  latest kernels (unlike Xen) but it is giving me problems with 2.6.32
  on Opteron.
</blockquote>
<p>
  This is a regression caused by a recent security fix (CVE-2010-0298,
  "KVM: x86 emulator: fix memory access during x86 emulation").  It
  appears to affect only recent Linux kernels running as guests on AMD
  systems, and it will probably be fixed soon.
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Tue, 16 Mar 2010 23:35 GMT</pubDate>
</item>
<item>
   <title>FOSDEM 10 Distribution Developer Room videos now available</title>
   <guid isPermaLink="false">fosdem-10-distribution-developer-room-videos-now-available</guid>
   <link>http://womble.decadent.org.uk/blog/fosdem-10-distribution-developer-room-videos-now-available.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>
As previously announced elsewhere,
<a href="http://video.debian.net/2010/fosdem10/">video recordings from
the Distribution Developer Rooms at FOSDEM 10</a> are now available.
All but two talks were recorded and are available in Ogg Theora+Vorbis
format, in low-bandwidth (~300 kbit/s) and high-bandwidth (~1.5
Mbit/s) versions.
</p>
<p>
These recordings should also be available later on the
<a href="http://www.youtube.com/fosdemtalks">FOSDEM YouTube
channel</a>.
</p>
<p>
Video and audio were recorded by Dominique Dumont (H.1302) and the
DebConf video team (H.1308) with the assistance of some additional
volunteers.  Thanks to everyone involved in recording, and thanks also
to the speakers and the organisers of FOSDEM.
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sun, 28 Feb 2010 20:17 GMT</pubDate>
</item>
<item>
   <title>This season I have mostly been building kernels</title>
   <guid isPermaLink="false">this-season-i-have-mostly-been-building-kernels</guid>
   <link>http://womble.decadent.org.uk/blog/this-season-i-have-mostly-been-building-kernels.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>
  As some people noticed, a driver update to support
  <a href="http://www.solarflare.com/news/news_press_show.php?release=20090824">a
  major hardware release</a> in my day job
  and <a href="http://article.gmane.org/gmane.linux.kernel/911054">a
  long series of trivial patches motivated by Debian kernel work</a>
  combined to make me <a href="http://lwn.net/Articles/373405/">joint
  most prolific change author for Linux 2.6.33</a>.  This was a fluke,
  and 2.6.34 is likely to be fairly quiet for me.
</p>
<h3>Team work</h3>
<p>
  Meanwhile the kernel team is still working hard on fixing bugs in
  Linux 2.6.32.  As previously announced, this kernel version will be
  used in both Debian 6.0 'squeeze' and Ubuntu 10.04 LTS.  It is also
  known to be the kernel version for RHEL 6 though this has not been
  officially announced.  If you find a serious bug that was fixed in
  2.6.33 or later, please ask the author to send the fix to
  stable@kernel.org so that it will be included in all these
  distributions.  Note that this happens automatically for commits
  with the line 'Cc: stable@kernel.org' in their description.
</p>
<p>
  We are also continuing to backport new drivers and new hardware
  support in existing drivers into Debian 5.0 'lenny' (stable).
  Missing support for common hardware is considered an important bug
  and suitable for stable updates.  However, if there were major
  changes to a driver before those that added new hardware support, we
  may be unable to produce a backport.  We are not able to carry out
  comprehensive hardware testing and do not want to risk a regression
  existing hardware support.
</p>
<h3>libata transition - call for testing</h3>
<p>
  Finally, a major change I have been working on is the transition
  from the old IDE drivers for PATA controllers to new drivers based
  on libata.  The old IDE subsystem is no longer developed and some
  drivers do not properly support all the hardware that their
  libata-based counterparts do.  However, while the IDE drivers
  generate device names beginning with 'hd', libata presents PATA
  devices as SCSI devices and generates device names beginning with
  'sd'.  In a system that already has other SCSI or SCSI-like disks,
  names may change somewhat unpredictably.  Similar problems exist for
  PATA CD/DVD and tape devices.
</p>
<p>
  So, while the transition doesn't involve any kernel hacking, it does
  require a complex upgrade process.  Any configuration files that
  refer to IDE or SCSI device names may need to be changed.  It is not
  enough to switch to only SCSI device names, since we cannot know what
  they are in advance and the configuration files should continue to
  work with kernel versions from before and after the transition.  In
  the case of disks we can normally use the partition label or UUID:
  many tools understand the <tt>LABEL=</tt> and <tt>UUID=</tt> syntax,
  and for others we can refer to the symlinks under <tt>/dev/disk</tt>
  created by udev.  In the case of CD/DVD devices, we can use the
  aliases <tt>/dev/cdrom</tt> etc.  created by udev.  In the case of
  tape devices, however, you're on your own.
</p>
<p>
  In experimental, kernel image packages depend on a new package
  <tt>linux-base</tt> which implements this transition (from
  2.6.33-1~experimental.2; the previous version was broken).  The
  postinst script will prompt you to make changes automatically or
  manually.  It can convert most bootloader configuration files,
  <tt>/etc/fstab</tt>, the udev CD aliases configuration and
  the <tt>initramfs-tools</tt> resume partition.  It can also label
  partitions that don't have a label or UUID.  Please do test it and
  verify that its changes are correct.  All changed configuration
  files are backed up with a suffix of '.old' (or '^old' in one case).
</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sun, 28 Feb 2010 18:11 GMT</pubDate>
</item>
<item>
   <title>Debian kernel team at Linux Plumbers Conference</title>
   <guid isPermaLink="false">debian-kernel-team-at-linux-plumbers-conference</guid>
   <link>http://womble.decadent.org.uk/blog/debian-kernel-team-at-linux-plumbers-conference.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>Most of the Debian kernel team members are attending the
<a href="http://linuxplumbersconf.org/2009/">Linux
Plumbers Conference</a> in Portland over the next 3 days.  We'll be
discussing kernel packaging and integration issues among ourselves
and with upstream and other distributors.~</p>
<p>You may have noticed that Linux 2.6.31 is out but not yet in sid.
This kernel version contains a large number of known regressions
which should be fixed in subsequent stable updates, so we will wait
for those.  In the mean time we've uploaded an update to 2.6.30 which
should resolve the most serious bugs.</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Wed, 23 Sep 2009 17:34 GMT</pubDate>
</item>
<item>
   <title>DebConf 9 videos - progress</title>
   <guid isPermaLink="false">debconf-9-videos---progress</guid>
   <link>http://womble.decadent.org.uk/blog/debconf-9-videos---progress.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p><a href="http://meetings-archive.debian.net/pub/debian-meetings/2009/debconf9/low/">Low-bandwidth
versions of the recorded talks</a> are now available.  There are currently
two exceptions:</p>
<ul>
<li>Some of the music for 'Welcome to DebConf 9' is licenced as CC BY-NC-ND,
which unfortunately doesn't allow use in a video.  I'm discussing this
with Marga and hope to upload a new version soon.</li>
<li>'Debian por dentro' has a piece missing which should be restored from
tape.</li>
</ul>
<p>While the master versions of all these talks have been checked, not all
the generated low-bandwidth versions have.  Please let us know on
<a href="mailto:debconf-video@lists.debconf.org">debconf-video@lists.debconf.org</a>
if there is something wrong with them other than the following:</p>
<ul>
<li>A few of the recordings were unfortunately incomplete; this is indicated
by a fade-in or fade-out</li>
<li>Some of the recordings are in two pieces</li>
<li>There were a few drop-outs where you will see a black screen and no sound
for up to a second</li>
<li>The text on some slides is unreadable; in this case, refer to the file
provided by the speaker or wait for the high-bandwidth version</li>
</ul>
<p>The high-bandwidth versions will be uploaded over the next week (slow
connection is slow).</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sun, 13 Sep 2009 13:14 GMT</pubDate>
</item>
<item>
   <title>DebConf 9 videos</title>
   <guid isPermaLink="false">debconf-9-videos</guid>
   <link>http://womble.decadent.org.uk/blog/debconf-9-videos.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>Several people have been asking after the videos.  My answer to
them is "we release when it's ready".</p>
<p>Seriously, though, I'm sorry about the delay in publishing videos.
There was some miscommunication between me and the sysadmin team at
DebConf which meant I couldn't take files away with me then.  Peter
Palfrader reassembled the video RAID later, copied the necessary
files onto a single hard disk, and posted that to me.  This disk
apparently got lost on the way, but eventually arrived here last
week after a 3-week journey.</p>
<p>Over the weekend I dealt with most of the videos that required
editing, and today I was able to resume the transcoding process.
Tomorrow I intend to start uploading again.</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Thu, 10 Sep 2009 03:24 GMT</pubDate>
</item>
<item>
   <title>Photos from DebConf 9</title>
   <guid isPermaLink="false">photos-from-debconf-9</guid>
   <link>http://womble.decadent.org.uk/blog/photos-from-debconf-9.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<a href="https://gallery.debconf.org/v/debconf9/benh/">My photos
from DebConf 9</a>. These are all taken with my new digital compact
as my film SLR is in need of repair. I'm quite pleased with the results.

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Tue, 11 Aug 2009 11:43 GMT</pubDate>
</item>
<item>
   <title>¡Olé!</title>
   <guid isPermaLink="false">olé</guid>
   <link>http://womble.decadent.org.uk/blog/ol%C3%A9.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/zws5m58RFxI&hl=en&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/zws5m58RFxI&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344">Geek Flamenco, by Nattie</embed></object>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Wed, 29 Jul 2009 23:12 GMT</pubDate>
</item>
<item>
   <title>Status of firmware in Debian</title>
   <guid isPermaLink="false">status-of-firmware-in-debian</guid>
   <link>http://womble.decadent.org.uk/blog/status-of-firmware-in-debian.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p><a href="http://lists.debian.org/debian-project/2009/07/msg00203.html">A question from AJ</a>
reminded me that I haven't said much about the changes to packaging of firmware
in Debian, and in particular the separation of non-free firmware from the Linux
kernel.</p>
<h3>Linux kernel packages</h3>
<p>There is an ongoing process upstream to move firmware blobs from drivers
into a firmware/ subdirectory of the source, which is now almost complete.
Since most of this firmware is non-free, we remove it from the source tarballs for
kernel packages but use it to update the firmware-nonfree "source" package.</p>
<p>We continue to patch some drivers to separate out firmware, and
have been submitting our changes upstream.  Most of these have been accepted
though the DRI drivers matrox, r128 and radeon are notable exceptions.</p>
<p>A few months ago I attempted to make a new <a
href="http://wiki.debian.org/KernelFirmwareLicensing#Inventory">inventory of
the remaining firmware blobs</a> outside of the firmware/ subdirectory.  I
identified three that should still be addressed.  The <a
href="http://linux-libre.fsfla.org/">Linux-libre</a> project, however, <a
href="http://www.fsfla.org/svn/fsfla/software/linux-libre/scripts/">removes
many other constant arrays from the kernel</a> (and disables the affected
drivers) where I judged the array to be a plausible preferred form of
modification.</p>
<h3>Firmware packages</h3>
<p>Much of the non-free firmware removed from the kernel is now available
in the firmware-linux package in the non-free section of the Debian archive.
Starting with Linux 2.6.31, we will build the DFSG-free firmware shipped
with Linux into a package called firmware-linux-free, which will be
recommended by kernel image packages.  The contents of firmware-linux
will be moved to firmware-linux-nonfree and firmware-linux becomes a
meta-package depending on the other two packages.</p>
<p><a href="http://packages.debian.org/source/sid/firmware-nonfree">Many
other firmware images</a> never distributed with Linux are also
packaged for the benefit of users that require them.</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Wed, 29 Jul 2009 16:23 GMT</pubDate>
</item>
<item>
   <title>DebConf</title>
   <guid isPermaLink="false">debconf</guid>
   <link>http://womble.decadent.org.uk/blog/debconf.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p><img src="http://media.debconf.org/dc9/images/debconf9-going-to.png" alt="I'm going to DebConf 9"></p>
<p>I'll be involved in the video team again.</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Fri, 12 Jun 2009 02:14 GMT</pubDate>
</item>
<item>
   <title>Python relicencing</title>
   <guid isPermaLink="false">python-relicencing</guid>
   <link>http://womble.decadent.org.uk/blog/python-relicencing.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>One of the more interesting talks at last week's PyCon was on the
<a href="http://pycon.blip.tv/file/1931026/">new Python licence</a>.</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Wed, 01 Apr 2009 01:51 GMT</pubDate>
</item>
<item>
   <title>Busy at PyCon</title>
   <guid isPermaLink="false">busy-at-pycon</guid>
   <link>http://womble.decadent.org.uk/blog/busy-at-pycon.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>This week I'm at PyCon in Chicago, helping to train and supervise
the A/V team in recording the tutorials and talks.  We have a lot of
inexperienced volunteers but they're learning quickly.  Carl Karsten
(in charge of A/V) and Ryan Verner (another outsider with long
experience from LCA) are organising things.  Ryan, Dave Noble and I
provide technical assistance to the rest of the team.</p>

<p>I'm also working
on my first Django app, which will be used for reviewing files.  This
is essentially a clone of the excellent work done by Gunnar Wolf and
Damian Viano in Pentabarf.  PyCon doesn't have a centralised
database so this is a standalone application.  Ryan is now applying
styles to my horribly bare HTML, and I have a short list of bugs to
fix before we ask the video team to start reviewing.</p>

<p>The tutorials started yesterday and talks wil start tomorrow in
different rooms, so we have to set up all the equipment again and
reconfigure for multiple cameras.  Hopefully by Saturday things
will be running smoothly and I can spend some time in the city.  It
would be a shame to come all this way and stay by the airport for
the entire time!</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Thu, 26 Mar 2009 18:58 GMT</pubDate>
</item>
<item>
   <title>Going to PyCon</title>
   <guid isPermaLink="false">going-to-pycon</guid>
   <link>http://womble.decadent.org.uk/blog/going-to-pycon.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>I'm going to <a href="http://us.pycon.org"><img src="http://us.pycon.org/media/2009/public/pycon2009-horizontal-small-140x88.png" alt="PyCon 2009: Chicago"></a></p>
<p>Carl Karsten of the PyCon organisers recruited three of us from the
DebConf video team to lead and train the video team at PyCon.</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sun, 15 Feb 2009 17:44 GMT</pubDate>
</item>
<item>
   <title>Searching for invalid object code</title>
   <guid isPermaLink="false">searching-for-invalid-object-code</guid>
   <link>http://womble.decadent.org.uk/blog/searching-for-invalid-object-code.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>J&eacute;r&eacute;my Bobbio suggested that I should explain how I looked for packages
affected by a compiler bug
(<a href="http://bugs.debian.org/506713">Debian bug 506713</a>;
<a href="http://gcc.gnu.org/PR38287">gcc bug 38287</a>).  I don't claim that
this is a particularly good way to do it, but here it is:</p>

<p>First, I identified a pattern to search for. Unfortunately I don't really
understand the cause or fix for the bug, but I did have the example which
led to this bug report: <a href="http://bugs.debian.org/490999">Debian bug
490999</a>. The bad code was a stack-pointer-relative load immediately
after a stack allocation (SPARC save instruction) where the offset was not
adjusted for the stack allocation:</p>
<blockquote><pre>
save  %sp, -112, %sp
ld  [ %sp + 0x40 ], %i5
</pre></blockquote>
I generalised this to:
<blockquote><pre>
save  %sp, <var>offset1</var>, sp
...
ld  [ %sp + <var>offset2</var> ], <var>register</var>
</pre></blockquote>
<p>where <var>offset1</var> + <var>offset2</var> &lt; 0.  Of course, this may
be valid if the intervening instructions include a <code>restore</code>,
branch or store to the effective stack location that the last instruction
loads from.  I ended up allowing up to 10 intervening instructions and
examining a disassembly to work out which cases were valid.</p>

<p>I looked up the instruction encoding for these two instructions.
Thankfully SPARC is RISC so they are simple and regular:</p>
<ul>
<li><code>save  %sp, <var>offset1</var>, sp</code> is encoded as <code>0x9de3a000 | offset1 &amp; 0x1fff</code></li>
<li><code>ld  [ %sp + <var>offset2</var> ], <var>register</var></code> is encoded as <code>0xc003a000 | reg &lt;&lt; 25 | offset2 &amp; 0x1fff</code>
</ul>
<p>I took the dumb but effective approach of scanning entire files for
this pattern rather than only scanning their code sections.  This seemed to
work - I got no false hits for non-code - but might not work for other
patterns that could match ASCII text.</p>

<p>I wrote the scanning program in Python, which is my default choice of
language unless I know it's going to be too slow.  I was hoping to be able
to read the code files into arrays, but unfortunately the Python array
type only supports the native byte-order (SPARC is big-endian and I was
intending to use an x86 which is little-endian).  I tried reading into a
tuple using struct.unpack, which does support explicit byte-ordering, but
this used so much memory for larger files that the program swapped to a
crawl.  So finally I resorted to reading the file into a string, doing a
string search for '\x9d\xe3', rejecting matches that weren't appropriately
aligned, then unpacking and comparing the code words from the point of the
string match.
(In Python 3.0 I would have to use the <code>bytes</code> type for this,
as <code>str</code> is a Unicode string type.)</p>

<p>So that's how I scanned single files.  The next step was to find, unpack
and scan all the SPARC shared libraries in the archive.  (This particular
code generation bug is understood to affect only PIC code, and that is
normally only used in shared libraries.)  I wrote functions to search
Contents-sparc for shared library files - assumed to match the pattern
<code>([^\s]*/lib[^/\s]+\.so(?:\.[^/\s]*)?)</code> - and to parse
Packages to find the filenames for the packages containing those files.
The latter uses the <code>debian_bundle.deb822</code> module from
<a href="http://packages.debian.org/python-debian">python-debian</a>.
The last key function downloads and unpacks a package using
<code>wget</code> and <code>dpkg-deb</code>.  I could have used
the <code>httplib</code> module for downloading but I correctly
anticipated that I'd need to restart the script several times so I
wanted to cache the packages which was easier to do using
<code>wget</code>.</p>

<p>So, that's the explanation.  If you really want to see it,
<a href="http://womble.decadent.org.uk/software/find_bug506713.py">here's
the code</a>.</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Tue, 06 Jan 2009 00:53 GMT</pubDate>
</item>
<item>
   <title>FOSDEM 2009</title>
   <guid isPermaLink="false">fosdem-2009</guid>
   <link>http://womble.decadent.org.uk/blog/fosdem-2009.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<a href="http://www.fosdem.org"><img src="http://www.fosdem.org/promo/going-to" alt="I'm going to FOSDEM."></a> Are you?

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Thu, 04 Dec 2008 02:26 GMT</pubDate>
</item>
<item>
   <title>My Debian packages in Git</title>
   <guid isPermaLink="false">my-debian-packages-in-git</guid>
   <link>http://womble.decadent.org.uk/blog/my-debian-packages-in-git.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>I finally got sufficiently fed up with Subversion yesterday to begin
converting my package repositories to Git.  This has many benefits,
including the fact that I can now easily publish them.
<a href="http://git.decadent.org.uk/gitweb">Browse</a> or
<a href="http://git.decadent.org.uk/git">clone</a> them as you prefer.
Or just ignore them.</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sun, 02 Nov 2008 15:50 GMT</pubDate>
</item>
<item>
   <title>For those who care about firmware</title>
   <guid isPermaLink="false">for-those-who-care-about-firmware</guid>
   <link>http://womble.decadent.org.uk/blog/for-those-who-care-about-firmware.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>Some drivers in Linux include "firmware" - code that runs on the device the
driver deals with, not the main processors in the system.  Most of this is in a
binary or equivalent form, which is probably not the form that it was
originally written in.  This makes it non-free by Debian's standards, an issue
which has led to much argument around previous releases and has blown up once
again.</p>
<p>The good news is that kernel developers are making a continuing effort to
separate this from the driver code.  I've collected together the patches that
do this and written 2 of my own, which appear to cover all the remaining
sourceless firmware.  But I was only able to test one of these drivers (radeon)
- the rest is up to you.</p>
<h3>Affected drivers</h3>
<table>
<tr><th>Driver</th><th>Hardware which requires firmware</th><th>Bug report</th><th>Change made</th></tr>
<tr><td>cassini</td><td>Sun "Cassini" Ethernet controllers with "Neptune" PHY</td><td><a href="http://bugs.debian.org/498631">498631</a></td><td>removed</td></tr>
<tr><td>dabusb</td><td>BayCom DAB-USB radio receivers</td><td><a href="http://bugs.debian.org/502663">502663</a></td><td>moved to firmware-dabusb</td></tr>
<tr><td>e100</td><td>Intel PRO/100 Ethernet controllers with PCI revision 8, 9, 15 or 16 or built into ICH6 or ICH7 (LAN-on-motherboard)</td><td><a href="http://bugs.debian.org/494308">494308</a></td><td>moved to firmware-e100</td></tr>
<tr><td>kaweth</td><td>Kawasaki LSI USB Ethernet controllers</td><td><a href="http://bugs.debian.org/502665">502665</a></td><td>removed</td></tr>
<tr><td>mga</td><td>Matrox G200, G400, G450(?) and G550 graphics controllers, 3D acceleration only</td><td><a href="http://bugs.debian.org/502666">502666</a></td><td>moved to firmware-matrox</td></tr>
<tr><td>qla1280</td><td>QLogic QLA1XXX SCSI controllers</td><td><a href="http://bugs.debian.org/502667">502667</a></td><td>moved to firmware-qlogic</td></tr>
<tr><td>r128</td><td>ATI Rage 128 graphics controllers, 3D acceleration only</td><td><a href="http://bugs.debian.org/494007">494007</a></td><td>moved to firmware-ati</td></tr>
<tr><td>starfire</td><td>Adaptec DuraLAN aka Starfire Ethernet controllers</td><td><a href="http://bugs.debian.org/501152">501152</a></td><td>moved to firmware-adaptec</td></tr>
<tr><td>tehuti</td><td>Tehuti Ethernet controllers</td><td><a href="http://bugs.debian.org/501153">501153</a></td><td>moved to firmware-tehuti</td></tr>
<tr><td>typhoon</td><td>3Com Typhoon (3CR990) Ethernet controllers</td><td><a href="http://bugs.debian.org/502669">502669</a></td><td>moved to firmware-3com</td></tr>
<tr><td>whiteheat</td><td>ConnectTech WhiteHEAT USB serial adapters</td><td><a href="http://bugs.debian.org/502668">502668</a></td><td>removed</td></tr>
</table>
<h3>How to test</h3>
<ol>
<li>Download and install the linux-source package from <a href="http://people.debian.org/~benh/firmware-removal/">http://people.debian.org/~benh/firmware-removal/</a>.  There is a signed
.changes file there that you can use to verify the package.</li>
<li>Build and install a kernel from that source (you should probably use make-kpkg).</li>
<li>Boot the kernel. Check that the driver fails cleanly: it should not crash, and there should be a useful error message in /var/log/messages
<li>Download and install the relevant firmware package, if available. These are available from the same place as the linux-source package.
<li>Reboot or reload the driver. Check that the driver is now working.
<li>Add your results to the bug report as shown above.
</ol>
<h3>Firmware that is removed</h3>
<p>Do you depend on the drivers for which I have removed the firmware? Do you have contacts with
the vendors who might be able to help relicence it? Please send mail to the bug report.</p>
<h3>Update</h3>
<p>I checked my email and found a response from ConnectTech; the WhiteHEAT firmware will
probably be clear to package in firmware-nonfree. There is no need for anyone else to
contact them.</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Wed, 22 Oct 2008 00:53 GMT</pubDate>
</item>
<item>
   <title>chmod -x considered harmful</title>
   <guid isPermaLink="false">chmod--x-considered-harmful</guid>
   <link>http://womble.decadent.org.uk/blog/chmod--x-considered-harmful.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>I discovered an interesting "feature" of chmod(1), which caused a package
build to fail.  According to the GNU manual page, if no letters are used
before a "-" or "+", "the effect is as if a were given, but bits that are set
in the umask are not affected."  The command will also fail with an error
message when it does this!</p>
<p>The Single Unix Specification <a href="http://www.opengroup.org/onlinepubs/009695399/utilities/chmod.html">
says this is correct</a>, though there is some ambiguity over whether the
exit status should be 0 or not.</p>
<p>Anyway, the result is that it is generally a bad idea to call chmod in
this way in a script.  Always specify who the permission changes should apply
to.</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sat, 06 Sep 2008 22:24 GMT</pubDate>
</item>
<item>
   <title>DebConf videos on Planet Debian</title>
   <guid isPermaLink="false">debconf-videos-on-planet-debian</guid>
   <link>http://womble.decadent.org.uk/blog/debconf-videos-on-planet-debian.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>In addition to <a href="http://wiki.debconf.org/wiki/DebConf8/Streams">live
streams</a>, recordings of each event should be published on
meetings-archive.debian.net.  There is an RSS feed of these, which should work
nicely in Miro: <a
href="http://meetings-archive.debian.net/pub/debian-meetings/2008/debconf8/index.rss">http://meetings-archive.debian.net/pub/debian-meetings/2008/debconf8/index.rss</a>.
That feed is also included on <a href="http://planet.debian.org">Planet
Debian</a>.  This is the first time I've tried generating RSS so apologies in
advance if I make a mess of the Planet.</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sun, 10 Aug 2008 08:32 GMT</pubDate>
</item>
<item>
   <title>Last of the DebConf 7 videos, no, really</title>
   <guid isPermaLink="false">last-of-the-debconf-7-videos-no-really</guid>
   <link>http://womble.decadent.org.uk/blog/last-of-the-debconf-7-videos-no-really.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>Sorry, I missed a few <a href="http://womble.decadent.org.uk/blog/last-of-the-debconf-7-videos.html">last time</a>.</p>
<table>
<tr><td>Dependency-based boot sequence</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/408_Dependency_based_boot_sequence.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/408_Dependency_based_boot_sequence.ogg">high</a></td></tr>
<tr><td>Data-mining Popcon</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/409_Data_Mining_Popcon.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/409_Data_Mining_Popcon.ogg">high</a></td></tr>
<tr><td>Debian-installer - an update</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/410_Debian_Installer_an_update.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/410_Debian_Installer_an_update.ogg">high</a></td></tr>
<tr><td>Wacky ideas II</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/411_Wacky_Ideas_II.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/411_Wacky_Ideas_II.ogg">high</a></td></tr>
</table>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sun, 03 Aug 2008 19:58 GMT</pubDate>
</item>
<item>
   <title>Last of the DebConf 7 videos</title>
   <guid isPermaLink="false">last-of-the-debconf-7-videos</guid>
   <link>http://womble.decadent.org.uk/blog/last-of-the-debconf-7-videos.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>A few of the recordings from DebConf 7 had to be recovered in whole or
in part from tape.  For personal and technical reasons, a few of these
were not done last year, and I have finally dealt with them now.  The
last few sessions are:</p>
<table>
<tr><td>The secure Debian Desktop</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/389_The_secure_Debian_Desktop.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/389_The_secure_Debian_Desktop.ogg">high</a>
<tr><td>Debian - The Universal Operating System?</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/390_Debian_the_Universal_Operating_System.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/390_Debian_the_Universal_Operating_System.ogg">high</a></td></tr>
<tr><td>Wacky ideas BoF</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/391_Wacky_ideas.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/391_Wacky_ideas.ogg">high</a></td></tr>
<tr><td>lintian BoF</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/392_lintian_BOF.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/392_lintian_BOF.ogg">high</a></td></tr>
<tr><td>Debian travels around the world</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/393_Debian_travels_around_the_world.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/393_Debian_travels_around_the_world.ogg">high</a></td></tr>
<tr><td>Leading a Free Software project</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/394_Leading_a_Free_Software_project.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/394_Leading_a_Free_Software_project.ogg">high</a></td></tr>
<tr><td>Method diffusion in large volunteer projects</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/395_Method_diffusion_in_large_volunteer_projects.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/395_Method_diffusion_in_large_volunteer_projects.ogg">high</a></td></tr>
<tr><td>Debtags is ready</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/396_Debtags_is_ready.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/396_Debtags_is_ready.ogg">high</a></td></tr>
<tr><td>OpenStreetMap</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/397_OpenStreetMap.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/397_OpenStreetMap.ogg">high</a></td></tr>
<tr><td>Maintaining packages with Git</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/402_Maintaining_Packages_With_Git.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/402_Maintaining_Packages_With_Git.ogg">high</a></td></tr>
<tr><td>netconf</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/404_netconf.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/404_netconf.ogg">high</a></td></tr>
<tr><td>Time for a better init system</td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/407_Time_for_a_better_init_system.ogg">low</a></td><td><a href="http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/high/407_Time_for_a_better_init_system.ogg">high</a></td></tr>
</table>
<p>Hopefully these are useful to someone. Sorry it took so long!</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Tue, 29 Jul 2008 09:15 GMT</pubDate>
</item>
<item>
   <title>Becoming a kernel developer</title>
   <guid isPermaLink="false">becoming-a-kernel-developer</guid>
   <link>http://womble.decadent.org.uk/blog/becoming-a-kernel-developer.html</link>
   <description><![CDATA[
<!--*- mode: html -*-->
<p>After a fair amount of clean-up, a lot of waiting for review, and some
ruthless pruning, I and my colleagues at Solarflare finally got our net
driver accepted for Linux 2.6.26.  Meanwhile a larger version of the driver
made it into Xen's Linux tree, along with dependent drivers to provide a
secure fast path to the hardware from domU.  Somewhere down the road we're
going to have to resolve these two versions, but now I'm just pleased to
have a working driver in-tree.</p>
<p>There are some other changes I've worked on over the past few months:</p>
<ul>
<li>I maintain diagnostic scripts for our NICs and drivers.  Among other
things they include Vital Product Data (VPD).  There's a standard way to
read VPD in PCI (actually there are two, in different versions of the
spec) but in Linux this is only accessible to root, and even then there
are race conditions.  We provide an MTD driver for flash and/or
EEPROM attached to the NIC, and I know where the VPD appears in there,
but most users won't be loading that driver.  So I wrote this:
<a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=94e6108803469a37ee1e3c92dafdd1d59298602f">Expose PCI VPD through sysfs</a></li>
<li>Along the way I found a <a href="http://bugzilla.kernel.org/show_bug.cgi?id=9867">bug</a>
in sysfs, which I fixed:
<a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=40a2159abf3d0107bba359246554bd7d56f2171b">Disallow truncation of files in sysfs</a></li>
<li>One day I accidentally bridged one of our network interfaces, which
has <a href="http://lwn.net/Articles/243949/">Large Receive Offload</a>
(LRO) enabled by default, with one of the motherboard's network
interfaces, and the results were not pretty.  LRO isn't really compatible
with packet forwarding, and currently causes the
<a href="http://www.linux-foundation.org/en/Net:GSO">GSO</a> code to
crash or warn.  I wanted to solve this by
<a href="http://thread.gmane.org/gmane.linux.network/92708">disabling
forwarding of LRO skbs</a>, but it turns out to be trickier than I
thought.</li>
<li>We wanted to use topology information to allocate one IRQ per
CPU package, not per core (or per thread, with HT enabled) for
<a href="http://msdn.microsoft.com/en-us/library/ms795614.aspx">Receive-Side Scaling</a>.
Unfortunately this information is only available in some kernel
configurations and not for all architectures.  I had a go at
<a href="http://thread.gmane.org/gmane.linux.kernel/660107">providing
reasonable defaults</a>, but it
<a href="http://article.gmane.org/gmane.linux.kernel/667397">didn't
work too well</a>!</li>
</ul>
<p>However, this is still only part of my work.  My main task at the
moment is to write more unit tests for our next NIC.</p>

]]></description>
   <category domain="http://womble.decadent.org.uk/blog"></category>
   <pubDate>Sat, 03 May 2008 15:15 GMT</pubDate>
</item>
</channel>
</rss>

