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 Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by smtp.lore.kernel.org (Postfix) with ESMTP id B47E5C433EF for ; Mon, 10 Jan 2022 15:39:06 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 2C6184B16E; Mon, 10 Jan 2022 10:39:06 -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=@redhat.com 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 QP5zWhKZ+swI; Mon, 10 Jan 2022 10:39:04 -0500 (EST) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id EB7294B15E; Mon, 10 Jan 2022 10:39:04 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id AC2F44B12C for ; Mon, 10 Jan 2022 10:39:03 -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 mgn4EQo-ZMtL for ; Mon, 10 Jan 2022 10:39:01 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 8E6EA49FE6 for ; Mon, 10 Jan 2022 10:39:01 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1641829141; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Vn/4MITr303eLI/9sy4vZE7T+80p2T43/HHj8bjumUI=; b=EqGkm6LolTRYNRUUKoBJba5S/+i6bDTVHKDUjkqPtJwboI8zoZmcDHOlTgo5GQaeh+l4rM DyOo3/t9DFr4FewRBfigZUBQGPhNmJyPJ5XrBkVsDKxsSzSmnMgGlh/MMu+9Told5Annlv zvPiqVs2KRLTSRTVOJr/fRzVvS0YC6s= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-396-CEx7yLGMNqOXvqY5yMS55g-1; Mon, 10 Jan 2022 10:39:00 -0500 X-MC-Unique: CEx7yLGMNqOXvqY5yMS55g-1 Received: by mail-wm1-f69.google.com with SMTP id d4-20020a05600c34c400b00345d5d47d54so94558wmq.6 for ; Mon, 10 Jan 2022 07:39:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:subject:to:cc:references:from :message-id:date:user-agent:mime-version:in-reply-to :content-transfer-encoding:content-language; bh=Vn/4MITr303eLI/9sy4vZE7T+80p2T43/HHj8bjumUI=; b=eFn1yX8N4V9+52xVNruC7IWSN8jmT830UNILlGCAeR/VjHO9SdL94AfKJjbYbnAb3g bV37lpVsIJy6zV+4rZ9Zfn58/pjB5HEgrOJpff2oNI5Yfp4DecDgU8sN6NnL9iWADIag LvIA7qhNk4odnI/lszxNau3JagnpE3/V7VuhGUO+ej4YHnTWQTb16lH01J7o9Kznb5kx TwEidaBSahk7c9297ISmrSzOPHmkCrlf48qj8VX6qXGoI1K7HinqIsK56GJ5Kb/czplM bUhH2zQbqs+qtx2YvORse4qglXh08qIsdacaFDmHdlvbCyNi9t+RFSCf34ZN56yO79ER YaKQ== X-Gm-Message-State: AOAM533pOSXbix/s/2R9gZbiHE8A9FauY1j2utpyXxux+MyRRdzEkPA+ k+jtJedxbCn7sphuTBPzPFP4/zCLippegT/jGQVdwhULN7FMGE3XOGqIa948FYS6zkMkTDLhoy6 FmwLjl7jtDfrGsqWIG1X42Nhz X-Received: by 2002:a5d:4609:: with SMTP id t9mr153678wrq.551.1641829138990; Mon, 10 Jan 2022 07:38:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJwZifhrLZp+3rpsOY24CeNlWG+k7+BKtRIYq4bZWPG5Q97FLrRELUVOFGLaCLaT/fCtp/nCcw== X-Received: by 2002:a5d:4609:: with SMTP id t9mr153665wrq.551.1641829138790; Mon, 10 Jan 2022 07:38:58 -0800 (PST) Received: from ?IPv6:2a01:e0a:59e:9d80:527b:9dff:feef:3874? ([2a01:e0a:59e:9d80:527b:9dff:feef:3874]) by smtp.gmail.com with ESMTPSA id n12sm7169407wmq.30.2022.01.10.07.38.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Jan 2022 07:38:57 -0800 (PST) Subject: Re: [PATCH v4 4/6] hw/arm/virt: Use the PA range to compute the memory map To: Marc Zyngier , qemu-devel@nongnu.org References: <20220107163324.2491209-1-maz@kernel.org> <20220107163324.2491209-5-maz@kernel.org> From: Eric Auger Message-ID: Date: Mon, 10 Jan 2022 16:38:56 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <20220107163324.2491209-5-maz@kernel.org> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=eric.auger@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Cc: kernel-team@android.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 Reply-To: eric.auger@redhat.com List-Id: Where KVM/ARM decisions are made List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu SGkgTWFyYywKCk9uIDEvNy8yMiA1OjMzIFBNLCBNYXJjIFp5bmdpZXIgd3JvdGU6Cj4gVGhlIGhp Z2htZW0gYXR0cmlidXRlIGlzIG5vdGhpbmcgYnV0IGFub3RoZXIgd2F5IHRvIGV4cHJlc3MgdGhl Cj4gUEEgcmFuZ2Ugb2YgYSBWTS4gVG8gc3VwcG9ydCBIVyB0aGF0IGhhcyBhIHNtYWxsZXIgUEEg cmFuZ2UgdGhlbgo+IHdoYXQgUUVNVSBhc3N1bWVzLCBwYXNzIHRoaXMgUEEgcmFuZ2UgdG8gdGhl IHZpcnRfc2V0X21lbW1hcCgpCj4gZnVuY3Rpb24sIGFsbG93aW5nIGl0IHRvIGNvcnJlY3RseSBl eGNsdWRlIGhpZ2htZW0gZGV2aWNlcwo+IGlmIHRoZXkgYXJlIG91dHNpZGUgb2YgdGhlIFBBIHJh bmdlLgo+Cj4gU2lnbmVkLW9mZi1ieTogTWFyYyBaeW5naWVyIDxtYXpAa2VybmVsLm9yZz4KPiAt LS0KPiAgaHcvYXJtL3ZpcnQuYyB8IDUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwg NyBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9ody9hcm0vdmlydC5jIGIvaHcvYXJtL3Zp cnQuYwo+IGluZGV4IDU3YzU1ZThhMzcuLmRiNGIwNjM2ZTEgMTAwNjQ0Cj4gLS0tIGEvaHcvYXJt L3ZpcnQuYwo+ICsrKyBiL2h3L2FybS92aXJ0LmMKPiBAQCAtMTY2MCw3ICsxNjYwLDcgQEAgc3Rh dGljIHVpbnQ2NF90IHZpcnRfY3B1X21wX2FmZmluaXR5KFZpcnRNYWNoaW5lU3RhdGUgKnZtcywg aW50IGlkeCkKPiAgICAgIHJldHVybiBhcm1fY3B1X21wX2FmZmluaXR5KGlkeCwgY2x1c3RlcnN6 KTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgdmlydF9zZXRfbWVtbWFwKFZpcnRNYWNoaW5lU3Rh dGUgKnZtcykKPiArc3RhdGljIHZvaWQgdmlydF9zZXRfbWVtbWFwKFZpcnRNYWNoaW5lU3RhdGUg KnZtcywgaW50IHBhX2JpdHMpCj4gIHsKPiAgICAgIE1hY2hpbmVTdGF0ZSAqbXMgPSBNQUNISU5F KHZtcyk7Cj4gICAgICBod2FkZHIgYmFzZSwgZGV2aWNlX21lbW9yeV9iYXNlLCBkZXZpY2VfbWVt b3J5X3NpemUsIG1lbXRvcDsKPiBAQCAtMTY3OCw2ICsxNjc4LDEzIEBAIHN0YXRpYyB2b2lkIHZp cnRfc2V0X21lbW1hcChWaXJ0TWFjaGluZVN0YXRlICp2bXMpCj4gICAgICAgICAgZXhpdChFWElU X0ZBSUxVUkUpOwo+ICAgICAgfQo+ICAKPiArICAgIC8qCj4gKyAgICAgKiAhaGlnaG1lbSBpcyBl eGFjdGx5IHRoZSBzYW1lIGFzIGxpbWl0aW5nIHRoZSBQQSBzcGFjZSB0byAzMmJpdCwKPiArICAg ICAqIGlycmVzcGVjdGl2ZSBvZiB0aGUgdW5kZXJseWluZyBjYXBhYmlsaXRpZXMgb2YgdGhlIEhX Lgo+ICsgICAgICovCj4gKyAgICBpZiAoIXZtcy0+aGlnaG1lbSkKPiArCSAgICBwYV9iaXRzID0g MzI7CnlvdSBuZWVkIHt9IGFjY29yZGluZyB0byB0aGUgUUVNVSBjb2Rpbmcgc3R5bGUuIFdlbGNv bWUgdG8gYSBuZXcgc2hpbnkKd29ybGQgOi0pCj4gKwo+ICAgICAgLyoKPiAgICAgICAqIFdlIGNv bXB1dGUgdGhlIGJhc2Ugb2YgdGhlIGhpZ2ggSU8gcmVnaW9uIGRlcGVuZGluZyBvbiB0aGUKPiAg ICAgICAqIGFtb3VudCBvZiBpbml0aWFsIGFuZCBkZXZpY2UgbWVtb3J5LiBUaGUgZGV2aWNlIG1l bW9yeSBzdGFydC9zaXplCj4gQEAgLTE2OTEsOCArMTY5OCw5IEBAIHN0YXRpYyB2b2lkIHZpcnRf c2V0X21lbW1hcChWaXJ0TWFjaGluZVN0YXRlICp2bXMpCj4gIAo+ICAgICAgLyogQmFzZSBhZGRy ZXNzIG9mIHRoZSBoaWdoIElPIHJlZ2lvbiAqLwo+ICAgICAgbWVtdG9wID0gYmFzZSA9IGRldmlj ZV9tZW1vcnlfYmFzZSArIFJPVU5EX1VQKGRldmljZV9tZW1vcnlfc2l6ZSwgR2lCKTsKPiAtICAg IGlmICghdm1zLT5oaWdobWVtICYmIG1lbXRvcCA+IDQgKiBHaUIpIHsKPiAtICAgICAgICBlcnJv cl9yZXBvcnQoImhpZ2htZW09b2ZmLCBidXQgbWVtb3J5IGNyb3NzZXMgdGhlIDRHaUIgbGltaXRc biIpOwo+ICsgICAgaWYgKG1lbXRvcCA+IEJJVF9VTEwocGFfYml0cykpIHsKPiArCSAgICBlcnJv cl9yZXBvcnQoIkFkZHJlc3NpbmcgbGltaXRlZCB0byAlZCBiaXRzLCBidXQgbWVtb3J5IGV4Y2Vl ZHMgaXQgYnkgJWxsdSBieXRlc1xuIiwKPiArCQkJIHBhX2JpdHMsIG1lbXRvcCAtIEJJVF9VTEwo cGFfYml0cykpOwo+ICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKPiAgICAgIH0KPiAgICAg IGlmIChiYXNlIDwgZGV2aWNlX21lbW9yeV9iYXNlKSB7Cj4gQEAgLTE3MTEsNyArMTcxOSwxMyBA QCBzdGF0aWMgdm9pZCB2aXJ0X3NldF9tZW1tYXAoVmlydE1hY2hpbmVTdGF0ZSAqdm1zKQo+ICAg ICAgICAgIHZtcy0+bWVtbWFwW2ldLnNpemUgPSBzaXplOwo+ICAgICAgICAgIGJhc2UgKz0gc2l6 ZTsKPiAgICAgIH0KPiAtICAgIHZtcy0+aGlnaGVzdF9ncGEgPSAodm1zLT5oaWdobWVtID8gYmFz ZSA6IG1lbXRvcCkgLSAxOwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBJZiBiYXNlIGZpdHMgd2l0 aGluIHBhX2JpdHMsIGFsbCBnb29kLiBJZiBpdCBkb2Vzbid0LCBsaW1pdCBpdAo+ICsgICAgICog dG8gdGhlIGVuZCBvZiBSQU0sIHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gZml0IHdpdGhpbiBwYV9i aXRzLgo+ICsgICAgICovCj4gKyAgICB2bXMtPmhpZ2hlc3RfZ3BhID0gKGJhc2UgPD0gQklUX1VM TChwYV9iaXRzKSA/IGJhc2UgOiBtZW10b3ApIC0gMTsKPiArCj4gICAgICBpZiAoZGV2aWNlX21l bW9yeV9zaXplID4gMCkgewo+ICAgICAgICAgIG1zLT5kZXZpY2VfbWVtb3J5ID0gZ19tYWxsb2Mw KHNpemVvZigqbXMtPmRldmljZV9tZW1vcnkpKTsKPiAgICAgICAgICBtcy0+ZGV2aWNlX21lbW9y eS0+YmFzZSA9IGRldmljZV9tZW1vcnlfYmFzZTsKPiBAQCAtMTkwMiwxMiArMTkxNiwzOCBAQCBz dGF0aWMgdm9pZCBtYWNodmlydF9pbml0KE1hY2hpbmVTdGF0ZSAqbWFjaGluZSkKPiAgICAgIHVu c2lnbmVkIGludCBzbXBfY3B1cyA9IG1hY2hpbmUtPnNtcC5jcHVzOwo+ICAgICAgdW5zaWduZWQg aW50IG1heF9jcHVzID0gbWFjaGluZS0+c21wLm1heF9jcHVzOwpNb3ZlIHRoZSBjcHVfdHlwZSBj aGVjayBiZWZvcmU/CgrCoMKgwqAgaWYgKCFjcHVfdHlwZV92YWxpZChtYWNoaW5lLT5jcHVfdHlw ZSkpIHsKwqDCoMKgwqDCoMKgwqAgZXJyb3JfcmVwb3J0KCJtYWNoLXZpcnQ6IENQVSB0eXBlICVz IG5vdCBzdXBwb3J0ZWQiLAptYWNoaW5lLT5jcHVfdHlwZSk7CsKgwqDCoMKgwqDCoMKgIGV4aXQo MSk7CsKgwqDCoCB9Cj4gIAo+ICsgICAgcG9zc2libGVfY3B1cyA9IG1jLT5wb3NzaWJsZV9jcHVf YXJjaF9pZHMobWFjaGluZSk7Cj4gKwo+ICAgICAgLyoKPiAgICAgICAqIEluIGFjY2VsZXJhdGVk IG1vZGUsIHRoZSBtZW1vcnkgbWFwIGlzIGNvbXB1dGVkIGVhcmxpZXIgaW4ga3ZtX3R5cGUoKQo+ ICAgICAgICogdG8gY3JlYXRlIGEgVk0gd2l0aCB0aGUgcmlnaHQgbnVtYmVyIG9mIElQQSBiaXRz Lgo+ICAgICAgICovCj4gICAgICBpZiAoIXZtcy0+bWVtbWFwKSB7Cj4gLSAgICAgICAgdmlydF9z ZXRfbWVtbWFwKHZtcyk7Cj4gKyAgICAgICAgT2JqZWN0ICpjcHVvYmo7Cj4gKyAgICAgICAgQVJN Q1BVICphcm1jcHU7Cj4gKyAgICAgICAgaW50IHBhX2JpdHM7Cj4gKwo+ICsgICAgICAgIC8qCj4g KyAgICAgICAgICogSW5zdGFuY2lhdGUgYSB0ZW1wb3JhcnkgQ1BVIG9iamVjdCB0byBmaW5kIG91 dCBhYm91dCB3aGF0Cj4gKyAgICAgICAgICogd2UgYXJlIGFib3V0IHRvIGRlYWwgd2l0aC4gT25j ZSB0aGlzIGlzIGRvbmUsIGdldCByaWQgb2YKPiArICAgICAgICAgKiB0aGUgb2JqZWN0Lgo+ICsg ICAgICAgICAqLwo+ICsgICAgICAgIGNwdW9iaiA9IG9iamVjdF9uZXcocG9zc2libGVfY3B1cy0+ Y3B1c1swXS50eXBlKTsKPiArICAgICAgICBhcm1jcHUgPSBBUk1fQ1BVKGNwdW9iaik7Cj4gKwo+ ICsgICAgICAgIGlmIChvYmplY3RfcHJvcGVydHlfZ2V0X2Jvb2woY3B1b2JqLCAiYWFyY2g2NCIs IE5VTEwpKSB7Cj4gKyAgICAgICAgICAgIHBhX2JpdHMgPSBhcm1fcGFtYXgoYXJtY3B1KTsKPiAr ICAgICAgICB9IGVsc2UgaWYgKGFybV9mZWF0dXJlKCZhcm1jcHUtPmVudiwgQVJNX0ZFQVRVUkVf TFBBRSkpIHsKPiArICAgICAgICAgICAgLyogdjcgd2l0aCBMUEFFICovCj4gKyAgICAgICAgICAg IHBhX2JpdHMgPSA0MDsKPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAvKiBBbnl0 aGluZyBlbHNlICovCj4gKyAgICAgICAgICAgIHBhX2JpdHMgPSAzMjsKPiArICAgICAgICB9Cj4g Kwo+ICsgICAgICAgIG9iamVjdF91bnJlZihjcHVvYmopOwo+ICsKPiArICAgICAgICB2aXJ0X3Nl dF9tZW1tYXAodm1zLCBwYV9iaXRzKTsKPiAgICAgIH0KPiAgCj4gICAgICAvKiBXZSBjYW4gcHJv YmUgb25seSBoZXJlIGJlY2F1c2UgZHVyaW5nIHByb3BlcnR5IHNldAo+IEBAIC0xOTg5LDcgKzIw MjksNiBAQCBzdGF0aWMgdm9pZCBtYWNodmlydF9pbml0KE1hY2hpbmVTdGF0ZSAqbWFjaGluZSkK PiAgCj4gICAgICBjcmVhdGVfZmR0KHZtcyk7Cj4gIAo+IC0gICAgcG9zc2libGVfY3B1cyA9IG1j LT5wb3NzaWJsZV9jcHVfYXJjaF9pZHMobWFjaGluZSk7Cj4gICAgICBhc3NlcnQocG9zc2libGVf Y3B1cy0+bGVuID09IG1heF9jcHVzKTsKPiAgICAgIGZvciAobiA9IDA7IG4gPCBwb3NzaWJsZV9j cHVzLT5sZW47IG4rKykgewo+ICAgICAgICAgIE9iamVjdCAqY3B1b2JqOwo+IEBAIC0yNjQ2LDcg KzI2ODUsNyBAQCBzdGF0aWMgaW50IHZpcnRfa3ZtX3R5cGUoTWFjaGluZVN0YXRlICptcywgY29u c3QgY2hhciAqdHlwZV9zdHIpCj4gICAgICBtYXhfdm1fcGFfc2l6ZSA9IGt2bV9hcm1fZ2V0X21h eF92bV9pcGFfc2l6ZShtcywgJmZpeGVkX2lwYSk7Cj4gIAo+ICAgICAgLyogd2UgZnJlZXplIHRo ZSBtZW1vcnkgbWFwIHRvIGNvbXB1dGUgdGhlIGhpZ2hlc3QgZ3BhICovCj4gLSAgICB2aXJ0X3Nl dF9tZW1tYXAodm1zKTsKPiArICAgIHZpcnRfc2V0X21lbW1hcCh2bXMsIG1heF92bV9wYV9zaXpl KTsKPiAgCj4gICAgICByZXF1ZXN0ZWRfcGFfc2l6ZSA9IDY0IC0gY2x6NjQodm1zLT5oaWdoZXN0 X2dwYSk7Cj4gIApUaGFua3MKCkVyaWMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmt2bWFybSBtYWlsaW5nIGxpc3QKa3ZtYXJtQGxpc3RzLmNzLmNvbHVt YmlhLmVkdQpodHRwczovL2xpc3RzLmNzLmNvbHVtYmlhLmVkdS9tYWlsbWFuL2xpc3RpbmZvL2t2 bWFybQo= 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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8095EC433EF for ; Mon, 10 Jan 2022 15:39:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233743AbiAJPjE (ORCPT ); Mon, 10 Jan 2022 10:39:04 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:34870 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236339AbiAJPjC (ORCPT ); Mon, 10 Jan 2022 10:39:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1641829141; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Vn/4MITr303eLI/9sy4vZE7T+80p2T43/HHj8bjumUI=; b=EqGkm6LolTRYNRUUKoBJba5S/+i6bDTVHKDUjkqPtJwboI8zoZmcDHOlTgo5GQaeh+l4rM DyOo3/t9DFr4FewRBfigZUBQGPhNmJyPJ5XrBkVsDKxsSzSmnMgGlh/MMu+9Told5Annlv zvPiqVs2KRLTSRTVOJr/fRzVvS0YC6s= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-360-PCWB1t_YP8SVSDojUlL_lg-1; Mon, 10 Jan 2022 10:39:00 -0500 X-MC-Unique: PCWB1t_YP8SVSDojUlL_lg-1 Received: by mail-wm1-f72.google.com with SMTP id n3-20020a05600c3b8300b00345c3fc40b0so9085494wms.3 for ; Mon, 10 Jan 2022 07:39:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:subject:to:cc:references:from :message-id:date:user-agent:mime-version:in-reply-to :content-transfer-encoding:content-language; bh=Vn/4MITr303eLI/9sy4vZE7T+80p2T43/HHj8bjumUI=; b=iQ3O4821BD2xz+kUCdhw7VLx3JWDIMqmdKXjjcICbn1kf6juOw4DoTavkHa6GtvBB9 5GUUqS0KGMq4VVACI0UAGxDFSDc6UZqL/44iNp7c26X3jRBPfa2GEVfb1TNoJw9CXQj/ 7sFD7wEQ8ehUsPV3gQOEaoH/6tmNgsqGF/7KDrax2WMu7zdBVQhC9r5dQI4jL/qLzdVe dAsTWt/Xu4SaDhD1lf0YhuVLGtT1W5UMWckAp7GDsveHCXKj3VVfnJl6I8lP+Du6RLmj MkJN2Q7rZed8ki/UwruUKFajnp+TP/l+YAbVkokfn+daCdi374JJNOKeGrAMTARi2D7c izcg== X-Gm-Message-State: AOAM533VR0BwnCPNk89gApUozxEfTpxLbjyo21Yf0fBF0V0t9JCG6Iiv UOJHGJ0YqaNzDD4Jv4mXs7rXrXJ86tGIIXtG+BO7Uj0j6JfrQvsnysL8Fx0P/I062e1hCBni3h6 XE4UtOA6WclQB X-Received: by 2002:a5d:4609:: with SMTP id t9mr153681wrq.551.1641829138993; Mon, 10 Jan 2022 07:38:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJwZifhrLZp+3rpsOY24CeNlWG+k7+BKtRIYq4bZWPG5Q97FLrRELUVOFGLaCLaT/fCtp/nCcw== X-Received: by 2002:a5d:4609:: with SMTP id t9mr153665wrq.551.1641829138790; Mon, 10 Jan 2022 07:38:58 -0800 (PST) Received: from ?IPv6:2a01:e0a:59e:9d80:527b:9dff:feef:3874? ([2a01:e0a:59e:9d80:527b:9dff:feef:3874]) by smtp.gmail.com with ESMTPSA id n12sm7169407wmq.30.2022.01.10.07.38.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Jan 2022 07:38:57 -0800 (PST) Reply-To: eric.auger@redhat.com Subject: Re: [PATCH v4 4/6] hw/arm/virt: Use the PA range to compute the memory map To: Marc Zyngier , qemu-devel@nongnu.org Cc: kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, kernel-team@android.com, Andrew Jones , Peter Maydell References: <20220107163324.2491209-1-maz@kernel.org> <20220107163324.2491209-5-maz@kernel.org> From: Eric Auger Message-ID: Date: Mon, 10 Jan 2022 16:38:56 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <20220107163324.2491209-5-maz@kernel.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Hi Marc, On 1/7/22 5:33 PM, Marc Zyngier wrote: > The highmem attribute is nothing but another way to express the > PA range of a VM. To support HW that has a smaller PA range then > what QEMU assumes, pass this PA range to the virt_set_memmap() > function, allowing it to correctly exclude highmem devices > if they are outside of the PA range. > > Signed-off-by: Marc Zyngier > --- > hw/arm/virt.c | 53 ++++++++++++++++++++++++++++++++++++++++++++------- > 1 file changed, 46 insertions(+), 7 deletions(-) > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index 57c55e8a37..db4b0636e1 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -1660,7 +1660,7 @@ static uint64_t virt_cpu_mp_affinity(VirtMachineState *vms, int idx) > return arm_cpu_mp_affinity(idx, clustersz); > } > > -static void virt_set_memmap(VirtMachineState *vms) > +static void virt_set_memmap(VirtMachineState *vms, int pa_bits) > { > MachineState *ms = MACHINE(vms); > hwaddr base, device_memory_base, device_memory_size, memtop; > @@ -1678,6 +1678,13 @@ static void virt_set_memmap(VirtMachineState *vms) > exit(EXIT_FAILURE); > } > > + /* > + * !highmem is exactly the same as limiting the PA space to 32bit, > + * irrespective of the underlying capabilities of the HW. > + */ > + if (!vms->highmem) > + pa_bits = 32; you need {} according to the QEMU coding style. Welcome to a new shiny world :-) > + > /* > * We compute the base of the high IO region depending on the > * amount of initial and device memory. The device memory start/size > @@ -1691,8 +1698,9 @@ static void virt_set_memmap(VirtMachineState *vms) > > /* Base address of the high IO region */ > memtop = base = device_memory_base + ROUND_UP(device_memory_size, GiB); > - if (!vms->highmem && memtop > 4 * GiB) { > - error_report("highmem=off, but memory crosses the 4GiB limit\n"); > + if (memtop > BIT_ULL(pa_bits)) { > + error_report("Addressing limited to %d bits, but memory exceeds it by %llu bytes\n", > + pa_bits, memtop - BIT_ULL(pa_bits)); > exit(EXIT_FAILURE); > } > if (base < device_memory_base) { > @@ -1711,7 +1719,13 @@ static void virt_set_memmap(VirtMachineState *vms) > vms->memmap[i].size = size; > base += size; > } > - vms->highest_gpa = (vms->highmem ? base : memtop) - 1; > + > + /* > + * If base fits within pa_bits, all good. If it doesn't, limit it > + * to the end of RAM, which is guaranteed to fit within pa_bits. > + */ > + vms->highest_gpa = (base <= BIT_ULL(pa_bits) ? base : memtop) - 1; > + > if (device_memory_size > 0) { > ms->device_memory = g_malloc0(sizeof(*ms->device_memory)); > ms->device_memory->base = device_memory_base; > @@ -1902,12 +1916,38 @@ static void machvirt_init(MachineState *machine) > unsigned int smp_cpus = machine->smp.cpus; > unsigned int max_cpus = machine->smp.max_cpus; Move the cpu_type check before?     if (!cpu_type_valid(machine->cpu_type)) {         error_report("mach-virt: CPU type %s not supported", machine->cpu_type);         exit(1);     } > > + possible_cpus = mc->possible_cpu_arch_ids(machine); > + > /* > * In accelerated mode, the memory map is computed earlier in kvm_type() > * to create a VM with the right number of IPA bits. > */ > if (!vms->memmap) { > - virt_set_memmap(vms); > + Object *cpuobj; > + ARMCPU *armcpu; > + int pa_bits; > + > + /* > + * Instanciate a temporary CPU object to find out about what > + * we are about to deal with. Once this is done, get rid of > + * the object. > + */ > + cpuobj = object_new(possible_cpus->cpus[0].type); > + armcpu = ARM_CPU(cpuobj); > + > + if (object_property_get_bool(cpuobj, "aarch64", NULL)) { > + pa_bits = arm_pamax(armcpu); > + } else if (arm_feature(&armcpu->env, ARM_FEATURE_LPAE)) { > + /* v7 with LPAE */ > + pa_bits = 40; > + } else { > + /* Anything else */ > + pa_bits = 32; > + } > + > + object_unref(cpuobj); > + > + virt_set_memmap(vms, pa_bits); > } > > /* We can probe only here because during property set > @@ -1989,7 +2029,6 @@ static void machvirt_init(MachineState *machine) > > create_fdt(vms); > > - possible_cpus = mc->possible_cpu_arch_ids(machine); > assert(possible_cpus->len == max_cpus); > for (n = 0; n < possible_cpus->len; n++) { > Object *cpuobj; > @@ -2646,7 +2685,7 @@ static int virt_kvm_type(MachineState *ms, const char *type_str) > max_vm_pa_size = kvm_arm_get_max_vm_ipa_size(ms, &fixed_ipa); > > /* we freeze the memory map to compute the highest gpa */ > - virt_set_memmap(vms); > + virt_set_memmap(vms, max_vm_pa_size); > > requested_pa_size = 64 - clz64(vms->highest_gpa); > Thanks Eric 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 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 02C68C433F5 for ; Mon, 10 Jan 2022 15:40:57 +0000 (UTC) Received: from localhost ([::1]:40532 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n6wn2-0005XK-R6 for qemu-devel@archiver.kernel.org; Mon, 10 Jan 2022 10:40:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43928) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n6wlE-0004RT-0m for qemu-devel@nongnu.org; Mon, 10 Jan 2022 10:39:04 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:56976) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n6wlC-0001cX-7u for qemu-devel@nongnu.org; Mon, 10 Jan 2022 10:39:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1641829141; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Vn/4MITr303eLI/9sy4vZE7T+80p2T43/HHj8bjumUI=; b=EqGkm6LolTRYNRUUKoBJba5S/+i6bDTVHKDUjkqPtJwboI8zoZmcDHOlTgo5GQaeh+l4rM DyOo3/t9DFr4FewRBfigZUBQGPhNmJyPJ5XrBkVsDKxsSzSmnMgGlh/MMu+9Told5Annlv zvPiqVs2KRLTSRTVOJr/fRzVvS0YC6s= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-340-nVD_mzmSM46dtANchNXdrQ-1; Mon, 10 Jan 2022 10:39:00 -0500 X-MC-Unique: nVD_mzmSM46dtANchNXdrQ-1 Received: by mail-wm1-f70.google.com with SMTP id s190-20020a1ca9c7000000b00347c6c39d9aso97274wme.5 for ; Mon, 10 Jan 2022 07:38:59 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:subject:to:cc:references:from :message-id:date:user-agent:mime-version:in-reply-to :content-transfer-encoding:content-language; bh=Vn/4MITr303eLI/9sy4vZE7T+80p2T43/HHj8bjumUI=; b=20e+Ur5Ym2n2o+1kSfKCu5LQxg9ZnDCINLBURGjP97IjcwsrntrRIx/9Yb4/1cAIg9 2IeDF1DDKl36oJPWcNosP5X4sIkSJCLkx8YLRdl/1wpKGtUCfYXi7LlYa/EK1C/mPD/H Klu3py4rMq7m4D5y7lLrNZW5v2aBoeii6aA8uB876eYFDhaRDGInD/ctCL5w9Sgh0qXl aaK46SU36AXwgKzljRe3cWKYTl7jxth0uKpi/k7g7NwXYKXEdmq12Q/0PHTrTgvZF/Vd fPCAInxDvxrD6wY1xPjkZvzO8m/KMep/ptxti6DmyV5L7AHsftiRsYeaMsmjhsJmagX2 OHvQ== X-Gm-Message-State: AOAM531TZngrHLkmZ8eSS70ZVOT1esvaHq9YNCb6IcaQi/lQ6ZJZx/AA ThboG8CDGMJrYcmg5cWgQCfCC0QDouRZreJGTZFPxsQd6lq4H1emYJWcmOYwhGA/ZIBxHNdfwM3 0YxzuXWrNtwXJp5E= X-Received: by 2002:a5d:4609:: with SMTP id t9mr153683wrq.551.1641829139021; Mon, 10 Jan 2022 07:38:59 -0800 (PST) X-Google-Smtp-Source: ABdhPJwZifhrLZp+3rpsOY24CeNlWG+k7+BKtRIYq4bZWPG5Q97FLrRELUVOFGLaCLaT/fCtp/nCcw== X-Received: by 2002:a5d:4609:: with SMTP id t9mr153665wrq.551.1641829138790; Mon, 10 Jan 2022 07:38:58 -0800 (PST) Received: from ?IPv6:2a01:e0a:59e:9d80:527b:9dff:feef:3874? ([2a01:e0a:59e:9d80:527b:9dff:feef:3874]) by smtp.gmail.com with ESMTPSA id n12sm7169407wmq.30.2022.01.10.07.38.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Jan 2022 07:38:57 -0800 (PST) Subject: Re: [PATCH v4 4/6] hw/arm/virt: Use the PA range to compute the memory map To: Marc Zyngier , qemu-devel@nongnu.org References: <20220107163324.2491209-1-maz@kernel.org> <20220107163324.2491209-5-maz@kernel.org> From: Eric Auger Message-ID: Date: Mon, 10 Jan 2022 16:38:56 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <20220107163324.2491209-5-maz@kernel.org> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=eric.auger@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US Received-SPF: pass client-ip=170.10.133.124; envelope-from=eric.auger@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -33 X-Spam_score: -3.4 X-Spam_bar: --- X-Spam_report: (-3.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.597, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: eric.auger@redhat.com Cc: Peter Maydell , Andrew Jones , kernel-team@android.com, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Hi Marc, On 1/7/22 5:33 PM, Marc Zyngier wrote: > The highmem attribute is nothing but another way to express the > PA range of a VM. To support HW that has a smaller PA range then > what QEMU assumes, pass this PA range to the virt_set_memmap() > function, allowing it to correctly exclude highmem devices > if they are outside of the PA range. > > Signed-off-by: Marc Zyngier > --- > hw/arm/virt.c | 53 ++++++++++++++++++++++++++++++++++++++++++++------- > 1 file changed, 46 insertions(+), 7 deletions(-) > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index 57c55e8a37..db4b0636e1 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -1660,7 +1660,7 @@ static uint64_t virt_cpu_mp_affinity(VirtMachineState *vms, int idx) > return arm_cpu_mp_affinity(idx, clustersz); > } > > -static void virt_set_memmap(VirtMachineState *vms) > +static void virt_set_memmap(VirtMachineState *vms, int pa_bits) > { > MachineState *ms = MACHINE(vms); > hwaddr base, device_memory_base, device_memory_size, memtop; > @@ -1678,6 +1678,13 @@ static void virt_set_memmap(VirtMachineState *vms) > exit(EXIT_FAILURE); > } > > + /* > + * !highmem is exactly the same as limiting the PA space to 32bit, > + * irrespective of the underlying capabilities of the HW. > + */ > + if (!vms->highmem) > + pa_bits = 32; you need {} according to the QEMU coding style. Welcome to a new shiny world :-) > + > /* > * We compute the base of the high IO region depending on the > * amount of initial and device memory. The device memory start/size > @@ -1691,8 +1698,9 @@ static void virt_set_memmap(VirtMachineState *vms) > > /* Base address of the high IO region */ > memtop = base = device_memory_base + ROUND_UP(device_memory_size, GiB); > - if (!vms->highmem && memtop > 4 * GiB) { > - error_report("highmem=off, but memory crosses the 4GiB limit\n"); > + if (memtop > BIT_ULL(pa_bits)) { > + error_report("Addressing limited to %d bits, but memory exceeds it by %llu bytes\n", > + pa_bits, memtop - BIT_ULL(pa_bits)); > exit(EXIT_FAILURE); > } > if (base < device_memory_base) { > @@ -1711,7 +1719,13 @@ static void virt_set_memmap(VirtMachineState *vms) > vms->memmap[i].size = size; > base += size; > } > - vms->highest_gpa = (vms->highmem ? base : memtop) - 1; > + > + /* > + * If base fits within pa_bits, all good. If it doesn't, limit it > + * to the end of RAM, which is guaranteed to fit within pa_bits. > + */ > + vms->highest_gpa = (base <= BIT_ULL(pa_bits) ? base : memtop) - 1; > + > if (device_memory_size > 0) { > ms->device_memory = g_malloc0(sizeof(*ms->device_memory)); > ms->device_memory->base = device_memory_base; > @@ -1902,12 +1916,38 @@ static void machvirt_init(MachineState *machine) > unsigned int smp_cpus = machine->smp.cpus; > unsigned int max_cpus = machine->smp.max_cpus; Move the cpu_type check before?     if (!cpu_type_valid(machine->cpu_type)) {         error_report("mach-virt: CPU type %s not supported", machine->cpu_type);         exit(1);     } > > + possible_cpus = mc->possible_cpu_arch_ids(machine); > + > /* > * In accelerated mode, the memory map is computed earlier in kvm_type() > * to create a VM with the right number of IPA bits. > */ > if (!vms->memmap) { > - virt_set_memmap(vms); > + Object *cpuobj; > + ARMCPU *armcpu; > + int pa_bits; > + > + /* > + * Instanciate a temporary CPU object to find out about what > + * we are about to deal with. Once this is done, get rid of > + * the object. > + */ > + cpuobj = object_new(possible_cpus->cpus[0].type); > + armcpu = ARM_CPU(cpuobj); > + > + if (object_property_get_bool(cpuobj, "aarch64", NULL)) { > + pa_bits = arm_pamax(armcpu); > + } else if (arm_feature(&armcpu->env, ARM_FEATURE_LPAE)) { > + /* v7 with LPAE */ > + pa_bits = 40; > + } else { > + /* Anything else */ > + pa_bits = 32; > + } > + > + object_unref(cpuobj); > + > + virt_set_memmap(vms, pa_bits); > } > > /* We can probe only here because during property set > @@ -1989,7 +2029,6 @@ static void machvirt_init(MachineState *machine) > > create_fdt(vms); > > - possible_cpus = mc->possible_cpu_arch_ids(machine); > assert(possible_cpus->len == max_cpus); > for (n = 0; n < possible_cpus->len; n++) { > Object *cpuobj; > @@ -2646,7 +2685,7 @@ static int virt_kvm_type(MachineState *ms, const char *type_str) > max_vm_pa_size = kvm_arm_get_max_vm_ipa_size(ms, &fixed_ipa); > > /* we freeze the memory map to compute the highest gpa */ > - virt_set_memmap(vms); > + virt_set_memmap(vms, max_vm_pa_size); > > requested_pa_size = 64 - clz64(vms->highest_gpa); > Thanks Eric