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=-6.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 BE232C3B186 for ; Wed, 12 Feb 2020 13:44:53 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 87A1020659 for ; Wed, 12 Feb 2020 13:44:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="A/ITxfTn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 87A1020659 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j1sJM-0007Nd-Nc; Wed, 12 Feb 2020 13:44:16 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j1sJL-0007ND-SJ for xen-devel@lists.xenproject.org; Wed, 12 Feb 2020 13:44:15 +0000 X-Inumbo-ID: c1519e22-4d9d-11ea-bc8e-bc764e2007e4 Received: from us-smtp-1.mimecast.com (unknown [207.211.31.120]) by us1-rack-iad1.inumbo.com (Halon) with ESMTP id c1519e22-4d9d-11ea-bc8e-bc764e2007e4; Wed, 12 Feb 2020 13:44:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1581515053; h=from:from: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=ZyIsCGbp0q7rUNVxi3tQZc/wfPXKE8Dd+matyQg6+Kw=; b=A/ITxfTnEctdIV+rpWv0h6CVznAJDByfi8Zqum0UvUoZ/O0V7NknFkPgrOoufudiCKfjc/ s7oXq6rnpOedPmzRb/8VIOXJxMbqePY9jIeyVrTyQAroRXRqrXIyyWQhiv/tbJgcSNOSMP seCy5ubcLL5kOrzPq3Fua9XHeYVbb7o= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-431-JcoS9hQuPluo-HF9K9lF9Q-1; Wed, 12 Feb 2020 08:44:11 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B44478017CC; Wed, 12 Feb 2020 13:44:09 +0000 (UTC) Received: from t480s.redhat.com (ovpn-117-92.ams2.redhat.com [10.36.117.92]) by smtp.corp.redhat.com (Postfix) with ESMTP id A21F71001281; Wed, 12 Feb 2020 13:44:04 +0000 (UTC) From: David Hildenbrand To: qemu-devel@nongnu.org Date: Wed, 12 Feb 2020 14:42:51 +0100 Message-Id: <20200212134254.11073-14-david@redhat.com> In-Reply-To: <20200212134254.11073-1-david@redhat.com> References: <20200212134254.11073-1-david@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-MC-Unique: JcoS9hQuPluo-HF9K9lF9Q-1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [Xen-devel] [PATCH v2 fixed 13/16] numa: Teach ram block notifiers about resizable ram blocks X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Eduardo Habkost , "Michael S . Tsirkin" , David Hildenbrand , "Dr . David Alan Gilbert" , Paul Durrant , xen-devel@lists.xenproject.org, Marcel Apfelbaum , Igor Mammedov , Anthony Perard , Paolo Bonzini , Richard Henderson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" V2Ugd2FudCB0byBhY3R1YWxseSByZXNpemUgcmFtIGJsb2NrcyAobWFrZSBldmVyeXRoaW5nIGJl dHdlZW4KdXNlZF9sZW5ndGggYW5kIG1heF9sZW5ndGggaW5hY2Nlc3NpYmxlKSAtIGhvd2V2ZXIs IG5vdCBhbGwgcmFtIGJsb2NrCm5vdGlmaWVycyB3aWxsIHN1cHBvcnQgdGhhdC4gTGV0J3MgdGVh Y2ggdGhlIG5vdGlmaWVyIHRoYXQgcmFtIGJsb2NrcwphcmUgaW5kZWVkIHJlc2l6YWJsZSwgYnV0 IGtlZXAgdXNpbmcgbWF4X3NpemUgaW4gdGhlIGV4aXN0aW5nIG5vdGlmaWVycy4KClN1cHBseSB0 aGUgbWF4X3NpemUgd2hlbiBhZGRpbmcgYW5kIHJlbW92aW5nIHJhbSBibG9ja3MuIEFsc28sIG5v dGlmeSBvbgpyZXNpemVzLiBJbnRyb2R1Y2UgYSB3YXkgdG8gZGV0ZWN0IGlmIGFueSByZWdpc3Rl cmVkIG5vdGlmaWVyIGRvZXMgbm90CnN1cHBvcnQgcmVzaXplcyAtIHJhbV9ibG9ja19ub3RpZmll cnNfc3VwcG9ydF9yZXNpemUoKSAtIHdoaWNoIHdlIGNhbiBsYXRlcgp1c2UgdG8gZmFsbGJhY2sg dG8gbGVnYWN5IGhhbmRsaW5nIGlmIGEgcmVnaXN0ZXJlZCBub3RpZmllciAoZXNwLiwgU0VWIGFu ZApIQVgpIGRvZXMgbm90IHN1cHBvcnQgYWN0dWFsIHJlc2l6ZXMuCgpDYzogUmljaGFyZCBIZW5k ZXJzb24gPHJ0aEB0d2lkZGxlLm5ldD4KQ2M6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhh dC5jb20+CkNjOiAiRHIuIERhdmlkIEFsYW4gR2lsYmVydCIgPGRnaWxiZXJ0QHJlZGhhdC5jb20+ CkNjOiBFZHVhcmRvIEhhYmtvc3QgPGVoYWJrb3N0QHJlZGhhdC5jb20+CkNjOiBNYXJjZWwgQXBm ZWxiYXVtIDxtYXJjZWwuYXBmZWxiYXVtQGdtYWlsLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGlu aSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IEFudGhvbnkgUGVyYXJkIDxhbnRob255LnBl cmFyZEBjaXRyaXguY29tPgpDYzogUGF1bCBEdXJyYW50IDxwYXVsQHhlbi5vcmc+CkNjOiAiTWlj aGFlbCBTLiBUc2lya2luIiA8bXN0QHJlZGhhdC5jb20+CkNjOiB4ZW4tZGV2ZWxAbGlzdHMueGVu cHJvamVjdC5vcmcKQ2M6IElnb3IgTWFtbWVkb3YgPGltYW1tZWRvQHJlZGhhdC5jb20+ClNpZ25l ZC1vZmYtYnk6IERhdmlkIEhpbGRlbmJyYW5kIDxkYXZpZEByZWRoYXQuY29tPgotLS0KIGV4ZWMu YyAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrKystLQogaHcvY29yZS9udW1hLmMg ICAgICAgICAgICAgfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBody9p Mzg2L3hlbi94ZW4tbWFwY2FjaGUuYyB8ICA3ICsrKystLS0KIGluY2x1ZGUvZXhlYy9yYW1saXN0 LmggICAgIHwgMTQgKysrKysrKysrKy0tLS0KIHRhcmdldC9pMzg2L2hheC1tZW0uYyAgICAgIHwg IDUgKysrLS0KIHRhcmdldC9pMzg2L3Nldi5jICAgICAgICAgIHwgMTggKysrKysrKysrKy0tLS0t LS0tCiB1dGlsL3ZmaW8taGVscGVycy5jICAgICAgICB8IDE3ICsrKysrKysrKy0tLS0tLS0tCiA3 IGZpbGVzIGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2V4ZWMuYyBiL2V4ZWMuYwppbmRleCBmYzY1YzRmN2NhLi5mMmQzMDQ3OWI4IDEwMDY0 NAotLS0gYS9leGVjLmMKKysrIGIvZXhlYy5jCkBAIC0yMTM5LDYgKzIxMzksOCBAQCBzdGF0aWMg dm9pZCBxZW11X3JhbV9hcHBseV9zZXR0aW5ncyh2b2lkICpob3N0LCBzaXplX3QgbGVuZ3RoKQog ICovCiBpbnQgcWVtdV9yYW1fcmVzaXplKFJBTUJsb2NrICpibG9jaywgcmFtX2FkZHJfdCBuZXdz aXplLCBFcnJvciAqKmVycnApCiB7CisgICAgY29uc3QgcmFtX2FkZHJfdCBvbGRzaXplID0gYmxv Y2stPnVzZWRfbGVuZ3RoOworCiAgICAgYXNzZXJ0KGJsb2NrKTsKIAogICAgIG5ld3NpemUgPSBI T1NUX1BBR0VfQUxJR04obmV3c2l6ZSk7CkBAIC0yMTY3LDYgKzIxNjksMTEgQEAgaW50IHFlbXVf cmFtX3Jlc2l6ZShSQU1CbG9jayAqYmxvY2ssIHJhbV9hZGRyX3QgbmV3c2l6ZSwgRXJyb3IgKipl cnJwKQogICAgIGJsb2NrLT51c2VkX2xlbmd0aCA9IG5ld3NpemU7CiAgICAgY3B1X3BoeXNpY2Fs X21lbW9yeV9zZXRfZGlydHlfcmFuZ2UoYmxvY2stPm9mZnNldCwgYmxvY2stPnVzZWRfbGVuZ3Ro LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERJUlRZX0NMSUVOVFNf QUxMKTsKKworICAgIGlmIChibG9jay0+aG9zdCkgeworICAgICAgICByYW1fYmxvY2tfbm90aWZ5 X3Jlc2l6ZWQoYmxvY2stPmhvc3QsIG9sZHNpemUsIG5ld3NpemUpOworICAgIH0KKwogICAgIG1l bW9yeV9yZWdpb25fc2V0X3NpemUoYmxvY2stPm1yLCBuZXdzaXplKTsKICAgICBpZiAoYmxvY2st PnJlc2l6ZWQpIHsKICAgICAgICAgYmxvY2stPnJlc2l6ZWQoYmxvY2stPmlkc3RyLCBuZXdzaXpl LCBibG9jay0+aG9zdCk7CkBAIC0yMzE5LDcgKzIzMjYsOCBAQCBzdGF0aWMgdm9pZCByYW1fYmxv Y2tfYWRkKFJBTUJsb2NrICpuZXdfYmxvY2ssIEVycm9yICoqZXJycCkKIAogICAgIGlmIChuZXdf YmxvY2stPmhvc3QpIHsKICAgICAgICAgcWVtdV9yYW1fYXBwbHlfc2V0dGluZ3MobmV3X2Jsb2Nr LT5ob3N0LCBuZXdfYmxvY2stPm1heF9sZW5ndGgpOwotICAgICAgICByYW1fYmxvY2tfbm90aWZ5 X2FkZChuZXdfYmxvY2stPmhvc3QsIG5ld19ibG9jay0+bWF4X2xlbmd0aCk7CisgICAgICAgIHJh bV9ibG9ja19ub3RpZnlfYWRkKG5ld19ibG9jay0+aG9zdCwgbmV3X2Jsb2NrLT51c2VkX2xlbmd0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2Jsb2NrLT5tYXhfbGVuZ3RoKTsK ICAgICB9CiB9CiAKQEAgLTI1MDIsNyArMjUxMCw4IEBAIHZvaWQgcWVtdV9yYW1fZnJlZShSQU1C bG9jayAqYmxvY2spCiAgICAgfQogCiAgICAgaWYgKGJsb2NrLT5ob3N0KSB7Ci0gICAgICAgIHJh bV9ibG9ja19ub3RpZnlfcmVtb3ZlKGJsb2NrLT5ob3N0LCBibG9jay0+bWF4X2xlbmd0aCk7Cisg ICAgICAgIHJhbV9ibG9ja19ub3RpZnlfcmVtb3ZlKGJsb2NrLT5ob3N0LCBibG9jay0+dXNlZF9s ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5tYXhfbGVuZ3Ro KTsKICAgICB9CiAKICAgICBxZW11X211dGV4X2xvY2tfcmFtbGlzdCgpOwpkaWZmIC0tZ2l0IGEv aHcvY29yZS9udW1hLmMgYi9ody9jb3JlL251bWEuYwppbmRleCA2NTk5YzY5ZTA1Li41YjIwZGM3 MjZkIDEwMDY0NAotLS0gYS9ody9jb3JlL251bWEuYworKysgYi9ody9jb3JlL251bWEuYwpAQCAt OTAyLDExICs5MDIsMTIgQEAgdm9pZCBxdWVyeV9udW1hX25vZGVfbWVtKE51bWFOb2RlTWVtIG5v ZGVfbWVtW10sIE1hY2hpbmVTdGF0ZSAqbXMpCiBzdGF0aWMgaW50IHJhbV9ibG9ja19ub3RpZnlf YWRkX3NpbmdsZShSQU1CbG9jayAqcmIsIHZvaWQgKm9wYXF1ZSkKIHsKICAgICBjb25zdCByYW1f YWRkcl90IG1heF9zaXplID0gcWVtdV9yYW1fZ2V0X21heF9sZW5ndGgocmIpOworICAgIGNvbnN0 IHJhbV9hZGRyX3Qgc2l6ZSA9IHFlbXVfcmFtX2dldF91c2VkX2xlbmd0aChyYik7CiAgICAgdm9p ZCAqaG9zdCA9IHFlbXVfcmFtX2dldF9ob3N0X2FkZHIocmIpOwogICAgIFJBTUJsb2NrTm90aWZp ZXIgKm5vdGlmaWVyID0gb3BhcXVlOwogCiAgICAgaWYgKGhvc3QpIHsKLSAgICAgICAgbm90aWZp ZXItPnJhbV9ibG9ja19hZGRlZChub3RpZmllciwgaG9zdCwgbWF4X3NpemUpOworICAgICAgICBu b3RpZmllci0+cmFtX2Jsb2NrX2FkZGVkKG5vdGlmaWVyLCBob3N0LCBzaXplLCBtYXhfc2l6ZSk7 CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtOTIzLDIwICs5MjQsNDMgQEAgdm9pZCByYW1f YmxvY2tfbm90aWZpZXJfcmVtb3ZlKFJBTUJsb2NrTm90aWZpZXIgKm4pCiAgICAgUUxJU1RfUkVN T1ZFKG4sIG5leHQpOwogfQogCi12b2lkIHJhbV9ibG9ja19ub3RpZnlfYWRkKHZvaWQgKmhvc3Qs IHNpemVfdCBzaXplKQordm9pZCByYW1fYmxvY2tfbm90aWZ5X2FkZCh2b2lkICpob3N0LCBzaXpl X3Qgc2l6ZSwgc2l6ZV90IG1heF9zaXplKQogewogICAgIFJBTUJsb2NrTm90aWZpZXIgKm5vdGlm aWVyOwogCiAgICAgUUxJU1RfRk9SRUFDSChub3RpZmllciwgJnJhbV9saXN0LnJhbWJsb2NrX25v dGlmaWVycywgbmV4dCkgewotICAgICAgICBub3RpZmllci0+cmFtX2Jsb2NrX2FkZGVkKG5vdGlm aWVyLCBob3N0LCBzaXplKTsKKyAgICAgICAgbm90aWZpZXItPnJhbV9ibG9ja19hZGRlZChub3Rp ZmllciwgaG9zdCwgc2l6ZSwgbWF4X3NpemUpOwogICAgIH0KIH0KIAotdm9pZCByYW1fYmxvY2tf bm90aWZ5X3JlbW92ZSh2b2lkICpob3N0LCBzaXplX3Qgc2l6ZSkKK3ZvaWQgcmFtX2Jsb2NrX25v dGlmeV9yZW1vdmUodm9pZCAqaG9zdCwgc2l6ZV90IHNpemUsIHNpemVfdCBtYXhfc2l6ZSkKIHsK ICAgICBSQU1CbG9ja05vdGlmaWVyICpub3RpZmllcjsKIAogICAgIFFMSVNUX0ZPUkVBQ0gobm90 aWZpZXIsICZyYW1fbGlzdC5yYW1ibG9ja19ub3RpZmllcnMsIG5leHQpIHsKLSAgICAgICAgbm90 aWZpZXItPnJhbV9ibG9ja19yZW1vdmVkKG5vdGlmaWVyLCBob3N0LCBzaXplKTsKKyAgICAgICAg bm90aWZpZXItPnJhbV9ibG9ja19yZW1vdmVkKG5vdGlmaWVyLCBob3N0LCBzaXplLCBtYXhfc2l6 ZSk7CiAgICAgfQogfQorCit2b2lkIHJhbV9ibG9ja19ub3RpZnlfcmVzaXplZCh2b2lkICpob3N0 LCBzaXplX3Qgb2xkX3NpemUsIHNpemVfdCBuZXdfc2l6ZSkKK3sKKyAgICBSQU1CbG9ja05vdGlm aWVyICpub3RpZmllcjsKKworICAgIFFMSVNUX0ZPUkVBQ0gobm90aWZpZXIsICZyYW1fbGlzdC5y YW1ibG9ja19ub3RpZmllcnMsIG5leHQpIHsKKyAgICAgICAgaWYgKG5vdGlmaWVyLT5yYW1fYmxv Y2tfcmVzaXplZCkgeworICAgICAgICAgICAgbm90aWZpZXItPnJhbV9ibG9ja19yZXNpemVkKG5v dGlmaWVyLCBob3N0LCBvbGRfc2l6ZSwgbmV3X3NpemUpOworICAgICAgICB9CisgICAgfQorfQor Citib29sIHJhbV9ibG9ja19ub3RpZmllcnNfc3VwcG9ydF9yZXNpemUodm9pZCkKK3sKKyAgICBS QU1CbG9ja05vdGlmaWVyICpub3RpZmllcjsKKworICAgIFFMSVNUX0ZPUkVBQ0gobm90aWZpZXIs ICZyYW1fbGlzdC5yYW1ibG9ja19ub3RpZmllcnMsIG5leHQpIHsKKyAgICAgICAgaWYgKCFub3Rp Zmllci0+cmFtX2Jsb2NrX3Jlc2l6ZWQpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL2h3L2kzODYv eGVuL3hlbi1tYXBjYWNoZS5jIGIvaHcvaTM4Ni94ZW4veGVuLW1hcGNhY2hlLmMKaW5kZXggNWIx MjBlZDQ0Yi4uZDZkY2VhNjVkMSAxMDA2NDQKLS0tIGEvaHcvaTM4Ni94ZW4veGVuLW1hcGNhY2hl LmMKKysrIGIvaHcvaTM4Ni94ZW4veGVuLW1hcGNhY2hlLmMKQEAgLTE2OSw3ICsxNjksOCBAQCBz dGF0aWMgdm9pZCB4ZW5fcmVtYXBfYnVja2V0KE1hcENhY2hlRW50cnkgKmVudHJ5LAogCiAgICAg aWYgKGVudHJ5LT52YWRkcl9iYXNlICE9IE5VTEwpIHsKICAgICAgICAgaWYgKCEoZW50cnktPmZs YWdzICYgWEVOX01BUENBQ0hFX0VOVFJZX0RVTU1ZKSkgewotICAgICAgICAgICAgcmFtX2Jsb2Nr X25vdGlmeV9yZW1vdmUoZW50cnktPnZhZGRyX2Jhc2UsIGVudHJ5LT5zaXplKTsKKyAgICAgICAg ICAgIHJhbV9ibG9ja19ub3RpZnlfcmVtb3ZlKGVudHJ5LT52YWRkcl9iYXNlLCBlbnRyeS0+c2l6 ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zaXplKTsKICAg ICAgICAgfQogICAgICAgICBpZiAobXVubWFwKGVudHJ5LT52YWRkcl9iYXNlLCBlbnRyeS0+c2l6 ZSkgIT0gMCkgewogICAgICAgICAgICAgcGVycm9yKCJ1bm1hcCBmYWlscyIpOwpAQCAtMjExLDcg KzIxMiw3IEBAIHN0YXRpYyB2b2lkIHhlbl9yZW1hcF9idWNrZXQoTWFwQ2FjaGVFbnRyeSAqZW50 cnksCiAgICAgfQogCiAgICAgaWYgKCEoZW50cnktPmZsYWdzICYgWEVOX01BUENBQ0hFX0VOVFJZ X0RVTU1ZKSkgewotICAgICAgICByYW1fYmxvY2tfbm90aWZ5X2FkZCh2YWRkcl9iYXNlLCBzaXpl KTsKKyAgICAgICAgcmFtX2Jsb2NrX25vdGlmeV9hZGQodmFkZHJfYmFzZSwgc2l6ZSwgc2l6ZSk7 CiAgICAgfQogCiAgICAgZW50cnktPnZhZGRyX2Jhc2UgPSB2YWRkcl9iYXNlOwpAQCAtNDUyLDcg KzQ1Myw3IEBAIHN0YXRpYyB2b2lkIHhlbl9pbnZhbGlkYXRlX21hcF9jYWNoZV9lbnRyeV91bmxv Y2tlZCh1aW50OF90ICpidWZmZXIpCiAgICAgfQogCiAgICAgcGVudHJ5LT5uZXh0ID0gZW50cnkt Pm5leHQ7Ci0gICAgcmFtX2Jsb2NrX25vdGlmeV9yZW1vdmUoZW50cnktPnZhZGRyX2Jhc2UsIGVu dHJ5LT5zaXplKTsKKyAgICByYW1fYmxvY2tfbm90aWZ5X3JlbW92ZShlbnRyeS0+dmFkZHJfYmFz ZSwgZW50cnktPnNpemUsIGVudHJ5LT5zaXplKTsKICAgICBpZiAobXVubWFwKGVudHJ5LT52YWRk cl9iYXNlLCBlbnRyeS0+c2l6ZSkgIT0gMCkgewogICAgICAgICBwZXJyb3IoInVubWFwIGZhaWxz Iik7CiAgICAgICAgIGV4aXQoLTEpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9leGVjL3JhbWxpc3Qu aCBiL2luY2x1ZGUvZXhlYy9yYW1saXN0LmgKaW5kZXggYmM0ZmFhMWIwMC4uOTJlNTQ4NDYxZSAx MDA2NDQKLS0tIGEvaW5jbHVkZS9leGVjL3JhbWxpc3QuaAorKysgYi9pbmNsdWRlL2V4ZWMvcmFt bGlzdC5oCkBAIC02NSwxNSArNjUsMjEgQEAgdm9pZCBxZW11X211dGV4X2xvY2tfcmFtbGlzdCh2 b2lkKTsKIHZvaWQgcWVtdV9tdXRleF91bmxvY2tfcmFtbGlzdCh2b2lkKTsKIAogc3RydWN0IFJB TUJsb2NrTm90aWZpZXIgewotICAgIHZvaWQgKCpyYW1fYmxvY2tfYWRkZWQpKFJBTUJsb2NrTm90 aWZpZXIgKm4sIHZvaWQgKmhvc3QsIHNpemVfdCBzaXplKTsKLSAgICB2b2lkICgqcmFtX2Jsb2Nr X3JlbW92ZWQpKFJBTUJsb2NrTm90aWZpZXIgKm4sIHZvaWQgKmhvc3QsIHNpemVfdCBzaXplKTsK KyAgICB2b2lkICgqcmFtX2Jsb2NrX2FkZGVkKShSQU1CbG9ja05vdGlmaWVyICpuLCB2b2lkICpo b3N0LCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4 X3NpemUpOworICAgIHZvaWQgKCpyYW1fYmxvY2tfcmVtb3ZlZCkoUkFNQmxvY2tOb3RpZmllciAq biwgdm9pZCAqaG9zdCwgc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplX3QgbWF4X3NpemUpOworICAgIHZvaWQgKCpyYW1fYmxvY2tfcmVzaXplZCkoUkFNQmxv Y2tOb3RpZmllciAqbiwgdm9pZCAqaG9zdCwgc2l6ZV90IG9sZF9zaXplLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ld19zaXplKTsKICAgICBRTElTVF9FTlRSWShSQU1C bG9ja05vdGlmaWVyKSBuZXh0OwogfTsKIAogdm9pZCByYW1fYmxvY2tfbm90aWZpZXJfYWRkKFJB TUJsb2NrTm90aWZpZXIgKm4pOwogdm9pZCByYW1fYmxvY2tfbm90aWZpZXJfcmVtb3ZlKFJBTUJs b2NrTm90aWZpZXIgKm4pOwotdm9pZCByYW1fYmxvY2tfbm90aWZ5X2FkZCh2b2lkICpob3N0LCBz aXplX3Qgc2l6ZSk7Ci12b2lkIHJhbV9ibG9ja19ub3RpZnlfcmVtb3ZlKHZvaWQgKmhvc3QsIHNp emVfdCBzaXplKTsKK3ZvaWQgcmFtX2Jsb2NrX25vdGlmeV9hZGQodm9pZCAqaG9zdCwgc2l6ZV90 IHNpemUsIHNpemVfdCBtYXhfc2l6ZSk7Cit2b2lkIHJhbV9ibG9ja19ub3RpZnlfcmVtb3ZlKHZv aWQgKmhvc3QsIHNpemVfdCBzaXplLCBzaXplX3QgbWF4X3NpemUpOwordm9pZCByYW1fYmxvY2tf bm90aWZ5X3Jlc2l6ZWQodm9pZCAqaG9zdCwgc2l6ZV90IG9sZF9zaXplLCBzaXplX3QgbmV3X3Np emUpOworYm9vbCByYW1fYmxvY2tfbm90aWZpZXJzX3N1cHBvcnRfcmVzaXplKHZvaWQpOwogCiB2 b2lkIHJhbV9ibG9ja19kdW1wKE1vbml0b3IgKm1vbik7CiAKZGlmZiAtLWdpdCBhL3RhcmdldC9p Mzg2L2hheC1tZW0uYyBiL3RhcmdldC9pMzg2L2hheC1tZW0uYwppbmRleCA2YmI1YTI0OTE3Li40 NTRkN2ZiMjEyIDEwMDY0NAotLS0gYS90YXJnZXQvaTM4Ni9oYXgtbWVtLmMKKysrIGIvdGFyZ2V0 L2kzODYvaGF4LW1lbS5jCkBAIC0yOTMsNyArMjkzLDggQEAgc3RhdGljIE1lbW9yeUxpc3RlbmVy IGhheF9tZW1vcnlfbGlzdGVuZXIgPSB7CiAgICAgLnByaW9yaXR5ID0gMTAsCiB9OwogCi1zdGF0 aWMgdm9pZCBoYXhfcmFtX2Jsb2NrX2FkZGVkKFJBTUJsb2NrTm90aWZpZXIgKm4sIHZvaWQgKmhv c3QsIHNpemVfdCBzaXplKQorc3RhdGljIHZvaWQgaGF4X3JhbV9ibG9ja19hZGRlZChSQU1CbG9j a05vdGlmaWVyICpuLCB2b2lkICpob3N0LCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZV90IG1heF9zaXplKQogewogICAgIC8qCiAgICAgICogV2UgbXVz dCByZWdpc3RlciBlYWNoIFJBTSBibG9jayB3aXRoIHRoZSBIQVhNIGtlcm5lbCBtb2R1bGUsIG9y CkBAIC0zMDQsNyArMzA1LDcgQEAgc3RhdGljIHZvaWQgaGF4X3JhbV9ibG9ja19hZGRlZChSQU1C bG9ja05vdGlmaWVyICpuLCB2b2lkICpob3N0LCBzaXplX3Qgc2l6ZSkKICAgICAgKiBob3N0IHBo eXNpY2FsIHBhZ2VzIGZvciB0aGUgUkFNIGJsb2NrIGFzIHBhcnQgb2YgdGhpcyByZWdpc3RyYXRp b24KICAgICAgKiBwcm9jZXNzLCBoZW5jZSB0aGUgbmFtZSBoYXhfcG9wdWxhdGVfcmFtKCkuCiAg ICAgICovCi0gICAgaWYgKGhheF9wb3B1bGF0ZV9yYW0oKHVpbnQ2NF90KSh1aW50cHRyX3QpaG9z dCwgc2l6ZSkgPCAwKSB7CisgICAgaWYgKGhheF9wb3B1bGF0ZV9yYW0oKHVpbnQ2NF90KSh1aW50 cHRyX3QpaG9zdCwgbWF4X3NpemUpIDwgMCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkhB WCBmYWlsZWQgdG8gcG9wdWxhdGUgUkFNXG4iKTsKICAgICAgICAgYWJvcnQoKTsKICAgICB9CmRp ZmYgLS1naXQgYS90YXJnZXQvaTM4Ni9zZXYuYyBiL3RhcmdldC9pMzg2L3Nldi5jCmluZGV4IDAy NGJiMjRlNTEuLjZiNGNlZTI0YTIgMTAwNjQ0Ci0tLSBhL3RhcmdldC9pMzg2L3Nldi5jCisrKyBi L3RhcmdldC9pMzg2L3Nldi5jCkBAIC0xMjksNyArMTI5LDggQEAgc2V2X3NldF9ndWVzdF9zdGF0 ZShTZXZTdGF0ZSBuZXdfc3RhdGUpCiB9CiAKIHN0YXRpYyB2b2lkCi1zZXZfcmFtX2Jsb2NrX2Fk ZGVkKFJBTUJsb2NrTm90aWZpZXIgKm4sIHZvaWQgKmhvc3QsIHNpemVfdCBzaXplKQorc2V2X3Jh bV9ibG9ja19hZGRlZChSQU1CbG9ja05vdGlmaWVyICpuLCB2b2lkICpob3N0LCBzaXplX3Qgc2l6 ZSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1heF9zaXplKQogewogICAgIGludCByOwog ICAgIHN0cnVjdCBrdm1fZW5jX3JlZ2lvbiByYW5nZTsKQEAgLTE0NiwxOSArMTQ3LDIwIEBAIHNl dl9yYW1fYmxvY2tfYWRkZWQoUkFNQmxvY2tOb3RpZmllciAqbiwgdm9pZCAqaG9zdCwgc2l6ZV90 IHNpemUpCiAgICAgfQogCiAgICAgcmFuZ2UuYWRkciA9IChfX3U2NCkodW5zaWduZWQgbG9uZylo b3N0OwotICAgIHJhbmdlLnNpemUgPSBzaXplOworICAgIHJhbmdlLnNpemUgPSBtYXhfc2l6ZTsK IAotICAgIHRyYWNlX2t2bV9tZW1jcnlwdF9yZWdpc3Rlcl9yZWdpb24oaG9zdCwgc2l6ZSk7Cisg ICAgdHJhY2Vfa3ZtX21lbWNyeXB0X3JlZ2lzdGVyX3JlZ2lvbihob3N0LCBtYXhfc2l6ZSk7CiAg ICAgciA9IGt2bV92bV9pb2N0bChrdm1fc3RhdGUsIEtWTV9NRU1PUllfRU5DUllQVF9SRUdfUkVH SU9OLCAmcmFuZ2UpOwogICAgIGlmIChyKSB7CiAgICAgICAgIGVycm9yX3JlcG9ydCgiJXM6IGZh aWxlZCB0byByZWdpc3RlciByZWdpb24gKCVwKyUjengpIGVycm9yICclcyciLAotICAgICAgICAg ICAgICAgICAgICAgX19mdW5jX18sIGhvc3QsIHNpemUsIHN0cmVycm9yKGVycm5vKSk7CisgICAg ICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgaG9zdCwgbWF4X3NpemUsIHN0cmVycm9yKGVycm5v KSk7CiAgICAgICAgIGV4aXQoMSk7CiAgICAgfQogfQogCiBzdGF0aWMgdm9pZAotc2V2X3JhbV9i bG9ja19yZW1vdmVkKFJBTUJsb2NrTm90aWZpZXIgKm4sIHZvaWQgKmhvc3QsIHNpemVfdCBzaXpl KQorc2V2X3JhbV9ibG9ja19yZW1vdmVkKFJBTUJsb2NrTm90aWZpZXIgKm4sIHZvaWQgKmhvc3Qs IHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhfc2l6ZSkKIHsK ICAgICBpbnQgcjsKICAgICBzdHJ1Y3Qga3ZtX2VuY19yZWdpb24gcmFuZ2U7CkBAIC0xNzUsMTMg KzE3NywxMyBAQCBzZXZfcmFtX2Jsb2NrX3JlbW92ZWQoUkFNQmxvY2tOb3RpZmllciAqbiwgdm9p ZCAqaG9zdCwgc2l6ZV90IHNpemUpCiAgICAgfQogCiAgICAgcmFuZ2UuYWRkciA9IChfX3U2NCko dW5zaWduZWQgbG9uZylob3N0OwotICAgIHJhbmdlLnNpemUgPSBzaXplOworICAgIHJhbmdlLnNp emUgPSBtYXhfc2l6ZTsKIAotICAgIHRyYWNlX2t2bV9tZW1jcnlwdF91bnJlZ2lzdGVyX3JlZ2lv bihob3N0LCBzaXplKTsKKyAgICB0cmFjZV9rdm1fbWVtY3J5cHRfdW5yZWdpc3Rlcl9yZWdpb24o aG9zdCwgbWF4X3NpemUpOwogICAgIHIgPSBrdm1fdm1faW9jdGwoa3ZtX3N0YXRlLCBLVk1fTUVN T1JZX0VOQ1JZUFRfVU5SRUdfUkVHSU9OLCAmcmFuZ2UpOwogICAgIGlmIChyKSB7CiAgICAgICAg IGVycm9yX3JlcG9ydCgiJXM6IGZhaWxlZCB0byB1bnJlZ2lzdGVyIHJlZ2lvbiAoJXArJSN6eCki LAotICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGhvc3QsIHNpemUpOworICAgICAgICAg ICAgICAgICAgICAgX19mdW5jX18sIGhvc3QsIG1heF9zaXplKTsKICAgICB9CiB9CiAKZGlmZiAt LWdpdCBhL3V0aWwvdmZpby1oZWxwZXJzLmMgYi91dGlsL3ZmaW8taGVscGVycy5jCmluZGV4IGIz YWRjMzI4ZGIuLjNkYjZhYTQ5ZjQgMTAwNjQ0Ci0tLSBhL3V0aWwvdmZpby1oZWxwZXJzLmMKKysr IGIvdXRpbC92ZmlvLWhlbHBlcnMuYwpAQCAtMzcyLDI1ICszNzIsMjYgQEAgZmFpbF9jb250YWlu ZXI6CiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgcWVtdV92ZmlvX3JhbV9ibG9j a19hZGRlZChSQU1CbG9ja05vdGlmaWVyICpuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2b2lkICpob3N0LCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyB2b2lkIHFlbXVfdmZp b19yYW1fYmxvY2tfYWRkZWQoUkFNQmxvY2tOb3RpZmllciAqbiwgdm9pZCAqaG9zdCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsIHNpemVfdCBtYXhf c2l6ZSkKIHsKICAgICBRRU1VVkZJT1N0YXRlICpzID0gY29udGFpbmVyX29mKG4sIFFFTVVWRklP U3RhdGUsIHJhbV9ub3RpZmllcik7CiAgICAgaW50IHJldDsKIAotICAgIHRyYWNlX3FlbXVfdmZp b19yYW1fYmxvY2tfYWRkZWQocywgaG9zdCwgc2l6ZSk7Ci0gICAgcmV0ID0gcWVtdV92ZmlvX2Rt YV9tYXAocywgaG9zdCwgc2l6ZSwgZmFsc2UsIE5VTEwpOworICAgIHRyYWNlX3FlbXVfdmZpb19y YW1fYmxvY2tfYWRkZWQocywgaG9zdCwgbWF4X3NpemUpOworICAgIHJldCA9IHFlbXVfdmZpb19k bWFfbWFwKHMsIGhvc3QsIG1heF9zaXplLCBmYWxzZSwgTlVMTCk7CiAgICAgaWYgKHJldCkgewot ICAgICAgICBlcnJvcl9yZXBvcnQoInFlbXVfdmZpb19kbWFfbWFwKCVwLCAlenUpIGZhaWxlZDog JWQiLCBob3N0LCBzaXplLCByZXQpOworICAgICAgICBlcnJvcl9yZXBvcnQoInFlbXVfdmZpb19k bWFfbWFwKCVwLCAlenUpIGZhaWxlZDogJWQiLCBob3N0LAorICAgICAgICAgICAgICAgICAgICAg bWF4X3NpemUsIHJldCk7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBxZW11X3ZmaW9fcmFtX2Js b2NrX3JlbW92ZWQoUkFNQmxvY2tOb3RpZmllciAqbiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2b2lkICpob3N0LCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyB2b2lkIHFl bXVfdmZpb19yYW1fYmxvY2tfcmVtb3ZlZChSQU1CbG9ja05vdGlmaWVyICpuLCB2b2lkICpob3N0 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBz aXplX3QgbWF4X3NpemUpCiB7CiAgICAgUUVNVVZGSU9TdGF0ZSAqcyA9IGNvbnRhaW5lcl9vZihu LCBRRU1VVkZJT1N0YXRlLCByYW1fbm90aWZpZXIpOwogICAgIGlmIChob3N0KSB7Ci0gICAgICAg IHRyYWNlX3FlbXVfdmZpb19yYW1fYmxvY2tfcmVtb3ZlZChzLCBob3N0LCBzaXplKTsKKyAgICAg ICAgdHJhY2VfcWVtdV92ZmlvX3JhbV9ibG9ja19yZW1vdmVkKHMsIGhvc3QsIG1heF9zaXplKTsK ICAgICAgICAgcWVtdV92ZmlvX2RtYV91bm1hcChzLCBob3N0KTsKICAgICB9CiB9Ci0tIAoyLjI0 LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs 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=-6.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 946FDC2BA83 for ; Wed, 12 Feb 2020 13:57:05 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 516CB20724 for ; Wed, 12 Feb 2020 13:57:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="A/ITxfTn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 516CB20724 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:38290 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1sVk-000500-Gg for qemu-devel@archiver.kernel.org; Wed, 12 Feb 2020 08:57:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39519) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1sJL-00083T-Tj for qemu-devel@nongnu.org; Wed, 12 Feb 2020 08:44:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j1sJJ-0004ey-P0 for qemu-devel@nongnu.org; Wed, 12 Feb 2020 08:44:15 -0500 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:33770 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j1sJJ-0004eZ-KV for qemu-devel@nongnu.org; Wed, 12 Feb 2020 08:44:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1581515053; h=from:from: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=ZyIsCGbp0q7rUNVxi3tQZc/wfPXKE8Dd+matyQg6+Kw=; b=A/ITxfTnEctdIV+rpWv0h6CVznAJDByfi8Zqum0UvUoZ/O0V7NknFkPgrOoufudiCKfjc/ s7oXq6rnpOedPmzRb/8VIOXJxMbqePY9jIeyVrTyQAroRXRqrXIyyWQhiv/tbJgcSNOSMP seCy5ubcLL5kOrzPq3Fua9XHeYVbb7o= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-431-JcoS9hQuPluo-HF9K9lF9Q-1; Wed, 12 Feb 2020 08:44:11 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B44478017CC; Wed, 12 Feb 2020 13:44:09 +0000 (UTC) Received: from t480s.redhat.com (ovpn-117-92.ams2.redhat.com [10.36.117.92]) by smtp.corp.redhat.com (Postfix) with ESMTP id A21F71001281; Wed, 12 Feb 2020 13:44:04 +0000 (UTC) From: David Hildenbrand To: qemu-devel@nongnu.org Subject: [PATCH v2 fixed 13/16] numa: Teach ram block notifiers about resizable ram blocks Date: Wed, 12 Feb 2020 14:42:51 +0100 Message-Id: <20200212134254.11073-14-david@redhat.com> In-Reply-To: <20200212134254.11073-1-david@redhat.com> References: <20200212134254.11073-1-david@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-MC-Unique: JcoS9hQuPluo-HF9K9lF9Q-1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.81 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Eduardo Habkost , "Michael S . Tsirkin" , David Hildenbrand , "Dr . David Alan Gilbert" , Paul Durrant , xen-devel@lists.xenproject.org, Igor Mammedov , Anthony Perard , Paolo Bonzini , Richard Henderson Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" We want to actually resize ram blocks (make everything between used_length and max_length inaccessible) - however, not all ram block notifiers will support that. Let's teach the notifier that ram blocks are indeed resizable, but keep using max_size in the existing notifiers. Supply the max_size when adding and removing ram blocks. Also, notify on resizes. Introduce a way to detect if any registered notifier does not support resizes - ram_block_notifiers_support_resize() - which we can later use to fallback to legacy handling if a registered notifier (esp., SEV and HAX) does not support actual resizes. Cc: Richard Henderson Cc: Paolo Bonzini Cc: "Dr. David Alan Gilbert" Cc: Eduardo Habkost Cc: Marcel Apfelbaum Cc: Stefano Stabellini Cc: Anthony Perard Cc: Paul Durrant Cc: "Michael S. Tsirkin" Cc: xen-devel@lists.xenproject.org Cc: Igor Mammedov Signed-off-by: David Hildenbrand --- exec.c | 13 +++++++++++-- hw/core/numa.c | 34 +++++++++++++++++++++++++++++----- hw/i386/xen/xen-mapcache.c | 7 ++++--- include/exec/ramlist.h | 14 ++++++++++---- target/i386/hax-mem.c | 5 +++-- target/i386/sev.c | 18 ++++++++++-------- util/vfio-helpers.c | 17 +++++++++-------- 7 files changed, 76 insertions(+), 32 deletions(-) diff --git a/exec.c b/exec.c index fc65c4f7ca..f2d30479b8 100644 --- a/exec.c +++ b/exec.c @@ -2139,6 +2139,8 @@ static void qemu_ram_apply_settings(void *host, size_= t length) */ int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize, Error **errp) { + const ram_addr_t oldsize =3D block->used_length; + assert(block); =20 newsize =3D HOST_PAGE_ALIGN(newsize); @@ -2167,6 +2169,11 @@ int qemu_ram_resize(RAMBlock *block, ram_addr_t news= ize, Error **errp) block->used_length =3D newsize; cpu_physical_memory_set_dirty_range(block->offset, block->used_length, DIRTY_CLIENTS_ALL); + + if (block->host) { + ram_block_notify_resized(block->host, oldsize, newsize); + } + memory_region_set_size(block->mr, newsize); if (block->resized) { block->resized(block->idstr, newsize, block->host); @@ -2319,7 +2326,8 @@ static void ram_block_add(RAMBlock *new_block, Error = **errp) =20 if (new_block->host) { qemu_ram_apply_settings(new_block->host, new_block->max_length); - ram_block_notify_add(new_block->host, new_block->max_length); + ram_block_notify_add(new_block->host, new_block->used_length, + new_block->max_length); } } =20 @@ -2502,7 +2510,8 @@ void qemu_ram_free(RAMBlock *block) } =20 if (block->host) { - ram_block_notify_remove(block->host, block->max_length); + ram_block_notify_remove(block->host, block->used_length, + block->max_length); } =20 qemu_mutex_lock_ramlist(); diff --git a/hw/core/numa.c b/hw/core/numa.c index 6599c69e05..5b20dc726d 100644 --- a/hw/core/numa.c +++ b/hw/core/numa.c @@ -902,11 +902,12 @@ void query_numa_node_mem(NumaNodeMem node_mem[], Mach= ineState *ms) static int ram_block_notify_add_single(RAMBlock *rb, void *opaque) { const ram_addr_t max_size =3D qemu_ram_get_max_length(rb); + const ram_addr_t size =3D qemu_ram_get_used_length(rb); void *host =3D qemu_ram_get_host_addr(rb); RAMBlockNotifier *notifier =3D opaque; =20 if (host) { - notifier->ram_block_added(notifier, host, max_size); + notifier->ram_block_added(notifier, host, size, max_size); } return 0; } @@ -923,20 +924,43 @@ void ram_block_notifier_remove(RAMBlockNotifier *n) QLIST_REMOVE(n, next); } =20 -void ram_block_notify_add(void *host, size_t size) +void ram_block_notify_add(void *host, size_t size, size_t max_size) { RAMBlockNotifier *notifier; =20 QLIST_FOREACH(notifier, &ram_list.ramblock_notifiers, next) { - notifier->ram_block_added(notifier, host, size); + notifier->ram_block_added(notifier, host, size, max_size); } } =20 -void ram_block_notify_remove(void *host, size_t size) +void ram_block_notify_remove(void *host, size_t size, size_t max_size) { RAMBlockNotifier *notifier; =20 QLIST_FOREACH(notifier, &ram_list.ramblock_notifiers, next) { - notifier->ram_block_removed(notifier, host, size); + notifier->ram_block_removed(notifier, host, size, max_size); } } + +void ram_block_notify_resized(void *host, size_t old_size, size_t new_size= ) +{ + RAMBlockNotifier *notifier; + + QLIST_FOREACH(notifier, &ram_list.ramblock_notifiers, next) { + if (notifier->ram_block_resized) { + notifier->ram_block_resized(notifier, host, old_size, new_size= ); + } + } +} + +bool ram_block_notifiers_support_resize(void) +{ + RAMBlockNotifier *notifier; + + QLIST_FOREACH(notifier, &ram_list.ramblock_notifiers, next) { + if (!notifier->ram_block_resized) { + return false; + } + } + return true; +} diff --git a/hw/i386/xen/xen-mapcache.c b/hw/i386/xen/xen-mapcache.c index 5b120ed44b..d6dcea65d1 100644 --- a/hw/i386/xen/xen-mapcache.c +++ b/hw/i386/xen/xen-mapcache.c @@ -169,7 +169,8 @@ static void xen_remap_bucket(MapCacheEntry *entry, =20 if (entry->vaddr_base !=3D NULL) { if (!(entry->flags & XEN_MAPCACHE_ENTRY_DUMMY)) { - ram_block_notify_remove(entry->vaddr_base, entry->size); + ram_block_notify_remove(entry->vaddr_base, entry->size, + entry->size); } if (munmap(entry->vaddr_base, entry->size) !=3D 0) { perror("unmap fails"); @@ -211,7 +212,7 @@ static void xen_remap_bucket(MapCacheEntry *entry, } =20 if (!(entry->flags & XEN_MAPCACHE_ENTRY_DUMMY)) { - ram_block_notify_add(vaddr_base, size); + ram_block_notify_add(vaddr_base, size, size); } =20 entry->vaddr_base =3D vaddr_base; @@ -452,7 +453,7 @@ static void xen_invalidate_map_cache_entry_unlocked(uin= t8_t *buffer) } =20 pentry->next =3D entry->next; - ram_block_notify_remove(entry->vaddr_base, entry->size); + ram_block_notify_remove(entry->vaddr_base, entry->size, entry->size); if (munmap(entry->vaddr_base, entry->size) !=3D 0) { perror("unmap fails"); exit(-1); diff --git a/include/exec/ramlist.h b/include/exec/ramlist.h index bc4faa1b00..92e548461e 100644 --- a/include/exec/ramlist.h +++ b/include/exec/ramlist.h @@ -65,15 +65,21 @@ void qemu_mutex_lock_ramlist(void); void qemu_mutex_unlock_ramlist(void); =20 struct RAMBlockNotifier { - void (*ram_block_added)(RAMBlockNotifier *n, void *host, size_t size); - void (*ram_block_removed)(RAMBlockNotifier *n, void *host, size_t size= ); + void (*ram_block_added)(RAMBlockNotifier *n, void *host, size_t size, + size_t max_size); + void (*ram_block_removed)(RAMBlockNotifier *n, void *host, size_t size= , + size_t max_size); + void (*ram_block_resized)(RAMBlockNotifier *n, void *host, size_t old_= size, + size_t new_size); QLIST_ENTRY(RAMBlockNotifier) next; }; =20 void ram_block_notifier_add(RAMBlockNotifier *n); void ram_block_notifier_remove(RAMBlockNotifier *n); -void ram_block_notify_add(void *host, size_t size); -void ram_block_notify_remove(void *host, size_t size); +void ram_block_notify_add(void *host, size_t size, size_t max_size); +void ram_block_notify_remove(void *host, size_t size, size_t max_size); +void ram_block_notify_resized(void *host, size_t old_size, size_t new_size= ); +bool ram_block_notifiers_support_resize(void); =20 void ram_block_dump(Monitor *mon); =20 diff --git a/target/i386/hax-mem.c b/target/i386/hax-mem.c index 6bb5a24917..454d7fb212 100644 --- a/target/i386/hax-mem.c +++ b/target/i386/hax-mem.c @@ -293,7 +293,8 @@ static MemoryListener hax_memory_listener =3D { .priority =3D 10, }; =20 -static void hax_ram_block_added(RAMBlockNotifier *n, void *host, size_t si= ze) +static void hax_ram_block_added(RAMBlockNotifier *n, void *host, size_t si= ze, + size_t max_size) { /* * We must register each RAM block with the HAXM kernel module, or @@ -304,7 +305,7 @@ static void hax_ram_block_added(RAMBlockNotifier *n, vo= id *host, size_t size) * host physical pages for the RAM block as part of this registration * process, hence the name hax_populate_ram(). */ - if (hax_populate_ram((uint64_t)(uintptr_t)host, size) < 0) { + if (hax_populate_ram((uint64_t)(uintptr_t)host, max_size) < 0) { fprintf(stderr, "HAX failed to populate RAM\n"); abort(); } diff --git a/target/i386/sev.c b/target/i386/sev.c index 024bb24e51..6b4cee24a2 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -129,7 +129,8 @@ sev_set_guest_state(SevState new_state) } =20 static void -sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t size) +sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t size, + size_t max_size) { int r; struct kvm_enc_region range; @@ -146,19 +147,20 @@ sev_ram_block_added(RAMBlockNotifier *n, void *host, = size_t size) } =20 range.addr =3D (__u64)(unsigned long)host; - range.size =3D size; + range.size =3D max_size; =20 - trace_kvm_memcrypt_register_region(host, size); + trace_kvm_memcrypt_register_region(host, max_size); r =3D kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_REG_REGION, &range); if (r) { error_report("%s: failed to register region (%p+%#zx) error '%s'", - __func__, host, size, strerror(errno)); + __func__, host, max_size, strerror(errno)); exit(1); } } =20 static void -sev_ram_block_removed(RAMBlockNotifier *n, void *host, size_t size) +sev_ram_block_removed(RAMBlockNotifier *n, void *host, size_t size, + size_t max_size) { int r; struct kvm_enc_region range; @@ -175,13 +177,13 @@ sev_ram_block_removed(RAMBlockNotifier *n, void *host= , size_t size) } =20 range.addr =3D (__u64)(unsigned long)host; - range.size =3D size; + range.size =3D max_size; =20 - trace_kvm_memcrypt_unregister_region(host, size); + trace_kvm_memcrypt_unregister_region(host, max_size); r =3D kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_UNREG_REGION, &range)= ; if (r) { error_report("%s: failed to unregister region (%p+%#zx)", - __func__, host, size); + __func__, host, max_size); } } =20 diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index b3adc328db..3db6aa49f4 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -372,25 +372,26 @@ fail_container: return ret; } =20 -static void qemu_vfio_ram_block_added(RAMBlockNotifier *n, - void *host, size_t size) +static void qemu_vfio_ram_block_added(RAMBlockNotifier *n, void *host, + size_t size, size_t max_size) { QEMUVFIOState *s =3D container_of(n, QEMUVFIOState, ram_notifier); int ret; =20 - trace_qemu_vfio_ram_block_added(s, host, size); - ret =3D qemu_vfio_dma_map(s, host, size, false, NULL); + trace_qemu_vfio_ram_block_added(s, host, max_size); + ret =3D qemu_vfio_dma_map(s, host, max_size, false, NULL); if (ret) { - error_report("qemu_vfio_dma_map(%p, %zu) failed: %d", host, size, = ret); + error_report("qemu_vfio_dma_map(%p, %zu) failed: %d", host, + max_size, ret); } } =20 -static void qemu_vfio_ram_block_removed(RAMBlockNotifier *n, - void *host, size_t size) +static void qemu_vfio_ram_block_removed(RAMBlockNotifier *n, void *host, + size_t size, size_t max_size) { QEMUVFIOState *s =3D container_of(n, QEMUVFIOState, ram_notifier); if (host) { - trace_qemu_vfio_ram_block_removed(s, host, size); + trace_qemu_vfio_ram_block_removed(s, host, max_size); qemu_vfio_dma_unmap(s, host); } } --=20 2.24.1