diff for duplicates of <1488159432.3489.1.camel@intel.com> diff --git a/a/1.txt b/N1/1.txt index 0416f3c..caff788 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,150 +1,106 @@ -On Mon, 2017-02-27 at 01:00 +0000, Song, Hongyan wrote: -> Hi Jonathan, -> I add more information about the patch: -> -> Bug found: -> When we cat sensor incli sensor data with hysteresis value is 0, -> there always have streamed sensor data output, -> But when system enter S3 and resume back, the streaming thread is -> still on but there is not streaming sensor data output. -> Test data as below: -> 279: 2017-01-24 01:16:00.279385 *5* incli_3d: Min Delta: 99.779ms, -> Max Delta: 100.316ms, Received: 10/s, Overall: 170/16s; Sample values -> ,0.010546,-0.006712,2.797579 -> 280: 2017-01-24 01:16:41.211385 *5* incli_3d: Min Delta: 100.16ms, -> Max Delta: 40924.6ms, Received: 2/s, Overall: 172/19s; Sample values -> ,0.010546,-0.006712,2.797579 -> 281: 2017-01-24 01:16:42.219892 *5* incli_3d: Min Delta: 0.023ms, Max -> Delta: 543.28ms, Received: 2/s, Overall: 174/20s; Sample values -> ,0.010546,-0.006712,2.797579 -> 282: 2017-01-24 01:16:42.755548 *4* -> CIIOSensorInform::sensor_wait_event poll timeout -> 283: 2017-01-24 01:16:43.223062 *5* incli_3d: Min Delta: --, Max -> Delta: --, Received: 0/s, Overall: 174/21s -> 284: 2017-01-24 01:16:43.756980 *4* -> CIIOSensorInform::sensor_wait_event poll timeout -> 285: 2017-01-24 01:16:44.225527 *5* incli_3d: Min Delta: --, Max -> Delta: --, Received: 0/s, Overall: 174/22s -> 286: 2017-01-24 01:16:44.758467 *4* -> CIIOSensorInform::sensor_wait_event poll timeout -> 287: 2017-01-24 01:16:45.228082 *5* incli_3d: Min Delta: --, Max -> Delta: --, Received: 0/s, Overall: 174/23s -> 288: 2017-01-24 01:16:45.759958 *4* -> CIIOSensorInform::sensor_wait_event poll timeout -> -> Root cause: -> when sensor resume back from S3, the sensor property user set is -> lost. -> For example, if we set sensor hysteresis value to be 0, then let -> system enter S3, when resume back, the hysteresis value will be not 0 -> but the default value 1. -> -> this is not what we want, resume back from S3 should not lose the -> properties which is set before S3, just because the property setting -> sequence lead to this lose. -> -> This is patch is a fix patch and needed for stable. -But not urgent. - -Thanks, -Srinivas - -> -> Thanks a lot! -> -> BR -> Song Hongyan -> -> -> -----Original Message----- -> From: Jonathan Cameron [mailto:jic23@kernel.org] -> Sent: Sunday, February 26, 2017 12:52 AM -> To: Pandruvada, Srinivas <srinivas.pandruvada@intel.com>; linux-input -> @vger.kernel.org; Song, Hongyan <hongyan.song@intel.com>; linux-iio@v -> ger.kernel.org -> Cc: jikos@kernel.org -> Subject: Re: [PATCH] iio: hid-sensor-trigger: Change get poll value -> function order to avoid sensor properties losing after resume from S3 -> -> On 22/02/17 05:40, Pandruvada, Srinivas wrote: -> > On Wed, 2017-02-22 at 17:17 +0800, Song Hongyan wrote: -> > > In function _hid_sensor_power_state(), when -> > > hid_sensor_read_poll_value() -> > > is called, sensor's all properties will be updated by the value -> > > from -> > > sensor hardware/firmware. -> > > In some implementation, sensor hardware/firmware will do a power -> > > cycle during S3. In this case, after resume, once -> > > hid_sensor_read_poll_value() -> > > is called, sensor's all properties which are kept by driver -> > > during S3 -> > > will be changed to default value. -> > > But instead, if a set feature function is called first, sensor -> > > hardware/firmware will be recovered to the last status. So change -> > > the -> > > sensor_hub_set_feature() calling order to behind of set feature -> > > function to avoid sensor properties lose. -> > > -> > > Signed-off-by: Song Hongyan <hongyan.song@intel.com> -> > -> > Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> -> -> Hi Song, -> -> The patch message, whilst excellent on the technical detail, gives me -> no sense of urgency on this. Is this a fix we want to have heading -> for stable ASAP or are we looking at something seen in some -> developmental hardware for example? -> Links to bug reports, or examples of hardware suffering from the -> issue are always helpful as well. -> -> Also for something like this a 'fixes' tag is very helpful when -> people are looking to back port it. -> -> Anyhow, I'm going to hold off on taking this one until I have more -> information. Right now it makes little difference as the next fixes -> pull request from me will probably not be until next weekend. -> -> Thanks, -> -> Jonathan -> > -> > > --- -> > > drivers/iio/common/hid-sensors/hid-sensor-trigger.c | 6 +++--- -> > > 1 file changed, 3 insertions(+), 3 deletions(-) -> > > -> > > diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c -> > > b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c -> > > index a3cce3a..ecf592d 100644 -> > > --- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c -> > > +++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c -> > > @@ -51,8 +51,6 @@ static int _hid_sensor_power_state(struct -> > > hid_sensor_common *st, bool state) -> > > st->report_state.report_id, -> > > st->report_state.index, -> > > HID_USAGE_SENSOR_PROP_REPORTING_STATE_AL -> > > L_EV -> > > ENTS_ENUM); -> > > - -> > > - poll_value = hid_sensor_read_poll_value(st); -> > > } else { -> > > int val; -> > > -> > > @@ -89,7 +87,9 @@ static int _hid_sensor_power_state(struct -> > > hid_sensor_common *st, bool state) -> > > sensor_hub_get_feature(st->hsdev, st- -> > > >power_state.report_id, -> > > st->power_state.index, -> > > sizeof(state_val), &state_val); -> > > - if (state && poll_value) -> > > + if (state) -> > > + poll_value = hid_sensor_read_poll_value(st); -> > > + if (poll_value > 0) -> > > msleep_interruptible(poll_value * 2); -> > > -> > > return -> > > 0;N r y b X ǧv ^ ){.n + { *" ^n r z \x1a h & \x1e -> > > G -> > > h \x03( 階 ݢj" \x1a ^[m z ޖ f h ~ mml== -> -> +T24gTW9uLCAyMDE3LTAyLTI3IGF0IDAxOjAwICswMDAwLCBTb25nLCBIb25neWFuIHdyb3RlOg0K +PiBIaSBKb25hdGhhbiwNCj4gCUkgYWRkIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhdGNo +Og0KPiAJDQo+IEJ1ZyBmb3VuZDrCoA0KPiBXaGVuIHdlIGNhdCBzZW5zb3IgaW5jbGkgc2Vuc29y +IGRhdGEgd2l0aCBoeXN0ZXJlc2lzIHZhbHVlIGlzIDAsDQo+IHRoZXJlIGFsd2F5cyBoYXZlIHN0 +cmVhbWVkIHNlbnNvciBkYXRhIG91dHB1dCwNCj4gQnV0IHdoZW4gc3lzdGVtIGVudGVyIFMzIGFu +ZCByZXN1bWUgYmFjaywgdGhlIHN0cmVhbWluZyB0aHJlYWQgaXMNCj4gc3RpbGwgb24gYnV0IHRo +ZXJlIGlzIG5vdCBzdHJlYW1pbmcgc2Vuc29yIGRhdGEgb3V0cHV0Lg0KPiBUZXN0IGRhdGEgYXMg +YmVsb3c6DQo+IDI3OTogMjAxNy0wMS0yNCAwMToxNjowMC4yNzkzODUgKjUqIGluY2xpXzNkOiBN +aW4gRGVsdGE6IDk5Ljc3OW1zLA0KPiBNYXggRGVsdGE6IDEwMC4zMTZtcywgUmVjZWl2ZWQ6IDEw +L3MsIE92ZXJhbGw6IDE3MC8xNnM7IFNhbXBsZSB2YWx1ZXMNCj4gLDAuMDEwNTQ2LC0wLjAwNjcx +MiwyLjc5NzU3OQ0KPiAyODA6IDIwMTctMDEtMjQgMDE6MTY6NDEuMjExMzg1ICo1KiBpbmNsaV8z +ZDogTWluIERlbHRhOiAxMDAuMTZtcywNCj4gTWF4IERlbHRhOiA0MDkyNC42bXMsIFJlY2VpdmVk +OiAyL3MsIE92ZXJhbGw6IDE3Mi8xOXM7IFNhbXBsZSB2YWx1ZXMNCj4gLDAuMDEwNTQ2LC0wLjAw +NjcxMiwyLjc5NzU3OQ0KPiAyODE6IDIwMTctMDEtMjQgMDE6MTY6NDIuMjE5ODkyICo1KiBpbmNs +aV8zZDogTWluIERlbHRhOiAwLjAyM21zLCBNYXgNCj4gRGVsdGE6IDU0My4yOG1zLCBSZWNlaXZl +ZDogMi9zLCBPdmVyYWxsOiAxNzQvMjBzOyBTYW1wbGUgdmFsdWVzDQo+ICwwLjAxMDU0NiwtMC4w +MDY3MTIsMi43OTc1NzkNCj4gMjgyOiAyMDE3LTAxLTI0IDAxOjE2OjQyLjc1NTU0OCAqNCoNCj4g +Q0lJT1NlbnNvckluZm9ybTo6c2Vuc29yX3dhaXRfZXZlbnQgcG9sbCB0aW1lb3V0DQo+IDI4Mzog +MjAxNy0wMS0yNCAwMToxNjo0My4yMjMwNjIgKjUqIGluY2xpXzNkOiBNaW4gRGVsdGE6IC0tLCBN +YXgNCj4gRGVsdGE6IC0tLCBSZWNlaXZlZDogMC9zLCBPdmVyYWxsOiAxNzQvMjFzDQo+IDI4NDog +MjAxNy0wMS0yNCAwMToxNjo0My43NTY5ODAgKjQqDQo+IENJSU9TZW5zb3JJbmZvcm06OnNlbnNv +cl93YWl0X2V2ZW50IHBvbGwgdGltZW91dA0KPiAyODU6IDIwMTctMDEtMjQgMDE6MTY6NDQuMjI1 +NTI3ICo1KiBpbmNsaV8zZDogTWluIERlbHRhOiAtLSwgTWF4DQo+IERlbHRhOiAtLSwgUmVjZWl2 +ZWQ6IDAvcywgT3ZlcmFsbDogMTc0LzIycw0KPiAyODY6IDIwMTctMDEtMjQgMDE6MTY6NDQuNzU4 +NDY3ICo0Kg0KPiBDSUlPU2Vuc29ySW5mb3JtOjpzZW5zb3Jfd2FpdF9ldmVudCBwb2xsIHRpbWVv +dXQNCj4gMjg3OiAyMDE3LTAxLTI0IDAxOjE2OjQ1LjIyODA4MiAqNSogaW5jbGlfM2Q6IE1pbiBE +ZWx0YTogLS0sIE1heA0KPiBEZWx0YTogLS0sIFJlY2VpdmVkOiAwL3MsIE92ZXJhbGw6IDE3NC8y +M3MNCj4gMjg4OiAyMDE3LTAxLTI0IDAxOjE2OjQ1Ljc1OTk1OCAqNCoNCj4gQ0lJT1NlbnNvcklu +Zm9ybTo6c2Vuc29yX3dhaXRfZXZlbnQgcG9sbCB0aW1lb3V0DQo+IA0KPiBSb290IGNhdXNlOsKg +DQo+IHdoZW4gc2Vuc29yIHJlc3VtZSBiYWNrIGZyb20gUzMsIHRoZSBzZW5zb3IgcHJvcGVydHkg +dXNlciBzZXQgaXMNCj4gbG9zdC4NCj4gRm9yIGV4YW1wbGUsIGlmIHdlIHNldCBzZW5zb3IgaHlz +dGVyZXNpcyB2YWx1ZSB0byBiZSAwLCB0aGVuIGxldA0KPiBzeXN0ZW0gZW50ZXIgUzMsIHdoZW4g +cmVzdW1lIGJhY2ssIHRoZSBoeXN0ZXJlc2lzIHZhbHVlIHdpbGwgYmUgbm90IDANCj4gYnV0IHRo +ZSBkZWZhdWx0IHZhbHVlIDEuDQo+IA0KPiB0aGlzIGlzIG5vdCB3aGF0IHdlIHdhbnQsIHJlc3Vt +ZSBiYWNrIGZyb20gUzMgc2hvdWxkIG5vdCBsb3NlIHRoZQ0KPiBwcm9wZXJ0aWVzIHdoaWNoIGlz +IHNldCBiZWZvcmUgUzMsIGp1c3QgYmVjYXVzZSB0aGUgcHJvcGVydHkgc2V0dGluZw0KPiBzZXF1 +ZW5jZSBsZWFkIHRvIHRoaXMgbG9zZS4NCj4gDQo+IFRoaXMgaXMgcGF0Y2ggaXMgYSBmaXggcGF0 +Y2ggYW5kIG5lZWRlZCBmb3Igc3RhYmxlLg0KQnV0IG5vdCB1cmdlbnQuDQoNClRoYW5rcywNClNy +aW5pdmFzDQoNCj4gDQo+IFRoYW5rcyBhIGxvdCENCj4gDQo+IEJSDQo+IFNvbmcgSG9uZ3lhbg0K +PiANCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEpvbmF0aGFuIENh +bWVyb24gW21haWx0bzpqaWMyM0BrZXJuZWwub3JnXcKgDQo+IFNlbnQ6IFN1bmRheSwgRmVicnVh +cnkgMjYsIDIwMTcgMTI6NTIgQU0NCj4gVG86IFBhbmRydXZhZGEsIFNyaW5pdmFzIDxzcmluaXZh +cy5wYW5kcnV2YWRhQGludGVsLmNvbT47IGxpbnV4LWlucHV0DQo+IEB2Z2VyLmtlcm5lbC5vcmc7 +IFNvbmcsIEhvbmd5YW4gPGhvbmd5YW4uc29uZ0BpbnRlbC5jb20+OyBsaW51eC1paW9Adg0KPiBn +ZXIua2VybmVsLm9yZw0KPiBDYzogamlrb3NAa2VybmVsLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BB +VENIXSBpaW86IGhpZC1zZW5zb3ItdHJpZ2dlcjogQ2hhbmdlIGdldCBwb2xsIHZhbHVlDQo+IGZ1 +bmN0aW9uIG9yZGVyIHRvIGF2b2lkIHNlbnNvciBwcm9wZXJ0aWVzIGxvc2luZyBhZnRlciByZXN1 +bWUgZnJvbSBTMw0KPiANCj4gT24gMjIvMDIvMTcgMDU6NDAsIFBhbmRydXZhZGEsIFNyaW5pdmFz +IHdyb3RlOg0KPiA+IE9uIFdlZCwgMjAxNy0wMi0yMiBhdCAxNzoxNyArMDgwMCwgU29uZyBIb25n +eWFuIHdyb3RlOg0KPiA+ID4gSW4gZnVuY3Rpb24gX2hpZF9zZW5zb3JfcG93ZXJfc3RhdGUoKSwg +d2hlbg0KPiA+ID4gaGlkX3NlbnNvcl9yZWFkX3BvbGxfdmFsdWUoKQ0KPiA+ID4gaXMgY2FsbGVk +LCBzZW5zb3IncyBhbGwgcHJvcGVydGllcyB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhlIHZhbHVlDQo+ +ID4gPiBmcm9twqANCj4gPiA+IHNlbnNvciBoYXJkd2FyZS9maXJtd2FyZS4NCj4gPiA+IEluIHNv +bWUgaW1wbGVtZW50YXRpb24sIHNlbnNvciBoYXJkd2FyZS9maXJtd2FyZSB3aWxsIGRvIGEgcG93 +ZXLCoA0KPiA+ID4gY3ljbGUgZHVyaW5nIFMzLiBJbiB0aGlzIGNhc2UsIGFmdGVyIHJlc3VtZSwg +b25jZQ0KPiA+ID4gaGlkX3NlbnNvcl9yZWFkX3BvbGxfdmFsdWUoKQ0KPiA+ID4gaXMgY2FsbGVk +LCBzZW5zb3IncyBhbGwgcHJvcGVydGllcyB3aGljaCBhcmUga2VwdCBieSBkcml2ZXINCj4gPiA+ +IGR1cmluZyBTM8KgDQo+ID4gPiB3aWxsIGJlIGNoYW5nZWQgdG8gZGVmYXVsdCB2YWx1ZS4NCj4g +PiA+IEJ1dCBpbnN0ZWFkLCBpZiBhIHNldCBmZWF0dXJlIGZ1bmN0aW9uIGlzIGNhbGxlZCBmaXJz +dCwgc2Vuc29ywqANCj4gPiA+IGhhcmR3YXJlL2Zpcm13YXJlIHdpbGwgYmUgcmVjb3ZlcmVkIHRv +IHRoZSBsYXN0IHN0YXR1cy4gU28gY2hhbmdlDQo+ID4gPiB0aGUNCj4gPiA+IHNlbnNvcl9odWJf +c2V0X2ZlYXR1cmUoKSBjYWxsaW5nIG9yZGVyIHRvIGJlaGluZCBvZiBzZXQgZmVhdHVyZcKgDQo+ +ID4gPiBmdW5jdGlvbiB0byBhdm9pZCBzZW5zb3IgcHJvcGVydGllcyBsb3NlLg0KPiA+ID4gDQo+ +ID4gPiBTaWduZWQtb2ZmLWJ5OiBTb25nIEhvbmd5YW4gPGhvbmd5YW4uc29uZ0BpbnRlbC5jb20+ +DQo+ID4gDQo+ID4gQWNrZWQtYnk6IFNyaW5pdmFzIFBhbmRydXZhZGEgPHNyaW5pdmFzLnBhbmRy +dXZhZGFAbGludXguaW50ZWwuY29tPg0KPiANCj4gSGkgU29uZywNCj4gDQo+IFRoZSBwYXRjaCBt +ZXNzYWdlLCB3aGlsc3QgZXhjZWxsZW50IG9uIHRoZSB0ZWNobmljYWwgZGV0YWlsLCBnaXZlcyBt +ZQ0KPiBubyBzZW5zZSBvZiB1cmdlbmN5IG9uIHRoaXMuIElzIHRoaXMgYSBmaXggd2Ugd2FudCB0 +byBoYXZlIGhlYWRpbmcNCj4gZm9yIHN0YWJsZSBBU0FQIG9yIGFyZSB3ZSBsb29raW5nIGF0IHNv +bWV0aGluZyBzZWVuIGluIHNvbWUNCj4gZGV2ZWxvcG1lbnRhbCBoYXJkd2FyZSBmb3IgZXhhbXBs +ZT8NCj4gTGlua3MgdG8gYnVnIHJlcG9ydHMsIG9yIGV4YW1wbGVzIG9mIGhhcmR3YXJlIHN1ZmZl +cmluZyBmcm9tIHRoZQ0KPiBpc3N1ZSBhcmUgYWx3YXlzIGhlbHBmdWwgYXMgd2VsbC4NCj4gDQo+ +IEFsc28gZm9yIHNvbWV0aGluZyBsaWtlIHRoaXMgYSAnZml4ZXMnIHRhZyBpcyB2ZXJ5IGhlbHBm +dWwgd2hlbg0KPiBwZW9wbGUgYXJlIGxvb2tpbmcgdG8gYmFjayBwb3J0IGl0Lg0KPiANCj4gQW55 +aG93LCBJJ20gZ29pbmcgdG8gaG9sZCBvZmYgb24gdGFraW5nIHRoaXMgb25lIHVudGlsIEkgaGF2 +ZSBtb3JlDQo+IGluZm9ybWF0aW9uLiBSaWdodCBub3cgaXQgbWFrZXMgbGl0dGxlIGRpZmZlcmVu +Y2UgYXMgdGhlIG5leHQgZml4ZXMNCj4gcHVsbCByZXF1ZXN0IGZyb20gbWUgd2lsbCBwcm9iYWJs +eSBub3QgYmUgdW50aWwgbmV4dCB3ZWVrZW5kLg0KPiANCj4gVGhhbmtzLA0KPiANCj4gSm9uYXRo +YW4NCj4gPiANCj4gPiA+IC0tLQ0KPiA+ID4gwqBkcml2ZXJzL2lpby9jb21tb24vaGlkLXNlbnNv +cnMvaGlkLXNlbnNvci10cmlnZ2VyLmMgfCA2ICsrKy0tLQ0KPiA+ID4gwqAxIGZpbGUgY2hhbmdl +ZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQ0KPiA+ID4gDQo+ID4gPiBkaWZmIC0t +Z2l0IGEvZHJpdmVycy9paW8vY29tbW9uL2hpZC1zZW5zb3JzL2hpZC1zZW5zb3ItdHJpZ2dlci5j +DQo+ID4gPiBiL2RyaXZlcnMvaWlvL2NvbW1vbi9oaWQtc2Vuc29ycy9oaWQtc2Vuc29yLXRyaWdn +ZXIuYw0KPiA+ID4gaW5kZXggYTNjY2UzYS4uZWNmNTkyZCAxMDA2NDQNCj4gPiA+IC0tLSBhL2Ry +aXZlcnMvaWlvL2NvbW1vbi9oaWQtc2Vuc29ycy9oaWQtc2Vuc29yLXRyaWdnZXIuYw0KPiA+ID4g +KysrIGIvZHJpdmVycy9paW8vY29tbW9uL2hpZC1zZW5zb3JzL2hpZC1zZW5zb3ItdHJpZ2dlci5j +DQo+ID4gPiBAQCAtNTEsOCArNTEsNiBAQCBzdGF0aWMgaW50IF9oaWRfc2Vuc29yX3Bvd2VyX3N0 +YXRlKHN0cnVjdMKgDQo+ID4gPiBoaWRfc2Vuc29yX2NvbW1vbiAqc3QsIGJvb2wgc3RhdGUpDQo+ +ID4gPiDCoAkJCXN0LT5yZXBvcnRfc3RhdGUucmVwb3J0X2lkLA0KPiA+ID4gwqAJCQlzdC0+cmVw +b3J0X3N0YXRlLmluZGV4LA0KPiA+ID4gwqAJCQlISURfVVNBR0VfU0VOU09SX1BST1BfUkVQT1JU +SU5HX1NUQVRFX0FMDQo+ID4gPiBMX0VWDQo+ID4gPiBFTlRTX0VOVU0pOw0KPiA+ID4gLQ0KPiA+ +ID4gLQkJcG9sbF92YWx1ZSA9IGhpZF9zZW5zb3JfcmVhZF9wb2xsX3ZhbHVlKHN0KTsNCj4gPiA+ +IMKgCX0gZWxzZSB7DQo+ID4gPiDCoAkJaW50IHZhbDsNCj4gPiA+IMKgDQo+ID4gPiBAQCAtODks +NyArODcsOSBAQCBzdGF0aWMgaW50IF9oaWRfc2Vuc29yX3Bvd2VyX3N0YXRlKHN0cnVjdMKgDQo+ +ID4gPiBoaWRfc2Vuc29yX2NvbW1vbiAqc3QsIGJvb2wgc3RhdGUpDQo+ID4gPiDCoAlzZW5zb3Jf +aHViX2dldF9mZWF0dXJlKHN0LT5oc2Rldiwgc3QtDQo+ID4gPiA+cG93ZXJfc3RhdGUucmVwb3J0 +X2lkLA0KPiA+ID4gwqAJCQnCoMKgwqDCoMKgwqDCoHN0LT5wb3dlcl9zdGF0ZS5pbmRleCwNCj4g +PiA+IMKgCQkJwqDCoMKgwqDCoMKgwqBzaXplb2Yoc3RhdGVfdmFsKSwgJnN0YXRlX3ZhbCk7DQo+ +ID4gPiAtCWlmIChzdGF0ZSAmJiBwb2xsX3ZhbHVlKQ0KPiA+ID4gKwlpZiAoc3RhdGUpDQo+ID4g +PiArCQlwb2xsX3ZhbHVlID0gaGlkX3NlbnNvcl9yZWFkX3BvbGxfdmFsdWUoc3QpOw0KPiA+ID4g +KwlpZiAocG9sbF92YWx1ZSA+IDApDQo+ID4gPiDCoAkJbXNsZWVwX2ludGVycnVwdGlibGUocG9s +bF92YWx1ZSAqIDIpOw0KPiA+ID4gwqANCj4gPiA+IMKgCXJldHVybsKgDQo+ID4gPiAwO07CoMKg +wqDCoMKgcsKgwqB5wqDCoMKgYiBYwqDCoMendiBeICneunsubiArwqDCoMKgwqB7wqDCoCoiwqDC +oF5uIHLCoMKgwqB6IBrCoMKgaMKgwqDCoMKgJsKgwqAeDQo+ID4gPiBHwqDCoMKgDQo+ID4gPiBo +IAMoIOmajiDdomoiwqDCoBogG23CoMKgwqDCoMKgeiDelsKgwqDCoGbCoMKgwqBowqDCoMKgfiBt +bWw9PQ0KPiANCj4g diff --git a/a/content_digest b/N1/content_digest index f614a20..e276036 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -2,167 +2,122 @@ "ref\01487741996.19408.0.camel@intel.com\0" "ref\01f73506c-2bdd-c527-cd13-76594a1a7375@kernel.org\0" "ref\0AE3E3DFA698D6144A7445C92D1D41E2F10BE0440@SHSMSX103.ccr.corp.intel.com\0" - "ref\0AE3E3DFA698D6144A7445C92D1D41E2F10BE0440-0J0gbvR4kTggGBtAFL8yw7fspsVTdybXVpNB7YpNyf8@public.gmane.org\0" - "From\0Pandruvada, Srinivas <srinivas.pandruvada-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>\0" + "From\0Pandruvada, Srinivas <srinivas.pandruvada@intel.com>\0" "Subject\0Re: [PATCH] iio: hid-sensor-trigger: Change get poll value function order to avoid sensor properties losing after resume from S3\0" "Date\0Mon, 27 Feb 2017 01:37:17 +0000\0" - "To\0linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>" + "To\0linux-input@vger.kernel.org <linux-input@vger.kernel.org>" Song - Hongyan <hongyan.song-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> - linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> - " jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>\0" - "Cc\0jikos-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org <jikos-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>\0" + Hongyan <hongyan.song@intel.com> + linux-iio@vger.kernel.org <linux-iio@vger.kernel.org> + " jic23@kernel.org <jic23@kernel.org>\0" + "Cc\0jikos@kernel.org <jikos@kernel.org>\0" "\00:1\0" "b\0" - "On Mon, 2017-02-27 at 01:00 +0000, Song, Hongyan wrote:\n" - "> Hi Jonathan,\n" - "> \tI add more information about the patch:\n" - "> \t\n" - "> Bug found:\302\240\n" - "> When we cat sensor incli sensor data with hysteresis value is 0,\n" - "> there always have streamed sensor data output,\n" - "> But when system enter S3 and resume back, the streaming thread is\n" - "> still on but there is not streaming sensor data output.\n" - "> Test data as below:\n" - "> 279: 2017-01-24 01:16:00.279385 *5* incli_3d: Min Delta: 99.779ms,\n" - "> Max Delta: 100.316ms, Received: 10/s, Overall: 170/16s; Sample values\n" - "> ,0.010546,-0.006712,2.797579\n" - "> 280: 2017-01-24 01:16:41.211385 *5* incli_3d: Min Delta: 100.16ms,\n" - "> Max Delta: 40924.6ms, Received: 2/s, Overall: 172/19s; Sample values\n" - "> ,0.010546,-0.006712,2.797579\n" - "> 281: 2017-01-24 01:16:42.219892 *5* incli_3d: Min Delta: 0.023ms, Max\n" - "> Delta: 543.28ms, Received: 2/s, Overall: 174/20s; Sample values\n" - "> ,0.010546,-0.006712,2.797579\n" - "> 282: 2017-01-24 01:16:42.755548 *4*\n" - "> CIIOSensorInform::sensor_wait_event poll timeout\n" - "> 283: 2017-01-24 01:16:43.223062 *5* incli_3d: Min Delta: --, Max\n" - "> Delta: --, Received: 0/s, Overall: 174/21s\n" - "> 284: 2017-01-24 01:16:43.756980 *4*\n" - "> CIIOSensorInform::sensor_wait_event poll timeout\n" - "> 285: 2017-01-24 01:16:44.225527 *5* incli_3d: Min Delta: --, Max\n" - "> Delta: --, Received: 0/s, Overall: 174/22s\n" - "> 286: 2017-01-24 01:16:44.758467 *4*\n" - "> CIIOSensorInform::sensor_wait_event poll timeout\n" - "> 287: 2017-01-24 01:16:45.228082 *5* incli_3d: Min Delta: --, Max\n" - "> Delta: --, Received: 0/s, Overall: 174/23s\n" - "> 288: 2017-01-24 01:16:45.759958 *4*\n" - "> CIIOSensorInform::sensor_wait_event poll timeout\n" - "> \n" - "> Root cause:\302\240\n" - "> when sensor resume back from S3, the sensor property user set is\n" - "> lost.\n" - "> For example, if we set sensor hysteresis value to be 0, then let\n" - "> system enter S3, when resume back, the hysteresis value will be not 0\n" - "> but the default value 1.\n" - "> \n" - "> this is not what we want, resume back from S3 should not lose the\n" - "> properties which is set before S3, just because the property setting\n" - "> sequence lead to this lose.\n" - "> \n" - "> This is patch is a fix patch and needed for stable.\n" - "But not urgent.\n" - "\n" - "Thanks,\n" - "Srinivas\n" - "\n" - "> \n" - "> Thanks a lot!\n" - "> \n" - "> BR\n" - "> Song Hongyan\n" - "> \n" - "> \n" - "> -----Original Message-----\n" - "> From: Jonathan Cameron [mailto:jic23@kernel.org]\302\240\n" - "> Sent: Sunday, February 26, 2017 12:52 AM\n" - "> To: Pandruvada, Srinivas <srinivas.pandruvada@intel.com>; linux-input\n" - "> @vger.kernel.org; Song, Hongyan <hongyan.song@intel.com>; linux-iio@v\n" - "> ger.kernel.org\n" - "> Cc: jikos@kernel.org\n" - "> Subject: Re: [PATCH] iio: hid-sensor-trigger: Change get poll value\n" - "> function order to avoid sensor properties losing after resume from S3\n" - "> \n" - "> On 22/02/17 05:40, Pandruvada, Srinivas wrote:\n" - "> > On Wed, 2017-02-22 at 17:17 +0800, Song Hongyan wrote:\n" - "> > > In function _hid_sensor_power_state(), when\n" - "> > > hid_sensor_read_poll_value()\n" - "> > > is called, sensor's all properties will be updated by the value\n" - "> > > from\302\240\n" - "> > > sensor hardware/firmware.\n" - "> > > In some implementation, sensor hardware/firmware will do a power\302\240\n" - "> > > cycle during S3. In this case, after resume, once\n" - "> > > hid_sensor_read_poll_value()\n" - "> > > is called, sensor's all properties which are kept by driver\n" - "> > > during S3\302\240\n" - "> > > will be changed to default value.\n" - "> > > But instead, if a set feature function is called first, sensor\302\240\n" - "> > > hardware/firmware will be recovered to the last status. So change\n" - "> > > the\n" - "> > > sensor_hub_set_feature() calling order to behind of set feature\302\240\n" - "> > > function to avoid sensor properties lose.\n" - "> > > \n" - "> > > Signed-off-by: Song Hongyan <hongyan.song@intel.com>\n" - "> > \n" - "> > Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>\n" - "> \n" - "> Hi Song,\n" - "> \n" - "> The patch message, whilst excellent on the technical detail, gives me\n" - "> no sense of urgency on this. Is this a fix we want to have heading\n" - "> for stable ASAP or are we looking at something seen in some\n" - "> developmental hardware for example?\n" - "> Links to bug reports, or examples of hardware suffering from the\n" - "> issue are always helpful as well.\n" - "> \n" - "> Also for something like this a 'fixes' tag is very helpful when\n" - "> people are looking to back port it.\n" - "> \n" - "> Anyhow, I'm going to hold off on taking this one until I have more\n" - "> information. Right now it makes little difference as the next fixes\n" - "> pull request from me will probably not be until next weekend.\n" - "> \n" - "> Thanks,\n" - "> \n" - "> Jonathan\n" - "> > \n" - "> > > ---\n" - "> > > \302\240drivers/iio/common/hid-sensors/hid-sensor-trigger.c | 6 +++---\n" - "> > > \302\2401 file changed, 3 insertions(+), 3 deletions(-)\n" - "> > > \n" - "> > > diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c\n" - "> > > b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c\n" - "> > > index a3cce3a..ecf592d 100644\n" - "> > > --- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c\n" - "> > > +++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c\n" - "> > > @@ -51,8 +51,6 @@ static int _hid_sensor_power_state(struct\302\240\n" - "> > > hid_sensor_common *st, bool state)\n" - "> > > \302\240\t\t\tst->report_state.report_id,\n" - "> > > \302\240\t\t\tst->report_state.index,\n" - "> > > \302\240\t\t\tHID_USAGE_SENSOR_PROP_REPORTING_STATE_AL\n" - "> > > L_EV\n" - "> > > ENTS_ENUM);\n" - "> > > -\n" - "> > > -\t\tpoll_value = hid_sensor_read_poll_value(st);\n" - "> > > \302\240\t} else {\n" - "> > > \302\240\t\tint val;\n" - "> > > \302\240\n" - "> > > @@ -89,7 +87,9 @@ static int _hid_sensor_power_state(struct\302\240\n" - "> > > hid_sensor_common *st, bool state)\n" - "> > > \302\240\tsensor_hub_get_feature(st->hsdev, st-\n" - "> > > >power_state.report_id,\n" - "> > > \302\240\t\t\t\302\240\302\240\302\240\302\240\302\240\302\240\302\240st->power_state.index,\n" - "> > > \302\240\t\t\t\302\240\302\240\302\240\302\240\302\240\302\240\302\240sizeof(state_val), &state_val);\n" - "> > > -\tif (state && poll_value)\n" - "> > > +\tif (state)\n" - "> > > +\t\tpoll_value = hid_sensor_read_poll_value(st);\n" - "> > > +\tif (poll_value > 0)\n" - "> > > \302\240\t\tmsleep_interruptible(poll_value * 2);\n" - "> > > \302\240\n" - "> > > \302\240\treturn\302\240\n" - "> > > 0;N\302\240\302\240\302\240\302\240\302\240r\302\240\302\240y\302\240\302\240\302\240b X\302\240\302\240\307\247v ^ )\336\272{.n +\302\240\302\240\302\240\302\240{\302\240\302\240*\"\302\240\302\240^n r\302\240\302\240\302\240z \032\302\240\302\240h\302\240\302\240\302\240\302\240&\302\240\302\240\036\n" - "> > > G\302\240\302\240\302\240\n" - "> > > h \003( \351\232\216 \335\242j\"\302\240\302\240\032 \033m\302\240\302\240\302\240\302\240\302\240z \336\226\302\240\302\240\302\240f\302\240\302\240\302\240h\302\240\302\240\302\240~ mml==\n" - "> \n" - > + "T24gTW9uLCAyMDE3LTAyLTI3IGF0IDAxOjAwICswMDAwLCBTb25nLCBIb25neWFuIHdyb3RlOg0K\n" + "PiBIaSBKb25hdGhhbiwNCj4gCUkgYWRkIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhdGNo\n" + "Og0KPiAJDQo+IEJ1ZyBmb3VuZDrCoA0KPiBXaGVuIHdlIGNhdCBzZW5zb3IgaW5jbGkgc2Vuc29y\n" + "IGRhdGEgd2l0aCBoeXN0ZXJlc2lzIHZhbHVlIGlzIDAsDQo+IHRoZXJlIGFsd2F5cyBoYXZlIHN0\n" + "cmVhbWVkIHNlbnNvciBkYXRhIG91dHB1dCwNCj4gQnV0IHdoZW4gc3lzdGVtIGVudGVyIFMzIGFu\n" + "ZCByZXN1bWUgYmFjaywgdGhlIHN0cmVhbWluZyB0aHJlYWQgaXMNCj4gc3RpbGwgb24gYnV0IHRo\n" + "ZXJlIGlzIG5vdCBzdHJlYW1pbmcgc2Vuc29yIGRhdGEgb3V0cHV0Lg0KPiBUZXN0IGRhdGEgYXMg\n" + "YmVsb3c6DQo+IDI3OTogMjAxNy0wMS0yNCAwMToxNjowMC4yNzkzODUgKjUqIGluY2xpXzNkOiBN\n" + "aW4gRGVsdGE6IDk5Ljc3OW1zLA0KPiBNYXggRGVsdGE6IDEwMC4zMTZtcywgUmVjZWl2ZWQ6IDEw\n" + "L3MsIE92ZXJhbGw6IDE3MC8xNnM7IFNhbXBsZSB2YWx1ZXMNCj4gLDAuMDEwNTQ2LC0wLjAwNjcx\n" + "MiwyLjc5NzU3OQ0KPiAyODA6IDIwMTctMDEtMjQgMDE6MTY6NDEuMjExMzg1ICo1KiBpbmNsaV8z\n" + "ZDogTWluIERlbHRhOiAxMDAuMTZtcywNCj4gTWF4IERlbHRhOiA0MDkyNC42bXMsIFJlY2VpdmVk\n" + "OiAyL3MsIE92ZXJhbGw6IDE3Mi8xOXM7IFNhbXBsZSB2YWx1ZXMNCj4gLDAuMDEwNTQ2LC0wLjAw\n" + "NjcxMiwyLjc5NzU3OQ0KPiAyODE6IDIwMTctMDEtMjQgMDE6MTY6NDIuMjE5ODkyICo1KiBpbmNs\n" + "aV8zZDogTWluIERlbHRhOiAwLjAyM21zLCBNYXgNCj4gRGVsdGE6IDU0My4yOG1zLCBSZWNlaXZl\n" + "ZDogMi9zLCBPdmVyYWxsOiAxNzQvMjBzOyBTYW1wbGUgdmFsdWVzDQo+ICwwLjAxMDU0NiwtMC4w\n" + "MDY3MTIsMi43OTc1NzkNCj4gMjgyOiAyMDE3LTAxLTI0IDAxOjE2OjQyLjc1NTU0OCAqNCoNCj4g\n" + "Q0lJT1NlbnNvckluZm9ybTo6c2Vuc29yX3dhaXRfZXZlbnQgcG9sbCB0aW1lb3V0DQo+IDI4Mzog\n" + "MjAxNy0wMS0yNCAwMToxNjo0My4yMjMwNjIgKjUqIGluY2xpXzNkOiBNaW4gRGVsdGE6IC0tLCBN\n" + "YXgNCj4gRGVsdGE6IC0tLCBSZWNlaXZlZDogMC9zLCBPdmVyYWxsOiAxNzQvMjFzDQo+IDI4NDog\n" + "MjAxNy0wMS0yNCAwMToxNjo0My43NTY5ODAgKjQqDQo+IENJSU9TZW5zb3JJbmZvcm06OnNlbnNv\n" + "cl93YWl0X2V2ZW50IHBvbGwgdGltZW91dA0KPiAyODU6IDIwMTctMDEtMjQgMDE6MTY6NDQuMjI1\n" + "NTI3ICo1KiBpbmNsaV8zZDogTWluIERlbHRhOiAtLSwgTWF4DQo+IERlbHRhOiAtLSwgUmVjZWl2\n" + "ZWQ6IDAvcywgT3ZlcmFsbDogMTc0LzIycw0KPiAyODY6IDIwMTctMDEtMjQgMDE6MTY6NDQuNzU4\n" + "NDY3ICo0Kg0KPiBDSUlPU2Vuc29ySW5mb3JtOjpzZW5zb3Jfd2FpdF9ldmVudCBwb2xsIHRpbWVv\n" + "dXQNCj4gMjg3OiAyMDE3LTAxLTI0IDAxOjE2OjQ1LjIyODA4MiAqNSogaW5jbGlfM2Q6IE1pbiBE\n" + "ZWx0YTogLS0sIE1heA0KPiBEZWx0YTogLS0sIFJlY2VpdmVkOiAwL3MsIE92ZXJhbGw6IDE3NC8y\n" + "M3MNCj4gMjg4OiAyMDE3LTAxLTI0IDAxOjE2OjQ1Ljc1OTk1OCAqNCoNCj4gQ0lJT1NlbnNvcklu\n" + "Zm9ybTo6c2Vuc29yX3dhaXRfZXZlbnQgcG9sbCB0aW1lb3V0DQo+IA0KPiBSb290IGNhdXNlOsKg\n" + "DQo+IHdoZW4gc2Vuc29yIHJlc3VtZSBiYWNrIGZyb20gUzMsIHRoZSBzZW5zb3IgcHJvcGVydHkg\n" + "dXNlciBzZXQgaXMNCj4gbG9zdC4NCj4gRm9yIGV4YW1wbGUsIGlmIHdlIHNldCBzZW5zb3IgaHlz\n" + "dGVyZXNpcyB2YWx1ZSB0byBiZSAwLCB0aGVuIGxldA0KPiBzeXN0ZW0gZW50ZXIgUzMsIHdoZW4g\n" + "cmVzdW1lIGJhY2ssIHRoZSBoeXN0ZXJlc2lzIHZhbHVlIHdpbGwgYmUgbm90IDANCj4gYnV0IHRo\n" + "ZSBkZWZhdWx0IHZhbHVlIDEuDQo+IA0KPiB0aGlzIGlzIG5vdCB3aGF0IHdlIHdhbnQsIHJlc3Vt\n" + "ZSBiYWNrIGZyb20gUzMgc2hvdWxkIG5vdCBsb3NlIHRoZQ0KPiBwcm9wZXJ0aWVzIHdoaWNoIGlz\n" + "IHNldCBiZWZvcmUgUzMsIGp1c3QgYmVjYXVzZSB0aGUgcHJvcGVydHkgc2V0dGluZw0KPiBzZXF1\n" + "ZW5jZSBsZWFkIHRvIHRoaXMgbG9zZS4NCj4gDQo+IFRoaXMgaXMgcGF0Y2ggaXMgYSBmaXggcGF0\n" + "Y2ggYW5kIG5lZWRlZCBmb3Igc3RhYmxlLg0KQnV0IG5vdCB1cmdlbnQuDQoNClRoYW5rcywNClNy\n" + "aW5pdmFzDQoNCj4gDQo+IFRoYW5rcyBhIGxvdCENCj4gDQo+IEJSDQo+IFNvbmcgSG9uZ3lhbg0K\n" + "PiANCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEpvbmF0aGFuIENh\n" + "bWVyb24gW21haWx0bzpqaWMyM0BrZXJuZWwub3JnXcKgDQo+IFNlbnQ6IFN1bmRheSwgRmVicnVh\n" + "cnkgMjYsIDIwMTcgMTI6NTIgQU0NCj4gVG86IFBhbmRydXZhZGEsIFNyaW5pdmFzIDxzcmluaXZh\n" + "cy5wYW5kcnV2YWRhQGludGVsLmNvbT47IGxpbnV4LWlucHV0DQo+IEB2Z2VyLmtlcm5lbC5vcmc7\n" + "IFNvbmcsIEhvbmd5YW4gPGhvbmd5YW4uc29uZ0BpbnRlbC5jb20+OyBsaW51eC1paW9Adg0KPiBn\n" + "ZXIua2VybmVsLm9yZw0KPiBDYzogamlrb3NAa2VybmVsLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BB\n" + "VENIXSBpaW86IGhpZC1zZW5zb3ItdHJpZ2dlcjogQ2hhbmdlIGdldCBwb2xsIHZhbHVlDQo+IGZ1\n" + "bmN0aW9uIG9yZGVyIHRvIGF2b2lkIHNlbnNvciBwcm9wZXJ0aWVzIGxvc2luZyBhZnRlciByZXN1\n" + "bWUgZnJvbSBTMw0KPiANCj4gT24gMjIvMDIvMTcgMDU6NDAsIFBhbmRydXZhZGEsIFNyaW5pdmFz\n" + "IHdyb3RlOg0KPiA+IE9uIFdlZCwgMjAxNy0wMi0yMiBhdCAxNzoxNyArMDgwMCwgU29uZyBIb25n\n" + "eWFuIHdyb3RlOg0KPiA+ID4gSW4gZnVuY3Rpb24gX2hpZF9zZW5zb3JfcG93ZXJfc3RhdGUoKSwg\n" + "d2hlbg0KPiA+ID4gaGlkX3NlbnNvcl9yZWFkX3BvbGxfdmFsdWUoKQ0KPiA+ID4gaXMgY2FsbGVk\n" + "LCBzZW5zb3IncyBhbGwgcHJvcGVydGllcyB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhlIHZhbHVlDQo+\n" + "ID4gPiBmcm9twqANCj4gPiA+IHNlbnNvciBoYXJkd2FyZS9maXJtd2FyZS4NCj4gPiA+IEluIHNv\n" + "bWUgaW1wbGVtZW50YXRpb24sIHNlbnNvciBoYXJkd2FyZS9maXJtd2FyZSB3aWxsIGRvIGEgcG93\n" + "ZXLCoA0KPiA+ID4gY3ljbGUgZHVyaW5nIFMzLiBJbiB0aGlzIGNhc2UsIGFmdGVyIHJlc3VtZSwg\n" + "b25jZQ0KPiA+ID4gaGlkX3NlbnNvcl9yZWFkX3BvbGxfdmFsdWUoKQ0KPiA+ID4gaXMgY2FsbGVk\n" + "LCBzZW5zb3IncyBhbGwgcHJvcGVydGllcyB3aGljaCBhcmUga2VwdCBieSBkcml2ZXINCj4gPiA+\n" + "IGR1cmluZyBTM8KgDQo+ID4gPiB3aWxsIGJlIGNoYW5nZWQgdG8gZGVmYXVsdCB2YWx1ZS4NCj4g\n" + "PiA+IEJ1dCBpbnN0ZWFkLCBpZiBhIHNldCBmZWF0dXJlIGZ1bmN0aW9uIGlzIGNhbGxlZCBmaXJz\n" + "dCwgc2Vuc29ywqANCj4gPiA+IGhhcmR3YXJlL2Zpcm13YXJlIHdpbGwgYmUgcmVjb3ZlcmVkIHRv\n" + "IHRoZSBsYXN0IHN0YXR1cy4gU28gY2hhbmdlDQo+ID4gPiB0aGUNCj4gPiA+IHNlbnNvcl9odWJf\n" + "c2V0X2ZlYXR1cmUoKSBjYWxsaW5nIG9yZGVyIHRvIGJlaGluZCBvZiBzZXQgZmVhdHVyZcKgDQo+\n" + "ID4gPiBmdW5jdGlvbiB0byBhdm9pZCBzZW5zb3IgcHJvcGVydGllcyBsb3NlLg0KPiA+ID4gDQo+\n" + "ID4gPiBTaWduZWQtb2ZmLWJ5OiBTb25nIEhvbmd5YW4gPGhvbmd5YW4uc29uZ0BpbnRlbC5jb20+\n" + "DQo+ID4gDQo+ID4gQWNrZWQtYnk6IFNyaW5pdmFzIFBhbmRydXZhZGEgPHNyaW5pdmFzLnBhbmRy\n" + "dXZhZGFAbGludXguaW50ZWwuY29tPg0KPiANCj4gSGkgU29uZywNCj4gDQo+IFRoZSBwYXRjaCBt\n" + "ZXNzYWdlLCB3aGlsc3QgZXhjZWxsZW50IG9uIHRoZSB0ZWNobmljYWwgZGV0YWlsLCBnaXZlcyBt\n" + "ZQ0KPiBubyBzZW5zZSBvZiB1cmdlbmN5IG9uIHRoaXMuIElzIHRoaXMgYSBmaXggd2Ugd2FudCB0\n" + "byBoYXZlIGhlYWRpbmcNCj4gZm9yIHN0YWJsZSBBU0FQIG9yIGFyZSB3ZSBsb29raW5nIGF0IHNv\n" + "bWV0aGluZyBzZWVuIGluIHNvbWUNCj4gZGV2ZWxvcG1lbnRhbCBoYXJkd2FyZSBmb3IgZXhhbXBs\n" + "ZT8NCj4gTGlua3MgdG8gYnVnIHJlcG9ydHMsIG9yIGV4YW1wbGVzIG9mIGhhcmR3YXJlIHN1ZmZl\n" + "cmluZyBmcm9tIHRoZQ0KPiBpc3N1ZSBhcmUgYWx3YXlzIGhlbHBmdWwgYXMgd2VsbC4NCj4gDQo+\n" + "IEFsc28gZm9yIHNvbWV0aGluZyBsaWtlIHRoaXMgYSAnZml4ZXMnIHRhZyBpcyB2ZXJ5IGhlbHBm\n" + "dWwgd2hlbg0KPiBwZW9wbGUgYXJlIGxvb2tpbmcgdG8gYmFjayBwb3J0IGl0Lg0KPiANCj4gQW55\n" + "aG93LCBJJ20gZ29pbmcgdG8gaG9sZCBvZmYgb24gdGFraW5nIHRoaXMgb25lIHVudGlsIEkgaGF2\n" + "ZSBtb3JlDQo+IGluZm9ybWF0aW9uLiBSaWdodCBub3cgaXQgbWFrZXMgbGl0dGxlIGRpZmZlcmVu\n" + "Y2UgYXMgdGhlIG5leHQgZml4ZXMNCj4gcHVsbCByZXF1ZXN0IGZyb20gbWUgd2lsbCBwcm9iYWJs\n" + "eSBub3QgYmUgdW50aWwgbmV4dCB3ZWVrZW5kLg0KPiANCj4gVGhhbmtzLA0KPiANCj4gSm9uYXRo\n" + "YW4NCj4gPiANCj4gPiA+IC0tLQ0KPiA+ID4gwqBkcml2ZXJzL2lpby9jb21tb24vaGlkLXNlbnNv\n" + "cnMvaGlkLXNlbnNvci10cmlnZ2VyLmMgfCA2ICsrKy0tLQ0KPiA+ID4gwqAxIGZpbGUgY2hhbmdl\n" + "ZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQ0KPiA+ID4gDQo+ID4gPiBkaWZmIC0t\n" + "Z2l0IGEvZHJpdmVycy9paW8vY29tbW9uL2hpZC1zZW5zb3JzL2hpZC1zZW5zb3ItdHJpZ2dlci5j\n" + "DQo+ID4gPiBiL2RyaXZlcnMvaWlvL2NvbW1vbi9oaWQtc2Vuc29ycy9oaWQtc2Vuc29yLXRyaWdn\n" + "ZXIuYw0KPiA+ID4gaW5kZXggYTNjY2UzYS4uZWNmNTkyZCAxMDA2NDQNCj4gPiA+IC0tLSBhL2Ry\n" + "aXZlcnMvaWlvL2NvbW1vbi9oaWQtc2Vuc29ycy9oaWQtc2Vuc29yLXRyaWdnZXIuYw0KPiA+ID4g\n" + "KysrIGIvZHJpdmVycy9paW8vY29tbW9uL2hpZC1zZW5zb3JzL2hpZC1zZW5zb3ItdHJpZ2dlci5j\n" + "DQo+ID4gPiBAQCAtNTEsOCArNTEsNiBAQCBzdGF0aWMgaW50IF9oaWRfc2Vuc29yX3Bvd2VyX3N0\n" + "YXRlKHN0cnVjdMKgDQo+ID4gPiBoaWRfc2Vuc29yX2NvbW1vbiAqc3QsIGJvb2wgc3RhdGUpDQo+\n" + "ID4gPiDCoAkJCXN0LT5yZXBvcnRfc3RhdGUucmVwb3J0X2lkLA0KPiA+ID4gwqAJCQlzdC0+cmVw\n" + "b3J0X3N0YXRlLmluZGV4LA0KPiA+ID4gwqAJCQlISURfVVNBR0VfU0VOU09SX1BST1BfUkVQT1JU\n" + "SU5HX1NUQVRFX0FMDQo+ID4gPiBMX0VWDQo+ID4gPiBFTlRTX0VOVU0pOw0KPiA+ID4gLQ0KPiA+\n" + "ID4gLQkJcG9sbF92YWx1ZSA9IGhpZF9zZW5zb3JfcmVhZF9wb2xsX3ZhbHVlKHN0KTsNCj4gPiA+\n" + "IMKgCX0gZWxzZSB7DQo+ID4gPiDCoAkJaW50IHZhbDsNCj4gPiA+IMKgDQo+ID4gPiBAQCAtODks\n" + "NyArODcsOSBAQCBzdGF0aWMgaW50IF9oaWRfc2Vuc29yX3Bvd2VyX3N0YXRlKHN0cnVjdMKgDQo+\n" + "ID4gPiBoaWRfc2Vuc29yX2NvbW1vbiAqc3QsIGJvb2wgc3RhdGUpDQo+ID4gPiDCoAlzZW5zb3Jf\n" + "aHViX2dldF9mZWF0dXJlKHN0LT5oc2Rldiwgc3QtDQo+ID4gPiA+cG93ZXJfc3RhdGUucmVwb3J0\n" + "X2lkLA0KPiA+ID4gwqAJCQnCoMKgwqDCoMKgwqDCoHN0LT5wb3dlcl9zdGF0ZS5pbmRleCwNCj4g\n" + "PiA+IMKgCQkJwqDCoMKgwqDCoMKgwqBzaXplb2Yoc3RhdGVfdmFsKSwgJnN0YXRlX3ZhbCk7DQo+\n" + "ID4gPiAtCWlmIChzdGF0ZSAmJiBwb2xsX3ZhbHVlKQ0KPiA+ID4gKwlpZiAoc3RhdGUpDQo+ID4g\n" + "PiArCQlwb2xsX3ZhbHVlID0gaGlkX3NlbnNvcl9yZWFkX3BvbGxfdmFsdWUoc3QpOw0KPiA+ID4g\n" + "KwlpZiAocG9sbF92YWx1ZSA+IDApDQo+ID4gPiDCoAkJbXNsZWVwX2ludGVycnVwdGlibGUocG9s\n" + "bF92YWx1ZSAqIDIpOw0KPiA+ID4gwqANCj4gPiA+IMKgCXJldHVybsKgDQo+ID4gPiAwO07CoMKg\n" + "wqDCoMKgcsKgwqB5wqDCoMKgYiBYwqDCoMendiBeICneunsubiArwqDCoMKgwqB7wqDCoCoiwqDC\n" + "oF5uIHLCoMKgwqB6IBrCoMKgaMKgwqDCoMKgJsKgwqAeDQo+ID4gPiBHwqDCoMKgDQo+ID4gPiBo\n" + "IAMoIOmajiDdomoiwqDCoBogG23CoMKgwqDCoMKgeiDelsKgwqDCoGbCoMKgwqBowqDCoMKgfiBt\n" + bWw9PQ0KPiANCj4g -783f1d14cba002a4cd2abe41680eb7d71749e1b82010cb709f07d32abbf10212 +650eb32c6617178ca292a59dc476e59ae3fbfcf94207cdb86413d87a0481ccb6
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.