On Thu, 2006-08-31 at 17:13 -0600, Bjorn Helgaas wrote: > On Wednesday 30 August 2006 13:43, Matthew Garrett wrote: > > That would be helpful. For the One Laptop Per Child project (or whatever > > it's called today), it would be advantageous to run without acpi. > > Out of curiosity, what is the motivation for running without acpi? > It costs a lot to diverge from the mainstream in areas like that, > so there must be a big payoff. But maybe if OLPC depends on acpi > being smarter about power or code size or whatever, those improvements > could be made and everybody would benefit. Good question; I see Matthew beat me to part of the explanation, but here is more detail: Our screen consumes of order 1/10th the power of a conventional flat panel, and can consume a half watt or so (yes, we now have working screens; this is not mythological hardware; I got my own personal first hand look at prototype display running this afternoon :-); I always do line new toys...). Even though the base machine may take only a couple watts of power (Geode GX + the rest of the base logic), 2-3 watts is too much power to use; a small child can generate only 7-10 watts. So if we want a decent "learn" to "generate" ratio, we have to do better than the 2-4 to 1 ratio we might get conventionally. In January, we saw this staring us in the face, and knew we had to do better, or we'd have just told a good fraction of the kids in the world they can't have the advantages of a computer. Our goal has always been a 10 to 1 ratio, for at least the most important use cases (e.g. reading). OK, what to do? We built a chip that lets us suspend the processor and keep the screen alive, and chose a wireless chip that will let us keep the mesh network alive, and we intend to suspend/resume the processor to/from RAM at the drop of a hat. This gets our idle consumption from about 2.5-3 watts (with screen and wireless on), to under one watt. We'd need resume to be as close to imperceptible as possible; touch a key or the touchpad, the machine resumes so fast as you don't notice. In short, we have novel hardware: we can have our screen on, and suspend the processor to RAM, and use a half a watt. We can have our wireless forwarding packets in our mesh networks, with the processor suspended, consuming under 400mw (we hope 300mw by the time we ship). Both on, and we're still under one watt. For keyboard activity, human perception is in the 100-200 millisecond range; for some other stuff, it is even less much than that. So that's the necessity; now the invention. I've done a straw pole among kernel gurus at OLS and elsewhere on how fast Linux might be able to resume. I've gotten answers of typically "one second". But, on other platforms (see attached), I have data I've measured myself showing Linux going from resume from RAM to *scheduling user level processes* 100 times faster than that, on a wimpy 200mhz ARM processor. Yes, Matilda, Linux can, on non-braindead hardware, resume all the way to scheduling user processes in 10 milliseconds on a 200mhz processor. This will, for most use cases (you are reading, or your machine is sitting there between bursts of activity), likely double / triple / quadruple our battery life depending on what you are doing. Note that on a conventional machine, with a conventional display, you'd not see this large an improvement. Worst case, of course, it will make no difference at all (e.g. watching a video). Clearly we can't do any better than what our hardware allows (stabilization of power supplies, PLL's, etc). I should have data on that very shortly, now that I can measure it on LinuxBIOS pretty directly. For those of you building chips and systems: please make the hardware restart time as fast as possible: it matters. The CPU doesn't have to go full speed instantly; just get it going at some speed as quickly as you can. Conventional PC's with conventional BIOS's using ACPI don't do anything like as well. So, guess what? We don't plan to use a conventional commercial BIOS, (we're using LinuxBIOS and Linux as Bootloader) and will do whatever it takes (including ignoring however much of ACPI turns out to be necessary) to get our resume down to what we know is possible. ACPI is mostly an x86 aberration; on most architectures it does not exist. So it does not require contorting Linux to not use ACPI, to the extent we find it necessary. Most of *real* power management is done by Linux, and not by ACPI. Boy, human powered machines really *do* focus the mind on power management ;-). Regards, - Jim Gettys -- Jim Gettys One Laptop Per Child