1*298a4bfaSdholland$NetBSD: mobile,v 1.1 2017/01/13 10:14:58 dholland Exp $ 2*298a4bfaSdholland 3*298a4bfaSdhollandNetBSD Mobile Roadmap 4*298a4bfaSdholland===================== 5*298a4bfaSdholland 6*298a4bfaSdhollandThis roadmap is meant to cover issues specifically pertaining to 7*298a4bfaSdhollandmobile use, that is, devices that run on batteries and get carried 8*298a4bfaSdhollandaround. This includes: 9*298a4bfaSdholland - phones 10*298a4bfaSdholland - tablets 11*298a4bfaSdholland - tablet PCs 12*298a4bfaSdholland - laptops 13*298a4bfaSdhollandThe typical assumption right now is that phones and tablets have one 14*298a4bfaSdhollandsoftware stack (iOS, Android) and work one way, and laptops, including 15*298a4bfaSdhollandtablet PCs, have another software stack (Windows, MacOS, Linux) and 16*298a4bfaSdhollandwork another way. The "laptop" software stack is more or less the same 17*298a4bfaSdhollandas the "desktop" software stack, modulo some laptop-specific issues. 18*298a4bfaSdhollandThose laptop-specific issues are covered in this file; the rest of 19*298a4bfaSdhollandthat software stack is discussed in the "desktop" roadmap. This file 20*298a4bfaSdhollandalso covers the phone/tablet software stack. 21*298a4bfaSdholland 22*298a4bfaSdhollandThe following elements, projects, and goals are considered strategic 23*298a4bfaSdhollandpriorities for the project: 24*298a4bfaSdholland 25*298a4bfaSdholland 1. Tickless timers/scheduling 26*298a4bfaSdholland 27*298a4bfaSdhollandThese elements, projects, and goals are more or less long-term goals: 28*298a4bfaSdholland 29*298a4bfaSdholland 2. Power management concerns 30*298a4bfaSdholland 3. Suspending 31*298a4bfaSdholland 4. atrun considered harmful 32*298a4bfaSdholland 5. (Wireless config issues are in the "desktop" roadmap) 33*298a4bfaSdholland 34*298a4bfaSdhollandThese elements, projects, and goals are for the time being pretty much 35*298a4bfaSdhollandblue sky: 36*298a4bfaSdholland 37*298a4bfaSdholland 6. Touchscreen (phone/tablet) UI 38*298a4bfaSdholland 7. Support for phone hardware 39*298a4bfaSdholland 40*298a4bfaSdholland 41*298a4bfaSdhollandExplanations 42*298a4bfaSdholland============ 43*298a4bfaSdholland 44*298a4bfaSdholland1. Tickless timers/scheduling 45*298a4bfaSdholland 46*298a4bfaSdhollandThe basic premise with a tickless system is that instead of generating 47*298a4bfaSdhollanda timer interrupt HZ times a second, one programs a high-resolution 48*298a4bfaSdhollandtimer on the fly to interrupt the next time something needs to happen. 49*298a4bfaSdhollandThis can substantially reduce the number of timer interrupts taken, 50*298a4bfaSdhollandand also importantly it avoids waking the system up regularly when 51*298a4bfaSdhollandotherwise idle and reduces power consumption and heating. 52*298a4bfaSdholland 53*298a4bfaSdhollandThere has been a fair amount of talk about this but so far no real 54*298a4bfaSdhollandaction. 55*298a4bfaSdholland 56*298a4bfaSdholland - As of January 2017 nobody is known to be working on this. 57*298a4bfaSdholland - There is currently no clear timeframe or release target. 58*298a4bfaSdholland - Contact: ? (XXX) 59*298a4bfaSdholland 60*298a4bfaSdholland 61*298a4bfaSdholland2. Power management concerns 62*298a4bfaSdholland 63*298a4bfaSdhollandNetBSD's power management infrastructure is fairly lacking. We don't 64*298a4bfaSdhollandhave good CPU clock rate throttling, we mostly don't have the ability 65*298a4bfaSdhollandto power down idle devices, and we don't have a configuration and 66*298a4bfaSdhollandcontrol setup to manage it either. On x86 we also don't support a 67*298a4bfaSdhollandnumber of important ACPI sleep/idle states. 68*298a4bfaSdholland 69*298a4bfaSdhollandAt the moment there isn't even a good inventory of what needs to be 70*298a4bfaSdhollanddone in this department. Someone please write it and put it here. 71*298a4bfaSdholland 72*298a4bfaSdholland - As of January 2017 nobody is known to be working on this. 73*298a4bfaSdholland - There is currently no clear timeframe or release target. 74*298a4bfaSdholland - Contact: ? (XXX) 75*298a4bfaSdholland 76*298a4bfaSdholland 77*298a4bfaSdholland3. Suspending 78*298a4bfaSdholland 79*298a4bfaSdhollandCurrently suspending mostly doesn't work, and the chances of being 80*298a4bfaSdhollandable to suspend any given laptop model successfully are low until 81*298a4bfaSdhollandsomeone using it gets annoyed enough to sit down and make it behave. 82*298a4bfaSdholland 83*298a4bfaSdhollandWe need to fix this, both by adding suspend hooks to drivers that are 84*298a4bfaSdhollandmissing them and also (ideally) by coming up with a better way to cope 85*298a4bfaSdhollandwith drivers that don't know how to suspend. 86*298a4bfaSdholland 87*298a4bfaSdholland - As of January 2017 nobody is known to be specifically working on 88*298a4bfaSdholland this, although work on individual drivers occurs sporadically. 89*298a4bfaSdholland - There is currently no clear timeframe or release target. 90*298a4bfaSdholland - Contact: ? (XXX) 91*298a4bfaSdholland 92*298a4bfaSdholland 93*298a4bfaSdholland4. atrun considered harmful 94*298a4bfaSdholland 95*298a4bfaSdhollandThere are a number of things on the system that unnecessarily wake up 96*298a4bfaSdhollandand take cpu time and power on a regular basis. One of the big 97*298a4bfaSdhollandoffenders is atrun -- it should be changed either to be a daemon that 98*298a4bfaSdhollandwakes up only when it has a job to run, integrated into cron to the 99*298a4bfaSdhollandsame end, or changed around in some other similar fashion. 100*298a4bfaSdholland 101*298a4bfaSdhollandOne can always turn atrun off, but there's no particular reason that 102*298a4bfaSdhollandat(1) functionality should be unavailable on laptops. 103*298a4bfaSdholland 104*298a4bfaSdholland - As of January 2017 nobody is known to be specifically working on 105*298a4bfaSdholland this, although work on individual drivers occurs sporadically. 106*298a4bfaSdholland - There is currently no clear timeframe or release target. 107*298a4bfaSdholland - Contact: ? (XXX) 108*298a4bfaSdholland 109*298a4bfaSdholland 110*298a4bfaSdholland6. Touchscreen (phone/tablet) UI 111*298a4bfaSdholland 112*298a4bfaSdhollandWe'd rather like to be able to run on phones, and that means having a 113*298a4bfaSdhollandUI suitable for a phone -- a shell isn't going to cut it, and even a 114*298a4bfaSdhollandshell coupled with a keyboard app isn't really the ticket. 115*298a4bfaSdholland 116*298a4bfaSdhollandThis has many of the same kinds of issues as desktop software. Some of 117*298a4bfaSdhollandthe specific issues are different; e.g. location handling is a lot 118*298a4bfaSdhollandmore critical for phones than for desktops and even laptops. 119*298a4bfaSdholland 120*298a4bfaSdhollandWhile we don't currently run on any phone platforms (see below) 121*298a4bfaSdhollandthere's nothing stopping working on this using older PDA/palmtop 122*298a4bfaSdhollandhardware like hpcarm. 123*298a4bfaSdholland 124*298a4bfaSdholland 125*298a4bfaSdholland7. Support for phone hardware 126*298a4bfaSdholland 127*298a4bfaSdhollandWe don't currently support any phone hardware platforms at all. It 128*298a4bfaSdhollandwould be good to. Among other things this requires finishing arm64 129*298a4bfaSdhollandsupport, but there's also lot of drivers to write. 130*298a4bfaSdholland 131