From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [59.151.112.132] (helo=heian.cn.fujitsu.com) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1bRbzE-0000DI-3a for kexec@lists.infradead.org; Mon, 25 Jul 2016 09:15:46 +0000 From: "Wei, Jiangang" Subject: Re: [PATCH 3/3] x86/apic: Improved the setting of interrupt mode for bsp Date: Mon, 25 Jul 2016 09:15:19 +0000 Message-ID: <1469437943.7811.13.camel@localhost> References: <1469175026-29447-1-git-send-email-weijg.fnst@cn.fujitsu.com> <1469175026-29447-3-git-send-email-weijg.fnst@cn.fujitsu.com> <20160722104034.GB3543@x1.redhat.com> <1469415695.2020.60.camel@localhost> <5795CBF2.3070407@redhat.com> In-Reply-To: <5795CBF2.3070407@redhat.com> Content-Language: en-US Content-ID: <2FC4E26AF9B00545990D33A242D67855@fujitsu.local> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: "xlpang@redhat.com" Cc: "bhe@redhat.com" , "joro@8bytes.org" , "x86@kernel.org" , "kexec@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "Cao, Jin" , "mingo@redhat.com" , "kernel@kyup.com" , "ebiederm@xmission.com" , "hpa@zytor.com" , "tglx@linutronix.de" T24gTW9uLCAyMDE2LTA3LTI1IGF0IDE2OjIxICswODAwLCBYdW5sZWkgUGFuZyB3cm90ZToNCj4g T24gMjAxNi8wNy8yNSBhdCAxMTowNCwgV2VpLCBKaWFuZ2FuZyB3cm90ZToNCj4gPiBIaSBIZSwN Cj4gPg0KPiA+IFRoYW5rcyBmb3IgeW91ciByZXNwb25zZSBmaXJzdGx5Lg0KPiA+DQo+ID4gT24g RnJpLCAyMDE2LTA3LTIyIGF0IDE4OjQwICswODAwLCBCYW9xdWFuIEhlIHdyb3RlOg0KPiA+PiBI aSBKaWFuZ2FuZywNCj4gPj4NCj4gPj4gVGhpcyBpcyB2ZXJ5IG5pY2UsIHNob3VsZCBiZSB0aGUg c3R1ZmYgRXJpYyBhbmQgSW5nbyB3b3VsZCBsaWtlIHRvIHNlZS4NCj4gPj4gQnV0IEkgaGF2ZSBz ZXZlcmFsIHF1ZXN0aW9uczoNCj4gPj4NCj4gPj4gMSkgQXJlIHlvdSBub3QgZ29pbmcgdG8gY2xl YW4gdXAgdGhlIG9sZCBsZWdhY3kgaXJxIG1vZGUgc2V0dGluZyBjb2RlIGluDQo+ID4+IDFzdCBr ZXJuZWw/DQo+ID4gWWVzLCBJIHdvdWxkIGxpa2UgdG8gcGF5IG1vcmUgYXR0ZW50aW9uIG9uIGZp eGluZyBrZHVtcCdzIGZhaWx1cmUgd2l0aA0KPiA+IG5vdHNjLg0KPiA+IE5vIHBsYW4gdG8gY2xl YW4gdXAgdGhlIGlycSBtb2RlIHNldHRpbmcgY29kZXMgaW4gdGhlIGNyYXNoIGtlcm5lbA0KPiA+ IHJlYm9vdCBwYXRoLg0KPiA+IElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBpdCwgcGxlYXNlIGdv IG9uLg0KPiA+DQo+ID4+IDIpSSBjYWxsIHRoZW0gbGVnYWN5IGlycSBtb2RlIGJlY2F1c2Ugbm90 IG9ubHkgYXBpYyB2aXJ0dWFsIHdpcmUgbW9kZQ0KPiA+PiBleGlzdHMsIGJ1dCB0aGUgUElDIG1v ZGUgaW4geDg2IDMyYml0IHN5c3RlbS4gWW91IG5lZWQgY29uc2lkZXIgaXQgdG9vLg0KPiA+PiBU aGVuIGluaXRfYnNwX0FQSUMgbmVlZCBiZSByZW5hbWFlZCB0byBhbiBhcHByb3ByaWF0ZSBvbmUu IEFuZCBhc3N1bWUNCj4gPj4gdGhpcyBoYXMgYmVlbiB0ZXN0ZWQgb24geDg2IDMyYml0IHN5c3Rl bS4gDQo+ID4gVGhhbmtzIGZvciB5b3VyIHJlbWluZGVycy4NCj4gPiBBcyB0aGUgY29tbWVudCBv ZiBpbml0X2JzcF9BUElDKCksIGl0J3MganVzdCB1c2VkIHRvIHNldHVwIHRoZSB2aXJ0dWFsDQo+ ID4gd2lyZSBtb2RlLg0KPiA+IHNvIEkgd29uJ3QgY2hhbmdlIGl0cyBuYW1lLg0KPiA+DQo+ID4g QnV0IGkgYWdyZWUgd2l0aCB0aGF0IFBJQyBtb2RlIHNob3VsZCBiZSBjb25zaWRlcmVkLg0KPiA+ IE5leHQgdmVyc2lvbiB3aWxsIGJlIGxpa2UgYmVsb3csDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEv YXJjaC94ODYva2VybmVsL2FwaWMvYXBpYy5jIGIvYXJjaC94ODYva2VybmVsL2FwaWMvYXBpYy5j DQo+ID4gaW5kZXggMDQzNThlMGNmMWUyLi5kNDBiYWI5NDdhMmEgMTAwNjQ0DQo+ID4gLS0tIGEv YXJjaC94ODYva2VybmVsL2FwaWMvYXBpYy5jDQo+ID4gKysrIGIvYXJjaC94ODYva2VybmVsL2Fw aWMvYXBpYy5jDQo+ID4gQEAgLTExODYsNyArMTE4Niw3IEBAIHZvaWQgX19pbml0IGluaXRfYnNw X0FQSUModm9pZCkNCj4gPiAgICAgICAgICAqIHRoZSB3b3JzdCBjYXNlIGlzIHRoYXQgYm90aCBv ZiB0aGVtIGFyZSBpbmFjdGl2ZSwNCj4gPiAgICAgICAgICAqIElmIHNvLCBXZSBuZWVkIHRvIGVu YWJsZSB0aGUgdmlydHVhbCB3aXJlIG1vZGUgdmlhDQo+ID4gdGhyb3VnaC1sb2NhbC1BUElDDQo+ ID4gICAgICAgICAgKi8NCj4gPiAtICAgICAgIGlmIChzbXBfZm91bmRfY29uZmlnIHx8ICFib290 X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVBJQykNCj4gPiArICAgICAgIGlmICggcGljX21vZGUgfHwg KHNtcF9mb3VuZF9jb25maWcgJiYgY2hlY2tfdmlydHVhbF93aXJlX21vZGUoKSkNCj4gDQo+IEkg dGhpbmsgdGhpcyBpcyBuZWVkbGVzcywgYXMgaW5pdF9ic3BfQVBJQygpIGlzIG1hZGUgdW5kZXIg dGhlIGZvbGxvd2luZyBjb25kaXRpb246DQo+ICNpZiBkZWZpbmVkKENPTkZJR19YODZfNjQpIHx8 IGRlZmluZWQoQ09ORklHX1g4Nl9MT0NBTF9BUElDKQ0KDQpOb3BlLA0KSSBzdWdnZXN0IHlvdSB0 YWtlIGEgbG9vayBhdCBkZWZhdWx0X2dldF9zbXBfY29uZmlnKCkuDQouLi4uLi4uLi4NCiNpZiBk ZWZpbmVkKENPTkZJR19YODZfTE9DQUxfQVBJQykgJiYgZGVmaW5lZChDT05GSUdfWDg2XzMyKQ0K CWlmIChtcGYtPmZlYXR1cmUyICYgKDEgPDwgNykpIHsNCgkJcHJfaW5mbygiICAgIElNQ1IgYW5k IFBJQyBjb21wYXRpYmlsaXR5IG1vZGUuXG4iKTsNCgkJcGljX21vZGUgPSAxOw0KCX0gZWxzZSB7 DQoJCXByX2luZm8oIiAgICBWaXJ0dWFsIFdpcmUgY29tcGF0aWJpbGl0eSBtb2RlLlxuIik7DQoJ CXBpY19tb2RlID0gMDsNCgl9DQojZW5kaWYNCi4uLi4uLi4NCg0KaWYgd2UgZGVjbGFyZSBDT05G SUdfWDg2XzMyIGFuZCBDT05GSUdfWDg2X0xPQ0FMX0FQSUMsIC4gaW5pdF9ic3BfQVBJQw0KbWF5 IGJlIGNhbGxlZC4gIHNvIGNoZWNrIHBpY19tb2RlIGlzIHVzZWZ1bC4NCg0KPiANCj4gPiB8fA0K PiA+ICAgICAgICAgICAgICAgICAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FQSUMpKQ0KPiA+ ICAgICAgICAgICAgICAgICByZXR1cm47DQo+ID4+IDMpIA0KPiA+Pg0KPiA+PiAqKUFib3V0IElP LUFQSUMgc2V0dGluZyBhcyB2aXJ0dWFsIHdpcmUgbW9kZSwgSSBhbSBhbHdheXMgY29uZnVzZWQu IEluDQo+ID4+IE1QIFNwZWMgMy42LjIuMiwgaXQgc2F5cyAidGhlIGludGVycnVwdCBzaWduYWwg cGFzc2VzIHRocm91Z2ggYm90aCB0aGUNCj4gPj4gSS9PIEFQSUMgYW5kIHRoZSBCU1DigJlzIGxv Y2FsIEFQSUMiLiBUaGF0IG1lYW5zIElPLUFQSUMgdmlydHVhbCB3aXJlIG1vZGUNCj4gPj4gbmVl ZCBib3RoIElPLUFQSUMgYW5kIExBUElDIHRvIGJlIHNldCwgYW5kIHdpdGggbXkgdW5kZXJzdGFu ZGluZyBvbmx5DQo+ID4+IHBpbiBvZiBJTy1BUElDIGlzIHNldCBhcyBFeHRJbnQsIExBUElDIHNo b3VsZCBiZSBwYXNzLXRocm91Z2guDQo+ID4+DQo+ID4+ICopQnV0IGluIEludGVsIEFyY2ggbWFu dWFsIDNBIDEwLjEsIHRoZXJlJ3Mgb25seSBiZWxvdyBzZW50ZW5jZXMgdG8gbWVudGlvbg0KPiA+ PiBpdDoNCj4gPj4NCj4gPj4gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+ID4+IFRoZSBJL08gQVBJQyBhbHNvIGhhcyBhIOKA nHZpcnR1YWwgd2lyZSBtb2Rl4oCdIHRoYXQgYWxsb3dzIGl0IHRvIGNvbW11bmljYXRlDQo+ID4+ IHdpdGggYSBzdGFuZGFyZCA4MjU5QS1zdHlsZSBleHRlcm5hbCBpbnRlcnJ1cHQgY29udHJvbGxl ci4gTm90ZSB0aGF0IHRoZQ0KPiA+PiBsb2NhbCBBUElDIGNhbiBiZSBkaXNhYmxlZC4gVGhpcyBh bGxvd3MgYW4gYXNzb2NpYXRlZCBwcm9jZXNzb3IgY29yZSB0bw0KPiA+PiByZWNlaXZlIGludGVy cnVwdHMgZGlyZWN0bHkgZnJvbSBhbiA4MjU5QSBpbnRlcnJ1cHQgY29udHJvbGxlci4NCj4gPj4g fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fg0KPiA+Pg0KPiA+PiBFcmljJ3MgY29kZSBpbiBuYXRpdmVfZGlzYWJsZV9pb19hcGlj KCkgaGFzIHRoZSBzYW1lIHBvaW50IGFzIGFib3ZlDQo+ID4+IHdvcmRzLg0KPiA+IElNT++8jA0K PiA+IHRoZSB0aHJvdWdoLUlPLUFQSUMgbW9kZSBoYXMgbm8gcmVsYXRpb25zaGlwIHdpdGggdGhl IHNldHRpbmcgb2YgbG9jYWwNCj4gPiBBUElDLg0KPiA+IHRoYXQncyB3aHkgaSBvbmx5IGNoZWNr IHRoZSBwaW4gb2YgSU8tQVBJQyBpbiB2aXJ0dWFsX3dpcmVfdmlhX2lvYXBpYygpLg0KPiANCj4g Rm9yIHRocm91Z2gtSU8tQVBJQyBtb2RlLCBJIHRoaW5rIHRoZSBic3AgbG9jYWwgYXBpYyBzaG91 bGQgYmUgb24sIGJ1dCBpdHMgTElOVDAgcGluIG11c3Qgbm90DQo+IGJlIHNldCB0byBiZSAiRXh0 SU5UIihJIGd1ZXNzIHdpdGggdGhpcyBtb2RlIHNldCB3aWxsIG1ha2UgaXQgdG8gYmUgdGhyb3Vn aC1MQVBJQyBtb2RlKSwgYW5kDQo+IHdlIGNhbiBjbGVhcmx5IHNlZSB0aGUgZmFjdCBmcm9tIGRp c2Nvbm5lY3RfYnNwX0FQSUMoKSdzIGltcGxlbWVudGF0aW9uLg0KDQpZZXMsIHlvdXIgb3Bpbmlv biBsb29rcyByZWFzb25hYmxlLg0KYm90aCB0aHJvdWdoLUlPLUFQSUMgYW5kIHRocm91Z2gtbG9j YWwtQVBJQyBlbmFibGUgdGhlIHNvZnR3YXJlIGZsYWcuDQoNCiAgICAgICAgLyogRm9yIHRoZSBz cHVyaW91cyBpbnRlcnJ1cHQgdXNlIHZlY3RvciBGLCBhbmQgZW5hYmxlIGl0ICovDQoJdmFsdWUg PSBhcGljX3JlYWQoQVBJQ19TUElWKTsNCgl2YWx1ZSAmPSB+QVBJQ19WRUNUT1JfTUFTSzsNCgl2 YWx1ZSB8PSBBUElDX1NQSVZfQVBJQ19FTkFCTEVEOw0KCXZhbHVlIHw9IDB4ZjsNCglhcGljX3dy aXRlKEFQSUNfU1BJViwgdmFsdWUpOw0KDQpJIHdpbGwgYWNjZXB0IHRoaXMgcG9pbnQgaW4gdjIg cGF0Y2guDQoNClRoYW5rcywNCndlaQ0KPiANCj4gUmVnYXJkcywNCj4gWHVubGVpDQo+ID4gVGhh bmtzDQo+ID4gd2VpDQo+ID4+ICopSG93ZXZlciBwbGVhc2UgcmVhZCBjb2RlIGNvbW1lbnRzIGlu IGlycV9yZW1hcHBpbmdfZGlzYWJsZV9pb19hcGljKCksDQo+ID4+IEpvZXJnJ3MgZGVzY3JpcHRp b24gZ2l2ZSBtZSBhIGRpZmZlcmVudCBpbXByZXNzaW9uIHRoYXQgd2UgY2FuIGNob29zZQ0KPiA+ PiB0byBvbmx5IHVzZSBMQVBJQyB2aXJ0dWFsIHdpcmUgbW9kZS4gSm9lcmcgaXMgSU9NTVUgbWFp bnRhaW5lcnMsIGhlIGlzDQo+ID4+IHZlcnkgZmFtaWxpYXIgd2l0aCBpby1hcGljIHNpbmNlIElP TU1VIG5lZWQgdGFrZSBvdmVyIGlvLWFwaWMgZW50cnkNCj4gPj4gZmlsbGluZywgdGhlcmUgbXVz dCBiZSByZWFzb24gaGUgd3JvdGUgdGhhdC4gQWRkIEpvZXJnIHRvIENDIGxpc3QuDQo+ID4+DQo+ ID4+IFNlZW1zIGl0J3MgZGlmZmljdWx0IHRvIGZpbmQgYSBzeXN0ZW0gd2l0aCBJTy1BUElDIHZp cnR1YWwgd2lyZSBtb2RlLA0KPiA+PiBtYXliZSB3ZSBjYW4ganVzdCBrZWVwIGl0IGFzIGlzLiBO b3Qgc3VyZSBpZiBJbnRlbCBlbmdpbmVlcnMgY2FuIGhlbHANCj4gPj4gZXhwbGFpbiBhbmQgY29u ZmlybSB0aGlzLg0KPiA+Pg0KPiA+PiBUaGF0J3MgYWxsIEkgY2FuIHRoaW5rIG9mLg0KPiA+Pg0K PiA+PiBUaGFua3MNCj4gPj4gQmFvcXVhbg0KPiA+Pg0KPiA+PiBPbiAwNy8yMi8xNiBhdCAwNDox MHBtLCBXZWkgSmlhbmdhbmcgd3JvdGU6DQo+ID4+PiBJZiB3ZSBzcGVjaWZ5IHRoZSAnbm90c2Mn IHBhcmFtZXRlciBmb3IgdGhlIGR1bXAtY2FwdHVyZSBrZXJuZWwsDQo+ID4+PiBhbmQgdGhlbiB0 cmlnZ2VyIGEgY3Jhc2gocGFuaWMpIGJ5IHVzaW5nICJBTFQtU3lzUnEtYyIgb3INCj4gPj4+ICJl Y2hvIGMgPiAvcHJvYy9zeXNycS10cmlnZ2VyIiwgdGhlIGR1bXAtY2FwdHVyZSBrZXJuZWwgd2ls bA0KPiA+Pj4gaGFuZyBpbiBjYWxpYnJhdGVfZGVsYXlfY29udmVyZ2UoKSBhbmQgd2FpdCBmb3Ig amlmZmllcyBjaGFuZ2VzLg0KPiA+Pj4gc2VyaWFsIGxvZyBhcyBmb2xsb3dzOg0KPiA+Pj4NCj4g Pj4+ICAgICB0c2M6IEZhc3QgVFNDIGNhbGlicmF0aW9uIHVzaW5nIFBJVA0KPiA+Pj4gICAgIHRz YzogRGV0ZWN0ZWQgMjA5OS45NDcgTUh6IHByb2Nlc3Nvcg0KPiA+Pj4gICAgIENhbGlicmF0aW5n IGRlbGF5IGxvb3AuLi4NCj4gPj4+DQo+ID4+PiBUaGUgcmVhc29uIGZvciBqaWZmaWVzIG5vdCBj aGFuZ2VzIGlzIHRoZXJlJ3Mgbm8gdGltZXIgaW50ZXJydXB0DQo+ID4+PiBwYXNzZWQgdG8gZHVt cC1jYXB0dXJlIGtlcm5lbC4NCj4gPj4+DQo+ID4+PiBJbiBmYWN0LCBvbmNlIGtlcm5lbCBwYW5p YyBvY2N1cnMsIHRoZSBsb2NhbCBBUElDIGlzIGRpc2FibGVkDQo+ID4+PiBieSBsYXBpY19zaHV0 ZG93bigpIGluIHJlYm9vdCBwYXRoLg0KPiA+Pj4gZ2VuZXJseSBzcGVha2luZywgbG9jYWwgQVBJ QyBzdGF0ZSBjYW4gYmUgaW5pdGlhbGl6ZWQgYnkgQklPUw0KPiA+Pj4gYWZ0ZXIgUG93ZXItVXAg b3IgUmVzZXQsIHdoaWNoIGRvZXNuJ3QgYXBwbHkgdG8ga2R1bXAgY2FzZS4NCj4gPj4+IHNvIHRo ZSBrZXJuZWwgaGFzIHRvIGJlIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXplIHRoZSBpbnRlcnJ1 cHQNCj4gPj4+IG1vZGUgcHJvcGVybHkgYWNjb3JkaW5nIHRoZSBsYXRlc3Qgc3RhdHVzIG9mIEFQ SUMgaW4gYm9vdHVwIHBhdGguDQo+ID4+Pg0KPiA+Pj4gQW4gTVAgb3BlcmF0aW5nIHN5c3RlbSBp cyBib290ZWQgdW5kZXIgZWl0aGVyIFBJQyBtb2RlIG9yDQo+ID4+PiB2aXJ0dWFsIHdpcmUgbW9k ZS4gTGF0ZXIsIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHN3aXRjaGVzIHRvDQo+ID4+PiBzeW1tZXRy aWMgSS9PIG1vZGUgYXMgaXQgZW50ZXJzIG11bHRpcHJvY2Vzc29yIG1vZGUuDQo+ID4+PiBUd28g a2luZHMgb2YgdmlydHVhbCB3aXJlIG1vZGUgYXJlIGRlZmluZWQgaW4gSW50ZWwgTVAgc3BlYzoN Cj4gPj4+IHZpcnR1YWwgd2lyZSBtb2RlIHZpYSBsb2NhbCBBUElDIG9yIHZpYSBJL08gQVBJQy4N Cj4gPj4+DQo+ID4+PiBOb3cgd2UgZGV0ZXJtaW5lIHRoZSBtb2RlIG9mIEFQSUMgb25seSB0aHJv dWdoIGEgU01QIEJJT1MoTVAgdGFibGUpLg0KPiA+Pj4gVGhhdCdzIG5vdCBlbm91Z2guDQo+ID4+ PiBJdCdzIGJldHRlciB0byBkbyBmdXJ0aGVyIGNoZWNrIGlmIEFQSUMgd29ya3Mgd2l0aCBlZmZl Y3RpdmUgbW9kZSwNCj4gPj4+IGFuZCBkbyBzb21lIHBvcnBlciBzZXR0aW5nLg0KPiA+Pj4NCj4g Pj4+IFNpZ25lZC1vZmYtYnk6IENhbyBqaW4gPGNhb2ouZm5zdEBjbi5mdWppdHN1LmNvbT4NCj4g Pj4+IFNpZ25lZC1vZmYtYnk6IFdlaSBKaWFuZ2FuZyA8d2VpamcuZm5zdEBjbi5mdWppdHN1LmNv bT4NCj4gPj4+IC0tLQ0KPiA+Pj4gIGFyY2gveDg2L2luY2x1ZGUvYXNtL2lvX2FwaWMuaCB8ICA1 ICsrKysNCj4gPj4+ICBhcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljLmMgICAgfCA1NSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPj4+ICBhcmNoL3g4Ni9rZXJu ZWwvYXBpYy9pb19hcGljLmMgfCAyOCArKysrKysrKysrKysrKysrKysrKysNCj4gPj4+ICAzIGZp bGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4gPj4+DQo+ID4+ PiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vaW9fYXBpYy5oIGIvYXJjaC94ODYv aW5jbHVkZS9hc20vaW9fYXBpYy5oDQo+ID4+PiBpbmRleCA2Y2JmMmNmYjNmOGEuLjY1NTBiZDQz ZmEzOSAxMDA2NDQNCj4gPj4+IC0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lvX2FwaWMuaA0K PiA+Pj4gKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vaW9fYXBpYy5oDQo+ID4+PiBAQCAtMTkw LDYgKzE5MCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGlvX2FwaWNfcmVhZCh1bnNp Z25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZykNCj4gPj4+ICB9DQo+ID4+PiAgDQo+ID4+ PiAgZXh0ZXJuIHZvaWQgc2V0dXBfSU9fQVBJQyh2b2lkKTsNCj4gPj4+ICtleHRlcm4gYm9vbCB2 aXJ0dWFsX3dpcmVfdmlhX2lvYXBpYyh2b2lkKTsNCj4gPj4+ICBleHRlcm4gdm9pZCBlbmFibGVf SU9fQVBJQyh2b2lkKTsNCj4gPj4+ICBleHRlcm4gdm9pZCBkaXNhYmxlX0lPX0FQSUModm9pZCk7 DQo+ID4+PiAgZXh0ZXJuIHZvaWQgc2V0dXBfaW9hcGljX2Rlc3Qodm9pZCk7DQo+ID4+PiBAQCAt MjMxLDYgKzIzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW9fYXBpY19pbml0X21hcHBpbmdz KHZvaWQpIHsgfQ0KPiA+Pj4gICNkZWZpbmUgbmF0aXZlX2Rpc2FibGVfaW9fYXBpYwkJTlVMTA0K PiA+Pj4gIA0KPiA+Pj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXR1cF9JT19BUElDKHZvaWQpIHsg fQ0KPiA+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCB2aXJ0dWFsX3dpcmVfdmlhX2lvYXBpYyh2b2lk KQ0KPiA+Pj4gK3sNCj4gPj4+ICsJcmV0dXJuIHRydWU7DQo+ID4+PiArfQ0KPiA+Pj4gIHN0YXRp YyBpbmxpbmUgdm9pZCBlbmFibGVfSU9fQVBJQyh2b2lkKSB7IH0NCj4gPj4+ICBzdGF0aWMgaW5s aW5lIHZvaWQgc2V0dXBfaW9hcGljX2Rlc3Qodm9pZCkgeyB9DQo+ID4+PiAgDQo+ID4+PiBkaWZm IC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2FwaWMvYXBpYy5jIGIvYXJjaC94ODYva2VybmVsL2Fw aWMvYXBpYy5jDQo+ID4+PiBpbmRleCA4ZTI1YjliMmQzNTEuLjA0MzU4ZTBjZjFlMiAxMDA2NDQN Cj4gPj4+IC0tLSBhL2FyY2gveDg2L2tlcm5lbC9hcGljL2FwaWMuYw0KPiA+Pj4gKysrIGIvYXJj aC94ODYva2VybmVsL2FwaWMvYXBpYy5jDQo+ID4+PiBAQCAtMTEyNCw2ICsxMTI0LDUzIEBAIHZv aWQgX19pbml0IHN5bmNfQXJiX0lEcyh2b2lkKQ0KPiA+Pj4gIH0NCj4gPj4+ICANCj4gPj4+ICAv Kg0KPiA+Pj4gKyAqIFJldHVybiBmYWxzZSBtZWFucyB0aGUgdmlydHVhbCB3aXJlIG1vZGUgdGhy b3VnaC1sb2NhbC1hcGljIGlzIGluYWN0aXZlDQo+ID4+PiArICovDQo+ID4+PiArc3RhdGljIGJv b2wgdmlydHVhbF93aXJlX3ZpYV9sYXBpYyh2b2lkKQ0KPiA+Pj4gK3sNCj4gPj4+ICsJdW5zaWdu ZWQgaW50IHZhbHVlOw0KPiA+Pj4gKw0KPiA+Pj4gKwkvKiBDaGVjayB0aGUgQVBJQyBnbG9iYWwg ZW5hYmxlL2Rpc2FibGUgZmxhZyBmaXJzdGx5ICovDQo+ID4+PiArCWlmIChib290X2NwdV9kYXRh Lng4NiA+PSA2KSB7DQo+ID4+PiArCQl1MzIgaCwgbDsNCj4gPj4+ICsNCj4gPj4+ICsJCXJkbXNy KE1TUl9JQTMyX0FQSUNCQVNFLCBsLCBoKTsNCj4gPj4+ICsJCS8qDQo+ID4+PiArCQkgKiBJZiBs b2NhbCBBUElDIGlzIGRpc2FibGVkIGJ5IEJJT1MNCj4gPj4+ICsJCSAqIGRvIG5vdGhpbmcsIGJ1 dCByZXR1cm4gdHJ1ZQ0KPiA+Pj4gKwkJICovDQo+ID4+PiArCQlpZiAoIShsICYgTVNSX0lBMzJf QVBJQ0JBU0VfRU5BQkxFKSkNCj4gPj4+ICsJCQlyZXR1cm4gdHJ1ZTsNCj4gPj4+ICsJfQ0KPiA+ Pj4gKw0KPiA+Pj4gKwkvKiBDaGVjayB0aGUgc29mdHdhcmUgZW5hYmxlL2Rpc2FibGUgZmxhZyAq Lw0KPiA+Pj4gKwl2YWx1ZSA9IGFwaWNfcmVhZChBUElDX1NQSVYpOw0KPiA+Pj4gKwlpZiAoISh2 YWx1ZSAmIEFQSUNfU1BJVl9BUElDX0VOQUJMRUQpKQ0KPiA+Pj4gKwkJcmV0dXJuIGZhbHNlOw0K PiA+Pj4gKw0KPiA+Pj4gKwkvKg0KPiA+Pj4gKwkgKiBWaXJ0dWFsIHdpcmUgbW9kZSB2aWEgbG9j YWwgQVBJQyByZXF1ZXN0cw0KPiA+Pj4gKwkgKiBBUElDIHRvIGVuYWJsZSB0aGUgTElOVDAgZm9y IGVkZ2UtdHJnZ2VyZWQgRXh0SU5UIGRlbGl2ZXJ5IG1vZGUNCj4gPj4+ICsJICogYW5kIExJTlQx IGZvciBsZXZlbC10cmlnZ2VyZWQgTk1JIGRlbGl2ZXJ5IG1vZGUNCj4gPj4+ICsJICovDQo+ID4+ PiArCXZhbHVlID0gYXBpY19yZWFkKEFQSUNfTFZUMCk7DQo+ID4+PiArCWlmIChHRVRfQVBJQ19E RUxJVkVSWV9NT0RFKHZhbHVlKSAhPSBBUElDX01PREVfRVhUSU5UKQ0KPiA+Pj4gKwkJcmV0dXJu IGZhbHNlOw0KPiA+Pj4gKw0KPiA+Pj4gKwl2YWx1ZSA9IGFwaWNfcmVhZChBUElDX0xWVDEpOw0K PiA+Pj4gKwlpZiAoR0VUX0FQSUNfREVMSVZFUllfTU9ERSh2YWx1ZSkgIT0gQVBJQ19NT0RFX05N SSkNCj4gPj4+ICsJCXJldHVybiBmYWxzZTsNCj4gPj4+ICsNCj4gPj4+ICsJcmV0dXJuIHRydWU7 DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gK3N0YXRpYyBib29sIGNoZWNrX3ZpcnR1YWxfd2ly ZV9tb2RlKHZvaWQpDQo+ID4+PiArew0KPiA+Pj4gKwkvKiBOZWl0aGVyIG9mIHZpcnR1YWwgd2ly ZSBtb2RlIGlzIGFjdGl2ZSwgcmV0dXJuIGZhbHNlICovDQo+ID4+PiArCXJldHVybiAgdmlydHVh bF93aXJlX3ZpYV9sYXBpYygpIHx8IHZpcnR1YWxfd2lyZV92aWFfaW9hcGljKCk7DQo+ID4+PiAr fQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qDQo+ID4+PiAgICogQW4gaW5pdGlhbCBzZXR1cCBvZiB0aGUg dmlydHVhbCB3aXJlIG1vZGUuDQo+ID4+PiAgICovDQo+ID4+PiAgdm9pZCBfX2luaXQgaW5pdF9i c3BfQVBJQyh2b2lkKQ0KPiA+Pj4gQEAgLTExMzMsOCArMTE4MCwxNCBAQCB2b2lkIF9faW5pdCBp bml0X2JzcF9BUElDKHZvaWQpDQo+ID4+PiAgCS8qDQo+ID4+PiAgCSAqIERvbid0IGRvIHRoZSBz ZXR1cCBub3cgaWYgd2UgaGF2ZSBhIFNNUCBCSU9TIGFzIHRoZQ0KPiA+Pj4gIAkgKiB0aHJvdWdo LUkvTy1BUElDIHZpcnR1YWwgd2lyZSBtb2RlIG1pZ2h0IGJlIGFjdGl2ZS4NCj4gPj4+ICsJICoN Cj4gPj4+ICsJICogSXQncyBiZXR0ZXIgdG8gZG8gZnVydGhlciBjaGVjayBpZiBlaXRoZXIgdGhy b3VnaC1JL08tQVBJQw0KPiA+Pj4gKwkgKiBvciB0aHJvdWdoLWxvY2FsLUFQSUMgaXMgYWN0aXZl Lg0KPiA+Pj4gKwkgKiB0aGUgd29yc3QgY2FzZSBpcyB0aGF0IGJvdGggb2YgdGhlbSBhcmUgaW5h Y3RpdmUsDQo+ID4+PiArCSAqIElmIHNvLCBXZSBuZWVkIHRvIGVuYWJsZSB0aGUgdmlydHVhbCB3 aXJlIG1vZGUgdmlhIHRocm91Z2gtbG9jYWwtQVBJQw0KPiA+Pj4gIAkgKi8NCj4gPj4+IC0JaWYg KHNtcF9mb3VuZF9jb25maWcgfHwgIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BUElDKSkNCj4g Pj4+ICsJaWYgKChzbXBfZm91bmRfY29uZmlnICYmIGNoZWNrX3ZpcnR1YWxfd2lyZV9tb2RlKCkp IHx8DQo+ID4+PiArCQkhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FQSUMpKQ0KPiA+Pj4gIAkJ cmV0dXJuOw0KPiA+Pj4gIA0KPiA+Pj4gIAkvKg0KPiA+Pj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2 L2tlcm5lbC9hcGljL2lvX2FwaWMuYyBiL2FyY2gveDg2L2tlcm5lbC9hcGljL2lvX2FwaWMuYw0K PiA+Pj4gaW5kZXggNDQ2NzAyZWQ5OWRjLi41YTMyYzI2OTM4YWMgMTAwNjQ0DQo+ID4+PiAtLS0g YS9hcmNoL3g4Ni9rZXJuZWwvYXBpYy9pb19hcGljLmMNCj4gPj4+ICsrKyBiL2FyY2gveDg2L2tl cm5lbC9hcGljL2lvX2FwaWMuYw0KPiA+Pj4gQEAgLTEzNzksNiArMTM3OSwzNCBAQCB2b2lkIF9f aW5pdCBwcmludF9JT19BUElDcyh2b2lkKQ0KPiA+Pj4gIC8qIFdoZXJlIGlmIGFueXdoZXJlIGlz IHRoZSBpODI1OSBjb25uZWN0IGluIGV4dGVybmFsIGludCBtb2RlICovDQo+ID4+PiAgc3RhdGlj IHN0cnVjdCB7IGludCBwaW4sIGFwaWM7IH0gaW9hcGljX2k4MjU5ID0geyAtMSwgLTEgfTsNCj4g Pj4+ICANCj4gPj4+ICsvKg0KPiA+Pj4gKyAqIFJldHVybiBmYWxzZSBtZWFucyB0aGUgdmlydHVh bCB3aXJlIG1vZGUgdmlhIEkvTyBBUElDIGlzIGluYWN0aXZlDQo+ID4+PiArICovDQo+ID4+PiAr Ym9vbCB2aXJ0dWFsX3dpcmVfdmlhX2lvYXBpYyh2b2lkKQ0KPiA+Pj4gK3sNCj4gPj4+ICsJaW50 IGFwaWMsIHBpbjsNCj4gPj4+ICsNCj4gPj4+ICsJZm9yX2VhY2hfaW9hcGljX3BpbihhcGljLCBw aW4pIHsNCj4gPj4+ICsJCS8qIFNlZSBpZiBhbnkgb2YgdGhlIHBpbnMgaXMgaW4gRXh0SU5UIG1v ZGUgKi8NCj4gPj4+ICsJCXN0cnVjdCBJT19BUElDX3JvdXRlX2VudHJ5IGVudHJ5ID0gaW9hcGlj X3JlYWRfZW50cnkoYXBpYywgcGluKTsNCj4gPj4+ICsNCj4gPj4+ICsJCS8qDQo+ID4+PiArCQkg KiBJZiB0aGUgaW50ZXJydXB0IGxpbmUgaXMgZW5hYmxlZCBhbmQgaW4gRXh0SW50IG1vZGUNCj4g Pj4+ICsJCSAqIEkgaGF2ZSBmb3VuZCB0aGUgcGluIHdoZXJlIHRoZSBpODI1OSBpcyBjb25uZWN0 ZWQuDQo+ID4+PiArCQkgKi8NCj4gPj4+ICsJCWlmICgoZW50cnkubWFzayA9PSAwKSAmJiAoZW50 cnkuZGVsaXZlcnlfbW9kZSA9PSBkZXN0X0V4dElOVCkpDQo+ID4+PiArCQkJcmV0dXJuIHRydWU7 DQo+ID4+PiArCX0NCj4gPj4+ICsNCj4gPj4+ICsJLyoNCj4gPj4+ICsJICogVmlydHVhbCB3aXJl IG1vZGUgdmlhIEkvTyBBUElDIHJlcXVlc3RzDQo+ID4+PiArCSAqIEkvTyBBUElDIGJlIGNvbm5l Y3RlZCB0byBpODI1OSBpbiBjaGFwdGVyIDMuNi4yLjIgb2YgdGhlIE1QIHYxLjQgc3BlYw0KPiA+ Pj4gKwkgKiBJZiBubyBwaW4gaW4gRXh0SW50IG1vZGUsDQo+ID4+PiArCSAqIHRoZSB0aHJvdWdo LUkvTy1BUElDIHZpcnR1YWwgd2lyZSBtb2RlIGNhbiBiZSByZWdhcmRlZCBpbmFjdGl2ZS4NCj4g Pj4+ICsJICovDQo+ID4+PiArCXJldHVybiBmYWxzZTsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+ PiAgdm9pZCBfX2luaXQgZW5hYmxlX0lPX0FQSUModm9pZCkNCj4gPj4+ICB7DQo+ID4+PiAgCWlu dCBpODI1OV9hcGljLCBpODI1OV9waW47DQo+ID4+PiAtLSANCj4gPj4+IDEuOS4zDQo+ID4+Pg0K PiA+Pj4NCj4gPj4+DQo+ID4+DQo+ID4NCj4gPg0KPiANCj4gDQo+IA0KDQoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmtleGVjIG1haWxpbmcgbGlzdApr ZXhlY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8va2V4ZWMK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752654AbcGYJPe (ORCPT ); Mon, 25 Jul 2016 05:15:34 -0400 Received: from cn.fujitsu.com ([59.151.112.132]:1812 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1751953AbcGYJP0 (ORCPT ); Mon, 25 Jul 2016 05:15:26 -0400 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="9054321" From: "Wei, Jiangang" To: "xlpang@redhat.com" CC: "kexec@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "Cao, Jin" , "tglx@linutronix.de" , "bhe@redhat.com" , "kernel@kyup.com" , "x86@kernel.org" , "hpa@zytor.com" , "mingo@redhat.com" , "ebiederm@xmission.com" , "joro@8bytes.org" Subject: Re: [PATCH 3/3] x86/apic: Improved the setting of interrupt mode for bsp Thread-Topic: [PATCH 3/3] x86/apic: Improved the setting of interrupt mode for bsp Thread-Index: AQHR4/Dxcmk++ofYqEmLvQ4Js/z9UqAjvPUAgAQ2wYCAAFlGAIAADlSA Date: Mon, 25 Jul 2016 09:15:19 +0000 Message-ID: <1469437943.7811.13.camel@localhost> References: <1469175026-29447-1-git-send-email-weijg.fnst@cn.fujitsu.com> <1469175026-29447-3-git-send-email-weijg.fnst@cn.fujitsu.com> <20160722104034.GB3543@x1.redhat.com> <1469415695.2020.60.camel@localhost> <5795CBF2.3070407@redhat.com> In-Reply-To: <5795CBF2.3070407@redhat.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.167.226.50] Content-Type: text/plain; charset="utf-8" Content-ID: <2FC4E26AF9B00545990D33A242D67855@fujitsu.local> MIME-Version: 1.0 X-yoursite-MailScanner-ID: 648B342984CF.AC0A6 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: weijg.fnst@cn.fujitsu.com 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 u6P9FcP6012260 On Mon, 2016-07-25 at 16:21 +0800, Xunlei Pang wrote: > On 2016/07/25 at 11:04, Wei, Jiangang wrote: > > Hi He, > > > > Thanks for your response firstly. > > > > On Fri, 2016-07-22 at 18:40 +0800, Baoquan He wrote: > >> Hi Jiangang, > >> > >> This is very nice, should be the stuff Eric and Ingo would like to see. > >> But I have several questions: > >> > >> 1) Are you not going to clean up the old legacy irq mode setting code in > >> 1st kernel? > > Yes, I would like to pay more attention on fixing kdump's failure with > > notsc. > > No plan to clean up the irq mode setting codes in the crash kernel > > reboot path. > > If you are interested in it, please go on. > > > >> 2)I call them legacy irq mode because not only apic virtual wire mode > >> exists, but the PIC mode in x86 32bit system. You need consider it too. > >> Then init_bsp_APIC need be renamaed to an appropriate one. And assume > >> this has been tested on x86 32bit system. > > Thanks for your reminders. > > As the comment of init_bsp_APIC(), it's just used to setup the virtual > > wire mode. > > so I won't change its name. > > > > But i agree with that PIC mode should be considered. > > Next version will be like below, > > > > diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c > > index 04358e0cf1e2..d40bab947a2a 100644 > > --- a/arch/x86/kernel/apic/apic.c > > +++ b/arch/x86/kernel/apic/apic.c > > @@ -1186,7 +1186,7 @@ void __init init_bsp_APIC(void) > > * the worst case is that both of them are inactive, > > * If so, We need to enable the virtual wire mode via > > through-local-APIC > > */ > > - if (smp_found_config || !boot_cpu_has(X86_FEATURE_APIC) > > + if ( pic_mode || (smp_found_config && check_virtual_wire_mode()) > > I think this is needless, as init_bsp_APIC() is made under the following condition: > #if defined(CONFIG_X86_64) || defined(CONFIG_X86_LOCAL_APIC) Nope, I suggest you take a look at default_get_smp_config(). ......... #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86_32) if (mpf->feature2 & (1 << 7)) { pr_info(" IMCR and PIC compatibility mode.\n"); pic_mode = 1; } else { pr_info(" Virtual Wire compatibility mode.\n"); pic_mode = 0; } #endif ....... if we declare CONFIG_X86_32 and CONFIG_X86_LOCAL_APIC, . init_bsp_APIC may be called. so check pic_mode is useful. > > > || > > !boot_cpu_has(X86_FEATURE_APIC)) > > return; > >> 3) > >> > >> *)About IO-APIC setting as virtual wire mode, I am always confused. In > >> MP Spec 3.6.2.2, it says "the interrupt signal passes through both the > >> I/O APIC and the BSP’s local APIC". That means IO-APIC virtual wire mode > >> need both IO-APIC and LAPIC to be set, and with my understanding only > >> pin of IO-APIC is set as ExtInt, LAPIC should be pass-through. > >> > >> *)But in Intel Arch manual 3A 10.1, there's only below sentences to mention > >> it: > >> > >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >> The I/O APIC also has a “virtual wire mode” that allows it to communicate > >> with a standard 8259A-style external interrupt controller. Note that the > >> local APIC can be disabled. This allows an associated processor core to > >> receive interrupts directly from an 8259A interrupt controller. > >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >> > >> Eric's code in native_disable_io_apic() has the same point as above > >> words. > > IMO, > > the through-IO-APIC mode has no relationship with the setting of local > > APIC. > > that's why i only check the pin of IO-APIC in virtual_wire_via_ioapic(). > > For through-IO-APIC mode, I think the bsp local apic should be on, but its LINT0 pin must not > be set to be "ExtINT"(I guess with this mode set will make it to be through-LAPIC mode), and > we can clearly see the fact from disconnect_bsp_APIC()'s implementation. Yes, your opinion looks reasonable. both through-IO-APIC and through-local-APIC enable the software flag. /* For the spurious interrupt use vector F, and enable it */ value = apic_read(APIC_SPIV); value &= ~APIC_VECTOR_MASK; value |= APIC_SPIV_APIC_ENABLED; value |= 0xf; apic_write(APIC_SPIV, value); I will accept this point in v2 patch. Thanks, wei > > Regards, > Xunlei > > Thanks > > wei > >> *)However please read code comments in irq_remapping_disable_io_apic(), > >> Joerg's description give me a different impression that we can choose > >> to only use LAPIC virtual wire mode. Joerg is IOMMU maintainers, he is > >> very familiar with io-apic since IOMMU need take over io-apic entry > >> filling, there must be reason he wrote that. Add Joerg to CC list. > >> > >> Seems it's difficult to find a system with IO-APIC virtual wire mode, > >> maybe we can just keep it as is. Not sure if Intel engineers can help > >> explain and confirm this. > >> > >> That's all I can think of. > >> > >> Thanks > >> Baoquan > >> > >> On 07/22/16 at 04:10pm, Wei Jiangang wrote: > >>> If we specify the 'notsc' parameter for the dump-capture kernel, > >>> and then trigger a crash(panic) by using "ALT-SysRq-c" or > >>> "echo c > /proc/sysrq-trigger", the dump-capture kernel will > >>> hang in calibrate_delay_converge() and wait for jiffies changes. > >>> serial log as follows: > >>> > >>> tsc: Fast TSC calibration using PIT > >>> tsc: Detected 2099.947 MHz processor > >>> Calibrating delay loop... > >>> > >>> The reason for jiffies not changes is there's no timer interrupt > >>> passed to dump-capture kernel. > >>> > >>> In fact, once kernel panic occurs, the local APIC is disabled > >>> by lapic_shutdown() in reboot path. > >>> generly speaking, local APIC state can be initialized by BIOS > >>> after Power-Up or Reset, which doesn't apply to kdump case. > >>> so the kernel has to be responsible for initialize the interrupt > >>> mode properly according the latest status of APIC in bootup path. > >>> > >>> An MP operating system is booted under either PIC mode or > >>> virtual wire mode. Later, the operating system switches to > >>> symmetric I/O mode as it enters multiprocessor mode. > >>> Two kinds of virtual wire mode are defined in Intel MP spec: > >>> virtual wire mode via local APIC or via I/O APIC. > >>> > >>> Now we determine the mode of APIC only through a SMP BIOS(MP table). > >>> That's not enough. > >>> It's better to do further check if APIC works with effective mode, > >>> and do some porper setting. > >>> > >>> Signed-off-by: Cao jin > >>> Signed-off-by: Wei Jiangang > >>> --- > >>> arch/x86/include/asm/io_apic.h | 5 ++++ > >>> arch/x86/kernel/apic/apic.c | 55 +++++++++++++++++++++++++++++++++++++++++- > >>> arch/x86/kernel/apic/io_apic.c | 28 +++++++++++++++++++++ > >>> 3 files changed, 87 insertions(+), 1 deletion(-) > >>> > >>> diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h > >>> index 6cbf2cfb3f8a..6550bd43fa39 100644 > >>> --- a/arch/x86/include/asm/io_apic.h > >>> +++ b/arch/x86/include/asm/io_apic.h > >>> @@ -190,6 +190,7 @@ static inline unsigned int io_apic_read(unsigned int apic, unsigned int reg) > >>> } > >>> > >>> extern void setup_IO_APIC(void); > >>> +extern bool virtual_wire_via_ioapic(void); > >>> extern void enable_IO_APIC(void); > >>> extern void disable_IO_APIC(void); > >>> extern void setup_ioapic_dest(void); > >>> @@ -231,6 +232,10 @@ static inline void io_apic_init_mappings(void) { } > >>> #define native_disable_io_apic NULL > >>> > >>> static inline void setup_IO_APIC(void) { } > >>> +static inline bool virtual_wire_via_ioapic(void) > >>> +{ > >>> + return true; > >>> +} > >>> static inline void enable_IO_APIC(void) { } > >>> static inline void setup_ioapic_dest(void) { } > >>> > >>> diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c > >>> index 8e25b9b2d351..04358e0cf1e2 100644 > >>> --- a/arch/x86/kernel/apic/apic.c > >>> +++ b/arch/x86/kernel/apic/apic.c > >>> @@ -1124,6 +1124,53 @@ void __init sync_Arb_IDs(void) > >>> } > >>> > >>> /* > >>> + * Return false means the virtual wire mode through-local-apic is inactive > >>> + */ > >>> +static bool virtual_wire_via_lapic(void) > >>> +{ > >>> + unsigned int value; > >>> + > >>> + /* Check the APIC global enable/disable flag firstly */ > >>> + if (boot_cpu_data.x86 >= 6) { > >>> + u32 h, l; > >>> + > >>> + rdmsr(MSR_IA32_APICBASE, l, h); > >>> + /* > >>> + * If local APIC is disabled by BIOS > >>> + * do nothing, but return true > >>> + */ > >>> + if (!(l & MSR_IA32_APICBASE_ENABLE)) > >>> + return true; > >>> + } > >>> + > >>> + /* Check the software enable/disable flag */ > >>> + value = apic_read(APIC_SPIV); > >>> + if (!(value & APIC_SPIV_APIC_ENABLED)) > >>> + return false; > >>> + > >>> + /* > >>> + * Virtual wire mode via local APIC requests > >>> + * APIC to enable the LINT0 for edge-trggered ExtINT delivery mode > >>> + * and LINT1 for level-triggered NMI delivery mode > >>> + */ > >>> + value = apic_read(APIC_LVT0); > >>> + if (GET_APIC_DELIVERY_MODE(value) != APIC_MODE_EXTINT) > >>> + return false; > >>> + > >>> + value = apic_read(APIC_LVT1); > >>> + if (GET_APIC_DELIVERY_MODE(value) != APIC_MODE_NMI) > >>> + return false; > >>> + > >>> + return true; > >>> +} > >>> + > >>> +static bool check_virtual_wire_mode(void) > >>> +{ > >>> + /* Neither of virtual wire mode is active, return false */ > >>> + return virtual_wire_via_lapic() || virtual_wire_via_ioapic(); > >>> +} > >>> + > >>> +/* > >>> * An initial setup of the virtual wire mode. > >>> */ > >>> void __init init_bsp_APIC(void) > >>> @@ -1133,8 +1180,14 @@ void __init init_bsp_APIC(void) > >>> /* > >>> * Don't do the setup now if we have a SMP BIOS as the > >>> * through-I/O-APIC virtual wire mode might be active. > >>> + * > >>> + * It's better to do further check if either through-I/O-APIC > >>> + * or through-local-APIC is active. > >>> + * the worst case is that both of them are inactive, > >>> + * If so, We need to enable the virtual wire mode via through-local-APIC > >>> */ > >>> - if (smp_found_config || !boot_cpu_has(X86_FEATURE_APIC)) > >>> + if ((smp_found_config && check_virtual_wire_mode()) || > >>> + !boot_cpu_has(X86_FEATURE_APIC)) > >>> return; > >>> > >>> /* > >>> diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c > >>> index 446702ed99dc..5a32c26938ac 100644 > >>> --- a/arch/x86/kernel/apic/io_apic.c > >>> +++ b/arch/x86/kernel/apic/io_apic.c > >>> @@ -1379,6 +1379,34 @@ void __init print_IO_APICs(void) > >>> /* Where if anywhere is the i8259 connect in external int mode */ > >>> static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; > >>> > >>> +/* > >>> + * Return false means the virtual wire mode via I/O APIC is inactive > >>> + */ > >>> +bool virtual_wire_via_ioapic(void) > >>> +{ > >>> + int apic, pin; > >>> + > >>> + for_each_ioapic_pin(apic, pin) { > >>> + /* See if any of the pins is in ExtINT mode */ > >>> + struct IO_APIC_route_entry entry = ioapic_read_entry(apic, pin); > >>> + > >>> + /* > >>> + * If the interrupt line is enabled and in ExtInt mode > >>> + * I have found the pin where the i8259 is connected. > >>> + */ > >>> + if ((entry.mask == 0) && (entry.delivery_mode == dest_ExtINT)) > >>> + return true; > >>> + } > >>> + > >>> + /* > >>> + * Virtual wire mode via I/O APIC requests > >>> + * I/O APIC be connected to i8259 in chapter 3.6.2.2 of the MP v1.4 spec > >>> + * If no pin in ExtInt mode, > >>> + * the through-I/O-APIC virtual wire mode can be regarded inactive. > >>> + */ > >>> + return false; > >>> +} > >>> + > >>> void __init enable_IO_APIC(void) > >>> { > >>> int i8259_apic, i8259_pin; > >>> -- > >>> 1.9.3 > >>> > >>> > >>> > >> > > > > > > >