From nobody Thu Aug 13 09:24:31 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1785759502; cv=none; d=zohomail.com; s=zohoarc; b=HgFv7gk8ae1zoQXyTJlzvOMsMF5ihnjT04oUBp2X1ujj4FKXimcen03qYYUTH6SM7ki6HoflJpziILOwAsrBwIHn51UqZOPH02f8wVfrFXSqfAUh/av1fwpklXVdMEUSY+2KVvk+rLeZAB4B8y61Nx64/k0Co1IAYxgGGbPN8PM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1785759502; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=set/tVnmTwyRXbbS2/hm5WA+Lv6/Z4na9/ek1L2Zqls=; b=STBy4HwWJUYj3i+1biHbApzssJ/rvfbeZDFCsvR8nyt1dMebCAu0MIPuJjjB9hB5nR2Au2pQOEPi2n4joXXXB9Nb2gGxw7s+oqRlt3GGSbsjq1vRnx3AXyFOIA+gD2DiIqoaK7EyUAGmSjemTUdkz6LMnnY5+pVj7irPphCmNiQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1785759502065348.6869570061426; Mon, 3 Aug 2026 05:18:22 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1381420.1625000 (Exim 4.92) (envelope-from ) id 1wqrc5-0007AZ-L2; Mon, 03 Aug 2026 12:17:49 +0000 Received: by outflank-mailman (output) from mailman id 1381420.1625000; Mon, 03 Aug 2026 12:17:49 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wqrc5-00079X-GY; Mon, 03 Aug 2026 12:17:49 +0000 Received: by outflank-mailman (input) for mailman id 1381420; Mon, 03 Aug 2026 12:17:48 +0000 Received: from mx.expurgate.net ([194.145.224.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wqrc4-00077T-4Z for xen-devel@lists.xenproject.org; Mon, 03 Aug 2026 12:17:48 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wqrc3-007wIE-3l for xen-devel@lists.xenproject.org; Mon, 03 Aug 2026 14:17:47 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a7086e5-e002-0a2a0a5209dd-0a2a45059236-20 for ; Mon, 03 Aug 2026 14:17:47 +0200 Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a7086ea-4cb1-0a2a45050019-d155802ca8e8-3 for ; Mon, 03 Aug 2026 14:17:47 +0200 Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4980fe6b3beso9420535e9.0 for ; Mon, 03 Aug 2026 05:17:47 -0700 (PDT) Received: from localhost.localdomain (host-78-146-248-75.as13285.net. [78.146.248.75]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4980878dbaesm385075295e9.12.2026.08.03.05.17.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Aug 2026 05:17:45 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1785759466; x=1786364266; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=set/tVnmTwyRXbbS2/hm5WA+Lv6/Z4na9/ek1L2Zqls=; b=cH/Iy6UsSU6DHVKYmaFEcS/x2i5uL7oEnjKgilZ36XcHrzdGQNn6JXdrGAYSL8Zfra 2X/xzUiwLWy3dacdLCoBfhZZuZvfgU2xz5XRaLINNqB82QkTmOw4ZDwI3AHjNwNT51ns +8GuAXCKwoF1EeQ2Ed3SVdz/QWrirsaY8RMTw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785759466; x=1786364266; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=set/tVnmTwyRXbbS2/hm5WA+Lv6/Z4na9/ek1L2Zqls=; b=CkIKgvgU69wmdzcqfOU0ITV//v6z4rdurkyW4+jzrFRz+2TGv3HTpeB1jsRaz32KAF lDthXnEL0cJ3jdc+MntOjMOp0oYVYBUGZjcU6MyZeJRlOrhmykUuI7TBe1j3/QhtepYR 80MTZCwzhUER58cIb0LoftfZ88Vl2shkbWzJr6F471X6k7dfNqwLqKflhG87qf1bWd7w /ImoeVkX0jCsQH3wjZnAwpIDRyaKfYK7FrA/xKWRa/aPBX/oelDDx20+XQKM0GjuJldi 4Y/y0CfTb5EcjMf60MYSNl2PyNOH7FNKeW5ZBWoWrVjxSJZIGvC8IC4Ys8y2jyndbTGi COqw== X-Gm-Message-State: AOJu0Yyy40q3dtH51z8lOshCm+xBfLz/D2q/KRcE6+Lu8Yq8r/b1mGQT uiqoZNgwXgCBW8R87bcVTmRKh7C+bGQ4G/tMlsXV8mt9KqUdTh4PoQawSBgseqRUOD01cJu6Fc1 P3VWL X-Gm-Gg: AR+sD11Ienn+VMFqdTwDkUhqKpSgwJoZ1vMBIi7T1LRYF9GkYTPOGjd+ylsR5kEzpJz 66s+5S2/DANnkAirjaq+/WDp8WyyMw9PmL9Wpw1PKlhBYIt7080nMm9eqHiao8vIINjsYcRtsT0 2gALCWlw8rJVbVpkAxLFs3xeTxNpdNLvZOZKQv6rKQVuR85/EgW1LAX1Kl/h5Ko0zrghyrHRmQp JgsjKQsVTHyYSgGEM+4dntQ4wtUvqqLQcgPieAelEG+78p2iqe7mM225a+dpVY9uAmh6lo5EDDJ BOllFZ45TGChLD33UkivzMn4pgfESowxYfO/n7+E4HqdoXH0YTwWRF5rZv8cGRqY3d1fXs5xfHA iQuDgpebdbX3yMocFajI1zJ7iHahTFfVBkKUH4+NERMdnUziXsuTdkZSUO8l1jjVNQOiyK70hQA GVMaytQXxp52Z1vczQ4jYpayCG0Lh+dqkGNQ1PxbgrvAybpMrgjUBwk2jOyHiRnoZ2qvvc/tBOs XinsxHN6atfFho2W6DPMkZVjOZURyuVYa49pik= X-Received: by 2002:a05:600c:5249:b0:495:3a52:71b1 with SMTP id 5b1f17b1804b1-4980eb9b2eemr144134715e9.5.1785759465972; Mon, 03 Aug 2026 05:17:45 -0700 (PDT) From: Andrew Cooper To: Xen-devel Cc: Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini , Bernhard Kaindl Subject: [PATCH 1/2] xen/mm: Alter get_outstanding_claims() to return information by value Date: Mon, 3 Aug 2026 13:17:38 +0100 Message-Id: <20260803121739.370951-2-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260803121739.370951-1-andrew.cooper3@citrix.com> References: <20260803121739.370951-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-c201ff/1785759467-F429B2A1-838194D7/0/0 X-purgate-type: clean X-purgate-size: 3474 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1785759502276158500 A void function with two output parameters is a weird choice. Instead, ret= urn a two-element structure. No functional change. Signed-off-by: Andrew Cooper --- CC: Anthony PERARD CC: Michal Orzel CC: Jan Beulich CC: Julien Grall CC: Roger Pau Monn=C3=A9 CC: Stefano Stabellini CC: Bernhard Kaindl Slightly RFC. claim_info_t name subject to improvement, but see next patch. This is to help unwedge the XenServer patchqueue following commit 44adbac3c7a6 ("xen/mm: Introduce per-node free page counter"). --- xen/common/page_alloc.c | 10 +++++++--- xen/common/sysctl.c | 8 ++++++-- xen/include/xen/mm.h | 6 +++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 598222e2c2e1..900fcf5755c1 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -582,12 +582,16 @@ int domain_set_outstanding_pages(struct domain *d, un= signed long pages) } =20 #ifdef CONFIG_SYSCTL -void get_outstanding_claims(uint64_t *free_pages, uint64_t *outstanding_pa= ges) +claim_info_t get_outstanding_claims(void) { + claim_info_t info; + spin_lock(&heap_lock); - *outstanding_pages =3D outstanding_claims; - *free_pages =3D avail_heap_pages(MEMZONE_XEN + 1, NR_ZONES - 1, -1); + info.avail =3D avail_heap_pages(MEMZONE_XEN + 1, NR_ZONES - 1, -1); + info.claimed =3D outstanding_claims; spin_unlock(&heap_lock); + + return info; } #endif /* CONFIG_SYSCTL */ =20 diff --git a/xen/common/sysctl.c b/xen/common/sysctl.c index 8fb5ff0af317..35c132564ef1 100644 --- a/xen/common/sysctl.c +++ b/xen/common/sysctl.c @@ -248,6 +248,7 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_s= ysctl) case XEN_SYSCTL_physinfo: { struct xen_sysctl_physinfo *pi =3D &op->u.physinfo; + claim_info_t claim_info; =20 memset(pi, 0, sizeof(*pi)); pi->threads_per_core =3D @@ -259,8 +260,11 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_= sysctl) pi->max_node_id =3D MAX_NUMNODES-1; pi->max_cpu_id =3D nr_cpu_ids - 1; pi->total_pages =3D total_pages; - /* Protected by lock */ - get_outstanding_claims(&pi->free_pages, &pi->outstanding_pages); + + claim_info =3D get_outstanding_claims(); + pi->free_pages =3D claim_info.avail; + pi->outstanding_pages =3D claim_info.claimed; + pi->scrub_pages =3D 0; pi->cpu_khz =3D cpu_khz; pi->max_mfn =3D get_upper_mfn_bound(); diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h index b80bec00c124..74d28d2a1b7a 100644 --- a/xen/include/xen/mm.h +++ b/xen/include/xen/mm.h @@ -132,7 +132,11 @@ int populate_pt_range(unsigned long virt, unsigned lon= g nr_mfns); unsigned long __must_check domain_adjust_tot_pages(struct domain *d, long pages); int domain_set_outstanding_pages(struct domain *d, unsigned long pages); -void get_outstanding_claims(uint64_t *free_pages, uint64_t *outstanding_pa= ges); + +typedef struct { + unsigned long avail, claimed; +} claim_info_t; +claim_info_t get_outstanding_claims(void); =20 /* Domain suballocator. These functions are *not* interrupt-safe.*/ void init_domheap_pages(paddr_t ps, paddr_t pe); --=20 2.39.5 From nobody Thu Aug 13 09:24:31 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1785759496; cv=none; d=zohomail.com; s=zohoarc; b=mMT3TZMK1FLi1ZrZ9Jjpq1+Xshv/QJUacRxvkaoJeur38Y/8NhszLku3ICY8LHvhPzgdZoeTWb3WX5Nz/WjTw+XxfRLZqR7ChFWZRpOwYLL6OUnl4vlzwW5w7AbUBNRDjoE99d5LA20Usz4MVn+x4dF/nfjlA3Io8leCtO3fKrA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1785759496; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6JCAOMMwTyxZkSFy3FwTezM7XZSAFX+kgUtlaig++k8=; b=MKjO4Kq/rQ+0Re9yp4EUN8iA2DQ6aeICFGoWr2vehHH1JOWUHzFpZ3ESQuV5sOYTNzQtseHqVpy1uXj7+CG+PLvfjDhRcrbII1tT3PD2fuv4GgRw/cKRnoiVWOXD0iJEfY1mhJqucbNZoZklu4Kgh5NkW+rxnGSEJZizE56vMaM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1785759496427707.2768565800419; Mon, 3 Aug 2026 05:18:16 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1381421.1625007 (Exim 4.92) (envelope-from ) id 1wqrc5-0007HC-UF; Mon, 03 Aug 2026 12:17:49 +0000 Received: by outflank-mailman (output) from mailman id 1381421.1625007; Mon, 03 Aug 2026 12:17:49 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wqrc5-0007Gb-QY; Mon, 03 Aug 2026 12:17:49 +0000 Received: by outflank-mailman (input) for mailman id 1381421; Mon, 03 Aug 2026 12:17:48 +0000 Received: from mx.expurgate.net ([194.145.224.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wqrc4-00077Z-88 for xen-devel@lists.xenproject.org; Mon, 03 Aug 2026 12:17:48 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wqrc3-007wIE-KV for xen-devel@lists.xenproject.org; Mon, 03 Aug 2026 14:17:47 +0200 Received: from [10.42.69.12] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a7086e0-e002-0a2a0a5209dd-0a2a450ce7d8-8 for ; Mon, 03 Aug 2026 14:17:47 +0200 Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com) by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a7086eb-f479-0a2a450c0019-d155802da8b9-3 for ; Mon, 03 Aug 2026 14:17:47 +0200 Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4980fe6b3beso9420635e9.0 for ; Mon, 03 Aug 2026 05:17:47 -0700 (PDT) Received: from localhost.localdomain (host-78-146-248-75.as13285.net. [78.146.248.75]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4980878dbaesm385075295e9.12.2026.08.03.05.17.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Aug 2026 05:17:46 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1785759467; x=1786364267; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=6JCAOMMwTyxZkSFy3FwTezM7XZSAFX+kgUtlaig++k8=; b=mOkAGSdoBYNCkt5FcZovfp+J1gfWzFXJU/bFm5A3NDlOJ0Bglg0BItrHzw6M8GCBfJ WjW+sgALauKbsozsD1zwZXf9QY4b6EIiyXC/ONgpiduR3E+B/bk8xYfgQ0ROFX/GnfKH 5j2O75qojRgZGKjUAv401lGyBXhyzbkEcpinw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785759467; x=1786364267; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=6JCAOMMwTyxZkSFy3FwTezM7XZSAFX+kgUtlaig++k8=; b=W2WTESaWD3x3bIU1KHb4yvjT8X7SXhEo2TNHCTt7bpXOfyo3imDiqiKUSFnQOcFTiN N9yq0a/Pp/F2nbIvRAXu7Z8bt0AXN3gkK5Vwg9O5McDBjR+3vSfwlWV6PnOIaC197zww QdOLFt7QLQC2BWPaKrfJjKDBUqQd5DaliTnkuJiwGa81VtZM29FGWlKTTw3wzS0zmkA8 /34gb7+DpYfNTR5jQ3D4tjbN17s09N3mm8U5mgTiJHqEdEGxARDbpLxghKLW5tdD5dEj gWQaUvle9G7NGSniDq8nEwMDTpq+9HFzWafR72r6IJj9iSzDmBH89x9qkPG4rhc0psme XhDw== X-Gm-Message-State: AOJu0YwcwqvvcIfe7Wb6DSNbvohOx8ce+zf9q87uJ74BkyNAoQv6XDtG weDEW5fuyMHRazZlOFkMW15mvNZy+fKnfsVAmKL7hIbYdSD36wVwhoA9vqZc21oclMxW4VCxgOA CvM8BJKQ= X-Gm-Gg: AR+sD12NxoAIjhFCiIfuH7QEEjjAssJVsFK+DCiPaoXyUsjcSm7FFoFU8Y5nWwaJcUo 1471nLt8l+TdD9Ohh70CPVYf6kngBu+oQ0kVXN5bybY5v7TwMHuAYfDHeBNIfLhibBzKT7yJguW TKnN/bzPrmsEf/P/2jjvyWdXOaEhosMKLPfWZwfwMdKCKgvd4+V6vxqXkM81a0o/iB4OB39PLWp BDC50JPvEMtFa9HQ/uI/zg6nWluOYj9gJjahq/A9lJ6S3+Pj9IzSjKVnHLZF1BoeE0rFBbvo2f/ L82hJOjSXjoLG7uPMOeGT7U9EZvvrxTfM3660eZ/BqgfVmcRhCojejpxVhVVq6nqKbGcypQLcHl YD0Fqp/z8+fZPpsQepco29RZH/kHSc4r18W5XJBTUwSElp68etNHkNzKYJpvq9MANXz6OaALyrF B8u5y4MxFS68vymQwGos27+WJIaFCUCXZ83KFUzslE/ZHrabCQv8gBwS1KaUnzUltlIppoNRJzq xiz6/YWqa7vWNuQPuSIQwtHhzdfd249DIpOPxrc+ic0Yyx5cg== X-Received: by 2002:a05:600c:3150:b0:495:3c6f:7c18 with SMTP id 5b1f17b1804b1-4980eb8c4c9mr154961375e9.3.1785759466769; Mon, 03 Aug 2026 05:17:46 -0700 (PDT) From: Andrew Cooper To: Xen-devel Cc: Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini , Bernhard Kaindl Subject: [PATCH RFC 2/2] xen/mm: Return claim information from avail_node_heap_pages() Date: Mon, 3 Aug 2026 13:17:39 +0100 Message-Id: <20260803121739.370951-3-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260803121739.370951-1-andrew.cooper3@citrix.com> References: <20260803121739.370951-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-d25034/1785759467-01AC4A5B-269A8F01/0/0 X-purgate-type: clean X-purgate-size: 4060 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1785759498565158500 Fully RFC. With per-node claims, avail_node_heap_pages() becomes: claim_info_t avail_node_heap_pages(unsigned int nodeid) { claim_info_t info =3D {}; if ( nodeid < MAX_NUMNODES && node_online(nodeid) ) { spin_lock(&heap_lock); info.avail =3D node_avail_pages[nodeid]; info.claimed =3D node_outstanding_claims[nodeid]; spin_unlock(&heap_lock); } return info; } along with modifications to the callers. I'm not intending to submit this patch as-is, but it is present to help judge the naming. Not-Really-Signed-off-by: Andrew Cooper --- CC: Anthony PERARD CC: Michal Orzel CC: Jan Beulich CC: Julien Grall CC: Roger Pau Monn=C3=A9 CC: Stefano Stabellini CC: Bernhard Kaindl --- xen/common/numa.c | 2 +- xen/common/page_alloc.c | 8 +++++--- xen/common/sysctl.c | 2 +- xen/include/xen/mm.h | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/xen/common/numa.c b/xen/common/numa.c index 92f8f1cedce1..eef8be06944e 100644 --- a/xen/common/numa.c +++ b/xen/common/numa.c @@ -713,7 +713,7 @@ static void cf_check dump_numa(unsigned char key) =20 printk("NODE%u start->%lu size->%lu free->%lu\n", i, node_start_pfn(i), node_spanned_pages(i), - avail_node_heap_pages(i)); + avail_node_heap_pages(i).avail); /* Sanity check mfn_to_nid() */ if ( node_spanned_pages(i) > 1 && mfn_to_nid(mfn) !=3D i ) printk("mfn_to_nid(%"PRI_mfn") -> %d should be %u\n", diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 900fcf5755c1..0b0f2033e738 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -2852,12 +2852,14 @@ unsigned long avail_domheap_pages_region( return avail_heap_pages(zone_lo, zone_hi, node); } =20 -unsigned long avail_node_heap_pages(unsigned int nodeid) +claim_info_t avail_node_heap_pages(unsigned int nodeid) { + claim_info_t info =3D {}; + if ( nodeid < MAX_NUMNODES && node_online(nodeid) ) - return node_avail_pages[nodeid]; + info.avail =3D node_avail_pages[nodeid]; =20 - return 0; + return info; } =20 =20 diff --git a/xen/common/sysctl.c b/xen/common/sysctl.c index 35c132564ef1..4d8dba51eb63 100644 --- a/xen/common/sysctl.c +++ b/xen/common/sysctl.c @@ -315,7 +315,7 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_s= ysctl) if ( node_online(i) ) { meminfo.memsize =3D node_spanned_pages(i) << PAGE_= SHIFT; - meminfo.memfree =3D avail_node_heap_pages(i) << PA= GE_SHIFT; + meminfo.memfree =3D avail_node_heap_pages(i).avail= << PAGE_SHIFT; } else meminfo.memsize =3D meminfo.memfree =3D XEN_INVALI= D_MEM_SZ; diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h index 74d28d2a1b7a..e8b81c0f1fc6 100644 --- a/xen/include/xen/mm.h +++ b/xen/include/xen/mm.h @@ -137,6 +137,7 @@ typedef struct { unsigned long avail, claimed; } claim_info_t; claim_info_t get_outstanding_claims(void); +claim_info_t avail_node_heap_pages(unsigned int nodeid); =20 /* Domain suballocator. These functions are *not* interrupt-safe.*/ void init_domheap_pages(paddr_t ps, paddr_t pe); @@ -145,7 +146,6 @@ struct page_info *alloc_domheap_pages( void free_domheap_pages(struct page_info *pg, unsigned int order); unsigned long avail_domheap_pages_region( unsigned int node, unsigned int min_width, unsigned int max_width); -unsigned long avail_node_heap_pages(unsigned int nodeid); #define alloc_domheap_page(d,f) (alloc_domheap_pages(d,0,f)) #define free_domheap_page(p) (free_domheap_pages(p,0)) =20 --=20 2.39.5