From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5F630C2BA83 for ; Fri, 7 Feb 2020 16:25:45 +0000 (UTC) Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by mail.kernel.org (Postfix) with ESMTP id D1FB421775 for ; Fri, 7 Feb 2020 16:25:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="Lvn87mwA" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D1FB421775 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvmarm-bounces@lists.cs.columbia.edu Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 84D754A5C3; Fri, 7 Feb 2020 11:25:44 -0500 (EST) X-Virus-Scanned: at lists.cs.columbia.edu Authentication-Results: mm01.cs.columbia.edu (amavisd-new); dkim=softfail (fail, message has been altered) header.i=@kernel.org Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ai5gygzpGxxH; Fri, 7 Feb 2020 11:25:42 -0500 (EST) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 0C40C4A541; Fri, 7 Feb 2020 11:25:42 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 873074A418 for ; Fri, 7 Feb 2020 11:25:41 -0500 (EST) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Nacvf43d8gba for ; Fri, 7 Feb 2020 11:25:40 -0500 (EST) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id 28E364A389 for ; Fri, 7 Feb 2020 11:25:40 -0500 (EST) Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id F1DD720720; Fri, 7 Feb 2020 16:25:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1581092739; bh=dxItuX/MNTUp6xJbcDfCUpdL0low5rzKYrUjnrd6wsA=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Lvn87mwAKYbtOHpVVZV+YpOuzhgWjtpfnUl9KvehyroTl8nYi41besgKe0gXZbmpC 1p66gQ7h+1nMkurSSG0TJEZNXL+teKng2Ek82V+YEHYTymtJW8XK/jpp6zAYQThCon 5pV9CuQF0UAXduZ63tImO8Uc/k7OO8R59Phlq0kY= Received: from disco-boy.misterjones.org ([51.254.78.96] helo=www.loen.fr) by disco-boy.misterjones.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1j06Rl-003ZVe-8p; Fri, 07 Feb 2020 16:25:37 +0000 MIME-Version: 1.0 Date: Fri, 07 Feb 2020 16:25:37 +0000 From: Marc Zyngier To: Peter Xu Subject: Re: BUG: using __this_cpu_read() in preemptible [00000000] code In-Reply-To: <20200207161845.GB707371@xz-x1> References: <318984f6-bc36-33a3-abc6-bf2295974b06@huawei.com> <828d3b538b7258f692f782b6798277cf@kernel.org> <3e90c020-e7f3-61f1-3731-a489df0b1d9c@huawei.com> <20200207161845.GB707371@xz-x1> Message-ID: <5a132e2ca9918b1b2c3d2f146ab44311@kernel.org> X-Sender: maz@kernel.org User-Agent: Roundcube Webmail/1.3.8 X-SA-Exim-Connect-IP: 51.254.78.96 X-SA-Exim-Rcpt-To: peterx@redhat.com, yuzenghui@huawei.com, kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu, pbonzini@redhat.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Cc: pbonzini@redhat.com, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org X-BeenThere: kvmarm@lists.cs.columbia.edu X-Mailman-Version: 2.1.14 Precedence: list List-Id: Where KVM/ARM decisions are made List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu T24gMjAyMC0wMi0wNyAxNjoxOCwgUGV0ZXIgWHUgd3JvdGU6Cj4gT24gRnJpLCBGZWIgMDcsIDIw MjAgYXQgMTA6MjU6MjNBTSArMDAwMCwgTWFyYyBaeW5naWVyIHdyb3RlOgo+PiBPbiAyMDIwLTAy LTA3IDEwOjE5LCBaZW5naHVpIFl1IHdyb3RlOgo+PiA+IEhpIE1hcmMsCj4+ID4KPj4gPiBPbiAy MDIwLzIvNyAxNzoxOSwgTWFyYyBaeW5naWVyIHdyb3RlOgo+PiA+ID4gSGkgWmVuZ2h1aSwKPj4g PiA+Cj4+ID4gPiBPbiAyMDIwLTAyLTA3IDA5OjAwLCBaZW5naHVpIFl1IHdyb3RlOgo+PiA+ID4g PiBIaSwKPj4gPiA+ID4KPj4gPiA+ID4gUnVubmluZyBhIGxhdGVzdCBwcmVlbXB0aWJsZSBrZXJu ZWwgYW5kIHNvbWUgZ3Vlc3RzIG9uIGl0LAo+PiA+ID4gPiBJIGdvdCB0aGUgZm9sbG93aW5nIG1l c3NhZ2UsCj4+ID4gPiA+Cj4+ID4gPiA+IC0tLTg8LS0tCj4+ID4gPiA+Cj4+ID4gPiA+IFvCoCA2 MzAuMDMxODcwXSBCVUc6IHVzaW5nIF9fdGhpc19jcHVfcmVhZCgpIGluIHByZWVtcHRpYmxlIFsw MDAwMDAwMF0KPj4gPiA+ID4gY29kZTogcWVtdS1zeXN0ZW0tYWFyLzM3MjcwCj4+ID4gPiA+IFvC oCA2MzAuMDMxODcyXSBjYWxsZXIgaXMga3ZtX2dldF9ydW5uaW5nX3ZjcHUrMHgxYy8weDM4Cj4+ ID4gPiA+IFvCoCA2MzAuMDMxODc0XSBDUFU6IDMyIFBJRDogMzcyNzAgQ29tbTogcWVtdS1zeXN0 ZW0tYWFyIEtkdW1wOiBsb2FkZWQKPj4gPiA+ID4gTm90IHRhaW50ZWQgNS41LjArCj4+ID4gPiA+ IFvCoCA2MzAuMDMxODc2XSBIYXJkd2FyZSBuYW1lOiBIdWF3ZWkgVGFpU2hhbiAyMjgwIC9CQzEx U1BDRCwKPj4gPiA+ID4gQklPUyAxLjU4Cj4+ID4gPiA+IDEwLzI5LzIwMTgKPj4gPiA+ID4gW8Kg IDYzMC4wMzE4NzZdIENhbGwgdHJhY2U6Cj4+ID4gPiA+IFvCoCA2MzAuMDMxODc4XcKgIGR1bXBf YmFja3RyYWNlKzB4MC8weDIwMAo+PiA+ID4gPiBbwqAgNjMwLjAzMTg4MF3CoCBzaG93X3N0YWNr KzB4MjQvMHgzMAo+PiA+ID4gPiBbwqAgNjMwLjAzMTg4Ml3CoCBkdW1wX3N0YWNrKzB4YjAvMHhm NAo+PiA+ID4gPiBbwqAgNjMwLjAzMTg4NF3CoCBfX3RoaXNfY3B1X3ByZWVtcHRfY2hlY2srMHhj OC8weGQwCj4+ID4gPiA+IFvCoCA2MzAuMDMxODg2XcKgIGt2bV9nZXRfcnVubmluZ192Y3B1KzB4 MWMvMHgzOAo+PiA+ID4gPiBbwqAgNjMwLjAzMTg4OF3CoCB2Z2ljX21taW9fY2hhbmdlX2FjdGl2 ZS5pc3JhLjQrMHgyYy8weGUwCj4+ID4gPiA+IFvCoCA2MzAuMDMxODkwXcKgIF9fdmdpY19tbWlv X3dyaXRlX2NhY3RpdmUrMHg4MC8weGM4Cj4+ID4gPiA+IFvCoCA2MzAuMDMxODkyXcKgIHZnaWNf bW1pb191YWNjZXNzX3dyaXRlX2NhY3RpdmUrMHgzYy8weDUwCj4+ID4gPiA+IFvCoCA2MzAuMDMx ODk0XcKgIHZnaWNfdWFjY2VzcysweGNjLzB4MTM4Cj4+ID4gPiA+IFvCoCA2MzAuMDMxODk2XcKg IHZnaWNfdjNfcmVkaXN0X3VhY2Nlc3MrMHg3Yy8weGE4Cj4+ID4gPiA+IFvCoCA2MzAuMDMxODk4 XcKgIHZnaWNfdjNfYXR0cl9yZWdzX2FjY2VzcysweDFhOC8weDIzMAo+PiA+ID4gPiBbwqAgNjMw LjAzMTkwMV3CoCB2Z2ljX3YzX3NldF9hdHRyKzB4MWI0LzB4MjkwCj4+ID4gPiA+IFvCoCA2MzAu MDMxOTAzXcKgIGt2bV9kZXZpY2VfaW9jdGxfYXR0cisweGJjLzB4MTEwCj4+ID4gPiA+IFvCoCA2 MzAuMDMxOTA1XcKgIGt2bV9kZXZpY2VfaW9jdGwrMHhjNC8weDEwOAo+PiA+ID4gPiBbwqAgNjMw LjAzMTkwN13CoCBrc3lzX2lvY3RsKzB4YjQvMHhkMAo+PiA+ID4gPiBbwqAgNjMwLjAzMTkwOV3C oCBfX2FybTY0X3N5c19pb2N0bCsweDI4LzB4MzgKPj4gPiA+ID4gW8KgIDYzMC4wMzE5MTFdwqAg ZWwwX3N2Y19jb21tb24uY29uc3Rwcm9wLjErMHg3Yy8weDFhMAo+PiA+ID4gPiBbwqAgNjMwLjAz MTkxM13CoCBkb19lbDBfc3ZjKzB4MzQvMHhhMAo+PiA+ID4gPiBbwqAgNjMwLjAzMTkxNV3CoCBl bDBfc3luY19oYW5kbGVyKzB4MTI0LzB4Mjc0Cj4+ID4gPiA+IFvCoCA2MzAuMDMxOTE2XcKgIGVs MF9zeW5jKzB4MTQwLzB4MTgwCj4+ID4gPiA+Cj4+ID4gPiA+IC0tLTg8LS0tCj4+ID4gPiA+Cj4+ ID4gPiA+IEknbSBub3cgYXQgY29tbWl0IDkwNTY4ZWNmNTYxNTQwZmEzMzA1MTFlMjFmY2Q4MjNi MGMzODI5YzYuCj4+ID4gPiA+Cj4+ID4gPiA+IEFuZCBpdCBsb29rcyBsaWtlIHZnaWNfZ2V0X21t aW9fcmVxdWVzdGVyX3ZjcHUoKSB3YXMgYnJva2VuIGJ5Cj4+ID4gPiA+IDc0OTVlMjJiYjE2NSAo IktWTTogTW92ZSBydW5uaW5nIFZDUFUgZnJvbSBBUk0gdG8gY29tbW9uIGNvZGUiKS4KPj4gPiA+ ID4KPj4gPiA+ID4gQ291bGQgYW55b25lIHBsZWFzZSBoYXZlIGEgbG9vaz8KPj4gPiA+Cj4+ID4g PiBIZXJlIHlvdSBnbzoKPj4gPiA+Cj4+ID4gPiBkaWZmIC0tZ2l0IGEvdmlydC9rdm0vYXJtL3Zn aWMvdmdpYy1tbWlvLmMKPj4gPiA+IGIvdmlydC9rdm0vYXJtL3ZnaWMvdmdpYy1tbWlvLmMKPj4g PiA+IGluZGV4IGQ2NTZlYmQ1ZjlkNC4uZTE3MzVmMTljOTI0IDEwMDY0NAo+PiA+ID4gLS0tIGEv dmlydC9rdm0vYXJtL3ZnaWMvdmdpYy1tbWlvLmMKPj4gPiA+ICsrKyBiL3ZpcnQva3ZtL2FybS92 Z2ljL3ZnaWMtbW1pby5jCj4+ID4gPiBAQCAtMTkwLDYgKzE5MCwxNSBAQCB1bnNpZ25lZCBsb25n IHZnaWNfbW1pb19yZWFkX3BlbmRpbmcoc3RydWN0Cj4+ID4gPiBrdm1fdmNwdSAqdmNwdSwKPj4g PiA+ICDCoCAqIHZhbHVlIGxhdGVyIHdpbGwgZ2l2ZSB1cyB0aGUgc2FtZSB2YWx1ZSBhcyB3ZSB1 cGRhdGUgdGhlCj4+ID4gPiBwZXItQ1BVIHZhcmlhYmxlCj4+ID4gPiAgwqAgKiBpbiB0aGUgcHJl ZW1wdCBub3RpZmllciBoYW5kbGVycy4KPj4gPiA+ICDCoCAqLwo+PiA+ID4gK3N0YXRpYyBzdHJ1 Y3Qga3ZtX3ZjcHUgKnZnaWNfZ2V0X21taW9fcmVxdWVzdGVyX3ZjcHUodm9pZCkKPj4gPiA+ICt7 Cj4+ID4gPiArwqDCoMKgIHN0cnVjdCBrdm1fdmNwdSAqdmNwdTsKPj4gPiA+ICsKPj4gPiA+ICvC oMKgwqAgcHJlZW1wdF9kaXNhYmxlKCk7Cj4+ID4gPiArwqDCoMKgIHZjcHUgPSBrdm1fZ2V0X3J1 bm5pbmdfdmNwdSgpOwo+PiA+ID4gK8KgwqDCoCBwcmVlbXB0X2VuYWJsZSgpOwo+PiA+ID4gK8Kg wqDCoCByZXR1cm4gdmNwdTsKPj4gPiA+ICt9Cj4+ID4gPgo+PiA+ID4gIMKgLyogTXVzdCBiZSBj YWxsZWQgd2l0aCBpcnEtPmlycV9sb2NrIGhlbGQgKi8KPj4gPiA+ICDCoHN0YXRpYyB2b2lkIHZn aWNfaHdfaXJxX3NwZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0Cj4+ID4gPiB2 Z2ljX2lycSAqaXJxLAo+PiA+ID4gQEAgLTIxMiw3ICsyMjEsNyBAQCB2b2lkIHZnaWNfbW1pb193 cml0ZV9zcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUKPj4gPiA+ICp2Y3B1LAo+PiA+ID4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQg bGVuLAo+PiA+ID4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25l ZCBsb25nIHZhbCkKPj4gPiA+ICDCoHsKPj4gPiA+IC3CoMKgwqAgYm9vbCBpc191YWNjZXNzID0g IWt2bV9nZXRfcnVubmluZ192Y3B1KCk7Cj4+ID4gPiArwqDCoMKgIGJvb2wgaXNfdWFjY2VzcyA9 ICF2Z2ljX2dldF9tbWlvX3JlcXVlc3Rlcl92Y3B1KCk7Cj4+ID4gPiAgwqDCoMKgwqAgdTMyIGlu dGlkID0gVkdJQ19BRERSX1RPX0lOVElEKGFkZHIsIDEpOwo+PiA+ID4gIMKgwqDCoMKgIGludCBp Owo+PiA+ID4gIMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ID4gPiBAQCAtMjY1LDcg KzI3NCw3IEBAIHZvaWQgdmdpY19tbWlvX3dyaXRlX2NwZW5kaW5nKHN0cnVjdCBrdm1fdmNwdQo+ PiA+ID4gKnZjcHUsCj4+ID4gPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sCj4+ID4gPiAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgdmFsKQo+PiA+ID4gIMKgewo+PiA+ID4g LcKgwqDCoCBib29sIGlzX3VhY2Nlc3MgPSAha3ZtX2dldF9ydW5uaW5nX3ZjcHUoKTsKPj4gPiA+ ICvCoMKgwqAgYm9vbCBpc191YWNjZXNzID0gIXZnaWNfZ2V0X21taW9fcmVxdWVzdGVyX3ZjcHUo KTsKPj4gPiA+ICDCoMKgwqDCoCB1MzIgaW50aWQgPSBWR0lDX0FERFJfVE9fSU5USUQoYWRkciwg MSk7Cj4+ID4gPiAgwqDCoMKgwqAgaW50IGk7Cj4+ID4gPiAgwqDCoMKgwqAgdW5zaWduZWQgbG9u ZyBmbGFnczsKPj4gPiA+IEBAIC0zMjYsNyArMzM1LDcgQEAgc3RhdGljIHZvaWQgdmdpY19tbWlv X2NoYW5nZV9hY3RpdmUoc3RydWN0Cj4+ID4gPiBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZnaWNf aXJxICppcnEsCj4+ID4gPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBib29sIGFjdGl2ZSkKPj4gPiA+ICDCoHsKPj4gPiA+ICDCoMKgwqDCoCB1bnNpZ25lZCBsb25n IGZsYWdzOwo+PiA+ID4gLcKgwqDCoCBzdHJ1Y3Qga3ZtX3ZjcHUgKnJlcXVlc3Rlcl92Y3B1ID0g a3ZtX2dldF9ydW5uaW5nX3ZjcHUoKTsKPj4gPiA+ICvCoMKgwqAgc3RydWN0IGt2bV92Y3B1ICpy ZXF1ZXN0ZXJfdmNwdSA9IHZnaWNfZ2V0X21taW9fcmVxdWVzdGVyX3ZjcHUoKTsKPj4gPiA+Cj4+ ID4gPiAgwqDCoMKgwqAgcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZpcnEtPmlycV9sb2NrLCBmbGFn cyk7Cj4+ID4gPgo+PiA+ID4KPj4gPiA+IFRoYXQncyBiYXNpY2FsbHkgYSByZXZlcnQgb2YgdGhl IG9mZmVuZGluZyBjb2RlLiBUaGUgY29tbWVudCByaWdodAo+PiA+ID4gYWJvdmUKPj4gPiA+IHZn aWNfZ2V0X21taW9fcmVxdWVzdGVyX3ZjcHUoKSBleHBsYWlucyAqd2h5KiB0aGlzIGlzIHZhbGlk LCBhbmQgd2h5Cj4+ID4gPiBwcmVlbXB0X2Rpc2FibGUoKSBpcyBuZWVkZWQuCj4gCj4gU29ycnkg Zm9yIG5vdCBub3RpY2luZyB0aGlzIGJlZm9yZS4KPiAKPj4gPgo+PiA+IEkgc2VlLCB0aGFua3Mh Cj4+ID4KPj4gPiA+Cj4+ID4gPiBDYW4geW91IHBsZWFzZSBnaXZlIGl0IGEgc2hvdD8KPj4gPgo+ PiA+IFllcywgaXQgd29ya3MgZm9yIG1lOgo+PiA+Cj4+ID4gVGVzdGVkLWJ5OiBaZW5naHVpIFl1 IDx5dXplbmdodWlAaHVhd2VpLmNvbT4KPj4gCj4+IEFjdHVhbGx5LCBtYXliZSBhIGJldHRlci9z aW1wbGVyIGZpeCB3b3VsZCBiZSB0aGlzOgo+PiAKPj4gZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2 bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCj4+IGluZGV4IDY3YWUyZDVjMzdiMi4uM2Nm NzcxOWQzMTc3IDEwMDY0NAo+PiAtLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jCj4+ICsrKyBiL3Zp cnQva3ZtL2t2bV9tYWluLmMKPj4gQEAgLTQ0MTQsNyArNDQxNCwxMyBAQCBzdGF0aWMgdm9pZCBr dm1fc2NoZWRfb3V0KHN0cnVjdCAKPj4gcHJlZW1wdF9ub3RpZmllcgo+PiAqcG4sCj4+ICAgKi8K Pj4gIHN0cnVjdCBrdm1fdmNwdSAqa3ZtX2dldF9ydW5uaW5nX3ZjcHUodm9pZCkKPj4gIHsKPj4g LSAgICAgICAgcmV0dXJuIF9fdGhpc19jcHVfcmVhZChrdm1fcnVubmluZ192Y3B1KTsKPj4gKwlz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7Cj4+ICsKPj4gKwlwcmVlbXB0X2Rpc2FibGUoKTsKPj4gKwl2 Y3B1ID0gX190aGlzX2NwdV9yZWFkKGt2bV9ydW5uaW5nX3ZjcHUpOwo+PiArCXByZWVtcHRfZW5h YmxlKCk7Cj4+ICsKPj4gKwlyZXR1cm4gdmNwdTsKPj4gIH0KPj4gCj4+ICAvKioKPj4gCj4+IHdo aWNoIG1hdGNoZXMgdGhlIGNvbW1lbnQgdGhhdCBjb21lcyB3aXRoIHRoZSBmdW5jdGlvbi4KPj4g Cj4+IFBhb2xvLCB3aGljaCBvbmUgZG8geW91IHByZWZlcj8gSXQgc2VlbXMgdG8gbWUgdGhhdCB0 aGUgaW50ZW50IG9mIAo+PiBtb3ZpbmcKPj4gdGhpcyB0byBjb3JlIGNvZGUgd2FzIHRvIHByb3Zp ZGUgYSBoaWdoIGxldmVsIEFQSSB0aGF0IHdvcmtzIGF0IGFsbCAKPj4gdGltZXMuCj4gCj4gTm90 IHN1cmUgYWJvdXQgUGFvbG8sIGJ1dCB0aGlzIGxvb2tzIGJldHRlciBhdCBsZWFzdCB0byBtZS4g IFNoYWxsIHdlCj4gYWxzbyBtb3ZlIHRoZSBjb21tZW50IGZyb20gdmdpYy1tbWlvLmMgdG8gaGVy ZT8gIEFuZCB3ZSBjYW4gcmVtb3ZlIHRoZQo+IDFzdCBwYXJhZ3JhcGg6Cj4gCj4gLyoKPiAgKiBX ZSBjYW4gZGlzYWJsZSBwcmVlbXB0aW9uIGxvY2FsbHkgYXJvdW5kIGFjY2Vzc2luZyB0aGUgcGVy LUNQVSAKPiB2YXJpYWJsZSwKPiAgKiBhbmQgdXNlIHRoZSByZXNvbHZlZCB2Y3B1IHBvaW50ZXIg YWZ0ZXIgZW5hYmxpbmcgcHJlZW1wdGlvbiBhZ2FpbiwgCj4gYmVjYXVzZQo+ICAqIGV2ZW4gaWYg dGhlIGN1cnJlbnQgdGhyZWFkIGlzIG1pZ3JhdGVkIHRvIGFub3RoZXIgQ1BVLCByZWFkaW5nIHRo ZSAKPiBwZXItQ1BVCj4gICogdmFsdWUgbGF0ZXIgd2lsbCBnaXZlIHVzIHRoZSBzYW1lIHZhbHVl IGFzIHdlIHVwZGF0ZSB0aGUgcGVyLUNQVSAKPiB2YXJpYWJsZQo+ICAqIGluIHRoZSBwcmVlbXB0 IG5vdGlmaWVyIGhhbmRsZXJzLgo+ICAqLwoKU3VyZS4gSSdsbCBhZGQgaXQgYW5kIHBvc3QgYW4g YWN0dWFsIHBhdGNoIGluIGEgbW9tZW50LgoKVGhhbmtzLAoKICAgICAgICAgTS4KLS0gCkphenog aXMgbm90IGRlYWQuIEl0IGp1c3Qgc21lbGxzIGZ1bm55Li4uCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmt2bWFybSBtYWlsaW5nIGxpc3QKa3ZtYXJtQGxp c3RzLmNzLmNvbHVtYmlhLmVkdQpodHRwczovL2xpc3RzLmNzLmNvbHVtYmlhLmVkdS9tYWlsbWFu L2xpc3RpbmZvL2t2bWFybQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6554BC2BA83 for ; Fri, 7 Feb 2020 16:25:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2A9C721775 for ; Fri, 7 Feb 2020 16:25:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1581092741; bh=dxItuX/MNTUp6xJbcDfCUpdL0low5rzKYrUjnrd6wsA=; h=Date:From:To:Cc:Subject:In-Reply-To:References:List-ID:From; b=av5u/XgJ7LQmT0SQnFPfO3W5RX5p2nTmdkQamEpL/5AE9c4B0x1vUtMcENWwvuVf4 0YzoRyVWP8ab3+ASLqUF8dt+8HORvalKrC9a0ghyaM4pBDFTGu2D1fZWvlWv25em8y 94+GPwrDK84e/qGj2t2yKssoxlgz1pLn0X2CUZ+Q= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727028AbgBGQZk (ORCPT ); Fri, 7 Feb 2020 11:25:40 -0500 Received: from mail.kernel.org ([198.145.29.99]:36962 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726874AbgBGQZk (ORCPT ); Fri, 7 Feb 2020 11:25:40 -0500 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id F1DD720720; Fri, 7 Feb 2020 16:25:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1581092739; bh=dxItuX/MNTUp6xJbcDfCUpdL0low5rzKYrUjnrd6wsA=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Lvn87mwAKYbtOHpVVZV+YpOuzhgWjtpfnUl9KvehyroTl8nYi41besgKe0gXZbmpC 1p66gQ7h+1nMkurSSG0TJEZNXL+teKng2Ek82V+YEHYTymtJW8XK/jpp6zAYQThCon 5pV9CuQF0UAXduZ63tImO8Uc/k7OO8R59Phlq0kY= Received: from disco-boy.misterjones.org ([51.254.78.96] helo=www.loen.fr) by disco-boy.misterjones.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1j06Rl-003ZVe-8p; Fri, 07 Feb 2020 16:25:37 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Date: Fri, 07 Feb 2020 16:25:37 +0000 From: Marc Zyngier To: Peter Xu Cc: Zenghui Yu , kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu, pbonzini@redhat.com Subject: Re: BUG: using __this_cpu_read() in preemptible [00000000] code In-Reply-To: <20200207161845.GB707371@xz-x1> References: <318984f6-bc36-33a3-abc6-bf2295974b06@huawei.com> <828d3b538b7258f692f782b6798277cf@kernel.org> <3e90c020-e7f3-61f1-3731-a489df0b1d9c@huawei.com> <20200207161845.GB707371@xz-x1> Message-ID: <5a132e2ca9918b1b2c3d2f146ab44311@kernel.org> X-Sender: maz@kernel.org User-Agent: Roundcube Webmail/1.3.8 X-SA-Exim-Connect-IP: 51.254.78.96 X-SA-Exim-Rcpt-To: peterx@redhat.com, yuzenghui@huawei.com, kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu, pbonzini@redhat.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org On 2020-02-07 16:18, Peter Xu wrote: > On Fri, Feb 07, 2020 at 10:25:23AM +0000, Marc Zyngier wrote: >> On 2020-02-07 10:19, Zenghui Yu wrote: >> > Hi Marc, >> > >> > On 2020/2/7 17:19, Marc Zyngier wrote: >> > > Hi Zenghui, >> > > >> > > On 2020-02-07 09:00, Zenghui Yu wrote: >> > > > Hi, >> > > > >> > > > Running a latest preemptible kernel and some guests on it, >> > > > I got the following message, >> > > > >> > > > ---8<--- >> > > > >> > > > [  630.031870] BUG: using __this_cpu_read() in preemptible [00000000] >> > > > code: qemu-system-aar/37270 >> > > > [  630.031872] caller is kvm_get_running_vcpu+0x1c/0x38 >> > > > [  630.031874] CPU: 32 PID: 37270 Comm: qemu-system-aar Kdump: loaded >> > > > Not tainted 5.5.0+ >> > > > [  630.031876] Hardware name: Huawei TaiShan 2280 /BC11SPCD, >> > > > BIOS 1.58 >> > > > 10/29/2018 >> > > > [  630.031876] Call trace: >> > > > [  630.031878]  dump_backtrace+0x0/0x200 >> > > > [  630.031880]  show_stack+0x24/0x30 >> > > > [  630.031882]  dump_stack+0xb0/0xf4 >> > > > [  630.031884]  __this_cpu_preempt_check+0xc8/0xd0 >> > > > [  630.031886]  kvm_get_running_vcpu+0x1c/0x38 >> > > > [  630.031888]  vgic_mmio_change_active.isra.4+0x2c/0xe0 >> > > > [  630.031890]  __vgic_mmio_write_cactive+0x80/0xc8 >> > > > [  630.031892]  vgic_mmio_uaccess_write_cactive+0x3c/0x50 >> > > > [  630.031894]  vgic_uaccess+0xcc/0x138 >> > > > [  630.031896]  vgic_v3_redist_uaccess+0x7c/0xa8 >> > > > [  630.031898]  vgic_v3_attr_regs_access+0x1a8/0x230 >> > > > [  630.031901]  vgic_v3_set_attr+0x1b4/0x290 >> > > > [  630.031903]  kvm_device_ioctl_attr+0xbc/0x110 >> > > > [  630.031905]  kvm_device_ioctl+0xc4/0x108 >> > > > [  630.031907]  ksys_ioctl+0xb4/0xd0 >> > > > [  630.031909]  __arm64_sys_ioctl+0x28/0x38 >> > > > [  630.031911]  el0_svc_common.constprop.1+0x7c/0x1a0 >> > > > [  630.031913]  do_el0_svc+0x34/0xa0 >> > > > [  630.031915]  el0_sync_handler+0x124/0x274 >> > > > [  630.031916]  el0_sync+0x140/0x180 >> > > > >> > > > ---8<--- >> > > > >> > > > I'm now at commit 90568ecf561540fa330511e21fcd823b0c3829c6. >> > > > >> > > > And it looks like vgic_get_mmio_requester_vcpu() was broken by >> > > > 7495e22bb165 ("KVM: Move running VCPU from ARM to common code"). >> > > > >> > > > Could anyone please have a look? >> > > >> > > Here you go: >> > > >> > > diff --git a/virt/kvm/arm/vgic/vgic-mmio.c >> > > b/virt/kvm/arm/vgic/vgic-mmio.c >> > > index d656ebd5f9d4..e1735f19c924 100644 >> > > --- a/virt/kvm/arm/vgic/vgic-mmio.c >> > > +++ b/virt/kvm/arm/vgic/vgic-mmio.c >> > > @@ -190,6 +190,15 @@ unsigned long vgic_mmio_read_pending(struct >> > > kvm_vcpu *vcpu, >> > >   * value later will give us the same value as we update the >> > > per-CPU variable >> > >   * in the preempt notifier handlers. >> > >   */ >> > > +static struct kvm_vcpu *vgic_get_mmio_requester_vcpu(void) >> > > +{ >> > > +    struct kvm_vcpu *vcpu; >> > > + >> > > +    preempt_disable(); >> > > +    vcpu = kvm_get_running_vcpu(); >> > > +    preempt_enable(); >> > > +    return vcpu; >> > > +} >> > > >> > >  /* Must be called with irq->irq_lock held */ >> > >  static void vgic_hw_irq_spending(struct kvm_vcpu *vcpu, struct >> > > vgic_irq *irq, >> > > @@ -212,7 +221,7 @@ void vgic_mmio_write_spending(struct kvm_vcpu >> > > *vcpu, >> > >                    gpa_t addr, unsigned int len, >> > >                    unsigned long val) >> > >  { >> > > -    bool is_uaccess = !kvm_get_running_vcpu(); >> > > +    bool is_uaccess = !vgic_get_mmio_requester_vcpu(); >> > >      u32 intid = VGIC_ADDR_TO_INTID(addr, 1); >> > >      int i; >> > >      unsigned long flags; >> > > @@ -265,7 +274,7 @@ void vgic_mmio_write_cpending(struct kvm_vcpu >> > > *vcpu, >> > >                    gpa_t addr, unsigned int len, >> > >                    unsigned long val) >> > >  { >> > > -    bool is_uaccess = !kvm_get_running_vcpu(); >> > > +    bool is_uaccess = !vgic_get_mmio_requester_vcpu(); >> > >      u32 intid = VGIC_ADDR_TO_INTID(addr, 1); >> > >      int i; >> > >      unsigned long flags; >> > > @@ -326,7 +335,7 @@ static void vgic_mmio_change_active(struct >> > > kvm_vcpu *vcpu, struct vgic_irq *irq, >> > >                      bool active) >> > >  { >> > >      unsigned long flags; >> > > -    struct kvm_vcpu *requester_vcpu = kvm_get_running_vcpu(); >> > > +    struct kvm_vcpu *requester_vcpu = vgic_get_mmio_requester_vcpu(); >> > > >> > >      raw_spin_lock_irqsave(&irq->irq_lock, flags); >> > > >> > > >> > > That's basically a revert of the offending code. The comment right >> > > above >> > > vgic_get_mmio_requester_vcpu() explains *why* this is valid, and why >> > > preempt_disable() is needed. > > Sorry for not noticing this before. > >> > >> > I see, thanks! >> > >> > > >> > > Can you please give it a shot? >> > >> > Yes, it works for me: >> > >> > Tested-by: Zenghui Yu >> >> Actually, maybe a better/simpler fix would be this: >> >> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c >> index 67ae2d5c37b2..3cf7719d3177 100644 >> --- a/virt/kvm/kvm_main.c >> +++ b/virt/kvm/kvm_main.c >> @@ -4414,7 +4414,13 @@ static void kvm_sched_out(struct >> preempt_notifier >> *pn, >> */ >> struct kvm_vcpu *kvm_get_running_vcpu(void) >> { >> - return __this_cpu_read(kvm_running_vcpu); >> + struct kvm_vcpu *vcpu; >> + >> + preempt_disable(); >> + vcpu = __this_cpu_read(kvm_running_vcpu); >> + preempt_enable(); >> + >> + return vcpu; >> } >> >> /** >> >> which matches the comment that comes with the function. >> >> Paolo, which one do you prefer? It seems to me that the intent of >> moving >> this to core code was to provide a high level API that works at all >> times. > > Not sure about Paolo, but this looks better at least to me. Shall we > also move the comment from vgic-mmio.c to here? And we can remove the > 1st paragraph: > > /* > * We can disable preemption locally around accessing the per-CPU > variable, > * and use the resolved vcpu pointer after enabling preemption again, > because > * even if the current thread is migrated to another CPU, reading the > per-CPU > * value later will give us the same value as we update the per-CPU > variable > * in the preempt notifier handlers. > */ Sure. I'll add it and post an actual patch in a moment. Thanks, M. -- Jazz is not dead. It just smells funny...