From mboxrd@z Thu Jan 1 00:00:00 1970 From: Soeren Sonnenburg Subject: Re: [PATCH] appletouch powersaving - please apply for 2.6.23-rc1 take #3 Date: Tue, 17 Jul 2007 20:16:19 +0200 Message-ID: <1184696179.6161.18.camel@localhost> References: <1184656218.14051.43.camel@localhost> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-3iIqw4oSVkuVWbDcAuui" Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org To: Dmitry Torokhov Cc: Linux Kernel , linux-input@atrey.karlin.mff.cuni.cz, linux-usb-devel@lists.sourceforge.net, Matthew Garrett , Nicolas Boichat , Michael Hanselmann , Peter Osterlund , Frank Arnold , Stelian Pop , Johannes Berg , Greg Kroah-Hartman List-Id: linux-input@vger.kernel.org --=-3iIqw4oSVkuVWbDcAuui Content-Type: text/plain Content-Transfer-Encoding: 7bit On Tue, 2007-07-17 at 11:01 -0400, Dmitry Torokhov wrote: > Hi, > > On 7/17/07, Soeren Sonnenburg wrote: > > > > err_free_buffer: > > @@ -656,6 +699,7 @@ static void atp_disconnect(struct usb_interface *iface) > > > > usb_set_intfdata(iface, NULL); > > if (dev) { > > + cancel_work_sync(&dev->work); > > usb_kill_urb(dev->urb); > > input_unregister_device(dev->input); > > usb_buffer_free(dev->udev, dev->datalen, > > > > This should go into atp_close() and I think you need to do > cancel_work_sync after calling usb_kill_urb() otherwise you risk it > being submitted while you gettingto kill the urb. good catch. modified patch accordingly+attached. > How many boxes did you try this patch on? Mine plus 1 other. However please note that Matthews patch has been (which is what this patch is based on) is in the mactel-patches repository for quite some time now and that the not-yet-cleanup up variant of this patch was posted to mactel-devel... So the modeswitch part should work... Soeren -- Sometimes, there's a moment as you're waking, when you become aware of the real world around you, but you're still dreaming. --=-3iIqw4oSVkuVWbDcAuui Content-Disposition: attachment; filename=appletouch3.patch Content-Type: text/x-patch; name=appletouch3.patch; charset=ISO-8859-15 Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jIGIvZHJpdmVycy9p bnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMNCmluZGV4IGUzMjE1MjYuLjdmMTgwZjcgMTAwNjQ0DQot LS0gYS9kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYw0KKysrIGIvZHJpdmVycy9pbnB1 dC9tb3VzZS9hcHBsZXRvdWNoLmMNCkBAIC0xNTUsNiArMTU1LDggQEAgc3RydWN0IGF0cCB7DQog CWludAkJCXh5X2FjY1tBVFBfWFNFTlNPUlMgKyBBVFBfWVNFTlNPUlNdOw0KIAlpbnQJCQlvdmVy Zmxvd3dhcm47CS8qIG92ZXJmbG93IHdhcm5pbmcgcHJpbnRlZD8gKi8NCiAJaW50CQkJZGF0YWxl bjsJLyogc2l6ZSBvZiBhbiBVU0IgdXJiIHRyYW5zZmVyICovDQorCWludAkJCWlkbGVjb3VudDsg ICAgICAvKiBudW1iZXIgb2YgZW1wdHkgcGFja2V0cyAqLw0KKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qg ICAgICB3b3JrOw0KIH07DQogDQogI2RlZmluZSBkYmdfZHVtcChtc2csIHRhYikgXA0KQEAgLTIw OCw2ICsyMTAsNjMgQEAgc3RhdGljIGlubGluZSBpbnQgYXRwX2lzX2dleXNlcl8zKHN0cnVjdCBh dHAgKmRldikNCiAJCShwcm9kdWN0SWQgPT0gR0VZU0VSNF9KSVNfUFJPRFVDVF9JRCk7DQogfQ0K IA0KKy8qDQorICogQnkgZGVmYXVsdCBHZXlzZXIgMyBkZXZpY2Ugc2VuZHMgc3RhbmRhcmQgVVNC IEhJRCBtb3VzZQ0KKyAqIHBhY2tldHMgKFJlcG9ydCBJRCAyKS4gVGhpcyBjb2RlIGNoYW5nZXMg ZGV2aWNlIG1vZGUsIHNvIGl0DQorICogc2VuZHMgcmF3IHNlbnNvciByZXBvcnRzIChSZXBvcnQg SUQgNSkuDQorICovDQorc3RhdGljIGludCBhdHBfZ2V5c2VyM19pbml0KHN0cnVjdCB1c2JfZGV2 aWNlICp1ZGV2KQ0KK3sNCisJY2hhciBkYXRhWzhdOw0KKwlpbnQgc2l6ZTsNCisJaW50IGk7DQor DQorCXNpemUgPSB1c2JfY29udHJvbF9tc2codWRldiwgdXNiX3JjdmN0cmxwaXBlKHVkZXYsIDAp LA0KKwkJCQlBVFBfR0VZU0VSM19NT0RFX1JFQURfUkVRVUVTVF9JRCwNCisJCQkJVVNCX0RJUl9J TiB8IFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSwNCisJCQkJQVRQX0dFWVNF UjNfTU9ERV9SRVFVRVNUX1ZBTFVFLA0KKwkJCQlBVFBfR0VZU0VSM19NT0RFX1JFUVVFU1RfSU5E RVgsICZkYXRhLCA4LCA1MDAwKTsNCisNCisJaWYgKHNpemUgIT0gOCkgew0KKwkJcHJpbnRrKCJh cHBsZXRvdWNoIGF0cF9nZXlzZXIzX2luaXQgUkVBRCBlcnJvclxuIik7DQorCQlmb3IgKGk9MDsg aTw4OyBpKyspDQorCQkJcHJpbnRrKCJhcHBsZXRvdWNoWyVkXTogJWRcbiIsIGksIChpbnQpIGRh dGFbaV0pOw0KKw0KKwkJZXJyKCJDb3VsZCBub3QgZG8gbW9kZSByZWFkIHJlcXVlc3QgZnJvbSBk ZXZpY2UiDQorCQkgICAgIiAoR2V5c2VyIDMgbW9kZSkiKTsNCisJCXJldHVybiAtRUlPOw0KKwl9 DQorDQorCS8qIEFwcGx5IHRoZSBtb2RlIHN3aXRjaCAqLw0KKwlkYXRhWzBdID0gQVRQX0dFWVNF UjNfTU9ERV9WRU5ET1JfVkFMVUU7DQorDQorCXNpemUgPSB1c2JfY29udHJvbF9tc2codWRldiwg dXNiX3NuZGN0cmxwaXBlKHVkZXYsIDApLA0KKwkJCQlBVFBfR0VZU0VSM19NT0RFX1dSSVRFX1JF UVVFU1RfSUQsDQorCQkJCVVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfQ0xBU1MgfCBVU0JfUkVDSVBf SU5URVJGQUNFLA0KKwkJCQlBVFBfR0VZU0VSM19NT0RFX1JFUVVFU1RfVkFMVUUsDQorCQkJCUFU UF9HRVlTRVIzX01PREVfUkVRVUVTVF9JTkRFWCwgJmRhdGEsIDgsIDUwMDApOw0KKw0KKwlpZiAo c2l6ZSAhPSA4KSB7DQorCQlwcmludGsoImFwcGxldG91Y2ggYXRwX2dleXNlcjNfaW5pdCBXUklU RSBlcnJvclxuIik7DQorCQlmb3IgKGk9MDsgaTw4OyBpKyspDQorCQkJcHJpbnRrKCJhcHBsZXRv dWNoWyVkXTogJWRcbiIsIGksIChpbnQpIGRhdGFbaV0pOw0KKwkJZXJyKCJDb3VsZCBub3QgZG8g bW9kZSB3cml0ZSByZXF1ZXN0IHRvIGRldmljZSINCisJCSAgICAiIChHZXlzZXIgMyBtb2RlKSIp Ow0KKwkJcmV0dXJuIC1FSU87DQorCX0NCisJcmV0dXJuIDA7DQorfQ0KKw0KKy8qIFJlaW5pdGlh bGlzZSB0aGUgZGV2aWNlIGlmIGl0J3MgYSBnZXlzZXIgMyAqLw0KK3N0YXRpYyB2b2lkIGF0cF9y ZWluaXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KK3sNCisJc3RydWN0IGF0cCAqZGV2ID0g Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhdHAsIHdvcmspOw0KKwlzdHJ1Y3QgdXNiX2Rldmlj ZSAqdWRldiA9IGRldi0+dWRldjsNCisNCisJZGV2LT5pZGxlY291bnQgPSAwOw0KKwlhdHBfZ2V5 c2VyM19pbml0KHVkZXYpOw0KK30NCisNCiBzdGF0aWMgaW50IGF0cF9jYWxjdWxhdGVfYWJzKGlu dCAqeHlfc2Vuc29ycywgaW50IG5iX3NlbnNvcnMsIGludCBmYWN0LA0KIAkJCSAgICAgaW50ICp6 LCBpbnQgKmZpbmdlcnMpDQogew0KQEAgLTQ0OSwxMSArNTA4LDIxIEBAIHN0YXRpYyB2b2lkIGF0 cF9jb21wbGV0ZShzdHJ1Y3QgdXJiKiB1cmIpDQogDQogCQkvKiByZXNldCB0aGUgYWNjdW11bGF0 b3Igb24gcmVsZWFzZSAqLw0KIAkJbWVtc2V0KGRldi0+eHlfYWNjLCAwLCBzaXplb2YoZGV2LT54 eV9hY2MpKTsNCi0JfQ0KIA0KLQlpbnB1dF9yZXBvcnRfa2V5KGRldi0+aW5wdXQsIEJUTl9MRUZU LA0KLQkJCSAhIWRldi0+ZGF0YVtkZXYtPmRhdGFsZW4gLSAxXSk7DQorCQkvKiBHZXlzZXIgMyB3 aWxsIGNvbnRpbnVlIHRvIHNlbmQgcGFja2V0cyBjb250aW51YWxseSBhZnRlcg0KKwkJICAgdGhl IGZpcnN0IHRvdWNoIHVubGVzcyByZWluaXRpYWxpc2VkLiBEbyBzbyBpZiBpdCdzIGJlZW4NCisJ CSAgIGlkbGUgZm9yIGEgd2hpbGUgaW4gb3JkZXIgdG8gYXZvaWQgd2FraW5nIHRoZSBrZXJuZWwg dXANCisJCSAgIHNldmVyYWwgaHVuZHJlZCB0aW1lcyBhIHNlY29uZCAqLw0KKwkJaWYgKGF0cF9p c19nZXlzZXJfMyhkZXYpKSB7DQorCQkJZGV2LT5pZGxlY291bnQrKzsNCisJCQlpZiAoZGV2LT5p ZGxlY291bnQgPT0gMTApIHsNCisJCQkJZGV2LT52YWxpZD0wOw0KKwkJCQlzY2hlZHVsZV93b3Jr ICgmZGV2LT53b3JrKTsNCisJCQl9DQorCQl9DQorCX0NCiANCisJaW5wdXRfcmVwb3J0X2tleShk ZXYtPmlucHV0LCBCVE5fTEVGVCwgZGV2LT5kYXRhW2Rldi0+ZGF0YWxlbi0xXSAmIDEpOw0KIAlp bnB1dF9zeW5jKGRldi0+aW5wdXQpOw0KIA0KIGV4aXQ6DQpAQCAtNDgwLDYgKzU0OSw3IEBAIHN0 YXRpYyB2b2lkIGF0cF9jbG9zZShzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dCkNCiAJc3RydWN0IGF0 cCAqZGV2ID0gaW5wdXRfZ2V0X2RydmRhdGEoaW5wdXQpOw0KIA0KIAl1c2Jfa2lsbF91cmIoZGV2 LT51cmIpOw0KKwljYW5jZWxfd29ya19zeW5jKCZkZXYtPndvcmspOw0KIAlkZXYtPm9wZW4gPSAw Ow0KIH0NCiANCkBAIC01MjgsNDAgKzU5OCwxMCBAQCBzdGF0aWMgaW50IGF0cF9wcm9iZShzdHJ1 Y3QgdXNiX2ludGVyZmFjZSAqaWZhY2UsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZA0K IAkJZGV2LT5kYXRhbGVuID0gODE7DQogDQogCWlmIChhdHBfaXNfZ2V5c2VyXzMoZGV2KSkgew0K LQkJLyoNCi0JCSAqIEJ5IGRlZmF1bHQgR2V5c2VyIDMgZGV2aWNlIHNlbmRzIHN0YW5kYXJkIFVT QiBISUQgbW91c2UNCi0JCSAqIHBhY2tldHMgKFJlcG9ydCBJRCAyKS4gVGhpcyBjb2RlIGNoYW5n ZXMgZGV2aWNlIG1vZGUsIHNvIGl0DQotCQkgKiBzZW5kcyByYXcgc2Vuc29yIHJlcG9ydHMgKFJl cG9ydCBJRCA1KS4NCi0JCSAqLw0KLQkJY2hhciBkYXRhWzhdOw0KLQkJaW50IHNpemU7DQotDQot CQlzaXplID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9yY3ZjdHJscGlwZSh1ZGV2LCAwKSwN Ci0JCQlBVFBfR0VZU0VSM19NT0RFX1JFQURfUkVRVUVTVF9JRCwNCi0JCQlVU0JfRElSX0lOIHwg VVNCX1RZUEVfQ0xBU1MgfCBVU0JfUkVDSVBfSU5URVJGQUNFLA0KLQkJCUFUUF9HRVlTRVIzX01P REVfUkVRVUVTVF9WQUxVRSwNCi0JCQlBVFBfR0VZU0VSM19NT0RFX1JFUVVFU1RfSU5ERVgsICZk YXRhLCA4LCA1MDAwKTsNCi0NCi0JCWlmIChzaXplICE9IDgpIHsNCi0JCQllcnIoIkNvdWxkIG5v dCBkbyBtb2RlIHJlYWQgcmVxdWVzdCBmcm9tIGRldmljZSINCi0JCQkJCQkJIiAoR2V5c2VyIDMg bW9kZSkiKTsNCisJCS8qIHN3aXRjaCB0byByYXcgc2Vuc29yIG1vZGUgKi8NCisJCWlmIChhdHBf Z2V5c2VyM19pbml0KHVkZXYpKQ0KIAkJCWdvdG8gZXJyX2ZyZWVfZGV2czsNCi0JCX0NCi0NCi0J CS8qIEFwcGx5IHRoZSBtb2RlIHN3aXRjaCAqLw0KLQkJZGF0YVswXSA9IEFUUF9HRVlTRVIzX01P REVfVkVORE9SX1ZBTFVFOw0KLQ0KLQkJc2l6ZSA9IHVzYl9jb250cm9sX21zZyh1ZGV2LCB1c2Jf c25kY3RybHBpcGUodWRldiwgMCksDQotCQkJQVRQX0dFWVNFUjNfTU9ERV9XUklURV9SRVFVRVNU X0lELA0KLQkJCVVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfQ0xBU1MgfCBVU0JfUkVDSVBfSU5URVJG QUNFLA0KLQkJCUFUUF9HRVlTRVIzX01PREVfUkVRVUVTVF9WQUxVRSwNCi0JCQlBVFBfR0VZU0VS M19NT0RFX1JFUVVFU1RfSU5ERVgsICZkYXRhLCA4LCA1MDAwKTsNCiANCi0JCWlmIChzaXplICE9 IDgpIHsNCi0JCQllcnIoIkNvdWxkIG5vdCBkbyBtb2RlIHdyaXRlIHJlcXVlc3QgdG8gZGV2aWNl Ig0KLQkJCQkJCQkiIChHZXlzZXIgMyBtb2RlKSIpOw0KLQkJCWdvdG8gZXJyX2ZyZWVfZGV2czsN Ci0JCX0NCiAJCXByaW50aygiYXBwbGV0b3VjaCBHZXlzZXIgMyBpbml0ZWQuXG4iKTsNCiAJfQ0K IA0KQEAgLTYzNiw2ICs2NzYsOCBAQCBzdGF0aWMgaW50IGF0cF9wcm9iZShzdHJ1Y3QgdXNiX2lu dGVyZmFjZSAqaWZhY2UsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZA0KIAkvKiBzYXZl IG91ciBkYXRhIHBvaW50ZXIgaW4gdGhpcyBpbnRlcmZhY2UgZGV2aWNlICovDQogCXVzYl9zZXRf aW50ZmRhdGEoaWZhY2UsIGRldik7DQogDQorCUlOSVRfV09SSygmZGV2LT53b3JrLCBhdHBfcmVp bml0KTsNCisNCiAJcmV0dXJuIDA7DQogDQogIGVycl9mcmVlX2J1ZmZlcjoNCi== --=-3iIqw4oSVkuVWbDcAuui--