{"push_id":721399903,"size":7,"distinct_size":7,"ref":"refs/heads/5.1","head":"cb56adc83fe09310b8a36876f6dcd2b7ecac80d5","before":"24533adcb4656409547864d07f0b913388bd813c","commits":[{"sha":"4c4e0138fcc33d9d9ace542bc874e357994d00db","author":{"email":"5b1a755a6b1799d96d2e1f98e16b285f5f690241@google.com","name":"Dmitry Shmidt"},"message":"power: Add check_wakeup_reason() to verify wakeup source irq\n\nWakeup reason is set before driver resume handlers are called.\nIt is cleared before driver suspend handlers are called, on\nPM_SUSPEND_PREPARE.\n\nChange-Id: I04218c9b0c115a7877e8029c73e6679ff82e0aa4\nSigned-off-by: Dmitry Shmidt <dimitrysh@google.com>","distinct":true,"url":"https://api.github.com/repos/LiquidSmooth-Devices/LiquidKernel-Shamu/commits/4c4e0138fcc33d9d9ace542bc874e357994d00db"},{"sha":"7f8dcb6b3c37a29488da3e275179bb2651ef93f5","author":{"email":"b9962a40c76f189681da2829a74a26cab77021ea@google.com","name":"Iliyan Malchev"},"message":"PM: wakeup_reason: add functions to query and clear wakeup reasons\n\nThe query results are valid until the next PM_SUSPEND_PREPARE.\n\nChange-Id: I6bc2bd47c830262319576a001d39ac9a994916cf\nSigned-off-by: Iliyan Malchev <malchev@google.com>","distinct":true,"url":"https://api.github.com/repos/LiquidSmooth-Devices/LiquidKernel-Shamu/commits/7f8dcb6b3c37a29488da3e275179bb2651ef93f5"},{"sha":"156694c8d72541e815a2e0842bf03192680f335b","author":{"email":"b9962a40c76f189681da2829a74a26cab77021ea@google.com","name":"Iliyan Malchev"},"message":"PM: wakeup_reason: correctly deduce wakeup interrupts\n\nThe wakeup_reason driver works by having a callback log_wakeup_reason(), be\ncalled by the resume path once for each wakeup interrupt, with the irq number\nas argument.  It then saves this interrupt in an array, and reports it when\nrequested (via /sys/kernel/wakeup_reasons/last_resume_reason) and also prints\nthe information out in kmsg.\n\nThis approach works, but it has the deficiency that often the reported wakeup\ninterrupt, while correct, is not the interrupt truly responsible for the\nwakeup.  The reason for this is due to chained interrupt controllers (whether\nin hardware or simulated in software).  It could be, for example, that the\npower button is wired to a GPIO handled by a single interrupt for all GPIOs,\nwhich interrupt then determines the GPIO and maps this to a software interrupt.\nWhether this is done in software, or by chaining interrupt controllers, the end\nresult is that the wakeup reason will show not the interrupt associated with\nthe power button, but the base-GPIO interrupt instead.\n\nThis patch reworks the wakeup_sources driver such that it reports those final\ninterrupts we are interested in, and not the intermediate (and not the base)\nones.  It does so as follows:\n\n-- The assumption is that generic_handle_irq() is called to dispatch all\n   interrupts; due to this, chained interrupts result in recursive calls of\n   generic_handle_irq().\n-- We reconstruct the chains of interrupts that originate with the base wakeup\n   interrupt and terminate with the interrupt we are interested in by tracing\n   the calls to generic_handle_irq()\n-- The tracing works by maitaining a per-cpu counter that is incremented with\n   each call to generic_handle_irq(); that counter is reported to the\n   wakeup_sources driver by a pair of functions, called\n   log_possible_wakeup_reason_start() and log_possible_wakeup_reason_complete().\n   The former is called before generic_handle_irq() handles the interrupt\n   (thereby potentially calling itself recusively) and the latter afterward.\n-- The two functions mentioned above are complemented by log_base_wake_reason()\n   (renamed from log_wakeup_reason()), which is used to report the base wakeup\n   interrupts to the wakeup_reason driver.\n-- The three functions work together to build a set of trees, one per base\n   wakeup reason, the leaves of which correspond to the interrupts we are\n   interesed in; these trees can be arbitratily complex, though in reality they\n   most often are a single node, or a chain of two nodes.  The complexity\n   supports arbitrarily involved interrupt dispatch.\n-- On resume, we build the tree; once the tree is completed, we walk it\n   recursively, and print out to kmesg the (more useful) list of wakeup\n   sources; simiarly, we walk the tree and print the leaves when\n   /sys/kernel/wakeup_reasons/last_resume_reason is read.\n\nSigned-off-by: Iliyan Malchev <malchev@google.com>\nChange-Id: If8acb2951b61d2c6bcf4d011fe04d7f91057d139\n\nConflicts:\n\tkernel/power/wakeup_reason.c","distinct":true,"url":"https://api.github.com/repos/LiquidSmooth-Devices/LiquidKernel-Shamu/commits/156694c8d72541e815a2e0842bf03192680f335b"},{"sha":"310e43072cb4e372e950266b7bd2909fe1d85ec3","author":{"email":"a4a9764687115057dfb6081f6c434bf20156ee3b@google.com","name":"jinqian"},"message":"Power: Report suspend times from last_suspend_time\n\nThis node epxorts two values separated by space.\nFrom left to right:\n1. time spent in suspend/resume process\n2. time spent sleep in suspend state\n\nChange-Id: I2cb9a9408a5fd12166aaec11b935a0fd6a408c63","distinct":true,"url":"https://api.github.com/repos/LiquidSmooth-Devices/LiquidKernel-Shamu/commits/310e43072cb4e372e950266b7bd2909fe1d85ec3"},{"sha":"1f659a0efb8c7384eb2fa508c030ce9f69a1adeb","author":{"email":"5b1a755a6b1799d96d2e1f98e16b285f5f690241@google.com","name":"Dmitry Shmidt"},"message":"Power: Report total suspend times from boot in suspend_since_boot\n\n    This node exports five values separated by space.\n    From left to right:\n    1. Amount of suspend/resume cycles\n    2. Amount of suspend abort cycles\n    3. Total time spent in suspend/resume process\n    4. Total time in suspend abort process\n    5. Total time spent sleep in suspend state\n\nChange-Id: I5d71af80516dd451eceba28228bfbaff9681f7ab\nSigned-off-by: Dmitry Shmidt <dimitrysh@google.com>","distinct":true,"url":"https://api.github.com/repos/LiquidSmooth-Devices/LiquidKernel-Shamu/commits/1f659a0efb8c7384eb2fa508c030ce9f69a1adeb"},{"sha":"dcaa8e5a2881c009dc092e95ebec6f675bb9eae7","author":{"email":"b9962a40c76f189681da2829a74a26cab77021ea@google.com","name":"Iliyan Malchev"},"message":"PM: wakeup_reasons: fix race condition\n\nlog_possible_wakeup_reason() and stop_logging_wakeup_reasons() can race, as the\nlatter can be called from process context, and both can run on separate cores.\n\nChange-Id: I306441d0be46dd4fe58c55cdc162f9d61a28c27d\nSigned-off-by: Iliyan Malchev <malchev@google.com>","distinct":true,"url":"https://api.github.com/repos/LiquidSmooth-Devices/LiquidKernel-Shamu/commits/dcaa8e5a2881c009dc092e95ebec6f675bb9eae7"},{"sha":"cb56adc83fe09310b8a36876f6dcd2b7ecac80d5","author":{"email":"b9962a40c76f189681da2829a74a26cab77021ea@google.com","name":"Iliyan Malchev"},"message":"PM: wakeup_reasons: disable wakeup-reason deduction by default\n\nIntroduce a config item, CONFIG_DEDUCE_WAKEUP_REASONS, disabled by default.\nMake CONFIG_PARTUALRESUME select it.\n\nChange-Id: I7d831ff0a9dfe0a504824f4bc65ba55c4d92546b\nSigned-off-by: Iliyan Malchev <malchev@google.com>","distinct":true,"url":"https://api.github.com/repos/LiquidSmooth-Devices/LiquidKernel-Shamu/commits/cb56adc83fe09310b8a36876f6dcd2b7ecac80d5"}]}