<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
	<title>Kernel Planet</title>
	<link>http://www.kernelplanet.org/</link>
	<language>en</language>
	<description>Kernel Planet - http://www.kernelplanet.org/</description>

<item>
	<title>Pavel Machek: Commercial open source</title>
	<guid>http://pavelmachek.livejournal.com/94647.html</guid>
	<link>http://pavelmachek.livejournal.com/94647.html</link>
	<description>&lt;p&gt;...sponsored by Microsoft, &lt;a href=&quot;http://tuesday.cz/default.aspx?server=1&amp;lang=1&amp;section=226&amp;event=417&amp;tab=vVisitors&quot;&gt;tommorow at 18h&lt;/a&gt;. I decided to take a look, so there will be some fun ;-). [And I guess I can always run away when it gets too bad.]&lt;/p&gt;</description>
	<pubDate>Mon, 08 Mar 2010 21:09:49 +0000</pubDate>
</item>
<item>
	<title>Dave Miller: strlen(), oh strlen()...</title>
	<guid>http://vger.kernel.org/~davem/cgi-bin/blog.cgi/2010/03/08#strlen_1</guid>
	<link>http://vger.kernel.org/~davem/cgi-bin/blog.cgi/2010/03/08#strlen_1</link>
	<description>&lt;p&gt;
I've been going through the glibc sparc optimized assembler routines
to see if anything can be improved.  And I took a stab at seeing if
strlen() could be made faster.  Find first zero byte in string, pretty
simple right?
&lt;p&gt;
The first thing we have to discuss is the infamous trick coined by
Alan Mycroft, way back in 1987.  It allows to check for the presence of
a zero byte in a word in 3 instructions.  There are 2 magic constants:
&lt;pre&gt;
#define MAGIC1		0x80808080
#define MAGIC2		0x01010101
&lt;/pre&gt;
If you're checking 64-bits at a time simply expand the above magic values
to 64-bits on 64-bit systems.
&lt;p&gt;
Then, given a word the check becomes:
&lt;pre&gt;
	if ((val - MAGIC2) &amp;amp; ~val &amp;amp; MAGIC1)
		goto found_zero_byte_in_word;
&lt;/pre&gt;
Essentially we're subtracting MAGIC2 to induce underflow in each
byte that has the value zero in it.  Such underflows cause bit 8
to get set in that byte.  Then we want to see if bit 8
is set after subtraction in any byte where bit 8 wasn't set before
the subtraction.
&lt;p&gt;
To get the most parallelization on multi-issue cpus, we want to
compute this using something like:
&lt;pre&gt;
	tmp1 = val - MAGIC2;
	tmp2 = ~val &amp;amp; MAGIC1;
	if (tmp1 &amp;amp; tmp2)
		goto found_zero_byte_in_word;
&lt;/pre&gt;
to reduce the number of dependencies such that the computation
of tmp1 and tmp2 can occur in the same cpu cycle.
&lt;p&gt;
Then there is all the trouble of getting the source buffer aligned
so we can do the fast loop comparing a word at a time.  The most
direct implement is to read a byte at a time, checking for zero,
until the buffer address is properly aligned.  This is also the
slowest implementation.
&lt;p&gt;
The powerpc code in glibc has a better idea.  If dereferencing a
non-word-aligned byte at address 'x' is valid, so is reading the
word at 'x &amp;amp; ~3' (or 'x &amp;amp; ~7' on 64-bit).  This is because page
protection occurs on page boundaries, and x and 'x &amp;amp; ~3' are on
the same page.
&lt;p&gt;
The only thing left to attend to is to make sure we don't match the
alignment pad bytes with zero.  This is solved by computing a mask
of 1's and writing those 1's into the word we read before we do
the Mycroft computation above.  In C it looks something like:
&lt;pre&gt;
	orig_ptr = ptr;
	align = (unsigned long) ptr &amp;amp; 3;
	mask = -1 &gt;&gt; (align * 8);
	ptr = (void *) ((unsigned long) ptr &amp;amp; ~3UL);
	val = *ptr;
	val |= ~mask;
	if ((val - MAGIC2) &amp;amp; ~val &amp;amp; MAGIC1)
		goto found_zero_byte_in_word;
&lt;/pre&gt;
At which point we can fall into the main loop.
&lt;p&gt;
Once we find the word containing a zero byte, we have to iteratively
look for where it is in order to compute the return value.  How to
schedule this is not trivial, and it's especially cumbersome on 64-bit
(where we have to potentially check 8 bytes as opposed to 4).
&lt;p&gt;
Anyways, let's analyze the 64-bit Sparc implementation I'm hacking on
at the moment.  I'm targetting UltraSPARC-III and Niagara2 for
performance analysis.  Simply speaking UltraSPARC-III can dual-issue
integer operations, and Niagara2 is single issue and predicts all
branches not taken (basically this means: minimize use of branches).
&lt;pre&gt;
davem_strlen:
	mov	%o0, %o1
	andn	%o0, 0x7, %o0

	ldx	[%o0], %o5
	and	%o1, 0x7, %g1
	mov	-1, %g5
&lt;/pre&gt;
Save away the original string pointer in %o1.  At the end we'll compute
the return value as &quot;%o1 - %o0&quot;.  Align the buffer pointer and load a word
as quickly as possible.  We load the first word early so that we can hide
the memory latency into all of the constant and mask formation we need to
do before we can make the Mycroft test.
&lt;p&gt;
%g5 holds the initial part of the mask computation (-1, which gets expanded
fully to 64-bits by this move instruction) and %g1 will have the shift
factor.
&lt;pre&gt;
	sethi	%hi(0x01010101), %o2
	sll	%g1, 3, %g1

	or	%o2, %lo(0x01010101), %o2
	srlx	%g5, %g1, %o3

	sllx	%o2, 32, %g1
	sethi	%hi(0x00ff0000), %g5
&lt;/pre&gt;
%o2 is going to hold the &quot;0x01&quot; expanded to 64-bits subtraction
magic value.  %o3 wil first hold the initial word mask, and then
it will holds the &quot;0x80&quot; magic constant.  We can compute the
two 64-bit magic constants into registers in 5 instructions.
&lt;p&gt;
Pick either of the two constants, we choose the &quot;0x01&quot; here because
we'll need it first.  This is loaded first using &quot;sethi&quot;, &quot;or&quot;.
This gives us the lower 32-bits of the constant, then we shift up
a copy by 32-bits, then or that into the lower 32-bit copy to
compute the final value.  &quot;0x80&quot; is &quot;0x01&quot; shifted left by 7 bits
so a simple shift is all we need to load the other 64-bit constant.
&lt;p&gt;
The &quot;0x00ff0000&quot; constant will be used while searching for the zero
byte in the final word.
&lt;p&gt;
Next, we mask the initial word and fall through into the main loop.
&lt;pre&gt;
	orn	%o5, %o3, %o5
	or	%o2, %g1, %o2

	sllx	%o2, 7, %o3
&lt;/pre&gt;
Mask in the pad bits using mask compute in %o3.  Finish computation
of 64-bit MAGIC1 into %o2, and finally put MAGIC2 into %o3.  We're
ready for the main loop:
&lt;pre&gt;
10:	add	%o0, 8, %o0

	andn	%o3, %o5, %g1
	sub	%o5, %o2, %g2

	andcc	%g1, %g2, %g0
	be,a,pt	%xcc, 10b
	 ldx	[%o0], %o5
&lt;/pre&gt;
This is a real pain to schedule because there are many dependencies.
But the &quot;andn&quot;, &quot;sub&quot;, &quot;andcc&quot; sequence is the Mycroft test, and
those first two instructions can execute in one clock cycle on
UltraSPARC-III.  The &quot;,a&quot; annul bit on the branch means that we
only execute the load in the branch delay slot if the branch is
taken.
&lt;p&gt;
Now we have the code that searches for where exactly the zero byte
is in the final word.
&lt;pre&gt;
	srlx	%o5, 32, %g1
	sub	%o0, 8, %o0
&lt;/pre&gt;
We over advanced the buffer pointer in the main loop, so correct
that by subtracting 8.  Prepare a copy of the upper 32-bits of
the word into %g1.
&lt;pre&gt;
	andn	%o3, %g1, %o4
	sub	%g1, %o2, %g2

	add	%o0, 4, %g3
	andcc	%o4, %g2, %g0

	movne	%icc, %g1, %o5
	move	%icc, %g3, %o0
&lt;/pre&gt;
This is divide and conquer.  Instead of doing 8 byte compares, we
first see if the upper 32-bits have the zero byte.  We essentially
redo the Mycroft test on the upper 32-bits of the word.
&lt;p&gt;
If the upper 32-bits have the zero byte, we use %g1 for the comparisons.
Otherwise we retain %o5 for the subsequent comparisons and advance
the buffer pointer by 4 bytes.  This is what the final two conditional
move instructions are doing.  Note that these conditional moves use
'%icc', the 32-bit condition codes.
&lt;p&gt;
The astute reader may wonder why we just can't use the upper 32-bits
of the Mycroft computation we made in the main loop?  This doesn't work
because the underflows can carry and cause false positives in upper
bytes of the word.  For example, consider a value where bits 35 down
to 24 have hex value &quot;0x0100&quot;.  The subtraction of MAGIC2 will result
in &quot;0x8080&quot;.  The real zero byte is the lower one, not the upper one.
So we can't merely use the upper 32-bits of the already computed 64-bit
Mycroft mask, we have to recompute it over 32-bits by hand.
&lt;p&gt;
Now we're left with 32-bits to check for a zero byte, we make extensive
use of conditional moves to avoid branches:
&lt;pre&gt;
	mov	3, %g2
	srlx	%o5, 8, %g1

	andcc	%g1, 0xff, %g0
	move	%icc, 2, %g2

	andcc	%o5, %g5, %g0
	srlx	%o5, 24, %o5
	move	%icc, 1, %g2

	andcc	%o5, 0xff, %g0
	move	%icc, 0, %g2

	add	%o0, %g2, %o0
&lt;/pre&gt;
We check starting at the low byte up to the highest byte.  Because
the highest byte, if zero, takes priority.  We add the offset of
the zero byte to the buffer pointer.
&lt;p&gt;
Finally:
&lt;pre&gt;
	retl
	 sub	%o0, %o1, %o0
&lt;/pre&gt;
We compute the length and return from the routine.
&lt;p&gt;
Many many moons ago, in 1998, Jakub Jelinek and his friend Jan Vondrak
wrote the routines we use now on sparc.  And frankly it's very hard to
beat that code especially on multi-issue processors.
&lt;p&gt;
The powerpc trick to align the initial word helps us beat the existing
code for all the unaligned cases.  But for the aligned case the existing
code holds a slight edge.
&lt;p&gt;
So now I've been trimming cycles as much as possible in the new code
trying to reach the state where the aligned case executes at least as
fast as the existing code.  I'll check this work into glibc once I
accomplish that.
&lt;p&gt;
The Mycroft trick extends to other libc string routines.  For example
for 'memchr' you replicate the search character into all bytes of
a word, let's call it 'xor_mask' and in the inner loop you adjust
each word by using:
&lt;pre&gt;
	val ^= xor_mask;
&lt;/pre&gt;
Then use the Mycroft test as in strlen().  Another complication with
memchr, however, is the need to check the given length bounds.
&lt;p&gt;
This can be done in one instruction by putting the far bounds into
your base pointer register (called '%top_of_buffer' below), then
using offsets starting at &quot;0 - total_len&quot; (referred to as
'%negative_len' below).
&lt;p&gt;
Then your inner loop can do something like:
&lt;pre&gt;
	ldx	[%top_of_buffer + %negative_len], %o5
	addcc	%negative_len, 8, %negative_len
	bcs	%xcc, len_exceeded
	 ...
&lt;/pre&gt;
We exit the loop when adding 8 bytes to the negative len causes an
overflow.
&lt;p&gt;
If you're interested in this kind of topic, bit twiddling tricks and
whatnot, you absolutely have to own a copy of &quot;Hacker's Delight&quot; by
Henry S. Warren, Jr.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 08 Mar 2010 17:09:00 +0000</pubDate>
</item>
<item>
	<title>Pavel Machek: Riding for years, and still does not know how to stop</title>
	<guid>http://pavelmachek.livejournal.com/94238.html</guid>
	<link>http://pavelmachek.livejournal.com/94238.html</link>
	<description>&lt;p&gt;Yep, that's me; and yes, I know what the cue to slow down the horse is -- lean back and use both reins. And yes, you can stop the horse by doing &quot;slow down&quot; three times...&lt;br /&gt;&lt;br /&gt;&lt;p&gt;But that's not a way to &lt;em&gt;stop the horse&lt;/em&gt;. If you are going full gallop and need to stop, you want &lt;em&gt;full stop now&lt;/em&gt; cue, not three slow down cues.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now, I knew some horses that were actually very good at stopping, and yes, there's huge difference between &lt;em&gt;stop now&lt;/em&gt; and &lt;em&gt;slow down to full stop&lt;/em&gt;. Cue those horses were trained to was &quot;whoa&quot;...&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So I tried teaching that cue to young stallion here, and it does not really work. Or rather... it works a bit too well.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I know many horses where &quot;whoa&quot; means &lt;em&gt;slow down&lt;/em&gt; so I sometimes utter it when I want to just slow down... and then the horse comes abrubtly to full stop. What is worse, many other words trigger same response -- I guess they are too similar for stallion's ears.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;There must be some reasonable cue, that is impossible to mistake for the horse, and unlikely to be given accidentally by the rider... unintended full stop is almost &quot;and now climb back to the horse&quot; event... but what is it? For now I know &quot;whoa&quot; is neither :-(.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;(And for the record, I probably could teach horse to do full stop on something completely crazy -- like hand touching his tail -- he's learning almost too quick.)&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 07 Mar 2010 19:50:57 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: OsmocomBB now performing location updating procedure against GSM cell</title>
	<guid>http://laforge.gnumonks.org/weblog/2010/03/05#20100305-location_updating</guid>
	<link>http://laforge.gnumonks.org/weblog/2010/03/05#20100305-location_updating</link>
	<description>&lt;p&gt;
I haven't had much time for blogging recently, too much exciting work
going on at &lt;a href=&quot;http://bb.osmocom.org/&quot;&gt;OsmocomBB&lt;/a&gt;:
&lt;ul&gt;
&lt;li&gt;we now have simplistic support for Uplink (transmit) on SDCCH/4&lt;/li&gt;
&lt;li&gt;we have a minimal Layer2 (LAPDm) implementation&lt;/li&gt;
&lt;li&gt;we can send LOCATION UPDATING REQUEST to the network, and receive
    the respective response&lt;/li&gt;
&lt;li&gt;there's wireshark integration, i.e. all packets on the L1-L2 interface
    can be sent into wireshark for protocol analysis&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
There are still many limitations, but this is a major milestone in the project:
We have working bi-directional communication from the phone to the network!
&lt;/p&gt;
&lt;p&gt;
The limitations include:
&lt;ul&gt;
&lt;li&gt;The cell has to use a combined CCCH (SDCCH/4 on timeslot 0)&lt;/li&gt;
&lt;li&gt;The cell has to use no encryption/authentication&lt;/li&gt;
&lt;li&gt;The layer2 is not finished, especially re-transmissions will not work yet&lt;/li&gt;
&lt;li&gt;There's no power control loop yet&lt;/li&gt;
&lt;li&gt;There's no timing advance correction&lt;/li&gt;
&lt;/ul&gt;
However, most of those are more or less simple &lt;i&gt;we know what needs to be
done, its just a matter of getting it done&lt;/i&gt; kind of tasks.  There are no big
unknowns involved, and particularly no further reverse-engineering of the hardware
is required.
&lt;/p&gt;
&lt;p&gt;
Also, the existence of a stable bi-directional communications channel between
the network and the phone means that anyone interested in working on the higher
layers can now actually do so. Completing and testing layer2 as well as
RR/MM/CC on layer3 is a major task in itself, and it definitely requires
the lower layers to be there.
&lt;/p&gt;
&lt;p&gt;
The other good part is that development of layer2 and layer3 can happen
entirely on the host PC, where debugging is much easier and there's no need for
cross-compilation and we can use all the usual debugging options (gdb,
valgrind, ...) 
&lt;/p&gt;
&lt;p&gt;
I'm now almost heading off for holidays (starting March 10), so don't expect
any major progress from me anytime soon.  I hope other interested developers
will be able to take it from here and fill in some missing gaps until I'll get
back.
&lt;/p&gt;</description>
	<pubDate>Fri, 05 Mar 2010 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Kernel Podcast: Updates coming!</title>
	<guid>http://www.kernelpodcast.org/2010/03/04/updates-coming-3/</guid>
	<link>http://www.kernelpodcast.org/2010/03/04/updates-coming-3/</link>
	<description>&lt;p&gt;Folks,&lt;/p&gt;
&lt;p&gt;Sorry for the delay. I should have updates out before the end of the week. Thanks. Remember, this is a spare time project and takes a lot of effort to do properly.&lt;/p&gt;
&lt;p&gt;Jon.&lt;/p&gt;</description>
	<pubDate>Thu, 04 Mar 2010 08:50:28 +0000</pubDate>
</item>
<item>
	<title>Evgeniy Polyakov: Elliptics changes</title>
	<guid>http://www.ioremap.net/410 at http://www.ioremap.net</guid>
	<link>http://www.ioremap.net/node/410</link>
	<description>&lt;p&gt;They are quite dramatical, but are very small yet - I committed search protocol changes. Now node stores transactions with IDs greater or equal than node's ID (it stored smaller or equal IDs previously), which is incompatible with current node searching, but allows to maintain human readable and logical (for humans) ID generation.&lt;/p&gt;
&lt;p&gt;So, when node has ID, say, 0100..., it will host data transactions, which start from 01 (its the highest byte). It is much more convenient to configure nodes with this in mind, than to calculate what is less than 01, namely FF... IDs.&lt;/p&gt;
&lt;p&gt;I also committed initial metadata support, but neither low level IO backend supports that yet, and I will leave only Tokyo Cabinet DB and file backends, BerkeleyDB support will be dropped, because of its slowliness. It is still in a development stage, since there is no clear vision on where this functionality should live - client or server.&lt;br /&gt;
I.e. it is possible that client will tell that it wants to insert metadata X into given object, and server will read/modify/write metadata blob itself, or it is possible that client will download whole metadata blob, update it locally and then write it back to server, which will replace old one with the new data. Likely I will use the former case, since it simplified client development, which should be a higher priority than server simplification.&lt;/p&gt;
&lt;p&gt;We also found an interesting bug or feature of the storage - in some cases it is not possible to remove object, it will be recovered from the dead. Let's say we have two object copies and one node was turned off. Automatic recovery (not present yet though) will create another copy from the first one on alive nodes. Subsequent object removal will kill both copies on running nodes. When turned off node goes online again, autoamtic recovery tool will resurrect removed object from the copy presented on this node.&lt;/p&gt;
&lt;p&gt;To date it is all a pure theory, since there is no separate metadata in the storage, thus no automatic recovery (admin should run special tool with properly crafted log file currently) and it does not remove objects from the storage. But still, described problem will hit us badly when we will actively use it.&lt;br /&gt;
And while there is no merge implemented either (it is kind of being materialized &lt;s&gt;in my mind&lt;/s&gt; while we talk), solution will involve new history entry creation instead of actual data removal. Thus transaction log will contain a note that given object was removed. In case of network split and parallel object removal and update in different parts (which can not contact each other during this event) of the storage, this will also allow to implement correct and complete transaction history log by synchronization daemon.&lt;/p&gt;
&lt;p&gt;Thus object will never be deleted from the storage, and instead its history will be updated to store a note about its status. File system checker will be extended to support a mode, when it will actually remove objects from the storage after they were marked (and resolved during merge with other logs if needed) as deleted after some timeout, which should be big enough to eliminate such ghost nodes appearence.&lt;/p&gt;
&lt;p&gt;And the last but not least discussed issue concerns storage size and related limitations. Let's say that we reached our current storage capacity and want to add several another machines, which will add 50% of the current volume. We want to spread data equally between all nodes, thus we will need to update every node's ID to shift it a little, so that new nodes entered addressing ring and formed a fair ID distribution. Amount of transaction copies in this case is quite large - more than a half of all data will have to be transferred over the network, which will take a while.&lt;br /&gt;
Also, when we add new empty node into the storage, it will kind of hide data it is supposed to host (according to ID distribution) until it is copied to the new node from the neighbour. Thus there should be a poilicy, which will forbid simultaneous update of all servers, since there is a possibility that suddenly all added nodes hide all copies of some objects. It will be recovered of course, but it will take some time, which in some cases is not appropriate.&lt;/p&gt;
&lt;p&gt;One of the solutions for the described storage size issue is different storage policy. We can implement multiple &lt;a href=&quot;http://www.ioremap.net/node/393&quot;&gt;virtual datacenters&lt;/a&gt;, where each new virtual datacenter corresponds to newly added set of machines. In this case we will extend write application so that it could 'touch' old hash functions (and thus old virtual datacenters) first to determine whether it can store data there and move to the new machines if there is no space in the old ones. Reading can issue a parallel lookup to all virtual datacenters asking for given object ID.&lt;/p&gt;
&lt;p&gt;This scheme has latency limitations as well as network traffic growing with new virtual datacenters involved, but it can be a good decision for smaller setups though.&lt;/p&gt;
&lt;p&gt;Virtual datacenters (or configurable hash/transformation functions used to generate transaction ID) becomes one of the most flexible 'tools' to implement different storage setups.&lt;/p&gt;
&lt;p&gt;Stay tuned, there will be more news soon!&lt;/p&gt;</description>
	<pubDate>Thu, 04 Mar 2010 00:08:38 +0000</pubDate>
</item>
<item>
	<title>Paul E. Mc Kenney: Parallel Programming: Administrators as Architects</title>
	<guid>http://paulmck.livejournal.com/18263.html</guid>
	<link>http://paulmck.livejournal.com/18263.html</link>
	<description>Although IT professionals should take care to avoid &lt;a href=&quot;http://portal.acm.org/citation.cfm?id=1467257&quot;&gt;engineering envy&lt;/a&gt;, it is often useful to learn from the experiences of other engineering disciplines.  In this posting, I will compare and contrast construction of a building to implementation of a large software project.&lt;br /&gt;&lt;br /&gt;Leaving aside financial engineering, building construction starts with an architect, who lays out the general shape and look of the building.  A structural engineer creates a detailed design, with an eye towards ensuring that the building will remain standing despite the best efforts of wind, gravity, and plate tectonics.  A construction engineer works out the details of the construction process &amp;mdash; for example, it is good if the building can support itself while being built as opposed to doing so only when completed.  Other engineering specialties may be required as well, for example, HVAC (heating, ventilating, and air conditioning).&lt;br /&gt;&lt;br /&gt;Once the building is built, different skills are needed, including &lt;a href=&quot;http://www.kernel.org/pub/linux/kernel/people/paulmck/Answers/IsParallelProgrammingHard/OpEng.html&quot;&gt;operating engineers&lt;/a&gt;, maintenance personnel, and janitors.&lt;br /&gt;&lt;br /&gt;A very similar sequence of events can play out for a large software application.  Software architects (for better or worse) lay out the general shape of the project, developers design and code it, and others ensure that it is built, tested, and safely ensconced in some source-code management system.&lt;br /&gt;&lt;br /&gt;However, once the application is completed, it is likely that its care and feeding will be taken over by application, database, and system administrators.  The architects and developers will switch to other projects (possibly version N+1 of this same application), and perhaps even retire or otherwise move on.  Of course, if the application runs at multiple sites, there might well be a separate set of administrators for each site.  But for simplicity, let's assume that this application runs at only one site.&lt;br /&gt;&lt;br /&gt;Now suppose that it is necessary to parallelize this application.&lt;br /&gt;&lt;br /&gt;This is tantamount to major structural change to the building, such as adding several new floors.  A structural change of this nature is clearly not a job that you would normally entrust to operating engineers, maintenance personnel, or janitors.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.kernel.org/pub/linux/kernel/people/paulmck/Answers/IsParallelProgrammingHard/Janitors.html&quot;&gt;But what else can you do if the original architects and developers are gone?&lt;/a&gt;</description>
	<pubDate>Mon, 01 Mar 2010 01:43:44 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Looking for documentation on sunplus SPMA100B</title>
	<guid>http://laforge.gnumonks.org/weblog/2010/03/01#20100301-motorola_c155_spma100</guid>
	<link>http://laforge.gnumonks.org/weblog/2010/03/01#20100301-motorola_c155_spma100</link>
	<description>&lt;p&gt;
In the &lt;a href=&quot;http://bb.osmocom.org/trac/wiki/MotorolaC155&quot;&gt;Motorola/Compal C155 phone&lt;/a&gt;
supported by &lt;a href=&quot;http://bb.osmocom.org/&quot;&gt;OsmocomBB&lt;/a&gt;, we have found a ringtone
melody chip called SPMA100B from sunplus.
&lt;/p&gt;
&lt;p&gt;
As strange as it might seem, this is the only part used in the phone for which we have
not been able to find any kind of programming information.  So if you know anything
about how to program this part from software (register map, programming manual, ...)
please let me know!
&lt;/p&gt;
&lt;p&gt;
And no, we don't need electrical/mechanical data sheets, thanks :)
&lt;/p&gt;</description>
	<pubDate>Mon, 01 Mar 2010 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Pavel Machek: Visiting old mine</title>
	<guid>http://pavelmachek.livejournal.com/94165.html</guid>
	<link>http://pavelmachek.livejournal.com/94165.html</link>
	<description>Visited an old mine today... Actually for an orienteering run. And seen some pretty impressive tech...&lt;br /&gt;&lt;br /&gt;Mine is actually from 1890 or so, and it was running up to 1997 or so. They had some wonderful hacks -- like steam engine, still powering the elevator up to 1997, but running on compressed gas.&lt;br /&gt;&lt;br /&gt;And because they did not use the computers to control the elevator, they had to use two-operators, and blackbox type device recording elevator speeds and communication over single rope. Speedometer used mercury. Impressive.&lt;br /&gt;&lt;br /&gt;But... on the other hand they kept things simple. Steel pipe was used for communications 500 meters underground. Single part. In 1980, they'd probably use two analog phones and a battery, about 10 parts total. Today, we'd probably use two computers, running VOIP over ethernet, for about 1000 milion parts total. Is not progress wonderful?</description>
	<pubDate>Sun, 28 Feb 2010 21:30:20 +0000</pubDate>
</item>
<item>
	<title>Evgeniy Polyakov: Two days of snow</title>
	<guid>http://www.ioremap.net/409 at http://www.ioremap.net</guid>
	<link>http://www.ioremap.net/node/409</link>
	<description>&lt;p&gt;I used to hate skiing - I wasted 3 years in running ski section in univercity, while I could play football or, let's say, chess. Well, there was no chess section, but whatever else it could be more interesting than ski.&lt;/p&gt;
&lt;p&gt;And this year I opened myself alpine ski. I did it about 15-20 years ago previously when was in school, and it was simple small plastic skis. Technology made a significan progress since then and I got ability to test real skis.&lt;/p&gt;
&lt;p&gt;That's what I did this and previous weekends - two days in Stepanovo ski resort. It was essentially the first time I tried big slope (not that big compared to real resorts in Europe of course, just about a kilometer or less and 100 meters drop) and real snow. And it was fucking incredible - it is fast, it is long enough to feel the speed and ground, it is quite different - there are multiple traces and a lot of small roads from main trace, where one can ride over hummocks and small ski jumps.&lt;/p&gt;
&lt;p&gt;I bought myself all equipment except skis itself - want to touch different things first, but I believe I will get my own next time. With the proper equipment it is not cold, warm or wet, it is just ubercool. Getting that I basically have no technique, I open lots of cases for myself all the time. And I believe that I have some progress, maybe not that good, but very pleasant for myself.&lt;/p&gt;
&lt;p&gt;I tried long blue trace previously, but today I started a red one. And it was fucking beautiful - so fast and so strong. No boring places and long waits, just pure pleasure of speed and control. On this trace I found myself moving noticebly more technically than on a simpler trace.&lt;/p&gt;
&lt;p&gt;I started to sit lower, put legs closer and change ski edges using mass center and not ass or legs, pipe changing arcs became shorter and with longer radius, which increased speed compared to plain skiing.&lt;/p&gt;
&lt;p&gt;Of course it was not always perfect, and frankly I believe it looked like crap and was a real crap from good technique point of view, but it was very pleasant for me, and that's what matters. I want to get another hour or so with good teacher, who will tell me where main problems are, since I can not see how I made a slope. Sometimes I flew over the trace couple of meters and than landed in 'different positions' usually already without skis moving on my body another dozen of meters. But I like it too - it shows complex cases and sharps instincts.&lt;/p&gt;
&lt;p&gt;Currently I believe there are no somewhat big parts of my body, which do not try to scream and ache. Especially shine bones (hard to move or stay long enough) and various leg muscles, but it is not a problem - I will be fresh again in a day, and hundred or so of &quot;The Glenrothes&quot; and couple of hours playing piano and trumpet will quickly help me. So plan is to make another turn next weekend or preferably move to ski resort couple times.&lt;/p&gt;
&lt;p&gt;Fucking incredible. Just love it!&lt;/p&gt;</description>
	<pubDate>Sun, 28 Feb 2010 18:43:16 +0000</pubDate>
</item>
<item>
	<title>Rik van Riel: Thank you, PSNH crews</title>
	<guid>http://surriel.com/118 at http://surriel.com</guid>
	<link>http://surriel.com/node/118</link>
	<description>&lt;p&gt;Due to the big storm Thursday night, we spent two days without power. After freezing ourselves on Friday, we decided to spend Saturday at a friend's place (thank you Aris, Chris and Sarah). While checking on our house, there were always crews at work trying to clear up the fallen trees, reopen roads and reconnect power and communications lines. A big thank you goes out to the power and telco crews who are working around the clock to clear up the mess and reconnect New England.&lt;/p&gt;</description>
	<pubDate>Sun, 28 Feb 2010 17:24:09 +0000</pubDate>
</item>
<item>
	<title>Michael Kerrisk (manpages): man-pages-3.24 is released</title>
	<guid>tag:blogger.com,1999:blog-3174631896317411826.post-558291106288765144</guid>
	<link>http://linux-man-pages.blogspot.com/2010/02/man-pages-324-is-released.html</link>
	<description>I've uploaded &lt;em&gt;man-pages-3.24&lt;/em&gt; into the &lt;a href=&quot;http://www.kernel.org/pub/linux/docs/man-pages/&quot;&gt;release directory&lt;/a&gt; (or view the &lt;a href=&quot;http://www.kernel.org/doc/man-pages/online_pages.html&quot;&gt;online pages&lt;/a&gt;). The most notable &lt;a href=&quot;http://www.kernel.org/doc/man-pages/changelog.html#release_3.24&quot;&gt;changes in &lt;span&gt;man-pages-3.24&lt;/span&gt;&lt;/a&gt; are the following: &lt;ul&gt;&lt;li&gt;The addition of three pages by David Howells describing the kernel key management facility: &lt;a href=&quot;http://www.kernel.org/doc/man-pages/online/pages/man2/add_key.2.html&quot;&gt;&lt;span&gt;add_key(2)&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;http://www.kernel.org/doc/man-pages/online/pages/man2/request_key.2.html&quot;&gt;&lt;span&gt;request_key(2)&lt;/span&gt;&lt;/a&gt;, and &lt;a href=&quot;http://www.kernel.org/doc/man-pages/online/pages/man2/keyctl.2.html&quot;&gt;&lt;span&gt;keyctl(2)&lt;/span&gt;&lt;/a&gt;. (These pages were formerly part of the &lt;em&gt;keyutils&lt;/em&gt; package.)&lt;/li&gt;&lt;li&gt;The &lt;a href=&quot;http://www.kernel.org/doc/man-pages/online/pages/man2/fcntl.2.html&quot;&gt;&lt;em&gt;fcntl(2)&lt;/em&gt;&lt;/a&gt; manual pages adds documention of &lt;span&gt;F_SETOWN_EX&lt;/span&gt; and &lt;span&gt;F_GETOWN_EX&lt;/span&gt;, which are new in Linux 2.6.32.&lt;/li&gt;&lt;li&gt;Minor changes to many other pages.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3174631896317411826-558291106288765144?l=linux-man-pages.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 27 Feb 2010 17:00:38 +0000</pubDate>
</item>
<item>
	<title>Matthew Garrett: Nook update (again)</title>
	<guid>http://mjg59.livejournal.com/121450.html</guid>
	<link>http://mjg59.livejournal.com/121450.html</link>
	<description>Barnes and Noble released the &lt;a href=&quot;http://images.barnesandnoble.com/PResources/download/Nook/source-code/nook-source-code.zip&quot;&gt;nook source code&lt;/a&gt; last week. This includes the code to busybox, uboot and their kernel. Unfortunately, the uboot and kernel code both appear to be missing swathes of code found statically linked in the binaries that they're distributing. License compliance is hard, let's flail wildly.</description>
	<pubDate>Fri, 26 Feb 2010 18:31:26 +0000</pubDate>
</item>
<item>
	<title>Dave Airlie: GPU switching update</title>
	<guid>http://airlied.livejournal.com/71434.html</guid>
	<link>http://airlied.livejournal.com/71434.html</link>
	<description>Okay I've been busy elsewhere but dragged myself back to try and finish this for upstream&lt;br /&gt;&lt;br /&gt;v10 of the patch is up&lt;br /&gt;&lt;a href=&quot;http://people.freedesktop.org/~airlied/vgaswitcheroo/0001-vga_switcheroo-initial-implementation-v10.patch&quot;&gt;http://people.freedesktop.org/~airlied/vgaswitcheroo/0001-vga_switcheroo-initial-implementation-v10.patch&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;changes are mainly that mjg59 was right about keeping ugly things in the drivers.&lt;br /&gt;&lt;br /&gt;adding ATRM support to get the ROMs on ATI hybrid for the discrete card was actually a pain with the previous code design,&lt;br /&gt;so I moved lots of it around again, and now the discrete ROM can be retrieved via the ATRM method.&lt;br /&gt;&lt;br /&gt;I've tested it on the W500 and it works as well as before, which means still the 3rd or 4th switch fails and locks the machine up,&lt;br /&gt;I need to debug this further.&lt;br /&gt;&lt;br /&gt;The refactored code should hopefully make it easier to fill in the nvidia/nvidia and intel/nvidia blanks for mjg59.&lt;br /&gt;&lt;br /&gt;Update 1: v11 is now up&lt;br /&gt;&lt;a href=&quot;http://people.freedesktop.org/~airlied/vgaswitcheroo/0001-vga_switcheroo-initial-implementation-v11.patch&quot;&gt;http://people.freedesktop.org/~airlied/vgaswitcheroo/0001-vga_switcheroo-initial-implementation-v11.patch&lt;/a&gt;&lt;br /&gt;It should fix the failure to switch to IGD the 2nd time hopefully.&lt;br /&gt;&lt;br /&gt;Update 2: v13 is now up, it blindly implements nvidia DSM changing, but I've no idea if it works. Hopefully someone can test it and give me some feedback. Its nearly all guesswork from work mjg59 did.</description>
	<pubDate>Fri, 26 Feb 2010 05:04:56 +0000</pubDate>
</item>
<item>
	<title>Pete Zaitcev: Is OpenSolaris dead?</title>
	<guid>http://zaitcev.livejournal.com/200685.html</guid>
	<link>http://zaitcev.livejournal.com/200685.html</link>
	<description>&lt;p&gt;Chris &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/solaris/ReadingSolarisTeaLeaves&quot;&gt;asks&lt;/a&gt; where OpenSolaris is headed. My reaction: nobody cares anymore. FreeBSD established itself as the alternative to Linux, and that leaves Solaris with no niche. So, whatever. It is much more important what is going to happen to OpenOffice and MySQL. Also, Sun carried a pretty large assortment of lesser projects, such as Lustre.&lt;/p&gt;</description>
	<pubDate>Thu, 25 Feb 2010 23:13:56 +0000</pubDate>
</item>
<item>
	<title>Matthew Garrett: You know it's a bad day when:</title>
	<guid>http://mjg59.livejournal.com/121316.html</guid>
	<link>http://mjg59.livejournal.com/121316.html</link>
	<description>ld gives you &quot;Can not allocate memory&quot;.&lt;br /&gt;&lt;br /&gt;(turned out to be a corrupt object file)</description>
	<pubDate>Wed, 24 Feb 2010 19:21:58 +0000</pubDate>
</item>
<item>
	<title>Linus Torvalds: Turst me, I know what I'm doing...</title>
	<guid>tag:blogger.com,1999:blog-4999557720148026925.post-1068445608619999903</guid>
	<link>http://torvalds-family.blogspot.com/2010/02/turst-me-i-know-what-im-doing.html</link>
	<description>&lt;a href=&quot;http://2.bp.blogspot.com/_E2tJnrV_I64/S4VpnqE8RwI/AAAAAAAAAB8/Xr0l5iPzLCk/s1600-h/HouseHub.jpg&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_E2tJnrV_I64/S4VpnqE8RwI/AAAAAAAAAB8/Xr0l5iPzLCk/s320/HouseHub.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5441871854777943810&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;I'm probably moving my office to be above the garage.&lt;br /&gt;&lt;br /&gt;In preparation for that, I did the whole &quot;get CAT6 networking to the new location&quot; thing, which has involved re-acquainting myself with our crawlspace. Spending my days crawling around, hoping I'm not going to encounter any dead mice (or live ones, for that matter).&lt;br /&gt;&lt;br /&gt;I obviously already had cable going to various locations in the house, but the way that had happened, I'd done them one at a time, and my current office ended up being the hub for it all. And since I really wasn't going to re-route all the cables and make the new office be another hub of chaos, and I certainly wasn't going to leave the hub in what will become a kids bedroom, the above is the result.&lt;br /&gt;&lt;br /&gt;Beautiful it ain't. It's a real media center enclosure, but the networking hubs that are meant for those things are overpriced and generally just pitiful 4-port 100Mbps switches with dubious firewall capabilities, so I'm just installing my own. And some day, I'll actually add the screws that hold the boxes where they are supposed to go, rather than just sitting in a pile on top of each other at the bottom of the box.&lt;br /&gt;&lt;br /&gt;I haven't had the energy to fix the telephone wiring. As you can see, I now have the header for getting that particular mess sorted out too, but I'm not the person who created that particular &quot;rat king&quot; of cabling under our house in the first place. So I'm not feeling the need quite acutely enough to spend another few hours crawling around straightening out all &lt;span&gt;that&lt;/span&gt; wiring. Same goes for TV cabling. You can kind of tell what part of the house wiring I actually care about...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4999557720148026925-1068445608619999903?l=torvalds-family.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 24 Feb 2010 10:38:24 +0000</pubDate>
</item>
<item>
	<title>Pavel Machek: Symbian</title>
	<guid>http://pavelmachek.livejournal.com/93926.html</guid>
	<link>http://pavelmachek.livejournal.com/93926.html</link>
	<description>FLOSS weekly podcast has interview with someone from Symbian foundation. Interesting point is, that even Symbian people acknowledge Android as good, but will try to attack it from below, by using less power and running on smaller device. They even have &lt;a href=&quot;http://blog.symbian.org/&quot;&gt;a blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;What they do &lt;em&gt;not&lt;/em&gt; have is working system on real hardware... which is quite interesting. They claim to be using qemu and beagleboard, citing lack of drivers and claiming no open devices exist. I guess someone should show them OpenMoko or HTC Dream (ADP1). Plus they do have their own c++ dialect, with proprietary compiler and &lt;br /&gt;&lt;br /&gt;Ouch, and what they &lt;em&gt;do&lt;/em&gt; have is design by comitee. Actually design by 4 comitees :-(.&lt;br /&gt;&lt;br /&gt;Anyway, it is great to see more opensource competition in cellphones; and I hope it does not mean death of Maemo platform.</description>
	<pubDate>Tue, 23 Feb 2010 21:20:48 +0000</pubDate>
</item>
<item>
	<title>Pavel Machek: do androids dream of electric sheep?</title>
	<guid>http://pavelmachek.livejournal.com/93687.html</guid>
	<link>http://pavelmachek.livejournal.com/93687.html</link>
	<description>Ok, so I got paper version of Blade Runner... and I enjoyed it, even through I expected a bit more.&lt;br /&gt;&lt;br /&gt;But now... my android seems to be downloading electric sheep at 100MB/night rate. And yes, it continues during the day, too, and would probably do more if I had better connection than GPRS. &lt;br /&gt;&lt;br /&gt;No, rebooting the phone did not help. According to 'spare parts', component responsible for the traffic is 'media'... which is alias for 'download manager' and pretty much opaque. So I tried plain old tcpdump, to find that it is talking to 1e100.net; I have custom rom but it was still trying to download updates.&lt;br /&gt;&lt;br /&gt;Solution is &quot;easy&quot;: disable background data. Unfortunately, it also disables market and gtalk. Is there better solution?&lt;br /&gt;&lt;br /&gt;Oh and it is now clear. Androids do not dream of electric sheep, they dream of digital donuts.</description>
	<pubDate>Tue, 23 Feb 2010 17:16:27 +0000</pubDate>
</item>
<item>
	<title>Pete Zaitcev: F12, BIND, and stable releases</title>
	<guid>http://zaitcev.livejournal.com/200243.html</guid>
	<link>http://zaitcev.livejournal.com/200243.html</link>
	<description>&lt;p&gt;Ran &quot;yum update&quot; today on F12 and the rewrite of BIND configuration produced a fail-to-start &lt;i&gt;again&lt;/i&gt;. Only instead of a blatant syntax error with unbalanced braces like when DNSSEC was first enabled, they merely referred a non-existing file (/etc/pki/dnssec-keys//named.dnssec.keys). BTW, I looked everywhere, it's not a part of any package we ship in Fedora. What a facepalm, in the middle of stable release too. You know, the anti-Rawhide people always bring it up how Rawhide is &quot;not guaranteed&quot; to work. Well, is F12 &quot;guaranteed&quot;?&lt;/p&gt;
&lt;p&gt;For about four recent releases it became noticeable that Fedora folks put a lot of effort into the QA and polish, but once release is out of the door, controls are relaxed and all sorts of dubious code flows freely in the guise of &quot;security&quot; updates. The S-word is some kind of a magic key that trumps any basic quality. The net result is going to be people installing releases and then &lt;i&gt;never updating&lt;/i&gt;, once they catch up on what's happening. What's worse, once this folk wisdom gets established, it cannot be easily reversed even if updates become quality checked.&lt;/p&gt;</description>
	<pubDate>Mon, 22 Feb 2010 20:41:37 +0000</pubDate>
</item>
<item>
	<title>David Woodhouse: 22 Feb 2010</title>
	<guid>http://www.advogato.org/person/dwmw2/diary.html?start=214</guid>
	<link>http://www.advogato.org/person/dwmw2/diary.html?start=214</link>
	<description>My God, I've been vaguely aware of the HTML5 video train
wreck but I hadn't realised just how much of a fucking
abortion the rest of the HTML5 'standard' is.
&lt;p&gt;
I had the misfortune to read the &lt;a href=&quot;http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#character-encodings-0&quot;&gt;section
on character encodings&lt;/a&gt; over the weekend, and it almost
made me lose my lunch.
&lt;p&gt;
Not only does it codify the crappy and unreliable practice
of applying heuristics to guess character encodings, it also
&lt;em&gt;requires&lt;/em&gt; that a user agent deliberately ignore the
explicitly specified character set in some cases &amp;mdash; for
example, text explicitly labelled as US-ASCII or ISO8859-1
MUST be rendered as if it were Windows-1252!
&lt;p&gt;
It justifies this idiocy, which it admits is a &lt;a href=&quot;http://www.whatwg.org/specs/web-apps/current-work/multipage/introduction.html#willful-violation&quot;&gt;'willful
violation'&lt;/a&gt;, on the basis that it aids compatibility with
legacy content. By which of course it means &quot;broken
content&quot;, since this was never actually necessary for anyone
who published content correctly even with older versions of
HTML.
&lt;p&gt;
But that doesn't make any sense &amp;mdash; surely legacy
content won't be identifying itself as HTML5? It might be
reasonable to do these stupid things for legacy content, but
not HTML5. The complete mess we have with charset labelling
is a prime example of where the RFC1122 &amp;sect;1.2.2 approach of
being lenient in what you accept has
turned out to be massively counter-productive &amp;mdash; if
we'd simply refused to make stupid guesses about character
sets in the first place, then people would have actually
started getting the labelling &lt;em&gt;right&lt;/em&gt;.&lt;p&gt;

&lt;p&gt; The &lt;em&gt;sensible&lt;/em&gt; approach to take with HTML5
would just have been to say &lt;i&gt;&quot;All content which identifies
itself as HTML5 MUST be in the UTF-8 character encoding. A
conforming user agent MUST NOT attempt to interpret content
as if it has any other encoding; any invalid UTF-8 byte
sequences MUST be shown using the Unicode replacement
character U+FFFD (&amp;#65533;) or equivalent.&quot;&lt;/i&gt;

&lt;p&gt; &lt;p&gt;
Or, if we really must continue to permit the legacy crap
8-bit character sets, it should have said that the content
MUST be in the character set specified in the HTTP
&lt;tt&gt;Content-Type:&lt;/tt&gt; header or equivalent
&lt;tt&gt;&amp;lt;META&amp;gt;&lt;/tt&gt; tag.&lt;p&gt;
Keep the stupid heuristics for legacy content by all means,
but it should be &lt;em&gt;forbidden&lt;/em&gt; to render HTML5
content in a character set other than the one it is labelled
with, and all invalid characters &lt;i&gt;(including the C1
control characters in ISO8859-1 which in Windows-1252 would
map to extra printable characters like the Euro sign)&lt;/i&gt;
MUS be shown as U+FFFD (&amp;#65533;). And then the people
who publish broken crap would &lt;em&gt;see&lt;/em&gt; that they're
publishing broken crap, rather than thinking it's OK because
the browser they use just happens to assume the same
character set as the system they're publishing from.&lt;p&gt;

&lt;p&gt; To me, HTML5 looks less like a standard and more like a set
of broken hackish kludges to work around the fact that
people out there aren't actually &lt;em&gt;capable&lt;/em&gt; of
following a standard.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 22 Feb 2010 12:31:17 +0000</pubDate>
</item>
<item>
	<title>Pavel Machek: armored vehicle from Nokia</title>
	<guid>http://pavelmachek.livejournal.com/93186.html</guid>
	<link>http://pavelmachek.livejournal.com/93186.html</link>
	<description>I knew 6230 is a good phone, and yes, it seems to come back. I lost it in a bus twice already (and good people returned it both times), lost it from bycicle and a horse back...&lt;br /&gt; &lt;br /&gt;I went to the mountains, and estimated the trip from bus to Petraska at 4 hours (arriving at cca 23:30). But I selected&lt;br /&gt;shorter way over ski slope and made it under two... only to realize that I lost 6230 somewhere.&lt;br /&gt; &lt;br /&gt;I was told I had no chance to find it; but in nice, quiet night ringing and blinking phone is rather easy to find so I disagreed, and went back for a rescue -- 6230 still had signal and was ringing&lt;br /&gt;somewhere in the mountains.&lt;br /&gt; &lt;br /&gt;But I was pretty suprised when I found the 6230 -- it was 5 centimeters under the snow, getting direct hit from snow gun for about 2 hours... I only found it because of light. Battery was low, but phone is alive and continues to work.&lt;br /&gt; &lt;br /&gt;To whoever designed 6230: thanks!</description>
	<pubDate>Sun, 21 Feb 2010 07:26:30 +0000</pubDate>
</item>
<item>
	<title>Rusty Russell: Rusty’s Travels</title>
	<guid>http://rusty.ozlabs.org/?p=85</guid>
	<link>http://rusty.ozlabs.org/?p=85</link>
	<description>&lt;p&gt;Headed through Germany 26th through 3rd March or so, then Lithuania via Poland.  Back via Singapore on 24/25 March.&lt;/p&gt;
&lt;p&gt;My email will be intermittent (I hope!) but if you&amp;#8217;re around and want to grab a meal or a beer with us, ping me!&lt;/p&gt;</description>
	<pubDate>Sat, 20 Feb 2010 07:02:20 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Restructuring OpenBSC and OsmocomBB code</title>
	<guid>http://laforge.gnumonks.org/weblog/2010/02/20#20100220-code_restructuring</guid>
	<link>http://laforge.gnumonks.org/weblog/2010/02/20#20100220-code_restructuring</link>
	<description>&lt;p&gt;
I've spent the better part of the day with &lt;a href=&quot;http://lists.osmocom.org/pipermail/baseband-devel/2010-February/000017.html&quot;&gt;&lt;/a&gt;, renaming files/functions/include paths, Makefiles, autotools and the
like.
&lt;/p&gt;
&lt;p&gt;
The result of this is a new sub-project called &lt;a href=&quot;http://bb.osmocom.org/trac/wiki/libosmocore&quot;&gt;libosmocore&lt;/a&gt; that
gathers all the shared code between the network-side GSM implementation
OpenBSC and the phone-side implementation OsmocomBB.  The library is
portable enough that it can run on a proper OS (like GNU/Linux) but
also be cross-compiled to work on the actual phone without any OS.
&lt;/p&gt;
&lt;p&gt;
On the other hand we now have a master Makefile in OsmocomBB to build
libosmocore for host PC and target (phone), as well as the osmocon
and layer2 host programs and the phone firmware itself.
&lt;/p&gt;
&lt;p&gt;
Let's hope I can now return to writing actual code...
&lt;/p&gt;</description>
	<pubDate>Sat, 20 Feb 2010 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Matthew Garrett: Pittsburgh</title>
	<guid>http://mjg59.livejournal.com/121029.html</guid>
	<link>http://mjg59.livejournal.com/121029.html</link>
	<description>&lt;img src=&quot;http://www.codon.org.uk/~mjg59/pics/cmu.jpg&quot; align=&quot;right&quot; /&gt;As I &lt;a href=&quot;http://mjg59.livejournal.com/120465.html&quot;&gt;mentioned&lt;/a&gt;, I headed to Pittsburgh last week to give some talks at CMU and find out something about what they're doing there. Despite the dire weather that had closed the airport the day before, I had no trouble getting into town and was soon safely in a hotel room with a heater that seemed oddly enthusiastic about blasting cold air at me for ten seconds every fifteen minutes. Unfortunately, it seems that life wasn't as easy for everyone - ten minutes after I arrived, I got a phone call telling me that the city had asked CMU to cancel classes the next day.&lt;br /&gt;&lt;br /&gt;This turned out to be much less of a problem than I'd expected - whether because of their enthusiasm to learn about ACPI or because they simply hadn't noticed the alert telling them about the cancellation, a decent body of students turned up the next morning. After a brief chat with &lt;a href=&quot;http://www.cs.cmu.edu/~mjs/&quot;&gt;Mark Stehlik&lt;/a&gt;, the assistant dean for undergraduate education, I headed off to the lecture hall. The fact that I can now just plug my laptop into a VGA cable and have my desktop automatically extend itself continues to amaze me, as does OpenOffice's seemingly unerring ability to get confused about which screen should have my content and which should be showing me the next slide. Nevertheless, facts were imparted and knowledge dropped on those assembled. I'm even reasonably sure that the contents were factually accurate, which is a shame because the most attractive part of teaching always struck me as being able to lie to students who will then happily regurgitate whatever you tell them because in case it turns up on the exam. Perhaps this is why I'm safer out of academia.&lt;br /&gt;&lt;br /&gt;Lunch offered an opportunity to visit the &lt;a href=&quot;http://www.redhat.com/about/news/prarchive/2009/cmu-grant.html&quot;&gt;Red Hat sponsored lab&lt;/a&gt;, which was pleasingly located somewhere other than a basement. The guy on the right of the picture is &lt;a href=&quot;http://www.cs.cmu.edu/~gkesden/&quot;&gt;Greg Kesden&lt;/a&gt;, the director of undergraduate laboratories in CS there - it was wonderful to get an opportunity to see the machines getting used, and students seemed genuinely appreciative of the facility.&lt;br /&gt;&lt;br /&gt;After lunch I spent a while talking to &lt;a href=&quot;http://www.cs.cmu.edu/~satya/&quot;&gt;Satya&lt;/a&gt; about the &lt;a href=&quot;http://isr.cmu.edu/&quot;&gt;Internet Suspend and Resume&lt;/a&gt; project. This is an impressive combination of virtualisation and migration, using a Fedora-based live image to bring up an OS on arbitrary hardware before downloading a machine image and launching it. The majority of the data is pulled in on demand, meaning that initial performance can be slow but ensuring that data is only downloaded if it's needed. When the user is finished, the delta between the original image and the new one can be pushed back to the server while remaining cached on the local machine in case the image is used again.&lt;br /&gt;&lt;br /&gt;It's an interesting approach, combining the flexibility of thin clients with the advantages of having actually useful computing power at the local end. There's a few functional awkwardnesses, such as some VMs being unhappy if images are migrated between machines with different CPU features, and it obviously benefits from having significant bandwidth. But the idea of being able to combine the convenience of a floating session with the knowledge that you can still keep copies of your data on you is an attractive one, and I'd love a future where I can move my session between my laptop and a desktop.&lt;br /&gt;&lt;br /&gt;After that there was some time to talk to &lt;a href=&quot;http://www.cs.cmu.edu/~scherlis/&quot;&gt;Bill Scherlis&lt;/a&gt; and &lt;a href=&quot;http://www.cs.cmu.edu/advisoryboard/bios/lehman.html&quot;&gt;Philip Lehman&lt;/a&gt; about the &lt;a href=&quot;http://se.ics.uci.edu/Welcome.html&quot;&gt;software engineering courses&lt;/a&gt; that CMU run. Part of the minor in software engineering includes a course requirement to make a meaningful contribution to an existing software project, from design through to submission and upstream acceptance. I had the opportunity to talk to a couple of the students about this and the differences they found between working with the Mozilla and Chrome communities, which I'll try to write up at some point.&lt;br /&gt;&lt;br /&gt;Finally I gave a presentation on Fedora and some of the issues that we face in providing a useful OS when patents and recalcitrant hardware vendors do their best to thwart us. Despite the ice outside and the significantly-below-freezing temperatures, enough people turned up that sorties had to be sent out to find extra chairs. It was great to see how interested people were in learning about what we do, although it's probably the case that the free pizza did help encourage people.&lt;br /&gt;&lt;br /&gt;After that it was an early trip back to the airport, where I found that my plane was delayed and the only &quot;restaurant&quot; still open was McDonalds. Even so, I left with the feeling that it had been an interesting and educational visit. Many thanks to &lt;a href=&quot;http://www.cs.cmu.edu/~davide/&quot;&gt;David Eckhardt&lt;/a&gt;, who runs the &lt;a href=&quot;http://www.cs.cmu.edu/~410&quot;&gt;OS course&lt;/a&gt; I presented to and who looked after me all day - thanks too to &lt;a href=&quot;http://joshuawise.com/&quot;&gt;Joshua Wise&lt;/a&gt; who picked me up when David was running late due to the ground being covered with blocks of ice.</description>
	<pubDate>Fri, 19 Feb 2010 21:35:36 +0000</pubDate>
</item>
<item>
	<title>Linus Torvalds: Demons? Really?</title>
	<guid>tag:blogger.com,1999:blog-4999557720148026925.post-8385837159796543899</guid>
	<link>http://torvalds-family.blogspot.com/2010/02/demons-really.html</link>
	<description>So I was in Costco waiting for a car tire rotation and check yesterday. Wasting time, I blew three bucks on a slice of pizza and a sundae, and looked around for a place to sit down and pig out. The place was packed, and it was the middle of the day.&lt;br /&gt;&lt;br /&gt;So I sat down next to this group of people, and realized that one reason it was busy was that apparently people use the Costco foodcourt as a lunch place. Fair enough. A couple of bucks gets you a long way there.&lt;br /&gt;&lt;br /&gt;Sitting there, I can't but help overhear that it's apparently some religious discussion going on. Ok, so it's the local God Squad having their lunch meeting, no biggie. They're apparently talking about Africa, and about life and death decisions etc - at least one of them is a missionary.&lt;br /&gt;&lt;br /&gt;And that's when it gets strange. One of them starts to seriously talk about praying demons away, and then after the prayer has driven the demon out of the person, you have to support the person so that the demon doesn't come back. And nobody laughs at him.&lt;br /&gt;&lt;br /&gt;Seriously? What year is it again? I'm pretty sure they didn't have Costco foodcourts in the middle ages, but maybe there was some time warping going on.&lt;br /&gt;&lt;br /&gt;What the hell is &lt;span&gt;wrong&lt;/span&gt; with people?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4999557720148026925-8385837159796543899?l=torvalds-family.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 19 Feb 2010 11:51:51 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Announcing OsmocomBB: Free Software / Open Source GSM Baseband firmware</title>
	<guid>http://laforge.gnumonks.org/weblog/2010/02/19#20100219-announcing_osmocom_bb</guid>
	<link>http://laforge.gnumonks.org/weblog/2010/02/19#20100219-announcing_osmocom_bb</link>
	<description>&lt;p&gt;
Last, but not least, I am proud to &lt;a href=&quot;http://lists.osmocom.org/pipermail/baseband-devel/2010-February/000000.html&quot;&gt;announce&lt;/a&gt; the &lt;a href=&quot;http://bb.osmocom.org/&quot;&gt;OsmocomBB&lt;/a&gt; project publicly.  During the last
7 weeks, a small group of skilled developers has been working on this
&lt;/p&gt;
&lt;p&gt;
It has now reached a point where we can
&lt;ul&gt;
&lt;li&gt;scan the spectrum for the strongest signal GSM channels&lt;/li&gt;
&lt;li&gt;lock onto them and performing AFC (automatic frequency control)&lt;/li&gt;
&lt;li&gt;decode the SCH burst to obtain BSIC and GSM frame time&lt;/li&gt;
&lt;li&gt;decode the BCCH of the cell, pass it over to the host PC and feed it into
    wireshark&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
Since this in itself is a valuable and useful milestone of the project,
it was the ideal opportunity to take this project public.
&lt;/p&gt;
&lt;p&gt;
There's still a lot of work to be done in many areas. Most of them are not
even related to the GSM air interface.  So if you're familiar with C
development on an ARM7TDMI based microcontroller, know your way around
I2C and SPI, are familiar with the GNU toolchain for ARM and want to
help us out: Please join the &lt;a href=&quot;http://lists.osmocom.org/mailman/listinfo&quot;&gt;baseband-devel mailing
list&lt;/a&gt; right away!
&lt;/p&gt;</description>
	<pubDate>Fri, 19 Feb 2010 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Evgeniy Polyakov: Elliptics network background fsck</title>
	<guid>http://www.ioremap.net/408 at http://www.ioremap.net</guid>
	<link>http://www.ioremap.net/node/408</link>
	<description>&lt;p&gt;Its original draft could be read &lt;a href=&quot;http://www.ioremap.net/node/389&quot;&gt;previously&lt;/a&gt;, but I believe it became a little bit outdated, so requires some highlighting.&lt;/p&gt;
&lt;p&gt;But first, let's clear the status of fsck log checker. I completed its implementation, which is now capable of supporting consistent number of copies in the storage. It does not allow to merge different transaction logs yet.&lt;/p&gt;
&lt;p&gt;To determine object to check it uses special text log file, which among other info contains name of the object and transformation functions to work with. Each transformation function will produce unique ID, which will be checked in the storage. For example we can put there sha1 and md5 transformation functions, so we will have two IDs equal to appropriate hash of the input name (and optionally hash of the transactions content).&lt;/p&gt;
&lt;p&gt;When some objects are not presented in the storage, checker will download first existing copy and try to upload it using transformation functions corresponding to missing objects. So, if object with ID being equal to md5(name) is present and sha1(name) isn't, then checker will download all transactions stored in the existing object and upload them using sha1 transformation, thus recovering requested number of copies.&lt;/p&gt;
&lt;p&gt;Checker currently requires log file to get information from and admin to start the process.&lt;br /&gt;
Background fsck is supposed to eliminate both needs.&lt;/p&gt;
&lt;p&gt;Basic idea is to store some metadata with each object, which will tell origin of the given object and how it was supposed to be stored in the &lt;a href=&quot;http://www.ioremap.net/projects/elliptics&quot;&gt;elliptics network&lt;/a&gt;. Thus we can timely or on request parse metadata for all objects in the given node (or only part of them), create a log file and run existing checker against it.&lt;/p&gt;
&lt;p&gt;It becomes similar to what extended attributes are in the existing filesystems. Metadata can contain information not only about what object is, but also its IO permissions or access policies, owner information and anything else we would like to have there, which will allow to implement at least basic security model for elliptics network as well as simplify POHMELFS port.&lt;/p&gt;</description>
	<pubDate>Thu, 18 Feb 2010 20:32:32 +0000</pubDate>
</item>
<item>
	<title>Jaya Kumar: Theft of Xorg funds by Paypal</title>
	<guid>tag:blogger.com,1999:blog-16880836.post-228333500028241238</guid>
	<link>http://highlycomposite2.blogspot.com/2010/02/theft-of-xorg-funds-by-paypal.html</link>
	<description>I just read on the xorg mailing list that &lt;a href=&quot;http://permalink.gmane.org/gmane.comp.freedesktop.xorg/42548&quot;&gt;Paypal stole USD$5k from xorg and another 5k to some Brazilian bankers&lt;/a&gt;. I have only used Paypal once and they gave me a USD conversion rate which was half that of legitimate banks and it was all a big drama and felt really unfair. So I really hope that Xorg is able to recover those funds. Maybe one of yous fellas is a lawyer and can help Xorg?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/16880836-228333500028241238?l=highlycomposite2.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 18 Feb 2010 16:08:42 +0000</pubDate>
</item>
<item>
	<title>Matthew Garrett: Gobi 2000</title>
	<guid>http://mjg59.livejournal.com/120577.html</guid>
	<link>http://mjg59.livejournal.com/120577.html</link>
	<description>Anssi Hannula posted a patch to add Gobi 2000 support to qcserial and provided me with support for gobi_loader. I've added the gobi_loader code &lt;a href=&quot;http://www.codon.org.uk/~mjg59/gobi_loader&quot;&gt;here&lt;/a&gt;. You'll need Anssi's kernel patch from &lt;a href=&quot;http://permalink.gmane.org/gmane.linux.usb.general/27455&quot;&gt;here&lt;/a&gt;, and probably also my followup patch with extra IDs from &lt;a href=&quot;http://permalink.gmane.org/gmane.linux.usb.general/27485&quot;&gt;here&lt;/a&gt;. Note that the 2000 devices need an extra firmware file (UQCN.mbn)  as well as the apps.mbn and amss.mbn files.&lt;br /&gt;&lt;br /&gt;The qcserial driver is currently broken in 2.6.32 and later. It's due to the switch to using kfifo for usb serial, but we haven't been able to work out the actual cause. I'm looking at alternative approaches.</description>
	<pubDate>Wed, 17 Feb 2010 21:56:54 +0000</pubDate>
</item>
<item>
	<title>Kernel Podcast: 2010/02/14 Linux Kernel Podcast</title>
	<guid>http://www.kernelpodcast.org/?p=482</guid>
	<link>http://www.kernelpodcast.org/2010/02/17/20100214-linux-kernel-podcast/</link>
	<description>&lt;p&gt;&lt;strong&gt;Audio&lt;/strong&gt;: &lt;a href=&quot;http://media.libsyn.com/media/jcm/linux_kernel_podcast_20100214.mp3&quot;&gt;http://media.libsyn.com/media/jcm/linux_kernel_podcast_20100214.mp3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This podcast is brought to you by the colour blue and way too much coffee, together reminding you to check out the awesome power of the BeagleBoard Open Source hardware project at http://www.beagleboard.org/. My new Rev C. board was responsible for the delay getting this issue out&amp;#8230;too much fun was had.&lt;/p&gt;
&lt;p&gt;For the weekend of February 14th, 2010, I&amp;#8217;m Jon Masters with a summary of the weeks&amp;#8217;s LKML traffic.&lt;/p&gt;
&lt;p&gt;In this issue: Linux 2.6.33-rc8, x86 bootmem, NFS, OOM, Performance Counters, Relaxation, Stack Sizes, and SysFS mutability.&lt;/p&gt;
&lt;p&gt;Linux 2.6.33-rc8. Linus Torvalds announced the release of version 2.6.33-rc8 on Friday February 12th 2010 at 11:49 am Best Coast Time (PST), saying that he hoped it would be the last before 2.6.33 final. He added that, &amp;#8220;A number of regressions should be fixed, and while the regression list doesn&amp;#8217;t make me _happy_, we didn&amp;#8217;t have the kind of nasty things that went on before -rc7 and made me worried&amp;#8221;. This kernel includes fixes for the netfilter bugs that I discovered, as well as some KMS regression fixes. In a separate discussion thread started by John Hawley (warthog9), it was debated when kernel.org should move over to using xz (LZMA2) as a replacement for bzip2 compression (remember when bzip2 was trendy and new?). John proposed various migration options before the thread verred off into a discussion around when an eventual 3.0 Linux kernel would come, and what that would actually mean in practical terms &amp;#8211; just an arbitrary future release? I expect that LWN will have a typically witty writeup of this discussion sometime this week.&lt;/p&gt;
&lt;p&gt;Bootmem. Back in October last year, Ingo Molnar had stated that the kernel may not need the &amp;#8220;bootmem&amp;#8221; allocator on x86. At the time, he noted that there were 5 different allocators on x86, depending upon the boot stage (to say nothing of the other core allocator options): the generic allocator, the early allocator (bootmem), the very early allocator (reserve_early), the very very early allocator (early brk model), and the very very very early allocator (basically just build time allocation). By initializing the x86 page allocator earlier in the boot process, Yinghai Lu attempts to do just what Ingo had suggested, now in version 6 of his patchset.&lt;/p&gt;
&lt;p&gt;NFS. Hirofumi Ogawa noticed (2.6.33-rc6) that recent kernels could not mount remote NFS version 3 shares, because of a userspace visible change in the kernel nfsd server. If he specified &amp;#8220;vers=3&amp;#8243; at mount time, all was well, but the kernel was not falling back to v3 correctly when v4 fails due to a change in error handling. Bruce Fields noted that this change was actually intentional and that the userspace tools had been updated, but decided to revert the patch that caused this change for the time being &amp;#8211; at least until the new versions of the mount tools are much more widespread than right now. Bruce sent a patch entitled (&amp;#8221;informingly&amp;#8221;) &amp;#8220;2.6.33 fix&amp;#8221; to Linus.&lt;/p&gt;
&lt;p&gt;OOM. David Rientjes posted a patchset re-implementing the OOM killer, in the wake of a number of discussions concerning its brokenness. It includes a complete rewrite of the badness() heuristic, which he is then described in some detail within the corresponding patch. Quoting David, &amp;#8216;The baseline for the heuristic is a proportion of memory that each task is currently using in memory plus swap compared to the amount of &amp;#8220;allowable&amp;#8221; memory. &amp;#8221; Allowble,&amp;#8221; in this sense, means the system-wide resources for unconstrained oom conditions, the set of mempolicy nodes, the mems attached to current&amp;#8217;s cpuset, or a memory controller&amp;#8217;s limit. The proportion is given on a scale of 0 (never kill) to 1000 (always kill), roughly meaning that if a task has a badness() score of 500 that the task consumes approximately 50% of allowable memory resident in RAM or in swap space.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Performance counters. Christoph Hellwig had complained that a patch had been merged back in September from Arjan van de Ven entitled &amp;#8220;perf_core: provide a kernel-internal interface to get to performance counters&amp;#8221;. That was intended to facilitate in-kernel use of the performance counters framework, but it was Christoph&amp;#8217;s opinion that it had no users and should be reverted. Ingo Molnar countered that there actually were a growing number of users, now including the latest work by Don Zickus to create a generalized NMI watchdog handler.&lt;/p&gt;
&lt;p&gt;Relax. Michael Breuer posted an interesting analysis of the implementation of the function cpu_relax on x86 systems. This function is called during spinlock spinning cycles in order to give the CPU a break (power management, etc.). Apparently, that function currently uses a nop, but both the Intel and AMD documentation recommend the PAUSE instruction instead (partly because it can be detected on recent CPUs and used to give special treatment to guest instances running under virtualization that are wasting CPU cycles when multiple vpus are allocated and some are spinning away). Arjan van de Ven, and others too, seemed to find this odd, and Artur Skawina wondered if this might be an odd alignment issue. Nonetheless, Michael detects a noticeable performance impact in various tests between these two instructions.&lt;/p&gt;
&lt;p&gt;Stack sizes. The kernel contains various task startup code that will create a vma region for its stack use. Existing kernels make this size determination based upon the PAGE_SIZE for the architecture, even though this really is independent of the userspace code that will use the stack, and even given existing rlimits that might see the stack theoretically larger than has been allowed by system limits. Michael Neuling sent a patch to decouple stack sizing from PAGE_SIZE and to default to basing it upon the rlimit.&lt;/p&gt;
&lt;p&gt;SysFS. Amerigo Wang posted an RFC patch implementing &amp;#8220;mutable sysfs files&amp;#8221;. The basic idea is that all potentially &amp;#8220;mutable&amp;#8221; (that is to say, files that may be yanked out from underneath at any time a hotplug or other operation occurs) files should use a specific API to avoid warnings.&lt;/p&gt;
&lt;p&gt;In today&amp;#8217;s miscellaneous items: An interesting discussion started by Salman Qazi (Google) centered around a missunderstanding of the ptrace API (and eventual iteration from Oleg Nesterov that the existing API sucks), a January XFS update from Christoph Hellwig (noting new support for netlink provided quota communication, better power saving in XFS kernel threads), Mel Gorman posted version 2 (v2r12) of his &amp;#8220;Memory Compaction&amp;#8221; patch series that is intended to &amp;#8220;defragment&amp;#8221; memory by reconciling GFP_MOVABLE pages, and another one of Al Viro&amp;#8217;s entertaining rants, this time about pohmelfs and its use of direct access to the current-&gt;fs-&gt;{root,mnt} entries.&lt;/p&gt;
&lt;p&gt;In today&amp;#8217;s announcements:&lt;/p&gt;
&lt;p&gt;Git version 1.6.6.2. Junio C Hamano announced an update to the 1.6.6 series of the Git SCM tool, releasing version 1.6.6.2. This contains a few fixes.&lt;/p&gt;
&lt;p&gt;Git version 1.7.0. Junio C Hamano also announced version 1.7.0 of the Git SCM had been released. This is the latest official version and includes a number of behavioral changes to &amp;#8220;git push&amp;#8221;, &amp;#8220;git send-email&amp;#8221;, and other commands as previously noted in this podcast. Users should read the release notes before upgrading if they want to make sure they catch all of the improvements.&lt;/p&gt;
&lt;p&gt;Linux 2.6.32.8. Greg Kroah-Hartman, apologizing for the slight delay due to a few crashes that had been reported and a need to verify a security fix, as well as various travel plans, announced the release of 2.6.32.8. It contains a few fixes 2.6.32 users really should have on their systems.&lt;/p&gt;
&lt;p&gt;The Linux Storage and Filesystems Summit. James Bottomley announced that the annual Linux Storage and Filesystems summit will take place concurrently with the VM summit on the two days before LinuxCon in Boston (Sunday and Monday), on the 8th and 9th of August. Interested parties can visit either the Linux Foundation website, or email agenda topics to the program committee at lsf10-pc@lists.linuxfoundation.org.&lt;/p&gt;
&lt;p&gt;Userspace RCU 0.4.1. Mathieu Desnoyers announced the latest release of his Userspace RCU implementation (remember, patent encumbered, but with a waiver for GPL projects). Version 0.4.1 contains a compilation fix for s390.&lt;/p&gt;
&lt;p&gt;As a followup to last weekend&amp;#8217;s kerneloops statistics, Arjan van de Ven also posted statistics purely for the 2.6.33 at that time. In his statistics, he showed that the most popular oops was in memcpy_toiovecend (found 391 times).&lt;/p&gt;
&lt;p&gt;The latest kernel release is 2.6.33-rc8.&lt;/p&gt;
&lt;p&gt;Andrew Morton announced an mm-of-the-moment mmotm for 2010-02-11-21-15.&lt;/p&gt;
&lt;p&gt;Don&amp;#8217;t forget to read my latest blog posting on jonmasters.org for more information on using the Cyclades TS-3000 with kgdb for remote target debugging, and don&amp;#8217;t forget to support Jason Wessel&amp;#8217;s proposed kgdb and kdb merge for 2.6.34. You know it makes sense to get this out there widely.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s a summary of the week&amp;#8217;s Linux Kernel Mailing List traffic, for further information visit www.kernel.org. I&amp;#8217;m Jon Masters.&lt;/p&gt;</description>
	<pubDate>Wed, 17 Feb 2010 13:35:47 +0000</pubDate>
</item>
<item>
	<title>Valerie Aurora: Brief union mounts update</title>
	<guid>http://valerieaurora.wordpress.com/?p=254</guid>
	<link>http://valerieaurora.wordpress.com/2010/02/16/brief-union-mounts-update/</link>
	<description>&lt;br /&gt;&lt;p&gt;For those of you wondering, I&amp;#8217;m still working on union mounts, just heads-down on a major rewrite to fix the hairiest problems.  Right now I&amp;#8217;m perhaps 90% of the way through rewriting the actual lookup code, the dense nutty core of union mounts.  This will fix one of the most difficult problems with the current code, massive code duplication between cached, real, and restricted real (&amp;#8220;hash&amp;#8221;) lookups:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lkml.indiana.edu/hypermail/linux/kernel/0910.2/01572.html&quot;&gt;http://lkml.indiana.edu/hypermail/linux/kernel/0910.2/01572.html&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I rewrote this to be one function with a loop centered around __lookup_hash() and it&amp;#8217;s looking pretty good.&lt;/p&gt;
&lt;p&gt;This rewrite is one of the hardest coding problems I&amp;#8217;ve ever worked on, and I have a lot of respect for the original union mount authors, Jan Blunck, Bharata Rao, Miklos Szeredi, David Woodhouse, and everyone else who has ever worked on a unioning file system.  Not to mention the regular VFS authors &amp;#8211; the cost of pathname lookup is one of the most crucial elements of operating system performance and it takes a lot of work to make it go fast.&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/valerieaurora.wordpress.com/254/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/valerieaurora.wordpress.com/254/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/valerieaurora.wordpress.com/254/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/valerieaurora.wordpress.com/254/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/valerieaurora.wordpress.com/254/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/valerieaurora.wordpress.com/254/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/valerieaurora.wordpress.com/254/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/valerieaurora.wordpress.com/254/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/valerieaurora.wordpress.com/254/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/valerieaurora.wordpress.com/254/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=valerieaurora.wordpress.com&amp;blog=10337555&amp;post=254&amp;subd=valerieaurora&amp;ref=&amp;feed=1&quot; /&gt;</description>
	<pubDate>Tue, 16 Feb 2010 21:04:48 +0000</pubDate>
</item>
<item>
	<title>Jaya Kumar: Lack of used goods markets</title>
	<guid>tag:blogger.com,1999:blog-16880836.post-3372707346129901911</guid>
	<link>http://highlycomposite2.blogspot.com/2010/02/lack-of-used-goods-markets.html</link>
	<description>I'm in KL now struggling to find cheap used electronics.  I needed a bunch of microsd and SD cards, didn't matter what size or make, used or new, I just wanted them really cheap (RM5 or less). So I posted on the fleamarket forums, Mudah and Cari but few sellers. It seems like most people here trash the stuff rather than selling it on. I wanted a handycam that can write either mp4 or wmv to SD or microSD for filming demos, so condition didn't matter much and image quality could be average, and was willing to put down around RM150 but no sellers for that either. Where does all the old electronics go? Into the trash? Melted down? What a pity for cheapskates like me. Even stuff like perspex boards only gets sold new which means it is all expensive. Where does all the used stuff go?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/16880836-3372707346129901911?l=highlycomposite2.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 16 Feb 2010 16:50:53 +0000</pubDate>
</item>
<item>
	<title>Pete Zaitcev: Keyboard</title>
	<guid>http://zaitcev.livejournal.com/200038.html</guid>
	<link>http://zaitcev.livejournal.com/200038.html</link>
	<description>&lt;p&gt;My PS/2 adapter seems to have died at last... Or, actually, it still works, but it takes several reboots to have it &quot;grab&quot; and start working. It was getting worse gradually, perhaps a capacitor is dying somewhere or whatnot. So, I hooked up a Belkin keyboard that I obtained many years ago for some kind of USB testing, and what do you know: I worked with computers for 27 years now and this is probably the second or third worst keyboard that I ever touched (the so-called &quot;Cuban Videoton&quot; or &quot;CID&quot; - the terminal made in the Island of Cuba - was the worst, and it had a couple of good competitors, one of which hailed from Yerevan, Armenia). The problem is subtle: keys of the Belkin Scorpius 980 Plus have a random friction in them. To write it in a blog, it sounds like a ridiculously petty complaint, but it's real. Typing anything correctly is a pain, and I have to program in C on it, goddamit.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/zaitcev/pic/00070ebx&quot; height=&quot;300&quot; /&gt;&lt;/div&gt;
&lt;p&gt;I was thinking about killing two birds with one stone by getting one with a built-in touchpad in the laptop position. My trusty old ALPS touchpad is great and all, but it developed a peculiar problem: its feet became hard with age and it slides. The common Adesco keyboards get mixed reviews and the listed sizes are contradictory or not credible. Amazon has &lt;a href=&quot;http://www.amazon.com/Mini-Keyboard-Touch-Black-built/dp/B0017K4FV2/&quot;&gt;one SolidTek type&lt;/a&gt; that seems like the right size and design. One problem though: $40 price. Isn't it a bit high for what seems like a rather dubious quality? It's not like I am on welfare, it's just... not an Apple or Daimler-Benz product to command a price like that.&lt;/p&gt;
&lt;p&gt;So, yeah.&lt;/p&gt;
&lt;p&gt;UPDATE: Peter Zijlstra pointed out the &lt;a href=&quot;http://www-307.ibm.com/pc/support/site.wss/MIGR-45849.html&quot;&gt;Lenovo UltraNav&lt;/a&gt;, which is definitely a quality unit, but it has all me (mis)features of a ThinkPad: left Ctrl and Fn are swapped, buttons that go along with the nipple offset the touchpad down, Esc is way far up. I already have a T400 and I hate all of that. Otherwise, it's perfect.&lt;/p&gt;
&lt;p&gt;UPDATE 2010/03/01: After some consideration, I went with the the &lt;a href=&quot;http://www.amazon.com/gp/product/B000F1YJ92/&quot;&gt;IBM keyboard&lt;/a&gt; because of (a) quality and (b) 100% key pitch.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/zaitcev/pic/00071d8a&quot; height=&quot;277&quot; /&gt;&lt;/div&gt;
&lt;p&gt;True, it has all the disadvantages of the Thinkpad layout, but at least to type on it is not painful. BTW, no Microsoft button.&lt;/p&gt;
&lt;p&gt;Oh, and the ALPS touchpad is finally retired after 13 years of service without reproach. It probably is the oldest computer peripheral in the house by far, because usually I recycle ruthlessly.&lt;/p&gt;</description>
	<pubDate>Tue, 16 Feb 2010 06:11:00 +0000</pubDate>
</item>
<item>
	<title>Rusty Russell: Followup: lrzip</title>
	<guid>http://rusty.ozlabs.org/?p=81</guid>
	<link>http://rusty.ozlabs.org/?p=81</link>
	<description>&lt;p&gt;&lt;em&gt;Mikael&lt;/em&gt;﻿ &lt;a href=&quot;http://rusty.ozlabs.org/?p=75#comment-163&quot;&gt;noted&lt;/a&gt; in my &lt;a href=&quot;http://rusty.ozlabs.org/?p=75&quot;&gt;previous post&lt;/a&gt; that Con Kolivas&amp;#8217;s &lt;a href=&quot;http://ck.kolivas.org/apps/lrzip/&quot;&gt;lrzip&lt;/a&gt; is another interesting compressor.  In fact, Con has already done a simple 64-bit enhance of rzip for lrzip, and on our example file it gets 56M vs 55M for xz (lrzip in raw mode, followed by xz, gives 100k worse than just using lrzip: lrzip already uses lzma).&lt;/p&gt;
&lt;p&gt;Assuming no bugs in rzip, the takeaway here is simple: rzip should not attempt to find matches within the range that the backend compressor (900k for bzip2 in rzip, 32k for gzip, megabytes for LZMA as used by lrzip).  The backend compressor will do a better job (as shown by similar results with lrzip when I increase the hash array size so it finds more matches: the resulting file is larger).&lt;/p&gt;
&lt;p&gt;The rzip algorithm is good at finding matches over huge distances, and that is what it should stick to.  Huge here == size of file (rzip does not stream, for this reason).  And this implies only worrying about large matches over huge distances (the current 32 byte minimum is probably too small).  The current version of rzip uses an mmap window so it never has to seek, but this window is artificially limited to 900MB (or 60% of mem in lrzip).   If we carefully limit the number of comparisons with previous parts of the file, we may be able to reduce them to the point where we don&amp;#8217;t confuse the readahead algorithms and thus get nice performance (fadvise may help here too) whether we are mmaped or seeking.&lt;/p&gt;
&lt;p&gt;I like the idea that rzip should scale with the size of the file being compressed, not make assumptions about today&amp;#8217;s memory sizes.  Though some kind of thrash detection using mincore might be necessary to avoid killing our dumb mm systems :(&lt;/p&gt;</description>
	<pubDate>Tue, 16 Feb 2010 01:21:58 +0000</pubDate>
</item>
<item>
	<title>Pete Zaitcev: Report from the proprietary cesspool</title>
	<guid>http://zaitcev.livejournal.com/199804.html</guid>
	<link>http://zaitcev.livejournal.com/199804.html</link>
	<description>&lt;p&gt;I mostly read the &lt;a href=&quot;http://cacm.acm.org/magazines/2010/2/69354-a-few-billion-lines-of-code-later/fulltext&quot;&gt;article about Coverity's experience in the trenches&lt;/a&gt; as something I would read at &lt;a href=&quot;http://thedailywtf.com/&quot;&gt;The Daily WTF&lt;/a&gt;. Which I don't read, let alone daily: it's too far removed from my world. Still, some of that may come handy one day. Like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;i&gt;How to handle cluelessness.&lt;/i&gt; You cannot often argue with people who are sufficiently confused about technical matters; they think you are the one who doesn't get it. They also tend to get emotional. Arguing reliably kills sales. What to do? One trick is to try to organize a large meeting so their peers do the work for you. The more people in the room, the more likely there is someone very smart and respected and cares (about bugs and about the given code), can diagnose an error (to counter arguments it's a false positive), has been burned by a similar error, loses his/her bonus for errors, or is in another group (another potential sale).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But other than that, bah humbug. My universe is gcc (or maybe LLVM at the most). The heroic tales of fighting people who write C in StudlyCaps mean nothing to me. The only real import of the article is how Sparse needs more attention. If nothing else, Free Software developers need to counter-patent everything in Sparse for when Coverity comes for us, we'll be ready.&lt;/p&gt;</description>
	<pubDate>Mon, 15 Feb 2010 19:53:08 +0000</pubDate>
</item>
<item>
	<title>Rusty Russell: xz vs rzip</title>
	<guid>http://rusty.ozlabs.org/?p=75</guid>
	<link>http://rusty.ozlabs.org/?p=75</link>
	<description>&lt;p&gt;As the kernel archive debates replacing .bz2 files with .xz, I took a brief glance at &lt;a href=&quot;http://en.wikipedia.org/wiki/Xz&quot;&gt;xz&lt;/a&gt;.  My test was to take a tarball of the linux kernel source (made from a recent git tree, but excluding the .git directory):&lt;/p&gt;
&lt;pre&gt;     linux.2.6.tar 395M&lt;/pre&gt;
&lt;p&gt;For a comparison, bzip2 -9, rzip -9 (which uses bzip2 after finding distant matches), and xz:&lt;/p&gt;
&lt;pre&gt;     linux.2.6.tar.bz2 67M
     linux.2.6.tar.rz 65M
     linux.2.6.tar.xz 55M&lt;/pre&gt;
&lt;p&gt;So, I hacked rzip with a -R option to output non-bzip&amp;#8217;d blocks:&lt;/p&gt;
&lt;pre&gt;     linux.2.6.tar.rawrz 269M&lt;/pre&gt;
&lt;p&gt;Xz on this file simulates what would happen if rzip used xz instead of libbz2:&lt;/p&gt;
&lt;pre&gt;     linux.2.5.tar.rawrz.xz 57M&lt;/pre&gt;
&lt;p&gt;Hmm, it makes xz worse!  OK, what if we rev up the conservative rzip to use 1G of memory rather than 128M max?  And the xz that?&lt;/p&gt;
&lt;pre&gt;     linux.2.6.tar.rawrz 220M
     linux.2.6.tar.rawrz.xz 58M&lt;/pre&gt;
&lt;p&gt;It actually gets worse as rzip does more work, implying xz is finding quite long-distance matches (bzip2 won&amp;#8217;t find matches over more than 900k).  So, rzip could only have benefit over xz on really huge files: but note that current rzip is limited on filesize to 4G so it&amp;#8217;s a pretty small useful window.&lt;/p&gt;</description>
	<pubDate>Mon, 15 Feb 2010 07:56:10 +0000</pubDate>
</item>
<item>
	<title>Evgeniy Polyakov: Elliptics network: 2.6.4 release</title>
	<guid>http://www.ioremap.net/407 at http://www.ioremap.net</guid>
	<link>http://www.ioremap.net/node/407</link>
	<description>&lt;p&gt;It took a while to prepare a new release of the distributed hash table storage &lt;a href=&quot;http://www.ioremap.net/projects/elliptics&quot;&gt;elliptics network&lt;/a&gt;, but here we go. This is still a minor version bump, although amount of changes is rather large for small update.&lt;/p&gt;
&lt;p&gt;Likely this will be the last releae in 2.6 release cycle, since in parallel we are cooking up a completely new versioning and merge logic as well as data synchronization. Btw, this release breaks to some degree that logic, but there is a tool to fix things up. It will be automated in the next versions.&lt;/p&gt;
&lt;p&gt;But let's dig into details and changelog:
&lt;ul&gt;
&lt;li&gt;Data integrity checker. Although a little bit undocumented (see example below), it allows to check whether given object is present in the storage with requested number of its copies. And if number of found objects does not correspond to config, it will automatically download and upload data with the desired IDs. Later this tool will also be able to upload data into the storage. This checker will be a base for background FSCK, which will be a simple script, which will parse metadata and start checker with given log. It also supports external library call for requests merge.&lt;/li&gt;
&lt;li&gt;[FCGI frontend]: cookie, timeouts, tunable headers, variable content types, more and clean XML.&lt;/li&gt;
&lt;li&gt;Rewritten network state and reconnection logic. This makes NATed box support trivial (we do support it), client nodes became even simpler than ever, less code, less bugs, everyone is happy.
&lt;/li&gt;&lt;li&gt;Debian debug package.&lt;/li&gt;
&lt;li&gt;Fair number of bug fixes. This version is used in production, if time permits I will describe this load in details later.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;&lt;p&gt;Modulo possible bugs, main work is concentrated on the filesystem checker. There are two problems to solve.&lt;br /&gt;
The first one is absence of transaction log made by requested transformation function, or in plain words - absence of copy of the object in the storage. This happens when some node went offline and returned empty or was replaced. Or did not return at all. In this case fsck application will check how many copies are present in the storage and automatially download one of them (the first one from config) and upload with given ID.&lt;/p&gt;
&lt;p&gt;Second issue to resolve is transaction merge. Elliptics network by default uses transactions for every update, so there is no object as is in the storage, instead reader will download transaction log, parse it and select transactions which cover requested object range. It is hidden in API of course, but it is possible to manually select needed transactions, for example to support versioning and data snapshots. As tasty effect two fully equal transactions (objects) will not use two times more space, since there are appopriate transaction reference counters.&lt;/p&gt;
&lt;p&gt;Currently there are multiple (5) merge strategies, but practice shows that they introduce more harm or misunderstanding at best, than actual goodness. So I decided to drop them all in favour of trivial timestamp based merge algorithm. Of course it is possible to merge transactions based on private algorithm, which can be called from fsck daemon. We have request to allow external modules to merge objects based on actual data.&lt;/p&gt;
&lt;p&gt;This version disables content synchronization during node joining. Instead admin has to call fsck application with externally stored log of the uploaded data to check whether things are ok and fixup what was broken. It will be automated and no external log will be required in the next versions.&lt;/p&gt;
&lt;p&gt;Fsck application log file should look like this:&lt;/p&gt;
&lt;pre&gt;
3 0,0,0 sha1,md5 object_name
&lt;/pre&gt;&lt;p&gt;
where '3' is object creation flags - without transactions, just like those created by FSCK frontend. Will be removed in the next version.&lt;br /&gt;
'0,0,0' is a placeholder for object parsing information meaning start,end,update_existing. Start and end are positions of the starting and ending symbol in the object_name used to generate ID. Zeroes mean automatic detection. Update_existing is not currently supported, in the next version if set will upload local file named object_name into the storage no matter if its copies are already present.&lt;br /&gt;
sha1,md5 - transformation functions used to generate ID from object_name. This setup uses two copies - each one created by appropriate hash.&lt;br /&gt;
object_name - name of the uploaded object. Its hash (or actually transformation of the name using presented functions, it is allowed to be some other function than plain hash) will be object ID.&lt;/p&gt;
&lt;p&gt;Stay tuned, work is boiling and results are very close!&lt;/p&gt;</description>
	<pubDate>Sun, 14 Feb 2010 17:38:58 +0000</pubDate>
</item>
<item>
	<title>Valerie Aurora: Sleeping with the enemy</title>
	<guid>http://valerieaurora.wordpress.com/?p=236</guid>
	<link>http://valerieaurora.wordpress.com/2010/02/13/sleeping-with-the-enemy/</link>
	<description>&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://www.fakesteve.net/2010/02/my-little-pony-offers-resignation-in-haiku-via-twitter.html&quot;&gt;Jonathan Schwartz&amp;#8217;s resignation via Twitter&lt;/a&gt; reminded me of a strange facet of Sun company culture: I&amp;#8217;ve never known so many married couples working for the same company.  Some them even worked on the same project together.  For the same boss.  From home.&lt;/p&gt;
&lt;p&gt;Now, the exact percentage of married couples in a company can&amp;#8217;t be used to compare companies directly &amp;#8211; after all, it depends heavily on things like industry, age, and local marriage laws &amp;#8211; but it seems linked to another facet of Sun company culture: Complete, almost embarrassing disconnect from public opinion.&lt;/p&gt;
&lt;p&gt;The post-Google standard company perks &amp;#8211; free food, on-site exercise classes, company shuttles &amp;#8211; make it trivial to speak only to fellow employees in daily life.  If you spend all day with your co-workers, socialize only with your co-workers, and then come home and eat dinner with &amp;#8211; you guessed it &amp;#8211; your co-worker, you might go several years without hearing the words, &amp;#8220;&lt;strong&gt;Run Solaris on my desktop?  Are you f&amp;#8212;ing kidding me?&lt;/strong&gt;&amp;#8220;&lt;/p&gt;
&lt;p&gt;Schwartz&amp;#8217;s &amp;#8220;the financial crisis did it&amp;#8221; explanation for Sun&amp;#8217;s demise is a symptom of an inbred company culture in which employees at all levels voluntarily isolated themselves from the larger Silicon Valley culture.  Tech journalists write incessantly about the exchange of expertise and best practice between companies as a major driver of the Bay area&amp;#8217;s success.  But you have to actually talk to your competition to do that &amp;#8211; over a beer, or maybe a pillow.&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/valerieaurora.wordpress.com/236/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/valerieaurora.wordpress.com/236/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/valerieaurora.wordpress.com/236/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/valerieaurora.wordpress.com/236/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/valerieaurora.wordpress.com/236/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/valerieaurora.wordpress.com/236/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/valerieaurora.wordpress.com/236/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/valerieaurora.wordpress.com/236/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/valerieaurora.wordpress.com/236/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/valerieaurora.wordpress.com/236/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=valerieaurora.wordpress.com&amp;blog=10337555&amp;post=236&amp;subd=valerieaurora&amp;ref=&amp;feed=1&quot; /&gt;</description>
	<pubDate>Sat, 13 Feb 2010 03:22:46 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: In six weeks from bare hardware to receiving BCCHs</title>
	<guid>http://laforge.gnumonks.org/weblog/2010/02/13#20100213-six_weeks_to_bcch</guid>
	<link>http://laforge.gnumonks.org/weblog/2010/02/13#20100213-six_weeks_to_bcch</link>
	<description>&lt;p&gt;
After six weeks of full-time hacking, with the help of a few friends, we have
made it to receiving actual BCCH data from a GSM cell.
&lt;/p&gt;
&lt;p&gt;
So what does this mean?  As I have indicated publicly at the 26C3 conference:
Now, that we have managed to create a working GSM network-side implementation
(OpenBSC) during the last year, we will proceed to do the same with the phone side.
&lt;/p&gt;
&lt;p&gt;
Initially we spent quite a bit of thinking on building our own custom hardware.
But while planning for the first prototype, we realized that it would simply
distract us too much from what we actually wanted to do.  We don't want to take
care of component sourcing, prototype generations, quality assurance in
production, production testing, etc. -- All we want is to write a Free Software
GSM protocol implementation for a phone.
&lt;/p&gt;
&lt;p&gt;
Unfortunately (as usually in the industry), the silicon and device makers do
not publish sufficient documentation about their devices to enable third-party
developers to go ahead and write their own software:  The never ending 
problem of Free Software in many areas beyond more-or-less standardized
hardware like in the PC industry.
&lt;/p&gt;
&lt;p&gt;
So, if you want to write Free Software for such a device, you have two options:
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Reverse engineering&lt;/b&gt; the existing hardware and writing your code based on
that information&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Building your own hardware&lt;/b&gt; and then writing the software you wanted
to write.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
I've been involved in both approaches multiple times while looking only at the
application processor (the PDA side) of mobile phones: OpenEZX and gnufiish are
two more or less abandoned projects aimed at reverse engineering.  Openmoko was
the project that had to build its own hardware as a dependency to be fulfilled
before writing software.
&lt;/p&gt;
&lt;p&gt;
If you're not a company and don't want to sell anything, the reverse
engineering approach looks more promising.  You can piggy-back on existing
hardware, don't need to take care of sourcing/production/certification/shipping
and other tedious bits.
&lt;/p&gt;
&lt;p&gt;
If you are a company and want to generate revenue, then of course you want
to build the hardware and ship it, as it is what you derive your profits
from.
&lt;/p&gt;
&lt;p&gt;
So, just to be clear on this:  Neither OpenEZX, nor gnufiish nor Openmoko were
ever about writing Free Software for the GSM baseband processor, i.e. the beast
that exchanges messages with the actual GSM operator network.  But this is what
we're working on right now.
&lt;/p&gt;
&lt;p&gt;
It's about time, don't you agree? after 19 years of only proprietary software
on the baseband chips in billions of phones, it is more than time for bringing
the shining light of Freedom into this area of computing.
&lt;/p&gt;
&lt;p&gt;
To me personally, it is the holy grail of Free Software: Driving it beyond the
PC, beyond operating systems and application programs.  Driving it into the
billions of embedded devices where everyone is stuck with proprietary software
without an alternative.  Everybody takes it for granted to run megabytes of
proprietary object code, without any memory protection, attached to an
insecure public network (GSM).  Who would do that with his PC on the Internet,
without a packet filter, application level gateways and a constant flow
of security updates of the software? Yet billions of people do that with
their phones all the time.
&lt;/p&gt;
&lt;p&gt;
I hope with our work there will be a time where the people who paid for their
phones will be able to actually own and control what it does.  If I have paid
for it, I determine what software it runs and when it send which message or
doesn't.
&lt;/p&gt;
&lt;p&gt;
Oh, getting back to what our work: It will be published as soon as it is
sufficiently stable and fit for public consumption.  You won't be able
to make phone calls yet, but we'll get there at some later point this
year.
&lt;/p&gt;</description>
	<pubDate>Sat, 13 Feb 2010 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Paul E. Mc Kenney: Parallel Programming: Selective Struggling</title>
	<guid>http://paulmck.livejournal.com/18041.html</guid>
	<link>http://paulmck.livejournal.com/18041.html</link>
	<description>An Eminent Reader privately indicated some distaste for the non-technical nature of recent &lt;a href=&quot;http://paulmck.livejournal.com/tag/is%20parallel%20programming%20hard&quot;&gt;parallel programming&lt;/a&gt; posts.  Given that many of the obstacles to successful development of parallel software are non-technical, there will be future non-technical posts, but there is no reason not to take a technical break from these issues.  And so, just for you, Eminent Reader, I present this parallel programming puzzle.&lt;br /&gt;&lt;br /&gt;This puzzle stems from some researchers&amp;rsquo; very selective struggles with parallel algorithms.  Of course, it should be no surprise that many people, researchers and developers included, will struggle quite happily with their &amp;ldquo;baby&amp;rdquo;, but will even more happily bad-mouth competing approaches, even when (or perhaps especially when) those approaches requiring much less struggling.  And yes, some might accuse me of favoring &lt;a href=&quot;http://www.rdrop.com/users/paulmck/RCU&quot;&gt;RCU&lt;/a&gt; in just this manner, but &lt;a href=&quot;http://www.kernel.org/pub/linux/kernel/people/paulmck/Answers/IsParallelProgrammingHard/SS-RCU.html&quot;&gt;this&lt;/a&gt; is my answer to the likes of them.&lt;br /&gt;&lt;br /&gt;Such selective struggling seems to have given rise to an interesting urban legend within the concurrency research community, namely that allowing concurrent access to both ends of a &lt;a href=&quot;http://en.wikipedia.org/wiki/Double-ended_queue&quot;&gt;double-ended queue&lt;/a&gt; is difficult when using locking.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.kernel.org/pub/linux/kernel/people/paulmck/Answers/IsParallelProgrammingHard/SS-deque.html&quot;&gt;Can you come up with a lock-based solution that permits the two ends of a double-ended queue to be manipulated concurrently?&lt;/a&gt;</description>
	<pubDate>Fri, 12 Feb 2010 23:33:32 +0000</pubDate>
</item>
<item>
	<title>Rusty Russell: Code review: libreplace</title>
	<guid>http://rusty.ozlabs.org/?p=61</guid>
	<link>http://rusty.ozlabs.org/?p=61</link>
	<description>&lt;p&gt;libreplace is the SAMBA library (also used in ctdb) to provide working implementations of various standard(ish) functions on platforms where they are missing or flawed.  It was initially created in 1996 by Andrew Tridgell based on various existing replacement hacks in utils.c (see commit &lt;a title=&quot;Samba replace.c initial commit&quot; href=&quot;http://gitweb.samba.org/?p=samba.git;a=commit;h=3ee9d454&quot;&gt;3ee9d454&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The basic format of replace.h is:&lt;/p&gt;
&lt;pre&gt;    #ifndef HAVE_STRDUP
    #define strdup rep_strdup
    char *rep_strdup(const char *s);
    #endif&lt;/pre&gt;
&lt;p&gt;If configure fails to identify the given function X, rep_X is used in its place.  replace.h has some such declarations, but most have migrated to the system/ include directory which has loosely grouped functions by categories such as &lt;tt&gt;dir.h&lt;/tt&gt;, &lt;tt&gt;select.h&lt;/tt&gt;, &lt;tt&gt;time.h&lt;/tt&gt;, etc.  This works around the &amp;#8220;which header(s) do I include&amp;#8221; problem as well as guaranteeing specific functions.&lt;/p&gt;
&lt;p&gt;Other than reading this code for a sense of Unix-like paleontology (and it&amp;#8217;s so hard to tell when to remove any of these helpers that cleanups are rare) we can group replacements into three categories:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Helper functions or definitions which are missing, eg. &lt;tt&gt;strdup&lt;/tt&gt; or &lt;tt&gt;S_IRWXU&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;&amp;#8220;Works for me&amp;#8221; hacks for platform limitations, which make things compile but are not general, and&lt;/li&gt;
&lt;li&gt;Outright extensions, such as &lt;tt&gt;#define ZERO_STRUCT(x) memset((char *)&amp;amp;(x), 0, sizeof(x))&lt;/tt&gt; or Linux kernel inspired &lt;tt&gt;likely()&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Since it&amp;#8217;s autoconf-based, it uses the standard &lt;tt&gt;#ifdef&lt;/tt&gt; instead of &lt;tt&gt;#if&lt;/tt&gt; (a potential source of bugs, as I&amp;#8217;ve &lt;a title=&quot;#ifdef and -Wundef&quot; href=&quot;http://ozlabs.org/~rusty/index.cgi/tech/2008-01-04.html&quot;&gt;mentioned before&lt;/a&gt;).  I&amp;#8217;ll concentrate on the insufficiently-general issues which can bite users of the library, and a few random asides.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;tt&gt;#ifndef HAVE_VOLATILE&lt;/tt&gt; ?  I can&amp;#8217;t believe Samba still compiles on a compiler that doesn&amp;#8217;t support volatile (this just defines &lt;tt&gt;volatile&lt;/tt&gt; away altogether)  If it did no optimizations whatsoever, volatile might not matter, but I&amp;#8217;m suspicious&amp;#8230;&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;typedef int bool;&lt;/tt&gt; is a fairly common workaround for lack of bool, but since pointers implicitly cast to bool but can get truncated when passed as an int, it&amp;#8217;s a theoretical trap.  ie. (bool)0&amp;#215;1234567800000000 == true, (int)0&amp;#215;1234567800000000 == 0.&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;#if !defined(HAVE_VOLATILE)&lt;/tt&gt; is the same test as above, repeated.  It&amp;#8217;s still as bad an idea as it was 186 lines before :)&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;ZERO_STRUCT&lt;/tt&gt;, &lt;tt&gt;ZERO_ARRAY&lt;/tt&gt; and &lt;tt&gt;ARRAY_SIZE&lt;/tt&gt; are fairly sane, but could use gcc extensions to check their args where available.  I implemented this for ARRAY_SIZE in the Linux kernel and in CCAN.  Making sure an arg is a struct is harder, but we could figure something&amp;#8230;&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;#define PATH_MAX 1024&lt;/tt&gt; assumes that systems which don&amp;#8217;t define &lt;tt&gt;PATH_MAX&lt;/tt&gt; probably have small path limits.  If it&amp;#8217;s too short though, it opens up buffer overruns. Similarly for &lt;tt&gt;NGROUPS_MAX&lt;/tt&gt; and &lt;tt&gt;PASSWORD_LENGTH&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;tt&gt;dlopen&lt;/tt&gt; replacement is cute: it uses &lt;tt&gt;shl_load&lt;/tt&gt; where available (Google says &lt;a href=&quot;http://www.docs.hp.com/en/B2355-90695/shl_load.3X.html&quot;&gt;HPUX&lt;/a&gt;), but &lt;tt&gt;dlerror&lt;/tt&gt; simply looks like so:
&lt;pre&gt;    #ifndef HAVE_DLERROR
    char *rep_dlerror(void)
    {
     	return &quot;dynamic loading of objects not supported on this platform&quot;;
    }
    #endif&lt;/pre&gt;
&lt;p&gt; This cute message for runtime failure allows your code to compile, but isn&amp;#8217;t helpful if dlopen was a requirement.  Also, this should use &lt;tt&gt;strerror&lt;/tt&gt; for &lt;tt&gt;shl_load&lt;/tt&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;havenone.h&lt;/tt&gt; is (I assume) a useful header for testing all the replacements at once: it undefines all HAVE_ macros.  Unfortunately it hasn&amp;#8217;t been updated, and so it isn&amp;#8217;t complete (unused code is buggy code).&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;inet_pton&lt;/tt&gt; is credited to Paul Vixie 1996.  It&amp;#8217;s K&amp;amp;R-style non-prototype, returns an int instead of bool, and doesn&amp;#8217;t use strspn &lt;tt&gt;((pch = strchr(digits, ch)) != NULL)&lt;/tt&gt; or (better) atoi.  But it checks for exactly 4 octets, numbers &amp;gt; 255, and carefully doesn&amp;#8217;t write to &lt;tt&gt;dst&lt;/tt&gt; unless it succeeds.  I would have used sscanf(), which wouldn&amp;#8217;t have caught too-long input like &amp;#8220;1.2.3.4.5&amp;#8243;.  OTOH, it would catch &amp;#8220;127&amp;#8230;1&amp;#8243; which this would allow. But making input checks more strict is a bad way to be popular&amp;#8230;&lt;/li&gt;
&lt;li&gt;Tridge&amp;#8217;s opendir/readdir/telldir/seekdir/closedir replacement in &lt;a href=&quot;http://gitweb.samba.org/?p=samba.git;a=blob;f=lib/replace/repdir_getdents.c;h=afc634a79621247a49dd48d92aa1c099440f1fc5;hb=HEAD&quot;&gt;repdir_getdents.c&lt;/a&gt; is a replacement for broken telldir/seekdir in the presence of deletions, and a workaround for (older?) BSD&amp;#8217;s performance issues.  It is in fact never used, because the configure test has had &lt;tt&gt;#error _donot_use_getdents_replacement_anymore&lt;/tt&gt; in it since at least 2006 when the Samba4 changes were merged back into a common library!&lt;/li&gt;
&lt;li&gt;repdir_getdirents.c is the same thing, implemented in terms of getdirents rather than getdents; it&amp;#8217;s still used if the telldir/delete/seekdir test fails.&lt;/li&gt;
&lt;li&gt;replace.c shows some of the schizophrenia of approaches to replacement: &lt;tt&gt;rep_ftruncate&lt;/tt&gt; #errors if there&amp;#8217;s no &lt;tt&gt;chsize&lt;/tt&gt; or &lt;tt&gt;F_FREESP&lt;/tt&gt; ioctl which can be used instead, but &lt;tt&gt;rep_initgroups&lt;/tt&gt; returns -1/ENOSYS in the similar case.  Best would be not to implement replacements if none can be implemented, so compile will fail if they&amp;#8217;re used.&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;rep_pread&lt;/tt&gt; and &lt;tt&gt;rep_pwrite&lt;/tt&gt; are classic cases of the limitations of replacement libraries like this.  As &lt;tt&gt;pread&lt;/tt&gt; is not supposed to effect the file offset, and file offsets are shared with children or dup&amp;#8217;d fds.  There&amp;#8217;s no sane general way to implement this, and in fact tdb has to test this in &lt;a href=&quot;http://git.samba.org/?p=samba.git;a=blob;f=lib/tdb/common/open.c&quot;&gt;tdb_reopen_internal&lt;/a&gt;.  I would implement a read_seek/write_seek which are documented not to have these guarantees.  I remember Tridge ranting about glibc doing the same kind of unsafe implementation of &lt;a href=&quot;http://www.opengroup.org/onlinepubs/000095399/functions/select.html&quot;&gt;pselect&lt;/a&gt; :)&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;snprintf&lt;/tt&gt; only rivals qsort-with-damn-priv-pointer for pain of &amp;#8220;if only they&amp;#8217;d done the original function right, I wouldn&amp;#8217;t have to reimplement the entire thing&amp;#8221;. I&amp;#8217;ll avoid the glibc-extracted strptime as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;m not sure Samba compiles on as many platforms as it used to; Perl is probably a better place for this kind of library to have maximum obscure-platform testing.  But if I were to put this in CCAN, this would make an excellent start.&lt;/p&gt;</description>
	<pubDate>Fri, 12 Feb 2010 08:53:28 +0000</pubDate>
</item>
<item>
	<title>Pete Zaitcev: Cloud Forum 2010</title>
	<guid>http://zaitcev.livejournal.com/199539.html</guid>
	<link>http://zaitcev.livejournal.com/199539.html</link>
	<description>&lt;p&gt;I'm &quot;attending&quot; the &lt;a href=&quot;http://www.redhat.com/cloudcomputingforum/&quot;&gt;Red Hat Cloud Thing&lt;/a&gt;. The Deltacloud guy is presenting, Jeff Garzik is next with our own Hail. To get this working, I had to add thomson-webcast.net to Flash whitelist, otherwise the site said &quot;No Scripting&quot;. It's about time somebody started a company streaming presos in Theora or something...&lt;/p&gt;</description>
	<pubDate>Wed, 10 Feb 2010 18:44:37 +0000</pubDate>
</item>
<item>
	<title>Kernel Podcast: 2010/02/07 Linux Kernel Podcast</title>
	<guid>http://www.kernelpodcast.org/?p=480</guid>
	<link>http://www.kernelpodcast.org/2010/02/10/20100207-linux-kernel-podcast/</link>
	<description>&lt;p&gt;&lt;strong&gt;Audio&lt;/strong&gt;: &lt;a href=&quot;http://media.libsyn.com/media/jcm/linux_kernel_podcast_20100207.mp3&quot;&gt;http://media.libsyn.com/media/jcm/linux_kernel_podcast_20100207.mp3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This podcast is brought to you by the awesome power of Jason Wessel&amp;#8217;s kgdb patches, helping to support those who believe in kernel debuggers find hard to reach kernel bugs since 2009. Kernel debuggers: the way of the future.&lt;/p&gt;
&lt;p&gt;For the weekend of February 7th, 2010, I&amp;#8217;m Jon Masters with a summary of the week&amp;#8217;s LKML traffic.&lt;/p&gt;
&lt;p&gt;In today&amp;#8217;s issue: Linux 2.6.33-rc7, regressions, Google Summer of Code, IMA, OOM, and sys_membarrier.&lt;/p&gt;
&lt;p&gt;Linux 2.6.33-rc7. Linus Torvalds announced the 2.6.33-rc7 release of the Linux kernel on Saturday, February 6th, 2010 at 2:44pm (14:44) Best Coast Time (PST). In his announcement, Linus remarked, &amp;#8220;I have to admit that I wish we had way fewer regressions listed by this time, so I hereby would like to point every developer to&amp;#8221; a link to a recent post to the linux wireless mailing list archive on gmane.org showing a copy of a recent email from Rafael J. Wysocki detailing known kernel regressions between 2.6.32 and 2.6.33-rc6 as posted originally to the LKML. He added, &amp;#8220;But we&amp;#8217;ve certainly fixed a few things, and it&amp;#8217;s been a week, so here&amp;#8217;s -rc7&amp;#8243;. Most of the changes are in PowerPC defconfigs (default configs), but there are even more i915 updates, radeon KMS updates, and lots of other smaller bits all over the tree. Linus also wondered (in another email) whether it was worth making the .gz files any more given that bzip2 has been around more than long enough by now. Some thought the gzip files were still useful on systems without bzip2 or for some really slow systems that apparently handle gzip files more easily.&lt;/p&gt;
&lt;p&gt;Regressions. Rafael J. Wysocki followed up to Linus&amp;#8217; 2.6.33-rc7 announcement (as he had also done with 2.6.33-rc6) with a list of outstanding regressions beteen 2.6.32 and 2.6.33-rc7. There are currently 20 &amp;#8220;unresolved&amp;#8221; issues in the list of regressions given. Rafael also noted that Maciej Rutecki has, &amp;#8220;generously volunteered to work on the tracking of kernel regressions&amp;#8221;. The work done by Rafael (and now, hopefully Maciej also) is very valuable to the community and we really do owe them our gratitude for helping out. Arjan van de Ven also posted a list of oops and warning reports on kerneloops.org from the week, including a very common ext4/quota issue in Fedora.&lt;/p&gt;
&lt;p&gt;Google Summer of Code. Luis Rodriguez stated that, &amp;#8220;Google has confirmed it will have a Google Summer of Code for 2010&amp;#8243;, then mentioned that last year&amp;#8217;s effort (4 suggested projects, of which 3 were accepted) resulted in only one success. Witold Sowa followed up saying that he didn&amp;#8217;t know he was the only student who completed his project, but that the work to add an AP mode to NetworkManager, &amp;#8220;with use of wpa_supplicant&amp;#8217;s newly developed AP mode&amp;#8221; was relatively easy to accomplish and so he had worked on other things also. Apparently, the initial GSoC work is now available in NetworkManager. Nonetheless, it sounds as if Luis is keen to see a higher than 33% success rate if any entries are accepted this year under the Linux Foundation.&lt;/p&gt;
&lt;p&gt;IMA. Mimi Zohar replied to an email from Shi Weihua concerning a NULL pointer deference bug in the IMA security code (ima_file_free), which Al Viro and others had previously discussed solutions for.&lt;/p&gt;
&lt;p&gt;OOM. Lubos Lunak and David Rientjes resurrected the OOM killer discussion again after Lubos posted some analysis of various KDE processes running on his system, and wondered why the OOM killer uses VmSize rather than RSS to determine tasks that should be killed (in other words, why should it not favor tasks actually resident in memory at the time?). This discussion has been had recently, and David Rientjes explained that the kernel favors overall VmSize in its calculations so as to catch memory leakers as a preference (which are often not resident at the time). David did seem to like the suggestion of catching the the child with the highest badness calculation before killing its parent, and posted an untest patch. He also suggested that the KDE process tree example was &amp;#8220;a textbook case for using /proc/pid/oom_adj to ensure a critical task, such as kdeinit is to you, is protected from getting selected for oom kill&amp;#8221;. Lubos replied with some very good points about how simply setting oom_adj doesn&amp;#8217;t scale, and Balbir Singh was amongst those still favoring a switch to RSS-like accounting but with support for shared pages (for example &amp;#8220;PSS&amp;#8221;) eventually. Rik van Riel noted that he had no strong opinion one way or the other. David posted various patches proposing an alternative fine grained oom_adj mechanism.&lt;/p&gt;
&lt;p&gt;sys_membarrier. Mathieu Desnoyers posted a three part patch series implementing sys_membarrier, a new system call that can be used to &amp;#8220;distribute the overhead of memory barriers asymmetrically&amp;#8221;. In particular, he wants it for his urcu userspace RCU implementation (for use within the synchronize_rcu call). Sensibly, Mathieu proposes incremental additions to each architecture (even though he believes that it &amp;#8220;should be portable to other architectures as-is&amp;#8221;), reserving the system call numbers now, then implementing gradually.&lt;/p&gt;
&lt;p&gt;In today&amp;#8217;s miscellaneous items: Matti Aarnio posted to let everyone know that a recently discovered hole in the bayesian filtering system as used by the vger.kernel.org mailing list server to reduce SPAM has been plugged (it had been possible to reach the list using a specific &amp;#8220;backend&amp;#8221; majordomo domain), Catalin Marinas decided to simply patch the USB HCD driver that had resulted in cache coherency problems when using USB storage (and noted that a followup posting to linux-arch would call for a flush_dcache_range function), some miscallenous rewrites of obsolete syscall handlers to use generic versions from Christoph Hellwig, a request for an opinion on mergeing the kFIFO rewrite in 2.6.34 from Stefani Seibold, a potential issue with the kernel implementation of LZO compression reported by Nigel Cunningham (for which he will switch back to LZF in TuxOnIce again for the moment), Stephen Rothwell wondered aloud whether Linus would really be interested in taking the percpu changes currently sigging in percpu &amp;#8220;next&amp;#8221;, and Mathieu Desnoyers announced he is switching email from his academic address in Montreal (where he recently completed his PhD around LTTng) to a consulting firm he is involved with at http://efficios.com.&lt;/p&gt;
&lt;p&gt;In today&amp;#8217;s announcements: Greg Kroah-Hartman posted review patches for the 2.6.32.8 stable series kernel.&lt;/p&gt;
&lt;p&gt;Scott James Remnant announced the release of upstart version 0.6.5. It includes a large number of fixes, amongst which is the completion of the splitting out of libnih into its own project. There is a new /sbin/reload command for reloading upstart daemons, a restored sync() before reboot, improved documentation, and more goodies.&lt;/p&gt;
&lt;p&gt;Junio C Hamano announced version 1.7.0.rc2 of the Git SCM, which includes a number of forthcoming behavior changes as mentioned in this podcast when discussing the rc1 release from the previous week.&lt;/p&gt;
&lt;p&gt;Subrata Modak announced that the Linux Test Project (LTP) for January 2010 has been released. It now contains over 3000 tests. Separately, Garrett Cooper noted a rather severe bug in the top level LTP Makefile that could result in an &amp;#8220;rm -rf /&amp;#8221; in the wrong circumstances, suggesting that all LTP users comment out three lines from that file.&lt;/p&gt;
&lt;p&gt;Willy Tarreau (re-)announced the release of 2.4.37.9. The previos 2.4.37.8 hadn&amp;#8217;t actually contained the required e1000 backport with a CVE fix that had triggered the previous release. Willy noted, &amp;#8220;I don&amp;#8217;t know how I managed to do that because it once was OK and I could successfully build it. Well, whatever I did, the result is wrong and the issue it was supposed to fix is still present in 2.4.37.8. So here comes 2.4.37.9 with the real fix this time&amp;#8221;.&lt;/p&gt;
&lt;p&gt;The latest kernel release is 2.6.33-rc7.&lt;/p&gt;
&lt;p&gt;Andrew Morton posted an mm-of-the-moment (mmotm) for 2010-02-03-20-09.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s a summary of today&amp;#8217;s Linux Kernel Mailing List traffic, for further information visit www.kernel.org. I&amp;#8217;m Jon Masters.&lt;/p&gt;</description>
	<pubDate>Wed, 10 Feb 2010 17:05:40 +0000</pubDate>
</item>
<item>
	<title>Kernel Podcast: 2010/01/31 Linux Kernel Podcast</title>
	<guid>http://www.kernelpodcast.org/?p=478</guid>
	<link>http://www.kernelpodcast.org/2010/02/10/20100131-linux-kernel-podcast/</link>
	<description>&lt;p&gt;&lt;strong&gt;Audio&lt;/strong&gt;: &lt;a href=&quot;http://media.libsyn.com/media/jcm/linux_kernel_podcast_20100131.mp3&quot;&gt;http://media.libsyn.com/media/jcm/linux_kernel_podcast_20100131.mp3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This podcast is brought to you by the power of Al Viro&amp;#8217;s ima_file_free fix, saving in-progress crashed podcast recordings since February 2010, and now powering the all new 2010 2.6.33 series Linux kernel with all wheel drive.&lt;/p&gt;
&lt;p&gt;For January 31st, 2010, I&amp;#8217;m Jon Masters with a summary of the week&amp;#8217;s LKML traffic.&lt;/p&gt;
&lt;p&gt;In this week&amp;#8217;s issue: Linux 2.6.33-rc6, ide2libata, kFIFO, lock types, netfilter connection tracking, netperf regressions, sparse, and USB storage.&lt;/p&gt;
&lt;p&gt;Linux 2.6.33-rc6. Linus Torvalds announced Linux 2.6.33-rc6 on Friday January 29th 2010 at 2:20pm (14:20) Best Coast Time (PST), again describing it as containing &amp;#8220;nothing earch-shattering&amp;#8221;. About 50% of the changes were architecture updates, and 40% were drivers, with the remaining being mostly filesystem and networking updates. He called for people seeing regressions to begin making &amp;#8220;loug noises&amp;#8221;, since &amp;#8216;things mostly should &amp;#8220;just work&amp;#8221;&amp;#8216;.&lt;/p&gt;
&lt;p&gt;ide2libata. Bartlomiej Zolnierkiewicz posted a 68 part patch series entitled &amp;#8220;ide2libata&amp;#8221; that does roughly what it sounds like &amp;#8211; it facilitates a conversion of sorts such that legacy IDE driver code can use a small &amp;#8220;translation&amp;#8221; layer to share source with the libata codebase. It doesn&amp;#8217;t remove IDE but it does (allegedly) make it far easier to maintain both until IDE finally does go away. Alan Cox and others weren&amp;#8217;t convinced. Alan thought that, &amp;#8220;it will be a nightmare for maintenance with all the includes and the like plus the ifdefs making it very hard to read the drivers and maintain them&amp;#8221;. He saw value in the effort, but more as a means to find subtle differences between drivers, and thought IDE was &amp;#8220;drifting&amp;#8221; a little too much to truly be described as in &amp;#8220;maintainance mode&amp;#8221; at this point.&lt;/p&gt;
&lt;p&gt;kFIFO. Stefani Seibold posted an &amp;#8220;enhanced reimplementation of the kfifo API&amp;#8221;, which is apparently the last in the series of RFC patches intended to rework the kFIFO implementation (to be generic) without changing the existing API. Stefani included some analysis of the impact of the patch upon text section usage and found that it wasn&amp;#8217;t much larger, but that the &amp;#8220;hand optimized&amp;#8221; inline code was substantially faster than the previous implementation.&lt;/p&gt;
&lt;p&gt;lock types. Mitake Hitoshi posted an RFC patch (most for the review of Peter Zijlstra) that adds lock type information to the output of lockdep, as used by tools such as perf. As he points out, &amp;#8220;Of course, as you told, type of lock dealing with is clear for human. But it is not clear for programs like perf lock&amp;#8221;. On a related note, Frederic Weisbecker stated that he really liked the perf lock report layout, but would love to see a tree view that &amp;#8220;can tell you which lock is delaying another one&amp;#8221;. He gave varous examples of how this might be visualized as well as describing the benefits.&lt;/p&gt;
&lt;p&gt;netfilter connection tracking. I discovered that one of my test systems was falling over on all recent 2.6 series kernels, when using KVM. I wasn&amp;#8217;t alone (as I would find out later, looking at Fedora bug reports). The backtrace was variable, but typically involved some kind of IPv6 packet. After mailing the netfilter guys (&amp;#8221;PROBLEM: reproducible crash KVM+nf_conntrack all recent 2.6&amp;#8243;) and getting some general advice, I spent the entire weekend solid debugging the issue with the aid of Jason Wessel&amp;#8217;s kgdb-next tree. The problem was that libvirt (the KVM server management daemon) would attempt to create a second network namespace (netns) on startup &amp;#8211; just to see if it would be possible to also support containers &amp;#8211; and autostart KVM guests started at that moment would crash because conntrack was missing various chunks of support code for dealing with multiple namespaces. This resulted in hash corruption, kmem caches that would get corrupted, and eventual panics.&lt;/p&gt;
&lt;p&gt;netperf regressions in 2.6.33-rc1. Lin Ming performed a bisect analysis and determined that a &amp;#8220;sched: Rate-limit newidle&amp;#8221; commit had once again introduced a loopback regression (on the order of 50%) in the netperf benchmark, when run on an Intel Nehalem system. Lin assumed that this was due a large amount of rescheduling IPI (inter-processor interrupt) traffic, as evidenced by the perf top data, and /proc/interrupts output. Others could not reproduce this issue.&lt;/p&gt;
&lt;p&gt;sparse. Tejun Heo posted a series of percpu patches intended to instrument modular use of percpu data, for the benefit of the sparse source checker utility recognizing that such data lives in a separate data section. Tejun included various descriptions within the individual patches, which only affect building when using the sparse checking tool.&lt;/p&gt;
&lt;p&gt;USB mass storage. Catalin Marinas posted a message (mostly aimed at Matthew Dharm) concerning cache coherency of the kernel&amp;#8217;s USB mass storage driver. In the case of Harvard Architecture (split I/D caches) ARM processor cores, when using PIO based USB host controllers, root mounted filesystems generating a page fault will only fault the requested page into the data cache, but the USB storage driver fails to call flush_dcache_page to ensure I-cache visibility and results in incoherency between the two. Catalin asked Matthew if he might add support for explicit flushes when doing PIO rather than DMA for IO. Oliver Neukum thought that this belonged in the HCD driver rather than USB storage, due to the wide range of possible underlying layers beneath USB storage, and Matthew Dharm agreed, &amp;#8220;Given that an HCD can choose, on the fly, it it&amp;#8217;s using DMA or PIO, the HCD driver is the only place to reasonably put any cache-synchronization code. That said, what do other SCSI HCDs do?&amp;#8221;.&lt;/p&gt;
&lt;p&gt;In today&amp;#8217;s miscellaneous items: Chinang Ma posted a comparitive performance analysis between RHEL5.4 kernel 2.6.18 and upstream 2.6.33-rc4 in which he found a 0.8% OLTP performance regression, Simon Kagstrom send a &amp;#8220;provoke crash&amp;#8221; mail in which he described a module to force crashes for testing, Mark Lord wondered why he was seeing a large number of &amp;#8220;page allocation failure&amp;#8221; messages on upgrade from 2.6.31.5 to 2.6.32.5, a continuation of previous style discussions concerning 80 character line length &amp;#8220;limits&amp;#8221; in the kernel, a question from Andi Kleen as to whether the PnP probe code (for PS/2 mice in this particular instance) is racy as he experiences variable probe behavior, Christoph Lameter posted version 15 of &amp;#8220;one of these year long projects to address fundamental issues in the Linux VM&amp;#8221;, aka &amp;#8220;SLAB fragmentation reduction&amp;#8221;,Alex Chiang posted a patch to increase the maximum number of Infiniband HCAs per system from 32 to 64 in a &amp;#8220;backwards-compatible manner&amp;#8221; (hence only raising the limit to 64), and Al Viro posted an informative message entitled &amp;#8220;Open Intents, lookup_instantiate_filp() And All That Shit(tm)&amp;#8221; on his plans for handling atomic file open+possible create for NFS in the grand future.&lt;/p&gt;
&lt;p&gt;In today&amp;#8217;s announcements: Greg Kroah-Hartman announced the release of the 2.6.32.7 kernel (having previously announced the 2.6.32.6 earlier in the week and posting a series of review patches for 2.6.32.7). He also announced the 2.6.27.45 &amp;#8220;long term release&amp;#8221; kernel.&lt;/p&gt;
&lt;p&gt;Clark Williams announced the latest version 0.63 of the rt-tests package is now available. This includes various utilities used to verify and experiment with the RT patchset that Thomas Gleixner and others maintain.&lt;/p&gt;
&lt;p&gt;Mathieu Desnoyers announced the release of version 0.4.0 of his Userspace RCU library, which includes a few &amp;#8220;minor API changes&amp;#8221; as previously described. urcu is available for download at http://lttng.org/urcu.&lt;/p&gt;
&lt;p&gt;Junio C Hamano announced version 1.7.0-rc1 of the Git SCM. The forthcoming release has a number of items in the draft release notes, including some behavior changes to &amp;#8220;git push&amp;#8221;, &amp;#8220;git send-email&amp;#8221; (no deep threads by default), &amp;#8220;git status&amp;#8221;, &amp;#8220;git diff&amp;#8221;, and various other goodies.&lt;/p&gt;
&lt;p&gt;The latest kernel release was 2.6.33-rc6.&lt;/p&gt;
&lt;p&gt;Andrew Morton posted an mm-of-the-moment (mmotm) for 2010-01-28-01-36.&lt;/p&gt;
&lt;p&gt;Willy Tarreau announced version 2.4.37.8 of the 2.4 series kernel. It mainly includes fixes for a recentl discovered vulnerability in the e1000 network driver that could allow a carefully crafted frame to skip over filtering.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s a summary of today&amp;#8217;s Linux Kernel Mailing List traffic, for further information visit www.kernel.org. I&amp;#8217;m Jon Masters.&lt;/p&gt;</description>
	<pubDate>Wed, 10 Feb 2010 13:15:24 +0000</pubDate>
</item>
<item>
	<title>Kernel Podcast: 2010/01/24 Linux Kernel Podcast</title>
	<guid>http://www.kernelpodcast.org/?p=475</guid>
	<link>http://www.kernelpodcast.org/2010/02/10/20100124-linux-kernel-podcast/</link>
	<description>&lt;p&gt;&lt;strong&gt;Audio&lt;/strong&gt;: &lt;a href=&quot;http://media.libsyn.com/media/jcm/linux_kernel_podcast_20100124.mp3&quot;&gt;http://media.libsyn.com/media/jcm/linux_kernel_podcast_20100124.mp3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For the weekend of January 24th, 2010, I&amp;#8217;m Jon Masters with a summary of the week&amp;#8217;s LKML traffic.&lt;/p&gt;
&lt;p&gt;Linux 2.6.33-rc5. Linus Torvalds announced the release of the 2.6.33-rc5 kernel, noting that he didn&amp;#8217;t &amp;#8220;think there is anything earth-shaking here&amp;#8221;. Mostly, the only new stuff was in the i915 and (new) DVB &amp;#8220;Mantis&amp;#8221; driver. Rafael J. Wysocki followed up with his usual list of regressions since the release of 2.6.32, for which there were no know fixes yet in Linus&amp;#8217; tree. The number has fallen a little, but there were still 23 unresolved.&lt;/p&gt;
&lt;p&gt;devtmpfs. The devtmpfs filesystem is a shared memory filesystem used to mount /dev nodes that are needed even before udev starts on modern Linux systems (or for those systems that do not use udev, to provide a minimum environment). The suggestion had been made to remove the EXPERIMENTAL flag on its configuration option and enable it by default. The latter received complaints as a change in behavior that would be visible to users, even if many of them would need to have devtmpfs enabled for the most recent Linux distributions.&lt;/p&gt;
&lt;p&gt;Interruptions. Steven Rostedt, and Peter Zijlstra did some analysis of the kernel source tree, looking for inappropriate setting of TASK_*INTERRUPTIBLE (which should never be done explicitly, and in general one should always use the set_current_state macro). They found a fairly large number of incorrect code paths and posted a list of &amp;#8220;examples of likely bugs&amp;#8221;. David Daney replied, asking what kind of barrier should be implied in using set_current_state, as pertains to the visibility of this assignment by other CPUs.&lt;/p&gt;
&lt;p&gt;IO error semantics. Nick Piggin started a thread entitled &amp;#8220;IO error semantics&amp;#8221;, in which he raised the ugly issue of kernel IO error handling behavior once again, as he said he had done during Andi Kleen&amp;#8217;s posting of HWPOISON patches. Nick sought to clearly define specific anticipated behaviors in response to &amp;#8220;read IOs&amp;#8221;, &amp;#8220;write IOs&amp;#8221;, and so forth &amp;#8211; how many retries? etc. He also made the point that write IO errors should not invalidate the data before an IO error is returned to &amp;#8220;somebody&amp;#8221; (fsync or synchronous write syscall).&lt;/p&gt;
&lt;p&gt;NOIO. Rafael J. Wysocki posted an initial PM patch implementing forced GFP_NOIO during suspend operations (preventing the kernel from attempting to allocate memory by going to e.g. disk to offload some existing unused pages), this was largely in reaction to specific issues with the Nvidia closed source binary driver, but was something that had apparently been on the cards for some time. The problem with the patch was that it changed the VM according to the state of the system, rather than relying upon drivers to do the right thing in using explicit GFP_NOIO allocations during suspend and resume routines.&lt;/p&gt;
&lt;p&gt;In the week&amp;#8217;s miscellaneous items: Tejun Heo posted version 3 of his concurrency managed workqueue patches, Peter Anvin proposed the rapid removal of CONFIG_X86_CPU_DEBUG (since all such information is already exposed elsewhere), the addition of &amp;#8220;nopat&amp;#8221; boot option documentation to Documentation/kernel-paramters by Jiri Kosina, ongoing discussion of generalization of certain PCI functions in the wake of and intention to merge various Xilinx PCI support bits, a cache coherency problem with mmaped writes on ARM systems posted by Anfei Zhou, a patch correcting priority inheritance deboosting in the RT kernel patchset to be POSIX compliant, Dimitry Golubovsky inquired as to the current state of UML (User Mode Linux, not the silly and pointless modelling technique) development, some Restricted Access Register (Intel MID platform) patches from Mark Allyn, and a large number of floppy (yes, floppy) cleanups from Joe Perches.&lt;/p&gt;
&lt;p&gt;In the week&amp;#8217;s announcements: Linux 2.6.31.12 and 2.6.32.5 (proceeded by the 2.6.32.4 kernel earlier in the week) were released by Greg Kroah-Hartman. Greg stated that he no longer intended to update the .31 stable kernel short of &amp;#8220;something really odd happening&amp;#8221;. Greg repeated his previous assertions that the .27 kernel would live on as a &amp;#8220;long term&amp;#8221; stable release (but probably only for 6 more months of viability), and that the .32 kernel would also be a &amp;#8220;long term release&amp;#8221; because a number of distributions were apparently basing their distributions around it. His efforts depend upon engineers working on those distributions to help.&lt;/p&gt;
&lt;p&gt;Len Brown announced that the Linux Power Management Mini-Summit would be held in Boston on Monday, August 9th 2010, the day before the LinuxCon 2010. For further information, refer to http://events.linuxfoundation.org/.&lt;/p&gt;
&lt;p&gt;Mathieu Desnoyers (whose excellent PhD thesis was published recently and covered by LWN) announced an updated LTTng 0.187 for the 2.6.32.4 kernel.&lt;/p&gt;
&lt;p&gt;Junio C Hamano announced Git 1.6.6.1 is now available from the kernel.org site at http://www.kernel.org/pub/software/scm/git/. The latest version contains fixes for issues such as &amp;#8220;git blame&amp;#8221; not working when a commit lacked an author name, &amp;#8220;git count-objects&amp;#8221; not handling packfiles larger than 4G on platforms with a 32-bit off_t, &amp;#8220;git rebase -i&amp;#8221; not aborting cleaning if it failed to start the user&amp;#8217;s EDITOR, some issues with&lt;br /&gt;
the GIT_WORK_TREE environment variable, and more besides.&lt;/p&gt;
&lt;p&gt;Thomas Gleixner announced the release of 2.6.31.12-rt20 RT patchset. This was a forward port to 2.6.31.12, which included a number of RCU assumption fixes, the aforementioned PI POSIX compliance fix, and so forth. Thomas noted the delay in releasing a new version of the patch, but noted that various locking infrastructure changes had gone upstream (advancing the cause of mainlining various bits of RT). There will be no 2.6.32-rt, but will skip directly over to 2.6.33. He also let us know about a new &amp;#8220;housemate&amp;#8221; of his: http://tglx.de/~tglx/housemate.png.&lt;/p&gt;
&lt;p&gt;Sorry for the delay in getting this episode released.&lt;/p&gt;</description>
	<pubDate>Wed, 10 Feb 2010 08:36:27 +0000</pubDate>
</item>
<item>
	<title>Paul E. Mc Kenney: Parallel Programming: Questionable Quality Assurance</title>
	<guid>http://paulmck.livejournal.com/17787.html</guid>
	<link>http://paulmck.livejournal.com/17787.html</link>
	<description>&lt;a href=&quot;http://paulmck.livejournal.com/15144.html&quot;&gt;An earlier post&lt;/a&gt; noted that parallel programming suffers more potential failures in planning than does sequential programming due to the usual suspects: deadlocks, memory misordering, race conditions, and performance/scalability issues.  This should lead us to suspect that parallel programs might need better quality assurance (Q/A) than do sequential programs.  Q/A activities include validation, verification, inspection, review, and of course testing.&lt;br /&gt;&lt;p&gt;Traditionally, Q/A groups serve many roles:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;	Run tests and find bugs.&lt;br /&gt;&lt;li&gt;	Break in new hires, who, strangely enough, are sometimes reluctant to irritate developers.&lt;br /&gt;&lt;li&gt;	Distract developers who are already behind schedule with pesky bugs.&lt;br /&gt;&lt;li&gt;	Act as scapegoat for schedule slips.&lt;br /&gt;&lt;li&gt;	Act as a target of complaints from developers who are tired of debugging either their new features or any bugs located by the Q/A group.&lt;br /&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Although there are many highly effective Q/A groups in many software development organizations, it is not hard to find Q/A groups that find bugs, but that either cannot or will not get developers to pay attention to them.  It is also not hard to find Q/A groups that are overridden whenever they point out problems that might cause a schedule slip.  One way to avoid these problems is via enlightened management based on (for example) bug trends over time, and another way is for the Q/A organization to report high up into the organization.  Of course, with this latter approach, one wonders just how often the Q/A organization can get away with yanking on the silver chain connecting to their executive sponsor.&lt;br /&gt;&lt;br /&gt;Of course, FOSS communities have their own Q/A challenges, but the fact that the maintainers are usually responsible for the quality of their code adds a breath of fresh air to the process.  Not least, their gatekeeper role enables them to vigorously enforce any design and coding guidelines that their FOSS community might have.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.kernel.org/pub/linux/kernel/people/paulmck/Answers/IsParallelProgrammingHard/QA.html&quot;&gt;But what are the technical effects of parallel software on Q/A?&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 09 Feb 2010 19:44:07 +0000</pubDate>
</item>
<item>
	<title>Kernel Podcast: Updates coming!</title>
	<guid>http://www.kernelpodcast.org/?p=473</guid>
	<link>http://www.kernelpodcast.org/2010/02/09/updates-coming-2/</link>
	<description>&lt;p&gt;Folks,&lt;/p&gt;
&lt;p&gt;A couple of weeks of updates are coming, hopefully tonight. I am planning to get back into a routine here. Thanks for being patient!&lt;/p&gt;
&lt;p&gt;Jon.&lt;/p&gt;</description>
	<pubDate>Tue, 09 Feb 2010 16:07:49 +0000</pubDate>
</item>
<item>
	<title>Dave Airlie: whats in drm-radeon-testing?</title>
	<guid>http://airlied.livejournal.com/71261.html</guid>
	<link>http://airlied.livejournal.com/71261.html</link>
	<description>I'll try and post these regularly when I make major additions/removals.&lt;br /&gt;&lt;br /&gt;drm-radeon-testing is the cutting edge KMS radeon branch, it is going to be rebased and things will be added/removed as they are worked on by developers. So you can base patches on it but you should talk to the developer who owns the area first.&lt;br /&gt;&lt;br /&gt;git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git drm-radeon-testing&lt;br /&gt;&lt;br /&gt;I've just pushed a rebased tree now with the following:&lt;br /&gt;&lt;br /&gt;latest i2c algo + hw i2c engine code + all fixes squashed: This adds support for hw i2c engines found on radeons and&lt;br /&gt;exposes them + sw i2c buses to userspace so i2c tools can use them. (agd5f).&lt;br /&gt;&lt;br /&gt;pll algorithm reworking + quirks: cleans up the code to allow for the selection of the old pll algorithm on some hardware. (agd5f)&lt;br /&gt;&lt;br /&gt;pm support so far: Adds all the current PM patches - just does engine reclocking so far using the power tables from the BIOS. (Zajec/agd5f)&lt;br /&gt;&lt;br /&gt;Evergreen (Radeon HD 5xxx) support: basic KMS support for the evergreen range of devices - no irqs or accel yet. (agd5f)&lt;br /&gt;&lt;br /&gt;radeon unlocked ioctl support (airlied)&lt;br /&gt;&lt;br /&gt;bad CS recording (glisse)&lt;br /&gt;&lt;br /&gt;misc cleanups/fixes - Dell/Sun server support ported from userspace hopefully.&lt;br /&gt;&lt;br /&gt;The tree did contain Jerome's r600 CS checker but I've dropped it for now at his request as he has newer patches&lt;br /&gt;in testing.</description>
	<pubDate>Mon, 08 Feb 2010 23:58:05 +0000</pubDate>
</item>
<item>
	<title>Valerie Aurora: Linux Storage and Filesystems Workshop</title>
	<guid>http://valerieaurora.wordpress.com/?p=231</guid>
	<link>http://valerieaurora.wordpress.com/2010/02/08/linux-storage-and-filesystems-workshop/</link>
	<description>&lt;br /&gt;&lt;p&gt;The 2010 Linux Storage and Filesystems Workshop has been announced:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lkml.org/lkml/2010/2/8/221&quot;&gt;http://lkml.org/lkml/2010/2/8/221&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One of the things I like most about the file systems workshop is the avoidance of canned presentations:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Presentations are allowed to guide discussion, but are strongly discouraged.  There will be no recording or audio bridge, however written minutes will be published as in previous years [...]
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Edward_Tufte&quot;&gt;Edward Tufte&lt;/a&gt; would be proud.&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/valerieaurora.wordpress.com/231/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/valerieaurora.wordpress.com/231/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/valerieaurora.wordpress.com/231/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/valerieaurora.wordpress.com/231/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/valerieaurora.wordpress.com/231/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/valerieaurora.wordpress.com/231/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/valerieaurora.wordpress.com/231/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/valerieaurora.wordpress.com/231/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/valerieaurora.wordpress.com/231/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/valerieaurora.wordpress.com/231/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=valerieaurora.wordpress.com&amp;blog=10337555&amp;post=231&amp;subd=valerieaurora&amp;ref=&amp;feed=1&quot; /&gt;</description>
	<pubDate>Mon, 08 Feb 2010 20:59:31 +0000</pubDate>
</item>
<item>
	<title>Pete Zaitcev: ncld is here, and what it is for</title>
	<guid>http://zaitcev.livejournal.com/199324.html</guid>
	<link>http://zaitcev.livejournal.com/199324.html</link>
	<description>&lt;p&gt;I sent out the &quot;&lt;a href=&quot;http://marc.info/?l=hail-devel&amp;m=126557017305905&amp;w=2&quot;&gt;ncld&lt;/a&gt;&quot; (a pun on ncurses) that I &lt;a href=&quot;http://zaitcev.livejournal.com/198635.html&quot;&gt;mentioned&lt;/a&gt; before. It is tested, and I already have tabled switched over to it. All is left is to get Jeff to apply it.&lt;/p&gt;
&lt;p&gt;Savings in the code size are pretty good, but more importantly it is not impenetrable spagetti from 1968 anymore. And this is important if we want anyone ever hack on CLD voluntarily. People actually pay attention to shit code. To &lt;a href=&quot;http://zaitcev.livejournal.com/89860.html&quot;&gt;quote&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Fedora uses yum, which originally was developed by Yellow Dog. I forgot who told me this (I think it was either Jeremy [Katz] or Notting [Bill Nottingham]), but the story was that they (e.g. MSW [Matthew Wilson], Notting, and Jeremy) looked at things like apt-rpm, urpm, and yum as a base for [the] next up2date. Only yum passed the test &quot;not to puke while looking at the source&quot;. That's how it came to be.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you tilt your head just right, CLD is somewhat similar to Zookeeper in function (or so I heard), and one time someone asked why not just use Zookeeper. Jeff answered, &quot;Zookeeper's API is too complex&quot;. I was concerned that someone would look at the code and think we were NIH hypocrites, because CLD's API before ncld was complex too (for no good reason - it was assembly-level complexity). Well, not anymore. What Jeff actually meant, I think, was that Zookeeper intrinsic architecture was too complex for what we want in Hail.&lt;/p&gt;</description>
	<pubDate>Sun, 07 Feb 2010 19:46:52 +0000</pubDate>
</item>
<item>
	<title>Pete Zaitcev: Why 1e100.net?</title>
	<guid>http://zaitcev.livejournal.com/198987.html</guid>
	<link>http://zaitcev.livejournal.com/198987.html</link>
	<description>&lt;p&gt;Jon Masters posted a somewhat ambiguous &lt;a href=&quot;https://twitter.com/jonmasters/status/8622480684&quot;&gt;twit&lt;/a&gt;: &quot;Why does Google use 1e100.net?&quot; Obviously, 1e100 is the exponent syntax for gugol, but aside from that, why is it necessary to use a separate domain? It seems like a trick that is done often. Here's a short list:&lt;/p&gt;
&lt;p&gt;Youtube uses ytimg.com. They started doing it before the acquisition by Google, and apparently it was used to host the static content. Youtube used 3-rd party CDNs for hot videos back then, but always with youtube.com for a domain. They continue that practice, except that ytimg.com now serves other random stuff now.&lt;/p&gt;
&lt;p&gt;Google uses 1e100.net, which seems to pop randomly.&lt;/p&gt;
&lt;p&gt;Facebook uses fbcdn.net. Obviously it means &quot;Facebook CDN&quot;.&lt;/p&gt;
&lt;p&gt;So, using a second SLD is clearly a common practice of some kind, that everyone in the business agrees is valuable. But how exactly does it work? Is it about the performance or security? Why only 2 domains and not 10 or 1000?&lt;/p&gt;
&lt;p&gt;UPDATE: I have two friends called &quot;Jon M.&quot; and &lt;a href=&quot;http://www.weak.org/&quot;&gt;other&lt;/a&gt; of them says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It's for security. If you don't fully trust the security of your CDN, then you put it on a separate domain, so that content served from it can't access your users sessions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Presumably it's because cookies are matched by domain. And &lt;a href=&quot;http://users.livejournal.com/deviant_/&quot;&gt;Peter Jones&lt;/a&gt; adds:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It cuts down on http headers - especially cookies. If you put images on a second domain, it means /far/ fewer headers transferred, and fewer db lookups for the things /in/ them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Those cookies!&lt;/p&gt;</description>
	<pubDate>Sun, 07 Feb 2010 16:31:05 +0000</pubDate>
</item>
<item>
	<title>Dave Miller: STT_GNU_IFUNC</title>
	<guid>http://vger.kernel.org/~davem/cgi-bin/blog.cgi/2010/02/07#stt_gnu_ifunc</guid>
	<link>http://vger.kernel.org/~davem/cgi-bin/blog.cgi/2010/02/07#stt_gnu_ifunc</link>
	<description>&lt;p&gt;
I've always wanted to work on support for STT_GNU_IFUNC symbols
on sparc.  This is going to solve a real problem distribution
makers have faced on sparc64 for quite some time.
&lt;p&gt;
&lt;center&gt;
&lt;img src=&quot;http://vger.kernel.org/~davem/nyc_soho_facades.jpg&quot; /&gt;
&lt;/center&gt;
&lt;p&gt;
What is STT_GNU_IFUNC?
&lt;p&gt;
Well, normally a symbol is resolved by the dynamic linker based
upon information in the symbol table of the objects involved.
This is after taking into consideration things like symbol
visibility, where it is defined, etc.
&lt;p&gt;
The difference with STT_GNU_IFUNC is that the resolution of the
reference can be made based upon other criteria.  For example,
based upon the capabilities of the cpu we are executing on.
The most obvious place this would be very useful is in libc,
where you can pick the most optimized memcpy() implementation.
&lt;p&gt;
Normally the symbol table entry points to the actual symbol location,
but STT_GNU_IFUNC symbols point to the location of a &quot;resolver&quot;
function.  This function returns the symbol location that should
be used for references to this symbol.
&lt;p&gt;
So when the dynamic linker resolves a reference to a STT_GNU_IFUNC
type symbol &quot;foo&quot;.  It calls the resolver function recorded in
the symbol table entry, and uses the return value as the resolved
address.
&lt;p&gt;
Simple example:
&lt;pre&gt;
void * memcpy_ifunc (void) __asm__ (&quot;memcpy&quot;);
__asm__(&quot;.type foo, %gnu_indirect_function&quot;);

void *
memcpy_ifunc (void)
{
  switch (cpu_type)
    {
  case cpu_A:
    return memcpy_A;
  case cpu_B:
    return memcpy_B;
  default:
    return memcpy_default;
    }
}
&lt;/pre&gt;
So, references to 'memcpy' will be resolved as determined by
the logic in memcpy_ifunc().
&lt;p&gt;
These magic ifunc things even work in static executables.  How
is that possible?
&lt;p&gt;
First, even though the final image is static, the linker arranges to
still create PLT entries and dynamic sections for the STT_GNU_IFUNC
relocations.
&lt;p&gt;
Next, the CRT files for static executables walk through the relocations
in the static binary and resolve the STT_GNU_IFUNC symbols.
&lt;p&gt;
There are some thorny issues wrt. function pointer equality.  To make
that work static references to STT_GNU_IFUNC symbols use the PLT address
whereas non-static references do not (they get fully resolved).
&lt;p&gt;
Back to the reason I was so eager to implement this.  On sparc we have
four different sets of optimized memcpy/memset implementations in
glibc (UltraSPARC-I/II, UltraSPARC-III, Niagara-T1, Niagara-T2).
Right now the distributions have to thus build glibc four times each
for 32-bit and 64-bit (for a total of 8 times).
&lt;p&gt;
With STT_GNU_IFUNC they will only need to build it once for 32-bit
and once for 64-bit.
&lt;p&gt;
I've just recently posted patches for full support of STT_GNU_IFUNC
symbols to the
&lt;a href=&quot;http://sourceware.org/ml/binutils/2010-02/msg00095.html&quot;&gt;
binutils
&lt;/a&gt;
and
&lt;a href=&quot;http://sourceware.org/ml/libc-alpha/2010-02/msg00005.html&quot;&gt;
glibc
&lt;/a&gt;
lists.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 07 Feb 2010 15:46:00 +0000</pubDate>
</item>
<item>
	<title>Linus Torvalds: Happy camper</title>
	<guid>tag:blogger.com,1999:blog-4999557720148026925.post-1200608354260070156</guid>
	<link>http://torvalds-family.blogspot.com/2010/02/happy-camper.html</link>
	<description>I broke down and bought a Nexus One last week.&lt;br /&gt;&lt;br /&gt;I got the original G1 phone from google when it came out, and I hardly ever used it. Why? I generally hate phones - they are irritating and disturb you as you work or read or whatever - and a cellphone to me is just an opportunity to be irritated wherever you are. Which is not a good thing.&lt;br /&gt;&lt;br /&gt;At the same time I love the &lt;span&gt;concept&lt;/span&gt; of having a phone that runs Linux, and I've had a number of them over the years (in addition to the G1, I had one of the early China-only Motorola Linux phones) etc. But my hatred of phones ends up resulting in me not really ever using them. The G1, for example, ended up being mostly used for playing Galaga and Solitaire on long flights, since I had almost no reason to carry it with me except when traveling.&lt;br /&gt;&lt;br /&gt;But I have to admit, the Nexus One is a winner. I wasn't enthusiastic about buying a phone on the internet sight unseen, but the day it was reported that it finally had the pinch-to-zoom thing enabled, I decided to take the plunge. I've wanted to have  a GPS unit for my car anyway, and I thought that google navigation might finally make a phone useful.&lt;br /&gt;&lt;br /&gt;And it does. What a difference! I no longer feel like I'm dragging a phone with me &quot;just in case&quot; I would need to get in touch with somebody - now I'm having a useful (and admittedly pretty good-looking) gadget instead. The fact that you can use it as a phone too is kind of secondary.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4999557720148026925-1200608354260070156?l=torvalds-family.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 06 Feb 2010 13:22:03 +0000</pubDate>
</item>
<item>
	<title>Pavel Machek: Welcome to ugly world of windows</title>
	<guid>http://pavelmachek.livejournal.com/93055.html</guid>
	<link>http://pavelmachek.livejournal.com/93055.html</link>
	<description>So you want example sources, cca 100K total. You have to download 15MB&lt;br /&gt;slac341.zip, that extracts into 15MB Chronos-Setup.exe. That in turn&lt;br /&gt;blackmails you into accepting about 20 pages of ugly legaleese&lt;br /&gt;presented in tiny window. You get past that (in wine), select directory, and then InstallJammer tells you that you dont have permissions to the directory, oops.</description>
	<pubDate>Sat, 06 Feb 2010 07:06:35 +0000</pubDate>
</item>
<item>
	<title>Evgeniy Polyakov: Elliptics network got new on-disk format</title>
	<guid>http://www.ioremap.net/406 at http://www.ioremap.net</guid>
	<link>http://www.ioremap.net/node/406</link>
	<description>&lt;p&gt;Eventually any storage should go into production mode, which implies not only data storage itself but also access restrictions. Distributed hash table systems, like &lt;a href=&quot;http://www.ioremap.net/projects/elliptics&quot;&gt;elliptics network&lt;/a&gt;, do not have dedicated servers which could store that information and manage access permissions, so each object should have its own set of rules. Although without proper security framework on top of network media this will not guarantee required data access granularity, but even in this model it is still possible to implement IO permissions to some degree.&lt;/p&gt;
&lt;p&gt;Until now &lt;a href=&quot;http://www.ioremap.net/projects/elliptics&quot;&gt;elliptics network&lt;/a&gt; did not have even a slight mechanism for doing this. And even that rudimentary supported metadata was stored in the transaction log and did not allow any kind of extensions or proper updates.&lt;/p&gt;
&lt;p&gt;And although I did not yet write any line of code to deal with metadata, I already broke old-style transaction logs, which now contain only and only transaction information. There are no metadata objects at all, but I will update appropriate parts of the library to generate them and store in the separate entities.&lt;/p&gt;
&lt;p&gt;It is possible to store metadata in the different objects like the ones being indexed by the hash of the original object's name plus some extension, but this will force system to perform two lookups to find out needed object and its metadata.&lt;br /&gt;
Another way is to add new object type to existing transaction and history log objects - all metadata will be stored close to the object itself and could be fetched using only object ID. In the filesystem backend where each object is stored as separate file, metadata will be indexed by the '.metadata' extension or similar - just like we have $ID.history for transaction logs. In the database backend (BDB and Tokyo Cabinet, although I seriously consider to drop the former, since it is unacceptibly slow compared to TC) it will be a separate table, indexed by the object ID.&lt;/p&gt;
&lt;p&gt;Metadata will have flexible format (maybe even human-readable one based on strings?) to allow extensions without breaking backwards compatibility.&lt;/p&gt;
&lt;p&gt;But first I should fix background log checker, which although syncs all kinds of objects currently (i.e. when there is no some object in the storage, but there is its copy with different ID, it will upload missing data from that copy), it does it slightly wrong way, namely messing with hashes and producing unneded additional transaction references. When checker is ready, whole storage fsck process will just combine a log based on metadata objects, and start check process for it.&lt;/p&gt;
&lt;p&gt;Stay tuned, we are very close to the next major release, which will draw the line of the serious features and changes!&lt;/p&gt;</description>
	<pubDate>Fri, 05 Feb 2010 23:45:38 +0000</pubDate>
</item>
<item>
	<title>Matthew Garrett: Shaping young minds</title>
	<guid>http://mjg59.livejournal.com/120465.html</guid>
	<link>http://mjg59.livejournal.com/120465.html</link>
	<description>&lt;a href=&quot;http://gregdek.livejournal.com/57930.html&quot;&gt;&lt;img align=&quot;right&quot; src=&quot;http://gregdek.org/IMAGES/cmu-a.jpg&quot; /&gt;&lt;/a&gt;I'm off to &lt;a href=&quot;http://www.cmu.edu&quot;&gt;CMU&lt;/a&gt; at the weekend, in order to do a couple of talks on Monday (the 8th). I'll be giving an introduction to ACPI to the &lt;a href=&quot;http://www.cs.cmu.edu/~410/&quot;&gt;operating systems class&lt;/a&gt; in the morning, and an open presentation on Fedora, some of the challenges we face and how to get involved in Linux in the afternoon. This is as a result of &lt;a href=&quot;http://www.redhat.com/about/news/prarchive/2009/cmu-grant.html&quot;&gt;our cooperation with CMU&lt;/a&gt;, which has led to things like the request on the right. How could we refuse?</description>
	<pubDate>Fri, 05 Feb 2010 18:54:34 +0000</pubDate>
</item>
<item>
	<title>Evgeniy Polyakov: Opened skiing season</title>
	<guid>http://www.ioremap.net/405 at http://www.ioremap.net</guid>
	<link>http://www.ioremap.net/node/405</link>
	<description>&lt;p&gt;Of course its downhill skiing, I used to hate runnng skiing wasted 3 years in the section when was in the university.&lt;/p&gt;
&lt;p&gt;And actually I not only opened a season, but tried it first time. Some years ago I made a downhill run on the board, but I weared 'grinders' shoes instead of special shoes :)&lt;/p&gt;
&lt;p&gt;Anyway, I do not know how to downhill, so I took an hour ski lesson, found myself can not being able to perform even the simplest things like V-deceleration (I do not know how it is called in english, but it is supposed that feet form kind of V figure).&lt;br /&gt;
Apparently I found a way to learn this quickly - when you flight into the wall on the bone-breaking speed it is better to find out a way to decelerate and stop. One of them is to fall, but it has own and rather serious problem - pain, haematomas and ego drop.&lt;/p&gt;
&lt;p&gt;First trainig was rather painful and without interesting results except that I found myself very liking this stuff. So I went there in a day and enjoyed the hell skiing from the top. Even multiple times down to the bottom without falls. And EVEN once (or at least half-once) I moved the way and speed I wanted.&lt;br /&gt;
I'm sure, my carving and V-turns are likely ugly as hell, I like how things go.&lt;/p&gt;
&lt;p&gt;A good news is that whole-year hill center (well, I was lazy to move to the real hills :) is very conveniently located between my home and office, so I can spent 1-2 morning hours there. I always wanted to be able to ski and its quite possible now with car.&lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://img-fotki.yandex.ru/get/4007/drustafa.3/0_374e8_4bd6d47d_L.jpg&quot; width=&quot;500&quot; height=&quot;400&quot; title=&quot;&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;
Not me :)&lt;/center&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 05 Feb 2010 03:13:47 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Symbian is Open Soruce - Really?</title>
	<guid>http://laforge.gnumonks.org/weblog/2010/02/05#20100205-symbian_open_source</guid>
	<link>http://laforge.gnumonks.org/weblog/2010/02/05#20100205-symbian_open_source</link>
	<description>&lt;p&gt;
In recent news, the Symbian Foundation announced that &lt;i&gt;&quot;All 108 packages
containing the source code of the Symbian platform can now be downloaded from
Symbian's developer web site&quot;&lt;/i&gt;.  This is great news!
&lt;p&gt;
&lt;p&gt;
This morning I tried to look at the parts most interesting to me: &lt;a href=&quot;http://developer.symbian.org/main/source/packages/package/index.php?pk=170&quot;&gt;phonesrv&lt;/a&gt;
(implementing call engine, cell broadcast and SIM toolkit APIs) and &lt;a href=&quot;http://developer.symbian.org/main/source/packages/package/index.php?pk=168&quot;&gt;poc&lt;/a&gt;
(implementing push-to-talk).  Their pages don't have the usual &quot;source code&quot;
tab at the bottom right which links to mercurial and tarball download pages!
&lt;/p&gt;
&lt;p&gt;
Either I'm too stupid, or I am unable to find any source code for those two
components.  I'm quite sure something essential like the API's for making phone
calls are considered part of the Symbian platform.  So how does that match
with the statement that all packages containing the Symbian platform can now
be downloaded?
&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 05 Feb 2010 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Pavel Machek: turning $3000, 4GFLOPS Unix workstation into... way too heavy wristwatch</title>
	<guid>http://pavelmachek.livejournal.com/92811.html</guid>
	<link>http://pavelmachek.livejournal.com/92811.html</link>
	<description>&lt;p&gt;I started &lt;a href=&quot;http://sourceforge.net/scm/?type=cvs&amp;group_id=302219&quot;&gt;mychronos&lt;/a&gt; project on sourceforge. Laurent Arditi asked me what it is about, but I could not write him back, so... let me explain here.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For now I do not have the watch, so I set up&lt;br /&gt;simple emulator... that will also make development easier later. It is extremely hacky, but works well enough  to show time and allow you to set it. Just run it with input redirected from /dev/input/eventX -- from your keyboard. And you may want to comment out first few lines of main().&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I'd like to make the firmware compilable under Linux, then extend it&lt;br /&gt;with new features ... like time of sunset/sunrise, etc.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;BTW...does someone have official chronos firmware in .tar or .zip? All I could find was .exe, and I'd prefer not to install wine.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 04 Feb 2010 23:38:22 +0000</pubDate>
</item>

</channel>
</rss>
