From nobody Thu Oct 30 16:38:13 2025 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=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1760976595; cv=none; d=zohomail.com; s=zohoarc; b=QZpTDN7vZSThUXcEhr6SGKghiOYYi3jYbYuG9F8Rk7DRGgLiaET0ioyBY1TaamKghxDZfYWxZtdJDNL65uW4rDXwnXDbUZrlhq+pOO1SxmUhEb+uXuBAI+AnH+HZLGZvBXxFuR10wdZte4JioGN2oyPxQf3cgxSQsKoQd9qv7/8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760976595; h=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=Cxtv3BMlv21jdp4Ip+HjiyNuW5KsWMFtWda7wHvVoac=; b=AMOaJSCWCwl99Q5Nr4M86xS/vGPYfW6+OrZ/EmZTuOvHt70LJaoyNWklIn2+/BUPcV2EhxYONFZSu4q5rXB2l9HZKGJrW5Q6hhst50pa4sp+LO1FToIOPbBS1pR7kB/V6nmvwu9bvQRw44MMmZNIYlk2PXavRwoPPY34P6wAMNc= 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=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1760976595227834.1425004743289; Mon, 20 Oct 2025 09:09:55 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1146722.1479118 (Exim 4.92) (envelope-from ) id 1vAsS7-0007jX-3i; Mon, 20 Oct 2025 16:09:43 +0000 Received: by outflank-mailman (output) from mailman id 1146722.1479118; Mon, 20 Oct 2025 16:09:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vAsS7-0007jQ-0a; Mon, 20 Oct 2025 16:09:43 +0000 Received: by outflank-mailman (input) for mailman id 1146722; Mon, 20 Oct 2025 16:09:42 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vAsHD-0004DQ-4N for xen-devel@lists.xenproject.org; Mon, 20 Oct 2025 15:58:27 +0000 Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [2a00:1450:4864:20::52c]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 9cfef3c2-adcd-11f0-9d15-b5c5bf9af7f9; Mon, 20 Oct 2025 17:58:26 +0200 (CEST) Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-637e74e9104so6216969a12.1 for ; Mon, 20 Oct 2025 08:58:26 -0700 (PDT) Received: from fedora (user-109-243-146-38.play-internet.pl. [109.243.146.38]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-63c48ab560esm6966067a12.12.2025.10.20.08.58.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Oct 2025 08:58:25 -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" X-Inumbo-ID: 9cfef3c2-adcd-11f0-9d15-b5c5bf9af7f9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760975905; x=1761580705; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Cxtv3BMlv21jdp4Ip+HjiyNuW5KsWMFtWda7wHvVoac=; b=CsBk/M7DOc4rBsp3ZF7kBYm/jBGW70uoqtsdQKTZ6qXxoZHxhi+picsHiMGBKIPjit 41E2LYgFlWqAVqwMNoT9d9abHt/nxPNbJhk5N+DiQkM3h6ecz7KXL40XztW1RDZVxf4b JVAA1JGKlR0QdItr8xyTtcFho6T7wSsYEEqW8QhOasSH5tyhVIxLnNYbl1NsyOBLvsvz W6UDvcQbDIhNxKAmXvYAsD5pHiszC3rpMwqWV7O7udNz9C1Z3o6NUrrc8CI0lwSfJmMv ye7mmmwp7fa62SRUn5nUH/zYSmLq5TL8IlFe6WsrVBvs18sBvaC0vPYLzPWw66MpzCwk D5pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760975905; x=1761580705; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Cxtv3BMlv21jdp4Ip+HjiyNuW5KsWMFtWda7wHvVoac=; b=ZUmllFLwKRozhqMwedSGc2in6Mc6gwIb941nUp7sq+wN6Xu0xOVtzoztuTb+OKBF4Z bIo1kyseGJL09jx7FYZbD05Ln4PinGxeNGe0Gn1wnR53R8iPEC+6ETZPk8NRNs2xWMNv S8abHySf+tAQvgOq0lLRHwkN9VuGyu0/aJ+UwIROcG+jGUZ1ynbK6qk3yRTxBQnSGfTG IQcyneyZ9tJYlL8D8FwEYI2OrYALP7w1ckDi+eA+GYRwUFW9jEK3JF9WVfp2/XquMUGX 2ATL9DXb/4QFa7Ib9rMPW7tbEG8mtlXIz3LgRoTt+ATX06psduJsNouF3n8m9dDm0xVH 4nJw== X-Gm-Message-State: AOJu0Yzcdjo8N/84Ox8wka1113BTFzqGAjT4yYMkPpNG/26ozH/S/EbZ LXc6UIwvE8Up+wcfd6HwNthdPSpQCZmV5Pap9P2oFlM4zsBX9dqfgBQNdEQzRA== X-Gm-Gg: ASbGncv1zyqcMzJBl8Nu9UJPAjFZlNiSa5ELxE1oEIeXKyYxV2Ju0t26xojtxB+TGxX RbzNv+kkEAEJZzdbjyV7/j/faXX75juZ+tRZc0vO9z3I68BIUndhC/5IliH5tJKlffqNj4gKHS2 VguWClcbV4UQEGbH/XRpibC0xOeiiR5PyA/Tl8LG1zkZe1Fs26mtV2vRBARpwkJ20axLwSfKDvz O9Mpzp0eU6xvwdzn0Zpvj3sr9GeuUV+dfOYSeW5VMwNrk+tHLWlqzM0kkoQIoz/nxGwi9FW+QqP 8QsX+XhB33wyuyYsoKk0M58MvWrDAgdUNN3sg5E2YKHdOTWUxc36g6RbOmkAmas2qWPiAbj6s4w PUjojlEvcszw/2zObMTUJB9Ie58n+SE1n7yzihTZh09lUJXDrQYVGOBUod6iDJbRG9k6UBMq7Ey c3YGdwvgoLu67EIvF+RJfBuLnA4yQn5Pc9ElRLuO5YC1P+Qs8= X-Google-Smtp-Source: AGHT+IF5ucbhQzw4jIkyq+gtZKbaydALhhXv5GV/+yNefqCo4pLvofWsWifLfqFebcjWNU0rfjICjQ== X-Received: by 2002:a05:6402:5c8:b0:639:6bc8:c7bd with SMTP id 4fb4d7f45d1cf-63c1f645c25mr12323874a12.15.1760975905504; Mon, 20 Oct 2025 08:58:25 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Oleksii Kurochko , Alistair Francis , Bob Eshleman , Connor Davis , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [for 4.22 v5 15/18] xen/riscv: implement put_page() Date: Mon, 20 Oct 2025 17:57:58 +0200 Message-ID: <6b2fa23a871eb6a8405265dcf3bbac51f29c84b6.1760974017.git.oleksii.kurochko@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1760976597356154101 Content-Type: text/plain; charset="utf-8" Implement put_page(), as it will be used by p2m_put_*-related code. Although CONFIG_STATIC_MEMORY has not yet been introduced for RISC-V, a stub for PGC_static is added to avoid cluttering the code of put_page() with #ifdefs. Signed-off-by: Oleksii Kurochko Acked-by: Jan Beulich --- Changes in V5: - Correct code style of do-while loop in put_page(). - Add Acked-by: Jan Beulich . --- Changes in V4: - Update the comment message: s/p2m_put_code/p2m_put_*-related code. s/put_page_nr/put_page. --- xen/arch/riscv/include/asm/mm.h | 7 +++++++ xen/arch/riscv/mm.c | 24 +++++++++++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/m= m.h index dd8cdc9782..0503c92e6c 100644 --- a/xen/arch/riscv/include/asm/mm.h +++ b/xen/arch/riscv/include/asm/mm.h @@ -264,6 +264,13 @@ static inline bool arch_mfns_in_directmap(unsigned lon= g mfn, unsigned long nr) /* Page is Xen heap? */ #define _PGC_xen_heap PG_shift(2) #define PGC_xen_heap PG_mask(1, 2) +#ifdef CONFIG_STATIC_MEMORY +/* Page is static memory */ +#define _PGC_static PG_shift(3) +#define PGC_static PG_mask(1, 3) +#else +#define PGC_static 0 +#endif /* Page is broken? */ #define _PGC_broken PG_shift(7) #define PGC_broken PG_mask(1, 7) diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c index 1ef015f179..2e42293986 100644 --- a/xen/arch/riscv/mm.c +++ b/xen/arch/riscv/mm.c @@ -362,11 +362,6 @@ unsigned long __init calc_phys_offset(void) return phys_offset; } =20 -void put_page(struct page_info *page) -{ - BUG_ON("unimplemented"); -} - void arch_dump_shared_mem_info(void) { BUG_ON("unimplemented"); @@ -627,3 +622,22 @@ void flush_page_to_ram(unsigned long mfn, bool sync_ic= ache) if ( sync_icache ) invalidate_icache(); } + +void put_page(struct page_info *page) +{ + unsigned long nx, x, y =3D page->count_info; + + do { + ASSERT((y & PGC_count_mask) >=3D 1); + x =3D y; + nx =3D x - 1; + } while ( unlikely((y =3D cmpxchg(&page->count_info, x, nx)) !=3D x) ); + + if ( unlikely((nx & PGC_count_mask) =3D=3D 0) ) + { + if ( unlikely(nx & PGC_static) ) + free_domstatic_page(page); + else + free_domheap_page(page); + } +} --=20 2.51.0