From mboxrd@z Thu Jan 1 00:00:00 1970 From: Taichi Kageyama Subject: Re: [PATCH 2/2] serial: 8250: Allow to skip autoconfig_irq() for a console Date: Wed, 29 Jul 2015 08:09:01 +0000 Message-ID: <55B88A1D.2000601@cp.jp.nec.com> References: <55717224.9060104@cp.jp.nec.com> <557173EC.5000307@cp.jp.nec.com> <559D0FCC.5040107@hurleysoftware.com> <559D1D39.9070405@redhat.com> <559D2AE8.8080603@hurleysoftware.com> <559D2CFB.1060507@redhat.com> <559E075F.8040800@cp.jp.nec.com> <55A05F56.90305@hurleysoftware.com> <55A462D1.3080709@cp.jp.nec.com> <55A56313.4050703@hurleysoftware.com> <55A78042.2090408@cp.jp.nec.com> <55AD237B.1080904@hurleysoftware.com> <55AE147D.5020808@cp.jp.nec.com> <55B68A05.2060809@hurleysoftware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <55B68A05.2060809@hurleysoftware.com> Content-Language: ja-JP Content-ID: <8EE8E538AB20A94688983C9E43BD7387@gisp.nec.co.jp> Sender: linux-kernel-owner@vger.kernel.org To: Peter Hurley Cc: Prarit Bhargava , "gregkh@linuxfoundation.org" , "linux-serial@vger.kernel.org" , "jslaby@suse.cz" , "linux-kernel@vger.kernel.org" , Naoya Horiguchi List-Id: linux-serial@vger.kernel.org T24gMjAxNS8wNy8yOCA0OjQ0LCBQZXRlciBIdXJsZXkgd3JvdGU6DQo+IE9uIDA3LzIxLzIwMTUg MDU6NDQgQU0sIFRhaWNoaSBLYWdleWFtYSB3cm90ZToNCj4+IE9uIDIwMTUvMDcvMjEgMTozNiwg UGV0ZXIgSHVybGV5IHdyb3RlOg0KPj4+IE9uIDA3LzE2LzIwMTUgMDU6NTggQU0sIFRhaWNoaSBL YWdleWFtYSB3cm90ZToNCj4+Pj4gT24gMjAxNS8wNy8xNSA0OjI5LCBQZXRlciBIdXJsZXkgd3Jv dGU6DQo+Pj4+PiBPbiAwNy8xMy8yMDE1IDA5OjE2IFBNLCBUYWljaGkgS2FnZXlhbWEgd3JvdGU6 DQo+Pj4+Pj4gT24gMjAxNS8wNy8xMSA5OjEyLCBQZXRlciBIdXJsZXkgd3JvdGU6DQo+Pj4+Pj4+ IE9uIDA3LzA5LzIwMTUgMDE6MzIgQU0sIFRhaWNoaSBLYWdleWFtYSB3cm90ZToNCj4+Pj4+Pj4+ IE9uIDIwMTUvMDcvMDggMjM6MDAsIFByYXJpdCBCaGFyZ2F2YSB3cm90ZToNCj4+Pj4+Pj4+PiBP biAwNy8wOC8yMDE1IDA5OjUxIEFNLCBQZXRlciBIdXJsZXkgd3JvdGU6DQo+Pj4+Pj4+Pj4+IE9u IDA3LzA4LzIwMTUgMDg6NTMgQU0sIFByYXJpdCBCaGFyZ2F2YSB3cm90ZToNCj4+Pj4+Pj4+Pj4+ IE9uIDA3LzA4LzIwMTUgMDc6NTUgQU0sIFBldGVyIEh1cmxleSB3cm90ZToNCj4+Pj4+Pj4+Pj4+ PiBPbiAwNi8wNS8yMDE1IDA2OjAzIEFNLCBUYWljaGkgS2FnZXlhbWEgd3JvdGU6DQo+Pj4+Pj4+ Pj4+Pj4+IFRoaXMgcGF0Y2ggcHJvdmlkZXMgYSBuZXcgcGFyYW1ldGVyIGFzIGEgd29ya2Fyb3Vu ZCBvZiB0aGUgZm9sbG93aW5nDQo+Pj4+Pj4+Pj4+Pj4+IHByb2JsZW0uIEl0IGFsbG93cyB1cyB0 byBza2lwIGF1dG9jb25maWdfaXJxKCkgYW5kIHRvIHVzZSBhIHdlbGwta25vd24gaXJxDQo+Pj4+ Pj4+Pj4+Pj4+IG51bWJlciBmb3IgYSBjb25zb2xlIGV2ZW4gaWYgQ09ORklHX1NFUklBTF84MjUw X0RFVEVDVF9JUlEgaXMgZGVmaW5lZC4NCj4+Pj4+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+Pj4+Pj4gVGhl cmUncmUgY2FzZXMgd2hlcmUgYXV0b2NvbmZpZ19pcnEoKSBmYWlscyBkdXJpbmcgYm9vdC4NCj4+ Pj4+Pj4+Pj4+Pj4gSW4gdGhlc2UgY2FzZXMsIHRoZSBjb25zb2xlIGRvZXNuJ3Qgd29yayBpbiBp bnRlcnJ1cHQgbW9kZSwNCj4+Pj4+Pj4+Pj4+Pj4gdGhlIG1vZGUgY2Fubm90IGJlIGNoYW5nZWQg YW55bW9yZSwgYW5kICJpbnB1dCBvdmVycnVuIg0KPj4+Pj4+Pj4+Pj4+PiAod2hpY2ggY2FuIG1h a2Ugb3BlcmF0aW9uIG1pc3Rha2VzKSBoYXBwZW5zIGVhc2lseS4NCj4+Pj4+Pj4+Pj4+Pj4gVGhp cyBwcm9ibGVtIGhhcHBlbnMgd2l0aCBoaWdoIHJhdGUgZXZlcnkgYm9vdCBvbmNlIGl0IG9jY3Vy cw0KPj4+Pj4+Pj4+Pj4+PiBiZWNhdXNlIHRoZSBib290IHNlcXVlbmNlIGlzIGFsd2F5cyBhbG1v c3Qgc2FtZS4NCj4+Pj4+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+Pj4+Pj4gYXV0b2NvbmZpZ19pcnEoKSBh c3N1bWVzIHRoYXQgYSBDUFUgY2FuIGhhbmRsZSBhbiBpbnRlcnJ1cHQgZnJvbSBhIHNlcmlhbA0K Pj4+Pj4+Pj4+Pj4+PiBkdXJpbmcgdGhlIHdhaXRpbmcgdGltZSwgYnV0IHRoZXJlJ3JlIHNvbWUg Y2FzZXMgd2hlcmUgdGhlIENQVSBjYW5ub3QNCj4+Pj4+Pj4+Pj4+Pj4gaGFuZGxlIHRoZSBpbnRl cnJ1cHQgZm9yIGxvbmdlciB0aGFuIHRoZSB0aW1lLiBJdCBjb21wbGV0ZWx5IGRlcGVuZHMgb24N Cj4+Pj4+Pj4+Pj4+Pj4gaG93IG90aGVyIGZ1bmN0aW9ucyB3b3JrIG9uIHRoZSBDUFUuIElkZWFs bHksIGF1dG9jb25maWdfaXJxKCkgc2hvdWxkIGJlDQo+Pj4+Pj4+Pj4+Pj4+IGZpeGVkDQo+Pj4+ Pj4+Pj4+Pj4NCj4+Pj4+Pj4+DQo+Pj4+Pj4+PiBUaGFuayB5b3UgZm9yIHlvdXIgY29tbWVudHMu DQo+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+Pj4+IEl0IGNvbXBsZXRlbHkgZGVwZW5kcyBvbiBob3cgbG9u ZyBzb21lIG90aGVyIGRyaXZlciBoYXMgaW50ZXJydXB0cyBkaXNhYmxlZCwNCj4+Pj4+Pj4+DQo+ Pj4+Pj4+PiBBZ3JlZS4NCj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4+Pj4gd2hpY2ggaXMgYSBwcm9ibGVt IHRoYXQgbmVlZHMgZml4ZWQgX2luIHRoYXQgZHJpdmVyXy4gYXV0b2NvbmZpZ19pcnEoKSBkb2Vz IG5vdA0KPj4+Pj4+Pj4+Pj4+IG5lZWQgZml4aW5nLg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+IFBldGVy LCBpZGVhbGx5LCB5b3UncmUgcmlnaHQuDQo+Pj4+Pj4+PiBIb3dldmVyLCB3ZSBjYW5ub3QgYXNz dW1lIGhvdyBsb25nIG90aGVyIGRyaXZlcnMgZGlzYWJsZSBpbnRlcnJ1cHRzLg0KPj4+Pj4+Pj4g VGhhdCdzIHdoeSBJIGludHJvZHVjZWQgdGhpcyB3b3JrYXJvdW5kLg0KPj4+Pj4+Pj4gSW4gbXkg b3BpbmlvbiwgYSBjb25zb2xlIGlzIGltcG9ydGFudCBhbmQgYWx3YXlzIHNob3VsZCBiZSBhdmFp bGFibGUNCj4+Pj4+Pj4+IGV2ZW4gaWYgb3RoZXIgZHJpdmVycyBoYXZlIGEgYmFkIGJlaGF2aW9y Lg0KPj4+Pj4+Pg0KPj4+Pj4+PiBJIGhhdmUgbm8gcHJvYmxlbSB3aXRoIHdhbnRpbmcgdG8gbWFr ZSB0aGUgY29uc29sZSBtb3JlIHJvYnVzdCwgYnV0DQo+Pj4+Pj4+IHJhdGhlciB3aXRoIHRoZSBo YWNreSB3YXkgdGhpcyBpcyBiZWluZyBkb25lLg0KPj4+Pj4+DQo+Pj4+Pj4gSGkgUGV0ZXIsDQo+ Pj4+Pj4NCj4+Pj4+PiBUaGFuayB5b3UgZm9yIHlvdXIgYWR2aWNlLg0KPj4+Pj4+IElmIHRoZXJl IGlzIG90aGVyIHdheSB0byBmaXggdGhpcyBwcm9ibGVtIHNpbXBseSwNCj4+Pj4+PiBJIGFsc28g dGhpbmsgaXQncyBiZXR0ZXIgdGhhbiB0aGUgZGlydHkgaGFjay4NCj4+Pj4+DQo+Pj4+PiBXaGls ZSBtb2R1bGUgcGFyYW1ldGVycyBzZWVtIGxpa2UgInNpbXBsZSIgc29sdXRpb25zIGF0IHRoZSB0 aW1lLA0KPj4+Pj4gdGhleSBhZGQgcmVhbCBtYWludGVuYW5jZSBidXJkZW4sIGJlY2F1c2UgdGhl eSBlc3RhYmxpc2ggdXNlcnNwYWNlDQo+Pj4+PiByZXF1aXJlbWVudHMgdGhhdCBtdXN0IGJlIHBy ZXNlcnZlZCBmb3JldmVyIHRvIGF2b2lkIGJyZWFrYWdlLg0KPj4+Pg0KPj4+PiBZZWFoLCBJIGFn cmVlIHdpdGggeW91Lg0KPj4+Pg0KPj4+Pj4+PiBCZXR0ZXIgc29sdXRpb25zOg0KPj4+Pj4+PiAx LiBGaXggYXV0b3Byb2JpbmcgdG8gZm9yY2UgaXJxIGFmZmluaXR5IHRvIGF1dG9wcm9iaW5nIGNw dQ0KPj4+Pj4+DQo+Pj4+Pj4gSSBjb3VsZG4ndCBtYWtlIHN1cmUgd2hpY2ggQ1BVIGhhbmRsZWQg c2VyaWFsIGludGVycnVwdA0KPj4+Pj4+IG9uIGFsbCBwbGF0Zm9ybXMgYmVmb3JlIGlycSMgd2Fz IG5vdCBrbm93bi4NCj4+Pj4+PiBEbyB5b3Uga25vdyB0aGUgd2F5IHRvIGRldGVjdCB3aGljaCBD UFUgaXMgdXNlZCBmb3IgY29uc29sZSBzZXJpYWw/DQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4+IFRoZSBi YXNpYyBpZGVhIHdvdWxkIGJlOg0KPj4+Pj4gMS4gZGlzYWJsZSBwcmVlbXB0aW9uDQo+Pj4+PiAy LiBmb3IgZWFjaCBpcnEgZGVzY3JpcHRvciBzZWxlY3RlZCBmb3IgYXV0b3Byb2JpbmcsIHNldCB0 aGUgaXJxDQo+Pj4+PiAgICAgIGFmZmluaXR5IHRvIHRoZSBjdXJyZW50IHByb2Nlc3Nvci4NCj4+ Pj4+IDMuIHByb2JlIHRoZSBpL28gcG9ydCBhcyBpcyBkb25lIG5vdw0KPj4+Pj4gNC4gc3RvcCBw cm9iaW5nDQo+Pj4+PiA1LiByZS1lbmFibGUgcHJlZW1wdGlvbi4NCj4+Pj4NCj4+Pj4gVGhhbmtz LCBJIHRoaW5rIGl0IHdvcmtzLg0KPj4+Pg0KPj4+Pj4gV2l0aCB0aGlzIHNvbHV0aW9uLCB5b3Vy IHBhdGNoIDEvMiB3b3VsZG4ndCBiZSByZXF1aXJlZCBlaXRoZXINCj4+Pj4+IGJlY2F1c2UgdGhl IHdvcmtlciB0aHJlYWQgdGhhdCBkaXNhYmxlZCBpbnRlcnJ1cHRzIHdvdWxkbid0IGJlDQo+Pj4+ PiBydW5uaW5nIG9uIHRoZSBjcHUgZGV0ZWN0aW5nIHRoZSB0cmlnZ2VyZWQgaXJxKHMpLg0KPj4+ Pg0KPj4+PiBJIHN0aWxsIG5lZWQgbXkgcGF0Y2ggMS8yIHdoaWNoIGZpeGVzIGFsc28gb3RoZXIg Y2FzZXMgKHNlZSBjYXNlMiAmIDMpLg0KPj4+PiBJIHRoaW5rIGJvdGggcG9ydC0+bG9jayBhbmQg Y29uc29sZV9sb2NrIGFyZSByZXF1aXJlZCBpbiB5b3VyIHNvbHV0aW9uLg0KPj4+PiB0byBhdm9p ZCBkZWFkbG9jayBiZWNhdXNlIHByaW50aygpIGNhbiBiZSBjYWxsZWQgb24gZXZlcnkgY29udGV4 dC4NCj4+Pj4NCj4+Pj4+IEkgd291bGQgaW1hZ2luZSBtb3N0IG9yIGFsbCBvZiB0aGlzIHdvdWxk IGJlIGRvbmUgaW4NCj4+Pj4+IHByb2JlX2lycV9vbigpLCBwb3NzaWJseSByZWZhY3RvcmVkIHRv IHBlcmZvcm0gdGhlIHByZWVtcHRpb24NCj4+Pj4+IGRpc2FibGUgYW5kIGlycSBhZmZpbml0eS4N Cj4+Pj4NCj4+Pj4gSSB0aGluayBpbnRyb2R1Y2luZyBuZXcgZnVuY3Rpb24gbGlrZSAicHJvYmVf aXJxX3NldF9hZmZpbml0eSgpIiBpcyBiZXR0ZXINCj4+Pj4gdGhhbiBtb2RpZnlpbmcgcHJvYmVf aXJxX29uKCkuIEkgY2Fubm90IHRlc3QgYWxsIGxlZ2FjeSBkZXZpY2VzIGFuZA0KPj4+PiBJIGRv bid0IGhhdmUgYW55IHJlYXNvbiB0byBicmVhayB0aGUgY29kZSB3aGljaCB3b3JrcyBmb3Igb3Ro ZXIgZGV2aWNlcy4NCj4+Pg0KPj4+IFRoYXQncyBmaW5lLCBhbHRob3VnaCBtb3N0IG9mIHRoZSBh cmd1bWVudHMgZm9yIGZpeGluZyB0aGlzIGluIHRoZSBzZXJpYWwNCj4+PiBkcml2ZXIgYXBwbHkg ZXF1YWxseSB0byBvdGhlciB1c2VycyBvZiBwcm9iZV9pcnFfb24oKS4NCj4+Pg0KPj4+DQo+Pj4+ Pj4gVGhlIHdheSBpcyBzYWZlIGZvciBhbGwgcGxhdGZvcm1zPw0KPj4+Pj4NCj4+Pj4+IFBsZWFz ZSB1bmRlcnN0YW5kIHRob3VnaCwgYXV0b3Byb2JpbmcgaXMgbm90IHNhZmUsIHBlcmlvZC4NCj4+ Pj4+IEV2ZW4gc2F5cyBzbyBpbiBLY29uZmlnLg0KPj4+Pg0KPj4+PiBPSywgSSdsbCB0cnkgdG8g Y3JlYXRlIG5ldyBwYXRjaCB3aGljaCBtYWtlcyBhdXRvcHJvYmluZyBzYWZlciBhcyBwb3NzaWJs ZS4NCj4+Pj4gTmV3IHBhdGNoIGlzIGdvaW5nIHRvIGJlIGxpa2UgYmVsb3cuDQo+Pj4+ICAgIDEu IGNvbnNvbGUgYW5kIHBvcnQgbG9jaw0KPj4+PiAgICAyLiBwcm9iZV9pcnFfb24oKQ0KPj4+PiAg ICAzLiBwcm9iZV9pcnFfc2V0X2FmZmluaXR5KCZjcHVtYXNrKQ0KPj4+PiAgICA0LiBwcm9iZV9p cnFfb2ZmKCkNCj4+Pj4gICAgNS4gcG9ydCBhbmQgY29uc29sZSB1bmxvY2sNCj4+Pg0KPj4+IFRo ZSBwb3J0LT5sb2NrIGNhbid0IGJlIHRha2VuIGluIHRoaXMgY29udGV4dCBiZWNhdXNlIGhhcmQg aXJxDQo+Pj4gaGFzIHRvIGJlIGRpc2FibGVkIHdpdGggcG9ydC0+bG9jayB3aGljaCBkZWZlYXRz IHRoZSBwdXJwb3NlIG9mDQo+Pj4gcGlubmluZyB0aGUgaXJxIGFmZmluaXR5IHRvIHRoZSBjdXJy ZW50IGNwdS4NCj4+DQo+PiBNeSB0ZXN0IGNvZGUgdXNlcyBzcGluX2xvY2soKSBpbnN0ZWFkIG9m IHNwaW5fbG9ja19pcnFzYXZlKCkuDQo+Pg0KPj4+IFdoYXQgYXJlIHlvdSBjb25jZXJuZWQgYWJv dXQgYmVpbmcgY29uY3VycmVudCB3aXRoIGF1dG9jb25maWdfaXJxKCk/DQo+Pj4gTWFueSBvcGVy YXRpb25zIGFyZSBleGNsdWRlZCBieSB0aGUgcG9ydC0+bXV0ZXguDQo+Pg0KPj4gQWN0dWFsbHkg SSBkb24ndCBoYXZlIGFueSBjb25jZXJucyBhcyBsb25nIGFzIGNvbnNvbGVfbG9jaygpIGlzIHVz ZWQsDQo+PiBidXQgSSB0aG91Z2h0IHByb3RlY3RpbmcgcG9ydCB3YXMgYmV0dGVyIGR1cmluZyBh dXRvX2lycQ0KPj4gb3IgcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcyBzYW1lIGFzIGF1dG9jb25maWco KS4NCj4+DQo+PiBJIHdhcyB0aGlua2luZyB0aGV5IGFyZSB1c2VkIGFzIHRoZSBmb2xsb3dpbmcg cHVycG9zZXM7DQo+PiAgICBjb25zb2xlX2xvY2soKQ0KPj4gICAgICsgTWFrZSBzdXJlIHNlcmlh bDgyNTBfY29uc29sZV93cml0ZSgpIGRvZXNuJ3QgZGlzYWJsZSBpbnRlcnJ1cHQsDQo+PiAgICAg ICB0cnkgdG8gZ2V0IHBvcnQtPmxvY2sgb3IgdG91Y2ggdGhlIGN0cmwgcmVnaXN0ZXIgb2YgdGhl IHBvcnQuDQo+PiAgICAgICAjIHNlcmlhbDgyNTBfY29uc29sZV93cml0ZSgpIGNhbiBiZSBjYWxs ZWQgaW4gYW55IGNvbnRleHQuDQo+PiAgICBzcGluX2xvY2soKQ0KPj4gICAgICsgTWFrZSBzdXJl IHRoZSBwcm9iaW5nIHJ1bnMgb24gdGhlIGN1cnJlbnQgQ1BVIG9ubHkNCj4+ICAgICAgIHRvIGhh bmRsZSBhIHNlcmlhbCBpcnEgYnkgaXRzZWxmIGFmdGVyIHNldHRpbmcgaXJxIGFmZmluaXR5Lg0K Pj4gICAgICsgTWFrZSBzdXJlIGFueSBvdGhlciBDUFVzIGRvbid0IHRvdWNoIHRoZSBjdHJsIHJl Z2lzdGVyIG9mIHRoZSBwb3J0Lg0KPj4NCj4+IEl0IHNlZW1zIG15IHRlc3QgY29kZSBoYXMgYmVl biB3b3JraW5nIGZpbmUgc28gZmFyLA0KPj4gYnV0IGxldCBtZSBrbm93IGlmIHlvdSBoYXZlIGFu eSBjb25jZXJucyBhYm91dCB1c2luZyBzcGluX2xvY2soKQ0KPj4gaW5zdGVhZCBvZiBwcmVlbXB0 X2Rpc2FibGUoKS4NCj4gDQo+IElmIHlvdSB0dXJuIG9uIGxvY2tkZXAsIHRha2luZyB0aGUgcG9y dC0+bG9jayB3aXRob3V0IGRpc2FibGluZyBpcnEgd2lsbA0KPiBhc3NlcnQuDQoNCllvdSdyZSBy aWdodC4gDQpJJ3ZlIGNoYW5nZWQgbXkgY29kZSwgdGhhbmsgeW91IQ0KDQpJIGFjdHVhbGx5IGhh dmUgdGVzdGVkIHByZWVtcHRfZGlzYWJsZSB2ZXJzaW9uIHRvby4NCkl0IGhhcyBiZWVuIHdvcmtp bmcgb24gbXkgbWFjaGluZSwgYnV0IEkndmUgZm91bmQgaXQgZG9lc24ndCB3b3JrIG9uIEtWTSB3 aXRoIHY0LjEuDQpOb3cgSSdtIGxvc3QgYWJvdXQgaG93IGlycSBhZmZpbml0eSBzaG91bGQgYmUg c2V0IGR1cmluZyBpbnRlcnJ1cHQgcHJvYmluZyBwaGFzZS4uLg0KSSBndWVzcyBtb3JlIGZpeGVz IGFyZSByZXF1aXJlZCB0byBhY2hpZXZlIHRoaXMuIA0KSSdsbCBzZW5kIHYyIGFzIFJGQy4NCg0K PiBBIHF1aWNrIHN0YXRpYyBhbmFseXNpcyBzaG93cyBhdXRvY29uZmlnX2lycSgpIHJlYWNoYWJs ZSB2aWEgMiBkaWZmZXJlbnQNCj4gY2FsbCB0cmVlczoNCj4gDQo+IFsxXSAgdWFydF9hZGRfb25l X3BvcnQoKQ0KPiAgICAgICAgIGxvY2sgZ2xvYmFsIHBvcnRfbXV0ZXggKHRvIHByZXZlbnQgY29u Y3VycmVudCBwb3J0IGFkZC9yZW1vdmUpDQo+ICAgICAgICAgbG9jayBwb3J0LT5tdXRleA0KPiAg ICAgICAgIHVhcnRfY29uZmlndXJlX3BvcnQoKQ0KPiAgICAgICAgICAgIG9wcy0+Y29uZmlnX3Bv cnQgPT4gc2VyaWFsODI1MF9jb25maWdfcG9ydCgpDQo+ICAgICAgICAgICAgICAgYXV0b2NvbmZp Z19pcnEoKQ0KPiANCj4gWzJdICBpb2N0bChUSU9DU0VSQ09ORklHKQ0KPiAgICAgICAgIHVhcnRf ZG9fYXV0b2NvbmZpZygpDQo+ICAgICAgICAgICAgbG9jayBwb3J0LT5tdXRleA0KPiAgICAgICAg ICAgIHVhcnRfc2h1dGRvd24oKQ0KPiAgICAgICAgICAgIG9wcy0+Y29uZmlnX3BvcnQgPT4gc2Vy aWFsODI1MF9jb25maWdfcG9ydCgpDQo+ICAgICAgICAgICAgICAgYXV0b2NvbmZpZ19pcnEoKQ0K PiANCj4gQ2FsbCB0cmVlICMxIGNhbm5vdCBleGVjdXRlIGNvbmN1cnJlbnRseSB3aXRoIGFueSBv dGhlciBkcml2ZXIgZnVuY3Rpb24NCj4gYmVjYXVzZSB0aGUgdHR5IGRldmljZSBkb2Vzbid0IGV2 ZW4gZXhpc3QgYXQgdGhhdCB0aW1lLg0KPiANCj4gaW9jdGwoVElPQ1NFUkNPTkZJRykgLS0gY2Fs bCB0cmVlICMyIC0tIGlzIHByZXR0eSBtdWNoIGEgaGFjayBhbmQgdHJpZXMNCj4gdG8gZG8gaXRz IGJlc3QgdG8gcHJldmVudCBjb25jdXJyZW50IGRyaXZlciBmdW5jdGlvbi9oYXJkd2FyZSBhY2Nl c3MuDQo+IFNvIGl0IHRha2VzIHRoZSBwb3J0LT5tdXRleCB3aGljaCBwcmV2ZW50cyBtYW55IGNv bmN1cnJlbnQgb3BlcmF0aW9ucywNCj4gYW5kIHNodXRzIGRvd24gdGhlIHBvcnQgaGFyZHdhcmUu IEluIG90aGVyIHdvcmRzLCB0aGUgYXV0b2NvbmZpZyBvcGVyYXRpb24NCj4gaXMgaW50ZW5kZWQg dG8gYmUgZXhjbHVzaXZlIG9mIGFueSBvdGhlciBjb25jdXJyZW50IGhhcmR3YXJlIGFjY2VzcyAo ZXhjZXB0DQo+IGNvbnNvbGUpLg0KPiANCj4gSSBzYXkgJ2ludGVuZGVkJyBiZWNhdXNlIHRoaXMg aXMgYnJva2VuIGlmIHRoZSBsaW5lIGRpc2NpcGxpbmUgaXMgZWNob2luZzsNCj4gSSBqdXN0IGZp eGVkIHRoaXMgaW4gdWFydF9jbG9zZSgpIGFuZCBub3cgcmVhbGl6ZSBpdCdzIHBvc3NpYmxlIHdo ZXJldmVyDQo+IHVhcnRfc2h1dGRvd24oKSBpcyBjYWxsZWQgLS0gc28gSSBuZWVkIHRvIGZpeCB0 aGF0IGhhcmRlci4gQnV0IG15IHBvaW50IGlzDQo+IHRoYXQgbm8gb3RoZXIgbG9jayBzaG91bGQg bm90IGJlIG5lY2Vzc2FyeS4NCj4gDQo+IFBsZWFzZSBmZWVsIGZyZWUgdG8gZG91YmxlLWNoZWNr IG15IHdvcmsuDQoNClRoYW5rIHlvdSBmb3IgdGhlIGRldGFpbHMuIEkgdW5kZXJzdGFuZC4gDQpJ J3ZlIHVwZGF0ZWQgY29tbWl0IGxvZy4NCg0KDQpUaGFua3MsDQpUYWljaGkNCg0KDQoNCj4gDQo+ IFJlZ2FyZHMsDQo+IFBldGVyIEh1cmxleQ0KPiANCj4gUFMgLUkgYXR0YWNoZWQgYSBjYXRhbG9n IG9mIGNvbmN1cnJlbnQgb3BlcmF0aW9ucyBleGNsdWRlZCBieSBwb3J0LT5tdXRleC4NCj4gDQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753988AbbG2ISZ (ORCPT ); Wed, 29 Jul 2015 04:18:25 -0400 Received: from TYO202.gate.nec.co.jp ([210.143.35.52]:49458 "EHLO tyo202.gate.nec.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753113AbbG2ISS (ORCPT ); Wed, 29 Jul 2015 04:18:18 -0400 From: Taichi Kageyama To: Peter Hurley CC: Prarit Bhargava , "gregkh@linuxfoundation.org" , "linux-serial@vger.kernel.org" , "jslaby@suse.cz" , "linux-kernel@vger.kernel.org" , "Naoya Horiguchi" Subject: Re: [PATCH 2/2] serial: 8250: Allow to skip autoconfig_irq() for a console Thread-Topic: [PATCH 2/2] serial: 8250: Allow to skip autoconfig_irq() for a console Thread-Index: AQHQn3bbstCqjnq7WEa1Abzn0VnSqJ3RFEoAgAAQAoCAABBPAIAAAnmAgAEEWICAAss3AIAEyNqAgAExfICAAoUkAIAGuHSAgAEfToCAChWEgIACYnaA Date: Wed, 29 Jul 2015 08:09:01 +0000 Message-ID: <55B88A1D.2000601@cp.jp.nec.com> References: <55717224.9060104@cp.jp.nec.com> <557173EC.5000307@cp.jp.nec.com> <559D0FCC.5040107@hurleysoftware.com> <559D1D39.9070405@redhat.com> <559D2AE8.8080603@hurleysoftware.com> <559D2CFB.1060507@redhat.com> <559E075F.8040800@cp.jp.nec.com> <55A05F56.90305@hurleysoftware.com> <55A462D1.3080709@cp.jp.nec.com> <55A56313.4050703@hurleysoftware.com> <55A78042.2090408@cp.jp.nec.com> <55AD237B.1080904@hurleysoftware.com> <55AE147D.5020808@cp.jp.nec.com> <55B68A05.2060809@hurleysoftware.com> In-Reply-To: <55B68A05.2060809@hurleysoftware.com> Accept-Language: en-US, ja-JP Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.34.108.73] Content-Type: text/plain; charset="utf-8" Content-ID: <8EE8E538AB20A94688983C9E43BD7387@gisp.nec.co.jp> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id t6T8IVFW023557 On 2015/07/28 4:44, Peter Hurley wrote: > On 07/21/2015 05:44 AM, Taichi Kageyama wrote: >> On 2015/07/21 1:36, Peter Hurley wrote: >>> On 07/16/2015 05:58 AM, Taichi Kageyama wrote: >>>> On 2015/07/15 4:29, Peter Hurley wrote: >>>>> On 07/13/2015 09:16 PM, Taichi Kageyama wrote: >>>>>> On 2015/07/11 9:12, Peter Hurley wrote: >>>>>>> On 07/09/2015 01:32 AM, Taichi Kageyama wrote: >>>>>>>> On 2015/07/08 23:00, Prarit Bhargava wrote: >>>>>>>>> On 07/08/2015 09:51 AM, Peter Hurley wrote: >>>>>>>>>> On 07/08/2015 08:53 AM, Prarit Bhargava wrote: >>>>>>>>>>> On 07/08/2015 07:55 AM, Peter Hurley wrote: >>>>>>>>>>>> On 06/05/2015 06:03 AM, Taichi Kageyama wrote: >>>>>>>>>>>>> This patch provides a new parameter as a workaround of the following >>>>>>>>>>>>> problem. It allows us to skip autoconfig_irq() and to use a well-known irq >>>>>>>>>>>>> number for a console even if CONFIG_SERIAL_8250_DETECT_IRQ is defined. >>>>>>>>>>>>> >>>>>>>>>>>>> There're cases where autoconfig_irq() fails during boot. >>>>>>>>>>>>> In these cases, the console doesn't work in interrupt mode, >>>>>>>>>>>>> the mode cannot be changed anymore, and "input overrun" >>>>>>>>>>>>> (which can make operation mistakes) happens easily. >>>>>>>>>>>>> This problem happens with high rate every boot once it occurs >>>>>>>>>>>>> because the boot sequence is always almost same. >>>>>>>>>>>>> >>>>>>>>>>>>> autoconfig_irq() assumes that a CPU can handle an interrupt from a serial >>>>>>>>>>>>> during the waiting time, but there're some cases where the CPU cannot >>>>>>>>>>>>> handle the interrupt for longer than the time. It completely depends on >>>>>>>>>>>>> how other functions work on the CPU. Ideally, autoconfig_irq() should be >>>>>>>>>>>>> fixed >>>>>>>>>>>> >>>>>>>> >>>>>>>> Thank you for your comments. >>>>>>>> >>>>>>>>>>>> It completely depends on how long some other driver has interrupts disabled, >>>>>>>> >>>>>>>> Agree. >>>>>>>> >>>>>>>>>>>> which is a problem that needs fixed _in that driver_. autoconfig_irq() does not >>>>>>>>>>>> need fixing. >>>>>>>> >>>>>>>> Peter, ideally, you're right. >>>>>>>> However, we cannot assume how long other drivers disable interrupts. >>>>>>>> That's why I introduced this workaround. >>>>>>>> In my opinion, a console is important and always should be available >>>>>>>> even if other drivers have a bad behavior. >>>>>>> >>>>>>> I have no problem with wanting to make the console more robust, but >>>>>>> rather with the hacky way this is being done. >>>>>> >>>>>> Hi Peter, >>>>>> >>>>>> Thank you for your advice. >>>>>> If there is other way to fix this problem simply, >>>>>> I also think it's better than the dirty hack. >>>>> >>>>> While module parameters seem like "simple" solutions at the time, >>>>> they add real maintenance burden, because they establish userspace >>>>> requirements that must be preserved forever to avoid breakage. >>>> >>>> Yeah, I agree with you. >>>> >>>>>>> Better solutions: >>>>>>> 1. Fix autoprobing to force irq affinity to autoprobing cpu >>>>>> >>>>>> I couldn't make sure which CPU handled serial interrupt >>>>>> on all platforms before irq# was not known. >>>>>> Do you know the way to detect which CPU is used for console serial? >>>>> >>>>> >>>>> The basic idea would be: >>>>> 1. disable preemption >>>>> 2. for each irq descriptor selected for autoprobing, set the irq >>>>> affinity to the current processor. >>>>> 3. probe the i/o port as is done now >>>>> 4. stop probing >>>>> 5. re-enable preemption. >>>> >>>> Thanks, I think it works. >>>> >>>>> With this solution, your patch 1/2 wouldn't be required either >>>>> because the worker thread that disabled interrupts wouldn't be >>>>> running on the cpu detecting the triggered irq(s). >>>> >>>> I still need my patch 1/2 which fixes also other cases (see case2 & 3). >>>> I think both port->lock and console_lock are required in your solution. >>>> to avoid deadlock because printk() can be called on every context. >>>> >>>>> I would imagine most or all of this would be done in >>>>> probe_irq_on(), possibly refactored to perform the preemption >>>>> disable and irq affinity. >>>> >>>> I think introducing new function like "probe_irq_set_affinity()" is better >>>> than modifying probe_irq_on(). I cannot test all legacy devices and >>>> I don't have any reason to break the code which works for other devices. >>> >>> That's fine, although most of the arguments for fixing this in the serial >>> driver apply equally to other users of probe_irq_on(). >>> >>> >>>>>> The way is safe for all platforms? >>>>> >>>>> Please understand though, autoprobing is not safe, period. >>>>> Even says so in Kconfig. >>>> >>>> OK, I'll try to create new patch which makes autoprobing safer as possible. >>>> New patch is going to be like below. >>>> 1. console and port lock >>>> 2. probe_irq_on() >>>> 3. probe_irq_set_affinity(&cpumask) >>>> 4. probe_irq_off() >>>> 5. port and console unlock >>> >>> The port->lock can't be taken in this context because hard irq >>> has to be disabled with port->lock which defeats the purpose of >>> pinning the irq affinity to the current cpu. >> >> My test code uses spin_lock() instead of spin_lock_irqsave(). >> >>> What are you concerned about being concurrent with autoconfig_irq()? >>> Many operations are excluded by the port->mutex. >> >> Actually I don't have any concerns as long as console_lock() is used, >> but I thought protecting port was better during auto_irq >> or register operations as same as autoconfig(). >> >> I was thinking they are used as the following purposes; >> console_lock() >> + Make sure serial8250_console_write() doesn't disable interrupt, >> try to get port->lock or touch the ctrl register of the port. >> # serial8250_console_write() can be called in any context. >> spin_lock() >> + Make sure the probing runs on the current CPU only >> to handle a serial irq by itself after setting irq affinity. >> + Make sure any other CPUs don't touch the ctrl register of the port. >> >> It seems my test code has been working fine so far, >> but let me know if you have any concerns about using spin_lock() >> instead of preempt_disable(). > > If you turn on lockdep, taking the port->lock without disabling irq will > assert. You're right. I've changed my code, thank you! I actually have tested preempt_disable version too. It has been working on my machine, but I've found it doesn't work on KVM with v4.1. Now I'm lost about how irq affinity should be set during interrupt probing phase... I guess more fixes are required to achieve this. I'll send v2 as RFC. > A quick static analysis shows autoconfig_irq() reachable via 2 different > call trees: > > [1] uart_add_one_port() > lock global port_mutex (to prevent concurrent port add/remove) > lock port->mutex > uart_configure_port() > ops->config_port => serial8250_config_port() > autoconfig_irq() > > [2] ioctl(TIOCSERCONFIG) > uart_do_autoconfig() > lock port->mutex > uart_shutdown() > ops->config_port => serial8250_config_port() > autoconfig_irq() > > Call tree #1 cannot execute concurrently with any other driver function > because the tty device doesn't even exist at that time. > > ioctl(TIOCSERCONFIG) -- call tree #2 -- is pretty much a hack and tries > to do its best to prevent concurrent driver function/hardware access. > So it takes the port->mutex which prevents many concurrent operations, > and shuts down the port hardware. In other words, the autoconfig operation > is intended to be exclusive of any other concurrent hardware access (except > console). > > I say 'intended' because this is broken if the line discipline is echoing; > I just fixed this in uart_close() and now realize it's possible wherever > uart_shutdown() is called -- so I need to fix that harder. But my point is > that no other lock should not be necessary. > > Please feel free to double-check my work. Thank you for the details. I understand. I've updated commit log. Thanks, Taichi > > Regards, > Peter Hurley > > PS -I attached a catalog of concurrent operations excluded by port->mutex. > {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I