mobile revision 1.1
11.1Sdholland$NetBSD: mobile,v 1.1 2017/01/13 10:14:58 dholland Exp $
21.1Sdholland
31.1SdhollandNetBSD Mobile Roadmap
41.1Sdholland=====================
51.1Sdholland
61.1SdhollandThis roadmap is meant to cover issues specifically pertaining to
71.1Sdhollandmobile use, that is, devices that run on batteries and get carried
81.1Sdhollandaround. This includes:
91.1Sdholland   - phones
101.1Sdholland   - tablets
111.1Sdholland   - tablet PCs
121.1Sdholland   - laptops
131.1SdhollandThe typical assumption right now is that phones and tablets have one
141.1Sdhollandsoftware stack (iOS, Android) and work one way, and laptops, including
151.1Sdhollandtablet PCs, have another software stack (Windows, MacOS, Linux) and
161.1Sdhollandwork another way. The "laptop" software stack is more or less the same
171.1Sdhollandas the "desktop" software stack, modulo some laptop-specific issues.
181.1SdhollandThose laptop-specific issues are covered in this file; the rest of
191.1Sdhollandthat software stack is discussed in the "desktop" roadmap. This file
201.1Sdhollandalso covers the phone/tablet software stack.
211.1Sdholland
221.1SdhollandThe following elements, projects, and goals are considered strategic
231.1Sdhollandpriorities for the project:
241.1Sdholland
251.1Sdholland 1. Tickless timers/scheduling
261.1Sdholland
271.1SdhollandThese elements, projects, and goals are more or less long-term goals:
281.1Sdholland
291.1Sdholland 2. Power management concerns
301.1Sdholland 3. Suspending
311.1Sdholland 4. atrun considered harmful
321.1Sdholland 5. (Wireless config issues are in the "desktop" roadmap)
331.1Sdholland
341.1SdhollandThese elements, projects, and goals are for the time being pretty much
351.1Sdhollandblue sky:
361.1Sdholland
371.1Sdholland 6. Touchscreen (phone/tablet) UI
381.1Sdholland 7. Support for phone hardware
391.1Sdholland
401.1Sdholland
411.1SdhollandExplanations
421.1Sdholland============
431.1Sdholland
441.1Sdholland1. Tickless timers/scheduling
451.1Sdholland
461.1SdhollandThe basic premise with a tickless system is that instead of generating
471.1Sdhollanda timer interrupt HZ times a second, one programs a high-resolution
481.1Sdhollandtimer on the fly to interrupt the next time something needs to happen.
491.1SdhollandThis can substantially reduce the number of timer interrupts taken,
501.1Sdhollandand also importantly it avoids waking the system up regularly when
511.1Sdhollandotherwise idle and reduces power consumption and heating.
521.1Sdholland
531.1SdhollandThere has been a fair amount of talk about this but so far no real
541.1Sdhollandaction.
551.1Sdholland
561.1Sdholland  - As of January 2017 nobody is known to be working on this.
571.1Sdholland  - There is currently no clear timeframe or release target.
581.1Sdholland  - Contact: ? (XXX)
591.1Sdholland
601.1Sdholland
611.1Sdholland2. Power management concerns
621.1Sdholland
631.1SdhollandNetBSD's power management infrastructure is fairly lacking. We don't
641.1Sdhollandhave good CPU clock rate throttling, we mostly don't have the ability
651.1Sdhollandto power down idle devices, and we don't have a configuration and
661.1Sdhollandcontrol setup to manage it either. On x86 we also don't support a
671.1Sdhollandnumber of important ACPI sleep/idle states.
681.1Sdholland
691.1SdhollandAt the moment there isn't even a good inventory of what needs to be
701.1Sdhollanddone in this department. Someone please write it and put it here.
711.1Sdholland
721.1Sdholland  - As of January 2017 nobody is known to be working on this.
731.1Sdholland  - There is currently no clear timeframe or release target.
741.1Sdholland  - Contact: ? (XXX)
751.1Sdholland
761.1Sdholland
771.1Sdholland3. Suspending
781.1Sdholland
791.1SdhollandCurrently suspending mostly doesn't work, and the chances of being
801.1Sdhollandable to suspend any given laptop model successfully are low until
811.1Sdhollandsomeone using it gets annoyed enough to sit down and make it behave.
821.1Sdholland
831.1SdhollandWe need to fix this, both by adding suspend hooks to drivers that are
841.1Sdhollandmissing them and also (ideally) by coming up with a better way to cope
851.1Sdhollandwith drivers that don't know how to suspend.
861.1Sdholland
871.1Sdholland  - As of January 2017 nobody is known to be specifically working on
881.1Sdholland    this, although work on individual drivers occurs sporadically.
891.1Sdholland  - There is currently no clear timeframe or release target.
901.1Sdholland  - Contact: ? (XXX)
911.1Sdholland
921.1Sdholland
931.1Sdholland4. atrun considered harmful
941.1Sdholland
951.1SdhollandThere are a number of things on the system that unnecessarily wake up
961.1Sdhollandand take cpu time and power on a regular basis. One of the big
971.1Sdhollandoffenders is atrun -- it should be changed either to be a daemon that
981.1Sdhollandwakes up only when it has a job to run, integrated into cron to the
991.1Sdhollandsame end, or changed around in some other similar fashion.
1001.1Sdholland
1011.1SdhollandOne can always turn atrun off, but there's no particular reason that
1021.1Sdhollandat(1) functionality should be unavailable on laptops.
1031.1Sdholland
1041.1Sdholland  - As of January 2017 nobody is known to be specifically working on
1051.1Sdholland    this, although work on individual drivers occurs sporadically.
1061.1Sdholland  - There is currently no clear timeframe or release target.
1071.1Sdholland  - Contact: ? (XXX)
1081.1Sdholland
1091.1Sdholland
1101.1Sdholland6. Touchscreen (phone/tablet) UI
1111.1Sdholland
1121.1SdhollandWe'd rather like to be able to run on phones, and that means having a
1131.1SdhollandUI suitable for a phone -- a shell isn't going to cut it, and even a
1141.1Sdhollandshell coupled with a keyboard app isn't really the ticket.
1151.1Sdholland
1161.1SdhollandThis has many of the same kinds of issues as desktop software. Some of
1171.1Sdhollandthe specific issues are different; e.g. location handling is a lot
1181.1Sdhollandmore critical for phones than for desktops and even laptops.
1191.1Sdholland
1201.1SdhollandWhile we don't currently run on any phone platforms (see below)
1211.1Sdhollandthere's nothing stopping working on this using older PDA/palmtop
1221.1Sdhollandhardware like hpcarm.
1231.1Sdholland
1241.1Sdholland
1251.1Sdholland7. Support for phone hardware
1261.1Sdholland
1271.1SdhollandWe don't currently support any phone hardware platforms at all. It
1281.1Sdhollandwould be good to. Among other things this requires finishing arm64
1291.1Sdhollandsupport, but there's also lot of drivers to write.
1301.1Sdholland
131