<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/'>
<channel>
  <title>Matthew Garrett</title>
  <link>http://mjg59.livejournal.com/</link>
  <description>Matthew Garrett - LiveJournal.com</description>
  <lastBuildDate>Sat, 11 Jul 2009 05:32:17 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>mjg59</lj:journal>
  <lj:journalid>1051328</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>http://l-userpic.livejournal.com/4975639/1051328</url>
    <title>Matthew Garrett</title>
    <link>http://mjg59.livejournal.com/</link>
    <width>64</width>
    <height>66</height>
  </image>

<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/113401.html</guid>
  <pubDate>Sat, 11 Jul 2009 05:32:17 GMT</pubDate>
  <title>Simple conference organisation suggestion</title>
  <link>http://mjg59.livejournal.com/113401.html</link>
  <description>If you find the comments discussed &lt;a href=&quot;http://opensourcetogo.blogspot.com/2009/07/good-gcds-beginning-with-significant.html&quot;&gt;here&lt;/a&gt; unacceptable, don&apos;t invite RMS to keynote at your conference without an explicit apology and expression of understanding from him beforehand. I&apos;m seriously at the end of my patience with people being unwilling to call others on behaviour they perceive as unacceptable. Either make it obvious or accept that people will treat your failure to do so as implicit support.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Edited to clarify that I think the apology should be from RMS, not from people who invite him to keynote&lt;/i&gt;</description>
  <comments>http://mjg59.livejournal.com/113401.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>11</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/112990.html</guid>
  <pubDate>Fri, 10 Jul 2009 15:47:11 GMT</pubDate>
  <title>Chrome OS</title>
  <link>http://mjg59.livejournal.com/112990.html</link>
  <description>It turns out that I was &lt;a href=&quot;http://mjg59.livejournal.com/105448.html&quot;&gt;entertainingly wrong&lt;/a&gt; a while ago, though I persist in claiming that this is an utterly ridiculous idea and I should be forgiven for thinking that Google were sane. The whole thing really still doesn&apos;t make sense to me. Worthwhile support of hardware is difficult. I&apos;m going to take it as a given that Google aren&apos;t going to claim to support arbitrary hardware. People who would never otherwise try Linux will install it, and the state of many Linux drivers is sufficiently poor that it&apos;d do a great deal to damage their brand. The logical assumption is that it&apos;ll be available pre-installed on devices where Google have worked closely with the hardware vendors.&lt;br /&gt;&lt;br /&gt;Which concerns me somewhat. History isn&apos;t filled with compelling examples of this. Xandros&apos;s low-level support for the Eee mostly seemed to consist of a pile of shell scripts made of cheese and failure. The bizarro-Linux on the hilariously dodgy MIPS-based netbook I have is about as functional as my wisdom teeth. The best example of a Linux vendor working with OEMs is probably Canonical, and their enthusiasm for merging hardware support code in their OEM-specific distributions has led to things like touchpad gesture support based on using a known security hole or drivers that reimplement one that&apos;s already mainline.&lt;br /&gt;&lt;br /&gt;What I&apos;m trying to say here is that pretty much every desktop Linux product based on cooperation between OEMs and an existing Linux vendor has been built on top of a tower of shit. That&apos;s partly because it&apos;s a hard problem, but it&apos;s also because most OEMs produce dreadful Linux code and the Linux vendors don&apos;t have the resources to rewrite it in a clean way in the timescale permitted between hardware being finalised and shipping product. I haven&apos;t seen Google recruiting a larger than normal number of people with Linux distribution experience lately, so I suspect that the situation may be the same there. This is probably fine if the number of products is relatively small - there&apos;s an opportunity to QA them sufficiently to ensure that the rough edges underneath don&apos;t accidentally take someone&apos;s hand off. But otherwise there is a genuine risk that poor-quality devices will appear with Chrome OS and people will blame Google for the poor user experience.&lt;br /&gt;&lt;br /&gt;So it seems like a risk for Google. Either there&apos;ll be a small number of devices and the same vague level of discontent that surrounds the fact that the number of shipping Android devices doesn&apos;t seem to have reached expectations, or a large number of potentially crappy devices. What&apos;s the payoff? It&apos;s pretty clear that this is going to be based heavily around Google&apos;s web apps, possibly with disconnected operation. That gets Google a lot of lockin. It also neatly sidesteps the entire disaster that has been providing application add-ons and updates for netbook Linux distributions. But it seems that Google could have achieved that by partnering with a distribution that already has experience in this field rather than going it alone.&lt;br /&gt;&lt;br /&gt;I remain unconvinced that this is a sensible decision for Google. But then, I&apos;ve already demonstrated that I don&apos;t have the faintest idea what&apos;s going on. Which probably puts me in the same field as most of the analysts I was bitching about before. Zounds. The irony.</description>
  <comments>http://mjg59.livejournal.com/112990.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>21</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/112642.html</guid>
  <pubDate>Mon, 06 Jul 2009 18:07:00 GMT</pubDate>
  <title>What does the desktop want from the kernel?</title>
  <link>http://mjg59.livejournal.com/112642.html</link>
  <description>I&apos;ll be running a session on Wednesday at GCDS to find out what desktop developers would like to see from the kernel. There&apos;s a lot of interest in making things easier for file indexers, but if anyone has other problems that could be made easier with some level of kernel support then please turn up. No precise time or location yet, but probably around 3PM at the university. More details forthcoming.</description>
  <comments>http://mjg59.livejournal.com/112642.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>23</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/112462.html</guid>
  <pubDate>Mon, 06 Jul 2009 17:18:10 GMT</pubDate>
  <link>http://mjg59.livejournal.com/112462.html</link>
  <description>One of the strengths of the open source community is that so much happens in the open. It&apos;s generally easy to find out what&apos;s happening in a project and directly interact with the developers. Code is out in the public. People frown upon closed discussion and implementation. But there&apos;s also a cost. Personality conflicts get hidden in the corporate world. We air them in public. And while in some ways that&apos;s arguably an advantage, it also results in things like &lt;a href=&quot;http://www.itwire.com/content/view/26075/1090/1/0/&quot;&gt;this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, to be fair, I&apos;ve never been an especially big fan of Sam&apos;s work. His journalism generally leans towards lazy sensationalism rather than any attempt to actually understand the issues. He&apos;s not especially well versed on the basis of free software (see his &lt;a href=&quot;http://www.itwire.com/content/view/5634/1090/1/1/&quot;&gt;assertion&lt;/a&gt; that the difference between the cathedral and bazaar development models is about project leadership rather than source code availablity and how people participate). He&apos;s managed to mischaracterise my opinions in the past, which means trusting his characterisation of anyone else is somewhat difficult. But that&apos;s not the point. Sam&apos;s article isn&apos;t about facts or analysis. It&apos;s about crucifying someone for expressing an opinion that Sam disagreed with.&lt;br /&gt;&lt;br /&gt;I don&apos;t know Anirudh. From his website, he sounds like a pretty typical young hacker. He&apos;s contributing to a project that interests him. He&apos;s self taught. He holds strong opinions. And, last week, he published a rant on a topic he cared about - specifically his feeling that the patent concerns about Mono shouldn&apos;t prevent people from developing in it, and that RMS&apos;s statements about not using Mono harm the free software community more than they help it. I don&apos;t agree with all of his arguments. I don&apos;t think it was a hugely well structured rant. And, shockingly, telling RMS to fuck off isn&apos;t going to achieve a great deal.&lt;br /&gt;&lt;br /&gt;But the point wasn&apos;t to change the world. People like voicing their opinions. I&apos;ve done so &lt;a href=&quot;http://mjg59.livejournal.com/15048.html&quot;&gt;several&lt;/a&gt; &lt;a href=&quot;http://mjg59.livejournal.com/16852.html&quot;&gt;times&lt;/a&gt; &lt;a href=&quot;http://mjg59.livejournal.com/5744.html&quot;&gt;on&lt;/a&gt; &lt;a href=&quot;http://mjg59.livejournal.com/110535.html&quot;&gt;several&lt;/a&gt; &lt;a href=&quot;http://mjg59.livejournal.com/108257.html&quot;&gt;occasions&lt;/a&gt; on a &lt;a href=&quot;http://www.google.com/search?hl=en&amp;amp;q=site%3Amjg59.livejournal.com+fuck&amp;amp;aq=f&amp;amp;oq=&amp;amp;aqi=&quot;&gt;wide range of topics&lt;/a&gt;. People have disagreed with me. People have voiced concerns about the way I&apos;ve expressed myself. People have flat out told me to stop being a cock. But nobody has attempted to tell me that I haven&apos;t earned the right to express that opinion. Nobody has expended four pages to tear me apart for daring to criticise another member of the community. Nobody has dared to call me a coward for deciding that I&apos;d gone too far and modifying or retracting something I&apos;ve written.&lt;br /&gt;&lt;br /&gt;Yet that is precisely what Sam Varghese has done here. And let&apos;s be clear here - the use of the word &quot;fuck&quot; is a red herring. Sam is publically humiliating someone because he has his own agenda. He&apos;s picking on someone smaller than him because he can. He&apos;s explicitly stating that anyone arguing in favour of Mono can expect to be thoroughly abused in front of a large audience. In Sam&apos;s world I don&apos;t get to criticise the shockingly distasteful sexist remarks RMS made during his GCDS keynote because I didn&apos;t write emacs. I don&apos;t get to point out that ESR&apos;s understanding of racial genetics and natural selection are fundamentally flawed because I don&apos;t maintain the jargon file. I don&apos;t get to say that I think Ted Tso was wrong about ext4&apos;s semantic changes because I&apos;ve never written a filesystem. And if I do any of these things, I can expect Sam to pop up and do his best to destroy my reputation.&lt;br /&gt;&lt;br /&gt;Of course, he won&apos;t. Because in Sam&apos;s world, it&apos;s not actually about whether anyone has achieved great things. It&apos;s about whether the targets of his vitriol will be able to stand up for themselves or not.  And while the truth is that nobody in the community is above criticism and nobody needs to earn their right to disagree, I doubt that Sam is ever going to show the courage that Anirudh did and publish a public retraction of his astonishing attack.&lt;br /&gt;&lt;br /&gt;Shame on you, Sam Varghese.</description>
  <comments>http://mjg59.livejournal.com/112462.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>25</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/112155.html</guid>
  <pubDate>Thu, 25 Jun 2009 21:38:42 GMT</pubDate>
  <link>http://mjg59.livejournal.com/112155.html</link>
  <description>I&apos;ve had hard drives die before, but this one seems to be doing it in an especially pathological way. It started with the kernel throwing irq timeout errors and then stepped up into actual read errors, culminating in a corrupt journal, a read-only block device and a forced fsck. It&apos;s been behaving a little better since then, though occasional io stalls (without any kernel error) suggest that it&apos;s having to repeatedly retry some sectors. SMART says it&apos;s all fine, so obviously I&apos;m backing it all up now before a new disk arrives tomorrow and I can sort out access to the data centre. Email might be a bit spotty for me until then.&lt;br /&gt;&lt;br /&gt;Turns out that running a 2.5&quot; PATA drive for approximately 4 straight years may not have been the best of ideas. Who&apos;d have guessed?</description>
  <comments>http://mjg59.livejournal.com/112155.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>15</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/111995.html</guid>
  <pubDate>Wed, 24 Jun 2009 14:07:17 GMT</pubDate>
  <link>http://mjg59.livejournal.com/111995.html</link>
  <description>I spent last week in the US, during which I discovered that my preconceptions of Albany as a post-industrial wasteland with no redeeming features were incorrect (it&apos;s actually a post-industrial wasteland with some decent bars), made minor contributions (mostly in the form of pesto) to a &lt;a href=&quot;http://www.flickr.com/photos/lenawebb/3652281474/&quot;&gt;prize winning chalk picture&lt;/a&gt; and cycled on the wrong side of the road for the first time in a ridiculous number of years.&lt;br /&gt;&lt;br /&gt;But more relevantly, I spent most of the week trapped in Westford. One of the things I&apos;ve been looking into lately is USB autosuspend, a kernel feature which allows devices to be powered down when they&apos;re not in use. This is especially interesting for USB, since it&apos;s a poll-based protocol. If the end device is powered up then bus traffic will be generated, even if everything&apos;s idle. USB autosuspend allows this to be avoided and thus saves a worthwhile amount of power.&lt;br /&gt;&lt;br /&gt;However, drivers need to support USB autosuspend before it&apos;s useful. Further, devices need to be able to cope with it. Some older kernel releases had autosuspend enabled by default, leading to all kinds of fun as people discovered that their scanners and printers had stopped working. This was fixed by leaving autosuspend disabled by default for most hardware. The first component that I&apos;m working on is support for drivers to indicate whether or not a given piece of hardware supports autosuspend, allowing it to be enabled by default for that kernel. Handling this at a per-driver level means we shouldn&apos;t end up with obnoxious white or blacklists. The second is adding support for autosuspend to more drivers. Right now I&apos;m concentrating on hardware that&apos;s common in laptops. There&apos;s support for autosuspend in the qcserial and uvc drivers, and some experimental (and unmerged) patches for bluetooth and some other modem drivers. Palm have just released their kernel code, which includes autosuspend support for the cdc-acm driver. I&apos;m working on cleaning these up and getting them into a mergable state, and part of what I was doing in Westford was testing that various pieces of hardware work correctly. The good news is that they seem to, and with a bit of luck we&apos;ll try shipping support for a lot of this in F12. If that doesn&apos;t end up causing real world problems then it ought to be safe to merge it all to mainline.&lt;br /&gt;&lt;br /&gt;The final component of this is handling autosuspend on devices with userspace drivers. Our only real choice there is for packages to ship udev fragments that enable it for working hardware. I&apos;ve added support to the fprint package in rawhide, which means that fingerprint readers should now be powered down unless they&apos;re opened. Nobody seems to have complained yet, so I&apos;m cautiously optimistic that this can be sent upstream without any problems.</description>
  <comments>http://mjg59.livejournal.com/111995.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/111853.html</guid>
  <pubDate>Tue, 23 Jun 2009 20:41:44 GMT</pubDate>
  <link>http://mjg59.livejournal.com/111853.html</link>
  <description>It&apos;s now been over 6 months since Poulsbo hardware with Intel&apos;s GMA500 graphics core started shipping in volume. And we&apos;re still utterly lacking in any sort of worthwhile driver. It&apos;s an impressive turnaround from the recent days when the straightforward recommendation for mobile Linux hardware was &quot;anything that has lots of Intel stuff in lspci&quot;, and while the Poulsbo situation in itself doesn&apos;t change that hugely it&apos;s potentially symptomatic of a worrying trend within parts of Intel.&lt;br /&gt;&lt;br /&gt;The first thing to realise here is that, like most large companies, Intel consists of a large number of business units with different priorities. Their open-source technology center has historically had responsibility for providing Linux support for hardware, but this obviously depends on other business units cooperating with them. And there&apos;s strong evidence that many of those business units don&apos;t get it.&lt;br /&gt;&lt;br /&gt;There&apos;s been signs of this for some time. Back before the days of the Intel X.org driver gaining native modesetting support, some people ran the &lt;a href=&quot;http://www.intel.com/design/intarch/swsup/graphics_drivers.htm&quot;&gt;Intel embedded graphics driver&lt;/a&gt;. This was (is?) a closed X driver that was able to provide native modesetting on platforms that could only otherwise be run at incorrect resolutions. One business unit was shipping a driver that was more functional than the official Intel Linux driver. To the best of my knowledge, none of that code was ever used in the rewritten Intel driver that now provides the same features.&lt;br /&gt;&lt;br /&gt;Poulsbo is another example of this. Intel wanted a low-power mobile graphics chipset and chose to buy in a 3D core from an external vendor. IP issues prevent them from releasing any significant information about that 3D core, so the driver remains closed source. The implication is pretty clear - whichever section of Intel was responsible for the design of Poulsbo presumably had &quot;Linux support&quot; as a necessary feature, but didn&apos;t think &quot;Open driver&quot; was a required part of that. There&apos;s not a lot any other body inside Intel can do once IP-limiting contracts are signed and the hardware&apos;s shipping, but it ends up tarnishing the good reputation that other parts of Intel have built up anyway.&lt;br /&gt;&lt;br /&gt;And while Poulsbo is the most obvious example of this to date, it&apos;s not the only one. Intel recently decided to make the &lt;a href=&quot;http://edk2.tianocore.org&quot;&gt;EFI development kit&lt;/a&gt; discussion lists private. Various drivers for Moorestown (the followup platform to Poulsbo) have been submitted to the Linux kernel, and while they have the advantage of being GPLed they have the disadvantage of being barely above the level of typical vendor code. Objections that chunks of them simply don&apos;t integrate into Linux correctly has done little to get these problems fixed - I still have no real idea how the runtime interface to power management on the SD driver is supposed to be used, but I suspect the answer is probably &quot;badly&quot;.&lt;br /&gt;&lt;br /&gt;This all makes sense if you assume that there are large groups of people in Intel who don&apos;t talk to each other. But to the casual observer it just looks schizophrenic. Explaining to an irate user that the Intel who shipped a closed Linux graphics driver is only barely the same Intel who contribute so much to architectural improvements in the Linux graphics stack doesn&apos;t make their hardware work. And while all of this confusion is going on, Intel&apos;s competitors are catching up. Atheros are now making significant contributions to the state of Linux wireless. AMD are releasing graphics chipset documentation faster than Intel, and radeon support is improving rapidly.&lt;br /&gt;&lt;br /&gt;Is the future going to be one where we can no longer simply say that Intel hardware will Just Work? Is their work on Moblin (easily the most compelling Linux UI for netbooks) going to be wasted on the broader Linux community because it&apos;ll mostly end up running on hardware that&apos;s not supported by the mainline Linux kernel? Does Intel have a real commitment to open source, or is that being lost in the face of short-term requirements?&lt;br /&gt;&lt;br /&gt;Intel need to demonstrate that they have a company-wide understanding of what Linux support actually means or risk losing much of what they&apos;ve earned over the past few years. I&apos;m desperately hoping that Poulsbo and what we&apos;ve seen so far of Moorestown are the exception, not the future norm.</description>
  <comments>http://mjg59.livejournal.com/111853.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>22</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/111453.html</guid>
  <pubDate>Wed, 10 Jun 2009 14:41:10 GMT</pubDate>
  <title>Palm Pre</title>
  <link>http://mjg59.livejournal.com/111453.html</link>
  <description>I&apos;m in the UK and even if I weren&apos;t I wouldn&apos;t be using a CDMA phone, but the Palm Pre is undoubtedly an interesting device and so I&apos;ve spent a short while looking at the root filesystem that can be extracted from the downloadable ROM image. There&apos;s some interesting things there. Bear in mind that this could be some QA internal image, so chunks of what I talk about may be wrong - on the other hand it seems to have been produced in May, so it&apos;s probably pretty close to what&apos;s shipping.&lt;br /&gt;&lt;h2&gt;Hardware&lt;/h2&gt;As others have figured out by now, the Pre is codenamed Castle and there&apos;s some references to another device called Pixie. This is presumably the Eos device that&apos;s expected to end up with AT&amp;T. The other interesting thing is that the image contains modem firmware for both CDMA and UMTS. They&apos;re shipped as tarballs - extracting them gives you something that looks awfully like the firmware for the Qualcomm Gobi dual-CDMA/HSDPA chipset used in a bunch of modern laptops. The core firmware is an ELF object for 32-bit ARM. It&apos;s got references to Qualcomm in it and it&apos;s also got an embedded RSA signature which presumably cuts back on the potential for interesting hacking. The&lt;br /&gt;&lt;br /&gt;/usr/bin/PmModemUpdater -e &amp;lt; /usr/lib/modem/castleumtsfw.tar&lt;br /&gt;&lt;br /&gt;command, executed as root, should flash the UMTS firmware to the modem (castlecdma_evt1_fw.tar is the CDMA firmware). However it should be noted that the MSM6801A baseband used on the Pre seems to be a CDMA-only chip and there&apos;s no obvious place on the board for a SIM socket. My assumption is that the GSM models will have a very similar baseband with different radios. Unlocking the device will presumably be similarly difficult to the iphone - someone will need to find a flaw in the Qualcomm firmware that allows the network lock to be skipped. The PmModemFactory command will let you unlock the phone, but you&apos;ll need the appropriate code to do so and can (I guess) permanently lock it if you enter the wrong code too often.&lt;br /&gt;&lt;br /&gt;The internal flash appears to present as mmc for some reason.&lt;br /&gt;&lt;h2&gt;Software&lt;/h2&gt;A lot of the software on the Pre is GPLed, and Palm are therefore obliged to provide copies of the appropriate source code to anyone who receives the software (note that receiving the &lt;em&gt;device&lt;/em&gt; is not required - if the software is downloadable then the source offer must be made available to anyone who receives the software). The source code is not currently downloadable - instead Palm have included a written offer to supply the source code on request. This satisfies the GPL, but I can&apos;t be bothered doing that for the moment so all of this is purely based on examining the binaries.&lt;br /&gt;&lt;br /&gt;The full list of applications extracted from the open source information documented included is &lt;a href=&quot;http://www.codon.org.uk/~mjg59/palm_pre_software.txt&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;General&lt;/h3&gt;The Pre appears to be an OpenEmbedded-based system. It uses ipkg for package management and the majority of the basic userspace apps are all from Busybox.&lt;br /&gt;&lt;h3&gt;Kernel&lt;/h3&gt;The Pre&apos;s running 2.6.24, and there&apos;s various references to Windriver. There&apos;s an internal git repository codenamed rockhopper, which is a little odd - rockhopper&apos;s the codename for a MIPS-based NEC evaluation board. It&apos;s probably coincidental, given that there&apos;s only so many species of penguin available. The version string includes &quot;joplin&quot; - there&apos;s evidence of this in mailing list posts dating back to last year, so it&apos;s not clear whether &quot;joplin&quot; is the entire WebOS kernel project or a codename that covers both the castle and pixie platforms.&lt;br /&gt;&lt;br /&gt;The hardware-specific drivers look well-integrated, for the most part using the standard kernel interfaces (backlight, led and so on) - this is a marked contrast to Android, which tends to go its own way in this respect. There&apos;s a driver for the OMAP DSP, the &lt;a href=&quot;http://www.berthels.co.uk/exmap/&quot;&gt;exmap&lt;/a&gt; code for analysing application memory usage, oprofile for detailed profiling analysis, some crypto code, a driver for an SDIO-attached Marvell wifi chipset and support for being a USB gadget (ie, something that appears as a USB device when plugged into a USB host). Side note - depending on whether the system is a castle or a pixie, the g_composite gadget driver is given a different ID to let the host OS differentiate between the two. castle will appear with a USB id of 0x8002, and pixie 0x8012.&lt;br /&gt;&lt;br /&gt;There&apos;s nothing else very interesting looking about the kernel. The source code should reveal more.&lt;br /&gt;&lt;h3&gt;Booting&lt;/h3&gt;The Pre uses &lt;a href=&quot;http://upstart.ubuntu.com&quot;&gt;upstart&lt;/a&gt; as its init application. In contrast to mainstream Linux distributions that still mostly use upstart in sysvinit emulation mode, the Pre appears to be almost entirely based on native upstart events. One of the things they&apos;ve used this for is to automatically stop various services when the update service is started. Beyond that there&apos;s nothing exceptional here, but looking at etc/event.d does give insight into what&apos;s running on the device.&lt;br /&gt;&lt;h3&gt;Userland&lt;/h3&gt;In contast to Android, the Pre uses the standard GNU C library and associated userland. Filesystem layout is pretty typical Linux, with / containing the low level binaries and /usr containing the rest of the OS. The only slightly weird thing is that various utilities exist in both their busybox and full forms, and I&apos;m not entirely clear on why it&apos;s shipping things like fsck.ext4 though I guess you could use an ext4 sd card or something.&lt;br /&gt;&lt;br /&gt;Audio is handled through pulseaudio, while media is handled by gstreamer. There&apos;s a large collection of codecs for the DSP including WMA and h.264, but no obvious ogg support despite libogg and libvorbis being mentioned in the list of open source software shipped. Future plans? Pulled partway through development? Unclear.&lt;br /&gt;&lt;h3&gt;ipod emulation&lt;/h3&gt;The Pre pretends to be an ipod by switching into a different USB profile (and thus giving the right USB information) and setting up a filesystem that looks like an ipod. It provides a SysInfoExtended file that looks like an ipod. The only terribly interesting things about this are the list of formats (AIFF, MP3, WAV, AAC, AppleLossless, Audible, H.264, MPEG4 and H.264LC), the fact that it supports album art, the fact that it &lt;em&gt;doesn&apos;t&lt;/em&gt; support Apple&apos;s DRM and that the firewire GUID looks like it&apos;s probably the same on all Pres. Could Apple break this support in a future version of itunes? Yes, but none of this support is hardcoded in the Pre&apos;s hardware - Palm could provide an update that matches. I don&apos;t see any real benefit to Apple in breaking the support, and if it could be shown that they were doing it deliberately then there could be potential legal issues.&lt;br /&gt;&lt;br /&gt;The code actually looks generic enough that it could probably be made to emulate other USB mass-storage based media players if you wanted to. I have no idea why you&apos;d want to.&lt;br /&gt;&lt;h3&gt;misc&lt;/h3&gt;There&apos;s a PalmOS ROM image for use in the emulator. usr/share/accountservices contains some files with interesting links in - one of them gives a full dump of the PHP setup on a Palm server, which gives some indications of their internal network setup and other things that are probably harmless but companies usually get paranoid over. The flasher application is called Trenchcoat. There&apos;s setup code for traffic shaping support - I haven&apos;t checked whether this is for application QoS on the device or whether it&apos;s intended for use with tethering.&lt;br /&gt;&lt;br /&gt;Binutils is shipped. The Pre has an ARM assembler installed by default. The mind faintly boggles. It looks like there&apos;s tethering support via the Bluetooth PAN profile (see usr/bin/PmConnectionManager) as well as via USB. IPC is dbus-based rather than using something custom like Android&apos;s binder.&lt;br /&gt;&lt;h2&gt;Overall&lt;/h2&gt;I&apos;m impressed. There&apos;s a few rough edges and some obvious short-term hacks, but overall the Pre has the appearance of being a well-engineered distribution. It&apos;s recognisably Linux in a way the Android isn&apos;t. Since it seems to be possible to gain root by entering the developer mode, I suspect that modifying the firmware image isn&apos;t especially difficult. It&apos;ll be interesting to see what happens when GSM ones appear.&lt;br /&gt;&lt;br /&gt;There&apos;s some more information at the &lt;a href=&quot;http://predev.wikidot.com/&quot;&gt;pre dev wiki&lt;/a&gt;.</description>
  <comments>http://mjg59.livejournal.com/111453.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>31</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/111115.html</guid>
  <pubDate>Tue, 09 Jun 2009 15:24:03 GMT</pubDate>
  <title>Antler customer service</title>
  <link>http://mjg59.livejournal.com/111115.html</link>
  <description>In what makes a surprising change from my normal bitching about customer service, I called &lt;a href=&quot;http://www.antler.co.uk&quot;&gt;Antler&lt;/a&gt; last week after the rubber coating on the wheels of my luggage disintegrated. I&apos;ve had that bag for almost 5 years and travelled something like 300,000 miles in that time, so it wasn&apos;t an especially surprising result - but the bag had a 7 year warranty covering defects in materials and manufacture, so they picked it up last week and dropped off a new one today. I&apos;m impressed.</description>
  <comments>http://mjg59.livejournal.com/111115.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/110870.html</guid>
  <pubDate>Mon, 04 May 2009 00:53:57 GMT</pubDate>
  <title>Thinkpad mixers</title>
  <link>http://mjg59.livejournal.com/110870.html</link>
  <description>Older (up to the *60 series) Thinkpads have a slightly odd mixer setup. There&apos;s a mixer stage that sits between the software controllable mixer and the speakers. This is controlled by the firmware in response to the volume keys being hit and can&apos;t be prevented by the OS. This is unfortunate, since users are quite enthusiastic about seeing an on-screen display when they hit various keys and if we do the obvious thing and map the volume keys to KEY_VOLUMEUP and KEY_VOLUMEDOWN then they get the OSD but also get their software-controlled mixer changed at the same time as their firmware-controlled mixer. This causes boundless confusion.&lt;br /&gt;&lt;br /&gt;Lorne Applebaum recently sent &lt;a href=&quot;http://www.mail-archive.com/ibm-acpi-devel@lists.sourceforge.net/msg01675.html&quot;&gt;a patch&lt;/a&gt; that added an ALSA control to represent the Thinkpad mixer. This means that we can now read and control the Thinkpad-specific hardware without userspace needing any special knowledge. I&apos;ve gone a little further and sent a &lt;a href=&quot;http://www.mail-archive.com/ibm-acpi-devel@lists.sourceforge.net/msg01751.html&quot;&gt;followup patch&lt;/a&gt; that sends ALSA notifications on button presses. Lennart suggested that it would also be helpful to export dB values and wrote a &lt;a href=&quot;http://git.0pointer.de/?p=dbmeasure.git;a=summary&quot;&gt;nice app&lt;/a&gt; that measures them - that means that Pulseaudio will be able to set the mixer volume correctly by default.&lt;br /&gt;&lt;br /&gt;The only missing part of the puzzle now is getting the OSD back. We still can&apos;t map the keys to KEY_VOLUMEUP and KEY_VOLUMEDOWN because that&apos;ll still result in two mixers being changed at once. We can&apos;t add new keys to indicate that it&apos;s a notification event rather than a command, since X can&apos;t deal with keycodes greater than 255 (actually 243, since it adds 8 to every kernel keycode for historical hilarity) and we&apos;ve run out of space. We can&apos;t hook off the ALSA notifications because that&apos;ll result in the OSD popping up in response to someone dragging a slider in a volume control application. The easiest thing might be to add another ALSA notification that&apos;s only triggered if the notification was generated in the kernel and then have userspace listen for that.&lt;br /&gt;&lt;br /&gt;Newer Thinkpads appear to have done away with this mixer setup entirely and just send standard volume events. This is a Good Thing.&lt;br /&gt;&lt;br /&gt;In other news, I&apos;m off on holiday to Australia for a couple of weeks so may be a bit slow in replying to things.</description>
  <comments>http://mjg59.livejournal.com/110870.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>16</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/110838.html</guid>
  <pubDate>Sun, 19 Apr 2009 00:32:55 GMT</pubDate>
  <title>Extended Qualcomm Gobi features</title>
  <link>http://mjg59.livejournal.com/110838.html</link>
  <description>And while I&apos;m on the subject of bitching about hardware support, I had some time to poke at the Qualcomm Gobi hardware a bit more last week. With the aid of Dan Williams of Network Manager fame we identified[1] that the hardware actually does rather more than is obvious from the qcserial driver. There&apos;s two extra ports - one is for diagnostics, and the other claims to be an NMEA port. Poking support for these into qcserial is easy enough, but they don&apos;t seem especially chatty. The more interesting factor is that the fourth interface on the endpoint is a network device. This isn&apos;t unusual in modern hardware - PPP isn&apos;t a terribly helpful layering for data transfer, so most recent high speed data cards also provide support for some kind of network device. If you&apos;re lucky it&apos;s a spec-compliant cdc device. If you&apos;ve got a gobi then it claims to be a vendor defined class and type and the .inf file for the driver claims that it&apos;s a proprietary cdc device. Testing this got cut short by us not actually having an account on Verizon[2], so we don&apos;t have any data dumps to work out what the framing looks like.&lt;br /&gt;&lt;br /&gt;Interestingly, doing USB dumps revealed that Windows seemed to do everything via the network device. We didn&apos;t see any traffic from the other ports, even when attempting to turn on the GPS. So it may also have some magic out of band configuration that doesn&apos;t simply use AT commands.&lt;br /&gt;&lt;br /&gt;If anyone has this stuff working under Windows, it&apos;d be interesting to try getting some dumps to try to work out what&apos;s going on here.&lt;br /&gt;&lt;br /&gt;[1] By the simple process of opening the device manager under Windows. Ahem.&lt;br /&gt;&lt;br /&gt;[2] The test machine was a Vaio P, which came with a gobi but no SIM slot. Thanks, Sony. Thony.</description>
  <comments>http://mjg59.livejournal.com/110838.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/110535.html</guid>
  <pubDate>Fri, 17 Apr 2009 00:14:18 GMT</pubDate>
  <title>Intel&apos;s commitment to open source driver support</title>
  <link>http://mjg59.livejournal.com/110535.html</link>
  <description>Update: It turns out that the original PSB code is still on the moblin site - I just failed to notice that there&apos;s two pages of git repositories. I fail. Last update is from March 2008, though.&lt;br /&gt;&lt;br /&gt;Edited again: An up-to-date version of the drm code is available as part of the &lt;a href=&quot;http://repo.moblin.org/moblin/development/core/source/&quot;&gt;Moblin kernel SRPM&lt;/a&gt; - repo.moblin.com isn&apos;t obviously linked off the Moblin website, but I should have thought to find and check their source repository.&lt;br /&gt;&lt;br /&gt;By and large, working with Intel is a pleasure. In fact, a while ago I &lt;a href=&quot;http://web.archive.org/web/20071109072524/http://intellinuxgraphics.org/index.html&quot;&gt;said so in a fairly obvious way&lt;/a&gt;. So it&apos;s a shame that the support for Poulsbo is &lt;em&gt;still&lt;/em&gt; an absolute fucking mess with absolutely no obvious end in sight. Intel&apos;s Moblin group (the people who seem to be closest to having responsibility for providing any public Linux support for that hardware, though it&apos;s really not clear if they&apos;ve got any more say in this than I do) have a kernel team that &lt;a href=&quot;http://lists.moblin.org/pipermail/dev/2009-March/003769.html&quot;&gt;don&apos;t want or need a git tree&lt;/a&gt; despite having someone who&apos;s working on forward porting the driver to modern kernels - probably a job that requires more than one person given what a godawful fucking mess the last public release was, but it&apos;d at least be nice to see what the current state is. Especially since you don&apos;t even seem to be able to &lt;em&gt;get&lt;/em&gt; the last public release - moblin&apos;s git repositories have been rearranged and I can&apos;t find the psb-kmod one on their gitweb any more.&lt;br /&gt;&lt;br /&gt;The most terribly depressing thing about this is that development is clearly still happening internally. Ubuntu is still being &lt;a href=&quot;https://lists.ubuntu.com/archives/kernel-team/2009-April/005339.html&quot;&gt;sent tarball releases by Intel&lt;/a&gt;, not that the code&apos;s getting any better judging by the &lt;a href=&quot;https://lists.ubuntu.com/archives/kernel-team/attachments/20090414/c7cffbe0/attachment.bin&quot;&gt;type of diff involved&lt;/a&gt;. This is made even more entertaining by the &lt;a href=&quot;http://launchpad.net/bugs/357760&quot;&gt;bug in question&lt;/a&gt; being private, leaving no indication whatsoever about what bugs this code is meant to fix or why.&lt;br /&gt;&lt;br /&gt;Closed development, random private tarball drops to partners without any public releases or changelogs, no indication of any upstream release, &lt;a href=&quot;http://lkml.org/lkml/2009/3/19/1&quot;&gt;kernel developers entirely unrelated to the development of the driver&lt;/a&gt; trying to get code merged so people can actually use the hardware they bought? I&apos;d expect this of some random far-east vendor with no experience in working with Linux, but not a company that&apos;s consistently one of the top ten contributors to the kernel and has frequently touted their level of support. There&apos;s no meaningful support for Poulsbo. There&apos;s just a thin cardboard cutout that&apos;s been carefully placed in front of a hole filled with users&apos; hopes and money.&lt;br /&gt;&lt;br /&gt;Seriously Intel. Sort it the fuck out.</description>
  <comments>http://mjg59.livejournal.com/110535.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>25</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/110148.html</guid>
  <pubDate>Sat, 04 Apr 2009 18:05:15 GMT</pubDate>
  <title>HP EliteBook 2530p</title>
  <link>http://mjg59.livejournal.com/110148.html</link>
  <description>HP apparently decided my 2510p was cursed and replaced it with a 2530p which arrived earlier this week. A bit of playing later and it all seems pretty happy. Backlight control works fine, though you&apos;ll need hal-info git to get the hotkeys working out of the box. Sound needs alsa from 2.6.30 or for snd_hda_intel to be loaded with the &quot;model=laptop&quot; parameter. Suspend seems to work out of the box. Hotkeys and rfkill work with hp-wmi. The webcam is supported by the uvcvideo driver. The wwan modem needs qcserial from 2.6.30 and &lt;a href=&quot;http://www.codon.org.uk/~mjg59/gobi_loader&quot;&gt;a tool for loading the firmware&lt;/a&gt;. It&apos;s happy to boot from EFI which probably saves a second or so of boot time. Wireless is iwl5100 and supported by the drivers from Intel. Video is GM45 and worked fine without any tweaking. I&apos;ve no idea if the modem is supported or not, and I haven&apos;t tested the fingerprint reader yet. Grub was slightly unhappy about the idea of an EFI system partition that wasn&apos;t declared in a GPT, but that was a two line diff.&lt;br /&gt;&lt;br /&gt;I&apos;ve backported code to rawhide where necessary, so F11 should be released with full support for the hardware. It&apos;s quite a nice machine, and seems more solid than the 2510p - I&apos;ll see how it&apos;s going in a year or so.</description>
  <comments>http://mjg59.livejournal.com/110148.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/109989.html</guid>
  <pubDate>Sat, 04 Apr 2009 16:26:31 GMT</pubDate>
  <title>Qualcomm Gobi firmware loading</title>
  <link>http://mjg59.livejournal.com/109989.html</link>
  <description>Shortly after I posted &lt;a href=&quot;http://mjg59.livejournal.com/109780.html&quot;&gt;this entry&lt;/a&gt; on the qualcomm modem driver, Alexander Shumakovitch posted a &lt;a href=&quot;http://marc.info/?l=linux-usb&amp;amp;m=123874553630076&amp;amp;w=2&quot;&gt;shell script&lt;/a&gt; to do the loading. I&apos;ve turned this into a C app and added checksumming support and udev integration, and now things seem to be working happily. There aren&apos;t many device IDs in the qcserial driver upstream right now, but I&apos;ve just sent a patch to add a bunch. If you have a device this works for and you had to add the ID manually, let me know and I&apos;ll update things. You can get it &lt;a href=&quot;http://www.codon.org.uk/~mjg59/gobi_loader/&quot;&gt;here&lt;/a&gt;.</description>
  <comments>http://mjg59.livejournal.com/109989.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/109780.html</guid>
  <pubDate>Thu, 02 Apr 2009 18:43:23 GMT</pubDate>
  <title>The curious tale of the driver that did nothing</title>
  <link>http://mjg59.livejournal.com/109780.html</link>
  <description>Several vendors are now shipping Qualcomm&apos;s Gobi chipset, a cunning dual CDMA-GSM wireless broadband device. There&apos;s a driver for it in the Linux kernel called qcserial which claims to support it.&lt;br /&gt;&lt;br /&gt;Do not be fooled. This driver is a vile lie.&lt;br /&gt;&lt;br /&gt;The hardware comes up in a dumb state and requires firmware to be loaded before it&apos;ll do anything. The only way to obtain this firmware is from a Windows driver. The only way to load this firmware is under Windows. This isn&apos;t helpful, especially given that it drops the firmware whenever you use rfkill or suspend or power down the machine. In fact, the only way you can use this driver is to boot Windows, let it load the firmware, reboot into Linux, get online and then never turn off or suspend your computer or the radio.&lt;br /&gt;&lt;br /&gt;So, don&apos;t be like me - swearing viciously and trying to generate useful USB packet dumps in an attempt to get the hardware working. Known bad parts are the HP un2400 and the Dell wireless 5600 - sony also have a Gobi part that&apos;s used in the P-series machines, and Acer have one as well. I&apos;ll update this if I ever get anywhere with a firmware uploader, but until then remember that the presence of a driver in the kernel doesn&apos;t mean that you can actually do anything with the hardware. Fyalcomm.</description>
  <comments>http://mjg59.livejournal.com/109780.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>11</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/109453.html</guid>
  <pubDate>Sat, 28 Mar 2009 03:39:41 GMT</pubDate>
  <link>http://mjg59.livejournal.com/109453.html</link>
  <description>&lt;a href=&quot;http://opensolaris.org/jive/message.jspa?messageID=348626#348626&quot;&gt;&quot;Open&quot;Solaris&lt;/a&gt;. Especially ironic given that there&apos;s a &lt;a href=&quot;http://fxr.watson.org/fxr/source/dev/acpi_support/acpi_toshiba.c&quot;&gt;2-clause BSD implementation&lt;/a&gt; out there already.</description>
  <comments>http://mjg59.livejournal.com/109453.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/109286.html</guid>
  <pubDate>Fri, 27 Mar 2009 00:21:51 GMT</pubDate>
  <title>Reducing disk use</title>
  <link>http://mjg59.livejournal.com/109286.html</link>
  <description>UNIX filesystems generally store three pieces of timing information about files - ctime (when the file was changed in any way), mtime (when the file contents, as opposed to its metadata, was last changed) and atime (when the file was last accessed by any process). This is a usefully flexible system, but the semantics of atime can be troublesome. atime must be updated every time a file is read, causing a read operation to instead become a read/write operation. This results in a surprising amount of io being generated in normal filesystem use, slowing the more relevant io and causing disks to spin up due to atime updates being required even if the file was read out of cache. It also results in a lot of unnecessary activity on flash media which may reduce their lifetime.&lt;br /&gt;&lt;br /&gt;One option is to disable atime updates entirely. The problem with this approach is that certain applications depend on atime. This is especially common in mail clients which compare atime to mtime in order to determine whether a mailbox has been read since it was last modified. So, unfortunately, disabling atime entirely is impractical as a default. Back in 2006, Valerie Aurora submitted &lt;a href=&quot;http://lkml.org/lkml/2006/8/25/381&quot;&gt;a patch&lt;/a&gt; that worked around this issue. The new relatime option meant that atime would only be updated if it would otherwise be older than ctime or mtime. Mail clients became happy and the world rejoiced.&lt;br /&gt;&lt;br /&gt;Unfortunately, it turned out that there was one other common case of atime being used. Applications like tmpwatch monitor files in /tmp and delete them if they appear unused. In this case, &quot;unused&quot; means &quot;has an atime older than a certain date&quot;. Since merely reading files doesn&apos;t update the ctime or mtime, relatime wouldn&apos;t cause the atime on these files to be updated and tmpwatch would happily delete them - even if users were reading them on a daily basis.&lt;br /&gt;&lt;br /&gt;Ingo Molnar submitted &lt;a href=&quot;http://lkml.org/lkml/2007/8/5/171&quot;&gt;a patch&lt;/a&gt; to add a further heuristic to the relatime behaviour. With it, the atime of a file will be updated if it&apos;s older than mtime, older than ctime or (and this is the important one) more than 24 hours in the past. This deals with the tmpwatch case nicely, while still providing a significant reduction in the quantity of atime updates.&lt;br /&gt;&lt;br /&gt;Fedora shipped this patch for several releases, and Ubuntu have used it by default since 8.04. Unfortunately there were some concerns over certain aspects of its behaviour (in respect to its interface as opposed to the relatime functionality itself) and it never got merged. I pushed a trimmed down version that purely implements the change to the relatime behaviour, and earlier today Linus merged it and a further patch that makes relatime the default behaviour on Linux.&lt;br /&gt;&lt;br /&gt;Most users won&apos;t notice this change in behaviour at all, other than as a small improvement in io performance and a reduction in the number of drive spinups. For users that do have issues, a new strictatime mount option has been added - using this will require an updated mount command, but it&apos;s a trivial patch. I&apos;d be surprised if there are any real world use cases that are negatively affected by this, especially since it&apos;s been default behaviour in several distributions for a while, but there&apos;s always the potential that someone will be tripped up by it. We&apos;ll see.</description>
  <comments>http://mjg59.livejournal.com/109286.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>48</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/108956.html</guid>
  <pubDate>Tue, 24 Mar 2009 23:59:00 GMT</pubDate>
  <link>http://mjg59.livejournal.com/108956.html</link>
  <description>Today is &lt;a href=&quot;http://findingada.com/&quot;&gt;Ada Lovelace day&lt;/a&gt;, a project to celebrate the women involved in technology and make it easier to give examples of female role models in the industry. I&apos;ve had the opportunity to meet many women working on Linux over the past few years, and if there&apos;s one thing that&apos;s tended to overshadow the achievements and dedication to their work it&apos;s the sheer amount of effort they&apos;ve had to go to in order to gain equal recognition. And that made me realise that in many ways, the woman who&apos;s had the greatest impact on my career is &lt;a href=&quot;http://join-the-dots.org/&quot;&gt;Hanna Wallach&lt;/a&gt;[1]. About ten years ago she spent a ridiculous amount of effort teaching me that it didn&apos;t matter how much I professed to be entirely free of sexism if I then proceeded to do things that implicitly excluded women from being involved in computing communities. I&apos;ve gone to some amount of effort to &lt;a href=&quot;http://blip.tv/file/1103457&quot;&gt;repay that&lt;/a&gt; (contains profanity and a man with a raccoon tail covering his crotch), but I&apos;m very aware of how different my life might have been if Hanna hadn&apos;t gone to the trouble of ensuring that I knew not to be a dick.&lt;br /&gt;&lt;br /&gt;I think the Linux community has become more welcoming since then, and Hanna and people like her have been instrumental in helping that happen. However, we still have people being driven away by the behaviour of others or arguments that technical contributions are more important than social behaviour, and while that&apos;s true we need role models for social change just as much as we need role models for technical achievement. Thanks, Hanna[2]. The Linux world&apos;s a better place because of you.&lt;br /&gt;&lt;br /&gt;[1] And while she&apos;s a role model of mine for social reasons, she&apos;s also got a PhD in machine learning, was British computer science student of the year in 2001 and came top of her MSc class at Edinburgh. So there.&lt;br /&gt;&lt;br /&gt;[2] &quot;Thanna&quot;</description>
  <comments>http://mjg59.livejournal.com/108956.html</comments>
  <category>advogato</category>
  <category>adalovelaceday09</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>35</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/108785.html</guid>
  <pubDate>Wed, 18 Mar 2009 18:59:53 GMT</pubDate>
  <title>ext4 and spinups</title>
  <link>http://mjg59.livejournal.com/108785.html</link>
  <description>As a followup to &lt;a href=&quot;http://mjg59.livejournal.com/108257.html&quot;&gt;my discussion of ext4&lt;/a&gt;, I did some trivial testing today. This consisted of generating a file, writing to it, closing it, opening another file, writing to it, closing it and then renaming the second file over the first. Then repeating about 10,000 times. fsync() wasn&apos;t called at any point. I used the /proc/sys/vm/block_dump knob to get an idea of when stuff was actually hitting disk. This was using the current rawhide kernel, which has the various workarounds for avoiding data corruption merged. The good news is that I was unable to get into an inconsistent state - the files always contained either the original or the new data, and the absolute worst case was having a zero length temporary file. The bad news is that while ext3 only touched disk when it reached the commit interval, ext4 touched disk for every single rename() call.&lt;br /&gt;&lt;br /&gt;There appears to be a &lt;a href=&quot;http://thread.gmane.org/gmane.comp.file-systems.ext4/12179&quot;&gt;plan for dealing with this&lt;/a&gt;, but the current state of affairs is that ext4 will (under an obviously incredibly synthetic and unrealistic set of conditions) reduce the amount of time a drive can spend spun down. The next step is to attempt to measure this in a real world setup and see whether it&apos;s compensated for by the other new features.</description>
  <comments>http://mjg59.livejournal.com/108785.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>4</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/108376.html</guid>
  <pubDate>Wed, 18 Mar 2009 02:27:06 GMT</pubDate>
  <title>Important typographical update</title>
  <link>http://mjg59.livejournal.com/108376.html</link>
  <description>⸘Unicode 5.1 added the inverted interrobang‽</description>
  <comments>http://mjg59.livejournal.com/108376.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>11</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/108257.html</guid>
  <pubDate>Sat, 14 Mar 2009 21:04:01 GMT</pubDate>
  <title>ext4, application expectations and power management</title>
  <link>http://mjg59.livejournal.com/108257.html</link>
  <description>Edited to add: Sorry, it turns out that ext4 does now have a &lt;a href=&quot;http://git.kernel.org/?p=linux/kernel/git/tytso/ext4.git;a=commitdiff;h=dbc85aa9f11d8c13c15527d43a3def8d7beffdc8&quot;&gt;heuristic to deal with this case&lt;/a&gt;. However, it seems that &lt;a href=&quot;http://lwn.net/Articles/323237/&quot;&gt;btrfs doesn&apos;t&lt;/a&gt;. My point remains, though - designing a filesystem in such a way that a useful behaviour is impossible is unhelpful for the vast majority of application writers, even if it does improve performance in some other use cases.&lt;br /&gt;&lt;br /&gt;Further edit: It&apos;s mentioned &lt;a href=&quot;http://mjg59.livejournal.com/108257.html?thread=1315041#t1315041&quot;&gt;in the comments&lt;/a&gt; that btrfs will force a flush of data when a rename is performed as of 2.6.30. That prevents the data loss, but it means that we&apos;re still stuck with disk access when we&apos;d be happy with that being batched up for the future. It feels like we&apos;re optimising for the wrong case here.&lt;br /&gt;&lt;br /&gt;Original text:&lt;br /&gt;&lt;br /&gt;There&apos;s been a &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/linux/+bug/317781?comments=all&quot;&gt;certain&lt;/a&gt; &lt;a href=&quot;http://linux.slashdot.org/article.pl?sid=09/03/11/2031231&quot;&gt;amount&lt;/a&gt; of &lt;a href=&quot;http://lwn.net/Articles/323169/&quot;&gt;discussion&lt;/a&gt; about behavioural differences between ext3 and ext4[1], most notably due to ext4&apos;s increased window of opportunity for files to end up empty due to both a longer commit window and delayed allocation of blocks in order to obtain a more pleasing on-disk layout. The applications that failed hardest were doing open(&quot;foo&quot;, O_TRUNC), write(), close() and then being surprised when they got zero length files back after a crash. That&apos;s fine. That was always stupid. Asking the filesystem to truncate a file and then writing to it is an invitation to failure - there&apos;s clearly no way for it to intuit the correct answer here. In the end this has been avoided by avoiding delayed allocation when writing to a file that&apos;s just been truncated, so everything&apos;s fine.&lt;br /&gt;&lt;br /&gt;However, there&apos;s another case that also breaks. A common way of saving files is to open(&quot;foo.tmp&quot;), write(), close() and then rename(&quot;foo.tmp&quot;, &quot;foo&quot;). The mindset here is that a crash will either result in foo.tmp being zero length, foo still being the original file or foo being your new data. The important aspect of this is that the desired behaviour of this code is that foo will contain either the original data or the new data. You may suffer data loss, but you won&apos;t suffer &lt;em&gt;complete&lt;/em&gt; data loss - the application state will be consistent.&lt;br /&gt;&lt;br /&gt;When used with its (default) data=ordered journal option, ext3 provided these semantics. ext4 doesn&apos;t. Instead, if you want to ensure that your data doesn&apos;t get trampled, it&apos;s necessary to fsync() before closing in order to make sure it hits disk. Otherwise the rename can occur before the data is written, and you&apos;re back to a zero length file. ext4 doesn&apos;t make guarantees about whether data will be flushed before metadata is written.&lt;br /&gt;&lt;br /&gt;Now, POSIX says this is fine, so any application that expected this behaviour is already broken by definition. But this is rules lawyering. POSIX says that many things that are not useful are fine, but doesn&apos;t exist for the pleasure of sadistic OS implementors. POSIX exists to allow application writers to write useful applications. If you interpret POSIX in such a way that gains you some benefit but shafts a large number of application writers then people are going to be reluctant to use your code. You&apos;re no longer a general purpose filesystem - you&apos;re a filesystem that&apos;s only suitable for people who write code with the expectation that their OS developers are actively trying to fuck them over. I&apos;m sure Oracle deals with this case fine, but I also suspect that most people who work on writing Oracle on a daily basis have very, very unfulfilling lives.&lt;br /&gt;&lt;br /&gt;But anyway. We can go and fix every single piece of software that saves files to make sure that it fsync()s, and we can avoid this problem. We can probably even do it fairly quickly, thanks to us having the source code to all of it. A lot of this code lives in libraries and can be fixed up without needing to touch every application. It&apos;s not the end of the world.&lt;br /&gt;&lt;br /&gt;So why do I still think it&apos;s a bad idea?&lt;br /&gt;&lt;br /&gt;It&apos;s simple. open(),write(),close(),rename() and open(),write(),fsync(),close(),rename(), are &lt;em&gt;not semantically equivalent&lt;/em&gt;. One is &quot;give me either the original data or the new data&quot;[2]. The other is &quot;always give me the new data&quot;. This is an important distinction. fsync() means that we&apos;ve sent the data to the disk[3]. And, in general, that means that we&apos;ve had to spin the disk up.&lt;br /&gt;&lt;br /&gt;So, on the one hand, we&apos;re trying to use things like relatime to batch data to reduce the amount of time a disk has to be spun up. And on the other hand, we&apos;re moving to filesystems that require us to generate &lt;em&gt;more&lt;/em&gt; io in order to guarantee that our data hits disk, which is a guarantee we often don&apos;t want anyway! Users will be fine with losing their most recent changes to preferences if a machine crashes. They will not be fine with losing the entirity of their preferences. Arguing that applications need to use fsync() and are otherwise broken is ignoring the important difference between these use cases. It&apos;s no longer going to be possible to spin down a disk when any software is running at all, since otherwise it&apos;s probably going to write something and then have to fsync it out of sheer paranoia that something bad will happen. And then probably fsync the directory as well, because what if someone writes an even more pathological filesystem. And the disks sit there spinning gently and chitter away as they write tiny files[4] and never spin down and the polar bears all drown in the bitter tears of application developers who are forced to drink so much to forget that they all die of acute liver failure by the age of 35 and where are we then oh yes we&apos;re screwed. &lt;br /&gt;&lt;br /&gt;So. I said we could fix up applications fairly easily. But to do that, we need an interface that lets us do the right thing. The behaviour application writers want is one which ext4 doesn&apos;t appear to provide. Can that be fixed, please?&lt;br /&gt;&lt;br /&gt;[1] xfs behaves like ext4 in this respect, so the obvious argument is that all our applications have been broken for years and so why are you complaining now. To which the obvious response is &quot;Approximately anyone who ever used xfs expected their data to vanish if their machine crashed so nobody used it by default and seriously who gives a shit&quot;. xfs is a wonderful filesystem for all sorts of things, but it&apos;s lousy for desktop use for precisely this reason.&lt;br /&gt;&lt;br /&gt;[2] Yes, ok, we&apos;ve just established that it actually isn&apos;t that in the same way that GMT isn&apos;t UTC and battery refers to a collection of individual cells and so you don&apos;t usually put multiple batteries in your bike lights, but the point is that this is, for all practical intents and purposes, an unimportant distinction and not one people should have to care about in their daily lives.&lt;br /&gt;&lt;br /&gt;[3] The disk is free to sit there bored for arbitrary periods of time before it does anything, but that&apos;s fine, because the OS is behaving correctly. Sigh.&lt;br /&gt;&lt;br /&gt;[4] Dear filesystem writers - application developers like writing lots of tiny files, because it makes a large number of things significantly easier. This is fine because sheer filesystem performance is not high on the list of priorities of a typical application developer. The answer is not &quot;Oh, you should all use sqlite&quot;. If the only effective way to use your filesystem is to use a database instead, then that indicates that you have not written a filesystem that is useful to typical application developers who enjoy storing things in files rather than binary blobs that end up with an entirely different set of pathological behaviours. If I wanted all my data to be in oracle then I wouldn&apos;t need a fucking filesystem in the first place, would I?</description>
  <comments>http://mjg59.livejournal.com/108257.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>80</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/107812.html</guid>
  <pubDate>Fri, 06 Mar 2009 04:46:26 GMT</pubDate>
  <link>http://mjg59.livejournal.com/107812.html</link>
  <description>After a bit of back and forth with &lt;a href=&quot;http://who-t.blogspot.com/&quot;&gt;Peter&lt;/a&gt;, we came up with a straightforward way of dealing with the fact that the Wacom driver needs a logical input device per input type[1], but the X server only generates an input device per hal device. The simplest solution turned out to be a hal callout that generates additional hal devices on demand, which also means we can add information to the fdi files to only add the appropriate device types. Ought to land in rawhide in the near future, at which point tablets should be basically working out of the box. Except that xsetwacom gets device name -&amp;gt; type mapping by attempting to parse xorg.conf. Pass the suicide.&lt;br /&gt;&lt;br /&gt;Today&apos;s other accomplishment was spending long enough looking at Toshiba ACPI dumps to figure out how to enable hotkey reporting without needing to poll. Of course, I then found that the FreeBSD driver has done the same thing since 2004. Never mind. Patch has been posted to lkml and I&apos;ve shoved it into rawhide, so that&apos;ll improve things for most Toshiba users. There&apos;s a few machines that have an entirely different BIOS and we don&apos;t know how the hotkeys there work at all, so life continues to be miserable for those of you that own them. Sorry.&lt;br /&gt;&lt;br /&gt;[1] Stylus, cursor, eraser and so on</description>
  <comments>http://mjg59.livejournal.com/107812.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/107750.html</guid>
  <pubDate>Mon, 23 Feb 2009 18:43:34 GMT</pubDate>
  <title>Misc</title>
  <link>http://mjg59.livejournal.com/107750.html</link>
  <description>Minor Fedora updates - I fixed up the FDI file in the wacom package, so tablet PCs should have a working stylus out of the box in rawhide. The eraser won&apos;t work right now - the driver needs some reworking to bind multiple X devices to a single logical input device. I&apos;ve also added support for brightness control via smartdimmer to nouveau, which should increase the number of machines that have working brightness control. I don&apos;t think this has landed in the rawhide kernel yet, but should do soon. There&apos;s the potential for some conflict with the mbp_nvidia_bl driver. We may end up dropping that.&lt;br /&gt;&lt;br /&gt;HP updates - The button bar on my 2510 got replaced last week. I now have working volume buttons again. However, the machine now reboots whenever the machine is suspended and I close the lid. Diagnosed to either a faulty switch assembly or system board, which will require an engineer visit. An engineer dropped round today to fix the touchpad. Despite the case notes clearly stating that the problem was with the cable assembly, he was sent a replacement top cover unit. Without any cables. So he&apos;s coming back at some point. HP&apos;s customer support system apparently does not allow these cases to be merged. Which means I now have two visits to look forward to.&lt;br /&gt;&lt;br /&gt;Android - I&apos;m gradually working my way through the code, replacing various custom interfaces with standard ones. &lt;tt&gt;const char * const LCD_BACKLIGHT = &quot;/sys/class/leds/lcd-backlight/brightness&quot;;&lt;/tt&gt; is an interesting standout so far.</description>
  <comments>http://mjg59.livejournal.com/107750.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>9</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/107331.html</guid>
  <pubDate>Thu, 19 Feb 2009 01:29:01 GMT</pubDate>
  <link>http://mjg59.livejournal.com/107331.html</link>
  <description>In other news, my HP 2510p&apos;s screen was replaced last month after the hinge snapped. A chunk of plastic off the hinge cover snapped off two days ago. I&apos;m somewhat puzzled by this, since I can&apos;t see any plausible way force could be applied to it - it&apos;s as if it came away slightly and then got crushed when I tried to close the lid. On top of the motherboard having been replaced 4 times now (twice due to faulty power connectors, one due to the fan being replaced and the motherboard being swapped at the same time, once because the machine started refusing to boot at LCA) and it still being slightly tempremental when booting, I&apos;m not overly impressed - especially when I&apos;ve only had it 18 months. Nobody else I know with one seems to have had the same level of difficulty, though dreadful thermal issues (especially when using the dock) seem to be common.&lt;br /&gt;&lt;br /&gt;The X200s looks awfully shiny, but the 1440x900 screen option doesn&apos;t appear to be available in the UK. Oddly, despite having a SIM slot, it also doesn&apos;t seem to come with an HSDPA option.</description>
  <comments>http://mjg59.livejournal.com/107331.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>20</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mjg59.livejournal.com/107130.html</guid>
  <pubDate>Thu, 19 Feb 2009 01:18:20 GMT</pubDate>
  <link>http://mjg59.livejournal.com/107130.html</link>
  <description>Aside from the inherent humour in Opensolaris&apos;s attempt to &lt;a href=&quot;http://opensolaris.org/os/project/ksh93-integration/&quot;&gt;migrate to a 15 year old shell&lt;/a&gt;, today brings the thrilling news that I&apos;ll be moving to Boston to join the engineering team in &lt;a href=&quot;http://en.wikipedia.org/wiki/Westford,_Massachusetts&quot;&gt;Westford, MA&lt;/a&gt;. I look forward to the Applebee&apos;s. Some of the more entertaining aspects of US immigration mean that it&apos;ll probably be in July at the earliest (365 days with the company, plus time spent in the US since starting), which means that I have plenty of time to properly investigate my local pubs to console myself over having to spend the rest of my life drinking American beer.</description>
  <comments>http://mjg59.livejournal.com/107130.html</comments>
  <category>advogato</category>
  <category>fedora</category>
  <lj:security>public</lj:security>
  <lj:reply-count>37</lj:reply-count>
</item>
</channel>
</rss>
