Re: olpc-os-builder config file format change

2012-03-02 Thread Chris Leonard
On Fri, Mar 2, 2012 at 6:20 PM, Daniel Drake  wrote:
>
> Thoughts/objections?

I'm not an OOB user so I will abstatin, but it sounds like a nice
simplification and I am interested to hear from actual OOB users.

cjl
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: olpc-os-builder config file format change

2012-03-02 Thread James Cameron
+1

-- 
James Cameron
http://quozl.linux.org.au/
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


olpc-os-builder config file format change

2012-03-02 Thread Daniel Drake
Hi,

I'm proposing the following change to olpc-os-builder configuration
files for 12.1.0 and onwards:

Currently, the set of modules to load is specified by a "modules"
configuration variable in the [global] section. Then, settings for
each module can be customised by adding a [section] for each module
and specifying the options there.

I propose that we simplify this: remove the "global.modules" variable,
and make the presence of a section become the hint that a module is
loaded. For example:

[global]
fedora_release=17
modules=base,xo1,yumcfg

[yumcfg]
add_excludes_to=fedora-rawhide

Would become

[global]
fedora_release=17

[base]
[xo1]

[yumcfg]
add_excludes_to=fedora-rawhide



Reasoning: This is a simplification. Previously, many modules
effectively had to be listed twice - once in the module list, and
again to supply mandatory configuration.

All too often I have seen people (including myself) adding [sections]
to customise their build, but forgetting to add the module to the
list. And you don't realise your error until quite a while later.

Also, this simplifies the ability to pass multiple configuration files
to the build system. This will become more interesting as we move
towards adding build automation, where the build config file will be
the same everywhere, but those who want to bolt-on automatic build
publishing at the end will supply an additional config file (loading
futher modules) specifying addresses to push the build to, etc.

Thoughts/objections?

Thanks,
Daniel
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: 11.3.1 development build 29 for XO-1.75

2012-03-02 Thread Bert Freudenberg

On 02.03.2012, at 18:49, Martin Langhoff wrote:

> Upgrade online with:
> 
>   olpc-update 11.3.1_xo1.75-28

That should be 

olpc-update 11.3.1_xo1.75-29

and yes it works (from os28)

- Bert -


___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


11.3.1 development build 29 for XO-1.75

2012-03-02 Thread Martin Langhoff
This build brings in OFW improvements, audio fixes, olpc-update,
ds-backup, powerd and new power logging scripts.

It should be updatable via olpc-update -- try the cmdline below.

Notes:

 - In normal use, the laptop sometimes hangs when idle; very likely
when it is suspending or resuming; please help us diagnose this
further at #11600 and #11658

 - Record Activity will sometimes hang - #11657

 - The getty on the serial port is _disabled_ by default now (that's
the workaround). It gets enabled when you hold the "check" game key
during boot (for verbose boot).

Upgrade online with:

   olpc-update 11.3.1_xo1.75-28

Download from:

  http://build.laptop.org/11.3.1/os29/

Fixes (please help us confirm):

#11664 olpc-update-query has a hardcoded /ofw path
#11665 olpc-update needs to learn about devicetree
#11667 Teach ds-backup about devicetree
#11623 Add olpc-pwr-log Ver 2.1.0 to build

Changes:

--- os28/xo1.75/os28.packages.txt   2012-02-18 08:55:05.0 -0500
+++ os29/xo1.75/os29.packages.txt   2012-03-02 12:07:44.0 -0500
-ds-backup-client-0.11.1.g71d2f16-1.olpc3.noarch
+ds-backup-client-0.12-1.fc14.noarch
-kernel-3.0.19_xo1.75-20120214.2038.olpc.6ac727b.armv7l
+kernel-3.0.19_xo1.75-20120223.0009.olpc.f11c4ee.armv7l
-olpc-firmware-q4d03-1.unsigned.noarch
+olpc-firmware-q4d04-1.unsigned.noarch
-olpc-powerd-44-1.fc14.armv5tel
-olpc-powerd-dbus-44-1.fc14.armv5tel
+olpc-powerd-45-1.fc14.armv5tel
+olpc-powerd-dbus-45-1.fc14.armv5tel
-olpc-update-2.23-1.fc14.noarch
-olpc-utils-1.3.12-1.fc14.armv5tel
+olpc-update-2.24-1.fc14.noarch
+olpc-utils-1.3.13-1.fc14.armv5tel

Kernel changelog
Paul Fox (3):
  raydium_ts:  general cleanup
  raydium_ts: put the touchscreen to sleep during suspend when possible
  olpc-ec: (re)disable EC SSP interrupts across suspend

Saadia Baloch (2):
  mmp2-i2s.c: Remove symmetric_rates restriction
  mmp2-pcm.c: Protect audio DMA from interrupts

OFW Q4D04 changelog
- FAT32 filesystem compatibility fix,
- fs-update and fs-verify refinements,
- null-fsdisk works again,
- terminal emulator fixes,
- avoid black text on black background on Linux console or xterm,

cheers,



m
--
 mar...@laptop.org -- Software Architect - OLPC
 - ask interesting questions
 - don't get distracted with shiny stuff  - working code first
 - http://wiki.laptop.org/go/User:Martinlanghoff
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: idea: set a niceness value under which a process won't awaken suspended CPU

2012-03-02 Thread Lennert Buytenhek
On Fri, Mar 02, 2012 at 02:19:43AM -0800, Jon Nettleton wrote:

> > > > One problem you can get into with this scheme is a kind of priority
> > > > inversion.  If the low priority process does:
> > > >
> > > >fd = open("/foo/bar", O_RDWR);
> > > >flock(fd, LOCK_EX);
> > > >
> > > > and the high priority process then also does:
> > > >
> > > >fd = open("/foo/bar", O_RDWR);
> > > >flock(fd, LOCK_EX);
> > > >
> > > > and the low priority process then does:
> > > >
> > > >sleep(1);
> > > >flock(fd, LOCK_UN);
> > > >
> > > > and the system then goes into suspend, you'll not wake up again
> > > > after that second expires, and you might not wake up again soon
> > > > at all.  The low priority process doesn't even have to sleep
> > > > explicitly, if it takes a page fault you get basically the same
> > > > thing.
> > >
> > > I believe the cgroup method will catch this though.  I would have
> > > to double check, but I think that the cgroup becomes partially
> > > frozen returning EBUSY until all the processes can properly be
> > > frozen.  At that time I believe it is up to userspace to thaw, or
> > > refreeze the group, unless the blocking process ends in which case
> > > the entire cgroup is set to the frozen state.
> >
> > You can still suffer from priority inversion if you freeze a cgroup
> > with a low priority process in it that holds a resource that another
> > high priority process needs.
> >
> > You indeed can't suffer from priority inversion between processes in
> > the same cgroup if you are going to freeze all of them, but then you
> > don't care about CPU wakeups for the high priority process either.
> >
> > I guess that what I don't see yet is how you would use cgroups to
> > implement the goals of John's scheme.
> 
> The cgroup would be the method to organize the processes that you don't
> want running all  the time, but only when a higher priority processes has
> already woken the cpu and is doing significant work.  If we put all these
> "background" processes in a special cgroup, we can freeze their activity
> before suspend, or any other arbitrary time at that point.  Then it would
> be up to a process scheduler, or a userspace daemon to decided when we
> would want to thaw this group because our system will already be up and
> doing work.  We can also put a lower priority on that cgroup as to not
> steal cpu cycles from the process that caused the cpu/system to wakeup to
> do work.
> 
> Am I misunderstanding the concept proposed?

If you suspend the whole cgroup whenever the system suspends, and thaw
it when the system resumes, then yes, that'll give more or less the
same behavior as John's proposal[*].  It doesn't change the priority
inversion scenario, though.


[*] Not entirely the same, as he seems to be talking about reliable
CPU wakeup filtering as well, which just isn't possible in all
cases, e.g. when a packet arrives, the NIC won't know whether
that packet is destined for a high or low priority process, so
you can't make the CPU wakeup decision in the NIC, and the CPU
won't be able to make the decision either, as it would have to
wake up to inspect the packet to do that, which is what you were
trying to avoid in the first place!

___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


ConsoleKit Removal

2012-03-02 Thread Simon Schampijer

Hi,

Fedora is switching away from ConsoleKit and is using systemd instead 
[1]. Looks like olpc-utils needs to be updated to reflect that. We seem 
to open/close a ConsoleKit session in olpc-dm.c.


Regards,
   Simon

[1] http://fedoraproject.org/wiki/Features/ckremoval
[2] http://dev.laptop.org/git/projects/olpc-utils/tree/src/olpc-dm.c#n229
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: idea: set a niceness value under which a process won't awaken suspended CPU

2012-03-02 Thread Jon Nettleton
On Mar 2, 2012 11:06 AM, "Lennert Buytenhek"  wrote:
>
> On Fri, Mar 02, 2012 at 01:50:16AM -0800, Jon Nettleton wrote:
>
> > > One problem you can get into with this scheme is a kind of priority
> > > inversion.  If the low priority process does:
> > >
> > >fd = open("/foo/bar", O_RDWR);
> > >flock(fd, LOCK_EX);
> > >
> > > and the high priority process then also does:
> > >
> > >fd = open("/foo/bar", O_RDWR);
> > >flock(fd, LOCK_EX);
> > >
> > > and the low priority process then does:
> > >
> > >sleep(1);
> > >flock(fd, LOCK_UN);
> > >
> > > and the system then goes into suspend, you'll not wake up again
> > > after that second expires, and you might not wake up again soon
> > > at all.  The low priority process doesn't even have to sleep
> > > explicitly, if it takes a page fault you get basically the same
> > > thing.
> >
> > I believe the cgroup method will catch this though.  I would have
> > to double check, but I think that the cgroup becomes partially
> > frozen returning EBUSY until all the processes can properly be
> > frozen.  At that time I believe it is up to userspace to thaw, or
> > refreeze the group, unless the blocking process ends in which case
> > the entire cgroup is set to the frozen state.
>
> You can still suffer from priority inversion if you freeze a cgroup
> with a low priority process in it that holds a resource that another
> high priority process needs.
>
> You indeed can't suffer from priority inversion between processes in
> the same cgroup if you are going to freeze all of them, but then you
> don't care about CPU wakeups for the high priority process either.
>
> I guess that what I don't see yet is how you would use cgroups to
> implement the goals of John's scheme.

The cgroup would be the method to organize the processes that you don't
want running all  the time, but only when a higher priority processes has
already woken the cpu and is doing significant work.  If we put all these
"background" processes in a special cgroup, we can freeze their activity
before suspend, or any other arbitrary time at that point.  Then it would
be up to a process scheduler, or a userspace daemon to decided when we
would want to thaw this group because our system will already be up and
doing work.  We can also put a lower priority on that cgroup as to not
steal cpu cycles from the process that caused the cpu/system to wakeup to
do work.

Am I misunderstanding the concept proposed?

-Jon
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: idea: set a niceness value under which a process won't awaken suspended CPU

2012-03-02 Thread Lennert Buytenhek
On Fri, Mar 02, 2012 at 01:50:16AM -0800, Jon Nettleton wrote:

> > One problem you can get into with this scheme is a kind of priority
> > inversion.  If the low priority process does:
> >
> >fd = open("/foo/bar", O_RDWR);
> >flock(fd, LOCK_EX);
> >
> > and the high priority process then also does:
> >
> >fd = open("/foo/bar", O_RDWR);
> >flock(fd, LOCK_EX);
> >
> > and the low priority process then does:
> >
> >sleep(1);
> >flock(fd, LOCK_UN);
> >
> > and the system then goes into suspend, you'll not wake up again
> > after that second expires, and you might not wake up again soon
> > at all.  The low priority process doesn't even have to sleep
> > explicitly, if it takes a page fault you get basically the same
> > thing.
> 
> I believe the cgroup method will catch this though.  I would have
> to double check, but I think that the cgroup becomes partially
> frozen returning EBUSY until all the processes can properly be
> frozen.  At that time I believe it is up to userspace to thaw, or
> refreeze the group, unless the blocking process ends in which case
> the entire cgroup is set to the frozen state.

You can still suffer from priority inversion if you freeze a cgroup
with a low priority process in it that holds a resource that another
high priority process needs.

You indeed can't suffer from priority inversion between processes in
the same cgroup if you are going to freeze all of them, but then you
don't care about CPU wakeups for the high priority process either.

I guess that what I don't see yet is how you would use cgroups to
implement the goals of John's scheme.
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: idea: set a niceness value under which a process won't awaken suspended CPU

2012-03-02 Thread Jon Nettleton
On Mar 2, 2012 10:37 AM, "Lennert Buytenhek"  wrote:
>
> One problem you can get into with this scheme is a kind of priority
> inversion.  If the low priority process does:
>
>fd = open("/foo/bar", O_RDWR);
>flock(fd, LOCK_EX);
>
> and the high priority process then also does:
>
>fd = open("/foo/bar", O_RDWR);
>flock(fd, LOCK_EX);
>
> and the low priority process then does:
>
>sleep(1);
>flock(fd, LOCK_UN);
>
> and the system then goes into suspend, you'll not wake up again
> after that second expires, and you might not wake up again soon
> at all.  The low priority process doesn't even have to sleep
> explicitly, if it takes a page fault you get basically the same
> thing.

I believe the cgroup method will catch this though.  I would have to double
check, but I think that the cgroup becomes partially frozen returning EBUSY
until all the processes can properly be frozen.  At that time I believe it
is up to userspace to thaw, or refreeze the group, unless the blocking
process ends in which case the entire cgroup is set to the frozen state.

-Jon
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: idea: set a niceness value under which a process won't awaken suspended CPU

2012-03-02 Thread Lennert Buytenhek
One problem you can get into with this scheme is a kind of priority
inversion.  If the low priority process does:

fd = open("/foo/bar", O_RDWR);
flock(fd, LOCK_EX);

and the high priority process then also does:

fd = open("/foo/bar", O_RDWR);
flock(fd, LOCK_EX);

and the low priority process then does:

sleep(1);
flock(fd, LOCK_UN);

and the system then goes into suspend, you'll not wake up again
after that second expires, and you might not wake up again soon
at all.  The low priority process doesn't even have to sleep
explicitly, if it takes a page fault you get basically the same
thing.

Nice levels don't seem the right method of controlling which tasks
get to wake up the CPU and which don't, but note that a simple
per-process "will/won't wake up the CPU" flag won't avoid the above
scenario either.



On Fri, Mar 02, 2012 at 12:38:40AM -0800, John Gilmore wrote:

> Here's a power-saving idea that's been marinating since 2007 (in an
> obscure corner of my mail queue).  When I reviewed it today I didn't
> see anything too wrong with it.
> 
>   John
> 
> Message-Id: <200710240912.l9o9c1k2026...@new.toad.com>
> To: gnu
> Subject: OLPC idea: set a niceness value under which a process won't awaken 
> suspended CPU
> Date: Wed, 24 Oct 2007 02:12:01 -0700
> From: John Gilmore 
> 
> An easy lever for CPU consumption management (power mgmt) would be to
> define a set of user processes that won't be scheduled in a
> power-suspended system.  They won't wake the CPU even if their timer
> goes off, their packet arrives, or their fairy godmother calls.  But
> if something else wakes the CPU, and it's going to stay running a bit
> while some higher priority process is waiting for flash or packets or
> something, these processes can run in the background.
> 
> My idea is to tie this to "nice".  So if you "nice -20", it puts you into
> this range.  Say everything below -15, which lets you set a few priorities
> among the low priority background stuff.
> 
> So if you nice things all the way down, they run when the CPU is powered,
> in the cracks when there's nothing else to do, but they don't cause the CPU
> to wake up to service them if nothing else is going on.
> 
> For example, code that polls and updates the battery status once a
> minute in HAL.  Or a system activity monitor that shows CPU state
> graphs or how many MHz we're running.  Or an RSS feed reader.  Or the
> thing that clears out Mozilla's cache.  Or the incremental backup
> daemon that copies the machine's state to the school server.  (If that
> ran with scavenged electricity, cool!  It can raise its priority once
> a day or so, to make sure that a backup gets done one way or another.)
> 
> The GUI could have a way to throw a process into this state or out of it.
> E.g. push your mail reader there, polling every once in a while for email,
> opportunistically.
> 
>   John
> 
> --- End of Forwarded Message
> 
> ___
> Devel mailing list
> Devel@lists.laptop.org
> http://lists.laptop.org/listinfo/devel
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


Re: idea: set a niceness value under which a process won't awaken suspended CPU

2012-03-02 Thread Jon Nettleton
Although the idea sounds good, the mechanism of using nice is very 2007
:-)  This should be accomplished by putting this type of process in a
specific cgroup.  We can then use the cgroup freezer to freeze all tasks in
that group, and thaw it when we see fit.

I used a similar mechanism to fix the problem where my wife would have all
sorts of flash things running in different tabs of her web browser, when I
was switched over to my user profile on the netbook.  I added some hooks
into policy kit to thaw the background users cgroup and unthaw the logged
in user.  Really I could have just limited the amount of processor
resources they had access to, but why waste the battery?

Other than that I think this could be a very good thing.  I also think this
would be a good way to control things that we only want to run when plugged
in.  No reason to run some of those cpu intensive cron jobs when running on
battery.

-Jon

On Mar 2, 2012 9:44 AM, "John Gilmore"  wrote:
>
> Here's a power-saving idea that's been marinating since 2007 (in an
> obscure corner of my mail queue).  When I reviewed it today I didn't
> see anything too wrong with it.
>
>John
>
> Message-Id: <200710240912.l9o9c1k2026...@new.toad.com>
> To: gnu
> Subject: OLPC idea: set a niceness value under which a process won't
awaken suspended CPU
> Date: Wed, 24 Oct 2007 02:12:01 -0700
> From: John Gilmore 
>
> An easy lever for CPU consumption management (power mgmt) would be to
> define a set of user processes that won't be scheduled in a
> power-suspended system.  They won't wake the CPU even if their timer
> goes off, their packet arrives, or their fairy godmother calls.  But
> if something else wakes the CPU, and it's going to stay running a bit
> while some higher priority process is waiting for flash or packets or
> something, these processes can run in the background.
>
> My idea is to tie this to "nice".  So if you "nice -20", it puts you into
> this range.  Say everything below -15, which lets you set a few priorities
> among the low priority background stuff.
>
> So if you nice things all the way down, they run when the CPU is powered,
> in the cracks when there's nothing else to do, but they don't cause the
CPU
> to wake up to service them if nothing else is going on.
>
> For example, code that polls and updates the battery status once a
> minute in HAL.  Or a system activity monitor that shows CPU state
> graphs or how many MHz we're running.  Or an RSS feed reader.  Or the
> thing that clears out Mozilla's cache.  Or the incremental backup
> daemon that copies the machine's state to the school server.  (If that
> ran with scavenged electricity, cool!  It can raise its priority once
> a day or so, to make sure that a backup gets done one way or another.)
>
> The GUI could have a way to throw a process into this state or out of it.
> E.g. push your mail reader there, polling every once in a while for email,
> opportunistically.
>
>John
>
> --- End of Forwarded Message
>
> ___
> Devel mailing list
> Devel@lists.laptop.org
> http://lists.laptop.org/listinfo/devel
___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel


idea: set a niceness value under which a process won't awaken suspended CPU

2012-03-02 Thread John Gilmore
Here's a power-saving idea that's been marinating since 2007 (in an
obscure corner of my mail queue).  When I reviewed it today I didn't
see anything too wrong with it.

John

Message-Id: <200710240912.l9o9c1k2026...@new.toad.com>
To: gnu
Subject: OLPC idea: set a niceness value under which a process won't awaken 
suspended CPU
Date: Wed, 24 Oct 2007 02:12:01 -0700
From: John Gilmore 

An easy lever for CPU consumption management (power mgmt) would be to
define a set of user processes that won't be scheduled in a
power-suspended system.  They won't wake the CPU even if their timer
goes off, their packet arrives, or their fairy godmother calls.  But
if something else wakes the CPU, and it's going to stay running a bit
while some higher priority process is waiting for flash or packets or
something, these processes can run in the background.

My idea is to tie this to "nice".  So if you "nice -20", it puts you into
this range.  Say everything below -15, which lets you set a few priorities
among the low priority background stuff.

So if you nice things all the way down, they run when the CPU is powered,
in the cracks when there's nothing else to do, but they don't cause the CPU
to wake up to service them if nothing else is going on.

For example, code that polls and updates the battery status once a
minute in HAL.  Or a system activity monitor that shows CPU state
graphs or how many MHz we're running.  Or an RSS feed reader.  Or the
thing that clears out Mozilla's cache.  Or the incremental backup
daemon that copies the machine's state to the school server.  (If that
ran with scavenged electricity, cool!  It can raise its priority once
a day or so, to make sure that a backup gets done one way or another.)

The GUI could have a way to throw a process into this state or out of it.
E.g. push your mail reader there, polling every once in a while for email,
opportunistically.

John

--- End of Forwarded Message

___
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel