From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464302; cv=none; d=zohomail.com; s=zohoarc; b=CsbmlibEG8b38I5WdDvXhDQa1NJZnZsIB9Fb6LKEdelastNg46AOBT2kgNC9r8QPfKWRFn7tD0yaCRqt8mE9q30Ra+sBUBWCaIaaX+fzbYa2Pw1DAbQwJixQK4qHarOGnwqBhM87s2ZqWZpetYtJLC1zpkNGMHWwkIlC7Y+vUjU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464302; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=MvHYgh1Rq601uyfNPLm9pilUaa8bf7wu2aIADqP6I+A=; b=CGUmYpdbInQ2zWUX0FvJPbuU70u63RJncIQRsJ1pmwiWnUznwJNdPLfdkr5wQ1wUDUOz4+tnQbM+eZdOgvA1fT8IH2uqKMLEVVRjy6Bjf78wT1lJ8oEzBSwpdwaTv1YrUeJFtxzTwthzRlFtg9mbyg0NnytChP9TtSt54Rqzf1s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464302544328.16456736350574; Sun, 14 Jun 2026 12:11:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYq9a-0007LW-Bp; Sun, 14 Jun 2026 15:05:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9X-0007L0-EA for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:05:51 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9V-0001Z3-Uk for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:05:51 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-650-qQ20AIJoNNOCqTRkgMG7rg-1; Sun, 14 Jun 2026 15:05:46 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-4600c8cb13aso1820158f8f.1 for ; Sun, 14 Jun 2026 12:05:46 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2c473bsm30384132f8f.28.2026.06.14.12.05.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:05:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463948; 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: in-reply-to:in-reply-to:references:references; bh=MvHYgh1Rq601uyfNPLm9pilUaa8bf7wu2aIADqP6I+A=; b=gAGbyKaF0xpn85K9IJxBXoRPRqzi8p0pshCv6L7jt9XwK+rkOLHdLrxcZKrAn95rjZAtcn c7XS4iaw3q5azXiL0gE9eSBI/apZspTeavnqVDCAqLeTNxpHxXdLZACR/kGo8Y0dGTMU3J WR4AHnGv8L6jwAKqaTCplPHaMHJD+58= X-MC-Unique: qQ20AIJoNNOCqTRkgMG7rg-1 X-Mimecast-MFC-AGG-ID: qQ20AIJoNNOCqTRkgMG7rg_1781463945 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463945; x=1782068745; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=MvHYgh1Rq601uyfNPLm9pilUaa8bf7wu2aIADqP6I+A=; b=s3Kj9udLOC4dM84KpBGHWUN7zkHuD4Y/h9UaWLeHL1sRSyEoYgDaxJNSqQ7gClEpFm 2HVl0eSLF0sFJoVvwHl9HU6l1Lg+jsAZYnivnUzNjBsXxdoHRiEQl/jfQc4sMxos/vMO qkJEQRy+qB4icvMUnRyqonYMCRPNTP4vCgF5gEpEYXl5syXQzJUacbj0NfzkMX6+GvMI +Sre4+PqQddx3pCg4o0QcOty+sae+HDYeoF154RbdPaYxN2YOcMNT9UJpOMANBUuc2UR eBC+zfwOVS3R4wuVSrkZ3QazaQOUOrcggYTnU1HQKMub3kpQeBEkiH5sLECUJAyaUbjG C5ZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463945; x=1782068745; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MvHYgh1Rq601uyfNPLm9pilUaa8bf7wu2aIADqP6I+A=; b=IMCUKeq1Oe6jT2KAt/mvpxVq86uaG7y3k7bHH/Fsy28B0VGoXh223QIh0v2nbIIKLJ R9NFS6aaI0BH1aKRl+KFLry6csuluzIYIlPdbpjOHlBXlvqYDA1nSItIPjB0iN+yJ4lY 3CHbioHujOrMyMMzOvHD8VOzW6DoY7yXENFnPrWNvqyYW0Mmcmh5f9SdsobMRgenMEQM XOEEIUz8u6h9vuLGyiy+Xm7cUM274LVedtotyjmIzSnV/FzXfKCfO5OUarsW6chtOMql 1CHDH0b0Oc/L0wOtOl516pzCWlyXmuYINOmaOTjLq/etcQ1ohe1N0oFccjo4AKstExZP OwHw== X-Gm-Message-State: AOJu0YzE4twpxwd2BzsfPK3zKjNK0Put6B4Ja0kq7AXZ4n3g4A6/AaF8 xP2jBVZhpWhHLyDsZTA28T29XtbnYC0hBe8yI9UUqFIf8oqAjV1PA5LLfTRfi6iy2lhNhnJx5wq 3MNDUpZHYAIlOeByJVdshQe1Ax7VG8bK89ZhgZL92tPT4PN31BtP2MWYhUUT0nE9gJVeIxd+IJg Nfg3JW2aJAaGZg5MvQj3O/u7FxeGZIcWsXKQ== X-Gm-Gg: Acq92OH6VLVluApZVROpFNyZTVBfom3ntzemb0OtagUaMaC6AbeqYm6dSRL2hQoUuqd x3GWgvapjQEh8Tv5mlctbxcX3pKpAueL2EVn8/sGt29/qCxjx1cL7KDs4eLdwsMXFwq/fHphna3 x/HpYcELu8V4qYT3wTMWsu1AoCGGtmyYl+VU7jRp7LNWeReHe96Lycn550A2tWYdBxqC3DN5Xbs u47pS5AhoExRCtUsEuGO/xVrqTtE+5Pib4sm3FhVtivFslhe6YCnOGU/Uf3XlIOmi6P1Nq+rRM1 vC8pZCQ1w3FmR2gZcGBYX0NxbnWG8pw5lrXogJZg5dz+Xh1n2xH4C2VjPt/DmmH89J2HpY7Yxl3 5P9C2IvXGeBsJiCUT6iEjQb0Q4XNYCcWwflvH7wPUWps= X-Received: by 2002:a05:6000:4a1c:b0:461:9459:874c with SMTP id ffacd0b85a97d-46194598a0amr6248570f8f.19.1781463945206; Sun, 14 Jun 2026 12:05:45 -0700 (PDT) X-Received: by 2002:a05:6000:4a1c:b0:461:9459:874c with SMTP id ffacd0b85a97d-46194598a0amr6248528f8f.19.1781463944554; Sun, 14 Jun 2026 12:05:44 -0700 (PDT) Date: Sun, 14 Jun 2026 15:05:42 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Paolo Bonzini , Yunhe Wang , qemu-stable@nongnu.org, Alejandro Jimenez , Sairaj Kodilkar , Richard Henderson Subject: [PULL 001/106] amd_iommu: restrict command buffer head/tail ranges to ring size Message-ID: <3097d54016ea9f8f0436f0b20e1b4d78a02b6aeb.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464303399158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Paolo Bonzini The AMD IOMMU command buffer is a ring buffer of cmdbuf_len (a power of two) entries. Each entry is 16 bytes and the head pointer cycles through the set: [0, 16, 32, ..., (cmdbuf_len - 1) * AMDVI_COMMAND_SIZE] The tail pointer is written by the guest through the COMMAND_TAIL MMIO register (offset 0x2008); the while loop in amdvi_cmdbuf_run() only terminates when head =3D=3D tail. If tail is set to a value higher than cmdbuf_len * 16, head will cycle through all the elements of the ring buffer indefinitely, without ever matching tail. Fix this by further masking tail (and head, for consistency) against the size of the ring buffer. Reported-by: Yunhe Wang Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini Reviewed-by: Alejandro Jimenez Reviewed-by: Michael S. Tsirkin Message-Id: <20260511113923.2478812-1-pbonzini@redhat.com> Signed-off-by: Michael S. Tsirkin --- hw/i386/amd_iommu.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 789e09d6f2..197e452e3c 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -1578,7 +1578,8 @@ static inline void amdvi_handle_devtab_write(AMDVISta= te *s) static inline void amdvi_handle_cmdhead_write(AMDVIState *s) { s->cmdbuf_head =3D amdvi_readq(s, AMDVI_MMIO_COMMAND_HEAD) - & AMDVI_MMIO_CMDBUF_HEAD_MASK; + & AMDVI_MMIO_CMDBUF_HEAD_MASK + & (s->cmdbuf_len * AMDVI_COMMAND_SIZE - 1); amdvi_cmdbuf_run(s); } =20 @@ -1594,7 +1595,8 @@ static inline void amdvi_handle_cmdbase_write(AMDVISt= ate *s) static inline void amdvi_handle_cmdtail_write(AMDVIState *s) { s->cmdbuf_tail =3D amdvi_readq(s, AMDVI_MMIO_COMMAND_TAIL) - & AMDVI_MMIO_CMDBUF_TAIL_MASK; + & AMDVI_MMIO_CMDBUF_TAIL_MASK + & (s->cmdbuf_len * AMDVI_COMMAND_SIZE - 1); amdvi_cmdbuf_run(s); } =20 --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464157; cv=none; d=zohomail.com; s=zohoarc; b=lirm5BtQebQUX++1QiE1qUeUT1Uos+jfjkFJ4Rcqh3PQa1SmzH3sXpVZr9aC7vod3ccIve8DOiHxX4sVCunoYgh/F1Y/GC4OPIlJ8Z1mH5+FZ1Ek9+Pt1UbiU2Q6u/BE4tGlW1+S64LvUhQYQLthQlUvgBgyuxtWQ8Crhp6TsmI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464157; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kd/cVzIWFHB7r44xSVIcmQI+gRNtFJnJ4HnNWjvlc+o=; b=QmgRRlDt8FWYa1uyd1lqsHxVbrK3KXoTavVEjYSrFEdTiyZEsr46ZQt0IdU8UDOAz3jBJ77Nw/FDs5v5kFx26YKidzqZHLpFM3pjjRRmecPZvfVelwEvRFwdprUKPLsnU3AcX6w5f00zAU9L6k/u9B1GZ6+eZUCwfIlTRGIX8bU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464157230379.6354031624094; Sun, 14 Jun 2026 12:09:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYq9e-0007Mo-Ig; Sun, 14 Jun 2026 15:05:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9Y-0007LD-JO for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:05:53 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9W-0001ZR-Fi for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:05:52 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-646-xSnCLaXcMFuKwg_ztYlUCg-1; Sun, 14 Jun 2026 15:05:48 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-45efa2f7009so1709301f8f.3 for ; Sun, 14 Jun 2026 12:05:48 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f263950sm27204743f8f.7.2026.06.14.12.05.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:05:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463949; 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: in-reply-to:in-reply-to:references:references; bh=kd/cVzIWFHB7r44xSVIcmQI+gRNtFJnJ4HnNWjvlc+o=; b=iUv9EdCOUMXgJjxZn9CXhpoe3xY06UcBWnpsD4cSGoAHZYYEKLbcX4Xe7BteDQpCNe1k8I PTomVemjNg5BZW2ENRcBwEdcDC2pxsCcK6CKiUzM9M3JVtCj1ZfU87wpcKxIzn0hcm25C8 TUinXSAvnW8mBUZVMY4LsT2x0yUxRXk= X-MC-Unique: xSnCLaXcMFuKwg_ztYlUCg-1 X-Mimecast-MFC-AGG-ID: xSnCLaXcMFuKwg_ztYlUCg_1781463947 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463947; x=1782068747; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=kd/cVzIWFHB7r44xSVIcmQI+gRNtFJnJ4HnNWjvlc+o=; b=lGl/E9xRfYmwQGM3EFgZMBNVAqYwpsRimHr4zX0iQMsRr7bMVB5IW76YIyIj1xfm3t i7Mkv6/VnizigRh7yU8PKLdYVxQ9rKEFnXaAhouzMIsRL8Jc+9VhKhIG/EJ4Bms9cQKa YjZMzWVvhujqoHg5yTPV2mI4eFW8eZKWIY3yaucU8Q8KOp+Lv+XFTqHuBGEZ1SzLSoiT 5+r0zcu4x3anzUZ159bb0SmbMzoxwFMxUq3qC399erkdvTZRg+KVqfds4YGgLEL0av09 ZysiHvxSFaIobv09TDB/qeS5FXJD2T/E/+emih7tbrAop0E958slIY0U8XDchDe34Hb1 akAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463947; x=1782068747; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kd/cVzIWFHB7r44xSVIcmQI+gRNtFJnJ4HnNWjvlc+o=; b=qmZdrAN6elaviWp8zrvv208j2wh0dgozr/V9TtQECKGa580Ve50UultJOrhd9zEykr Gxbjjp0A1ScVjHm87fr5lhCi12Xdgjp+hFgGhdff+NXbjOtEsxD6Bhe829DSUzRxMvp6 7ma4M5Rz7A994Gc18CXDrV+65rbgRjD3DUC/uLna51AhTdTdEJCgIri1C6Z66fOgWD1P JtUpU130QkfAcvCFGXAAmAFSlm11A0ty/7cMAZd+0CWzaBGrfltSBM91WL9Rlyd07lbW qJwoUtR/YyIenRztYjPrJz52eMGhdk5CCBj2GIOqk43vKM8GyPv8Nn05w/BZUBXAU3mF lytA== X-Gm-Message-State: AOJu0YzWsHWZmK2qpsx/6l3EzbEDoMwvB5XkRBkRxtjJnuCTPQlwFBnL vYgxHT0tt7CMcArZh0cBSdhkHgi/BR6Rzf/1iVTjukPwBK8Etvz9fao9iPpfFPQZlsFOVFA/MwY Fr/WVY9wC88ZyjVmPizd3ePZnAgQIrvdWP/HasY6kS5lmbdJ4Bxh2W/YbJhLRDSTvoSnqTY6L4+ WBzD7YtUXTIt6A0fFxU3Z1wnKGGQONTPtu+Q== X-Gm-Gg: Acq92OGBlsbAcuIgEi9jpSyKXvgkyJot7S17QwG9lbuUm8VjSLLbTlrlem/HBAZRf17 DI7QCxPaMn1iIhd90lV32QXWCVAISGKa8hS16kzsIizA5TpEqIzJ+DfCGsLMVp7mHov+tbQmT2t bXTss4YU/lfzyFg3qHDIWqdhgKZaMdcyRD+Ma9JUXM2HVJf9F783yhQnl+ZcIJ89OVB83bhbE9k 16nGv76uu+EoYZjC9vbnglUdA2n7Zk7dtHhC4JM+TlzT8b8YQDGI/rUraMwgHldjquVM3vMv2GV fdq9bI8wFGkKQNGUFH5elc345sFxa9Yl02CxWzhDv7Zjt5tF2R/G0k7t2X6Nk2E9Tzq1W8ufHgJ Ywt+Cl4P7xLzzp0gRm0O8rotB4bHJNtjEP7ycnsQA8xg= X-Received: by 2002:a7b:ce9a:0:b0:490:bb3e:30c2 with SMTP id 5b1f17b1804b1-4922011e03emr65403955e9.18.1781463947181; Sun, 14 Jun 2026 12:05:47 -0700 (PDT) X-Received: by 2002:a7b:ce9a:0:b0:490:bb3e:30c2 with SMTP id 5b1f17b1804b1-4922011e03emr65403635e9.18.1781463946770; Sun, 14 Jun 2026 12:05:46 -0700 (PDT) Date: Sun, 14 Jun 2026 15:05:44 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alejandro Jimenez , qemu-stable@nongnu.org, Sairaj Kodilkar , Paolo Bonzini , Richard Henderson Subject: [PULL 002/106] amd_iommu: Update command buffer head ptr in MMIO region after wraparound Message-ID: <3c98e446af825b5806c1e5cd1244b2431b15e884.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464159041158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Alejandro Jimenez When processing a command, amdvi_cmdbuf_run() increments cmdbuf_head and writes it to the emulated MMIO register space before checking whether it has reached the end of the command buffer. If the incremented value reaches the end of the buffer and the tail pointer is zero, the loop exits and the COMMAND_HEAD offset still contains an unwrapped value. There are no errors in command processing since internal cmdbuf_head state is always correctly updated, but the spec defines the CmdHeadPtr field in MMIO Offset 2000h Command Buffer Head Pointer Register as RW i.e. guest-visible, so it should be kept consistent. Wrap cmdbuf_head before updating COMMAND_HEAD so the MMIO-visible register always matches the internal command buffer head pointer position. Cc: qemu-stable@nongnu.org Signed-off-by: Alejandro Jimenez Reviewed-by: Sairaj Kodilkar Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260512150044.334867-1-alejandro.j.jimenez@oracle.com> --- hw/i386/amd_iommu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 197e452e3c..5d6a405263 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -1475,12 +1475,12 @@ static void amdvi_cmdbuf_run(AMDVIState *s) trace_amdvi_command_exec(s->cmdbuf_head, s->cmdbuf_tail, s->cmdbuf= ); amdvi_cmdbuf_exec(s); s->cmdbuf_head +=3D AMDVI_COMMAND_SIZE; - amdvi_writeq_raw(s, AMDVI_MMIO_COMMAND_HEAD, s->cmdbuf_head); =20 /* wrap head pointer */ if (s->cmdbuf_head >=3D s->cmdbuf_len * AMDVI_COMMAND_SIZE) { s->cmdbuf_head =3D 0; } + amdvi_writeq_raw(s, AMDVI_MMIO_COMMAND_HEAD, s->cmdbuf_head); } } =20 --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781463990; cv=none; d=zohomail.com; s=zohoarc; b=l8oLrFDF/sGbl1R7bQw+p6wBsLvWqIr/xH24D9y5w9drTBLixMad2Vu1TQWYm+srFCgCTMT+JyABDiTvh9UDBgx7bkMLErOFIQOJ3tKBWuYs6Oxeno/8MZrwfXnqoDwg5F62/aqyY5NoBba54I1FuzUcQKnvvio8QuhS+tYvdsQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781463990; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nXKhAwb3pP4WDH+I4sQx9G0qUS7ctc0XUmuZY1RMbDY=; b=KVbgaG4NxureiS0/4kfxF3qLLT3X4H1QHERsuN61UzjyFvMBI7DjyWHoEPFqbT8GD4+Pb8r1YL65JYDYZI9MtTPlxnNWxlLtbOVp8jW81Q+BH6jjTECFoSz2gvBCLPY75vHEWcsDqNIOLmZDIyb7sTwg9anZaPtqHyeXQvAIr+k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781463990556805.3780223220473; Sun, 14 Jun 2026 12:06:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYq9e-0007Mn-J1; Sun, 14 Jun 2026 15:05:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9b-0007Lu-Dz for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:05:55 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9Z-0001a0-Ne for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:05:55 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-30-9Hz9QXMSPmCSIIZDMOSahw-1; Sun, 14 Jun 2026 15:05:51 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490b93debc8so25292895e9.1 for ; Sun, 14 Jun 2026 12:05:50 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2e6a8fsm27230144f8f.37.2026.06.14.12.05.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:05:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463952; 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: in-reply-to:in-reply-to:references:references; bh=nXKhAwb3pP4WDH+I4sQx9G0qUS7ctc0XUmuZY1RMbDY=; b=QUCZLerjzHNgM+HkfrsndbVoo55dKQnNCVJP3u15f/jHSPbM1UiA3dFxWnCY6fl2wfcICg NYmilBHuR/B4oRHFBl0iwxLaX0lsMJ0yoLGneBoDFYOmKqmKqqmEDp3RtTDrfOFTDD76CJ WasA28eknE3CUFzykbJl7jdRhrrF6DE= X-MC-Unique: 9Hz9QXMSPmCSIIZDMOSahw-1 X-Mimecast-MFC-AGG-ID: 9Hz9QXMSPmCSIIZDMOSahw_1781463950 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463950; x=1782068750; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=nXKhAwb3pP4WDH+I4sQx9G0qUS7ctc0XUmuZY1RMbDY=; b=j5WH1z9DGeINDJ+VSBZItVyRwsdLlg4rebLxmlpPhrkRj/kh77eV3CqPBOgtnkzFMQ aKzwDPsZtzR6lKxwhRMf342hD89h2Uy1ZS1td4vhKN48+/MizzG0wVLnI/x68JILFB2z iHKenizogsS5fzO2MZsqidSXxOPnAb3LHq/Lush3QKvMk49QohaMhDqIgkYiz0MWmlSp V0fmJxioF0n10ZGUQyq7oRdjFf6t4XkFH4tXvcAzgahNtbI/Zp2XrEr1olx9NVszJEKf IjgBuUxx0Zsn4coYeUAwb/NP3qGWYHMP0VSi2kmNNREVgRJYqp2fjuYMARNwgyJHiv8u dqNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463950; x=1782068750; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nXKhAwb3pP4WDH+I4sQx9G0qUS7ctc0XUmuZY1RMbDY=; b=FVoI3BIIWAPGEYxOaExBGdWaP2oNN2Ca8KLL2vEEfGde3WJvheAUtp86OZXE77yRnV F5oxL7cqr/Bn2IHrh1Srq8sb2qPVYIRF1jOj4OiVoBV2jIhHFmiVkCTAg8Ds9a4rWXH5 iYpAOa1/BWee0Vn6vfhMHySqgoCa7kQmZ9ZYAbxMG8dH6Gu/NTZYrO47s/Q4UBNf6sAl 6Y27n5SrQ0AA82nHRt0bewDrU4uTBe6IxrhjFh6hTrCD+iT7+AplN9QxX0wjpeT7AFkN HN5/yiAXBnEHzcTHOkw92SIlASCokzBS+pRBMsmRtmHQpOMjTOP8+09m4FQx2btdj0uC 10xQ== X-Gm-Message-State: AOJu0YytWYi7rXJVa3wsTanC/x5sxupg8ic8aPmOTQqSzSvgPgLC7IF+ MoCnVQS2N3oOoK6G9cztyoxe+yK7e4wgyUuujs21X9aT1KNDVUf6TbuGVt8iBqO4NqjOb3QFyYp /KnrdRKcEFOZXcztzX23O98EBeY8Z/gbtrkiTCP/vkPjLEnWCUM1TgIJr393iwRMw+4UA5jRWXy 4ftJ0EGOHdVVy9PEznQDtrvdIwu6KdJnHSuw== X-Gm-Gg: Acq92OG9hqZGeqTnmYh5MEpkyIIPjjJqFN7F6V/QVfNtRxbmqwoPTd8Gn5gm/XanmHa UjM51SNcCxsKrTXZ1o51eRAFRDG6xlNIHiUwvgjS4McU0bq7UNmT8cp11GpfmbLcYTmc2biuekd 7xUSkz/rw9n7+7k7AEfvaEFZZFae30S1xy8DPzdvys18rhFFKf2jw0Q/omx7jOhAGbpQDdth9DO 2HUO7bJbMAnxWh0RAOQ1RMuAaJV97xTzYfbB6hNxkd9hOUUtHAzAaPqTIJdb11atD1vVLfDiHjA JhiSi8O/M7Ikfra7TdcONZSbfsAa1MV5L6JEPJ70hlq29wapMHdXFeR4hffEH20rEc4YKiepaRP +P9ImIGnc50ZPWdDEZ4sKiHSJHBpEISFBefCcYsFXvM8= X-Received: by 2002:a05:600d:8494:20b0:48a:75b9:b0bc with SMTP id 5b1f17b1804b1-492200e8766mr66748215e9.29.1781463949802; Sun, 14 Jun 2026 12:05:49 -0700 (PDT) X-Received: by 2002:a05:600d:8494:20b0:48a:75b9:b0bc with SMTP id 5b1f17b1804b1-492200e8766mr66747865e9.29.1781463949251; Sun, 14 Jun 2026 12:05:49 -0700 (PDT) Date: Sun, 14 Jun 2026 15:05:46 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Costas Argyris , Alejandro Jimenez , Sairaj Kodilkar , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PULL 003/106] tests/qtest: Add amd-iommu command buffer head wrap test Message-ID: <8a1c09cbd3fe776a467398700c610cd126ee8a59.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781463993065158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Costas Argyris Add a qtest for AMD IOMMU command buffer head pointer wraparound. The test programs a command buffer, fills it with COMPLETION_WAIT commands, advances the tail to consume all but the final entry, then wraps the tail to zero to force the final command to advance CmdHeadPtr past the end of the buffer. The guest-visible CmdHeadPtr register must then wrap back to ze= ro. This covers the case fixed by an earlier CmdHeadPtr wraparound patch. The Linux kernel AMD IOMMU driver is not affected by this bug because it uses COMPLETION_WAIT with a memory store doorbell to detect command progres= s. Signed-off-by: Costas Argyris Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260530183458.7778-1-costas.argyris@amd.com> --- MAINTAINERS | 1 + tests/qtest/amd-iommu-test.c | 76 ++++++++++++++++++++++++++++++++++++ tests/qtest/meson.build | 1 + 3 files changed, 78 insertions(+) create mode 100644 tests/qtest/amd-iommu-test.c diff --git a/MAINTAINERS b/MAINTAINERS index a90daf0308..3b768fc080 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4053,6 +4053,7 @@ M: Alejandro Jimenez R: Sairaj Kodilkar S: Supported F: hw/i386/amd_iommu* +F: tests/qtest/amd-iommu-test.c =20 OpenSBI Firmware L: qemu-riscv@nongnu.org diff --git a/tests/qtest/amd-iommu-test.c b/tests/qtest/amd-iommu-test.c new file mode 100644 index 0000000000..fb28511588 --- /dev/null +++ b/tests/qtest/amd-iommu-test.c @@ -0,0 +1,76 @@ +/* + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "libqtest.h" +#include "hw/i386/amd_iommu.h" + +#define CMDBUF_ADDR 0x200000 +#define CMDBUF_LEN_FIELD 8 +#define CMDBUF_ENTRIES (1U << CMDBUF_LEN_FIELD) + +static inline uint64_t amdvi_reg_readq(QTestState *s, uint64_t offset) +{ + return qtest_readq(s, AMDVI_BASE_ADDR + offset); +} + +static inline void amdvi_reg_writeq(QTestState *s, uint64_t offset, + uint64_t val) +{ + qtest_writeq(s, AMDVI_BASE_ADDR + offset, val); +} + +static void test_cmdbuf_head_wrap(void) +{ + QTestState *s; + uint64_t head; + int i; + /* 16 bytes per command */ + struct { + uint64_t qw0; + uint64_t qw1; + } cmdbuf[CMDBUF_ENTRIES]; + + if (!qtest_has_machine("q35")) { + g_test_skip("q35 machine not available"); + return; + } + + s =3D qtest_init("-M q35 -device amd-iommu"); + + /* fill the command buffer with COMPLETION_WAIT (no-op) commands */ + for (i =3D 0; i < CMDBUF_ENTRIES; i++) { + cmdbuf[i].qw0 =3D (uint64_t)AMDVI_CMD_COMPLETION_WAIT << 60; + cmdbuf[i].qw1 =3D 0; + } + qtest_memwrite(s, CMDBUF_ADDR, cmdbuf, sizeof(cmdbuf)); + + /* point the IOMMU at the command buffer and set its length */ + amdvi_reg_writeq(s, AMDVI_MMIO_COMMAND_BASE, + CMDBUF_ADDR | ((uint64_t)CMDBUF_LEN_FIELD << 56)); + + /* enable the IOMMU and its command buffer processor */ + amdvi_reg_writeq(s, AMDVI_MMIO_CONTROL, + AMDVI_MMIO_CONTROL_AMDVIEN | AMDVI_MMIO_CONTROL_CMDBU= FLEN); + + /* advance tail to the last entry, consuming all but the final entry */ + amdvi_reg_writeq(s, AMDVI_MMIO_COMMAND_TAIL, + (CMDBUF_ENTRIES - 1) * AMDVI_COMMAND_SIZE); + + /* wrap tail to 0, consuming the final entry and completing the buffer= */ + amdvi_reg_writeq(s, AMDVI_MMIO_COMMAND_TAIL, 0); + + /* after consuming all entries the IOMMU must wrap CmdHeadPtr to 0 */ + head =3D amdvi_reg_readq(s, AMDVI_MMIO_COMMAND_HEAD); + g_assert((head & AMDVI_MMIO_CMDBUF_HEAD_MASK) =3D=3D 0); + + qtest_quit(s); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + qtest_add_func("/q35/amd-iommu/cmdbuf-head-wrap", test_cmdbuf_head_wra= p); + return g_test_run(); +} diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 728dde54b3..67eea5c71a 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -95,6 +95,7 @@ qtests_i386 =3D \ (config_all_devices.has_key('CONFIG_SB16') ? ['fuzz-sb16-test'] : []) + = \ (config_all_devices.has_key('CONFIG_SDHCI_PCI') ? ['fuzz-sdcard-test'] := []) + \ (config_all_devices.has_key('CONFIG_ESP_PCI') ? ['am53c974-test'] : []) = + \ + (config_all_devices.has_key('CONFIG_AMD_IOMMU') ? ['amd-iommu-test'] : [= ]) + \ (config_all_devices.has_key('CONFIG_VTD') ? ['intel-iommu-test'] : []) += \ (config_all_devices.has_key('CONFIG_VTD') and config_all_devices.has_key('CONFIG_IOMMU_TESTDEV') ? ['iommu-intel-test= '] : []) + \ --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464004; cv=none; d=zohomail.com; s=zohoarc; b=JFBAuD1Gdckd9IkLpOH20Iw+XfZrd0XU6ndsHL9DhVvdf8dJpD2QM0xkz+XooXspiKbcPFdSqGpFkW7ZfHG6zddpmjUdUgc7d4JrEAmM0yDSmhgGTnh11ZCDTNj9wYArizLA363aMLI+fvgi8SZ7bu5EChtfpcjjGKAS7+m2weE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464004; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EZa+Y4tLnxbfbTOlUtEtEC3z+5byRpb5C84fD6RI59Q=; b=IZrPaE7VQqvEiNPMp5/zwa6+/jagddqFQ4ouvlcwNqe1FfccI0ZLmkd8UZZEx2fNlfBNKnaN/jYc4gMe7R3SKC8IwHVnKWJ7RU8zTAQMHIebc2CLtJ9nNlqoIwmZ41h/nQ4zXG4QTAxS4aSR6C8dDSgKi4fZ5ODmdE1Gua6YnHM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146400412850.52655306176155; Sun, 14 Jun 2026 12:06:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYq9h-0007NI-Ky; Sun, 14 Jun 2026 15:06:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9d-0007MY-N4 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:05:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9b-0001aL-VZ for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:05:57 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-118-r0TSFemNNp6cNnblH0Vscg-1; Sun, 14 Jun 2026 15:05:54 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490b79e6b94so22229535e9.2 for ; Sun, 14 Jun 2026 12:05:53 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492202edf89sm197084935e9.1.2026.06.14.12.05.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:05:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463955; 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: in-reply-to:in-reply-to:references:references; bh=EZa+Y4tLnxbfbTOlUtEtEC3z+5byRpb5C84fD6RI59Q=; b=E9NkZV73mEPtWsB94i/FtGu5EerHmd5wCRZtNwvF+5xt0BYf4aVTj9sCrHrIbp4zBfYZZn iHfjNeboh7P4WkVCmySjCRcFmXoERB7h9zupuCQN7wWwA19ktZE5hlz7/QoX0JK4rkezRn JNspPPl/Hl4Krx/AZSbTa3BXjf/RC9Y= X-MC-Unique: r0TSFemNNp6cNnblH0Vscg-1 X-Mimecast-MFC-AGG-ID: r0TSFemNNp6cNnblH0Vscg_1781463953 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463953; x=1782068753; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=EZa+Y4tLnxbfbTOlUtEtEC3z+5byRpb5C84fD6RI59Q=; b=FbsfrgfoA086vum93QfScpoFBoajADt+/Hf2FxldD9VkKacXNq3s3wpREbvzVPBgjl XN83nCe+PywfTDcggwQ89GN5CtDsoZjO3tuOU3PoqsGxjFaj/TIgK27df/dtmvRO6hP0 bufAf3GxAD1S0W8iJZ7ZN4VW/PYOGYkGsdLblkZCsBfjxFwwdCJatpX9j7VkkeAIqmN9 TREPvcjd+MEWT3F+VfYlMMo1tElr2WWnf1dZNLYnlGTSd5yEqhYZCy5nDhZbob2ohzjP JCWectMZWfSIT3467lQdUfvM0DYkC/CYIGKX+PU0rDaOodEc8M86bas9gSXbUXbHjNg7 WAqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463953; x=1782068753; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EZa+Y4tLnxbfbTOlUtEtEC3z+5byRpb5C84fD6RI59Q=; b=EvNPkvcu4fY1qchHKJ+TmxU6YjQRQt5d8+TKQw+NKd3odM9/6mqSbxP5ZZpFDtJ6h9 tyltqwntQGTK8q/9xvDHWj3GSUPeJ05PVh+gRcuyGxk9xmnEpMHFZCYnKWZGRZxKgB1j xPQliMa+eikhPK1Tv3UzsKLmfGAWEFbQMH8Ab5F4oti6S/jJGgEMfg8mcY++H+Lq0ilc gx7UqczM9Lldsh0+FLBaTCiFZXF4WdYVHgLD9M2qaz/AIiv/6uNowoaCbN2lsfI3Lmct oxT/cvRA8Mz0J9hTZ5WLjky1F7lnoLCUibkBq0h/YGiTTo6xQ8fM4Y59Cz7t3qGhtUxE V6Xg== X-Gm-Message-State: AOJu0YxC4HPjN4AZq39Gc8ADBvrX8xQJ/AtIRJjIsBAkSiVyOnGLkQRQ fZF1uecca83aKPz4Mhnou0iUcBzNp5vTe/pdMXpKhCTnIe9xzoZoePxgoFS9xHxkzy9RHZg7gL+ EcfkyNzqGfaZfZ8Da6wrBsRdXc5H+k0TKF8rqVbSKUcVoheKGdqBQkJ90hAfapEQ/STh6vI3xIO f6kjhEhb8uPufVK83oWLwtu02VSnFlx+qo6w== X-Gm-Gg: Acq92OEV9Muu2EU1TJ+NKPG7a1HiiX4/4y1mN4/iBypUHUoVTNQf/o/PTWfLtp9HAHA XnJb+7ndRoVYbQEub6ja4bEZDiTlYcOQzFbFeQ/yuGn23HEER4zOwt3FGI0jx6pWiUay1l+P8wA 91VXWcM1p2+plqEH6g2ibnP3nnexKgN/rMNUvd3uyrCjmvfzSFkU/5xvqVLHqVuQsiDmeEDx03B /0/oYG64Hfx1CHAy3jZ44qs2Le5b89AF18Viw2dbqhhu684iNED0ojVgGYlopa5ItNqgntyjyux 0B964ztSjtrCx+rMxHsV/xAqBnJfG3hqMKONHTuTNZBtr5IwCPDH3ZhepICt4nc38Omxa+WLbq/ ZdDdJTxsml102p3nDpvKuYQ65oqecIreaV7E43Avo68w= X-Received: by 2002:a05:600c:4712:b0:490:b55c:cec3 with SMTP id 5b1f17b1804b1-490ec4dc8d8mr152467945e9.12.1781463952704; Sun, 14 Jun 2026 12:05:52 -0700 (PDT) X-Received: by 2002:a05:600c:4712:b0:490:b55c:cec3 with SMTP id 5b1f17b1804b1-490ec4dc8d8mr152467365e9.12.1781463952034; Sun, 14 Jun 2026 12:05:52 -0700 (PDT) Date: Sun, 14 Jun 2026 15:05:49 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Yi Liu , Eric Auger , Pierrick Bouvier , Jason Wang , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Paolo Bonzini , Richard Henderson , Fabiano Rosas , Laurent Vivier Subject: [PULL 004/106] intel_iommu: Remove 'x-' prefix from 'x-scalable-mode' and 'x-flts' properties Message-ID: <08dc347e523005cf1e365c3c350a1721b36516e9.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464006882158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan We had 'x-scalable-mode' for more than 5 years and 'x-flts' for more than 1 year, it's fine to remove 'x-' now. This is a prerequisite to enable intel_iommu's scalable mode and first stage translation support in libvirt. Signed-off-by: Zhenzhong Duan Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260513064227.2304854-2-zhenzhong.duan@intel.com> --- docs/devel/vfio-iommufd.rst | 10 +++++----- hw/i386/intel_iommu.c | 8 ++++---- hw/i386/intel_iommu_accel.c | 4 ++-- tests/qtest/intel-iommu-test.c | 2 +- tests/qtest/iommu-intel-test.c | 4 ++-- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/devel/vfio-iommufd.rst b/docs/devel/vfio-iommufd.rst index 78bcdffac7..5755532443 100644 --- a/docs/devel/vfio-iommufd.rst +++ b/docs/devel/vfio-iommufd.rst @@ -153,22 +153,22 @@ RAM discarding for mdev. ``vfio-ap`` and ``vfio-ccw`` devices don't have same issue as their backend devices are always mdev and RAM discarding is force enabled. =20 -Usage with intel_iommu featuring x-flts=3Don +Usage with intel_iommu featuring flts=3Don ------------------------------------------ =20 Only IOMMUFD backed VFIO device is supported when intel_iommu is configured -with x-flts=3Don, for legacy container backed VFIO device, below error sho= ws: +with flts=3Don, for legacy container backed VFIO device, below error shows: =20 .. code-block:: none =20 - qemu-system-x86_64: -device vfio-pci,host=3D0000:02:00.0: vfio 0000:02= :00.0: Failed to set vIOMMU: Need IOMMUFD backend when x-flts=3Don + qemu-system-x86_64: -device vfio-pci,host=3D0000:02:00.0: vfio 0000:02= :00.0: Failed to set vIOMMU: Need IOMMUFD backend when flts=3Don =20 VFIO device under PCI bridge is unsupported, use PCIE bridge if necessary, otherwise below error shows: =20 .. code-block:: none =20 - qemu-system-x86_64: -device vfio-pci,host=3D0000:02:00.0,bus=3Dbridge1= ,iommufd=3Diommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device d= ownstream to a PCI bridge is unsupported when x-flts=3Don + qemu-system-x86_64: -device vfio-pci,host=3D0000:02:00.0,bus=3Dbridge1= ,iommufd=3Diommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device d= ownstream to a PCI bridge is unsupported when flts=3Don =20 If host IOMMU has ERRATA_772415_SPR17, running guest with "intel_iommu=3Do= n,sm_off" is unsupported, kexec or reboot guest from "intel_iommu=3Don,sm_on" to @@ -177,4 +177,4 @@ below if it's not needed by guest: =20 .. code-block:: bash =20 - -device intel-iommu,x-scalable-mode=3Doff + -device intel-iommu,scalable-mode=3Doff diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index b784c5f10a..f09a87b50b 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4200,8 +4200,8 @@ static const Property vtd_properties[] =3D { DEFINE_PROP_UINT8("aw-bits", IntelIOMMUState, aw_bits, VTD_HOST_ADDRESS_WIDTH), DEFINE_PROP_BOOL("caching-mode", IntelIOMMUState, caching_mode, FALSE), - DEFINE_PROP_BOOL("x-scalable-mode", IntelIOMMUState, scalable_mode, FA= LSE), - DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE), + DEFINE_PROP_BOOL("scalable-mode", IntelIOMMUState, scalable_mode, FALS= E), + DEFINE_PROP_BOOL("flts", IntelIOMMUState, fsts, FALSE), DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, fals= e), DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false), DEFINE_PROP_BOOL("svm", IntelIOMMUState, svm, false), @@ -5563,7 +5563,7 @@ static bool vtd_decide_config(IntelIOMMUState *s, Err= or **errp) } =20 if (!s->scalable_mode && s->fsts) { - error_setg(errp, "x-flts is only available in scalable mode"); + error_setg(errp, "flts is only available in scalable mode"); return false; } =20 @@ -5576,7 +5576,7 @@ static bool vtd_decide_config(IntelIOMMUState *s, Err= or **errp) } =20 if (s->fsts && s->aw_bits !=3D VTD_HOST_AW_48BIT) { - error_setg(errp, "Scalable mode(x-flts=3Don): supported value for " + error_setg(errp, "Scalable mode(flts=3Don): supported value for " "aw-bits is: %d", VTD_HOST_AW_48BIT); return false; } diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c index ed3793602b..36dc5ac020 100644 --- a/hw/i386/intel_iommu_accel.c +++ b/hw/i386/intel_iommu_accel.c @@ -26,7 +26,7 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMM= UDevice *vtd_hiod, PCIDevice *pdev =3D bus->devices[vtd_hiod->devfn]; =20 if (!object_dynamic_cast(OBJECT(hiod), TYPE_HOST_IOMMU_DEVICE_IOMMUFD)= ) { - error_setg(errp, "Need IOMMUFD backend when x-flts=3Don"); + error_setg(errp, "Need IOMMUFD backend when flts=3Don"); return false; } =20 @@ -44,7 +44,7 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMM= UDevice *vtd_hiod, =20 if (pci_device_get_iommu_bus_devfn(pdev, &bus, NULL, NULL)) { error_setg(errp, "Host device downstream to a PCI bridge is " - "unsupported when x-flts=3Don"); + "unsupported when flts=3Don"); return false; } =20 diff --git a/tests/qtest/intel-iommu-test.c b/tests/qtest/intel-iommu-test.c index e5cc6acaf0..4f12c56260 100644 --- a/tests/qtest/intel-iommu-test.c +++ b/tests/qtest/intel-iommu-test.c @@ -29,7 +29,7 @@ static void test_intel_iommu_stage_1(void) uint64_t cap, ecap, tmp; QTestState *s; =20 - s =3D qtest_init("-M q35 -device intel-iommu,x-scalable-mode=3Don,x-fl= ts=3Don"); + s =3D qtest_init("-M q35 -device intel-iommu,scalable-mode=3Don,flts= =3Don"); =20 cap =3D vtd_reg_readq(s, DMAR_CAP_REG); g_assert((cap & CAP_STAGE_1_FIXED1) =3D=3D CAP_STAGE_1_FIXED1); diff --git a/tests/qtest/iommu-intel-test.c b/tests/qtest/iommu-intel-test.c index a52c45e298..8125be9e28 100644 --- a/tests/qtest/iommu-intel-test.c +++ b/tests/qtest/iommu-intel-test.c @@ -54,10 +54,10 @@ static const char *qvtd_iommu_args(QVTDTransMode mode) { switch (mode) { case QVTD_TM_SCALABLE_FLT: - return "-device intel-iommu,x-scalable-mode=3Don,x-flts=3Don "; + return "-device intel-iommu,scalable-mode=3Don,flts=3Don "; case QVTD_TM_SCALABLE_PT: case QVTD_TM_SCALABLE_SLT: - return "-device intel-iommu,x-scalable-mode=3Don "; + return "-device intel-iommu,scalable-mode=3Don "; default: return "-device intel-iommu "; } --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464037; cv=none; d=zohomail.com; s=zohoarc; b=BfOMFixHVVExVvzccL9YWr0aRpk7pUUahXz+ZYldilLBU7mKq/WjqjXWG7a0JggbyZTqX6HnRolsSDbLg9dXTQMq5Ksi62h9z05ATrWL8Db7HOYsy2km8/NDwwWJrKAWaPqayPBlx55OEzCnWKXmbT12BhNeG8ifeeGX9wIVdrk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464037; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IQsQD+5yZGlWsX1wL6CZL0yYjKsTMwNhTxRL1382bdw=; b=XsjcH7lUVNc9VGfWU7qKOCeelJ5UUBU8s78gPGc+hRFRcgokRpTr6ssCPUpHHw2yioJehU1dsde829XV6sZG7EJ18EozoMfwRK6RPkJSa+ssD13Lr7R4pgNy7YLVp8jkAZrBsF0fXBh5saWTzuN6Wrc5vjigZt+R46RPFVaOUpk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464037260319.5138899867525; Sun, 14 Jun 2026 12:07:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYq9k-0007OG-0s; Sun, 14 Jun 2026 15:06:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9i-0007O4-7f for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:02 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9g-0001de-Fk for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:01 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-465-3K1LuEaaPGy6FWpDYz3z2Q-1; Sun, 14 Jun 2026 15:05:57 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490d3f03883so22024675e9.1 for ; Sun, 14 Jun 2026 12:05:57 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922031b21dsm176749485e9.6.2026.06.14.12.05.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:05:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463959; 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: in-reply-to:in-reply-to:references:references; bh=IQsQD+5yZGlWsX1wL6CZL0yYjKsTMwNhTxRL1382bdw=; b=fJqJ7yhmemaN1M/3ySXN/qqDBjKSwy1MJvxfVvVJh2E1Hw1i1EZ5g7dl79c8hMeBeumg8F 8Q7zu0NeimrIFLjUlfu4nkWcLxAFvt01D1uRRReNFNYpYtScS2KgIZuy3xjWYxNrHEi+KL qK4x5iFP6n/3CO6a7FXUxpZTi1uvsaY= X-MC-Unique: 3K1LuEaaPGy6FWpDYz3z2Q-1 X-Mimecast-MFC-AGG-ID: 3K1LuEaaPGy6FWpDYz3z2Q_1781463957 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463957; x=1782068757; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=IQsQD+5yZGlWsX1wL6CZL0yYjKsTMwNhTxRL1382bdw=; b=BJLJHHarLx757qOjELp3OnG/NuucMtLztqw/IF43jOkOlSek2Cz00zWgFA5w1TXkZ0 t8pADswTLwmO4lc99T0paajRe1aXkYFlOT1GUDPezTUCPCFNv5aIIeS6dYbSXaazjJpb 5lI+O7hLRIzvszR4Ch7c8u0cbJNkF0SMJ2wpeF/0mcdTsWB+ym35A3E9rwYEPLnMHpSf vo8Yv+O4tuVdVgWNBcW1pWk50U6UuojIdKJ8cygfrR3+3gDktuGVMTg5pBQy8qDOFFiy QeMMI5INkUhr0elz4xg+q67Cun8SFQrvjm+U1F6r9E45Cpb9eG4ROixhf6lIyKNZSLqm mXYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463957; x=1782068757; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IQsQD+5yZGlWsX1wL6CZL0yYjKsTMwNhTxRL1382bdw=; b=EauseccxEb95ctKH3A/3avBRa3PZW4aaKio3gwJgbSO0R++lrB9euTgszaboV4YOmZ 2rAH/j/6iD7sKj4RYjaz3flHiiuWzGwy+qrobcYNpViiT171ry+P70jqUMqRARmdGj96 nUyNbRnRxUOu36UOann34YG1vOkXquswfwtDpCVaT0mwLFN6CewuRNXdoIfdTHF1D0ss 5qX0ZsB9zrwDxil9Ng7xlKAMyPOBOewshJgQTzrArbiNmlX71x872sRj1XqaZ5mDy6xY FH5aqomkzqSU9i8v91wbdtY4LM/pI5ZheodVpwjyWl6e9JB91mTYHTVwNvFRyvx9ybyq DlZA== X-Gm-Message-State: AOJu0Yx2tdrKlKYRohrv8CpJ7R6ghfz3mgEx7bL/FRhQ3sdzxFKL8wYu ef+CSiFe06CzFVb3pDxOD/vOsQ4aXzFClJ1zNP7K9YkhO2esJMHp6Nzr2ElcP7e0MFZR/LG/cw8 4Px484fo9S7/7GxnwY1k3DmD4EYkdRiyLQ/rqxZ1S75gZy2fbPQusgoqbRdeCkbPsRdQctoVqsv FiGDVB7yRhRLV8CbktCTrRfgH+HbCSjDy0Rg== X-Gm-Gg: Acq92OGOrziaNrt0ve8BH9FFN5MVF6TGO6SAae+wFOA5uZ/OIuog1NX71CeUuEFqHRm xJ65EEh4wXe9aiTI+ukWWO0UXxLMmblL47j8Mq5/OEWelnzbbf4cHmyyjH2X21EjDK+uYiYVMXE 57FQR3NT3xDtc/DxRSIxrGzHANG5NkDHdAs3ZjqKgGXp5Pi8QVHMmhMwvvUOHim/oCvRLyG4hoe uRo024yEgmjpeyHyzVdfbho+/UDoEgAzgavofvF2vKYZ03TfX/kPyEOVZ0/1c6Kk2IK69VUu9rZ 04v04YuFakCPfCN/I2qeuUzlIfYswXccXhOmJlw6z+Nfpzx6pPm36Il7uEhR1i0S4r2C4Si3fCE /Pe5v92ofCf45XEQAo8yXmZDa4JPmXPDNa4eNNYGW3ss= X-Received: by 2002:a05:600c:314a:b0:490:da12:f1fa with SMTP id 5b1f17b1804b1-490ec503f0cmr127637705e9.31.1781463956603; Sun, 14 Jun 2026 12:05:56 -0700 (PDT) X-Received: by 2002:a05:600c:314a:b0:490:da12:f1fa with SMTP id 5b1f17b1804b1-490ec503f0cmr127637225e9.31.1781463956000; Sun, 14 Jun 2026 12:05:56 -0700 (PDT) Date: Sun, 14 Jun 2026 15:05:52 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Yi Liu , Eric Auger , Pierrick Bouvier , Jason Wang , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Paolo Bonzini , Richard Henderson , Fabiano Rosas , Laurent Vivier Subject: [PULL 005/106] intel_iommu: Change 'flts' property naming to 'fsts' Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464038483158501 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan Previous patch Removed 'x-' prefix from 'x-flts' property. Opportunistically, this patch does s/flts/fsts for property name in order to better align with newer spec since revision 3.4 which changed terminology from "First-level" to "First-stage". Signed-off-by: Zhenzhong Duan Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260513064227.2304854-3-zhenzhong.duan@intel.com> --- docs/devel/vfio-iommufd.rst | 8 ++++---- hw/i386/intel_iommu.c | 10 +++++----- hw/i386/intel_iommu_accel.c | 6 +++--- tests/qtest/intel-iommu-test.c | 2 +- tests/qtest/iommu-intel-test.c | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/devel/vfio-iommufd.rst b/docs/devel/vfio-iommufd.rst index 5755532443..d5538461ba 100644 --- a/docs/devel/vfio-iommufd.rst +++ b/docs/devel/vfio-iommufd.rst @@ -153,22 +153,22 @@ RAM discarding for mdev. ``vfio-ap`` and ``vfio-ccw`` devices don't have same issue as their backend devices are always mdev and RAM discarding is force enabled. =20 -Usage with intel_iommu featuring flts=3Don +Usage with intel_iommu featuring fsts=3Don ------------------------------------------ =20 Only IOMMUFD backed VFIO device is supported when intel_iommu is configured -with flts=3Don, for legacy container backed VFIO device, below error shows: +with fsts=3Don, for legacy container backed VFIO device, below error shows: =20 .. code-block:: none =20 - qemu-system-x86_64: -device vfio-pci,host=3D0000:02:00.0: vfio 0000:02= :00.0: Failed to set vIOMMU: Need IOMMUFD backend when flts=3Don + qemu-system-x86_64: -device vfio-pci,host=3D0000:02:00.0: vfio 0000:02= :00.0: Failed to set vIOMMU: Need IOMMUFD backend when fsts=3Don =20 VFIO device under PCI bridge is unsupported, use PCIE bridge if necessary, otherwise below error shows: =20 .. code-block:: none =20 - qemu-system-x86_64: -device vfio-pci,host=3D0000:02:00.0,bus=3Dbridge1= ,iommufd=3Diommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device d= ownstream to a PCI bridge is unsupported when flts=3Don + qemu-system-x86_64: -device vfio-pci,host=3D0000:02:00.0,bus=3Dbridge1= ,iommufd=3Diommufd0: vfio 0000:02:00.0: Failed to set vIOMMU: Host device d= ownstream to a PCI bridge is unsupported when fsts=3Don =20 If host IOMMU has ERRATA_772415_SPR17, running guest with "intel_iommu=3Do= n,sm_off" is unsupported, kexec or reboot guest from "intel_iommu=3Don,sm_on" to diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index f09a87b50b..4f8302d200 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4201,7 +4201,7 @@ static const Property vtd_properties[] =3D { VTD_HOST_ADDRESS_WIDTH), DEFINE_PROP_BOOL("caching-mode", IntelIOMMUState, caching_mode, FALSE), DEFINE_PROP_BOOL("scalable-mode", IntelIOMMUState, scalable_mode, FALS= E), - DEFINE_PROP_BOOL("flts", IntelIOMMUState, fsts, FALSE), + DEFINE_PROP_BOOL("fsts", IntelIOMMUState, fsts, FALSE), DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, fals= e), DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false), DEFINE_PROP_BOOL("svm", IntelIOMMUState, svm, false), @@ -5563,20 +5563,20 @@ static bool vtd_decide_config(IntelIOMMUState *s, E= rror **errp) } =20 if (!s->scalable_mode && s->fsts) { - error_setg(errp, "flts is only available in scalable mode"); + error_setg(errp, "fsts is only available in scalable mode"); return false; } =20 if (!s->fsts && s->aw_bits !=3D VTD_HOST_AW_39BIT && s->aw_bits !=3D VTD_HOST_AW_48BIT) { error_setg(errp, "%s: supported values for aw-bits are: %d, %d", - s->scalable_mode ? "Scalable mode(flts=3Doff)" : "Legac= y mode", + s->scalable_mode ? "Scalable mode(fsts=3Doff)" : "Legac= y mode", VTD_HOST_AW_39BIT, VTD_HOST_AW_48BIT); return false; } =20 if (s->fsts && s->aw_bits !=3D VTD_HOST_AW_48BIT) { - error_setg(errp, "Scalable mode(flts=3Don): supported value for " + error_setg(errp, "Scalable mode(fsts=3Don): supported value for " "aw-bits is: %d", VTD_HOST_AW_48BIT); return false; } @@ -5593,7 +5593,7 @@ static bool vtd_decide_config(IntelIOMMUState *s, Err= or **errp) } =20 if (!s->fsts) { - error_setg(errp, "Need to set flts for svm"); + error_setg(errp, "Need to set fsts for svm"); return false; } =20 diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c index 36dc5ac020..18ca5a801a 100644 --- a/hw/i386/intel_iommu_accel.c +++ b/hw/i386/intel_iommu_accel.c @@ -26,7 +26,7 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMM= UDevice *vtd_hiod, PCIDevice *pdev =3D bus->devices[vtd_hiod->devfn]; =20 if (!object_dynamic_cast(OBJECT(hiod), TYPE_HOST_IOMMU_DEVICE_IOMMUFD)= ) { - error_setg(errp, "Need IOMMUFD backend when flts=3Don"); + error_setg(errp, "Need IOMMUFD backend when fsts=3Don"); return false; } =20 @@ -44,7 +44,7 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMM= UDevice *vtd_hiod, =20 if (pci_device_get_iommu_bus_devfn(pdev, &bus, NULL, NULL)) { error_setg(errp, "Host device downstream to a PCI bridge is " - "unsupported when flts=3Don"); + "unsupported when fsts=3Don"); return false; } =20 @@ -105,7 +105,7 @@ static bool vtd_device_attach_iommufd(VTDHostIOMMUDevic= e *vtd_hiod, bool ret; =20 /* - * We can get here only if flts=3Don, the supported PGTT is FST or PT. + * We can get here only if fsts=3Don, the supported PGTT is FST or PT. * Catch invalid PGTT when processing invalidation request to avoid * attaching to wrong hwpt. */ diff --git a/tests/qtest/intel-iommu-test.c b/tests/qtest/intel-iommu-test.c index 4f12c56260..30ee6524df 100644 --- a/tests/qtest/intel-iommu-test.c +++ b/tests/qtest/intel-iommu-test.c @@ -29,7 +29,7 @@ static void test_intel_iommu_stage_1(void) uint64_t cap, ecap, tmp; QTestState *s; =20 - s =3D qtest_init("-M q35 -device intel-iommu,scalable-mode=3Don,flts= =3Don"); + s =3D qtest_init("-M q35 -device intel-iommu,scalable-mode=3Don,fsts= =3Don"); =20 cap =3D vtd_reg_readq(s, DMAR_CAP_REG); g_assert((cap & CAP_STAGE_1_FIXED1) =3D=3D CAP_STAGE_1_FIXED1); diff --git a/tests/qtest/iommu-intel-test.c b/tests/qtest/iommu-intel-test.c index 8125be9e28..703bbfef73 100644 --- a/tests/qtest/iommu-intel-test.c +++ b/tests/qtest/iommu-intel-test.c @@ -54,7 +54,7 @@ static const char *qvtd_iommu_args(QVTDTransMode mode) { switch (mode) { case QVTD_TM_SCALABLE_FLT: - return "-device intel-iommu,scalable-mode=3Don,flts=3Don "; + return "-device intel-iommu,scalable-mode=3Don,fsts=3Don "; case QVTD_TM_SCALABLE_PT: case QVTD_TM_SCALABLE_SLT: return "-device intel-iommu,scalable-mode=3Don "; --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464132; cv=none; d=zohomail.com; s=zohoarc; b=IHJCdB9waU3OyBhgko31KqJ4rxhgIhdzMYz1pC4j5SYgzNzhlg9FCKA4dRXNCBSQJUXpTGsC0CVU/0VeSajxeQvlJFiEYHoSsD2Y3StzMsrahwZRY1VF+QzwsmbahDed7W4GOU0RMwpZdsQAX2t6BXs5s7XOK5dGYdUknVAYoqs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464132; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=n8iQzXqiGfwmNGA+KvR1YcjUM1reh5N0vzFcmIESiSY=; b=lPlJNnQgwDVt2kj2semQjtc8+80+7GqErWcf5PCGwNUJyqBv0AoY5VEpR4BvIk2WWf4WC/6F1b8yb2A22+G5ozkKzBQMyDvnKoVbjIzJD6W2S4Tt0GFdx5OKGnnuIYC9QrQPI8T4rhB7WAlb/6GZVCIhOnXjvkiSkaQBW8naHJY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464132531295.14843382377614; Sun, 14 Jun 2026 12:08:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYq9m-0007Ol-2A; Sun, 14 Jun 2026 15:06:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9k-0007OK-9y for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:04 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9i-0001dk-IJ for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:04 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-122-iTj01rE9Mbe6wuUro-Rqeg-1; Sun, 14 Jun 2026 15:06:00 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-4601daf4c65so1527969f8f.2 for ; Sun, 14 Jun 2026 12:06:00 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f263945sm27335928f8f.8.2026.06.14.12.05.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:05:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463962; 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=n8iQzXqiGfwmNGA+KvR1YcjUM1reh5N0vzFcmIESiSY=; b=ZvOa5lL9V/ISlknltm1A+G/lvrWr5ClQIMGO3OLnwRSIinseT7Zm4YRnbXhOTX61bavHdd yfNf/Uzq+RxK0lqNVK2gMf9Azpiy7xKrxOmgzQjhUz1W062ZkpTbKrxVrCunWIzglI4+cl LfwPhhp17wKPDFRou1h5Ahnp3LWDv58= X-MC-Unique: iTj01rE9Mbe6wuUro-Rqeg-1 X-Mimecast-MFC-AGG-ID: iTj01rE9Mbe6wuUro-Rqeg_1781463959 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463959; x=1782068759; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=n8iQzXqiGfwmNGA+KvR1YcjUM1reh5N0vzFcmIESiSY=; b=VsNufn+4SmiTFRSyLTNiztT8aTKy9W2O0l/AqekERRgN/CGhG/GNAztCrL6LfdGvNp gpuTMVReVWm6c3+MUrjx4o6ZHpwC8iZ2PvDXj2nQDcuM8P9wubOKkeuiWTw7yU1W8y3i 7kFC5ySI/4v1uK1HAjoWFlsRXjbd4ETSL7HpACKVd4AxJ68NM9zv5RBzSl7718eAN/Vu okAguXJHid6hw1efQjc9dwcNxxyjQIhxk9Df4U1ou5/M6v+UPJLzwOuKo/Rs3aU9lZ/c 4QrM03Uz87jSTcMlffAhfSoA6Ri/T48C6Qy1JTBSs/QZAOH/dy0SNXAUePlULpGhQIok LKeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463959; x=1782068759; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=n8iQzXqiGfwmNGA+KvR1YcjUM1reh5N0vzFcmIESiSY=; b=cEFBODhvT2mH+fcthe0yi9rvXZrc3TaNO734eic4biDaO0nm4b1fyPZFEF4OmmfbV/ 0JNb9IzM39dJyGDdQ5amBFwHKwMbXIHUjYft6hXlnzuNUyCIztXMh8zS5Fhv/r8qKpBP 9Ac9glPRF5sHrIrzGF67VT7MaT1cIFS/g1PrPvDWGKdPfv/Uw1DDRtyE/onQ/qRGA7V8 cPbsHBxfkCbWYdnxbJ7n8UZA02Wst0U7fk/keoHoh3igvXeZ0hTBid6Eelk34n0CwAtr KM+b6vdyS2yYAcENHU5nWWTKhYtrB7r0D6JNUYD79Aq3rK8lYohEqy7TcYS179YdD4CH ozdw== X-Gm-Message-State: AOJu0YwSlIer2JmxpBuefc4wg2naJHpBEZiBLpb70UFdLUG6+f0cGkQP K2mK+2vj0j1nL2y+RD7ZGugqc0phMh4bCaJbA9kT2NouMjolPREEs2FS5f+ETBNV1tUFhvaxXPo otr530M5k3TrCWfKvNn9mSPLvgai6lMO618aicKEqeiCuZxqCHWBEqEuQ4DfhfLGAQOL/deEBgi GuFq6bhLJLZrfrCT1v2Ziyj2R8/wMQj7b7HA== X-Gm-Gg: Acq92OFLgjdNC94KSthZjNbtSYxwJgjCNaq1HaWcg531JjX2QL2xRXsxLq4E6EmDiy3 uqef66jj/MJP0LTgf/dZLUeIy4QhY0B/ZIuEUCTSKDx507FuBg5VIOJRfmq56wzAEX9t0Yv7Led S32WHJD0FxQnroA7rtYQXRpIAQ0gBx93jL6VL5NUnxHJpsnI0ipVA4SXmlEwdeIqLd8+OGSF/LB YpOCTDSx/jGlM+lpG3Cvi+nFXamLEgGtic+sYu/uKnwRqKk52sD0o09g0viQqPFrryUmhAv+dnH DOlbTY3J8t0QsTrwX34Sx/k0MJTuKHBA+FEB0dJCYX5sPt/8LJqdHjCItOm8q5SlXYReBSktl0e kiYVCsZIIQDfKR69bH9Q6lBOXCdqvGGJ6FSq0kd6zp3E= X-Received: by 2002:a05:6000:2dc2:b0:460:3b5d:43b6 with SMTP id ffacd0b85a97d-4606dba0623mr16945381f8f.31.1781463959024; Sun, 14 Jun 2026 12:05:59 -0700 (PDT) X-Received: by 2002:a05:6000:2dc2:b0:460:3b5d:43b6 with SMTP id ffacd0b85a97d-4606dba0623mr16945330f8f.31.1781463958442; Sun, 14 Jun 2026 12:05:58 -0700 (PDT) Date: Sun, 14 Jun 2026 15:05:56 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Shameer Kolothum Thodi , Nicolin Chen , Yi Liu , =?utf-8?Q?C=C3=A9dric?= Le Goater , Xudong Hao , Alex Williamson , Eric Auger Subject: [PULL 006/106] vfio/iommufd: Extend attach/detach_hwpt callback implementations with pasid Message-ID: <1179c4dfc04915b13fe5c9158a07dce3470c8b3c.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464134903158500 From: Zhenzhong Duan For attachment with pasid, pasid together with flag VFIO_DEVICE_ATTACH_PASID should be passed in. Define IOMMU_NO_PASID to represent device attachment without pasid same as in kernel. The implementation is similar for detachment. Suggested-by: Shameer Kolothum Thodi Suggested-by: Nicolin Chen Signed-off-by: Zhenzhong Duan Reviewed-by: Yi Liu Reviewed-by: Nicolin Chen Reviewed-by: C=C3=A9dric Le Goater Reviewed-by: Shameer Kolothum Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-2-zhenzhong.duan@intel.com> --- hw/vfio/iommufd.c | 44 +++++++++++++++++++++++++---------------- hw/vfio/trace-events | 4 ++-- include/hw/core/iommu.h | 3 +++ 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index df148a49a7..f86f6f0d7b 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -20,6 +20,7 @@ #include "trace.h" #include "qapi/error.h" #include "system/iommufd.h" +#include "hw/core/iommu.h" #include "hw/core/qdev.h" #include "hw/vfio/vfio-cpr.h" #include "system/reset.h" @@ -305,43 +306,48 @@ out: return ret; } =20 -static int iommufd_cdev_attach_ioas_hwpt(VFIODevice *vbasedev, uint32_t id, - Error **errp) +static int iommufd_cdev_pasid_attach_ioas_hwpt(VFIODevice *vbasedev, + uint32_t pasid, uint32_t id, + Error **errp) { int iommufd =3D vbasedev->iommufd->fd; struct vfio_device_attach_iommufd_pt attach_data =3D { .argsz =3D sizeof(attach_data), - .flags =3D 0, + .flags =3D pasid =3D=3D IOMMU_NO_PASID ? 0 : VFIO_DEVICE_ATTACH_PA= SID, + .pasid =3D pasid, .pt_id =3D id, }; =20 /* Attach device to an IOAS or hwpt within iommufd */ if (ioctl(vbasedev->fd, VFIO_DEVICE_ATTACH_IOMMUFD_PT, &attach_data)) { error_setg_errno(errp, errno, - "[iommufd=3D%d] error attach %s (%d) to id=3D%d", - iommufd, vbasedev->name, vbasedev->fd, id); + "[iommufd=3D%d] error attach %s (%d) pasid %d to = id=3D%d", + iommufd, vbasedev->name, vbasedev->fd, pasid, id); return -errno; } =20 - trace_iommufd_cdev_attach_ioas_hwpt(iommufd, vbasedev->name, - vbasedev->fd, id); + trace_iommufd_cdev_pasid_attach_ioas_hwpt(iommufd, vbasedev->name, + vbasedev->fd, pasid, id); return 0; } =20 -static bool iommufd_cdev_detach_ioas_hwpt(VFIODevice *vbasedev, Error **er= rp) +static bool iommufd_cdev_pasid_detach_ioas_hwpt(VFIODevice *vbasedev, + uint32_t pasid, Error **er= rp) { int iommufd =3D vbasedev->iommufd->fd; struct vfio_device_detach_iommufd_pt detach_data =3D { .argsz =3D sizeof(detach_data), - .flags =3D 0, + .flags =3D pasid =3D=3D IOMMU_NO_PASID ? 0 : VFIO_DEVICE_DETACH_PA= SID, + .pasid =3D pasid, }; =20 if (ioctl(vbasedev->fd, VFIO_DEVICE_DETACH_IOMMUFD_PT, &detach_data)) { - error_setg_errno(errp, errno, "detach %s failed", vbasedev->name); + error_setg_errno(errp, errno, "detach %s pasid %d failed", + vbasedev->name, pasid); return false; } =20 - trace_iommufd_cdev_detach_ioas_hwpt(iommufd, vbasedev->name); + trace_iommufd_cdev_pasid_detach_ioas_hwpt(iommufd, vbasedev->name, pas= id); return true; } =20 @@ -363,7 +369,8 @@ static bool iommufd_cdev_autodomains_get(VFIODevice *vb= asedev, /* Try to find a domain */ QLIST_FOREACH(hwpt, &container->hwpt_list, next) { if (!cpr_is_incoming()) { - ret =3D iommufd_cdev_attach_ioas_hwpt(vbasedev, hwpt->hwpt_id,= errp); + ret =3D iommufd_cdev_pasid_attach_ioas_hwpt(vbasedev, IOMMU_NO= _PASID, + hwpt->hwpt_id, errp); } else if (vbasedev->cpr.hwpt_id =3D=3D hwpt->hwpt_id) { ret =3D 0; } else { @@ -442,7 +449,8 @@ static bool iommufd_cdev_autodomains_get(VFIODevice *vb= asedev, return false; } =20 - ret =3D iommufd_cdev_attach_ioas_hwpt(vbasedev, hwpt_id, errp); + ret =3D iommufd_cdev_pasid_attach_ioas_hwpt(vbasedev, IOMMU_NO_PASID, = hwpt_id, + errp); if (ret) { iommufd_backend_free_id(container->be, hwpt_id); return false; @@ -495,7 +503,8 @@ static bool iommufd_cdev_attach_container(VFIODevice *v= basedev, =20 /* If CPR, we are already attached to ioas_id. */ return cpr_is_incoming() || - !iommufd_cdev_attach_ioas_hwpt(vbasedev, container->ioas_id, er= rp); + !iommufd_cdev_pasid_attach_ioas_hwpt(vbasedev, IOMMU_NO_PASID, + container->ioas_id, errp); } =20 static void iommufd_cdev_detach_container(VFIODevice *vbasedev, @@ -503,7 +512,7 @@ static void iommufd_cdev_detach_container(VFIODevice *v= basedev, { Error *err =3D NULL; =20 - if (!iommufd_cdev_detach_ioas_hwpt(vbasedev, &err)) { + if (!iommufd_cdev_pasid_detach_ioas_hwpt(vbasedev, IOMMU_NO_PASID, &er= r)) { error_report_err(err); } =20 @@ -929,7 +938,8 @@ host_iommu_device_iommufd_vfio_attach_hwpt(HostIOMMUDev= iceIOMMUFD *hiodi, { VFIODevice *vbasedev =3D HOST_IOMMU_DEVICE(hiodi)->agent; =20 - return !iommufd_cdev_attach_ioas_hwpt(vbasedev, hwpt_id, errp); + return !iommufd_cdev_pasid_attach_ioas_hwpt(vbasedev, IOMMU_NO_PASID, + hwpt_id, errp); } =20 static bool @@ -938,7 +948,7 @@ host_iommu_device_iommufd_vfio_detach_hwpt(HostIOMMUDev= iceIOMMUFD *hiodi, { VFIODevice *vbasedev =3D HOST_IOMMU_DEVICE(hiodi)->agent; =20 - return iommufd_cdev_detach_ioas_hwpt(vbasedev, errp); + return iommufd_cdev_pasid_detach_ioas_hwpt(vbasedev, IOMMU_NO_PASID, e= rrp); } =20 static bool hiod_iommufd_vfio_realize(HostIOMMUDevice *hiod, void *opaque, diff --git a/hw/vfio/trace-events b/hw/vfio/trace-events index 2049159015..8dbb477298 100644 --- a/hw/vfio/trace-events +++ b/hw/vfio/trace-events @@ -183,8 +183,8 @@ vfio_vmstate_change_prepare(const char *name, int runni= ng, const char *reason, c =20 iommufd_cdev_connect_and_bind(int iommufd, const char *name, int devfd, in= t devid) " [iommufd=3D%d] Successfully bound device %s (fd=3D%d): output de= vid=3D%d" iommufd_cdev_getfd(const char *dev, int devfd) " %s (fd=3D%d)" -iommufd_cdev_attach_ioas_hwpt(int iommufd, const char *name, int devfd, in= t id) " [iommufd=3D%d] Successfully attached device %s (%d) to id=3D%d" -iommufd_cdev_detach_ioas_hwpt(int iommufd, const char *name) " [iommufd=3D= %d] Successfully detached %s" +iommufd_cdev_pasid_attach_ioas_hwpt(int iommufd, const char *name, int dev= fd, uint32_t pasid, int id) " [iommufd=3D%d] Successfully attached device %= s (%d) pasid %u to id=3D%d" +iommufd_cdev_pasid_detach_ioas_hwpt(int iommufd, const char *name, uint32_= t pasid) " [iommufd=3D%d] Successfully detached %s pasid %u" iommufd_cdev_fail_attach_existing_container(const char *msg) " %s" iommufd_cdev_alloc_ioas(int iommufd, int ioas_id) " [iommufd=3D%d] new IOM= MUFD container with ioasid=3D%d" iommufd_cdev_device_info(char *name, int devfd, int num_irqs, int num_regi= ons, int flags) " %s (%d) num_irqs=3D%d num_regions=3D%d flags=3D%d" diff --git a/include/hw/core/iommu.h b/include/hw/core/iommu.h index cd59a367ce..7fb5c81c9f 100644 --- a/include/hw/core/iommu.h +++ b/include/hw/core/iommu.h @@ -30,4 +30,7 @@ enum host_iommu_quirks { HOST_IOMMU_QUIRK_NESTING_PARENT_BYPASS_RO =3D BIT_ULL(0), }; =20 +/* ABI constant: IOMMU_NO_PASID must always be 0 (keep in sync with kernel= ) */ +#define IOMMU_NO_PASID 0 + #endif /* HW_IOMMU_H */ --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464373; cv=none; d=zohomail.com; s=zohoarc; b=TiqiJyZ4aKMq2L5kp2XZU7+KuAJfc3uomD6NSF8MKVECS6BKNTmfErW8Pf0HGveP1ICpmCr3oTrPp0JykV65JC1S+GEbMDAK62UQ3VQ+DJhDPXdLuPd/Jr2ydqdHi2l7hkw745+NLSAtFnjzf1/OKmLMQ0PuGsHjJBMIVKYnneI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464373; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QgIY+nGCDvSIdDIV3G1LWmuhJbM/v5NYrOFOTkV+U/c=; b=NBvUtcGR/VbP0i1eK8W64BXYzxCWnZofU7ikWFhkQwQqMIBm7P5gHVwZL6cUXNofJMOz116GeYRfudJBznhoK6uIK8PhD5aN/9t6/gVHHnOvJUONOff8+tGPs9XUt3aVIggXPJs9mkRLc2OZHXOM7PwUWRF4bjx0JArbtIT6LoY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464373697425.6915853358913; Sun, 14 Jun 2026 12:12:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYq9p-0007PS-Te; Sun, 14 Jun 2026 15:06:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9o-0007PB-Is for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:08 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9m-0001e8-N7 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:08 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-489-zNcqk0pmOLC7rv3bN-WZyw-1; Sun, 14 Jun 2026 15:06:04 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-45eef10d5ebso1357530f8f.0 for ; Sun, 14 Jun 2026 12:06:04 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f26f4f6sm29121174f8f.16.2026.06.14.12.05.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463965; 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=QgIY+nGCDvSIdDIV3G1LWmuhJbM/v5NYrOFOTkV+U/c=; b=A2RQ3DpE08ba0ss9l1A92GZ60hbFU/iW2Gf/4/BtrdklrX1CBZcJ/Xv8dpbjLteNLdBX7w MsTU44+uiBFQaMzVvgIPCGzk5ZR12AXJEJwy+OhG5pzCGKxiofaevncJIg+OXoHmN2kZFY pWLKjmY/WYc1EGQHjL8sILPqkNAWjXE= X-MC-Unique: zNcqk0pmOLC7rv3bN-WZyw-1 X-Mimecast-MFC-AGG-ID: zNcqk0pmOLC7rv3bN-WZyw_1781463963 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463963; x=1782068763; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=QgIY+nGCDvSIdDIV3G1LWmuhJbM/v5NYrOFOTkV+U/c=; b=abfYzM+OQAqxTwEKaPPgiY+tkXSEP1+HQn8ZMAkSjeMMWPGLiVIn5+dPXVoUMG/5R7 pL8aDoNRnaXETKvW0z1UP1WMtjnJcBsw0g4mQQzM/h5DMpxEZIb+GlAam0om5O/7uyse 2Yzc2lsgUd8pP27qZlaH2sxwqp5m3642+GnJ6WOZC/yl8JcOnt24Y50aKQLilPiQ8zz4 FOnrjT8P027EnAwX038DGJdCZUbP8I7P6FAX2zqpd7XTN058zwn98HjWcB/uuKJr9/t8 QToNMWdUOC/0CLj8flA7LX2OiB9y+LbjLzuv3dVZHLjfSAIahZTC9pKDzXC9ui7FaqXQ ja4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463963; x=1782068763; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=QgIY+nGCDvSIdDIV3G1LWmuhJbM/v5NYrOFOTkV+U/c=; b=IZJ+n8OH1LunN7ubdvEpaZO9f0CrIG4XFQEKgRAaMjP2BdarBETgPDNxTKlal/2Pqp CYfmoMFE4Q74pqR9kfD1s2zZzgVex06ajmja1WKUrbmzDZ3SNqIy/KeaFzjq8iZuRvTQ 30MqEHgXpMdXEImQr6sSIAdgVFmGZcJ09HkdSTmr6KTxHs5JxVJt28lu2mrJSCQzOxpU JDF/xmg9O44IWdORBdZ+ncx/Ervs0fVGl2C4mYfAkqn/vyh924iPL5ovXxwuOhfBMWV5 8NPdZHrjqJEwvK5qJoCrGl5h8F45rgztHXbR2oKylibVrOvDDv+jNmTO7Fj2iTed7B5V R+lA== X-Gm-Message-State: AOJu0YwTcTtbI0fgg5l4i4CvRA8wQiLX6awp7IE2XJ9ZLl907EWoUCVR vVhlEEJqgA/bOwMDENe7G9TM3HOP09w9CGkqvWl/8XwiHQT2x3FEf5uP7fx2tV5Jz4+CVYVxG9Q Gw3LhnndVpTpt4U4KR1b26qhb9tbplDOfvMf2vcdwaAS1l134rEWc8VTR19q7RbBTMw7Ptx1xtI hI9jicVuag5MpO+trWcbFiNlrAd/ufVbVu7w== X-Gm-Gg: Acq92OEcU/cknE5PrVlQFtWkrPr5Sn0bWLjG8uK8zAwf2Yvj2Nri/7bHKj4u11d3FEW +OFTDnQjEwuBKt16YWlX5G4yOdbPPEnMztno1Yap92xSrJPv4zdNfF0icy0Lv3P046dA0pxZMed zEi37zHr9junCP8DQhqqWeyZvwYGyCnsynQccRS5tcKubiLSSzuQKYnJkbWqp2ggjQLgl6BdV28 1UxzuRg6gPHWXXfQxzFT56k1E72ZmZlg7b+k4W3iFTk/vAFjzt8ytsxxxssQLHZyyDk/FNJ75Eo S1v4T/bMMQukfydOC49AMbEREIPRVdNpUPJhZiRbp2lvLlVYSXfi4T+P2Q9RPiDCMBeEJStLxyj rEF161pTYhdv5LJXhFnKW5WRkZ17KuWmcormDOAVdrXM= X-Received: by 2002:a7b:cd0b:0:b0:490:b2c9:e284 with SMTP id 5b1f17b1804b1-49220143bc6mr63060835e9.30.1781463962907; Sun, 14 Jun 2026 12:06:02 -0700 (PDT) X-Received: by 2002:a7b:cd0b:0:b0:490:b2c9:e284 with SMTP id 5b1f17b1804b1-49220143bc6mr63060215e9.30.1781463962231; Sun, 14 Jun 2026 12:06:02 -0700 (PDT) Date: Sun, 14 Jun 2026 15:05:58 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Shameer Kolothum Thodi , Nicolin Chen , Yi Liu , =?utf-8?Q?C=C3=A9dric?= Le Goater , Xudong Hao , Eric Auger , Jason Wang , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Paolo Bonzini , Richard Henderson , Alex Williamson , qemu-arm@nongnu.org Subject: [PULL 007/106] iommufd: Extend attach/detach_hwpt callbacks to support pasid Message-ID: <20fb2f6961f847392bdbc26f85017a73570af0b5.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464375855158500 From: Zhenzhong Duan Same for the two wrappers and their call sites. Suggested-by: Shameer Kolothum Thodi Suggested-by: Nicolin Chen Signed-off-by: Zhenzhong Duan Reviewed-by: Yi Liu Reviewed-by: Nicolin Chen Reviewed-by: C=C3=A9dric Le Goater Reviewed-by: Shameer Kolothum Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-3-zhenzhong.duan@intel.com> --- backends/iommufd.c | 23 ++++++++++++----------- hw/arm/smmuv3-accel.c | 12 ++++++++---- hw/i386/intel_iommu_accel.c | 19 ++++++++++--------- hw/vfio/iommufd.c | 22 +++++++++++----------- include/system/iommufd.h | 18 ++++++++++++------ 5 files changed, 53 insertions(+), 41 deletions(-) diff --git a/backends/iommufd.c b/backends/iommufd.c index 410b044370..cfde6f2b2c 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -539,23 +539,24 @@ bool iommufd_backend_alloc_veventq(IOMMUFDBackend *be= , uint32_t viommu_id, } =20 bool host_iommu_device_iommufd_attach_hwpt(HostIOMMUDeviceIOMMUFD *hiodi, - uint32_t hwpt_id, Error **errp) -{ - HostIOMMUDeviceIOMMUFDClass *hiodic =3D - HOST_IOMMU_DEVICE_IOMMUFD_GET_CLASS(hiodi); - - g_assert(hiodic->attach_hwpt); - return hiodic->attach_hwpt(hiodi, hwpt_id, errp); -} - -bool host_iommu_device_iommufd_detach_hwpt(HostIOMMUDeviceIOMMUFD *hiodi, + uint32_t pasid, uint32_t hwpt_i= d, Error **errp) { HostIOMMUDeviceIOMMUFDClass *hiodic =3D HOST_IOMMU_DEVICE_IOMMUFD_GET_CLASS(hiodi); =20 + g_assert(hiodic->attach_hwpt); + return hiodic->attach_hwpt(hiodi, pasid, hwpt_id, errp); +} + +bool host_iommu_device_iommufd_detach_hwpt(HostIOMMUDeviceIOMMUFD *hiodi, + uint32_t pasid, Error **errp) +{ + HostIOMMUDeviceIOMMUFDClass *hiodic =3D + HOST_IOMMU_DEVICE_IOMMUFD_GET_CLASS(hiodi); + g_assert(hiodic->detach_hwpt); - return hiodic->detach_hwpt(hiodi, errp); + return hiodic->detach_hwpt(hiodi, pasid, errp); } =20 static int hiod_iommufd_get_cap(HostIOMMUDevice *hiod, int cap, Error **er= rp) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index 862be814a0..2947e2e5dc 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -300,7 +300,8 @@ bool smmuv3_accel_install_ste(SMMUv3State *s, SMMUDevic= e *sdev, int sid, return false; } =20 - if (!host_iommu_device_iommufd_attach_hwpt(hiodi, hwpt_id, errp)) { + if (!host_iommu_device_iommufd_attach_hwpt(hiodi, IOMMU_NO_PASID, hwpt= _id, + errp)) { if (s1_hwpt) { iommufd_backend_free_id(hiodi->iommufd, s1_hwpt->hwpt_id); g_free(s1_hwpt); @@ -575,7 +576,8 @@ smmuv3_accel_alloc_viommu(SMMUv3State *s, HostIOMMUDevi= ceIOMMUFD *hiodi, =20 /* Attach a HWPT based on SMMUv3 GBPA.ABORT value */ hwpt_id =3D smmuv3_accel_gbpa_hwpt(s, accel); - if (!host_iommu_device_iommufd_attach_hwpt(hiodi, hwpt_id, errp)) { + if (!host_iommu_device_iommufd_attach_hwpt(hiodi, IOMMU_NO_PASID, hwpt= _id, + errp)) { goto free_veventq; } return true; @@ -665,7 +667,8 @@ static void smmuv3_accel_unset_iommu_device(PCIBus *bus= , void *opaque, hiodi =3D accel_dev->hiodi; accel =3D accel_dev->s_accel; /* Re-attach the default s2 hwpt id */ - if (!host_iommu_device_iommufd_attach_hwpt(hiodi, hiodi->hwpt_id, NULL= )) { + if (!host_iommu_device_iommufd_attach_hwpt(hiodi, IOMMU_NO_PASID, + hiodi->hwpt_id, NULL)) { error_report("Unable to attach the default HW pagetable: hiodi dev= id " "0x%x", hiodi->devid); } @@ -879,7 +882,8 @@ bool smmuv3_accel_attach_gbpa_hwpt(SMMUv3State *s, Erro= r **errp) =20 hwpt_id =3D smmuv3_accel_gbpa_hwpt(s, accel); QLIST_FOREACH(accel_dev, &accel->device_list, next) { - if (!host_iommu_device_iommufd_attach_hwpt(accel_dev->hiodi, hwpt_= id, + if (!host_iommu_device_iommufd_attach_hwpt(accel_dev->hiodi, + IOMMU_NO_PASID, hwpt_id, &local_err)) { error_append_hint(&local_err, "Failed to attach GBPA hwpt %u f= or " "hiodi devid %u", hwpt_id, diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c index 18ca5a801a..3beadab035 100644 --- a/hw/i386/intel_iommu_accel.c +++ b/hw/i386/intel_iommu_accel.c @@ -121,8 +121,9 @@ static bool vtd_device_attach_iommufd(VTDHostIOMMUDevic= e *vtd_hiod, } } =20 - ret =3D host_iommu_device_iommufd_attach_hwpt(hiodi, hwpt_id, errp); - trace_vtd_device_attach_hwpt(hiodi->devid, vtd_as->pasid, hwpt_id, ret= ); + ret =3D host_iommu_device_iommufd_attach_hwpt(hiodi, IOMMU_NO_PASID, h= wpt_id, + errp); + trace_vtd_device_attach_hwpt(hiodi->devid, IOMMU_NO_PASID, hwpt_id, re= t); if (ret) { /* Destroy old fs_hwpt if it's a replacement */ vtd_destroy_old_fs_hwpt(hiodi, vtd_as); @@ -141,22 +142,22 @@ static bool vtd_device_detach_iommufd(VTDHostIOMMUDev= ice *vtd_hiod, { HostIOMMUDeviceIOMMUFD *hiodi =3D HOST_IOMMU_DEVICE_IOMMUFD(vtd_hiod->= hiod); IntelIOMMUState *s =3D vtd_as->iommu_state; - uint32_t pasid =3D vtd_as->pasid; bool ret; =20 if (s->dmar_enabled && s->root_scalable) { - ret =3D host_iommu_device_iommufd_detach_hwpt(hiodi, errp); - trace_vtd_device_detach_hwpt(hiodi->devid, pasid, ret); + ret =3D host_iommu_device_iommufd_detach_hwpt(hiodi, IOMMU_NO_PASI= D, + errp); + trace_vtd_device_detach_hwpt(hiodi->devid, IOMMU_NO_PASID, ret); } else { /* * If DMAR remapping is disabled or guest switches to legacy mode, * we fallback to the default HWPT which contains shadow page tabl= e. * So guest DMA could still work. */ - ret =3D host_iommu_device_iommufd_attach_hwpt(hiodi, hiodi->hwpt_i= d, - errp); - trace_vtd_device_reattach_def_hwpt(hiodi->devid, pasid, hiodi->hwp= t_id, - ret); + ret =3D host_iommu_device_iommufd_attach_hwpt(hiodi, IOMMU_NO_PASI= D, + hiodi->hwpt_id, errp); + trace_vtd_device_reattach_def_hwpt(hiodi->devid, IOMMU_NO_PASID, + hiodi->hwpt_id, ret); } =20 if (ret) { diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index f86f6f0d7b..78e7b6a045 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -934,21 +934,21 @@ static void vfio_iommu_iommufd_class_init(ObjectClass= *klass, const void *data) =20 static bool host_iommu_device_iommufd_vfio_attach_hwpt(HostIOMMUDeviceIOMMUFD *hiodi, - uint32_t hwpt_id, Error **errp) -{ - VFIODevice *vbasedev =3D HOST_IOMMU_DEVICE(hiodi)->agent; - - return !iommufd_cdev_pasid_attach_ioas_hwpt(vbasedev, IOMMU_NO_PASID, - hwpt_id, errp); -} - -static bool -host_iommu_device_iommufd_vfio_detach_hwpt(HostIOMMUDeviceIOMMUFD *hiodi, + uint32_t pasid, uint32_t hwpt_i= d, Error **errp) { VFIODevice *vbasedev =3D HOST_IOMMU_DEVICE(hiodi)->agent; =20 - return iommufd_cdev_pasid_detach_ioas_hwpt(vbasedev, IOMMU_NO_PASID, e= rrp); + return !iommufd_cdev_pasid_attach_ioas_hwpt(vbasedev, pasid, hwpt_id, = errp); +} + +static bool +host_iommu_device_iommufd_vfio_detach_hwpt(HostIOMMUDeviceIOMMUFD *hiodi, + uint32_t pasid, Error **errp) +{ + VFIODevice *vbasedev =3D HOST_IOMMU_DEVICE(hiodi)->agent; + + return iommufd_cdev_pasid_detach_ioas_hwpt(vbasedev, pasid, errp); } =20 static bool hiod_iommufd_vfio_realize(HostIOMMUDevice *hiod, void *opaque, diff --git a/include/system/iommufd.h b/include/system/iommufd.h index 2925d116ac..4257e50f62 100644 --- a/include/system/iommufd.h +++ b/include/system/iommufd.h @@ -138,14 +138,16 @@ struct HostIOMMUDeviceIOMMUFDClass { * * @hiodi: host IOMMU device backed by IOMMUFD backend. * + * @pasid: target pasid of the device to be attached. + * * @hwpt_id: ID of IOMMUFD hardware page table. * * @errp: pass an Error out when attachment fails. * * Returns: true on success, false on failure. */ - bool (*attach_hwpt)(HostIOMMUDeviceIOMMUFD *hiodi, uint32_t hwpt_id, - Error **errp); + bool (*attach_hwpt)(HostIOMMUDeviceIOMMUFD *hiodi, uint32_t pasid, + uint32_t hwpt_id, Error **errp); /** * @detach_hwpt: detach host IOMMU device from IOMMUFD hardware page t= able. * VFIO and VDPA device can have different implementation. @@ -154,15 +156,19 @@ struct HostIOMMUDeviceIOMMUFDClass { * * @hiodi: host IOMMU device backed by IOMMUFD backend. * - * @errp: pass an Error out when attachment fails. + * @pasid: target pasid of the device to be detached. + * + * @errp: pass an Error out when detachment fails. * * Returns: true on success, false on failure. */ - bool (*detach_hwpt)(HostIOMMUDeviceIOMMUFD *hiodi, Error **errp); + bool (*detach_hwpt)(HostIOMMUDeviceIOMMUFD *hiodi, uint32_t pasid, + Error **errp); }; =20 bool host_iommu_device_iommufd_attach_hwpt(HostIOMMUDeviceIOMMUFD *hiodi, - uint32_t hwpt_id, Error **errp); -bool host_iommu_device_iommufd_detach_hwpt(HostIOMMUDeviceIOMMUFD *hiodi, + uint32_t pasid, uint32_t hwpt_i= d, Error **errp); +bool host_iommu_device_iommufd_detach_hwpt(HostIOMMUDeviceIOMMUFD *hiodi, + uint32_t pasid, Error **errp); #endif --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464203; cv=none; d=zohomail.com; s=zohoarc; b=bGyvfCUBvx1WHsZVjHr9fj4y2A3OwSSiibITw45zVgc/FzQZsH905Fa4giTjLB1gGzSjzJqSjPwjQOvlcZf1m0L4SIQSgrI/ZUayBv8i/jhsXg/VV5mX/vlHOoWqxfLFS7yU9M+Fe9wsd9mFkB7y3TVFW5Bwj9IxhnkvH9DhQhY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464203; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=AJr3eu+AuR7FAiU+yG3Gt396W13EZFiJzLPt71reZ20=; b=dZvKY+aJHqYcjMdNlRR2i/8yWeuxg1KT6z1VvbPrNpFZwFGUqrCTIweKdlteY+yiRH+CH1AjqCzR8TeNUjwbNTK21uR1d9AmHSa6XCPoZhFT0S7+53CCxb0OX97Y9p332VHRqcpVqAPB2FN96q57BpnMT0JmVDv3E5xJeXXjZFM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146420347398.89980181056751; Sun, 14 Jun 2026 12:10:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYq9u-0007QO-3Q; Sun, 14 Jun 2026 15:06:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9q-0007Q1-FG for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:11 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9o-0001eI-MB for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:10 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-541-pQtxObrEORSxbGDGuw9C1A-1; Sun, 14 Jun 2026 15:06:06 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490c56e2576so19641215e9.3 for ; Sun, 14 Jun 2026 12:06:06 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220368ef4sm181845835e9.12.2026.06.14.12.06.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463968; 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: in-reply-to:in-reply-to:references:references; bh=AJr3eu+AuR7FAiU+yG3Gt396W13EZFiJzLPt71reZ20=; b=ZSowemuig89Reap86XlWQffasGbkMCHzrCpZyOB1aADsLBDkcC/EfdIiE0RnAoj2zhEns1 Mxx8pumEQq/2knHLK4Rx1xXeIwi3o/N2M8g0Izr2cCakBPu5TKJ9vkPtul3D9ijHEozrCh 4B2OhWdfQPS/WLp9cAxoyjALJ2O+N2c= X-MC-Unique: pQtxObrEORSxbGDGuw9C1A-1 X-Mimecast-MFC-AGG-ID: pQtxObrEORSxbGDGuw9C1A_1781463965 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463965; x=1782068765; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=AJr3eu+AuR7FAiU+yG3Gt396W13EZFiJzLPt71reZ20=; b=KFY0beOSCDqtrlG6ozKWVj3U80PH4jzlH8STC7gXTzo/yr8XGks3Yn/dSOVPldGKZw x63abo+ojqG17w49CYOvbDhlvbYzCZesuy0heo0wTs4l2VL0SZF6yWvQ4DT+C7ZOPN6G 0ZyqBm9SJ9UwvW5fB/7Uv9+RNOHXP6riguJd+VlXxHOUQOiLaEvY4+7foj2U5zoNk44A h6I7/9o7QZ/MzmQfMQFH1jPYVZ5UJ1PoWCdBOTgZeZQHMzrQPHu7v3RnMPfEl+BFNl2A iCU12i1eai/sGXhraD4BM6MyEmspL55aB8yum66l1Z/aISPGmW3XcjdkM80Ka5cnHoIv dQPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463965; x=1782068765; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AJr3eu+AuR7FAiU+yG3Gt396W13EZFiJzLPt71reZ20=; b=Puc8fIRrRAesy3fxB55uyRnWpcpi87UagfeVXAcoJYCIbHWrYJoLc+5bXn8ScASXf/ a6FDXsxymJ/0K1UcodNPHlCpkQudNS7Kjj5kED92hBC4EODsUO4eIO3AXHn4eM4E7f/7 WCoZSCCymiDvlYznQ0k/exSnvUZrvMInkDPfbUqecf+9I+A7Z0MGT4La/8q0oj1mL+8/ rYXuCEQWqt+7fHkkya5m+qEK+5CPuNV0/sO72T2FZU5ICDfy87D0BNbpjaPKNKlGa2Ra kET2KjeV662jI9JrFvu/1hoNI3OsOBk/mDRZstKK3fiqcBUo4hTMJ7qnI9zYKH0acAkI ASWw== X-Gm-Message-State: AOJu0YyjKEgO3gxVdrF2V5C+H0bIaiEqI5oLzkLYICoVigz2SiNW82rk j8tgZLjCqVmktEj9mS1i8R92z9atuFDDSobC1KBDJBabqV9PEGjY9qjHgNSoO1OLg8j3Nl5ta6/ SPjxMyNbVx+6sH0aUX5Xn77rkUzAgFek0LdUPKAN7ZTHmeADxrwxosqiD6wUeMjR+G6Ef+1R6Ku 4OtibbhGlcaSPbkdAgfYM0Q5MICQCgT8Ltrg== X-Gm-Gg: Acq92OHixVwnsDHekP8xV2axq4Dtd05emH8s7AYbmGc21E1PQeZvUbjWZggX9y9NKrD Jb9ySTCe/dR0wIU7ae2Juhft7C/LLIXmnDUZRwa11mn55SQpAJBxgt69XWnKyw09euHO9QX4dpn TWISgkBHS5cKDwhZJuiMK5mrO1BRwjtrQsqtkm5p3/iNYcHttvsLE7VfsWS4mBgI667u9KcXDWa WVPD5pnJtpxlggVN0HS/Jv+UGS3KSJ9XOBOajn77nzjlMqONrzUrh8kE3yAAfZAA1Mee2yjE9e7 vvmhTj5WHnipnsXULiQx/Cy64AXLe7MrcYpCQNyDTq3I9KvYtSyGFHu4Ij6uUykVSaRL+uzkyGJ 5s2DIDSNjCid7oo8RonqtSAYSLIJ/k5OvQbUc/PkrkZo= X-Received: by 2002:a05:600d:8497:10b0:490:be41:87c6 with SMTP id 5b1f17b1804b1-490ec4a8309mr99676505e9.10.1781463965336; Sun, 14 Jun 2026 12:06:05 -0700 (PDT) X-Received: by 2002:a05:600d:8497:10b0:490:be41:87c6 with SMTP id 5b1f17b1804b1-490ec4a8309mr99676105e9.10.1781463964764; Sun, 14 Jun 2026 12:06:04 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:02 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Yi Liu , Xudong Hao , Shameer Kolothum , Alex Williamson , =?utf-8?Q?C=C3=A9dric?= Le Goater , Eric Auger Subject: [PULL 008/106] vfio/iommufd: Create nesting parent hwpt with IOMMU_HWPT_ALLOC_PASID flag Message-ID: <8c12118f7bad41cd544803f23da323d2cb61dae7.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464205249158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan When both device and vIOMMU have PASID enabled, then guest may setup pasid usages such as SVM. VFIO needs to be aware of potential pasid usage and should attach the non-pasid part of pasid-capable device to hwpt flagged with IOMMU_HWPT_ALLOC_PASID. ARM SMMU doesn't support IOMMU_HWPT_ALLOC_PASID, only VTD need it. So we can't check the existing vIOMMU flag VIOMMU_FLAG_PASID_SUPPORTED to determine if set flag IOMMU_HWPT_ALLOC_PASID. Instead, introduce a new flag VIOMMU_FLAG_WANT_PASID_ATTACH which will only be exposed by VTD. Opportunistically add documentation for VIOMMU_FLAG_PASID_SUPPORTED and explain the difference with VIOMMU_FLAG_WANT_PASID_ATTACH. Signed-off-by: Zhenzhong Duan Reviewed-by: Yi Liu Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-4-zhenzhong.duan@intel.com> Reviewed-by: Shameer Kolothum Signed-off-by: Michael S. Tsirkin --- hw/vfio/device.c | 11 +++++++++++ hw/vfio/iommufd.c | 8 +++++++- include/hw/core/iommu.h | 11 +++++++++++ include/hw/vfio/vfio-device.h | 1 + 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/hw/vfio/device.c b/hw/vfio/device.c index ccf14743e9..1a7f8088aa 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -543,6 +543,17 @@ bool vfio_device_get_viommu_flags_want_nesting(VFIODev= ice *vbasedev) return false; } =20 +bool vfio_device_get_viommu_flags_want_pasid_attach(VFIODevice *vbasedev) +{ + VFIOPCIDevice *vdev =3D vfio_pci_from_vfio_device(vbasedev); + + if (vdev) { + return !!(pci_device_get_viommu_flags(PCI_DEVICE(vdev)) & + VIOMMU_FLAG_WANT_PASID_ATTACH); + } + return false; +} + bool vfio_device_get_host_iommu_quirk_bypass_ro(VFIODevice *vbasedev, uint32_t type, void *caps, uint32_t size) diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index 78e7b6a045..0718f029ca 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -364,6 +364,7 @@ static bool iommufd_cdev_autodomains_get(VFIODevice *vb= asedev, VendorCaps caps; VFIOIOASHwpt *hwpt; uint32_t hwpt_id; + uint8_t max_pasid_log2 =3D 0; int ret; =20 /* Try to find a domain */ @@ -409,7 +410,7 @@ static bool iommufd_cdev_autodomains_get(VFIODevice *vb= asedev, */ if (!iommufd_backend_get_device_info(vbasedev->iommufd, vbasedev->devi= d, &type, &caps, sizeof(caps), &hw_c= aps, - NULL, errp)) { + &max_pasid_log2, errp)) { return false; } =20 @@ -437,6 +438,11 @@ static bool iommufd_cdev_autodomains_get(VFIODevice *v= basedev, } } =20 + if (max_pasid_log2 && + vfio_device_get_viommu_flags_want_pasid_attach(vbasedev)) { + flags |=3D IOMMU_HWPT_ALLOC_PASID; + } + if (cpr_is_incoming()) { hwpt_id =3D vbasedev->cpr.hwpt_id; goto skip_alloc; diff --git a/include/hw/core/iommu.h b/include/hw/core/iommu.h index 7fb5c81c9f..fd513d6472 100644 --- a/include/hw/core/iommu.h +++ b/include/hw/core/iommu.h @@ -20,9 +20,20 @@ enum viommu_flags { /* vIOMMU needs nesting parent HWPT to create nested HWPT */ VIOMMU_FLAG_WANT_NESTING_PARENT =3D BIT_ULL(0), + /* + * vIOMMU supports PASID capability, VFIO checks this flag and synthes= ize + * a PASID capability. + */ VIOMMU_FLAG_PASID_SUPPORTED =3D BIT_ULL(1), /* vIOMMU needs dirty tracking on the nesting parent HWPT for nested u= se */ VIOMMU_FLAG_WANT_NESTING_DIRTY_TRACKING =3D BIT_ULL(2), + /* + * vIOMMU requests other sub-system like VFIO to create a HWPT that ca= n be + * used with PASID attachment. VIOMMU_FLAG_PASID_SUPPORTED can't be us= ed + * for this purpose as PASID attachment is needed by VTD IOMMU but not= ARM + * SMMU. + */ + VIOMMU_FLAG_WANT_PASID_ATTACH =3D BIT_ULL(3), }; =20 /* Host IOMMU quirks. Extracted from host IOMMU capabilities */ diff --git a/include/hw/vfio/vfio-device.h b/include/hw/vfio/vfio-device.h index 380a55d6e5..8472420d3f 100644 --- a/include/hw/vfio/vfio-device.h +++ b/include/hw/vfio/vfio-device.h @@ -282,6 +282,7 @@ void vfio_device_unprepare(VFIODevice *vbasedev); =20 bool vfio_device_get_viommu_flags_want_nesting(VFIODevice *vbasedev); bool vfio_device_get_viommu_flags_want_nesting_dirty(VFIODevice *vbasedev); +bool vfio_device_get_viommu_flags_want_pasid_attach(VFIODevice *vbasedev); bool vfio_device_get_host_iommu_quirk_bypass_ro(VFIODevice *vbasedev, uint32_t type, void *caps, uint32_t size); --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464338; cv=none; d=zohomail.com; s=zohoarc; b=UVvWyjm7pWlsfyDgiQ2elYV8IdYAWSIF5rOanjOJTD+6zGxG1PKCSHh6SVoF/ikoQyABa4AWByNEu6l82w1tT6Ib6+rISqrWMlV/FySUS1dCIqSJcAyxn06V3eca+MB3SRwiuTUnEsruzXvCfojuKNRkg7zK4lpAx5YqP4yApN8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464338; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xAhzQJ1J7Y0DMrpDuFRRLukdxYxQFBbtnkS/vGZ9KXY=; b=YyrnTRQDPwdWg0qIzjHyWNJFI7Zmm7WrjDMmxzx5Sy6yLl90zGrxaqAF/pPkPLJodZyJ5n+L5yj7R0AmGvm6be/kFtjpzA2aFQwSjykZPEAkk7yyhpkwO5k5eVkLZkjIFWHk+/4QjDaExzANoEJ1J8WpWZB0ehMMI6KnWIMmVIo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17814643384801009.9789924922284; Sun, 14 Jun 2026 12:12:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYq9w-0007R1-Qi; Sun, 14 Jun 2026 15:06:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9v-0007Qj-LH for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9u-0001ew-5N for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:15 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-346-RL17JjA_NR-IYTn5-GWw4g-1; Sun, 14 Jun 2026 15:06:09 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490a060eb84so19270865e9.0 for ; Sun, 14 Jun 2026 12:06:08 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f26f3basm25831576f8f.12.2026.06.14.12.06.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463973; 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: in-reply-to:in-reply-to:references:references; bh=xAhzQJ1J7Y0DMrpDuFRRLukdxYxQFBbtnkS/vGZ9KXY=; b=OSzMLwYpmDnzzeB9nY+K3JhTO57Rh6ScJPIUuVT3QnMajOW+vPGfluTl0G+8T3uLbnrTm1 lBnE3JJ/eY5P3li8hqc9QlBO/YUBvoOrkFJEIf8S2i5UlANL0YLjqayfpikH0rOfe7pUMq sD5LyoTcE3xw+sSH9/ZgX3ZaRY9kGCs= X-MC-Unique: RL17JjA_NR-IYTn5-GWw4g-1 X-Mimecast-MFC-AGG-ID: RL17JjA_NR-IYTn5-GWw4g_1781463968 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463968; x=1782068768; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=xAhzQJ1J7Y0DMrpDuFRRLukdxYxQFBbtnkS/vGZ9KXY=; b=BktpXsSHaHS7KFwwscj0yeGABJAMDoUa77ofi50PrpDb7rbpCE/lXNoLEXHxnT/Gc9 f3div471RcUCTKDA/d47qmdRvUvAbIejYQ8EyIsptcSdS9j9B9TPnzqCE+1WUrmqI11g ebLanGOWZRpk/sDlCRyvHenUW4rKu4w4qkjARJXF7qz4xol0UtpVZkQcmxWAxUnI+ytl OY6kPmzwBqvyoZDfZ7sDpLi0ZNgokPlbtaSF1SdmNC56aK42K8FLyixDoVxBBsAHJHuu G6Hh4a8+iCoBs1bafeLbuMgw5GvvdGgO0Z5N5fneL//K0PC0Yymx6GhvQPW9fSwSzK5y xDwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463968; x=1782068768; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xAhzQJ1J7Y0DMrpDuFRRLukdxYxQFBbtnkS/vGZ9KXY=; b=mEZFjqgSIeIRM/aG+dQz1JqzjZXYgzNEOWikmG9cgNx2iYFls2xYSB6uKVOOb9XISA Xjt6EH7LOqVZ2uOA8QZt+ErtzPrUzonyigTVkYDbc2fFuMV0WD/mH3jAPFXe7Oix31oV oPFR26geYlCmbimAVs/El5lr9tRHqx9TaN5Hs3yThPODb5oUF13UzP98V61xubwXwMHt 7NkKQZk47XnrMlo9DAxyrrWyZv5TzPzrvEDv9d2lbX1pk99RBJj5iLQc3tmLWTYvE/1e zai/TCifZkFoeimawXMQuVPVfQHrW04A6FoFi9zhykCsb7cVfQbnPpQywWLgQ7WF1H/S Pegg== X-Gm-Message-State: AOJu0YyQj3FXCUi62cZoqflXI8RxNji9Ymb6yTEYCNzYLHLr2C0eReGo I00drr9qaMxT5pge/8/S+MVpZR8Px3XKLbKNA8+ZXw7MAH7p+pA5pkELpXulN10HBASkvEve8WW 5G9OveNrgfjFpUDOcT2RVEDuB8os35PDy1yDrDroGnyZoQDqQMD28sWHL3/DEhmRS0zTKKGyqcR e1tLt9EjmTRgWt4nmgnnnh1JEl4v3lN4XEag== X-Gm-Gg: Acq92OHT8BlUymaHEev8xvH25tgGffCSkFjsO9A6YUSZJUpAcsOF6tCzTQ2VsFyElQ9 fEK8OPTSmnN0VPRyvHRTJdEQ+6GU0XVz7W8aCP3IV30gfoWsITcygt6zrTQ/QjtVtjBocylyTvO fcP7Jqe+HWtdbD6+xwkIyYlB7eu9hkZOnobFb0WXSd7/5E7cMqVoNGSS6yJPAerDYAQ8QNMbxhU 9G8jE36QoEK6ylteR5G2rSeLEPCIMyvyN/IPwNk8uAJzuCeqCdNye17JRsUOnrJ6JqUzoahvzR1 qieP1He2UXUwY0l+j1vnZ9jBpFJW4fnrRzK1MCk5BMa9Cs7O9h4vFcPGzrryvXqyvNH2KuDtaZd valE+BkKL+lExUlrGXFeqzcmu39PxsPBcHdu5PiJ7jRc= X-Received: by 2002:a05:600c:e556:20b0:490:b9c3:6c58 with SMTP id 5b1f17b1804b1-490ec4fe879mr102011885e9.16.1781463967618; Sun, 14 Jun 2026 12:06:07 -0700 (PDT) X-Received: by 2002:a05:600c:e556:20b0:490:b9c3:6c58 with SMTP id 5b1f17b1804b1-490ec4fe879mr102011545e9.16.1781463967109; Sun, 14 Jun 2026 12:06:07 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:04 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Clement Mathieu--Drif , Yi Liu , Xudong Hao , Jason Wang , Paolo Bonzini , Richard Henderson Subject: [PULL 009/106] intel_iommu: Create the nested hwpt with IOMMU_HWPT_ALLOC_PASID flag Message-ID: <76330797b0eab06ebe2cbf5c8a21953da71ba4ba.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464339768158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan When pasid is enabled, any hwpt attached to non-PASID or PASID should be IOMMU_HWPT_ALLOC_PASID flagged, or else attachment fails. Change vtd_destroy_old_fs_hwpt() to pass in 'VTDHostIOMMUDevice *' for naming consistency. Signed-off-by: Zhenzhong Duan Reviewed-by: Clement Mathieu--Drif Reviewed-by: Yi Liu Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-5-zhenzhong.duan@intel.com> --- hw/i386/intel_iommu_accel.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c index 3beadab035..6a12cdac10 100644 --- a/hw/i386/intel_iommu_accel.c +++ b/hw/i386/intel_iommu_accel.c @@ -69,11 +69,13 @@ VTDHostIOMMUDevice *vtd_find_hiod_iommufd(VTDAddressSpa= ce *as) return NULL; } =20 -static bool vtd_create_fs_hwpt(HostIOMMUDeviceIOMMUFD *hiodi, +static bool vtd_create_fs_hwpt(VTDHostIOMMUDevice *vtd_hiod, VTDPASIDEntry *pe, uint32_t *fs_hwpt_id, Error **errp) { + HostIOMMUDeviceIOMMUFD *hiodi =3D HOST_IOMMU_DEVICE_IOMMUFD(vtd_hiod->= hiod); struct iommu_hwpt_vtd_s1 vtd =3D {}; + uint32_t flags =3D vtd_hiod->iommu_state->pasid ? IOMMU_HWPT_ALLOC_PAS= ID : 0; =20 vtd.flags =3D (VTD_SM_PASID_ENTRY_SRE(pe) ? IOMMU_VTD_S1_SRE : 0) | (VTD_SM_PASID_ENTRY_WPE(pe) ? IOMMU_VTD_S1_WPE : 0) | @@ -82,13 +84,16 @@ static bool vtd_create_fs_hwpt(HostIOMMUDeviceIOMMUFD *= hiodi, vtd.pgtbl_addr =3D (uint64_t)vtd_pe_get_fspt_base(pe); =20 return iommufd_backend_alloc_hwpt(hiodi->iommufd, hiodi->devid, - hiodi->hwpt_id, 0, IOMMU_HWPT_DATA_V= TD_S1, - sizeof(vtd), &vtd, fs_hwpt_id, errp); + hiodi->hwpt_id, flags, + IOMMU_HWPT_DATA_VTD_S1, sizeof(vtd),= &vtd, + fs_hwpt_id, errp); } =20 -static void vtd_destroy_old_fs_hwpt(HostIOMMUDeviceIOMMUFD *hiodi, +static void vtd_destroy_old_fs_hwpt(VTDHostIOMMUDevice *vtd_hiod, VTDAddressSpace *vtd_as) { + HostIOMMUDeviceIOMMUFD *hiodi =3D HOST_IOMMU_DEVICE_IOMMUFD(vtd_hiod->= hiod); + if (!vtd_as->fs_hwpt_id) { return; } @@ -116,7 +121,7 @@ static bool vtd_device_attach_iommufd(VTDHostIOMMUDevic= e *vtd_hiod, } =20 if (vtd_pe_pgtt_is_fst(pe)) { - if (!vtd_create_fs_hwpt(hiodi, pe, &hwpt_id, errp)) { + if (!vtd_create_fs_hwpt(vtd_hiod, pe, &hwpt_id, errp)) { return false; } } @@ -126,7 +131,7 @@ static bool vtd_device_attach_iommufd(VTDHostIOMMUDevic= e *vtd_hiod, trace_vtd_device_attach_hwpt(hiodi->devid, IOMMU_NO_PASID, hwpt_id, re= t); if (ret) { /* Destroy old fs_hwpt if it's a replacement */ - vtd_destroy_old_fs_hwpt(hiodi, vtd_as); + vtd_destroy_old_fs_hwpt(vtd_hiod, vtd_as); if (vtd_pe_pgtt_is_fst(pe)) { vtd_as->fs_hwpt_id =3D hwpt_id; } @@ -161,7 +166,7 @@ static bool vtd_device_detach_iommufd(VTDHostIOMMUDevic= e *vtd_hiod, } =20 if (ret) { - vtd_destroy_old_fs_hwpt(hiodi, vtd_as); + vtd_destroy_old_fs_hwpt(vtd_hiod, vtd_as); } =20 return ret; --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464529; cv=none; d=zohomail.com; s=zohoarc; b=g2jZxAqAOrDu2uWsa15uituF2Lfo5DeBLw6sKH+QvnqzfZV13i2qCzs7V8WaM82IUcrtFcOQ4y8oirdXB8mu6uu9c48bgpGRmx7awZwZTneT87aU1d3QMa7/9tK+ff2o5eAbRfPijEnZSWF7VYjOtXekaXdCIXqRCr6IrxkK90s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464529; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lXWGdkA/WVBctiP+cyHvdFhlErb0XX81I00BUPSdjog=; b=mT7odh1gPNqBLFQsJhDBUgLhKVMGimucRrmEPct0hVn+lVWXcfTLj3nBUbly9cmR+5DInXEeV0zQXi7fitZaV3lurVhjLOvY2faB1Lt2wF5xWdharCrlvHlaUrVzeOzia6SpBxT49TpcqOh0c8M8d81FnAMLaOybVppkWroQJM8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146452901144.148577839299264; Sun, 14 Jun 2026 12:15:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYq9x-0007RA-6I; Sun, 14 Jun 2026 15:06:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9v-0007Ql-P2 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9u-0001eu-4w for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:15 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-124-pUjGX30OPZWH8zB3Op1csw-1; Sun, 14 Jun 2026 15:06:11 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-45ef3aeeb41so1608001f8f.1 for ; Sun, 14 Jun 2026 12:06:11 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f26392esm26624344f8f.3.2026.06.14.12.06.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463973; 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: in-reply-to:in-reply-to:references:references; bh=lXWGdkA/WVBctiP+cyHvdFhlErb0XX81I00BUPSdjog=; b=UlkwQYN97UVHavSkzi4piLDcVbQrPoG8SEytZ3Y6VldhfiL3OUF09wqEV89NI3gd/DGx4J 0pRj+sE5vyOq4fCS3Qcsnjr2VFwomiULrjOB8duYluq6IMPzkw6D1fxXTFoUNboM6C6IaW GJPY4K5oDpid2/iVnNRPLce3XB3KPJ8= X-MC-Unique: pUjGX30OPZWH8zB3Op1csw-1 X-Mimecast-MFC-AGG-ID: pUjGX30OPZWH8zB3Op1csw_1781463971 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463970; x=1782068770; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=lXWGdkA/WVBctiP+cyHvdFhlErb0XX81I00BUPSdjog=; b=M01a7VTpT8nZUzCm0bPzYpjQasKNjf4wn6dUnlQg/d7FzaV996OWhVri5HPAhCssM3 T2GeRAMkAtlPTLjWILHyk/4XUYeLFzetSzM9urNywv+os6lNBaXcN6zebsKqq59G/ntL fiRAZQYaBQbBbIUD4VB2tP+J4SzGkD9qxmOcRQ99+5CUKiXuj9gUWNKIqs/2xtXadDJB aSODPPA1IjZJRsgwuOOwCNrAEPDOwAavAcyGrC+abWMCeVnAUJ8mbMZR+PaNGaMYATqe 94XD/U7wCvw0AUzmmGCX+ypCHWIaP3/KGU/gLv4XsFC5Qmx6nj8sTf9HM0W/QLOak2kX QfHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463970; x=1782068770; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lXWGdkA/WVBctiP+cyHvdFhlErb0XX81I00BUPSdjog=; b=gZ7G/EGA8zaNs91QAAqWrm7zT3o6YWOkDBGSVFevp00a02YoUpXge5n6chkgREw3h1 T0IIwG4KO50uNBa1FB1cMxCsmn+wAKTUd2yFvXLDCSvozGG2XNjlxZbmEp62qjZ94lRZ IJYriy5b1IVKV/HMcG2JhOwbNs9LrLLYShep+SRxVDcJxqv0+wOPrIQVRqgIbflZrA5U 7gKExQClc7DqfSfDB66HMMiED9fgWguQRdQpBKQKHUh3ckMzkIbY1eiHQDY1hDxWlm6x ah+yLaY8sgY8UqB8a0d2JkKvzrbQWnK6eSxNjaTRLY5D8z3Pag5fJ30FuJqNEp0noeGJ HtzQ== X-Gm-Message-State: AOJu0YxmXoEn186EvxZrNS0hUaVVGmK3F1R0zwNyKgj32eL/WlbB94Yj EhSe+6Y9w4YMbws+lOVL4/kwtp2JDXl3129uEF8mSxvLWFsdczjLvHi3wjgstwqztWYe0yu7uRI l8D/t3IPSiwwkHozTpoinM2lElGXeArhbjK+rouN1Ow0s5Ox+zRhFsRHtC7laGRQ5QNh0QriGYE 3nSkQ3HEaVal7PGvwCp9nenHpg8qW60qG/lg== X-Gm-Gg: Acq92OEVC47HeYgyeviQ2tLYQvx9KxSuKFgbfH/S58aaJnG3h3jlsHQzI+6d6+2NLUq js2IR7p5zt/47ZUKeeuSKaOtV9GgGERsbjkDWG/KBz8z3/hiB+vfZ6BmPsUfJRxTBmZbrv+UdWi SjePHwC9QlWsJOwEWrohFkEGfbHTj9NPSMw44R8AGZ1FUNvlmD/4RRPgSgBoVXFPcig0p53px1i Y3Bw+lq4R2/eIakb0Q4Cuq/TZ0Ao+szBkzRoRlYYEgndtsYKcqigBw+mFyA8XCY2FySaNTG1BNx U3MkO9eMvkxLpI8jqsGbQCtc21LIIn7KxPPgeePI5CYSDxhm1TZRxDs8P0AEHduu/nMEvZRiefy sOM/Yn1hfPdTAMMZy0XjdLobMNfQJslu9IEoYYYWzoxw= X-Received: by 2002:a05:6000:2087:b0:44a:2cb3:b633 with SMTP id ffacd0b85a97d-4606db8c617mr16323624f8f.12.1781463970417; Sun, 14 Jun 2026 12:06:10 -0700 (PDT) X-Received: by 2002:a05:6000:2087:b0:44a:2cb3:b633 with SMTP id ffacd0b85a97d-4606db8c617mr16323543f8f.12.1781463969389; Sun, 14 Jun 2026 12:06:09 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:07 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Clement Mathieu--Drif , Yi Liu , Xudong Hao , Jason Wang , Paolo Bonzini , Richard Henderson Subject: [PULL 010/106] intel_iommu: Rename pasid property to "pasid-bits" and define it as type uint8 Message-ID: <312f3ef8adcf008d3992012bcdc91ce26b6d9186.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464530496158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan 'x-pasid-mode' is a bool property, we need an extra 'pss' property to represent PASID size supported. Because there is no any device in QEMU supporting pasid capability yet, no guest could use the pasid feature until now, 'x-pasid-mode' takes no effect. So instead of an extra 'pss' property we can use a single property of uint8 type and named 'pasid-bits' to represent if pasid is supported and the PASID bits size. A value of N > 0 means pasid is supported and N - 1 is the value in PSS field in ECAP register. PASID bits size should also be no more than 20 bits according to PCI spec. Signed-off-by: Zhenzhong Duan Reviewed-by: Clement Mathieu--Drif Reviewed-by: Yi Liu Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-6-zhenzhong.duan@intel.com> --- hw/i386/intel_iommu.c | 11 +++++++++-- hw/i386/intel_iommu_internal.h | 2 +- include/hw/i386/intel_iommu.h | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 4f8302d200..b22feb0301 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4203,7 +4203,7 @@ static const Property vtd_properties[] =3D { DEFINE_PROP_BOOL("scalable-mode", IntelIOMMUState, scalable_mode, FALS= E), DEFINE_PROP_BOOL("fsts", IntelIOMMUState, fsts, FALSE), DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, fals= e), - DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false), + DEFINE_PROP_UINT8("pasid-bits", IntelIOMMUState, pasid, 0), DEFINE_PROP_BOOL("svm", IntelIOMMUState, svm, false), DEFINE_PROP_BOOL("stale-tm", IntelIOMMUState, stale_tm, false), DEFINE_PROP_BOOL("fs1gp", IntelIOMMUState, fs1gp, true), @@ -5045,7 +5045,8 @@ static void vtd_cap_init(IntelIOMMUState *s) } =20 if (s->pasid) { - s->ecap |=3D VTD_ECAP_PASID | VTD_ECAP_PSS; + VTD_ECAP_SET_PSS(s, s->pasid - 1); + s->ecap |=3D VTD_ECAP_PASID; } } =20 @@ -5586,6 +5587,12 @@ static bool vtd_decide_config(IntelIOMMUState *s, Er= ror **errp) return false; } =20 + if (s->pasid > PCI_EXT_CAP_PASID_MAX_WIDTH) { + error_setg(errp, "PASID width %d exceeds Max PASID Width %d allowe= d " + "in PCI spec", s->pasid, PCI_EXT_CAP_PASID_MAX_WIDTH); + return false; + } + if (s->svm) { if (!x86_iommu->dt_supported) { error_setg(errp, "Need to set device IOTLB for svm"); diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index 11a53aa369..db4f186a3e 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -195,7 +195,7 @@ #define VTD_ECAP_MHMV (15ULL << 20) #define VTD_ECAP_SRS (1ULL << 31) #define VTD_ECAP_NWFS (1ULL << 33) -#define VTD_ECAP_PSS (7ULL << 35) /* limit: MemTxAttrs::pid= */ +#define VTD_ECAP_SET_PSS(x, v) ((x)->ecap =3D deposit64((x)->ecap, 35= , 5, v)) #define VTD_ECAP_PASID (1ULL << 40) #define VTD_ECAP_PDS (1ULL << 42) #define VTD_ECAP_SMTS (1ULL << 43) diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.h index e44ce31841..95c76015e4 100644 --- a/include/hw/i386/intel_iommu.h +++ b/include/hw/i386/intel_iommu.h @@ -314,7 +314,7 @@ struct IntelIOMMUState { bool intr_eime; /* Extended interrupt mode enabled */ OnOffAuto intr_eim; /* Toggle for EIM cabability */ uint8_t aw_bits; /* Host/IOVA address width (in bits) */ - bool pasid; /* Whether to support PASID */ + uint8_t pasid; /* PASID supported in bits, 0 if not */ bool fs1gp; /* First Stage 1-GByte Page Support */ =20 /* Transient Mapping, Reserved(0) since VTD spec revision 3.2 */ --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464021; cv=none; d=zohomail.com; s=zohoarc; b=Hs6tZ/rNglNIPouct2JuFzg7Tns4tzzmW4wuB6HXgMZjASiEzlIK8HgYSDFaS6NyptB+8G4BidyrFKUYNOJO0VeEvdxoyeo5JTdusUMdiX/XqHKgrfC3NKGtDceSeOvrcXSItjQ8/5+8S7uYHcb7NaNVSJ3uKuz2aA+q50XJHx0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464021; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=l7ykQEO4cm1Z2dMhNA5jiGYbkk53qAUW66mFa/lcCaU=; b=nwgt0a8+0z7WceHx5Txgzx34F/V8cItSR6pp6NVCWM7NKLpWf4NE/AbAMmo/j7P1AC6qBCR1lmuEjtcym0kMJDXZeCfblkZXGJHQYjuWhXaZDeRMt6QAbMA8eHXj9L7h5dB33qDwHvwXGtpb3WzwHVoZG+H0eROWpeRcc88j3QU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464021446836.0691209732695; Sun, 14 Jun 2026 12:07:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYq9y-0007Rf-GN; Sun, 14 Jun 2026 15:06:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9w-0007R2-QX for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:16 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9v-0001f5-B3 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:16 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-581-D4luajW0O8qVddhRajfTTw-1; Sun, 14 Jun 2026 15:06:13 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4600c8cb13aso1820279f8f.1 for ; Sun, 14 Jun 2026 12:06:13 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2b0d28sm27629646f8f.20.2026.06.14.12.06.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463974; 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: in-reply-to:in-reply-to:references:references; bh=l7ykQEO4cm1Z2dMhNA5jiGYbkk53qAUW66mFa/lcCaU=; b=jTpdu8d4k5CgMb6wry6BIKd0/+keWi34QHVvAoKb0EEguF7nFpswyKr4nDhlxk2ROY++Zt tnuWrBV957WSYDaE+AsVvpnfp1z/PIz53GIp29p1TVdRX/lD3hP0h9eGJFhxYMD/ckMOpR 5j1juQwHRg6MZ1e4E4nGFjUX7UuSK9Q= X-MC-Unique: D4luajW0O8qVddhRajfTTw-1 X-Mimecast-MFC-AGG-ID: D4luajW0O8qVddhRajfTTw_1781463972 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463972; x=1782068772; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=l7ykQEO4cm1Z2dMhNA5jiGYbkk53qAUW66mFa/lcCaU=; b=bADKhcnZ7WEBH+GkpFgYfcxRenlukELFNM0vGDq0NMnfCt9OekaZDX5zZKqOZ2hrpW yEn3J/nSTvPIceSGV5HK5bWD5r8Bup5Apvr3eOH0DIBGcAtB27/R8x1jWp8xjhe3daVi alFUtIQtH/e7M4G9DANHSKvyJ9O6r2COw3YhDtRJPd1qH151AbYwL4amy1qLtPQWiLeU N4260TWhZcg7glVosheNBhOUgBEWpUKxgnjqsbcahIgselw8YzZ3DsW5IcCRwKyMblox C3DBQbUf9SHMHpNwbODypLYxA4SZQBV5fl/LKchfZdtJk3jdS6YVeio/gZRnd233vW0V YoIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463972; x=1782068772; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l7ykQEO4cm1Z2dMhNA5jiGYbkk53qAUW66mFa/lcCaU=; b=cywojqOm/XMLFbAeJyDMcKRpiVX48OX6djMyoxEsrXVmeb52xa+DBTJsmhO0cbED8X CwsrlJBsL5IpOU/pJhsEVHxgY2HEHk+EpXDIB+kSBstPdQBav6Z13nH4JUNQb0xL5/rC XtTTcT0/1Ibbjsxl5cDrjjn3NvMzTV1h3va3+OSsl+0zAJg6f/D84WEs/iIl5YTgYT8+ jdGdVpol2787q99WwYuUtT5zp/xIedMedsMgC6PNiKt244QbSYle5cA9wt4/y1PO0WXj iI2H7vDAFhPVTfRuMVk5FhS78sQ6u+VL1PM1g8kWf8ZzXdb6SipWUjadpv+HJjEesuTs 5+zg== X-Gm-Message-State: AOJu0Yy0+4qnbZf3MXXQipZliJ6N6r4VSxf/jU4MlrGne/j6OjSNpb99 fa0OWlyXgXBd1kK8b9jrd9jEpj1AbvcrJvI3vIcgYaF4tCWeHmL2gwOBFesEri8YkEILZINYjzS VZGfa8UcNNYGQWhcb+TVFAOxXMwU5qtFQJrnjMFwehryQDu1qQH6bGMc6dMl5AM1Bmuf4bPkLyv ENOXpkXnRWuqnMHfV8AXDWxeYxhiFsqkvTSA== X-Gm-Gg: Acq92OGlLYhlMugY67S6s1pHZfvDsna1w2Kw2scFe7xKqUPdyODc2ztLNX0lGV9REGh SQqQpQpEpQp/k6j/XZ2ShwLDUpzPHX1UyHkiPdppLFl2d0qY3HNNaIbSYzL0t+AQDdlkOTAeenI 6ktp2iWhkBM/P1J5jLj9lVX8ITJPZ6+5aGsIp8XkmuG7gPXefwiQHAYH/yfhKTN4aOVhREWuWuW ynWkJmZVzMALkNHP7Og6N4vJslaosEwg1TGJImObsFYMV3pH4ARiQLfoCLZHmJ4/hsDs1PsrnPV P7p5y+QjI3jhBndLTFfe1hFeCVWpd3wbUmRsL4QxarhPHMPYt146MjpmaGTp1+X3tUxul5HpHR3 KfvYNrXt1JUUHwSs6b2df3s0UwSDbpK9gB0EnT6V33iE= X-Received: by 2002:a5d:5f56:0:b0:460:1e9d:31a5 with SMTP id ffacd0b85a97d-4606dbad7femr16916396f8f.35.1781463972206; Sun, 14 Jun 2026 12:06:12 -0700 (PDT) X-Received: by 2002:a5d:5f56:0:b0:460:1e9d:31a5 with SMTP id ffacd0b85a97d-4606dbad7femr16916343f8f.35.1781463971628; Sun, 14 Jun 2026 12:06:11 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:09 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Yi Liu , Clement Mathieu--Drif , Jason Wang , Paolo Bonzini , Richard Henderson Subject: [PULL 011/106] intel_iommu: make vtd_dev_get_pe_from_pasid() more generic Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464023414158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan Refactor vtd_dev_get_pe_from_pasid() to take individual parameters (IntelIOMMUState, PCIBus, devfn, pasid) instead of VTDAddressSpace. This makes the function more reusable and prepares it for export to be used in the acceleration path. Remove inline qualifier as the function will be exported in a subsequent patch. No functional changes intended. Suggested-by: Yi Liu Signed-off-by: Zhenzhong Duan Reviewed-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-7-zhenzhong.duan@intel.com> Reviewed-by: Clement Mathieu--Drif Signed-off-by: Michael S. Tsirkin --- hw/i386/intel_iommu.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index b22feb0301..632df21034 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -3113,10 +3113,10 @@ static bool vtd_process_piotlb_desc(IntelIOMMUState= *s, return true; } =20 -static inline int vtd_dev_get_pe_from_pasid(VTDAddressSpace *vtd_as, - VTDPASIDEntry *pe) +static int vtd_dev_get_pe_from_pasid(IntelIOMMUState *s, PCIBus *bus, + uint8_t devfn, uint32_t pasid, + VTDPASIDEntry *pe) { - IntelIOMMUState *s =3D vtd_as->iommu_state; VTDContextEntry ce; int ret; =20 @@ -3124,13 +3124,12 @@ static inline int vtd_dev_get_pe_from_pasid(VTDAddr= essSpace *vtd_as, return -VTD_FR_RTADDR_INV_TTM; } =20 - ret =3D vtd_dev_to_context_entry(s, pci_bus_num(vtd_as->bus), vtd_as->= devfn, - &ce); + ret =3D vtd_dev_to_context_entry(s, pci_bus_num(bus), devfn, &ce); if (ret) { return ret; } =20 - return vtd_ce_get_pasid_entry(s, &ce, pe, vtd_as->pasid); + return vtd_ce_get_pasid_entry(s, &ce, pe, pasid); } =20 static int vtd_pasid_entry_compare(VTDPASIDEntry *p1, VTDPASIDEntry *p2) @@ -3151,7 +3150,8 @@ static void vtd_pasid_cache_sync_locked(gpointer key,= gpointer value, const char *err_prefix =3D "Attaching to HWPT failed: "; Error *local_err =3D NULL; =20 - if (vtd_dev_get_pe_from_pasid(vtd_as, &pe)) { + if (vtd_dev_get_pe_from_pasid(vtd_as->iommu_state, vtd_as->bus, + vtd_as->devfn, vtd_as->pasid, &pe)) { if (!pc_entry->valid) { return; } --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464341; cv=none; d=zohomail.com; s=zohoarc; b=C2comioUsdFtmiyyDUI7jkLqAw6/TjDvUCZm8sricNfK55+je+as+i0HncvwM6S8Po7iEyzRNA3t9zGd4TTwLktFSuFXShX5E9jt8K61jcNO1syxCVu+spEkfDLervJ6IsUV3LbKRqWEwb7MpcmkLzqyw0Jx9n6TsSJDlCvgoCU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464341; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WFEkrxkw6JWUK0cwJODW6BoTrF/CT02ZhMQYnTFjvuQ=; b=euzcxHOthvPPMzgRqO5dLHlSBdha3Sfn680hr0JpSC6/SbDXpdRR+oKgBZY8Uui9AhskgCW4ZdchFe2Hn9KqlLF//OJZWF7EzikJI4y+R8kESnJWPA0zNHZMW7Ef/eCNzY/DYXab3ikozmKMxb5/8Xwml6XXPNmbXVxkVz9x3eU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464341525300.6070760479889; Sun, 14 Jun 2026 12:12:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqA2-0007SU-Oj; Sun, 14 Jun 2026 15:06:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqA0-0007S0-8k for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYq9y-0001gw-Jq for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:20 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-688-hkxdhaZiO7GiWfxQVk97aA-1; Sun, 14 Jun 2026 15:06:16 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490ae3bcf4cso12093285e9.3 for ; Sun, 14 Jun 2026 12:06:15 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2ce361sm26281050f8f.31.2026.06.14.12.06.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463978; 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: in-reply-to:in-reply-to:references:references; bh=WFEkrxkw6JWUK0cwJODW6BoTrF/CT02ZhMQYnTFjvuQ=; b=EeQixWqyYA9Ji4sHoScpOpGeHXfRVo8s/bE+hTo8eSBIsaULAKsC+4YKnXV/7R7E0Y3yxn 3aJcs7PjRR1DFFtBalK/p8kNgftNF99Tfyo6ZkT+rxVFaZgfWvj94iLhl0QBAmFFk4syza nuWIJBTo1ne9kLhSmycoO+HAlb6DxIs= X-MC-Unique: hkxdhaZiO7GiWfxQVk97aA-1 X-Mimecast-MFC-AGG-ID: hkxdhaZiO7GiWfxQVk97aA_1781463975 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463975; x=1782068775; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=WFEkrxkw6JWUK0cwJODW6BoTrF/CT02ZhMQYnTFjvuQ=; b=DAm35Wxy3otnAhHmrJUeNrwTYRnxQ5xibSgtLZs8CJNoT4wIIByBDx2lSYx3Bb2Ixc 7505v+DpCfsHR7fRyYIeT7B9e4QKVmwGal8Oe8147bX1eMXprfb8JTW0DHC8SCoFmSx4 IazcrT2y3SA3vbIBMO3XJKsSxuy5vZeCFRQFx4GcSnxAVTlNbzXgi5YopYQm65zmX7k9 j4jia3Y5sD4lHEl7Ual9ReUma5tLJakzlmdkbYNJaPvl1w7gW1iL35qalvAG/Ifb/Rfj vfE/1mbabKtGEsewzSlhVo92gRlbhIQBHqAjfIYMLGjLz4eXrqBvpAfpn5XZOLopBhMK sSng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463975; x=1782068775; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WFEkrxkw6JWUK0cwJODW6BoTrF/CT02ZhMQYnTFjvuQ=; b=EwmTJZ+cl9b76SnXubPHJ3TSxwjlMcLtBVgREKjIlycPzBTRTgbUw8Obng+z0g1NlI +a3cBynRB0DF5m2gZzjJN1gUwAjViKY76Yn9FQQcrozIRzNIKBDZAjTaryJDccWaA6gP QkBLIStwNb3R1d7bTIFVgVcLyZvbT6cefmIazndoMrNOcxSOIQuglK8/yNlxMcWXR1EU CNtWTXjwoF17HwSJ9fg+knGGea+HTCX/DP308cTuJcrJrYAawqjPYgPgT3QYkHPNvn/A Dq9i8lpDaP0v7aiNJBKOP4xD+Gcf/+HsYwtpji1Txe3JxzjlA0Je0xJAjh+W6TqP18Ja EvLw== X-Gm-Message-State: AOJu0YywvUoKYe5elyC1K8sknkpl5FqaWr19JUzSmLpANYiANE+O3kPo iE+5PMriBapTNG5bR4q902sF7vmXsreisRElkAgguMQmkBczpXk0hIYQ0qWlBhbgFAOEqwqRDcF /c7iGxfeJp89pLm35I9bLu9Wv3eM6H4Y86ccjsCPUBka1J0c7/MOudQaeUHphbY8AZwlrgrq5FL rVtD8n9+7ye4npMvKy6VYJoGMAr/4jxzy9dg== X-Gm-Gg: Acq92OEwS3rLlfWkYAG4bLIupuXkABCy9cqQbp+XT/XwawBL+vdqCt2/OkDt5YAoT8O 4uTZptLTYcnSAzORVIo/M3ijEU/7UbeXgk+dUw6Ik6tPNj5cf1GFZGv7NEsm4TEEUGZ/T5CA2ZF q9k+HpTZCF/q41KFMcIs67S+wJcRzbPahXpckDw8PclRGVhDXwnTPca1KAM2rxinZX+XJJNI+vg fFl0WncN8bOgVQWoJAtlp8dqPm8+zbChxKuJGjC0hcZRY1U4FzT2TnJ0khNTxtm8uyIBz7mm5YN 1N3laPcaAf1TxTz3Oz/VmcPmcY6OAtJa4PNbixKC2yQeyLsAp/+iRCZ4NNcMp+RIne5pG8lw2A2 1Tm1i5Ec4MMmdNiPqFUPRFoHj4jucvT+DWmaINQOar1I= X-Received: by 2002:a05:600c:628f:b0:492:1e36:85dc with SMTP id 5b1f17b1804b1-4922017b005mr87470375e9.36.1781463974699; Sun, 14 Jun 2026 12:06:14 -0700 (PDT) X-Received: by 2002:a05:600c:628f:b0:492:1e36:85dc with SMTP id 5b1f17b1804b1-4922017b005mr87469875e9.36.1781463974025; Sun, 14 Jun 2026 12:06:14 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:11 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Clement Mathieu--Drif , Yi Liu , Xudong Hao , Jason Wang , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Paolo Bonzini , Richard Henderson Subject: [PULL 012/106] intel_iommu: Export some functions Message-ID: <0d0f3f962eab4342b5d6314e28e7e87434ca9eff.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464343781158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan Export some functions for accel code usages. Inline functions and MACROs are moved to internal header files. Then accel code in following patches could access them. Signed-off-by: Zhenzhong Duan Reviewed-by: Clement Mathieu--Drif Reviewed-by: Yi Liu Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-8-zhenzhong.duan@intel.com> --- hw/i386/intel_iommu.c | 43 +++++++--------------------------- hw/i386/intel_iommu_internal.h | 31 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 632df21034..e15aecf5f9 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -42,12 +42,6 @@ #include "migration/vmstate.h" #include "trace.h" =20 -/* context entry operations */ -#define VTD_CE_GET_PASID_DIR_TABLE(ce) \ - ((ce)->val[0] & VTD_PASID_DIR_BASE_ADDR_MASK) -#define VTD_CE_GET_PRE(ce) \ - ((ce)->val[0] & VTD_SM_CONTEXT_ENTRY_PRE) - /* * Paging mode for first-stage translation (VTD spec Figure 9-6) * 00: 4-level paging, 01: 5-level paging @@ -831,18 +825,12 @@ static inline bool vtd_pe_type_check(IntelIOMMUState = *s, VTDPASIDEntry *pe) } } =20 -static inline bool vtd_pdire_present(VTDPASIDDirEntry *pdire) -{ - return pdire->val & 1; -} - /** * Caller of this function should check present bit if wants * to use pdir entry for further usage except for fpd bit check. */ -static int vtd_get_pdire_from_pdir_table(dma_addr_t pasid_dir_base, - uint32_t pasid, - VTDPASIDDirEntry *pdire) +int vtd_get_pdire_from_pdir_table(dma_addr_t pasid_dir_base, uint32_t pasi= d, + VTDPASIDDirEntry *pdire) { uint32_t index; dma_addr_t addr, entry_size; @@ -860,15 +848,8 @@ static int vtd_get_pdire_from_pdir_table(dma_addr_t pa= sid_dir_base, return 0; } =20 -static inline bool vtd_pe_present(VTDPASIDEntry *pe) -{ - return pe->val[0] & VTD_PASID_ENTRY_P; -} - -static int vtd_get_pe_in_pasid_leaf_table(IntelIOMMUState *s, - uint32_t pasid, - dma_addr_t addr, - VTDPASIDEntry *pe) +int vtd_get_pe_in_pasid_leaf_table(IntelIOMMUState *s, uint32_t pasid, + dma_addr_t addr, VTDPASIDEntry *pe) { uint8_t pgtt; uint32_t index; @@ -1526,8 +1507,8 @@ static int vtd_ce_pasid_0_check(IntelIOMMUState *s, V= TDContextEntry *ce) } =20 /* Map a device to its corresponding domain (context-entry) */ -static int vtd_dev_to_context_entry(IntelIOMMUState *s, uint8_t bus_num, - uint8_t devfn, VTDContextEntry *ce) +int vtd_dev_to_context_entry(IntelIOMMUState *s, uint8_t bus_num, + uint8_t devfn, VTDContextEntry *ce) { VTDRootEntry re; int ret_fr; @@ -1909,7 +1890,7 @@ static VTDAddressSpace *vtd_get_as_by_sid_and_pasid(I= ntelIOMMUState *s, vtd_find_as_by_sid_and_pasid, &key); } =20 -static VTDAddressSpace *vtd_get_as_by_sid(IntelIOMMUState *s, uint16_t sid) +VTDAddressSpace *vtd_get_as_by_sid(IntelIOMMUState *s, uint16_t sid) { return vtd_get_as_by_sid_and_pasid(s, sid, PCI_NO_PASID); } @@ -3113,9 +3094,8 @@ static bool vtd_process_piotlb_desc(IntelIOMMUState *= s, return true; } =20 -static int vtd_dev_get_pe_from_pasid(IntelIOMMUState *s, PCIBus *bus, - uint8_t devfn, uint32_t pasid, - VTDPASIDEntry *pe) +int vtd_dev_get_pe_from_pasid(IntelIOMMUState *s, PCIBus *bus, uint8_t dev= fn, + uint32_t pasid, VTDPASIDEntry *pe) { VTDContextEntry ce; int ret; @@ -3132,11 +3112,6 @@ static int vtd_dev_get_pe_from_pasid(IntelIOMMUState= *s, PCIBus *bus, return vtd_ce_get_pasid_entry(s, &ce, pe, pasid); } =20 -static int vtd_pasid_entry_compare(VTDPASIDEntry *p1, VTDPASIDEntry *p2) -{ - return memcmp(p1, p2, sizeof(*p1)); -} - /* Update or invalidate pasid cache based on the pasid entry in guest memo= ry. */ static void vtd_pasid_cache_sync_locked(gpointer key, gpointer value, gpointer user_data) diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index db4f186a3e..d738ef1803 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -620,6 +620,12 @@ typedef struct VTDRootEntry VTDRootEntry; #define VTD_SM_CONTEXT_ENTRY_RSVD_VAL1 0xffffffffffe00000ULL #define VTD_SM_CONTEXT_ENTRY_PRE 0x10ULL =20 +/* context entry operations */ +#define VTD_CE_GET_PASID_DIR_TABLE(ce) \ + ((ce)->val[0] & VTD_PASID_DIR_BASE_ADDR_MASK) +#define VTD_CE_GET_PRE(ce) \ + ((ce)->val[0] & VTD_SM_CONTEXT_ENTRY_PRE) + typedef struct VTDPASIDCacheInfo { uint8_t type; uint16_t did; @@ -746,4 +752,29 @@ static inline bool vtd_pe_pgtt_is_fst(VTDPASIDEntry *p= e) { return (VTD_SM_PASID_ENTRY_PGTT(pe) =3D=3D VTD_SM_PASID_ENTRY_FST); } + +static inline bool vtd_pdire_present(VTDPASIDDirEntry *pdire) +{ + return pdire->val & 1; +} + +static inline bool vtd_pe_present(VTDPASIDEntry *pe) +{ + return pe->val[0] & VTD_PASID_ENTRY_P; +} + +static inline int vtd_pasid_entry_compare(VTDPASIDEntry *p1, VTDPASIDEntry= *p2) +{ + return memcmp(p1, p2, sizeof(*p1)); +} + +int vtd_get_pdire_from_pdir_table(dma_addr_t pasid_dir_base, uint32_t pasi= d, + VTDPASIDDirEntry *pdire); +int vtd_get_pe_in_pasid_leaf_table(IntelIOMMUState *s, uint32_t pasid, + dma_addr_t addr, VTDPASIDEntry *pe); +int vtd_dev_to_context_entry(IntelIOMMUState *s, uint8_t bus_num, + uint8_t devfn, VTDContextEntry *ce); +VTDAddressSpace *vtd_get_as_by_sid(IntelIOMMUState *s, uint16_t sid); +int vtd_dev_get_pe_from_pasid(IntelIOMMUState *s, PCIBus *bus, uint8_t dev= fn, + uint32_t pasid, VTDPASIDEntry *pe); #endif --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464096; cv=none; d=zohomail.com; s=zohoarc; b=nAOKJ7piWSAKuSGkHIi8yb6c9H/mWUj00D9bjsWnW7dm5JWu0j6wAY9WxS2BH56vvll1qm290nuayGxgoKfyPRNmwyTXvj8t9OJgGc5Ovadu4ZUAUGPJEZHfTYSysOQybCdwq5+d65JTkYcZLnZZEfbYNaewb1yyAccI9PyKR/c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464096; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=quBGMyZvRLeAt5zE1TZqXrT5mUZTPeEKhm1BaiYb7mU=; b=cEzr0qIrtSIWwxjW09dGejfaETTgf0ljZ/A1/GwX5QrXPtQtqkGdb59Cl7km0gEGvW1Ith53HA5K7DUwuqvsGicTZPBSewqN9L/DDpbfh4VhuegR68nvIdU5X4Nbx9dyLdTzd+PFl+5jlAMQwdJz06ZuHKHninnEIhWheEbDoMY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464096261555.6834104105064; Sun, 14 Jun 2026 12:08:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqA4-0007Sq-EX; Sun, 14 Jun 2026 15:06:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqA1-0007SF-He for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqA0-0001h3-30 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:21 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-400-eoyMMGMYNseCs8h5aet33w-1; Sun, 14 Jun 2026 15:06:18 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-4601102c30dso1474229f8f.2 for ; Sun, 14 Jun 2026 12:06:18 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2b0c10sm27635846f8f.21.2026.06.14.12.06.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463979; 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: in-reply-to:in-reply-to:references:references; bh=quBGMyZvRLeAt5zE1TZqXrT5mUZTPeEKhm1BaiYb7mU=; b=IFJaEqnOwDLTgRbcg6A1gdGqmkBDZ4YetGVRa5G0CGa7nf8SlgIZKHoVZrlskb9qp07/LE j5eQbrIXNJBQh5E69qnBSg1hRu0x0nIMJRMDDZeeeIbhCF8yPmmoKkQ//7eVZHkTvSCDr2 ItnaJ2MmvePBHLTzZ2kPt6oKlz2PFa4= X-MC-Unique: eoyMMGMYNseCs8h5aet33w-1 X-Mimecast-MFC-AGG-ID: eoyMMGMYNseCs8h5aet33w_1781463977 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463977; x=1782068777; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=quBGMyZvRLeAt5zE1TZqXrT5mUZTPeEKhm1BaiYb7mU=; b=tbzFyA2Wtxprlc07ZxkqsEBNiLeuYPHkVibtveuYk0+eC4Bbg5s/OIxwtl+p/vUmQ3 51oiFeJsGV4DSgynkUWns9cWg/XkASRWNh/HYXg1uKW/zmqYj1lS2XwirePPg3Bma9Jc SVD1tL9XsGx65SNyxgUKGgLSrq7z+/a2sXX9mnIkNJj/4+bi2hf3O6RbpLoYwjd/SkEk 08cZTwWSHaifT0IojrFpYNoUS1TxMw2HBdvg/U3wf2RS9CQTuN7cGQysTCfo1rgPiz5i /fn4BVaMR3ymHuTAC/qqLo5PRS65OxTJifteiHrAJFjecVUZ0S9Bd4wgluVUdCuxxI1V kUEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463977; x=1782068777; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=quBGMyZvRLeAt5zE1TZqXrT5mUZTPeEKhm1BaiYb7mU=; b=FFoATgqpeYNTDCEo+CirTHLy9LlfIXABgSoPWz0huQN2P8YLwZrFNwOvFwQyYB4Z/r cN3NlaXkxhcaDT9zWPz8pmXFOqItqqhvqrj1R1iQDknWRbCtNm6xaa1V8hHbnBOEFn0p cdwnVlhs1HDkqL0dy/Tbw89IWTb/m0Ilbdd9mVQwTORxa5Dpi/gUIQVjZbMGCvx4x3cJ +TTfm3asxgmagS5oX0l0yHkaIkwK4ChaR669gNcHFZR+MHErs13W/IJ5NCy4UDWLEWLf 34D2HFGIprdUAaPFxgMrwLiJIkrT2DBXn3QExuGT++6zf/OyX7nEXlnHqsb0x54R6asS kkkw== X-Gm-Message-State: AOJu0Yw7CPckvDpUwrFW6wHoCoDFmbpth70YgVNOgrWTyrsaPalkKThL BIiFqvclqcOhZBVjMvTOkyEWbmuDGd9/WouqNf6XfJKmp0FgJ06SGgrHzI3TF4wI2P2h0L1rCGS XJYyFaaFcuPtmkemeH2W6+bUEGI/54DNne25DFlQ2/DLrJk5pncFeJznodBlXg5rSBzByyJokKf o1xRAIBK8BauLeV9uNcvbDoynoPaI/4J5PnQ== X-Gm-Gg: Acq92OGRz/9stnP24zduB7CZcqtewRbemehSfJeKyWb6FXGBq0ibhC5dNUPBxKkj7pz IReh5vbbEtOU7k7YJbKbQnMtfYLeOivuH3hsxQewP9H9rzC5O8HvbXASTOxqPB+IxOTFkEMGBzI T1Hub5JJKOgpdQtYX+oGkJrqJlDnqJFGHwsWfaEy6REZOneoG5+TA7gCk+qYGsdeNI1tivEFqby E9kEjypDTZOJb0PZUuUJrMYedq/TbaclSk0LiEmgKaztRwBpIfOykL1yjNGvx8WUaxdw/0Nnuw4 mGrAyycF0XAmpNWlrtfg+AhaT6qGLOlA8BhV0FwvGhW2blEIJUfxsnrx+/DOcUo/wG2pEkVQ3LL oumUcdRfbMSbbIs0A+zcEanhZz7TaQYc9Kbg69tkTmy8= X-Received: by 2002:a05:6000:188e:b0:45e:f271:5019 with SMTP id ffacd0b85a97d-4606db8c6fbmr15470680f8f.14.1781463977039; Sun, 14 Jun 2026 12:06:17 -0700 (PDT) X-Received: by 2002:a05:6000:188e:b0:45e:f271:5019 with SMTP id ffacd0b85a97d-4606db8c6fbmr15470642f8f.14.1781463976551; Sun, 14 Jun 2026 12:06:16 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:14 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Yi Liu , Clement Mathieu--Drif , Jason Wang , Paolo Bonzini , Richard Henderson Subject: [PULL 013/106] intel_iommu: Fix PASID validity check in fault reporting Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464096599158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan The current code incorrectly uses "pasid !=3D PCI_NO_PASID" to determine if PASID should be reported in fault records. However, this check happens after the code converts PCI_NO_PASID to PASID_0 in scalable mode. This means that for requests that originally had PCI_NO_PASID, the check "pasid !=3D PCI_NO_PASID" will incorrectly return true (since pasid is now PASID_0), causing fault records to incorrectly indicate PASID validity. According to the VT-d specification, the PASID field in fault records is only valid for Requests-with-PASID: "When Set, indicates the faulted request has a PASID TLP Prefix." Fix this by capturing the original PASID state before the PCI_NO_PASID to PASID_0 conversion, ensuring fault records correctly reflect whether the original request had a PASID. Fixes: 1b2b12376c8a ("intel_iommu: process PASID-based iotlb invalidation") Suggested-by: Yi Liu Signed-off-by: Zhenzhong Duan Reviewed-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-9-zhenzhong.duan@intel.com> Reviewed-by: Clement Mathieu--Drif Signed-off-by: Michael S. Tsirkin --- hw/i386/intel_iommu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index e15aecf5f9..539e8f5763 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -2109,6 +2109,7 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *v= td_as, PCIBus *bus, bool is_fpd_set =3D false; bool reads =3D true; bool writes =3D true; + bool is_pasid =3D pasid !=3D PCI_NO_PASID; uint8_t access_flags, pgtt; VTDIOTLBEntry *iotlb_entry; uint64_t xlat, size; @@ -2235,7 +2236,7 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *v= td_as, PCIBus *bus, if (ret_fr) { if (!vtd_is_recoverable_fault(-ret_fr, iommu_idx)) { vtd_report_fault(s, -ret_fr, is_fpd_set, source_id, - addr, is_write, pasid !=3D PCI_NO_PASID, pasid= ); + addr, is_write, is_pasid, pasid); } goto error; } --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464004; cv=none; d=zohomail.com; s=zohoarc; b=Bq/04bCloD+E/Wd8/wPMN1USLcUXe+LogKNROabU0WXL+Y84nKetLrEaZ5VNoloDcFoIqKDka4m1YnkECG2WOp0jaZxLbztgJGvy8SqJlh7SaJJSR1fKExHxL4/WLBsMlnb/n1bUBl0LCun0VmdcUvJPerHol6vIWNLweQ8jSjU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464004; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=AahjjTLQOyTNWb1UvcaPKOl496wgFN55dOSBC6NQswI=; b=Kd6cLqA5lKmcp2SV6OyUUE7727PU9xJWQhyTQ1VWMbDFZ338dhBXZdmY4STUBmkhfE3wqn3lhe402guWyqz7STPgenpPruFsyzy8wDeYmp15i3qiQDwOVxlcgR+DYiGYIVQkcqXJ4irr+Qgods8uHBW+dDTv8uqBdcefMVu9McE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464003965506.27829302125247; Sun, 14 Jun 2026 12:06:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqA9-0007V0-Sg; Sun, 14 Jun 2026 15:06:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqA6-0007T2-Ka for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqA4-0001ha-Mo for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:26 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-639-jmbeTpTpPGqh-UQ04r1CcQ-1; Sun, 14 Jun 2026 15:06:20 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490b8adf8b8so22501015e9.0 for ; Sun, 14 Jun 2026 12:06:20 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220304180sm179880865e9.4.2026.06.14.12.06.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463984; 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: in-reply-to:in-reply-to:references:references; bh=AahjjTLQOyTNWb1UvcaPKOl496wgFN55dOSBC6NQswI=; b=eoYFEqsj6NpPKfEu9fNA4D1Nkewjn3s4Q+z0z5Gr6E1hcnqPQxNEnfffSyAsPrKrb/dXR2 BA1Q2NiYDiHOuxs/XrjH16ZgPWI5fexpf1wkSI/Of/JovK+njC2n5OVh2Q6oq4DlDVtpyg xV8Xt4OfAcFU1dCcBpxxSDTQbnNUqpE= X-MC-Unique: jmbeTpTpPGqh-UQ04r1CcQ-1 X-Mimecast-MFC-AGG-ID: jmbeTpTpPGqh-UQ04r1CcQ_1781463980 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463979; x=1782068779; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=AahjjTLQOyTNWb1UvcaPKOl496wgFN55dOSBC6NQswI=; b=TnWV2DAygcH8i0uTXrdSZjNpgNtTKw4ncpLXYt+wW0nSCVq1b3PqE1b8Ht/DkFSrp6 ZhWeILOFTpNOfqiwo/zGqn0wr3eMa5c5wBFzMOAFU2ME1yhLu5fHVl8ujLZ/xdtifQs5 OPL+UyZWtQ3zpuQla1Co7AB4EzcyLLUp6RdsoCqbNgQnyInkvXnyVFWn6qVueedNjI6n 2YW+QIuF6Qs0vsOZ+hn9qVcl6kMfgsFg91p7qAtNgMlk6ivTGwgH0ywswKqO1stCNF9k 6xpE8thh6lRa8ZDNfnLKeZJPJuuNpiDPu+1SO2M0ZESchpXuS8gYiBoR34JxoHMjzrcI GW7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463979; x=1782068779; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AahjjTLQOyTNWb1UvcaPKOl496wgFN55dOSBC6NQswI=; b=nHe3cQgB4M9ygjT30oY6WON9f6gfyyVTCTJZOuJEzFby0TU2WGssi/8sguY1KM+8A4 8UrN0nc2D0rsLuwwF3wwbd4td+lL7euKQezihKLevcxjDIyYx0guxxRg99bj9+fObs8X taM3qF04Vi7d9xX1qA4B++ngi4b6zb4NhJbT+12LVGsVX9JGZhHQd1kOUAezxru/C2NO 5UqLOZacUFzr+UJ1UrVCF8+4i5CjuxpF6GkOfRN/WTTN8REEAhkS9AqO/XTP9xdPrTTC jN9NvmSxdlARCsPGUPMfWxFNkbndKtT67NFlLmIgHa9K5wwAyJ5tLy4Cj4ZKmfl6Iyro b6Rg== X-Gm-Message-State: AOJu0Yz2E5nSZzHE06BboWHkDMFiD8leUVKSWue4i20GiqKJl/a8+ZLc tIxWd6Vik8nqSgGNsnwmlFUEF/7jkKDfEVMHCkVcRAL3ClKuZxVv+BYR0lYwG0Rz1CIv7MQR/0w fsfEzc7PuFN34z6ahuTIeBu5RElZNNpBDuSP8WdKrUZ7JpihRYzykwY0ovIzZT7VbpF1NkXdUE0 YCx3lH771CubqJPpzIOkGaM+JakWGc1SEJQw== X-Gm-Gg: Acq92OF3Hr28DDgKzDIUs8t8wmg+OgqfpwDdO6pZiheTZEA5+2OL7pIQJ9488jcUiya dE6dJKtsVyZH+MIUG+ntOl6VaQQ1EGVKEUGHzq7qxtXjMDITWlwunAq5oUDlEKYhhlenjIqH6hB +JxXiUB1Uv09P7fIuZ4DS8p7c81GLNQirYiWkT4Z6VM0QyR3xa2iWwxVvEwHfW5+b43cZaqnfek 0vvt/Moz4XuEMl2XTyKnW6QjhmJ8ShbFrQo6dpthzS6I28QAMYCeIUkGz0WnyxCmVlXG3g5Fb7C gM+8Z1AgY8CnUJ8rU8JXFnau6qOTZcbO/r7nDp6SZCA48DyqHA9Btgri9v7KdkB8yoJ1nffQBsC k9lpGHMCBe1MxBJ7GDK/HvNHpdMzHm6ftVROz6ucua1Y= X-Received: by 2002:a05:600c:468d:b0:490:9588:bdae with SMTP id 5b1f17b1804b1-490ec4ee664mr165207535e9.18.1781463979547; Sun, 14 Jun 2026 12:06:19 -0700 (PDT) X-Received: by 2002:a05:600c:468d:b0:490:9588:bdae with SMTP id 5b1f17b1804b1-490ec4ee664mr165207045e9.18.1781463978993; Sun, 14 Jun 2026 12:06:18 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:16 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Yi Liu , Clement Mathieu--Drif , Xudong Hao , Jason Wang , Paolo Bonzini , Richard Henderson Subject: [PULL 014/106] intel_iommu: Use IOMMU_NO_PASID and delete PASID_0 Message-ID: <6c4467745c27676e8bda6d9eb0bb2a70d2a7bca6.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464006882158501 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan In previous patch we introduced a global macro IOMMU_NO_PASID(0) for the RID attachment, this makes the local macro PASID_0 redundant. Delete it and use IOMMU_NO_PASID instead. No functional changes intended. Suggested-by: Yi Liu Signed-off-by: Zhenzhong Duan Reviewed-by: Yi Liu Reviewed-by: Clement Mathieu--Drif Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-10-zhenzhong.duan@intel.com> --- hw/i386/intel_iommu.c | 22 +++++++++++----------- hw/i386/intel_iommu_accel.c | 2 +- hw/i386/intel_iommu_internal.h | 1 - 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 539e8f5763..3784910ce0 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -941,7 +941,7 @@ static int vtd_ce_get_pasid_entry(IntelIOMMUState *s, V= TDContextEntry *ce, dma_addr_t pasid_dir_base; =20 if (pasid =3D=3D PCI_NO_PASID) { - pasid =3D PASID_0; + pasid =3D IOMMU_NO_PASID; } pasid_dir_base =3D VTD_CE_GET_PASID_DIR_TABLE(ce); return vtd_get_pe_from_pasid_table(s, pasid_dir_base, pasid, pe); @@ -958,7 +958,7 @@ static int vtd_ce_get_pasid_fpd(IntelIOMMUState *s, VTDPASIDEntry pe; =20 if (pasid =3D=3D PCI_NO_PASID) { - pasid =3D PASID_0; + pasid =3D IOMMU_NO_PASID; } pasid_dir_base =3D VTD_CE_GET_PASID_DIR_TABLE(ce); =20 @@ -1501,9 +1501,9 @@ static int vtd_ce_pasid_0_check(IntelIOMMUState *s, V= TDContextEntry *ce) =20 /* * Make sure in Scalable Mode, a present context entry - * has valid pasid entry setting at PASID_0. + * has valid pasid entry setting at IOMMU_NO_PASID. */ - return vtd_ce_get_pasid_entry(s, ce, &pe, PASID_0); + return vtd_ce_get_pasid_entry(s, ce, &pe, IOMMU_NO_PASID); } =20 /* Map a device to its corresponding domain (context-entry) */ @@ -1564,7 +1564,7 @@ int vtd_dev_to_context_entry(IntelIOMMUState *s, uint= 8_t bus_num, } } else { /* - * Check if the programming of pasid setting of PASID_0 + * Check if the programming of pasid setting of IOMMU_NO_PASID * is valid, and thus avoids to check pasid entry fetching * result in future helper function calling. */ @@ -2123,7 +2123,7 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *v= td_as, PCIBus *bus, vtd_iommu_lock(s); =20 if (pasid =3D=3D PCI_NO_PASID && s->root_scalable) { - pasid =3D PASID_0; + pasid =3D IOMMU_NO_PASID; } =20 /* Try to fetch pte from IOTLB */ @@ -2488,7 +2488,7 @@ static void vtd_iotlb_domain_invalidate(IntelIOMMUSta= te *s, uint16_t domain_id) } =20 /* - * There is no pasid field in iotlb invalidation descriptor, so PCI_NO_PAS= ID + * There is no pasid field in iotlb invalidation descriptor, so IOMMU_NO_P= ASID * is passed as parameter. Piotlb invalidation supports pasid, pasid in its * descriptor is passed which should not be PCI_NO_PASID. */ @@ -2509,10 +2509,10 @@ static void vtd_iotlb_page_invalidate_notify(IntelI= OMMUState *s, * In legacy mode, vtd_as->pasid =3D=3D pasid is always true. * In scalable mode, for vtd address space backing a PCI * device without pasid, needs to compare pasid with - * PASID_0 of this device. + * IOMMU_NO_PASID of this device. */ if (!(vtd_as->pasid =3D=3D pasid || - (vtd_as->pasid =3D=3D PCI_NO_PASID && pasid =3D=3D PASID= _0))) { + (vtd_as->pasid =3D=3D PCI_NO_PASID && pasid =3D=3D IOMMU= _NO_PASID))) { continue; } =20 @@ -2564,7 +2564,7 @@ static void vtd_iotlb_page_invalidate(IntelIOMMUState= *s, uint16_t domain_id, vtd_iommu_lock(s); g_hash_table_foreach_remove(s->iotlb, vtd_hash_remove_by_page, &info); vtd_iommu_unlock(s); - vtd_iotlb_page_invalidate_notify(s, domain_id, addr, am, PCI_NO_PASID); + vtd_iotlb_page_invalidate_notify(s, domain_id, addr, am, IOMMU_NO_PASI= D); } =20 /* Flush IOTLB @@ -3023,7 +3023,7 @@ static void vtd_piotlb_pasid_invalidate(IntelIOMMUSta= te *s, if (!vtd_dev_to_context_entry(s, pci_bus_num(vtd_as->bus), vtd_as->devfn, &ce) && domain_id =3D=3D vtd_get_domain_id(s, &ce, vtd_as->pasid)) { - if ((vtd_as->pasid !=3D PCI_NO_PASID || pasid !=3D PASID_0) && + if ((vtd_as->pasid !=3D PCI_NO_PASID || pasid !=3D IOMMU_NO_PA= SID) && vtd_as->pasid !=3D pasid) { continue; } diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c index 6a12cdac10..14180f61cd 100644 --- a/hw/i386/intel_iommu_accel.c +++ b/hw/i386/intel_iommu_accel.c @@ -217,7 +217,7 @@ static void vtd_flush_host_piotlb_locked(gpointer key, = gpointer value, =20 did =3D VTD_SM_PASID_ENTRY_DID(&pc_entry->pasid_entry); =20 - if (piotlb_info->domain_id =3D=3D did && piotlb_info->pasid =3D=3D PAS= ID_0) { + if (piotlb_info->domain_id =3D=3D did && piotlb_info->pasid =3D=3D IOM= MU_NO_PASID) { HostIOMMUDeviceIOMMUFD *hiodi =3D HOST_IOMMU_DEVICE_IOMMUFD(vtd_hiod->hiod); uint32_t entry_num =3D 1; /* Only implement one request for simpli= city */ diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index d738ef1803..ee59df09f8 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -615,7 +615,6 @@ typedef struct VTDRootEntry VTDRootEntry; #define VTD_CTX_ENTRY_LEGACY_SIZE 16 #define VTD_CTX_ENTRY_SCALABLE_SIZE 32 =20 -#define PASID_0 0 #define VTD_SM_CONTEXT_ENTRY_RSVD_VAL0(aw) (0x1e0ULL | ~VTD_HAW_MASK(aw)) #define VTD_SM_CONTEXT_ENTRY_RSVD_VAL1 0xffffffffffe00000ULL #define VTD_SM_CONTEXT_ENTRY_PRE 0x10ULL --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464035; cv=none; d=zohomail.com; s=zohoarc; b=nT/UKFQa4Ryb5a5w4LakRFNrjYuMgAbrArcewBw3caMuMUEYZXmw94GNmwrqBx7J5I3i6p+X2GWWFaGoP/o9RzY8UU+WJQYKZcCYJZUZAKSQI91usA6bVGZDHrUKibueSKranEzlTcb1PYE2P6tviaGs19ERfHdjPInKblumDxU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464035; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=L7Dz+1RYpvjMPt0hJU20VgQJ+AEbkgW1f6Id13UARIM=; b=ZXlweJSSlGqH1iQgU8DFoOgdCw8fenD/nzxHtwe5FMLZtaGsUDRf4pzak7XHo75iolQVM8CGlPa14ZMv0h+JHMqtgSsOM11DAq/q1dIw2CWd0KeKgWXhOboWSsGRqVhz54bWKuAitoA9Fg1SU7dAa2m44yW7DAYcNOuwkpfPizg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146403510069.88291605742086; Sun, 14 Jun 2026 12:07:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAB-0007WH-JU; Sun, 14 Jun 2026 15:06:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqA9-0007TA-8D for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:29 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqA5-0001hq-NU for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:27 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-677-pxQpIRb9NNqRrKUVMBZY6g-1; Sun, 14 Jun 2026 15:06:23 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-45ef616db45so1969987f8f.2 for ; Sun, 14 Jun 2026 12:06:23 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2c3782sm23697486f8f.25.2026.06.14.12.06.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463985; 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: in-reply-to:in-reply-to:references:references; bh=L7Dz+1RYpvjMPt0hJU20VgQJ+AEbkgW1f6Id13UARIM=; b=elGod5PHmKd7Jj/x6F2YpHIN0IeyWGvrHm4n/n6ayyI1HyRj9oVEMkhGo6IefjmgcdNEtO T87MVTDcIlZknMWQd8yrrrQ1GlDA8HVtD9+LnpDeOSRyR4+LlKNvh1qoZGa56BpY9hwmEo w5GttPZb7D9IBPZ5J0Af03uZnDUCRK4= X-MC-Unique: pxQpIRb9NNqRrKUVMBZY6g-1 X-Mimecast-MFC-AGG-ID: pxQpIRb9NNqRrKUVMBZY6g_1781463983 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463982; x=1782068782; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=L7Dz+1RYpvjMPt0hJU20VgQJ+AEbkgW1f6Id13UARIM=; b=LShw74lB8yRl5SijULW1qXw0y9lJsRkd8BhgbM2HUoK047qd5PoVWFCD8TM6sHvL3P 6s9fQMYZdtsmd8hv4l7QaMtZ47Sw98RDI5OA/IQEGmTMm1QCRjxp1NOJ/H3kMor2GbrX E3f4Zmk5Jm/N0TiKb+5DNzjtVk23oTtu3y6M9lS2LYDvMgxTKhBlgcWcwMpIzA7G+pPy /veuniOgEHbRDS33s/U97Am/DeYfCbbAmtKjjq7yN5uSrtznG+3eVf1E3bmlB0EIiy1u uyR+vt/1Hw9YDe6gFauTLNvxxC1kHs0JZtQL3ncat3q9SGfmzsUGTfWBmsO6ZPFZr8wM Aelw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463982; x=1782068782; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=L7Dz+1RYpvjMPt0hJU20VgQJ+AEbkgW1f6Id13UARIM=; b=c5kI+geczzj+oGHHsgJAsGrJ2dz//TU1dxfyH3Vmc0VbbD1XKRXOoBFipOjepJzSpt CQTwxYCyj+QDI9M120A5yhkdOaccebgxwHlDY58EMx6aL8uSoVWjm6Dm+3WJC3TNsR1x OLTm8rPR2UrvSIOJrD3EaLBQBImY5/VCni61J5vdVhGWSk39/uozg9Y59Rxw2GdAQp62 1eq/JIVveGyxGXnoFBAPt6It2E09Y0jtsaoRsoi0NvxCPZmzGpqsKcXpPV2Deh5NV+DR vOVUbHK14Nbn1g2XhTweuSAPqUxu8SrfiR/RB5+1qHPV+2p4qXIROgobESjG5MSx+Cm1 3/vQ== X-Gm-Message-State: AOJu0Yy5a7nKiJCNL22LwBCYgD+yH2BkJxSJ87kQZYylOhiS3z1LRXI3 py0DPstBnyFwP2QOsA7ehbzC0O6eTbF9omJolsPXyQBGp2R8z61L576Ad7ggIneLLiQUNBckQGz Os2bmojRrP//aMAQrLIb4oWmSqJgv3RsVkqxaGihhAaLGFSkmCu57PQmGK7uvqEIv11bberF512 02FDmVTxDxXp8EbYfsmcHb8UrxtNMAjoHy5w== X-Gm-Gg: Acq92OFNuQOuMTPOGjWJD4DUGQ5qDIcRjvWtNmQRFgbSHCxeqynes4RIep7VBX267oC FBbcL/uBRNNWv7YBZLWe6+skhNdUTh/fsY/3VhuLB9YX5bElxHDMgEdRi3yLyw1Ld2VHPN2piLA laj7mnOfJPHvKmDyVXILa/ZGPoL5D5FrmZQAC77zj3xfH9AxzQnNS54UASTccb8luA42+/YJfBf epMI26UKXlOb2W8k9ywNJfxtKpnlIbOl830M5fJrxwRDpB6MstushB1m1rarQJLHyJ5SGYzraau mdRY6aFpl1YuXp8+imIfddueS0dm2bNgS9HE5HPNo1gCPag9wkTauoLcBCRepfjlVV0GLZIXmVP 7W9FTR3e9HztXhDyuwO5lYoMFRvrsz6zT0tWMDIMHT0U= X-Received: by 2002:a5d:5d13:0:b0:460:e2e:6e2b with SMTP id ffacd0b85a97d-46074a8a1b7mr10614378f8f.20.1781463982319; Sun, 14 Jun 2026 12:06:22 -0700 (PDT) X-Received: by 2002:a5d:5d13:0:b0:460:e2e:6e2b with SMTP id ffacd0b85a97d-46074a8a1b7mr10614301f8f.20.1781463981619; Sun, 14 Jun 2026 12:06:21 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:19 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Clement Mathieu--Drif , Jason Wang , Yi Liu , Paolo Bonzini , Richard Henderson , Peter Xu , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= Subject: [PULL 015/106] intel_iommu: Refactor PASID processing to use IOMMU_NO_PASID internally Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464037472158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan The PCI subsystem uses PCI_NO_PASID for requests-without-PASID, but VT-d emulation uses IOMMU_NO_PASID internally (ecap.RPS=3D=3D0). This leads to conversion and checking code between PCI_NO_PASID and IOMMU_NO_PASID throughout the implementation. Refactor to use IOMMU PASID consistently within Intel IOMMU by storing IOMMU PASID value in vtd_as->pasid. After this change, PCI_NO_PASID is only used at three boundary points: 1. PCI_NO_PASID -> IOMMU_NO_PASID: Convert PCI PASID to IOMMU PASID in vtd_find_add_as() and cache in vtd_as->pasid. 2. IOMMU_NO_PASID -> PCI_NO_PASID: Convert when notifying UNMAP events via memory_region_notify_iommu() and returning IOMMUTLBEntry in vtd_iommu_translate(). This eliminates conversion/checks in PASID table lookups, simplifies invalidation logic with consistent PASID values, and improves code readability. The PCI subsystem interface remains unchanged to maintain compatibility with other IOMMU implementations that may not use PASID 0 for requests-without-PASID. Suggested-by: Clement Mathieu--Drif Signed-off-by: Zhenzhong Duan Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-11-zhenzhong.duan@intel.com> --- hw/i386/intel_iommu.c | 166 +++++++++++++++++------------------- hw/i386/intel_iommu_accel.c | 2 +- include/system/memory.h | 2 +- 3 files changed, 81 insertions(+), 89 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 3784910ce0..88e0c58c08 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -938,12 +938,8 @@ static int vtd_get_pe_from_pasid_table(IntelIOMMUState= *s, static int vtd_ce_get_pasid_entry(IntelIOMMUState *s, VTDContextEntry *ce, VTDPASIDEntry *pe, uint32_t pasid) { - dma_addr_t pasid_dir_base; + dma_addr_t pasid_dir_base =3D VTD_CE_GET_PASID_DIR_TABLE(ce); =20 - if (pasid =3D=3D PCI_NO_PASID) { - pasid =3D IOMMU_NO_PASID; - } - pasid_dir_base =3D VTD_CE_GET_PASID_DIR_TABLE(ce); return vtd_get_pe_from_pasid_table(s, pasid_dir_base, pasid, pe); } =20 @@ -953,15 +949,10 @@ static int vtd_ce_get_pasid_fpd(IntelIOMMUState *s, uint32_t pasid) { int ret; - dma_addr_t pasid_dir_base; + dma_addr_t pasid_dir_base =3D VTD_CE_GET_PASID_DIR_TABLE(ce); VTDPASIDDirEntry pdire; VTDPASIDEntry pe; =20 - if (pasid =3D=3D PCI_NO_PASID) { - pasid =3D IOMMU_NO_PASID; - } - pasid_dir_base =3D VTD_CE_GET_PASID_DIR_TABLE(ce); - /* * No present bit check since fpd is meaningful even * if the present bit is clear. @@ -1750,7 +1741,7 @@ static bool vtd_switch_address_space(VTDAddressSpace = *as) * * Need to disable ir for as with PASID. */ - if (as->pasid !=3D PCI_NO_PASID) { + if (as->pasid !=3D IOMMU_NO_PASID) { memory_region_set_enabled(&as->iommu_ir, false); } else { memory_region_set_enabled(&as->iommu_ir, true); @@ -1780,7 +1771,7 @@ static bool vtd_switch_address_space(VTDAddressSpace = *as) * We enable per as memory region (iommu_ir_fault) for catching * the translation for interrupt range through PASID + PT. */ - if (pt && as->pasid !=3D PCI_NO_PASID) { + if (pt && as->pasid !=3D IOMMU_NO_PASID) { memory_region_set_enabled(&as->iommu_ir_fault, true); } else { memory_region_set_enabled(&as->iommu_ir_fault, false); @@ -1892,7 +1883,7 @@ static VTDAddressSpace *vtd_get_as_by_sid_and_pasid(I= ntelIOMMUState *s, =20 VTDAddressSpace *vtd_get_as_by_sid(IntelIOMMUState *s, uint16_t sid) { - return vtd_get_as_by_sid_and_pasid(s, sid, PCI_NO_PASID); + return vtd_get_as_by_sid_and_pasid(s, sid, IOMMU_NO_PASID); } =20 static void vtd_pt_enable_fast_path(IntelIOMMUState *s, uint16_t source_id) @@ -2109,7 +2100,7 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *v= td_as, PCIBus *bus, bool is_fpd_set =3D false; bool reads =3D true; bool writes =3D true; - bool is_pasid =3D pasid !=3D PCI_NO_PASID; + bool is_pasid =3D pasid !=3D IOMMU_NO_PASID; uint8_t access_flags, pgtt; VTDIOTLBEntry *iotlb_entry; uint64_t xlat, size; @@ -2122,10 +2113,6 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *= vtd_as, PCIBus *bus, =20 vtd_iommu_lock(s); =20 - if (pasid =3D=3D PCI_NO_PASID && s->root_scalable) { - pasid =3D IOMMU_NO_PASID; - } - /* Try to fetch pte from IOTLB */ iotlb_entry =3D vtd_lookup_iotlb(s, source_id, pasid, addr); if (iotlb_entry) { @@ -2490,7 +2477,7 @@ static void vtd_iotlb_domain_invalidate(IntelIOMMUSta= te *s, uint16_t domain_id) /* * There is no pasid field in iotlb invalidation descriptor, so IOMMU_NO_P= ASID * is passed as parameter. Piotlb invalidation supports pasid, pasid in its - * descriptor is passed which should not be PCI_NO_PASID. + * descriptor is passed. */ static void vtd_iotlb_page_invalidate_notify(IntelIOMMUState *s, uint16_t domain_id, hwaddr ad= dr, @@ -2504,48 +2491,41 @@ static void vtd_iotlb_page_invalidate_notify(IntelI= OMMUState *s, QLIST_FOREACH(vtd_as, &(s->vtd_as_with_notifiers), next) { ret =3D vtd_dev_to_context_entry(s, pci_bus_num(vtd_as->bus), vtd_as->devfn, &ce); - if (!ret && domain_id =3D=3D vtd_get_domain_id(s, &ce, vtd_as->pas= id)) { - /* - * In legacy mode, vtd_as->pasid =3D=3D pasid is always true. - * In scalable mode, for vtd address space backing a PCI - * device without pasid, needs to compare pasid with - * IOMMU_NO_PASID of this device. - */ - if (!(vtd_as->pasid =3D=3D pasid || - (vtd_as->pasid =3D=3D PCI_NO_PASID && pasid =3D=3D IOMMU= _NO_PASID))) { - continue; - } + if (ret || vtd_as->pasid !=3D pasid || + domain_id !=3D vtd_get_domain_id(s, &ce, pasid)) { + continue; + } =20 - if (vtd_as_has_map_notifier(vtd_as)) { - /* - * When first stage translation is off, as long as we have= MAP - * notifications registered in any of our IOMMU notifiers, - * we need to sync the shadow page table. Otherwise VFIO - * device attaches to nested page table instead of shadow - * page table, so no need to sync. - */ - if (!s->fsts || !s->root_scalable) { - vtd_sync_shadow_page_table_range(vtd_as, &ce, addr, si= ze); - } - } else { - /* - * For UNMAP-only notifiers, we don't need to walk the - * page tables. We just deliver the PSI down to - * invalidate caches. - */ - const IOMMUTLBEvent event =3D { - .type =3D IOMMU_NOTIFIER_UNMAP, - .entry =3D { - .target_as =3D &address_space_memory, - .iova =3D addr, - .translated_addr =3D 0, - .addr_mask =3D size - 1, - .perm =3D IOMMU_NONE, - .pasid =3D vtd_as->pasid, - }, - }; - memory_region_notify_iommu(&vtd_as->iommu, 0, event); + if (vtd_as_has_map_notifier(vtd_as)) { + /* + * When first stage translation is off, as long as we have MAP + * notifications registered in any of our IOMMU notifiers, + * we need to sync the shadow page table. Otherwise VFIO + * device attaches to nested page table instead of shadow + * page table, so no need to sync. + */ + if (!s->fsts || !s->root_scalable) { + vtd_sync_shadow_page_table_range(vtd_as, &ce, addr, size); } + } else { + /* + * For UNMAP-only notifiers, we don't need to walk the + * page tables. We just deliver the PSI down to + * invalidate caches. + */ + const IOMMUTLBEvent event =3D { + .type =3D IOMMU_NOTIFIER_UNMAP, + .entry =3D { + .target_as =3D &address_space_memory, + .iova =3D addr, + .translated_addr =3D 0, + .addr_mask =3D size - 1, + .perm =3D IOMMU_NONE, + /* Other sub-systems use PCI pasid */ + .pasid =3D pasid =3D=3D IOMMU_NO_PASID ? PCI_NO_PASID = : pasid, + }, + }; + memory_region_notify_iommu(&vtd_as->iommu, 0, event); } } } @@ -3008,6 +2988,7 @@ static void vtd_piotlb_pasid_invalidate(IntelIOMMUSta= te *s, VTDIOTLBPageInvInfo info; VTDAddressSpace *vtd_as; VTDContextEntry ce; + int ret; =20 info.domain_id =3D domain_id; info.pasid =3D pasid; @@ -3020,17 +3001,15 @@ static void vtd_piotlb_pasid_invalidate(IntelIOMMUS= tate *s, vtd_iommu_unlock(s); =20 QLIST_FOREACH(vtd_as, &s->vtd_as_with_notifiers, next) { - if (!vtd_dev_to_context_entry(s, pci_bus_num(vtd_as->bus), - vtd_as->devfn, &ce) && - domain_id =3D=3D vtd_get_domain_id(s, &ce, vtd_as->pasid)) { - if ((vtd_as->pasid !=3D PCI_NO_PASID || pasid !=3D IOMMU_NO_PA= SID) && - vtd_as->pasid !=3D pasid) { - continue; - } + ret =3D vtd_dev_to_context_entry(s, pci_bus_num(vtd_as->bus), + vtd_as->devfn, &ce); + if (ret || vtd_as->pasid !=3D pasid || + domain_id !=3D vtd_get_domain_id(s, &ce, pasid)) { + continue; + } =20 - if (!s->fsts || !vtd_as_has_map_notifier(vtd_as)) { - vtd_address_space_sync(vtd_as); - } + if (!s->fsts || !vtd_as_has_map_notifier(vtd_as)) { + vtd_address_space_sync(vtd_as); } } } @@ -3239,7 +3218,7 @@ static bool vtd_process_pasid_desc(IntelIOMMUState *s, /* PASID selective implies a DID selective */ trace_vtd_inv_desc_pasid_cache_psi(did, pasid); pc_info.did =3D did; - pc_info.pasid =3D pasid ?: PCI_NO_PASID; + pc_info.pasid =3D pasid; break; =20 case VTD_INV_DESC_PASIDC_G_GLOBAL: @@ -3291,6 +3270,7 @@ static void do_invalidate_device_tlb(VTDAddressSpace = *vtd_dev_as, * ... */ =20 + uint32_t pasid =3D vtd_dev_as->pasid; IOMMUTLBEvent event; uint64_t sz; =20 @@ -3307,7 +3287,8 @@ static void do_invalidate_device_tlb(VTDAddressSpace = *vtd_dev_as, event.entry.iova =3D addr; event.entry.perm =3D IOMMU_NONE; event.entry.translated_addr =3D 0; - event.entry.pasid =3D vtd_dev_as->pasid; + /* Other sub-systems use PCI pasid */ + event.entry.pasid =3D pasid =3D=3D IOMMU_NO_PASID ? PCI_NO_PASID : pas= id; memory_region_notify_iommu(&vtd_dev_as->iommu, 0, event); } =20 @@ -3335,7 +3316,7 @@ static bool vtd_process_device_piotlb_desc(IntelIOMMU= State *s, sid =3D VTD_INV_DESC_PASID_DEVICE_IOTLB_SID(inv_desc->lo); if (global) { QLIST_FOREACH(vtd_dev_as, &s->vtd_as_with_notifiers, next) { - if ((vtd_dev_as->pasid !=3D PCI_NO_PASID) && + if ((vtd_dev_as->pasid !=3D IOMMU_NO_PASID) && (PCI_BUILD_BDF(pci_bus_num(vtd_dev_as->bus), vtd_dev_as->devfn) =3D=3D sid))= { do_invalidate_device_tlb(vtd_dev_as, size, addr); @@ -3983,13 +3964,12 @@ static void vtd_mem_write(void *opaque, hwaddr addr, } =20 static void vtd_prepare_identity_entry(hwaddr addr, IOMMUAccessFlags perm, - uint32_t pasid, IOMMUTLBEntry *io= tlb) + IOMMUTLBEntry *iotlb) { iotlb->iova =3D addr & VTD_PAGE_MASK_4K; iotlb->translated_addr =3D addr & VTD_PAGE_MASK_4K; iotlb->addr_mask =3D ~VTD_PAGE_MASK_4K; iotlb->perm =3D perm; - iotlb->pasid =3D pasid; } =20 static inline void vtd_prepare_error_entry(IOMMUTLBEntry *entry) @@ -4001,6 +3981,10 @@ static inline void vtd_prepare_error_entry(IOMMUTLBE= ntry *entry) entry->pasid =3D PCI_NO_PASID; } =20 +/* + * This function returns translation result to other sub-system such as PC= I, + * so iommu pasid is converted to PCI pasid and returned in IOMMUTLBEntry. + */ static IOMMUTLBEntry vtd_iommu_translate(IOMMUMemoryRegion *iommu, hwaddr = addr, IOMMUAccessFlags flag, int iommu_= idx) { @@ -4009,7 +3993,7 @@ static IOMMUTLBEntry vtd_iommu_translate(IOMMUMemoryR= egion *iommu, hwaddr addr, IOMMUTLBEntry iotlb =3D { /* We'll fill in the rest later. */ .target_as =3D &address_space_memory, - .pasid =3D vtd_as->pasid, + .pasid =3D vtd_as->pasid =3D=3D IOMMU_NO_PASID ? PCI_NO_PASID : vt= d_as->pasid, }; bool success; bool is_write =3D flag & IOMMU_WO; @@ -4017,9 +4001,8 @@ static IOMMUTLBEntry vtd_iommu_translate(IOMMUMemoryR= egion *iommu, hwaddr addr, if (likely(s->dmar_enabled)) { /* Only support translated requests in scalable mode */ if (iommu_idx =3D=3D VTD_IDX_TRANSLATED && s->root_scalable) { - if (vtd_as->pasid =3D=3D PCI_NO_PASID) { - vtd_prepare_identity_entry(addr, IOMMU_RW, PCI_NO_PASID, - &iotlb); + if (vtd_as->pasid =3D=3D IOMMU_NO_PASID) { + vtd_prepare_identity_entry(addr, IOMMU_RW, &iotlb); success =3D true; } else { vtd_prepare_error_entry(&iotlb); @@ -4034,7 +4017,7 @@ static IOMMUTLBEntry vtd_iommu_translate(IOMMUMemoryR= egion *iommu, hwaddr addr, } } else { /* DMAR disabled, passthrough, use 4k-page*/ - vtd_prepare_identity_entry(addr, IOMMU_RW, vtd_as->pasid, &iotlb); + vtd_prepare_identity_entry(addr, IOMMU_RW, &iotlb); success =3D true; } =20 @@ -4460,7 +4443,7 @@ static void vtd_report_sid_ir_illegal_access(IntelIOM= MUState *s, uint16_t sid, } =20 vtd_report_fault(s, VTD_FR_SM_INTERRUPT_ADDR, is_fpd_set, sid, addr, - is_write, pasid !=3D PCI_NO_PASID, pasid); + is_write, pasid !=3D IOMMU_NO_PASID, pasid); } =20 static void vtd_report_ir_illegal_access(VTDAddressSpace *vtd_as, @@ -4488,7 +4471,6 @@ static MemTxResult vtd_mem_ir_write(void *opaque, hwa= ddr addr, int ret =3D 0; MSIMessage from =3D {}, to =3D {}; uint16_t sid =3D X86_IOMMU_SID_INVALID; - uint32_t pasid; =20 from.address =3D (uint64_t) addr + VTD_INTERRUPT_ADDR_FIRST; from.data =3D (uint32_t) value; @@ -4496,11 +4478,11 @@ static MemTxResult vtd_mem_ir_write(void *opaque, h= waddr addr, if (!attrs.unspecified) { /* We have explicit Source ID */ sid =3D attrs.requester_id; - pasid =3D attrs.pid !=3D 0 ? attrs.pid : PCI_NO_PASID; =20 if (attrs.address_type =3D=3D PCI_AT_TRANSLATED && sid !=3D X86_IOMMU_SID_INVALID) { - vtd_report_sid_ir_illegal_access(s, sid, pasid, from.address, = true); + vtd_report_sid_ir_illegal_access(s, sid, attrs.pid, from.addre= ss, + true); return MEMTX_ERROR; } } @@ -4562,9 +4544,19 @@ static const MemoryRegionOps vtd_mem_ir_fault_ops = =3D { }, }; =20 +/* + * This function is called by many PCIIOMMUOps callbacks to get + * VTDAddressSpace or create one if non-exist. Those callbacks are + * used by PCI sub-system and are passed in a PCI pasid value. + * + * VTD honors iommu pasid, so the first thing is to convert PCI + * pasid to iommu pasid. + */ VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, PCIBus *bus, int devfn, unsigned int pasid) { + pasid =3D pasid =3D=3D PCI_NO_PASID ? IOMMU_NO_PASID : pasid; + /* * We can't simply use sid here since the bus number might not be * initialized by the guest. @@ -4606,7 +4598,7 @@ VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, = PCIBus *bus, new_key->devfn =3D devfn; new_key->pasid =3D pasid; =20 - if (pasid =3D=3D PCI_NO_PASID) { + if (pasid =3D=3D IOMMU_NO_PASID) { snprintf(name, sizeof(name), "vtd-%02x.%x", PCI_SLOT(devfn), PCI_FUNC(devfn)); } else { @@ -5290,7 +5282,7 @@ error_get_fpd_and_report: vtd_ce_get_pasid_fpd(s, &ce, &is_fpd_set, vtd_as->pasid); error_report: vtd_report_fault(s, -ret, is_fpd_set, sid, addr, is_write, - vtd_as->pasid !=3D PCI_NO_PASID, vtd_as->pasid); + vtd_as->pasid !=3D IOMMU_NO_PASID, vtd_as->pasid); return false; } =20 @@ -5381,7 +5373,7 @@ static int vtd_pri_request_page(PCIBus *bus, void *op= aque, int devfn, */ =20 /* We do not support PRI without PASID */ - if (vtd_as->pasid =3D=3D PCI_NO_PASID) { + if (vtd_as->pasid =3D=3D IOMMU_NO_PASID) { return -EPERM; } if (exec_req && !is_read) { diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c index 14180f61cd..05b927f303 100644 --- a/hw/i386/intel_iommu_accel.c +++ b/hw/i386/intel_iommu_accel.c @@ -207,7 +207,7 @@ static void vtd_flush_host_piotlb_locked(gpointer key, = gpointer value, return; } =20 - assert(vtd_as->pasid =3D=3D PCI_NO_PASID); + assert(vtd_as->pasid =3D=3D IOMMU_NO_PASID); =20 /* Nothing to do if there is no first stage HWPT attached */ if (!pc_entry->valid || diff --git a/include/system/memory.h b/include/system/memory.h index 1417132f6d..1edb38b07d 100644 --- a/include/system/memory.h +++ b/include/system/memory.h @@ -150,7 +150,7 @@ struct IOMMUTLBEntry { hwaddr translated_addr; hwaddr addr_mask; /* 0xfff =3D 4k translation */ IOMMUAccessFlags perm; - uint32_t pasid; + uint32_t pasid; /* PCI pasid */ }; =20 /* --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464264; cv=none; d=zohomail.com; s=zohoarc; b=Pa8wvEf9u6v4dXlE1+WCcZMNo18KDAUCkTOPtGEPnb03OdPxT8i6lYcG/Xg1wDLH6x94oiGlZcRZgsidHX1+YHmxcT4N3mGJvz7lp2oQW83+ZS1GPp3NTjPS62aMQckz+Ih4YP2h8HfKK03iURNlLHHxdCLPHvJfhpCDXeTeK+8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464264; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NG9quG3Y658i2mi88rtVLcLBN8uSecldu1LwBLoJdEA=; b=gYPEILiomsgH43rNc/JLSW1yTK7UK3dexKjWqpSNxqfTDzRZ31znhjWTvHWUnoSkPRGeaHyGp2ESFqJSWe3GjIMMdraRIJJzanLtGuRhkE05WWtTY358cL5Fm2RGZyvZ5JxDjcMCxICulNZgLJyRqPGeRUwHlYTwQ6buhvnndCQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464263996421.2873556260448; Sun, 14 Jun 2026 12:11:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAE-0007Wi-1e; Sun, 14 Jun 2026 15:06:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAB-0007Vz-5v for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqA8-0001iT-JZ for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:30 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-685-Nog-KKdZNXimMYNNky-fJA-1; Sun, 14 Jun 2026 15:06:26 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-46011aa5000so1114792f8f.3 for ; Sun, 14 Jun 2026 12:06:25 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f26392esm26626507f8f.3.2026.06.14.12.06.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463987; 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: in-reply-to:in-reply-to:references:references; bh=NG9quG3Y658i2mi88rtVLcLBN8uSecldu1LwBLoJdEA=; b=BDiaZXrn15W8M9yb8gsL1azdi7yNvXxNwwtjlmNLAFEypWXZ0Q9UnDuJxotnd+C6yNTsCS NShT/FmnJbwPKlYpI8zxVMPgYxfMYCwdRVDu8ELskhNupbRKe+pslY299KDtEFFDQ+Y9wo JNqufNEKcTNBdQstyk2I3kVw5uwxp+w= X-MC-Unique: Nog-KKdZNXimMYNNky-fJA-1 X-Mimecast-MFC-AGG-ID: Nog-KKdZNXimMYNNky-fJA_1781463985 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463985; x=1782068785; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=NG9quG3Y658i2mi88rtVLcLBN8uSecldu1LwBLoJdEA=; b=Zz59lsmxLGVrHdggANCloeAI3wotCFBbBaQLCeIq70jgvoG/NmjSnew6BR8rbraaws 4sl0efrTmtHwQePxpCf2xK+6S0OOuA6lhPL6K6n9Xvuiu8nT7fTfOrYhQKR4zOOaHchW Wd4INgz5GyKXzGA4I+1qtHqSdk84wZb04vt1tzxu3gW55yUmsvCxCzKUstjEN0IXeK5J +mXcUmikiCiZ8uhezjSeDi/oXktB4jwyRN47NExH0O+pzpJpmpvKlqVgXDxabsIzyPOC DxbWINqyvIsy7GD+IrpfW4pcxHaOlALU08TT8lRvj6ujGhRB9R7osvCk3LcLEIlgZR+N pqeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463985; x=1782068785; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NG9quG3Y658i2mi88rtVLcLBN8uSecldu1LwBLoJdEA=; b=lPMFOF6YCH/SMN+ApxRdBf86DPUXXn2lDWK1Pp947BNHX+suf9YrPrtlin0r3WJFFy Tf9smTAxNI4djuS9U+XMWNsAlMUCZqdMFvfAp48VoAmaUP2T0GuKOpRf78fZaQbkjrXc p8Rsbf7zHTkOBxCXo7YexrUKiJu6L3UtZxnX6neeUAjRsVQXhHFRRJ0HjNkyLBtBMPfi 90rjJMESm1LCAmrJK3gMJW/dqOHXoBPpWHkFFErcvVjUR76Ykumq9N47yFHGiUqmw3L9 zHknhWgmrTsL4AIYBa4QCBuqPMThCvmfjp59FohOu/E2H62uMqEvdT/dZg6okxQgu1lc KRSA== X-Gm-Message-State: AOJu0Yy4cBLEWPVXgEvvFxzp2KmLp+bcdS/6L0kCY7JZZvQI6EfShb6+ BR3CeIg1hNotouNOx2zf3ZiqidCPsEZg4vPuO1Bg+bY7Xn7Sbm+opJL/OOOXi3koYOHZbeGKvg8 UE9woFWB9pkoze/a/13loHKW1aGC2O4TRbcrRIb5+jq2fWrsmx5JWm0lHgDnwcVBRCHtpXJShFp PGPGi3xTJmHBsTI8Y+o8ap4IUd+8m3U62Z/Q== X-Gm-Gg: Acq92OFAts5N19+DnH2IFrWVTugZQ+NsHJttHIN1+WYLFUMH+ooI7Q62pYDR/95dehT qPgy50suuFOQ7A8HZVT750xnH+EGJ8KkLYjkBtR96eevlbBGz42AA7NVAKYzYT1GhjddF5VERl1 AqfDxSoQ6MHIOiqgmldYwDmwLAbVaYmSlCpcyyM/w8GsOXUGzDLw7FKNumiWXT5bNqtZMcvhK+b Q6BFkrztWJOoaDoQJ71J/YE1yJfdsObYmnTNsZ3CuvHxI25Xt+6YfnavShAzMBrZWSoKD3vmWbI ThZ89qw4AZdb6ffBCV+m2oyWgGtC9uNlLScGB4pOv+TxJB/lIGZtLGW6vr4KmaGQrqZpVanR58n wvHMsWi5NFsC7Kx+nOsnqe+Qad46ZuIxTfUds8nWZP0Q= X-Received: by 2002:a05:6000:25fa:b0:45e:f5b6:7bf9 with SMTP id ffacd0b85a97d-46074b84e56mr8779308f8f.31.1781463984723; Sun, 14 Jun 2026 12:06:24 -0700 (PDT) X-Received: by 2002:a05:6000:25fa:b0:45e:f5b6:7bf9 with SMTP id ffacd0b85a97d-46074b84e56mr8779274f8f.31.1781463984112; Sun, 14 Jun 2026 12:06:24 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:21 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Yi Liu , Xudong Hao , Jason Wang , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Paolo Bonzini , Richard Henderson Subject: [PULL 016/106] intel_iommu_accel: Handle PASID entry addition for pc_inv_dsc request Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464265398158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan Structure VTDAddressSpace includes some elements suitable for emulated device and passthrough device without PASID, e.g., address space, different memory regions, etc, it is also protected by vtd iommu lock, all these are useless and become a burden for passthrough device with PASID. When there are lots of PASIDs used in one device, the AS and MRs are all registered to memory core and impact the whole system performance. So instead of using VTDAddressSpace to cache pasid entry for each pasid of a passthrough device, we define a light weight structure VTDAccelPASIDCacheEntry with only necessary elements for each pasid. We will use this struct as a parameter to conduct binding/unbinding to nested hwpt and to record the current bound nested hwpt. It's also designed to support IOMMU_NO_PASID. VTDAccelPASIDCacheEntry is designed to only be used in intel_iommu_accel.c, similarly VTDPASIDCacheEntry should only be used in hw/i386/intel_iommu.c When guest creates new PASID entries, QEMU will capture the pc_inv_dsc (pasid cache invalidation) request, walk through each pasid in each passthrough device for valid pasid entries, create a new VTDAccelPASIDCacheEntry if not existing yet. IOMMU_NO_PASID of passthrough device still need to register MRs in case guest does not operate in scalable mode. So for IOMMU_NO_PASID, we have both VTDPASIDCacheEntry and VTDAccelPASIDCacheEntry. Co-developed-by: Yi Liu Signed-off-by: Yi Liu Signed-off-by: Zhenzhong Duan Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-12-zhenzhong.duan@intel.com> --- hw/i386/intel_iommu.c | 3 + hw/i386/intel_iommu_accel.c | 156 +++++++++++++++++++++++++++++++++ hw/i386/intel_iommu_accel.h | 13 +++ hw/i386/intel_iommu_internal.h | 8 ++ 4 files changed, 180 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 88e0c58c08..8e034efdfc 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -3181,6 +3181,8 @@ static void vtd_pasid_cache_sync(IntelIOMMUState *s, = VTDPASIDCacheInfo *pc_info) g_hash_table_foreach(s->vtd_address_spaces, vtd_pasid_cache_sync_locke= d, pc_info); vtd_iommu_unlock(s); + + vtd_accel_pasid_cache_sync(s, pc_info); } =20 static void vtd_replay_pasid_bindings_all(IntelIOMMUState *s) @@ -4751,6 +4753,7 @@ static bool vtd_dev_set_iommu_device(PCIBus *bus, voi= d *opaque, int devfn, vtd_hiod->devfn =3D (uint8_t)devfn; vtd_hiod->iommu_state =3D s; vtd_hiod->hiod =3D hiod; + QLIST_INIT(&vtd_hiod->pasid_cache_list); =20 if (!vtd_check_hiod(s, vtd_hiod, errp)) { g_free(vtd_hiod); diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c index 05b927f303..d2653f22ee 100644 --- a/hw/i386/intel_iommu_accel.c +++ b/hw/i386/intel_iommu_accel.c @@ -259,6 +259,162 @@ void vtd_flush_host_piotlb_all_locked(IntelIOMMUState= *s, uint16_t domain_id, vtd_flush_host_piotlb_locked, &piotlb_info); } =20 +static void vtd_accel_fill_pc(VTDHostIOMMUDevice *vtd_hiod, uint32_t pasid, + VTDPASIDEntry *pe) +{ + VTDAccelPASIDCacheEntry *vtd_pce; + + QLIST_FOREACH(vtd_pce, &vtd_hiod->pasid_cache_list, next) { + if (vtd_pce->pasid =3D=3D pasid) { + if (vtd_pasid_entry_compare(pe, &vtd_pce->pasid_entry)) { + vtd_pce->pasid_entry =3D *pe; + } + return; + } + } + + vtd_pce =3D g_malloc0(sizeof(VTDAccelPASIDCacheEntry)); + vtd_pce->vtd_hiod =3D vtd_hiod; + vtd_pce->pasid =3D pasid; + vtd_pce->pasid_entry =3D *pe; + QLIST_INSERT_HEAD(&vtd_hiod->pasid_cache_list, vtd_pce, next); +} + +/* + * This function walks over PASID range within [start, end) in a single + * PASID table for entries matching @info type/did, then create + * VTDAccelPASIDCacheEntry if not exist yet. + */ +static void vtd_sm_pasid_table_walk_one(VTDHostIOMMUDevice *vtd_hiod, + dma_addr_t pt_base, int start, int= end, + VTDPASIDCacheInfo *info) +{ + IntelIOMMUState *s =3D vtd_hiod->iommu_state; + VTDPASIDEntry pe; + int pasid; + + for (pasid =3D start; pasid < end; pasid++) { + if (vtd_get_pe_in_pasid_leaf_table(s, pasid, pt_base, &pe) || + !vtd_pe_present(&pe)) { + continue; + } + + if ((info->type =3D=3D VTD_INV_DESC_PASIDC_G_DSI || + info->type =3D=3D VTD_INV_DESC_PASIDC_G_PASID_SI) && + (info->did !=3D VTD_SM_PASID_ENTRY_DID(&pe))) { + /* + * VTD_PASID_CACHE_DOMSI and VTD_PASID_CACHE_PASIDSI + * requires domain id check. If domain id check fail, + * go to next pasid. + */ + continue; + } + + vtd_accel_fill_pc(vtd_hiod, pasid, &pe); + } +} + +/* + * In VT-d scalable mode translation, PASID dir + PASID table is used. + * This function aims at looping over a range of PASIDs in the given + * two level table to identify the pasid config in guest. + */ +static void vtd_sm_pasid_table_walk(VTDHostIOMMUDevice *vtd_hiod, + dma_addr_t pdt_base, int start, int en= d, + VTDPASIDCacheInfo *info) +{ + VTDPASIDDirEntry pdire; + int pasid =3D start; + int pasid_next; + dma_addr_t pt_base; + + while (pasid < end) { + pasid_next =3D (pasid + VTD_PASID_TABLE_ENTRY_NUM) & + ~(VTD_PASID_TABLE_ENTRY_NUM - 1); + pasid_next =3D pasid_next < end ? pasid_next : end; + + if (!vtd_get_pdire_from_pdir_table(pdt_base, pasid, &pdire) + && vtd_pdire_present(&pdire)) { + pt_base =3D pdire.val & VTD_PASID_TABLE_BASE_ADDR_MASK; + vtd_sm_pasid_table_walk_one(vtd_hiod, pt_base, pasid, pasid_ne= xt, + info); + } + pasid =3D pasid_next; + } +} + +static void vtd_accel_replay_pasid_bind_for_dev(VTDHostIOMMUDevice *vtd_hi= od, + int start, int end, + VTDPASIDCacheInfo *pc_info) +{ + IntelIOMMUState *s =3D vtd_hiod->iommu_state; + VTDContextEntry ce; + int dev_max_pasid =3D 1 << vtd_hiod->hiod->caps.max_pasid_log2; + + if (!vtd_dev_to_context_entry(s, pci_bus_num(vtd_hiod->bus), + vtd_hiod->devfn, &ce)) { + VTDPASIDCacheInfo walk_info =3D *pc_info; + uint32_t ce_max_pasid =3D vtd_sm_ce_get_pdt_entry_num(&ce) * + VTD_PASID_TABLE_ENTRY_NUM; + + end =3D MIN(end, MIN(dev_max_pasid, ce_max_pasid)); + + vtd_sm_pasid_table_walk(vtd_hiod, VTD_CE_GET_PASID_DIR_TABLE(&ce), + start, end, &walk_info); + } +} + +/* + * This function replays the guest pasid bindings by walking the two level + * guest PASID table. For each valid pasid entry, it creates an entry + * VTDAccelPASIDCacheEntry dynamically if not exist yet. This entry holds + * info specific to a pasid + */ +void vtd_accel_pasid_cache_sync(IntelIOMMUState *s, VTDPASIDCacheInfo *pc_= info) +{ + int start =3D IOMMU_NO_PASID, end =3D 1 << s->pasid; + VTDHostIOMMUDevice *vtd_hiod; + GHashTableIter hiod_it; + + if (!s->fsts) { + return; + } + + switch (pc_info->type) { + case VTD_INV_DESC_PASIDC_G_PASID_SI: + start =3D pc_info->pasid; + end =3D pc_info->pasid + 1; + /* fall through */ + case VTD_INV_DESC_PASIDC_G_DSI: + /* + * loop all assigned devices, do domain id check in + * vtd_sm_pasid_table_walk_one() after get pasid entry. + */ + break; + case VTD_INV_DESC_PASIDC_G_GLOBAL: + /* loop all assigned devices */ + break; + default: + g_assert_not_reached(); + } + + /* + * Loop all the vtd_hiod instances to sync the "pasid cache" per the + * guest pasid configuration. + * + * VTD translation callback never accesses vtd_hiod and its correspond= ing + * cached pasid entry, so no iommu lock needed here. + */ + g_hash_table_iter_init(&hiod_it, s->vtd_host_iommu_dev); + while (g_hash_table_iter_next(&hiod_it, NULL, (void **)&vtd_hiod)) { + if (!object_dynamic_cast(OBJECT(vtd_hiod->hiod), + TYPE_HOST_IOMMU_DEVICE_IOMMUFD)) { + continue; + } + vtd_accel_replay_pasid_bind_for_dev(vtd_hiod, start, end, pc_info); + } +} + static uint64_t vtd_get_host_iommu_quirks(uint32_t type, void *caps, uint32_t size) { diff --git a/hw/i386/intel_iommu_accel.h b/hw/i386/intel_iommu_accel.h index e5f0b077b4..c9b1823745 100644 --- a/hw/i386/intel_iommu_accel.h +++ b/hw/i386/intel_iommu_accel.h @@ -12,6 +12,13 @@ #define HW_I386_INTEL_IOMMU_ACCEL_H #include CONFIG_DEVICES =20 +typedef struct VTDAccelPASIDCacheEntry { + VTDHostIOMMUDevice *vtd_hiod; + VTDPASIDEntry pasid_entry; + uint32_t pasid; + QLIST_ENTRY(VTDAccelPASIDCacheEntry) next; +} VTDAccelPASIDCacheEntry; + #ifdef CONFIG_VTD_ACCEL bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMMUDevice *vtd_hiod, Error **errp); @@ -20,6 +27,7 @@ bool vtd_propagate_guest_pasid(VTDAddressSpace *vtd_as, E= rror **errp); void vtd_flush_host_piotlb_all_locked(IntelIOMMUState *s, uint16_t domain_= id, uint32_t pasid, hwaddr addr, uint64_t npages, bool ih); +void vtd_accel_pasid_cache_sync(IntelIOMMUState *s, VTDPASIDCacheInfo *pc_= info); void vtd_iommu_ops_update_accel(PCIIOMMUOps *ops); #else static inline bool vtd_check_hiod_accel(IntelIOMMUState *s, @@ -49,6 +57,11 @@ static inline void vtd_flush_host_piotlb_all_locked(Inte= lIOMMUState *s, { } =20 +static inline void vtd_accel_pasid_cache_sync(IntelIOMMUState *s, + VTDPASIDCacheInfo *pc_info) +{ +} + static inline void vtd_iommu_ops_update_accel(PCIIOMMUOps *ops) { } diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index ee59df09f8..9307825017 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -615,6 +615,7 @@ typedef struct VTDRootEntry VTDRootEntry; #define VTD_CTX_ENTRY_LEGACY_SIZE 16 #define VTD_CTX_ENTRY_SCALABLE_SIZE 32 =20 +#define VTD_SM_CONTEXT_ENTRY_PDTS(x) extract64((x)->val[0], 9, 3) #define VTD_SM_CONTEXT_ENTRY_RSVD_VAL0(aw) (0x1e0ULL | ~VTD_HAW_MASK(aw)) #define VTD_SM_CONTEXT_ENTRY_RSVD_VAL1 0xffffffffffe00000ULL #define VTD_SM_CONTEXT_ENTRY_PRE 0x10ULL @@ -645,6 +646,7 @@ typedef struct VTDPIOTLBInvInfo { #define VTD_PASID_DIR_BITS_MASK (0x3fffULL) #define VTD_PASID_DIR_INDEX(pasid) (((pasid) >> 6) & VTD_PASID_DIR_BITS= _MASK) #define VTD_PASID_DIR_FPD (1ULL << 1) /* Fault Processing Disa= ble */ +#define VTD_PASID_TABLE_ENTRY_NUM (1ULL << 6) #define VTD_PASID_TABLE_BITS_MASK (0x3fULL) #define VTD_PASID_TABLE_INDEX(pasid) ((pasid) & VTD_PASID_TABLE_BITS_MASK) #define VTD_PASID_ENTRY_FPD (1ULL << 1) /* Fault Processing Disa= ble */ @@ -710,6 +712,7 @@ typedef struct VTDHostIOMMUDevice { PCIBus *bus; uint8_t devfn; HostIOMMUDevice *hiod; + QLIST_HEAD(, VTDAccelPASIDCacheEntry) pasid_cache_list; } VTDHostIOMMUDevice; =20 /* @@ -767,6 +770,11 @@ static inline int vtd_pasid_entry_compare(VTDPASIDEntr= y *p1, VTDPASIDEntry *p2) return memcmp(p1, p2, sizeof(*p1)); } =20 +static inline uint32_t vtd_sm_ce_get_pdt_entry_num(VTDContextEntry *ce) +{ + return 1U << (VTD_SM_CONTEXT_ENTRY_PDTS(ce) + 7); +} + int vtd_get_pdire_from_pdir_table(dma_addr_t pasid_dir_base, uint32_t pasi= d, VTDPASIDDirEntry *pdire); int vtd_get_pe_in_pasid_leaf_table(IntelIOMMUState *s, uint32_t pasid, --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464070; cv=none; d=zohomail.com; s=zohoarc; b=AfN91ICOYeM+4AZ01Y1ugSvScIVr1e98Cxm2nqMwa7zZGTIB1VFzlaw49f5z2kxMwgT2fVej5opeiyL4jSEg0ZTRl92We6mJXch0wTnuRyr1nVzGRMkNLI5bnk5DXaBoZyslT1xlXlu+I6KyBw1sTxpi0+6XMCRY+G6DR8tJTT8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464070; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=34ZF7kP1Cw8CG+J52COEqtjiniPCM5H5FgXYvWHG2n4=; b=YJInEhUSLOB9Hz08d5riuucVxNjCZoVWNiHf5BhqPxMV8r8qUpgbZ0YbOn18CSWYUWBhlvSdDZrxXBYTu7f27+kAQBtp16kWlnEh3zI6xB1wZSp4rfoti8TijSPRflsjf3QzskPT9LcLeLV1zEkRa5N3RfEHm1x13z9I2UUqBFM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17814640702731001.7063006394408; Sun, 14 Jun 2026 12:07:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAD-0007Wd-9s; Sun, 14 Jun 2026 15:06:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAB-0007WJ-Jc for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqA9-0001iu-VZ for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:31 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-130-K3FVfLcgMges0skVipenRA-1; Sun, 14 Jun 2026 15:06:28 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490c840efe6so31074975e9.1 for ; Sun, 14 Jun 2026 12:06:28 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2b0d28sm27631245f8f.20.2026.06.14.12.06.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463989; 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: in-reply-to:in-reply-to:references:references; bh=34ZF7kP1Cw8CG+J52COEqtjiniPCM5H5FgXYvWHG2n4=; b=QKkozSJfNkDabvk1dJzM3F+YdTlmrdFm8BQl8MKlK3k/wEafR0wt2Zc3Y0sqzO+ucc5PX0 etHOigG+KijvtKyQXZZhYU5I5+c7Rg4iX7JBZ+q408715Dbbgrk+r3o21ePXM1iOxznRjU yqPBVrPo4doTVyoYCvKEi1Bv8dJXpB4= X-MC-Unique: K3FVfLcgMges0skVipenRA-1 X-Mimecast-MFC-AGG-ID: K3FVfLcgMges0skVipenRA_1781463987 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463987; x=1782068787; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=34ZF7kP1Cw8CG+J52COEqtjiniPCM5H5FgXYvWHG2n4=; b=EZYwi2ZWDa8zhc0EOtY1rqEQQdddDuhTwYYVN1DMFub6OLF4Rs30gS1BfMmU5KoiTd 8hLcRArB82OYF1aGdGB+a27JQmril30PqXBQGvNuy5LfuMiolY1sCXBtqAjmS2sYajg1 f1MUhmHyb3ZhJPx3nJRcR3i76IasAN9aJ0nKdLEDVoHMIL6vbK1Dl83ldss+Igz68oQr fXTSsHmsx3F1ZxDacPwph9cdBWqxJ+T2ZaNYXvckDF6LVDzNxEW3HYi0hOZC266Pczc8 GzaTVrDL6JsQk7T0qTgH5CXGOGu8yaNcGS1oxdBvngEcscMRvM53vNErxA7S+QJCisLc hZNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463987; x=1782068787; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=34ZF7kP1Cw8CG+J52COEqtjiniPCM5H5FgXYvWHG2n4=; b=lDAgyQZZTkZC7kdsCOeczo0sY05NovAV/6QEPQ3S/J+EUwtcXWQaViWNv0cb7Qh4QJ D/Pfv2Qkf0TfPGVly/eWAbsfNeHKNAeoD2JdghJA0QLllkQHF+aG3DQP/o9YqrIRw3uA ZPx5fvLYiWDxUVNjxD0XzNVkJvFtqhzDEzLS/luJmDH/OcZO+4tb9nKdTUXIk2bHhUy7 Uu44j9V6+egDsAgZvDJxjcl3smpPigobjWUCHa/xHXH09cKwoag5hWLFpuycXFjb5G/2 pdAbr0k/Ghtm2enYiUQcEZyXVLAXNVyT69aST9238Vy6xjiDBukxncAv9WRG8dAnA0ZE Rayw== X-Gm-Message-State: AOJu0YysDqeHw6L9j9ju2RBqsVt5FZ8pKUnrMVSykH+jkHvp72jlln5g QlI8LZ9nrvPxiOIDrchtf0puk/brAMEdIjlZyLdgeGaqsxkWu0iFX6PprZVQ5K4bjgfDM/8OZbm fVSPzpTZI17NMdyfNvoVMxbAQuRefpbL0hMF0MbJlLyXx+fRx8lII1Y89xwJt8cqTVBNc0ufyUC N9h9EmdDqgod8mRzTuPDS1ghmM6LoPmlEUAg== X-Gm-Gg: Acq92OGttgCgoCUFfoIkepIL3v87pDRD1fi0M/Zctev/CJA4GgbEPLmnC1vN/76JPYr KH31vgMa11scC77OeEa3h+CCA0vSrn7AVGdTBf3HarnOkKl81cLdwLdhG0NUyuIX9bAbScbfLFW dFv7w1J3LjOOT/60OBPU0PIsjbiaHnGei3kSXODLuN7wFQ9HxEY6W+80u+d0NZQdHozas5rS2u8 RLRdcplSvFED+lA7V0sesLezx6DML8Ozz00LYSonTO9t0jssXV/L9lJ/zMRbaiKy33luvOqmx4x VeD/aUdZINGCJqTR5LS9rnrjKvn1CqLD56I0BB+EfRRp1juNhfBQ8OXgLjlbutM6JXAF3/brPoP WD0lUvgzWaqkpuGet0x6xTOl5uJFADJMK3J3wgg3/gro= X-Received: by 2002:a05:600c:340a:b0:490:4035:323 with SMTP id 5b1f17b1804b1-490ea9dc03amr87178365e9.9.1781463986868; Sun, 14 Jun 2026 12:06:26 -0700 (PDT) X-Received: by 2002:a05:600c:340a:b0:490:4035:323 with SMTP id 5b1f17b1804b1-490ea9dc03amr87178155e9.9.1781463986397; Sun, 14 Jun 2026 12:06:26 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:24 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Yi Liu , Xudong Hao , Jason Wang , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Paolo Bonzini , Richard Henderson Subject: [PULL 017/106] intel_iommu_accel: Handle PASID entry removal for pc_inv_dsc request Message-ID: <8f3301bde02620fcbd4ad337bb2cb9505fa2060f.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464070541158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan When guest deletes PASID entries, QEMU will capture the pasid cache invalidation request, walk through pasid_cache_list in each passthrough device to find stale VTDAccelPASIDCacheEntry and delete them. Co-developed-by: Yi Liu Signed-off-by: Yi Liu Signed-off-by: Zhenzhong Duan Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-13-zhenzhong.duan@intel.com> --- hw/i386/intel_iommu_accel.c | 61 +++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c index d2653f22ee..ed0d6bda7e 100644 --- a/hw/i386/intel_iommu_accel.c +++ b/hw/i386/intel_iommu_accel.c @@ -280,6 +280,59 @@ static void vtd_accel_fill_pc(VTDHostIOMMUDevice *vtd_= hiod, uint32_t pasid, QLIST_INSERT_HEAD(&vtd_hiod->pasid_cache_list, vtd_pce, next); } =20 +static void vtd_accel_delete_pc(VTDAccelPASIDCacheEntry *vtd_pce) +{ + QLIST_REMOVE(vtd_pce, next); + g_free(vtd_pce); +} + +static void +vtd_accel_pasid_cache_invalidate_one(VTDAccelPASIDCacheEntry *vtd_pce, + VTDPASIDCacheInfo *pc_info) +{ + VTDHostIOMMUDevice *vtd_hiod =3D vtd_pce->vtd_hiod; + VTDPASIDEntry pe; + uint16_t did; + + /* + * VTD_INV_DESC_PASIDC_G_DSI and VTD_INV_DESC_PASIDC_G_PASID_SI require + * DID check. If DID doesn't match the value in cache or memory, then + * it's not a pasid entry we want to invalidate. + */ + switch (pc_info->type) { + case VTD_INV_DESC_PASIDC_G_PASID_SI: + if (pc_info->pasid !=3D vtd_pce->pasid) { + return; + } + /* Fall through */ + case VTD_INV_DESC_PASIDC_G_DSI: + did =3D VTD_SM_PASID_ENTRY_DID(&vtd_pce->pasid_entry); + if (pc_info->did !=3D did) { + return; + } + } + + if (vtd_dev_get_pe_from_pasid(vtd_hiod->iommu_state, vtd_hiod->bus, + vtd_hiod->devfn, vtd_pce->pasid, &pe)) { + /* + * No valid pasid entry in guest memory. e.g. pasid entry was modi= fied + * to be either all-zero or non-present. Either case means existing + * pasid cache should be invalidated. + */ + vtd_accel_delete_pc(vtd_pce); + } +} + +static void vtd_accel_pasid_cache_invalidate(VTDHostIOMMUDevice *vtd_hiod, + VTDPASIDCacheInfo *pc_info) +{ + VTDAccelPASIDCacheEntry *vtd_pce, *next; + + QLIST_FOREACH_SAFE(vtd_pce, &vtd_hiod->pasid_cache_list, next, next) { + vtd_accel_pasid_cache_invalidate_one(vtd_pce, pc_info); + } +} + /* * This function walks over PASID range within [start, end) in a single * PASID table for entries matching @info type/did, then create @@ -411,6 +464,14 @@ void vtd_accel_pasid_cache_sync(IntelIOMMUState *s, VT= DPASIDCacheInfo *pc_info) TYPE_HOST_IOMMU_DEVICE_IOMMUFD)) { continue; } + + /* + * The replay path inevitably needs to iterate through existing + * PASID cache entries. Since cached PASID entries that are marked + * for removal don't need to be iterated, we intentionally handle + * removals before additions to optimize the replay process. + */ + vtd_accel_pasid_cache_invalidate(vtd_hiod, pc_info); vtd_accel_replay_pasid_bind_for_dev(vtd_hiod, start, end, pc_info); } } --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464190; cv=none; d=zohomail.com; s=zohoarc; b=JygQnI18qoOHbhrShSEfCNT5bwWAGpWFShm1T1D6rU6PHD9WJAsG+Ku1cKKO6YVWY1Ao1IeXeq4fL3k6jLR8NnWY2HiyNRz99Vur6fSOr2psyqmgM4pbmzKBPiHYh7pJoHMo+iGunu9+DcFPaafhoYusm4lbNb0WVRlVEusC004= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464190; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Fy9wZhglxIMjpKMCGO1yq1BTn0dcp39QWhOcas9r+Qs=; b=l+GO+/N2OSAELqOfh4kbNuCyE8G3VXtXnOqL2v3hDjLNlPRDBet3CAaK/xvKh2qCbZszKUYcd3ikAbtyIRTKlq4UUr7ZqG9eAVfXbs5aoYkMW007rZJGppIQhUYrJLx0g48H+rsAyHC/vacLAMsYbK4riqsJQ3r5zMGwI3/zc+Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464190002364.1104700190881; Sun, 14 Jun 2026 12:09:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAG-0007Y3-7D; Sun, 14 Jun 2026 15:06:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAE-0007XQ-LV for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:34 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAC-0001jD-EG for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:33 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-99-NsW3a6U8Ot6VJSFE4cm96Q-1; Sun, 14 Jun 2026 15:06:30 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-46067b07571so1599888f8f.1 for ; Sun, 14 Jun 2026 12:06:30 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2d9becsm25980565f8f.34.2026.06.14.12.06.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463991; 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: in-reply-to:in-reply-to:references:references; bh=Fy9wZhglxIMjpKMCGO1yq1BTn0dcp39QWhOcas9r+Qs=; b=hxw7Ad1Ygu2IKk/ESTonIzNh+rN6ChV5SZgRONuRGcvW3tTq/7c9jF210tS4J3GG7issjm 84hW6CR/CWTUs58bYigU5JLTDmvw/itbuRtb0TQomGd+FtgZ82tiqrGxgge5rK/3xjqDEb FRLIVg+CIgJP9J8YoMP4KSLEL/pwy8k= X-MC-Unique: NsW3a6U8Ot6VJSFE4cm96Q-1 X-Mimecast-MFC-AGG-ID: NsW3a6U8Ot6VJSFE4cm96Q_1781463989 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463989; x=1782068789; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=Fy9wZhglxIMjpKMCGO1yq1BTn0dcp39QWhOcas9r+Qs=; b=sS5aNh8NF8LpN37si8mNwZh9D1yqWcc3oOXJAHFGNkM+5KXeKwjLVg8iEw32o6wr+j XbiyOXYV3qW7/hEEYuAnw7KR5QQ6NUnoDn72TdHsgctxzSXan8se4/bp9Q01WoFD5f8i oajQQbrzSsMVxSXdrNR+5uUxgt8tuddvInAdqhMzEQDoV/rG0r5ekE5T/z148L7+F5qE YBisrSOdz+gAu4CgltDKS6doSH5U2GySNWq4jgFjOYpfJGIjCNYuBU8XkCPiCGIcnp9k H7zhzSymnKpZl97ZGGBpeGLPEP/Zi0Met3NzJG7Y0LG2kFGOCXGjnX7stLTZn/1KTaNd d5oA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463989; x=1782068789; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Fy9wZhglxIMjpKMCGO1yq1BTn0dcp39QWhOcas9r+Qs=; b=F5yZsVicOP7wScnMckPXHhG0u9jFg8ekcd7M0S2zks+B4DRCzEtnD/Bezeul5PbNDM D7Pog4Vg511AISOlXtyAS5E9F7G3ciydzajJ4LVI+TMBmNTqDPCPO7ygLthTntTqkLzH aFscvcrJG+Em19V/OeU5edye+Uoc2TDwTMbtTZjt/M++Hc8UWNevqWqTti0A7UupgnfA iF5cfAuq3DrP/eAFkp5r/+BuRG3eJbjdZUD/auAsVMrT4KdzPs+RFjjw5JM0ZqRAgJmk GaRGdidcUaCUoLsdmJ4ts41K5z91pE1XVXqAtdR8ZTYq1yv7wm/nx0DPkTXmTabBKXvL Rqtg== X-Gm-Message-State: AOJu0YwBB+jNZRZs7ycsVLm77ofgxbJs0QxTWJq1Tf7OpGeMnV8tYO5J 0ILkwesW53H8os+hWNO/4G2leZHJHHwRjv+DuKnXhAPDZ5jkCqbKgijoE1JI6m4Zx3SrXczcRMU bDTi1nCOKyuTL9V2EJV45vj6vFCNWwaDFRkLhBniFEbdIGZjhxsrsaZhS0jqkQbsJQ/ouKFv1kg WtMqCTrla2x99yjsdO3RDNrUh1Cq/9A+qSeg== X-Gm-Gg: Acq92OEu9LBkFWjEyfJkyy7pJ2pbA2kxgv1dVQMrZSHSV/0GMN2sxO6/2weur7VB4vd myLZh5F7CgR4LcslaT56b90jEr18FcnSvgwkvc9OjBFsQJi3Xzzlt2jM3j1HkDyLuGiBVUClfqs o+saTLJi8cH48AJyeGdmws7XyfQVpRPxMlySXmdbKnecjECL5dLQRa4oy4UUMGgjJ7vSexFLK88 c/uFIh+4L9/PvFvkzBsbXQ8iiFum2WCr7q7TrAHFs3FtYTViujVAIyYWMIcrHg2b4fauQJUe5W3 dIwBRqOFvMrRat60Ttbkq3ZJLpwBI2qKxi+amAFCh5dbPhDymYuqN3Ax9F6nrQSOROl4QZnMcNC 4RmLIWAHOf6FoVCKxWE5cOoCNoFiFwZpsiBM6VCa0M6Q= X-Received: by 2002:a05:6000:184e:b0:460:d18:865c with SMTP id ffacd0b85a97d-4606cb2160dmr13945644f8f.1.1781463989130; Sun, 14 Jun 2026 12:06:29 -0700 (PDT) X-Received: by 2002:a05:6000:184e:b0:460:d18:865c with SMTP id ffacd0b85a97d-4606cb2160dmr13945594f8f.1.1781463988635; Sun, 14 Jun 2026 12:06:28 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:26 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Yi Liu , Xudong Hao , Jason Wang , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Paolo Bonzini , Richard Henderson Subject: [PULL 018/106] intel_iommu_accel: Bypass PASID entry addition for just deleted entry Message-ID: <6afd98cef5f040754ff20fb512fcf92068d114cf.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464190992158503 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan For VTD_INV_DESC_PASIDC_G_PASID_SI typed pc_inv_dsc invalidation, if an pasid entry is just removed, it can never be a new entry to add. So calling vtd_replay_pasid_bind_for_dev() is unnecessary. Introduce a new field accel_pce_deleted in VTDPASIDCacheInfo to mark this case and to do the bypassing. Suggested-by: Yi Liu Signed-off-by: Zhenzhong Duan Reviewed-by: Yi Liu Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-14-zhenzhong.duan@intel.com> --- hw/i386/intel_iommu_accel.c | 16 +++++++++++++--- hw/i386/intel_iommu_internal.h | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c index ed0d6bda7e..b823c405a1 100644 --- a/hw/i386/intel_iommu_accel.c +++ b/hw/i386/intel_iommu_accel.c @@ -280,10 +280,15 @@ static void vtd_accel_fill_pc(VTDHostIOMMUDevice *vtd= _hiod, uint32_t pasid, QLIST_INSERT_HEAD(&vtd_hiod->pasid_cache_list, vtd_pce, next); } =20 -static void vtd_accel_delete_pc(VTDAccelPASIDCacheEntry *vtd_pce) +static void vtd_accel_delete_pc(VTDAccelPASIDCacheEntry *vtd_pce, + VTDPASIDCacheInfo *pc_info) { QLIST_REMOVE(vtd_pce, next); g_free(vtd_pce); + + if (pc_info->type =3D=3D VTD_INV_DESC_PASIDC_G_PASID_SI) { + pc_info->accel_pce_deleted =3D true; + } } =20 static void @@ -319,7 +324,7 @@ vtd_accel_pasid_cache_invalidate_one(VTDAccelPASIDCache= Entry *vtd_pce, * to be either all-zero or non-present. Either case means existing * pasid cache should be invalidated. */ - vtd_accel_delete_pc(vtd_pce); + vtd_accel_delete_pc(vtd_pce, pc_info); } } =20 @@ -472,7 +477,12 @@ void vtd_accel_pasid_cache_sync(IntelIOMMUState *s, VT= DPASIDCacheInfo *pc_info) * removals before additions to optimize the replay process. */ vtd_accel_pasid_cache_invalidate(vtd_hiod, pc_info); - vtd_accel_replay_pasid_bind_for_dev(vtd_hiod, start, end, pc_info); + + if (pc_info->accel_pce_deleted) { + pc_info->accel_pce_deleted =3D false; + } else { + vtd_accel_replay_pasid_bind_for_dev(vtd_hiod, start, end, pc_i= nfo); + } } } =20 diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index 9307825017..64a38afa85 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -630,6 +630,7 @@ typedef struct VTDPASIDCacheInfo { uint8_t type; uint16_t did; uint32_t pasid; + bool accel_pce_deleted; } VTDPASIDCacheInfo; =20 typedef struct VTDPIOTLBInvInfo { --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464068; cv=none; d=zohomail.com; s=zohoarc; b=Va16x9RMBsKn30eRvMZM6L5zzLzZjXKxAF8DwxqGEw5EVTl7MuGAmfELzTVff99XRZGYkLFizTpNE4z6CtDY6Rfg26xjWgMbjTpYykA74HPNtkql4gfN7SaExGEWWlIPHSQNfVEQ9iIBY0zu4pyDd+Kt8wDtLpTpi9qfRQ+NKNs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464068; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=H5rmLf8agTT2XE/uJbv+8yNIdtm0RP3nvuuT/Alb5WQ=; b=U+9ovVqnRI2ixJzgWK2T8i/v8trvUbpuHUwkYspeqYLaFoiiTHgbP1fdzVE9ZOG7fJS82dnzzqKI4FT31JerXdWMM+Mpil04c/8bIx6oEPSX41jAPUzUYdJQLznptxtat2K+MqgHhU3h+5g3HQHGmy3ulHqt+92QPKWjM5MsPHM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464068450657.2993919547199; Sun, 14 Jun 2026 12:07:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAI-0007YL-9i; Sun, 14 Jun 2026 15:06:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAH-0007YB-9e for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:37 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAF-0001kQ-Qi for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:37 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-345-nGLHfa2hNuWNxbPWIBYmNQ-1; Sun, 14 Jun 2026 15:06:34 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490c4f61a34so17528395e9.2 for ; Sun, 14 Jun 2026 12:06:33 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220308f13sm192912945e9.5.2026.06.14.12.06.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463995; 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: in-reply-to:in-reply-to:references:references; bh=H5rmLf8agTT2XE/uJbv+8yNIdtm0RP3nvuuT/Alb5WQ=; b=FA3ECZiU7PYLIuj3SegeSU5zJ5sSkvinopBhXGMa7UXzJJZl1sJBp7B4ilP3Pn9UC4kvvo 1xJvZFvuLVj3WgVBt/SPTsS77tnztu9T8i1hURG9nPcKWLZXfJh43fV2beOjAuL5cuukHp qY/tNI3OhM6YAx2tJxzy5tRBeT/hXp4= X-MC-Unique: nGLHfa2hNuWNxbPWIBYmNQ-1 X-Mimecast-MFC-AGG-ID: nGLHfa2hNuWNxbPWIBYmNQ_1781463993 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463993; x=1782068793; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=H5rmLf8agTT2XE/uJbv+8yNIdtm0RP3nvuuT/Alb5WQ=; b=f0emrWwLYP26ENiwZF7kMi3xiJ9v4aXu/K6ZPLA5annCD/UfYlos7izn1qfUbFv8i3 B7W5aGL6qaLU1Oui19VcSN3kd7VEeDm3D7qVl0FvgoBXiN7k3oezn6ZYdml5CpkzGm5+ V6lSHpD+0g28Agm9o+lzcr72JgawK4kS97sRjiXfAkXQ6n1VxabR9JTI7buutIhW0V/B OzUkQ+Rmm498ED/FlnSn9UeRGJp69mVfqXL1kYJLMY2gJhqjXzJbd5UThfYFZQmuPTv3 2SaKf/Yxubn1eCcIx/09ctdFDZ31V8lKHNY4KBFuIvBKv0+7UzFRqbdDE/BNjeDgn5vo fFEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463993; x=1782068793; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H5rmLf8agTT2XE/uJbv+8yNIdtm0RP3nvuuT/Alb5WQ=; b=HhJiu8HkRzP20VKj/4XZMmv0Sj0DGu8+k67F2zHor52PHk9lrLF3TX8VvM2/QWgQqK OgMe1MLMf29rYFLl+L/1Nctdrl01Te7VxEI+KnCGmp2R6Ze5dRfJ7/zhQ7zBjKUlSr9P tEHOK3TCKt9ClSSzmNE/P3oXbpmra+DlchcgiO4PsjhKSkkp5VcBq97n8ihs6NkinmsA xQWTvvSQiq7fqN7pIsogoWSytbVVarJpRyi7ySmml5S2wcRdKJ44vq5+GoZB+YBV7EjM eQKEIgtNkvE3ArDYER/CPsjgYZqAqA7LEbq+QSMGL1yNAKnOomtNPJoAI/8Q4zAoH0W0 ibpA== X-Gm-Message-State: AOJu0YwM7VM/Z+meBOcNgrwT5WAonIwJSN9XMjIvKCN+5MZ3kYa8cnXE 5FpyRIU03/fko1fCB4Dvr62wDUqb3Iyd8yo/ZOPl0uaELlt7aoUALcMJK2QW9+PM1Qthb9xCmcb KFULb9+Tu3NU9YjCBdcz0xi2GCBe+QbCILeoJq7JQgvSNs/N33h4oUysEFDXw4FEUmIsqnTlqSx DCo420BhBJsWqQszJ462UqmA5v76YvahUV9w== X-Gm-Gg: Acq92OF7eBpLq8upPlyPnB41B3UfGaiPYeSFMRSvDpWf/C7lSPlAvSYiu3zvF4VAcvz s1f1XX/3uX6YGfDyh5LdVUhrP0SjdK+C+QahqPk6YTBd0gNjH+Ean0847TqMNsfxmXjgIO7Qrla rmrp9kQAvvKBo9SSq1cnZqcNKFEQ+CUzZUKNvAh6zDpuxSn1cX30dTbyy1um7+xHDk6IYm3n1Eb 7H1yiVwhA7BZPa5T3TS9aN54cZxG9Idf54YqZ1LaTTx6LFHAICnzgtBxzISCs+EJ//mXm3HaFFr 40oXxAdlZcYEyzGtzI2tG98yG5g3aVBaYJmQLptu/n985016Gie5c56Til2733i8FA7AM89m+zC /VYG+TRAmpts+/EmWFtlcUXdWMKeTZvImkBltIoXhRWM= X-Received: by 2002:a05:600c:c107:b0:490:e196:eaee with SMTP id 5b1f17b1804b1-490ec509c52mr162075755e9.10.1781463992678; Sun, 14 Jun 2026 12:06:32 -0700 (PDT) X-Received: by 2002:a05:600c:c107:b0:490:e196:eaee with SMTP id 5b1f17b1804b1-490ec509c52mr162075325e9.10.1781463992120; Sun, 14 Jun 2026 12:06:32 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:28 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Yi Liu , Xudong Hao , Jason Wang , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Paolo Bonzini , Richard Henderson Subject: [PULL 019/106] intel_iommu_accel: Handle PASID entry removal for system reset Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464070544158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan When system level reset, DMA translation is turned off, all PASID entries become stale and should be deleted. vtd_hiod list is never accessed without BQL, so no need to guard with iommu lock. Signed-off-by: Zhenzhong Duan Reviewed-by: Yi Liu Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-15-zhenzhong.duan@intel.com> --- hw/i386/intel_iommu.c | 2 ++ hw/i386/intel_iommu_accel.c | 13 +++++++++++++ hw/i386/intel_iommu_accel.h | 5 +++++ 3 files changed, 20 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 8e034efdfc..0b341f741e 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -391,6 +391,8 @@ static void vtd_reset_caches(IntelIOMMUState *s) vtd_reset_context_cache_locked(s); vtd_pasid_cache_reset_locked(s); vtd_iommu_unlock(s); + + vtd_accel_pasid_cache_reset(s); } =20 static uint64_t vtd_get_iotlb_gfn(hwaddr addr, uint32_t level) diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c index b823c405a1..8308eb00cb 100644 --- a/hw/i386/intel_iommu_accel.c +++ b/hw/i386/intel_iommu_accel.c @@ -486,6 +486,19 @@ void vtd_accel_pasid_cache_sync(IntelIOMMUState *s, VT= DPASIDCacheInfo *pc_info) } } =20 +/* Fake a global pasid cache invalidation to remove all pasid cache entrie= s */ +void vtd_accel_pasid_cache_reset(IntelIOMMUState *s) +{ + VTDPASIDCacheInfo pc_info =3D { .type =3D VTD_INV_DESC_PASIDC_G_GLOBAL= }; + VTDHostIOMMUDevice *vtd_hiod; + GHashTableIter hiod_it; + + g_hash_table_iter_init(&hiod_it, s->vtd_host_iommu_dev); + while (g_hash_table_iter_next(&hiod_it, NULL, (void **)&vtd_hiod)) { + vtd_accel_pasid_cache_invalidate(vtd_hiod, &pc_info); + } +} + static uint64_t vtd_get_host_iommu_quirks(uint32_t type, void *caps, uint32_t size) { diff --git a/hw/i386/intel_iommu_accel.h b/hw/i386/intel_iommu_accel.h index c9b1823745..a2226b28b6 100644 --- a/hw/i386/intel_iommu_accel.h +++ b/hw/i386/intel_iommu_accel.h @@ -28,6 +28,7 @@ void vtd_flush_host_piotlb_all_locked(IntelIOMMUState *s,= uint16_t domain_id, uint32_t pasid, hwaddr addr, uint64_t npages, bool ih); void vtd_accel_pasid_cache_sync(IntelIOMMUState *s, VTDPASIDCacheInfo *pc_= info); +void vtd_accel_pasid_cache_reset(IntelIOMMUState *s); void vtd_iommu_ops_update_accel(PCIIOMMUOps *ops); #else static inline bool vtd_check_hiod_accel(IntelIOMMUState *s, @@ -62,6 +63,10 @@ static inline void vtd_accel_pasid_cache_sync(IntelIOMMU= State *s, { } =20 +static inline void vtd_accel_pasid_cache_reset(IntelIOMMUState *s) +{ +} + static inline void vtd_iommu_ops_update_accel(PCIIOMMUOps *ops) { } --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464246; cv=none; d=zohomail.com; s=zohoarc; b=hPfwwFAPpxWmZ6bmpq1TzQDQDCJ+ehsz4RwuPpBHZrCEQnFrlt4pQUR4NYB7FLK1VrAtjJEqRmtQs4KXG6QuaABLXWrs81OW8RKQBLZgNDjXEXKJdIcsxNcTje2ueVfkevyQRKGMvlhRGDV60DeoUbs2BZvODCLnuyE4tEWVh14= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464246; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=t42E1gvfXHbcdWrJGb73splz5VVQusgkDd/EZry/Ttg=; b=jCD1T3o64J6BfaZyJXmuBp23/fLPrTBv4t1LZhjdiDJkWxz7TXBUa34jl8ltQ7BRaE10XvqxIDFDoin2DM8+O4nX1nCHDZgOhjfsmzUI/mc/2405hVMnNBjuX6bYqK2h3DiJriu6fHITK42S2aek78VOrf24LJpXa0BxLOzyJSY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464246258322.30478598214575; Sun, 14 Jun 2026 12:10:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAP-0007d0-OR; Sun, 14 Jun 2026 15:06:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAL-0007Z2-VC for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:42 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAI-0001lC-M9 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:40 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-550-Le1UZl6xOrqDlA6OaaGhNA-1; Sun, 14 Jun 2026 15:06:36 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-45ef4931de5so2131874f8f.1 for ; Sun, 14 Jun 2026 12:06:36 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2e6a8fsm27235280f8f.37.2026.06.14.12.06.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781463998; 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: in-reply-to:in-reply-to:references:references; bh=t42E1gvfXHbcdWrJGb73splz5VVQusgkDd/EZry/Ttg=; b=A99TvxXsjl/t0z81FvQmuDzdT5nNI/H/Ms0yqaMes58JtZl3SsgtzfI88XQBD6CoCO37mn l1KhlEVYKCnoPxCF6c6Y2oZk4Ctpqu1DQn1gExlHcw6HuuZUfyMVUSnli6cckcXC3YjxlL WTaO4NDE0/+j0jwztU7KUQvpdVIYnoc= X-MC-Unique: Le1UZl6xOrqDlA6OaaGhNA-1 X-Mimecast-MFC-AGG-ID: Le1UZl6xOrqDlA6OaaGhNA_1781463995 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463995; x=1782068795; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=t42E1gvfXHbcdWrJGb73splz5VVQusgkDd/EZry/Ttg=; b=E5Uo42Tq8pj+3BikIeCRfJf5YgLRSYQyClK4NMhJFPOOlnKFj1oDmWtmAzkb/3i/nn +WDprWzWkgiKp4bSnmV6jpA2w6f5dekI+pps2AHWHTsFbz7ci159HGPQxoenxVCMpGah otIUNfBqkm85ZO+NyzcMZVGLscL+9eUD3Il1Ox8v0RdRpVyHka0HVRzKf+UlR0TUr8VI CtEr8A2hhxldT0cK0O0Wdbed5QtZz40NDWUPzkv3NZvtXyQvUl6M/qPU3iFPPy0JjTWT YBFZ+KxKMbcibuY4Bx2UIovs+0TjJP/YT4tSozF+t2uvCUT+umZ0kBV15Z5059AGEPF1 7Psg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463995; x=1782068795; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=t42E1gvfXHbcdWrJGb73splz5VVQusgkDd/EZry/Ttg=; b=r/kDODG7t3/zzvIHi3jVaLYUTKnEuAomwj2Lb92WL3orrGlTVfiFCMxYQ95DT6IEic /bv2YwA4wrYWuPRXKswa5uxEHcCDlWyCGcmC3x1Ehsc3VbhrUlAtBGUja92uuWhuXmo+ 5ztFX067EM6QjxrejW6W1i+XmoBeSfASFJHdQlhLOxKtaCaN55hLPFE5ddU4B9Sk+m9p NLMjlsDgDEKJeAxMtMapodsEXd1JMEYaK7dypWu5rEHF8MkLUmPq8lhyg3Mx14Y+kWPq h2C+6wkqH1ZuL1OPmCMyMt7Z2iY9n1cl3e01YP4Bp2Yri+N5bgbbnT+gGr3+AxX8iCUP 9VNQ== X-Gm-Message-State: AOJu0YyjozT/mALkrWyTIzzUIPTOmyMwPCxlbxx34jvdNQuMvOE7YGH/ iN5aIuU2yagwJUxSThbnhUQvemaoxcezlt2rEsXlPZQweZjDIyhf7ZHLW3DKwZNqqEWaoxKFWTI wKpM8WEzpNTq5XYSaBdIOlu7zA45sUzGT86ZCpJmygewcGC4wJm03KgeM5tfirAbAhhibu8czmT aPg8BNM+lb0pv3RkYovSUHtmljEldEcFytsw== X-Gm-Gg: Acq92OFk4ar4wha/emdRk5sZEKmp1r79Lcbb++mtii3XIZSUCZNrVJSxsCYqg/dErf6 NzaEhXzptFhft9wJuzboZaP+3/fCEBMbO0S83x3YIpB3mcyOQDpXpIfu74E2TGtUxvBufV84EdG pA2ZLS8KXmzgIqeFJ0W1qNVtGS1HQlEuimYykoXumSZNHSr/Hl5QIoNpHy/FRQfopwkbLiDLaAg dvFACAkr85pbAKeYN/GbxeOx2QdOtJqNXFEmZKjscuR7qcMzldt5ktAzljpPEOoAOVtoeLPKf11 2PTFeDqmMm42pflPzFZDxBoWmXZweRL06Il8NThkVt6bmdki7WxpKUuy4K9EExRmvuJYyc7Aazj gzjimjkv3/CZu5iK/KNzZPWvBQgGaHSIqjEDmpC7YmvE= X-Received: by 2002:a05:6000:2287:b0:45e:e936:5e30 with SMTP id ffacd0b85a97d-4606f21804dmr13761442f8f.6.1781463995258; Sun, 14 Jun 2026 12:06:35 -0700 (PDT) X-Received: by 2002:a05:6000:2287:b0:45e:e936:5e30 with SMTP id ffacd0b85a97d-4606f21804dmr13761393f8f.6.1781463994631; Sun, 14 Jun 2026 12:06:34 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:32 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Yi Liu , Xudong Hao , Jason Wang , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Paolo Bonzini , Richard Henderson Subject: [PULL 020/106] intel_iommu_accel: Switch to VTDAccelPASIDCacheEntry for PASID bind/unbind and PIOTLB invalidation Message-ID: <4101df1201fa60eb3a0932485881453661a2edbf.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464247366158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan This patch switches from VTDAddressSpace to VTDAccelPASIDCacheEntry for handling PASID bind/unbind operations and PIOTLB invalidations in passthrough scenarios. VTDAccelPASIDCacheEntry was introduced to cache PASID entries for passthrough devices and is now ready to propagate PASID bind/unbind operations and PIOTLB invalidations to the host. Unlike the previous approach, VTDAccelPASIDCacheEntry supports both IOMMU_NO_PASID (rid_pasid) and other valid PASIDs, so this switch drops IOMMU_NO_PASID limitations that existed in the prior PASID bind/unbind and PIOTLB invalidation path. For IOMMU_NO_PASID of passthrough devices, VTDAddressSpace continues to handle shadow page modifications to the host, but no longer manages PASID bind/unbind operations or PIOTLB invalidations for passthrough scenarios. Co-developed-by: Yi Liu Signed-off-by: Yi Liu Signed-off-by: Zhenzhong Duan Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-16-zhenzhong.duan@intel.com> --- hw/i386/intel_iommu.c | 17 +---- hw/i386/intel_iommu_accel.c | 131 +++++++++++++++++----------------- hw/i386/intel_iommu_accel.h | 2 +- include/hw/i386/intel_iommu.h | 2 - 4 files changed, 68 insertions(+), 84 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 0b341f741e..31addb98e4 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -86,8 +86,6 @@ static void vtd_pasid_cache_reset_locked(IntelIOMMUState = *s) VTDPASIDCacheEntry *pc_entry =3D &vtd_as->pasid_cache_entry; if (pc_entry->valid) { pc_entry->valid =3D false; - /* It's fatal to get failure during reset */ - vtd_propagate_guest_pasid(vtd_as, &error_fatal); } } } @@ -3104,8 +3102,6 @@ static void vtd_pasid_cache_sync_locked(gpointer key,= gpointer value, VTDPASIDEntry pe; IOMMUNotifier *n; uint16_t did; - const char *err_prefix =3D "Attaching to HWPT failed: "; - Error *local_err =3D NULL; =20 if (vtd_dev_get_pe_from_pasid(vtd_as->iommu_state, vtd_as->bus, vtd_as->devfn, vtd_as->pasid, &pe)) { @@ -3127,9 +3123,6 @@ static void vtd_pasid_cache_sync_locked(gpointer key,= gpointer value, vtd_address_space_unmap(vtd_as, n); } vtd_switch_address_space(vtd_as); - - err_prefix =3D "Detaching from HWPT failed: "; - goto do_bind_unbind; } =20 /* @@ -3157,20 +3150,12 @@ static void vtd_pasid_cache_sync_locked(gpointer ke= y, gpointer value, if (!pc_entry->valid) { pc_entry->pasid_entry =3D pe; pc_entry->valid =3D true; - } else if (vtd_pasid_entry_compare(&pe, &pc_entry->pasid_entry)) { - err_prefix =3D "Replacing HWPT attachment failed: "; - } else { + } else if (!vtd_pasid_entry_compare(&pe, &pc_entry->pasid_entry)) { return; } =20 vtd_switch_address_space(vtd_as); vtd_address_space_sync(vtd_as); - -do_bind_unbind: - /* TODO: Fault event injection into guest, report error to QEMU for no= w */ - if (!vtd_propagate_guest_pasid(vtd_as, &local_err)) { - error_reportf_err(local_err, "%s", err_prefix); - } } =20 static void vtd_pasid_cache_sync(IntelIOMMUState *s, VTDPASIDCacheInfo *pc= _info) diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c index 8308eb00cb..97991fc0d9 100644 --- a/hw/i386/intel_iommu_accel.c +++ b/hw/i386/intel_iommu_accel.c @@ -89,24 +89,25 @@ static bool vtd_create_fs_hwpt(VTDHostIOMMUDevice *vtd_= hiod, fs_hwpt_id, errp); } =20 -static void vtd_destroy_old_fs_hwpt(VTDHostIOMMUDevice *vtd_hiod, - VTDAddressSpace *vtd_as) +static void vtd_destroy_old_fs_hwpt(VTDAccelPASIDCacheEntry *vtd_pce) { - HostIOMMUDeviceIOMMUFD *hiodi =3D HOST_IOMMU_DEVICE_IOMMUFD(vtd_hiod->= hiod); + HostIOMMUDeviceIOMMUFD *hiodi =3D + HOST_IOMMU_DEVICE_IOMMUFD(vtd_pce->vtd_hiod->hiod); =20 - if (!vtd_as->fs_hwpt_id) { + if (!vtd_pce->fs_hwpt_id) { return; } - iommufd_backend_free_id(hiodi->iommufd, vtd_as->fs_hwpt_id); - vtd_as->fs_hwpt_id =3D 0; + iommufd_backend_free_id(hiodi->iommufd, vtd_pce->fs_hwpt_id); + vtd_pce->fs_hwpt_id =3D 0; } =20 -static bool vtd_device_attach_iommufd(VTDHostIOMMUDevice *vtd_hiod, - VTDAddressSpace *vtd_as, Error **err= p) +static bool vtd_device_attach_iommufd(VTDAccelPASIDCacheEntry *vtd_pce, + Error **errp) { + VTDHostIOMMUDevice *vtd_hiod =3D vtd_pce->vtd_hiod; HostIOMMUDeviceIOMMUFD *hiodi =3D HOST_IOMMU_DEVICE_IOMMUFD(vtd_hiod->= hiod); - VTDPASIDEntry *pe =3D &vtd_as->pasid_cache_entry.pasid_entry; - uint32_t hwpt_id =3D hiodi->hwpt_id; + VTDPASIDEntry *pe =3D &vtd_pce->pasid_entry; + uint32_t hwpt_id =3D hiodi->hwpt_id, pasid =3D vtd_pce->pasid; bool ret; =20 /* @@ -126,14 +127,13 @@ static bool vtd_device_attach_iommufd(VTDHostIOMMUDev= ice *vtd_hiod, } } =20 - ret =3D host_iommu_device_iommufd_attach_hwpt(hiodi, IOMMU_NO_PASID, h= wpt_id, - errp); - trace_vtd_device_attach_hwpt(hiodi->devid, IOMMU_NO_PASID, hwpt_id, re= t); + ret =3D host_iommu_device_iommufd_attach_hwpt(hiodi, pasid, hwpt_id, e= rrp); + trace_vtd_device_attach_hwpt(hiodi->devid, pasid, hwpt_id, ret); if (ret) { /* Destroy old fs_hwpt if it's a replacement */ - vtd_destroy_old_fs_hwpt(vtd_hiod, vtd_as); + vtd_destroy_old_fs_hwpt(vtd_pce); if (vtd_pe_pgtt_is_fst(pe)) { - vtd_as->fs_hwpt_id =3D hwpt_id; + vtd_pce->fs_hwpt_id =3D hwpt_id; } } else if (vtd_pe_pgtt_is_fst(pe)) { iommufd_backend_free_id(hiodi->iommufd, hwpt_id); @@ -142,17 +142,19 @@ static bool vtd_device_attach_iommufd(VTDHostIOMMUDev= ice *vtd_hiod, return ret; } =20 -static bool vtd_device_detach_iommufd(VTDHostIOMMUDevice *vtd_hiod, - VTDAddressSpace *vtd_as, Error **err= p) +static bool vtd_device_detach_iommufd(VTDAccelPASIDCacheEntry *vtd_pce, + Error **errp) { + VTDHostIOMMUDevice *vtd_hiod =3D vtd_pce->vtd_hiod; HostIOMMUDeviceIOMMUFD *hiodi =3D HOST_IOMMU_DEVICE_IOMMUFD(vtd_hiod->= hiod); - IntelIOMMUState *s =3D vtd_as->iommu_state; + + IntelIOMMUState *s =3D vtd_hiod->iommu_state; + uint32_t pasid =3D vtd_pce->pasid; bool ret; =20 - if (s->dmar_enabled && s->root_scalable) { - ret =3D host_iommu_device_iommufd_detach_hwpt(hiodi, IOMMU_NO_PASI= D, - errp); - trace_vtd_device_detach_hwpt(hiodi->devid, IOMMU_NO_PASID, ret); + if (pasid !=3D IOMMU_NO_PASID || (s->dmar_enabled && s->root_scalable)= ) { + ret =3D host_iommu_device_iommufd_detach_hwpt(hiodi, pasid, errp); + trace_vtd_device_detach_hwpt(hiodi->devid, pasid, ret); } else { /* * If DMAR remapping is disabled or guest switches to legacy mode, @@ -166,58 +168,32 @@ static bool vtd_device_detach_iommufd(VTDHostIOMMUDev= ice *vtd_hiod, } =20 if (ret) { - vtd_destroy_old_fs_hwpt(vtd_hiod, vtd_as); + vtd_destroy_old_fs_hwpt(vtd_pce); } =20 return ret; } =20 -bool vtd_propagate_guest_pasid(VTDAddressSpace *vtd_as, Error **errp) -{ - VTDPASIDCacheEntry *pc_entry =3D &vtd_as->pasid_cache_entry; - VTDHostIOMMUDevice *vtd_hiod =3D vtd_find_hiod_iommufd(vtd_as); - - /* Ignore emulated device or legacy VFIO backed device */ - if (!vtd_as->iommu_state->fsts || !vtd_hiod) { - return true; - } - - if (pc_entry->valid) { - return vtd_device_attach_iommufd(vtd_hiod, vtd_as, errp); - } - - return vtd_device_detach_iommufd(vtd_hiod, vtd_as, errp); -} - /* - * This function is a loop function for the s->vtd_address_spaces - * list with VTDPIOTLBInvInfo as execution filter. It propagates - * the piotlb invalidation to host. + * This function is a loop function for the s->vtd_host_iommu_dev + * and vtd_hiod->pasid_cache_list lists with VTDPIOTLBInvInfo as + * execution filter. It propagates the piotlb invalidation to host. */ -static void vtd_flush_host_piotlb_locked(gpointer key, gpointer value, - gpointer user_data) +static void vtd_flush_host_piotlb_locked(VTDAccelPASIDCacheEntry *vtd_pce, + VTDPIOTLBInvInfo *piotlb_info) { - VTDPIOTLBInvInfo *piotlb_info =3D user_data; - VTDAddressSpace *vtd_as =3D value; - VTDHostIOMMUDevice *vtd_hiod =3D vtd_find_hiod_iommufd(vtd_as); - VTDPASIDCacheEntry *pc_entry =3D &vtd_as->pasid_cache_entry; + VTDHostIOMMUDevice *vtd_hiod =3D vtd_pce->vtd_hiod; + VTDPASIDEntry *pe =3D &vtd_pce->pasid_entry; uint16_t did; =20 - if (!vtd_hiod) { - return; - } - - assert(vtd_as->pasid =3D=3D IOMMU_NO_PASID); - /* Nothing to do if there is no first stage HWPT attached */ - if (!pc_entry->valid || - !vtd_pe_pgtt_is_fst(&pc_entry->pasid_entry)) { + if (!vtd_pe_pgtt_is_fst(pe)) { return; } =20 - did =3D VTD_SM_PASID_ENTRY_DID(&pc_entry->pasid_entry); + did =3D VTD_SM_PASID_ENTRY_DID(pe); =20 - if (piotlb_info->domain_id =3D=3D did && piotlb_info->pasid =3D=3D IOM= MU_NO_PASID) { + if (piotlb_info->domain_id =3D=3D did && piotlb_info->pasid =3D=3D vtd= _pce->pasid) { HostIOMMUDeviceIOMMUFD *hiodi =3D HOST_IOMMU_DEVICE_IOMMUFD(vtd_hiod->hiod); uint32_t entry_num =3D 1; /* Only implement one request for simpli= city */ @@ -225,7 +201,7 @@ static void vtd_flush_host_piotlb_locked(gpointer key, = gpointer value, struct iommu_hwpt_vtd_s1_invalidate *cache =3D piotlb_info->inv_da= ta; =20 if (!iommufd_backend_invalidate_cache(hiodi->iommufd, - vtd_as->fs_hwpt_id, + vtd_pce->fs_hwpt_id, IOMMU_HWPT_INVALIDATE_DATA_V= TD_S1, sizeof(*cache), &entry_num, = cache, &local_err)) { @@ -241,6 +217,8 @@ void vtd_flush_host_piotlb_all_locked(IntelIOMMUState *= s, uint16_t domain_id, { struct iommu_hwpt_vtd_s1_invalidate cache_info =3D { 0 }; VTDPIOTLBInvInfo piotlb_info; + VTDHostIOMMUDevice *vtd_hiod; + GHashTableIter hiod_it; =20 cache_info.addr =3D addr; cache_info.npages =3D npages; @@ -251,23 +229,36 @@ void vtd_flush_host_piotlb_all_locked(IntelIOMMUState= *s, uint16_t domain_id, piotlb_info.inv_data =3D &cache_info; =20 /* - * Go through each vtd_as instance in s->vtd_address_spaces, find out - * affected host devices which need host piotlb invalidation. Piotlb - * invalidation should check pasid cache per architecture point of vie= w. + * Go through each vtd_pce in vtd_hiod->pasid_cache_list for each host + * device, find out affected host device pasid which need host piotlb + * invalidation. Piotlb invalidation should check pasid cache per + * architecture point of view. */ - g_hash_table_foreach(s->vtd_address_spaces, - vtd_flush_host_piotlb_locked, &piotlb_info); + g_hash_table_iter_init(&hiod_it, s->vtd_host_iommu_dev); + while (g_hash_table_iter_next(&hiod_it, NULL, (void **)&vtd_hiod)) { + VTDAccelPASIDCacheEntry *vtd_pce; + + QLIST_FOREACH(vtd_pce, &vtd_hiod->pasid_cache_list, next) { + vtd_flush_host_piotlb_locked(vtd_pce, &piotlb_info); + } + } } =20 static void vtd_accel_fill_pc(VTDHostIOMMUDevice *vtd_hiod, uint32_t pasid, VTDPASIDEntry *pe) { VTDAccelPASIDCacheEntry *vtd_pce; + Error *local_err =3D NULL; =20 QLIST_FOREACH(vtd_pce, &vtd_hiod->pasid_cache_list, next) { if (vtd_pce->pasid =3D=3D pasid) { if (vtd_pasid_entry_compare(pe, &vtd_pce->pasid_entry)) { vtd_pce->pasid_entry =3D *pe; + + if (!vtd_device_attach_iommufd(vtd_pce, &local_err)) { + error_reportf_err(local_err, "%s", + "Replacing HWPT attachment failed: "= ); + } } return; } @@ -278,11 +269,21 @@ static void vtd_accel_fill_pc(VTDHostIOMMUDevice *vtd= _hiod, uint32_t pasid, vtd_pce->pasid =3D pasid; vtd_pce->pasid_entry =3D *pe; QLIST_INSERT_HEAD(&vtd_hiod->pasid_cache_list, vtd_pce, next); + + if (!vtd_device_attach_iommufd(vtd_pce, &local_err)) { + error_reportf_err(local_err, "%s", "Attaching to HWPT failed: "); + } } =20 static void vtd_accel_delete_pc(VTDAccelPASIDCacheEntry *vtd_pce, VTDPASIDCacheInfo *pc_info) { + Error *local_err =3D NULL; + + if (!vtd_device_detach_iommufd(vtd_pce, &local_err)) { + error_reportf_err(local_err, "%s", "Detaching from HWPT failed: "); + } + QLIST_REMOVE(vtd_pce, next); g_free(vtd_pce); =20 diff --git a/hw/i386/intel_iommu_accel.h b/hw/i386/intel_iommu_accel.h index a2226b28b6..4a9003c92d 100644 --- a/hw/i386/intel_iommu_accel.h +++ b/hw/i386/intel_iommu_accel.h @@ -16,6 +16,7 @@ typedef struct VTDAccelPASIDCacheEntry { VTDHostIOMMUDevice *vtd_hiod; VTDPASIDEntry pasid_entry; uint32_t pasid; + uint32_t fs_hwpt_id; QLIST_ENTRY(VTDAccelPASIDCacheEntry) next; } VTDAccelPASIDCacheEntry; =20 @@ -23,7 +24,6 @@ typedef struct VTDAccelPASIDCacheEntry { bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMMUDevice *vtd_hiod, Error **errp); VTDHostIOMMUDevice *vtd_find_hiod_iommufd(VTDAddressSpace *as); -bool vtd_propagate_guest_pasid(VTDAddressSpace *vtd_as, Error **errp); void vtd_flush_host_piotlb_all_locked(IntelIOMMUState *s, uint16_t domain_= id, uint32_t pasid, hwaddr addr, uint64_t npages, bool ih); diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.h index 95c76015e4..1842ba5840 100644 --- a/include/hw/i386/intel_iommu.h +++ b/include/hw/i386/intel_iommu.h @@ -154,8 +154,6 @@ struct VTDAddressSpace { * with the guest IOMMU pgtables for a device. */ IOVATree *iova_tree; - - uint32_t fs_hwpt_id; }; =20 struct VTDIOTLBEntry { --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464214; cv=none; d=zohomail.com; s=zohoarc; b=Kf7SCb9IyMSjjuqrfJMAsKwyhNnTWmj8q723zaMpmGPamPVsgeaO4FmaL2XjSUtKrgher86ACW/9AFW/uWw9jeR7jxgfgmaO3if4yeen7WzVSUrrPYuTMxAJSRc1KuPqdPAMtVBKtJ1vzZoQ9weOcqQ9tgj2AzN6fgDyENtRCXM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464214; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DTZcjvGrhpU8cSCRg3WrNcpfoJuqAX9m2jfTl4jhFUg=; b=cNNj9gCuu2sL+1eYikmm/NeQg/VE3XUH3i1ZffSVwkWD/GdqLsgRksXEPtccln8Z8DzTeuBqxec9jM+tqPOB4kU1G31Qyt0he2NccFvKSfz0m+EPTrElK329p2zPrOiMVQ8qc7tX4HhrM4AWUxqxu5FGT340JEDxNKqRVH3h8EI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464214561595.6071998817866; Sun, 14 Jun 2026 12:10:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAQ-0007fM-FM; Sun, 14 Jun 2026 15:06:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAN-0007c3-Ea for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAL-0001lN-Jl for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:42 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-373-l-1oNAg8OTO0uf6YEhOK0w-1; Sun, 14 Jun 2026 15:06:39 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490aadb1386so18037355e9.0 for ; Sun, 14 Jun 2026 12:06:38 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2c3fcfsm23342100f8f.26.2026.06.14.12.06.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464000; 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: in-reply-to:in-reply-to:references:references; bh=DTZcjvGrhpU8cSCRg3WrNcpfoJuqAX9m2jfTl4jhFUg=; b=M1+epTvolcr+YaN+BxZdENO9bxVrRLEKUKlDs/bLgmOUlrqrgyxrzbotpgIMo3vs6FRd0E NJHWjJ9bVD7FFyFa1LjTt/KSU0KC3VkTMHabACIKLeQmkut1X1xk4sE8j+NaqyweYesWmi 2JOcA554pm7g66IAgzOnrsNAm6r1JHo= X-MC-Unique: l-1oNAg8OTO0uf6YEhOK0w-1 X-Mimecast-MFC-AGG-ID: l-1oNAg8OTO0uf6YEhOK0w_1781463998 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781463998; x=1782068798; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=DTZcjvGrhpU8cSCRg3WrNcpfoJuqAX9m2jfTl4jhFUg=; b=lUPq5vWP4uZ2RAbS6ysGKJC0gevSe9oJPjSfwEApamj34367KEgTnENbMggB5hCXTW CgRbrQlDzmyASSec+MBB6EOw9LcRa14TvnAAlkclN012M5deHOrc+r6P55f/81XGQX0j GbNBY2UjV7bXuc/Zi6Dq+qKvdreUCk3VS0YjaDSqOVQWNUOd+gdITjS3G90sXe+4qawP be0BqTUFFarrOT7fXuBkJBu+0pVb8Ed7jy3ZqG6aroeMJf0ZURF9qNeuy/VmgLpIfrXl Lf+ERdHO+dN4EfPpLvnROOVy+C87/STChh9Kr94/ZKkGI9pik+jtBj75rai5+6U1ee+B G6/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781463998; x=1782068798; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DTZcjvGrhpU8cSCRg3WrNcpfoJuqAX9m2jfTl4jhFUg=; b=NgUbxhrcrqCaH2C6eMVn/+yLK5fFkLHA2w3IwGNG+DSbczu1sGzskurP5WWmLvxqqN cSbvqAHDRqttsc08wspbfDiYifJnKBWTBhv/vdBujQs/FP6jsCi3iQLl2VpZDphJciDy dudxa9/EslRi4Z8kaferpGIwXaXKu/3gYlQL64K1CfJ/cXmROmYnbZ9y2VPQdXTiPb7c ku1+jEgAzD5xCGdjt3PFNxakQxe908B5ngEotLRh2lMYW+fbSHscJUmUrieIJLbJ7ORM 3zIXrOocYchIshCK3O77g2LalYbAgapja3g/XStCOIvkfGsA56+Dw7OFrLGQ7Loqa0Re bU3Q== X-Gm-Message-State: AOJu0Yy+hJFhoByzOziA1IpvRLVlzbAsDOypxVkf3n3Cu5Lsu1FKAPMG F/XR4QsTd6eJdCO6SWb6XrlztfENMV+J3BdjFD9oNzjPRAYE2sEwk/IaBeXX7hmQ7mm8X1+nage nicUNPXkoPPWqMO+QnunMo7Nt9nYR33ezZoH90qC2DKXuAyZfbbifh/x80LzGopV9fEb9jAgYOB lQENY21lEiftzqNLFdURJ3Z5h1tBmMHnbWxQ== X-Gm-Gg: Acq92OF/RdlPFBYyFDSBvJOV2qJgwLz5InIr4yB6ICQyY1l6wGCouBJEKoTErly8QNV 4QaOI+OgJaQKWkoR+lajwBHjVNljTfeyTKfmqFnYbfeTzC9kDR4tDBZNcrGGFS6b3rQI3FagMpZ y2P8bnXOVPSu7S5ciluwM+TuvZP2fIdCUcIofTrVJsfp/hU7K0Bkn2yPtoEEBuxUGLJfkrFpfVB r266/k8PLWhQxCSDRU11U6e42bVBrPGUFrNDCK9VGveEUOMTXHkGSQS9kPQjYhxOIZTsaNUsvsq /3FTOmqHp9OcTQR3k9EhdEycxwIr6yh1k6Xl01U2qL1UNssvY1K/QhkE3Lzs/iSmi2IzR1Uide9 KcbxVr6OEKBUwfA7+3FYe4C4AnLY/JskF98H/KUMOwvA= X-Received: by 2002:a05:600c:8b5b:b0:490:7df7:9190 with SMTP id 5b1f17b1804b1-490ec49f2bemr128210905e9.8.1781463997748; Sun, 14 Jun 2026 12:06:37 -0700 (PDT) X-Received: by 2002:a05:600c:8b5b:b0:490:7df7:9190 with SMTP id 5b1f17b1804b1-490ec49f2bemr128210365e9.8.1781463997253; Sun, 14 Jun 2026 12:06:37 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:34 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Xudong Hao , Clement Mathieu--Drif , Jason Wang , Yi Liu , Paolo Bonzini , Richard Henderson Subject: [PULL 021/106] intel_iommu_accel: Add pasid bits size check Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464215085158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan If pasid bits size is bigger than host side, host could fail to emulate all bindings in guest. Add a check to fail device plug early. Signed-off-by: Zhenzhong Duan Tested-by: Xudong Hao Reviewed-by: Clement Mathieu--Drif Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-17-zhenzhong.duan@intel.com> --- hw/i386/intel_iommu_accel.c | 8 ++++++++ hw/i386/intel_iommu_internal.h | 1 + 2 files changed, 9 insertions(+) diff --git a/hw/i386/intel_iommu_accel.c b/hw/i386/intel_iommu_accel.c index 97991fc0d9..c03435f8a2 100644 --- a/hw/i386/intel_iommu_accel.c +++ b/hw/i386/intel_iommu_accel.c @@ -22,6 +22,7 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMM= UDevice *vtd_hiod, HostIOMMUDevice *hiod =3D vtd_hiod->hiod; struct HostIOMMUDeviceCaps *caps =3D &hiod->caps; struct iommu_hw_info_vtd *vtd =3D &caps->vendor_caps.vtd; + uint8_t hpasid =3D VTD_ECAP_GET_PSS(vtd->ecap_reg) + 1; PCIBus *bus =3D vtd_hiod->bus; PCIDevice *pdev =3D bus->devices[vtd_hiod->devfn]; =20 @@ -42,6 +43,13 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOM= MUDevice *vtd_hiod, return false; } =20 + /* Only do the check when host device support PASIDs */ + if (caps->max_pasid_log2 && s->pasid > hpasid) { + error_setg(errp, "PASID bits size %d > host IOMMU PASID bits size = %d", + s->pasid, hpasid); + return false; + } + if (pci_device_get_iommu_bus_devfn(pdev, &bus, NULL, NULL)) { error_setg(errp, "Host device downstream to a PCI bridge is " "unsupported when fsts=3Don"); diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index 64a38afa85..924e91cb8a 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -196,6 +196,7 @@ #define VTD_ECAP_SRS (1ULL << 31) #define VTD_ECAP_NWFS (1ULL << 33) #define VTD_ECAP_SET_PSS(x, v) ((x)->ecap =3D deposit64((x)->ecap, 35= , 5, v)) +#define VTD_ECAP_GET_PSS(ecap) extract64(ecap, 35, 5) #define VTD_ECAP_PASID (1ULL << 40) #define VTD_ECAP_PDS (1ULL << 42) #define VTD_ECAP_SMTS (1ULL << 43) --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464109; cv=none; d=zohomail.com; s=zohoarc; b=T4bGN0HAc7bRbZrJmmptjWP0uFvGroNbWvYN5lvB+vFchMVMoBd8qlFKv5HGrkFwwbf3TtI15KEpzaDby91UHEcVFORr9U0RkjZHl1oeMwn3NpXyf7sej+NLW0tG0s7QoWBVtJGygcPGoP0N2na5bcQWF1QHj6qwiHgHJIHVUhg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464109; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=g1F4+IF5etRgwNV0vS9HbRXkwL6EBjEu8mYuHWvbVi0=; b=lnBW+rucEU7EMYJnRZiQnWGQ3lUyCWXNhigC4FszU79HMXm2NLMhVEJTEHPGg7+tJ++/0IpSorkygCnGS/zmo2jsDop7Hqj6KnOwb2F+wR3/yupvL8Uw5g9buc5zSLknKu3fTRXamm6MSUrfnHJOU0myGY03mnB6iUiR2yeibtM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464109314944.8870381685606; Sun, 14 Jun 2026 12:08:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAS-0007gA-93; Sun, 14 Jun 2026 15:06:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAP-0007cS-2D for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:45 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAN-0001ld-Iz for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:44 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-355-pDfqzd4hNmqkDuFJz6OPww-1; Sun, 14 Jun 2026 15:06:41 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490a767b782so15954845e9.2 for ; Sun, 14 Jun 2026 12:06:41 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922033156csm173860615e9.7.2026.06.14.12.06.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464002; 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: in-reply-to:in-reply-to:references:references; bh=g1F4+IF5etRgwNV0vS9HbRXkwL6EBjEu8mYuHWvbVi0=; b=Hp254rLM2twkyQYr83J6dJiVzJjjcyTVwQKqbXf9tceJqFQmhq3Kp1QDW4yF2XFWJdR0gl 1RmCwotUYtN+gzEtfQ+yJUxpgAIXTdxKhcJ6vZ7cKE0XIxoMXKQmYSUkgyXiFcvOn53eg4 0TR7rObO1Y4mYer6z+V1TSfqzfpNMmM= X-MC-Unique: pDfqzd4hNmqkDuFJz6OPww-1 X-Mimecast-MFC-AGG-ID: pDfqzd4hNmqkDuFJz6OPww_1781464000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464000; x=1782068800; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=g1F4+IF5etRgwNV0vS9HbRXkwL6EBjEu8mYuHWvbVi0=; b=I+qLEFQSRorQAiUItuZbtnWhSBfdVJHMTSrZDLwsyMvfm/BR7whSc52tgHA1bUvWQm anxZcWDZ0Vm1MOCO+j8AT+U0kvqQH0efWsiMEwqALPiq2CZrjvVvFdEqQXYDJdzBnuP/ 5DgSg3pL40EpUq5jE7NN9ROIg1kf+jedxujYrrOAiXqlTPZvE620MTl2C71+qg/03rcl qrwmInm5lxKOmcmdUY5AcDUaw3JDAxrECsSQGPLxHpaF+Nnd6A5ZXi3KnbetV31Zjlk/ DeydfJBM9dy95x4+B05KFHCA7H3sl3QwCb6M2Ut0I+f7c4HKFlhAGOh8HoiP57Pn+KQt d+nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464000; x=1782068800; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=g1F4+IF5etRgwNV0vS9HbRXkwL6EBjEu8mYuHWvbVi0=; b=mXnZDusfs5/sjTZR44lwEmTR0LytXLBcTp3Y7OaYA8BCg2WGdUU7FrerhNI9ZWLmrP EQggvnFrvzrbP12k+TiGQY7oXZYUju8sKLsMM0+ZFfVkXZ08+ovsP7kLSmGUM2Voof90 QwFVywWJ7QPEiYGmZ1R6Xg+FJzhC7Lb27XkSy0P+bB9q9DNeKbE+ccbgGmZ7AcP7XDMi x30Zn+Sscyy7vflucquGOK7uLUP4soSA76RKmevcNIGSFhHvy9f42zavHhkeL1tTz6Je MLFF4R446d3Ca5nW2brXa6kTDuLB2BwgK0DPZ1h1FB2bn2eO5fO8DUsat5tdW+KRXUUJ TNcg== X-Gm-Message-State: AOJu0YwUwH6BhBX0mbVUm2qtD+mB6bvlR2ZQGlk2QfzCo97CAqUZw3p8 3RqWLps2e5yv9E0e/xZFviOOEkFsYgkNuUpq2Rpv0/uoi719jzKBx9i0euUWdKUR82PRcuzLqM6 ZnD7yIGxjcH8md/wwaHvcjGfoIfMWGGYPGnbD96g3yed7Xo6i3SAT67sJW9uuQzSWcLMm55OXNQ TLoZzF+z7RdnPXvU6T7ycQu7eSEzqLgAmfsQ== X-Gm-Gg: Acq92OHYSu0i7BeSLxRZzT0Sv4w3SxFIEs8YIp3G7x+GEGR4u31FW/PzQY7IBItuXJA 5EIKhGu+UaheZdl/kSDkvwgctjEOhSSUO3j7GzR9T8IiSoJIja9K9QQQ/OinnFgU1ds4SoJV5kt ZamqmhtPm5ST73Veksso6Nx8lwg2BWO9YIIcJspsaJoV7IOTdPVO/DAlSUVlFcHJJzrJtlK5Y54 LGb+S65Pkfec3aVPSXycDKRuZcPjFRQ0QQC3VaN6Wl+2mrnCdqP7zVly++MuxhZTuKpqyUm3HSi 1pogv+ruc05D4lbYCLnDQDpBvKD8Rrj6JXuVOZav2o8S8poTW07wJOR8AG05AksI2PH2QN+z4D/ Bz4Dl42GpEr7DrhXv4CO9J8UWeEbXFYmG4pgBH7Sii6c= X-Received: by 2002:a05:600c:214b:b0:490:bd1d:472a with SMTP id 5b1f17b1804b1-490ec4d7879mr102497195e9.15.1781464000167; Sun, 14 Jun 2026 12:06:40 -0700 (PDT) X-Received: by 2002:a05:600c:214b:b0:490:bd1d:472a with SMTP id 5b1f17b1804b1-490ec4d7879mr102496835e9.15.1781463999627; Sun, 14 Jun 2026 12:06:39 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:37 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Zhenzhong Duan , Yi Liu , Clement Mathieu--Drif , Xudong Hao , Jason Wang , Paolo Bonzini , Richard Henderson Subject: [PULL 022/106] intel_iommu: Expose flag VIOMMU_FLAG_PASID_SUPPORTED and VIOMMU_FLAG_WANT_PASID_ATTACH Message-ID: <2b0d91ed44e5e0dc77d151cbdc0dba40c6101490.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464110648158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhenzhong Duan VFIO device will check flag VIOMMU_FLAG_PASID_SUPPORTED and expose PASID capability, also check VIOMMU_FLAG_WANT_PASID_ATTACH to enable pasid attachment, without those guest could not enable PASID of this device even if vIOMMU's pasid is configured. We don't expose the two flags when fist stage translation is not configured as we don't support shadow page table on a PASID. This is the final knob to enable PASID. Signed-off-by: Zhenzhong Duan Reviewed-by: Yi Liu Reviewed-by: Clement Mathieu--Drif Tested-by: Xudong Hao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260527054658.1021096-18-zhenzhong.duan@intel.com> --- hw/i386/intel_iommu.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 31addb98e4..8bb2a1e339 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4788,6 +4788,11 @@ static uint64_t vtd_get_viommu_flags(void *opaque) if (s->fsts) { flags =3D VIOMMU_FLAG_WANT_NESTING_PARENT | VIOMMU_FLAG_WANT_NESTING_DIRTY_TRACKING; + + if (s->pasid) { + flags |=3D VIOMMU_FLAG_PASID_SUPPORTED | + VIOMMU_FLAG_WANT_PASID_ATTACH; + } } =20 return flags; --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464533; cv=none; d=zohomail.com; s=zohoarc; b=Oo9/UhdXfYnNWDyacBHmUEaBw0uGue23duXPrWwMQ4mbv2aH8/6uAWEEUBCKr4bfZ+6Bv7vTaZ3UC1au1Od/03USrEGNN9mlHwI/DgdPV6771TfPbHO2D2zMS3hb/2h7t/Zwy+isaU/ePxRTfyXqoTm8NI3bCQ/F1YnnsNwZsuQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464533; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZsopqGpLlK7+7VYJodV0OGH/y8AVf3Uk2G7CPbsNOgc=; b=b5htZc/MKK+eicHON3DpB/+ltjk1iUxxh4tZmR0M5t+t+XiC+cYTwNk99QBHOfPxGgGNDxe21L3dqM/uaeo8Zey/1WVDqHFcIWRIghdwbAwafq3dCIwLWKwcGpqR6H0nBZpysud7C+n0QjLfUncY2gN2mes6WYjUFWgedRnnzw4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464533723457.3202135893671; Sun, 14 Jun 2026 12:15:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAT-0007gY-Rc; Sun, 14 Jun 2026 15:06:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAR-0007fa-Gh for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAP-0001m4-Ll for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:47 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-399-yAOlQWdaPuCp4T7E9kN2sg-1; Sun, 14 Jun 2026 15:06:43 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490c4f61a34so17528705e9.2 for ; Sun, 14 Jun 2026 12:06:43 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492202edec6sm202482495e9.3.2026.06.14.12.06.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464005; 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: in-reply-to:in-reply-to:references:references; bh=ZsopqGpLlK7+7VYJodV0OGH/y8AVf3Uk2G7CPbsNOgc=; b=iFeiLbylBH/ex4kb/vHp2fLFMqp6eFP3oWwNGKT1Nept8Xtb0el8z+tZ2DpP+0YcnecykV eRHFEpRijJBi4HlMujgILRFAhCkcRZJejAlCQ4oKJ4+5w0wcOGiL7ojnMydc4VYYQT4Nbs Wx7Pu7885NjCs3790wzRU/KNlbFSKxA= X-MC-Unique: yAOlQWdaPuCp4T7E9kN2sg-1 X-Mimecast-MFC-AGG-ID: yAOlQWdaPuCp4T7E9kN2sg_1781464002 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464002; x=1782068802; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=ZsopqGpLlK7+7VYJodV0OGH/y8AVf3Uk2G7CPbsNOgc=; b=X3Uz6pvsk5t9i8aikfXMwamjzxEwvJyWeWGdfUFzhuhspq6Tk+/eO5whDFqXr1XbRY uDYIRwqecoJsDwPH15a72/bJM0PAnXoGd20cGV2KF7SjvfDuQnFYtBUXuPrqG221WBGg 3it6B28Gon11rx+2aUvWj62lE+6DDdVEVDx75jwwjvkfy73SMI7TFS17zVp/s4EtNh3K PF4TGt0udEMJCr1QitnZ/0DHiTIbH0HJel3mCAC04NwYg8d6wYGuJarZr/BxoEgJmrvt P385Lw7PliIAksbavyyaXOXuV8rTRjPbsMpUSP6m/akd3UODSFov1gizuTSEsHy3P1BJ 12zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464002; x=1782068802; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZsopqGpLlK7+7VYJodV0OGH/y8AVf3Uk2G7CPbsNOgc=; b=kbe/63WrJRKUuZJ4li1ZjJQ8/8PmhQ65vDe5eTvkRchrFg/wgr1mBAi5ZsZKsuQ/gp TKFzbJcUgWpXruSwmqUOayMPEKFeMWilNI6EMi2WP0XD0wjBriHYtuOiJQ1+2yGEV6hq Gza8mtpPE6t0Qc6iyKqd0Sx67Hdgwyf5t0DlDLvQnWVnlzVGcoaOCcfSwLXfICurXfXS ksh6onAd5dd7+juez8cYfD8Jf/3b2ZZL0vC+xH5x5dnmCdNa4w6rxQ8JllkGjEZYU3Ki s25ZMZsBXgNGKKh+iBkRfoXF1B4IgMqDifssTwE5jOLZwGZqaoGZEsJG3Bgm4Xof10RH K5hg== X-Gm-Message-State: AOJu0YxeDKkcqK4WkejopyvCwgteuphQMVQjanwSpA6ZaweU18J+bJEB faiTr2UIASyjreFhkDCOHDHLYLN2EN9zd3M7ToIeshzRkzUCUKqvh3EWDE/hqdKe4x2cUyzkiIb 643IGrhfhVd5g1yYflwqcIsxMs+mmzIdBpJc8SBNf2SQ5tzNIFBE4J67/gGfFyQLxXacG8ABwwg b2/BMF9vnOv3xM125UQkZ/djY9+HE9FwY9Ew== X-Gm-Gg: Acq92OFKnzlU3mtTMW/sFaKNprlKk0TJUf2/YspnfnpU/QAkvY8mhljefRldZUZWOAa XHWF/RV9xxXUYd8V8uYr9dEz0UwarTCTWp0mwpgSfIZ/nS4IuOzdW6HJ4bKizw+YjfhIkwF1ZZf oj8Pg+3iXEqt0sqBDyqDze1pLNR6v9LubkCqFXBmUv673/nxthHQorL977qJpXfJ0rzpTSNQYr4 xIsLVRIX/DcYk0NOI1e9/1aobDcBb3XufW07ZDS8ypRc3g9pSGNlB7li2x7vtq8fWcI0/DGHe88 3A+i0fi3HPZ3sMYesdXqfhGE/hF3pQCagbod0qRXF96WHS78BpVGHJEOskf2R/n09/ONh6uXiUj CVafvb3yVzz8L184/myXNnT5EtSh9lH9JcGSVuJNya3A= X-Received: by 2002:a05:600c:524b:b0:492:1f06:ec9b with SMTP id 5b1f17b1804b1-4921f06ee55mr104877355e9.24.1781464002344; Sun, 14 Jun 2026 12:06:42 -0700 (PDT) X-Received: by 2002:a05:600c:524b:b0:492:1f06:ec9b with SMTP id 5b1f17b1804b1-4921f06ee55mr104876935e9.24.1781464001752; Sun, 14 Jun 2026 12:06:41 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:39 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Mark Cave-Ayland , Ani Sinha , Igor Mammedov Subject: [PULL 023/106] hw/acpi/aml-build.c: add aml_irq() representing the 3-byte IRQ descriptor Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464534351158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Mark Cave-Ayland The existing aml_interrupt() uses the Extended Interrupt Descriptor to store the interrupt information, however newer Windows will only parse the standard IRQ Descriptor when enumerating ISA serial ports. Signed-off-by: Mark Cave-Ayland Reviewed-by: Ani Sinha Reviewed-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260515150634.2637533-2-mark.caveayland@nutanix.com> --- hw/acpi/aml-build-stub.c | 6 ++++++ hw/acpi/aml-build.c | 27 +++++++++++++++++++++++++++ include/hw/acpi/aml-build.h | 2 ++ 3 files changed, 35 insertions(+) diff --git a/hw/acpi/aml-build-stub.c b/hw/acpi/aml-build-stub.c index 89a8fec4af..3180c7c962 100644 --- a/hw/acpi/aml-build-stub.c +++ b/hw/acpi/aml-build-stub.c @@ -67,6 +67,12 @@ Aml *aml_irq_no_flags(uint8_t irq) return NULL; } =20 +Aml *aml_irq(uint8_t irq, AmlLevelAndEdge level_and_edge, + AmlActiveHighAndLow high_and_low, AmlShared shared) +{ + return NULL; +} + Aml *aml_interrupt(AmlConsumerAndProducer con_and_pro, AmlLevelAndEdge level_and_edge, AmlActiveHighAndLow high_and_low, AmlShared shared, diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index 7edc8aed42..413d9b6240 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -1061,6 +1061,33 @@ Aml *aml_irq_no_flags(uint8_t irq) return var; } =20 +/* + * ACPI 1.0b: 6.4.2.1.1 ASL Macro for IRQ Descriptor + * + * More verbose description at: + * ACPI 5.0: 19.5.63 IRQ (Interrupt Resource Descriptor Macro) + * 6.4.2.1 IRQ Descriptor + */ +Aml *aml_irq(uint8_t irq, AmlLevelAndEdge level_and_edge, + AmlActiveHighAndLow high_and_low, AmlShared shared) +{ + uint16_t irq_mask; + Aml *var =3D aml_alloc(); + uint8_t irq_flags =3D level_and_edge | (high_and_low << 3) | + (shared << 4); + + assert((level_and_edge =3D=3D AML_EDGE && high_and_low =3D=3D AML_ACTI= VE_HIGH) || + (level_and_edge =3D=3D AML_LEVEL && high_and_low =3D=3D AML_ACT= IVE_LOW)); + assert(irq < 16); + build_append_byte(var->buf, 0x23); /* IRQ descriptor 3 byte form */ + + irq_mask =3D 1U << irq; + build_append_byte(var->buf, irq_mask & 0xFF); /* IRQ mask bits[7:0] */ + build_append_byte(var->buf, irq_mask >> 8); /* IRQ mask bits[15:8] */ + build_append_byte(var->buf, irq_flags); /* IRQ flags */ + return var; +} + /* ACPI 1.0b: 16.2.5.4 Type 2 Opcodes Encoding: DefLNot */ Aml *aml_lnot(Aml *arg) { diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h index e70e0643b1..eaff025d26 100644 --- a/include/hw/acpi/aml-build.h +++ b/include/hw/acpi/aml-build.h @@ -343,6 +343,8 @@ Aml *aml_io(AmlIODecode dec, uint16_t min_base, uint16_= t max_base, Aml *aml_operation_region(const char *name, AmlRegionSpace rs, Aml *offset, uint32_t len); Aml *aml_irq_no_flags(uint8_t irq); +Aml *aml_irq(uint8_t irq, AmlLevelAndEdge level_and_edge, + AmlActiveHighAndLow high_and_low, AmlShared shared); Aml *aml_named_field(const char *name, unsigned length); Aml *aml_reserved_field(unsigned length); Aml *aml_local(int num); --=20 MST From nobody Sun Jul 26 13:26:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464376; cv=none; d=zohomail.com; s=zohoarc; b=GSQ/rKtCzMgC/zHjAiIXeUoLWoVe9eqEG3exvn++A9cncowQPC6U75NpvOY+PwK17+kcXUbwnshyaSncLeLMSgVo3ASuYHdT/p5WNsOWbieY5N4Nlj5OFE3v9bk0E7/F8r8KkbFx4Lrra1WrRGE1+Ue23jrLq32Y7fu9VQgtNFU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464376; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hS7nfdNFVWuvnYCHiHQhQ2fflaXhUNWx6WQgE1DrUx0=; b=CHOeKstLcB9roX5OcmC81zSPkWPEIcVpPSmWigMppnLqJmCFnETsI6HZc2rsUGtbrSGswH5l50CX80jPGJD8TXNdj43/RfORmNxr0m+Z3y1eeFXbptt7COTCM4Tj9ipDhtFfqp70IhsvZEuJxsnccOdTPCdZlqmGQEXdHFEli/o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464376377352.1593968726397; Sun, 14 Jun 2026 12:12:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAX-0007rG-NV; Sun, 14 Jun 2026 15:06:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAW-0007gw-2Y for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAU-0001mY-Gc for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:51 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-31-XvzuJRBrMP2NnIM9rDT4xA-1; Sun, 14 Jun 2026 15:06:46 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490abeb7298so29282355e9.2 for ; Sun, 14 Jun 2026 12:06:46 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220372ed0sm163955265e9.14.2026.06.14.12.06.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464009; 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: in-reply-to:in-reply-to:references:references; bh=hS7nfdNFVWuvnYCHiHQhQ2fflaXhUNWx6WQgE1DrUx0=; b=Zvb3oVpVhqYM4D5fCjwd5c3t9gnLMvoixCKxS+3Ulr4RfpDUCQu7LB4SLSZ4ycMH1hz9LX 8OGP6bY9NaUnX0pPBRFtVsMcCxwHCmBVc2+RyZQngOKsFuf6iNJCtsdmJ2I46EvXtvHwj5 NiH1Qkmihyiil4nnuI4z1TEOIO2uZ1I= X-MC-Unique: XvzuJRBrMP2NnIM9rDT4xA-1 X-Mimecast-MFC-AGG-ID: XvzuJRBrMP2NnIM9rDT4xA_1781464006 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464005; x=1782068805; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=hS7nfdNFVWuvnYCHiHQhQ2fflaXhUNWx6WQgE1DrUx0=; b=oS9rSmWVsuk+aC1PiIRpoWLtlbUc3Tlh6kDx2kuTqcrX4DT5wpr+3mE1ph7bTCVM97 53srDj/PlVmZeXYpuXBySRXIhEm7ronkvXGhVwKywljWEq+3nW/Zfh+Fckig+Mn18gWL GBBekKA2Xd7ErdbZ5jd5LaiRazPLowqo6xl2hJglcVHcghZJkR+hMNMjZiPi1ScRvuLh TknWC6MnRan2/114oK+ogC8yI8s92jtaDj54076Arqjnje/c4S71h7E4F7dynDc9mm4C d33WLQjnsLlfXo3259jX33FLHaA28e+i1raoVRhuKgTBAvKM7Y7HR/tJTjHDMQB8lD73 R+Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464005; x=1782068805; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hS7nfdNFVWuvnYCHiHQhQ2fflaXhUNWx6WQgE1DrUx0=; b=pJSlTbwNYsGc9PkWrcVSaFJKiWiNdBLHost4VQaanqhbTkCJKH1LxBhKKSY2IzvX99 Ic2tzUDLDNIqyaaCJVYB2sOdC5FH1q3vxZzRj71ZiBRsze1HF7LXA7EJYWUi60b9PpbI NfrG0lLFE0R6TY2kzbHi8JT8rnuuSk2Wknp6sYwGCgwGWjcL2kHSNnG4VN3bXLukaVS6 4T0wkf4XXuXw2eILRv5zGkEOMAvK8tROmKJVkim2uBfJTzO9nCrdR/CFS/CjN7xqYoeo JTilkG0+rC9nRbp+AoJMdCgtW/df3boSH7zujeG0VC+31HUJ0jc1eZumAigfRpa+aRWK zCGg== X-Gm-Message-State: AOJu0YzkUBbyxhqgi/4JOI3X96PDXA4uLOvC1pbfz5L3vUL0ymQiD7B6 E0OreYssuWePaTzh3O7sqUDJEIIfvXlrfoSrGVTjAYqsobZh94L7gEYqasn4gicJRy31ksyYUzN t3U7VLlwNh+F4QS6RTwy99S/guKN2qvyLnDz6Z2+jfK0oq6VXGEtnDTyUkMdh4Dm4aO+rWbmBkx DeF4j6QytXeEdoN1xx4MG8wjWOXhoRd5ss3w== X-Gm-Gg: Acq92OGor/+EWET5sbhyiKaUWfyCBNFAwW/PlgR9ke8JvCn9LIwwLoAZNB/Us5/By9h YHSsvuQJBSSBBMKSgwAvL9WyPuHoZhiBZKIK7ooaGwSbR7vJ/aAOtIJM6s72kBPZhVSK3+IoxmL +GAy5aLqP/RV4Jkmils86IaiEdzgW4Ep8zQK8KZ+SFLVIiuykbDFRA7YZLWiaxDYhgBGf1ChlJz CV7jTevoqcWsa04zXhHwM7pEUR0wkZCVvHK05yC5u/V3liqGriGQVRKjcMhB7NfKlRvXnoRk8bi pka33Hi1xzcaMQKBC+iFui/6tQ6rhcS13yRU130k1xFaRcVDGsJEpg6H3z7VZeeKQ5ocx/7Imlv D6TebVRLN9MxPrcosQ1A6ZZ/oqXifgDY46R4c1x5T0Qk= X-Received: by 2002:a05:600d:8446:20b0:492:1e36:4271 with SMTP id 5b1f17b1804b1-49220149873mr65779865e9.37.1781464005442; Sun, 14 Jun 2026 12:06:45 -0700 (PDT) X-Received: by 2002:a05:600d:8446:20b0:492:1e36:4271 with SMTP id 5b1f17b1804b1-49220149873mr65779565e9.37.1781464004794; Sun, 14 Jun 2026 12:06:44 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:41 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Mark Cave-Ayland , Ani Sinha , Igor Mammedov Subject: [PULL 024/106] tests/acpi: allow DSDT acpi table changes Message-ID: <6d40788bfd8f8b7b39d489bda1a61fa0a2ae9951.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464377675158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Mark Cave-Ayland Signed-off-by: Mark Cave-Ayland Acked-by: Ani Sinha Acked-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260515150634.2637533-3-mark.caveayland@nutanix.com> --- tests/qtest/bios-tables-test-allowed-diff.h | 47 +++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..cef44135bc 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,48 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/x86/pc/DSDT", +"tests/data/acpi/x86/pc/DSDT.bridge", +"tests/data/acpi/x86/pc/DSDT.ipmikcs", +"tests/data/acpi/x86/pc/DSDT.cphp", +"tests/data/acpi/x86/pc/DSDT.numamem", +"tests/data/acpi/x86/pc/DSDT.nohpet", +"tests/data/acpi/x86/pc/DSDT.memhp", +"tests/data/acpi/x86/pc/DSDT.dimmpxm", +"tests/data/acpi/x86/pc/DSDT.acpihmat", +"tests/data/acpi/x86/pc/DSDT.acpierst", +"tests/data/acpi/x86/pc/DSDT.roothp", +"tests/data/acpi/x86/pc/DSDT.hpbridge", +"tests/data/acpi/x86/pc/DSDT.hpbrroot", +"tests/data/acpi/x86/q35/DSDT", +"tests/data/acpi/x86/q35/DSDT.tis.tpm2", +"tests/data/acpi/x86/q35/DSDT.tis.tpm12", +"tests/data/acpi/x86/q35/DSDT.bridge", +"tests/data/acpi/x86/q35/DSDT.noacpihp", +"tests/data/acpi/x86/q35/DSDT.multi-bridge", +"tests/data/acpi/x86/q35/DSDT.ipmibt", +"tests/data/acpi/x86/q35/DSDT.cphp", +"tests/data/acpi/x86/q35/DSDT.numamem", +"tests/data/acpi/x86/q35/DSDT.nohpet", +"tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator", +"tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x", +"tests/data/acpi/x86/q35/DSDT.memhp", +"tests/data/acpi/x86/q35/DSDT.dimmpxm", +"tests/data/acpi/x86/q35/DSDT.acpihmat", +"tests/data/acpi/x86/q35/DSDT.mmio64", +"tests/data/acpi/x86/q35/DSDT.acpierst", +"tests/data/acpi/x86/q35/DSDT.applesmc", +"tests/data/acpi/x86/q35/DSDT.pvpanic-isa", +"tests/data/acpi/x86/q35/DSDT.ivrs", +"tests/data/acpi/x86/q35/DSDT.type4-count", +"tests/data/acpi/x86/q35/DSDT.core-count", +"tests/data/acpi/x86/q35/DSDT.core-count2", +"tests/data/acpi/x86/q35/DSDT.thread-count", +"tests/data/acpi/x86/q35/DSDT.thread-count2", +"tests/data/acpi/x86/q35/DSDT.viot", +"tests/data/acpi/x86/q35/DSDT.cxl", +"tests/data/acpi/x86/q35/DSDT.ipmismbus", +"tests/data/acpi/x86/q35/DSDT.xapic", +"tests/data/acpi/x86/microvm/DSDT", +"tests/data/acpi/x86/microvm/DSDT.usb", +"tests/data/acpi/x86/microvm/DSDT.rtc", +"tests/data/acpi/x86/microvm/DSDT.ioapic2", +"tests/data/acpi/x86/microvm/DSDT.pcie", --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464066; cv=none; d=zohomail.com; s=zohoarc; b=F7jwGoGS4AXscCWt+nRBaUWylCNuMSSWOvdemAUEZf7sh2ZtC2WE5NaMfUPovQ71z5XoSoA/CbHtARd+wL5W5LFYNUgmdIpb9Ghm39T9vzTo0wtKx4zVqVcXlNXCPdMgXQ/cXq6iAo4NDz43oMBXR1k9JwPDCMLWre0FGj1I/wY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464066; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Zy+KxHWGEBRW7m0bG1W08Cf+nbSLlxXmtq1kZ68JP+k=; b=f3rjPNIfFz6tlPbzcnqIHig16tsc4Dj6Mm9gIpaEXQEw4DcisEdDnpIV2IodEzRb9RTDie1HKvNOZBR9warf3KVd3GJ3Av+cqO5ie3GT2mePFmQCSI/0csRX+qWRG8k+P5BVTf1hlVOMbe5WXTI07i6AWUy9u6yIoyZ5/AKw5IE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464066128220.22818437860622; Sun, 14 Jun 2026 12:07:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAY-0007u7-PO; Sun, 14 Jun 2026 15:06:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAW-0007i4-Ao for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAU-0001mf-S9 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:52 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-636-cJlRN4uhN5urZLENIiMHFQ-1; Sun, 14 Jun 2026 15:06:49 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490b37e1f47so18563125e9.0 for ; Sun, 14 Jun 2026 12:06:48 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922033156csm173868055e9.7.2026.06.14.12.06.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464010; 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: in-reply-to:in-reply-to:references:references; bh=Zy+KxHWGEBRW7m0bG1W08Cf+nbSLlxXmtq1kZ68JP+k=; b=J+ToT24TERagKNkCjT/G2i3XrvxGjTOkVWnK+bNe9fe/5qK4z14LIA+bmwbm/qTYBBmn4g wGSmJ9uNEeEAvqOI9opdrSwF+6o3OUfh6ooWMy65MyYyIuqCerj2J0t8UjiREcK5kA1vHW JiQHvyEx50yz998w+LOFgIbrwMivkCo= X-MC-Unique: cJlRN4uhN5urZLENIiMHFQ-1 X-Mimecast-MFC-AGG-ID: cJlRN4uhN5urZLENIiMHFQ_1781464008 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464007; x=1782068807; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=Zy+KxHWGEBRW7m0bG1W08Cf+nbSLlxXmtq1kZ68JP+k=; b=OaYnkoBzrwq8MlemP+XnfjLznIIqT0udvisFphyjsb2Mb/RpjQ73kl6JS7bKGOwWXL 8LHmW2690kG4tXL8SqgpN5P3SodmMXqnu4fIQAy/vP5lA3t4kOfmALsAhBaPHSvmsG3G 9ryxehqNqj7aKyOgvVtsvblP8fBsjFvOXfkjpKa4UGjyIQo9ORoT9hVuy3z/Gw2ZLHHH DUVl8IvQXZ1UB4pealIpMZcwKmoPfd+xQgW6LLBptU6PftfEkWQKgmR+Xhme8emUOnjl mamIpEsnawdNScb4wVvFh6cFLT+fKtto5meqtAmFj1175NR14r2ZAFv+nBz+HFZMZTpq 7WlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464007; x=1782068807; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Zy+KxHWGEBRW7m0bG1W08Cf+nbSLlxXmtq1kZ68JP+k=; b=SvIPmjRGCV61zA8VbHFT2MtU1q0Fv1+VsFsp6EqgkrsnAB19DZmSHInkx509RUbgxe rRx4461QUmltPOnuJ0uR4PUuX8wvpxGHyyZrMxrdx61BDy9KemqMs+lRotFIsF2+aZQH jrI2AOpjoG+IobBfbgjDV2sdo+oMXeIK8w953d+e2Xt5jJdXZnRnzS8/ApPgasWmfox6 nCjnwXRXNUutIpc7vFC+RQ446I0asjVJZiFFNwchAWNiSqYW30D6TV57rQdqflUUZZkY aSCJTNbieCqSCEEtJmz1AKSnmVlfw99P1i/vihioTyAc23LZcLRGsRLwB+eEX2cd3dGz hZwA== X-Gm-Message-State: AOJu0YyxmceJfzquFOFdvlMrJSefumehMOAavGGoLtnS659uTrbTLVf9 wSw4Fwib+mHwdzWZEVYuTX5zC4ODzHAVoFMHj5jUgDQ+7gbWIINGJRoAJBM9sJXVo8v6ikLq/kM TRAULmqRPUpfY+vGakSzP7Q3yZudw4Ut9icMhUFj+iHhydtUWO+CyGLmrgFE4GCJryNIfXreT/e sAWH2rzeiMGK/hceoMMRCdR1nsfhwKzedigg== X-Gm-Gg: Acq92OHo9KLPweCtbwzDgkqIEEu/Z6FbGRQQ421t/SYLPD4rqrK25RQ8AtkVxMCuhyq 6DOIwaT+U9Z+uv5kVFeYWV6pTcxqItJxwIe1iSFgJrHNx4odUCyw6UrdqvWb5WXY4e6evT54Uuk xayPkaB4FsYgdURqZRNIwDaZgVHk5xhTsca/I3lDyjA/Qm26C1ZJz4IhEMH25iN2bw3KHjiNUfp iyfkKktGAKxdGKMvQU8Fs0LlvkjKNPFYE/TsTtXlX/PjchuqL3H3S4DZSPpiqFAYpxPRJMzKOVQ Pn0jbxRZC7HYj3xWdVFRwdtf3fmblblvU24JCNQc4YbolzbH5jnrv0HC0cn+5fQLTliGLbXgYaE wIG3oSavavoJo9QNoyn26uIabbukcbfS3EASg0vEcp2o= X-Received: by 2002:a05:600c:3e06:b0:490:a964:14f8 with SMTP id 5b1f17b1804b1-49220084947mr96609085e9.8.1781464007611; Sun, 14 Jun 2026 12:06:47 -0700 (PDT) X-Received: by 2002:a05:600c:3e06:b0:490:a964:14f8 with SMTP id 5b1f17b1804b1-49220084947mr96608725e9.8.1781464007073; Sun, 14 Jun 2026 12:06:47 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:45 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Mark Cave-Ayland , Ani Sinha , Igor Mammedov , Paolo Bonzini , =?utf-8?Q?Marc-Andr=C3=A9?= Lureau Subject: [PULL 025/106] hw/char/serial-isa.c: declare IRQ as shared in ACPI IRQ descriptor Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464068510158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Mark Cave-Ayland From Windows 8.1 onwards ISA serial IRQs cannot be shared when ACPI Revision 3.0 is used in the FACP table. The reason for this is that if a 2-byte IRQ Descriptor is used then the interrupt is considered to be high true, edge sensitive, non-shareable. Since legacy serial ports COM1/3 and COM2/4 share an IRQ then if more than 2 serial ports are added, Windows indicates a conflict in Device Manager and these combinations cannot be used together. Change the 2-byte IRQ Descriptor in the _CRS resource to a 3-byte IRQ Descriptor indicating that the ISA serial IRQ is low true, level sensitive = and shareable. This enables all 4 legacy serial ports to be used in Windows wit= hout conflict. Note that it was agreed during the list discussion that this change does not require a compatibility property since it is not part of the default machine configuration and was already broken. Signed-off-by: Mark Cave-Ayland Reviewed-by: Ani Sinha Reviewed-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260515150634.2637533-4-mark.caveayland@nutanix.com> --- hw/char/serial-isa.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/char/serial-isa.c b/hw/char/serial-isa.c index a4be0492c5..eaa4e843c0 100644 --- a/hw/char/serial-isa.c +++ b/hw/char/serial-isa.c @@ -92,7 +92,8 @@ static void serial_isa_build_aml(AcpiDevAmlIf *adev, Aml = *scope) =20 crs =3D aml_resource_template(); aml_append(crs, aml_io(AML_DECODE16, isa->iobase, isa->iobase, 0x00, 0= x08)); - aml_append(crs, aml_irq_no_flags(isa->isairq)); + aml_append(crs, aml_irq(isa->isairq, AML_LEVEL, AML_ACTIVE_LOW, + AML_SHARED)); =20 dev =3D aml_device("COM%d", isa->index + 1); aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0501"))); --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464372; cv=none; d=zohomail.com; s=zohoarc; b=Q9UYdAbn0SUbBkqQuwjLlOKbF4vZRMv/4oexXba9aZGrymKR170fFb6x2Cs5oDyWcvY3LtTO7UPYUl390jdgBLQdTgLQfJ6IL+ElUfQkwcTZvOaIa0jW2c57RppdQGtej8cH6LTx90NJF8LYerRNPUhByQwfqtJiRMWVUwJKo9k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464372; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dxfCgK7j9ZVkDQGa2uadefxrlsgf/dJnDsBtamRXMlM=; b=A6ssUm/EAwSbetQ+OxGmftc/MnJKovwsAfQCfLMI75YzWf6iDHmzNRuwbD3IIvXR/GTAtw/TL8n28yqkP46ut1NmBbL7KME1+Of5U5sf0/NnL/Fetpwjsou3e4fLtT75BVs+1P/oqF9Cdz258+7aJDrJZScpWMXf244sLXJPzN8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464372655189.67119802640423; Sun, 14 Jun 2026 12:12:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAg-00005h-ER; Sun, 14 Jun 2026 15:07:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAd-0008NZ-Ok for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:59 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAZ-0001n1-5T for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:59 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-664-A59-as7TOAq_V2Bui9d_yA-1; Sun, 14 Jun 2026 15:06:53 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490b7959b9fso25351685e9.2 for ; Sun, 14 Jun 2026 12:06:52 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490ea94f5b0sm187748255e9.1.2026.06.14.12.06.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464014; 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: in-reply-to:in-reply-to:references:references; bh=dxfCgK7j9ZVkDQGa2uadefxrlsgf/dJnDsBtamRXMlM=; b=IUzaxOQ0R5fud0X3Jlqm2bXRuR3pZvHOK9PzrXpWS1umGKwTFxgQeVDsjx87QfBNY68p5+ qPsk+Wi4yLU6kxdmzqcSM7/yuSeWwKSIOc5qHguhx3qj7kII3FEjvY9749h0HL1FuVoMft d71nioctsgs7eFv195ze68U7DH/EhO4= X-MC-Unique: A59-as7TOAq_V2Bui9d_yA-1 X-Mimecast-MFC-AGG-ID: A59-as7TOAq_V2Bui9d_yA_1781464012 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464012; x=1782068812; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=dxfCgK7j9ZVkDQGa2uadefxrlsgf/dJnDsBtamRXMlM=; b=C1RiroInPkxczYTByhMZN/ghbF8yhzhM/m7O6n/g73FveMkCVFOJTaFUmEQTukts8j ZCrrOuBM1lREE6zgx46zOsMrBgPHsQLNOPrryxINPefeZnR/WVk6QszNgi363qwGx+Lj 4eSapQxLvI7HyQNPIkxv3SVLc25lnlBLisQyTyIb4PU4AxWK6MQBclc3DM1uG1uJxb4d D6ntIjJax9WsTxY5g0CYDZaOrniWBnJuieFalnPcMKwmKpVTYC4wCps/bJUzRnzLrFDw uJTw8g+z4Qo5lUR2wSWXdOzFVeXeCMKgMz8FXXE0qQ6vEhW6RLvc/HxKnhY6e6W48nGo 00Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464012; x=1782068812; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dxfCgK7j9ZVkDQGa2uadefxrlsgf/dJnDsBtamRXMlM=; b=X2/DTXVN4K8r4vJX4Uw+M1CTjjR2YYo/4Y9+vVq6XaSL6xGuXPYoVMVJw94W43DWUp QZc1T0sKKClzkSiJ+AdtrHvRuqT/MFUPsIcoWCe734PJH4jCu2DZ4VGdd6rYrFrlQ3f1 5dK8TInB+zUurP03zsxd5fG8GYzx0LBsP1gYTqDBtlBd/zbBLjYLfrMGd11XYp5wHIVs 7aKtSWWbjHkZKjpNIbpvMw4osy8/qVF8wNr7+5YXAsnpt2kUQJfcfZyR55rlx7K/Jp9b fUgkgmtqscUGUj6HkdB75AL1s9tNNACQha/Z5jM+ZdShAkVRUGWWTuabNhqlOw8Q6d8S Hc9A== X-Gm-Message-State: AOJu0YzCJc2w2B80uP4yKRBCDDnKVHCSkwAc44djMoB5vRTNVx36HJvH PBFcPPzl0UgYVVkqlVYdFszzBppSRnvozyacH9gy39KayvLW0syJC1vQSahBpOSGqN/MivZZtS6 rpjA94QgWCNu8fSAhCOkQhUryn2VES3x+RnAdMPNUhjseKh1oKMffNA6dh5Eivm9+kg9OsZS8Bz mCK212gvy7CBSaOOqaKOCAcRIc1utw1S/trg== X-Gm-Gg: Acq92OGygSoE5xVtXaTrT5+S8Mrm+GETwmsTbBec9nYvEABK9/1ULsoOzX7J11NBSKw cpUBQIwL67Hqf66ZY1H3tMq63CnmYtHfG6Q4I5fT3Dl/hGW+BCXG/ZRK/b3vW43/01UA4Z4lkf5 wg6TuoE1viW2vBOnlFUZFB0iE9u92T4JwNqSM6RqJiz58fgyy9vgz27BE0ODOw5sCGpNCJDZe9g eJwD6eIuFG0z4Qhpr3sUwEQ+tdFDg0XRekJ496L9Uq+/EQocJEm5nYIvlo3byPJhAO3GTpH6ih1 VpC4GxR/TKCKLxMSANj9KPH/j7uvMnrknpg2HX71l8uh2KMan/RlN0sdWWgPgkBvRi2Hgxjq4Mp QED92qgfYyyuSM8FX+BI3TGvHcR88XXtOBC2qzMhISI8= X-Received: by 2002:a05:600c:c4ab:b0:48f:f64c:c2fe with SMTP id 5b1f17b1804b1-490ec4f8090mr159054925e9.22.1781464011530; Sun, 14 Jun 2026 12:06:51 -0700 (PDT) X-Received: by 2002:a05:600c:c4ab:b0:48f:f64c:c2fe with SMTP id 5b1f17b1804b1-490ec4f8090mr159054375e9.22.1781464010856; Sun, 14 Jun 2026 12:06:50 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:47 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Mark Cave-Ayland , Ani Sinha , Igor Mammedov Subject: [PULL 026/106] tests: data: update x86 ACPI tables Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464373751158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Mark Cave-Ayland Update the x86 ACPI tables to reflect the IRQ descriptor changes for ISA se= rial ports: Device (COM1) { Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Por= t */) // _HID: Hardware ID Name (_UID, One) // _UID: Unique ID Name (_STA, 0x0F) // _STA: Status Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IO (Decode16, 0x03F8, // Range Minimum 0x03F8, // Range Maximum 0x00, // Alignment 0x08, // Length ) - IRQNoFlags () + IRQ (Level, ActiveLow, Shared, ) {4} }) } Signed-off-by: Mark Cave-Ayland Acked-by: Ani Sinha Acked-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260515150634.2637533-5-mark.caveayland@nutanix.com> --- tests/data/acpi/x86/microvm/DSDT | Bin 365 -> 366 bytes tests/data/acpi/x86/microvm/DSDT.ioapic2 | Bin 365 -> 366 bytes tests/data/acpi/x86/microvm/DSDT.pcie | Bin 2985 -> 2986 bytes tests/data/acpi/x86/microvm/DSDT.rtc | Bin 404 -> 405 bytes tests/data/acpi/x86/microvm/DSDT.usb | Bin 414 -> 415 bytes tests/data/acpi/x86/pc/DSDT | Bin 8598 -> 8599 bytes tests/data/acpi/x86/pc/DSDT.acpierst | Bin 8509 -> 8510 bytes tests/data/acpi/x86/pc/DSDT.acpihmat | Bin 9923 -> 9924 bytes tests/data/acpi/x86/pc/DSDT.bridge | Bin 15469 -> 15470 bytes tests/data/acpi/x86/pc/DSDT.cphp | Bin 9062 -> 9063 bytes tests/data/acpi/x86/pc/DSDT.dimmpxm | Bin 10252 -> 10253 bytes tests/data/acpi/x86/pc/DSDT.hpbridge | Bin 8549 -> 8550 bytes tests/data/acpi/x86/pc/DSDT.hpbrroot | Bin 5087 -> 5088 bytes tests/data/acpi/x86/pc/DSDT.ipmikcs | Bin 8670 -> 8671 bytes tests/data/acpi/x86/pc/DSDT.memhp | Bin 9957 -> 9958 bytes tests/data/acpi/x86/pc/DSDT.nohpet | Bin 8456 -> 8457 bytes tests/data/acpi/x86/pc/DSDT.numamem | Bin 8604 -> 8605 bytes tests/data/acpi/x86/pc/DSDT.roothp | Bin 12391 -> 12392 bytes tests/data/acpi/x86/q35/DSDT | Bin 8427 -> 8428 bytes tests/data/acpi/x86/q35/DSDT.acpierst | Bin 8444 -> 8445 bytes tests/data/acpi/x86/q35/DSDT.acpihmat | Bin 9752 -> 9753 bytes .../data/acpi/x86/q35/DSDT.acpihmat-generic-x | Bin 12637 -> 12638 bytes .../acpi/x86/q35/DSDT.acpihmat-noinitiator | Bin 8706 -> 8707 bytes tests/data/acpi/x86/q35/DSDT.applesmc | Bin 8473 -> 8474 bytes tests/data/acpi/x86/q35/DSDT.bridge | Bin 12040 -> 12041 bytes tests/data/acpi/x86/q35/DSDT.core-count | Bin 12985 -> 12986 bytes tests/data/acpi/x86/q35/DSDT.core-count2 | Bin 33842 -> 33843 bytes tests/data/acpi/x86/q35/DSDT.cphp | Bin 8891 -> 8892 bytes tests/data/acpi/x86/q35/DSDT.cxl | Bin 13218 -> 13219 bytes tests/data/acpi/x86/q35/DSDT.dimmpxm | Bin 10081 -> 10082 bytes tests/data/acpi/x86/q35/DSDT.ipmibt | Bin 8502 -> 8503 bytes tests/data/acpi/x86/q35/DSDT.ipmismbus | Bin 8515 -> 8516 bytes tests/data/acpi/x86/q35/DSDT.ivrs | Bin 8444 -> 8445 bytes tests/data/acpi/x86/q35/DSDT.memhp | Bin 9786 -> 9787 bytes tests/data/acpi/x86/q35/DSDT.mmio64 | Bin 9557 -> 9558 bytes tests/data/acpi/x86/q35/DSDT.multi-bridge | Bin 13280 -> 13281 bytes tests/data/acpi/x86/q35/DSDT.noacpihp | Bin 8289 -> 8290 bytes tests/data/acpi/x86/q35/DSDT.nohpet | Bin 8285 -> 8286 bytes tests/data/acpi/x86/q35/DSDT.numamem | Bin 8433 -> 8434 bytes tests/data/acpi/x86/q35/DSDT.pvpanic-isa | Bin 8528 -> 8529 bytes tests/data/acpi/x86/q35/DSDT.thread-count | Bin 12985 -> 12986 bytes tests/data/acpi/x86/q35/DSDT.thread-count2 | Bin 33842 -> 33843 bytes tests/data/acpi/x86/q35/DSDT.tis.tpm12 | Bin 9033 -> 9034 bytes tests/data/acpi/x86/q35/DSDT.tis.tpm2 | Bin 9059 -> 9060 bytes tests/data/acpi/x86/q35/DSDT.type4-count | Bin 18661 -> 18662 bytes tests/data/acpi/x86/q35/DSDT.viot | Bin 14684 -> 14685 bytes tests/data/acpi/x86/q35/DSDT.xapic | Bin 35790 -> 35791 bytes tests/qtest/bios-tables-test-allowed-diff.h | 47 ------------------ 48 files changed, 47 deletions(-) diff --git a/tests/data/acpi/x86/microvm/DSDT b/tests/data/acpi/x86/microvm= /DSDT index f477668f2ee80241e47b340ad4a30f5480df2049..5d03103170c7e22f903f3ccdb3d= 32be0a4405498 100644 GIT binary patch delta 47 zcmaFM^p1(kCDGMP`X-1EUYUYf_6XO*51-ba#8GkVUU}oS@7GRK=3D*!utg DFN_Rz delta 46 zcmaFI^p=3DUsCDUG^6`OHFHLziE)a20$jZAj6axvFf(u{2{26TdjJ3k C0}FKk diff --git a/tests/data/acpi/x86/microvm/DSDT.ioapic2 b/tests/data/acpi/x86= /microvm/DSDT.ioapic2 index e5924a49962e0cff4228bcfc77ebcf48cb4a2219..b48db019ffec202fb93a5cdd834= 581f5e8bdba66 100644 GIT binary patch delta 47 zcmaFM^p1(kCDGVV{X-4;nYUYea6XO*51h{zJ8GkVUU}oS@5@49v_W%GN CLkuqf diff --git a/tests/data/acpi/x86/microvm/DSDT.pcie b/tests/data/acpi/x86/mi= crovm/DSDT.pcie index b646a05551c1ed902413a462442346ce246f8675..b92fb08532a24eaf5cfe0e6039e= 80688be3fffa7 100644 GIT binary patch delta 48 zcmZ1}zDk_SCD)yx@c(v1ES)yx@<{9 delta 47 zcmbQrJcXIdCDC5E4mL1|=3DZJT731WzD ma^HMkD29>Ic(RR%BEKLPpF86Z<{!)q9LfR=3D5}UI{w0Qv-eisS=3D delta 81 zcmbR4Jk6QQCDC5E4mL1|=3DZJT731WzD la@%}gD29>IXtIrnBA);kuRG%p<{!)q97+NVn{!08c>xKT7YYCX diff --git a/tests/data/acpi/x86/pc/DSDT.acpierst b/tests/data/acpi/x86/pc/= DSDT.acpierst index d8c173aa613f51b1c76ea7b9dee19e899cba240d..4e044bb4eb2048a8ae15df102b7= 8c6ebf0cd8f13 100644 GIT binary patch delta 82 zcmdn%w9kplCD(hcWTNPVoYs4+5M$4WgU4gAEMgIpQ5%f*7Kk m+&AABieY3lo@^tc$S=3Dsn=3Dg#~OFRJNW)|K6 delta 81 zcmdnzwAYEtCDb|E>3hcWTNPVoXB4+5M$4WgU4gAEMgIpQ5%f*7Kk l+&14AieY3lnrtJY$S1(X>(2Ot`3Exthmrup<{XhrJOI{H7Ty2=3D diff --git a/tests/data/acpi/x86/pc/DSDT.acpihmat b/tests/data/acpi/x86/pc/= DSDT.acpihmat index ba363d6af76af728b7c88bbaf47f7e0ea3dcb41f..54ce2df998b10a9c88efe8b76c7= b2d533460d432 100644 GIT binary patch delta 82 zcmX@?d&HN^CDC5E4mL1|=3DZJT731WzD ma^K7&5yQx6JULTRkzbID&zlZKp delta 81 zcmX@&d)SxDCDC5E4mL1|=3DZJT731WzD la@))!5yQx6G&xgJkxzh&*PZbP^ABbQ4kZDG%`+vnc>y947cc+- diff --git a/tests/data/acpi/x86/pc/DSDT.bridge b/tests/data/acpi/x86/pc/DS= DT.bridge index b68302363cb24181988d6e3dceb04a0946838d5e..957e12c296d76ef63877691947c= 94176ab40b08d 100644 GIT binary patch delta 83 zcmaD`@vef)CD51NyNI0UvzYi`r+5L!X93Qh2GLF2!3GBL9Py4WK@8DN lZkyMO#4s`%P393(>$1(B2PVoYcj{}@N4WgU4gAEMgIpQ5%f*7Kk m+&AABieY3lo@^tc$S=3Dsn=3Dg#~UpxQ>h8J%D delta 81 zcmaFn^wf#VCDB$1(B2PVoW`j{}@N4WgU4gAEMgIpQ5%f*7Kk l+&14AieY3lnrtJY$S1(X>(2Ot`3Exthmrup<{XhFcj1P delta 81 zcmaE$eqWu-CDs((`LSGO{>QF;TFk6BPQ!p@J2wy=3D& oQUF_mPqW_=3DqyYgllY|r@4-pCuM*;W)_yYh4BM<->v$GT{4N6-WM*si- delta 81 zcmV-X0IvVvL*7FQL{mgm-XQ=3D00duhmw-O#f>s((`LSGO`>QF;TFk6BPQ!p@J2wy=3D& nQUF_mPP5+(2Ot`3Exthmrup=3DG~IoyZ{$C7d8L@ diff --git a/tests/data/acpi/x86/pc/DSDT.nohpet b/tests/data/acpi/x86/pc/DS= DT.nohpet index 7eedfcd64ebd0193744864b4f6cbead35c7c3ab2..f762b83ee7a5001f5a92a73c201= b814f7007afd5 100644 GIT binary patch delta 82 zcmeBh>U83A33dtLRAgXaT(FT#Q%KJ1SxkJeQ@nuFvjAsLgXkviU;~4Aj(A6xAcp8B m_sxMqF^r7Hlh+9=3D@(XhDxikJ?{=3Dv+^p)9~4vH7mBHZK6K_Z95` delta 81 zcmeBl>Tu$633dtLP-I|WJg|{VQ%KJ9SxkJeQ@nuVvjAsLgXkviU;~4Aj(A6xAcp8B lx6Oey+WK`&tl?(o#F+YCSMQ|VRYa8R49hg(Ae4E*N`LL z!_$Sw@d7I&M|`NK3nNE-aEK!pKS#WCP_UpN7oR)h59S}t3>?Y=3D3=3D*3QMYMSV8UYx_ delta 75 zcmV-R0JQ&|L!3hjL{mgmoFM=3DJ0fVs$y%GsY=3D3HM>LSGO;lh6_r0YoIMSqo4A7w4B|QB9bJML oqMO_|KNN~#WHg>^C!)wN$i?T*_=3DEWeGXsaR0E5KlT#;YW09}bx diff --git a/tests/data/acpi/x86/q35/DSDT b/tests/data/acpi/x86/q35/DSDT index 377e880175f6f11101548c0c64da61b5aee00bd9..55b44cfa70f33986aff4eb23322= 48486689e13ec 100644 GIT binary patch delta 65 zcmaFu_{NdTCD^75Q+(lPPDPVoYMla1sZ7`-PK%YR@ro}8kf$S=3Dsn V=3Dg#(2Ot`3Exthmrupxc8j|!)obWD7(Q@nuR(2Ot`3ExthmrupOA{DNG3 V?u#Fm33dr#Qet3WwBE>Nroibc9TOky6ffXA*;B!R(Q9&-!Usm9$<>OAd;(m& U?uYNB{r; diff --git a/tests/data/acpi/x86/q35/DSDT.applesmc b/tests/data/acpi/x86/q3= 5/DSDT.applesmc index 92c8fdb6cbb8ae8bdf5ede9679eea92486eaf372..01834e412bbc52e5a62364df94f= 5e1dbb637ef72 100644 GIT binary patch delta 94 zcmbQ~G|P$0CDeR+jh+2{4LRaH yJY9GkFR(Il#D{viFml8Phd6TabHqCb1q%vt@wqepVE)0(z@aR_ATjx%LIeOoMiy-V delta 74 zcmbQ`G}DR8CDeUpjhy{`4LRaH eJY9GkFR(IB&QXxy{K5Q#nSnz|fMN0>g$Mw{l@kj9 diff --git a/tests/data/acpi/x86/q35/DSDT.bridge b/tests/data/acpi/x86/q35/= DSDT.bridge index 957b3ad90c787616eac212865bce0a19a5ac1e6e..e379a9be89a34551b2a5016ebcc= 24c08a28a3625 100644 GIT binary patch delta 66 zcmeB(>x|=3Da33dtL)MsE|Jg|{VUY^tEYfOBwQ@nu7W+VA$yo}zHC3QbA8c*iZQ{)%q W;&W&G!Tf`nfkRnxkoW33dtL&}U#^e6W#AUY^tYYfOBwQ@nulW+VA$yo_FxC3QbA8cpWXQ{)ri V;&o^I!Tf`nfkR1vVX~Fpc>riC5(EGM diff --git a/tests/data/acpi/x86/q35/DSDT.core-count b/tests/data/acpi/x86/= q35/DSDT.core-count index 50ca91b065d9a2ba95f97d01856865f0e7c615f6..50d6eac8ba070bf381aacd13ced= 47115f0897ebe 100644 GIT binary patch delta 92 zcmdm)x+|5-CDwelRq4_V+d9i1+Yx w;c>jc%E%EP>gmGB5g#1l$i>eQ?;I2?D9FX<&iI4*2QveQvH*j`FF#rGn delta 72 zcmdm$x-*r_CDjc$~c+FNP_bR^ABbQ4kZDG$w@{L03N6mfdBvi diff --git a/tests/data/acpi/x86/q35/DSDT.core-count2 b/tests/data/acpi/x86= /q35/DSDT.core-count2 index f460be2bf74ae512db8f24418b42e8cf2a56202d..69b31da613663a58f9adef8d398= 1d9ed7c824a28 100644 GIT binary patch delta 67 zcmdng!L+%9iOVI}CB(Refq^k^BUf4zr<-(4e6UlzfZycGCI?3E$-A09Fd9!@-K@wj X$i?T*_=3DEWeGXsaR0E5KjTg?#w%efTu delta 66 zcmdno!L+G^iOVI}CB&$Ofq}7aBUf4zr>k^Ke6UlzfbZnWCI?2Z$-A09Fd9u>-K@wb Wz{Ts%_=3DEWeGXsZ`0K??l%@F{-`xNs4 diff --git a/tests/data/acpi/x86/q35/DSDT.cphp b/tests/data/acpi/x86/q35/DS= DT.cphp index 7c87d41d03fcfd2b5b82f2581f16de6bc0bb10bf..d46bac4e257162b5ecc98c7c130= c1654de192192 100644 GIT binary patch delta 65 zcmdn(y2q8vCD(2Ot`3Exthmrup?Y=3D3=3D)&Qj3WTAH4?S} delta 65 zcmZ3Sz9^l`CD-=3DV43oW$BLJcw61D&U diff --git a/tests/data/acpi/x86/q35/DSDT.dimmpxm b/tests/data/acpi/x86/q35= /DSDT.dimmpxm index a2d812e5a23a3ce7739789246b342e703f8c96c0..e817aa6d91c5ee9355787b3d1cc= 7a126a7620b23 100644 GIT binary patch delta 65 zcmV-H0KWg>PU21qL{mgmVkZCq0mZQjl_d#A8(d#gLSGP0lc*&?0ZWtVCGY_=3DliDUB X4-pCuM*;W)_yYh4BM<->lL;qSucs3o delta 64 zcmV-G0Kfm@PT@`pL{mgmVJ83p0p+m@l_d#98(d#gLSGO~lc*&?0ZNnUCGY_@oAyga9`LQH(HQ@nudWFvV8Mz6`m@*fzDCZ{MU@(FP9 Ux-)hUg)*m`OiX;RQ@nuR(2Ot`3ExthmrupB7hn9~|Py#m^D%926`l$i?T*_=3DEWeGXsaR0E5Klg@*P_0A|@4 A-T(jq delta 76 zcmaEu{ve&pCD{%biwy0V0H1mmZ2$lO diff --git a/tests/data/acpi/x86/q35/DSDT.noacpihp b/tests/data/acpi/x86/q3= 5/DSDT.noacpihp index 780616774f97a2d7305faf9e9a9d12afeb0e2fa2..2138ef2cad454ef202bfa2097e1= c24a0603eb240 100644 GIT binary patch delta 66 zcmaFp@W_G7CD<+-{d|p8c%*MugEXR W#pllWgZT$D1BbEzgT!Pp1#bYROcKoi delta 65 zcmaFl@X&$FCDfQ+L^)13>6rLnr+5Ls$xGxM7`-PymHWVGJo%cuBEKLP VpF86Z<{!)q9LfR=3D5|ddKA^?p-5?}xT delta 64 zcmccTaMyv$CDSL^)1Z>6rLnr+5M1$xGxM7`-MxmHWVGH2IpmBA);k UuRG%p<{!)q97+NVli3s^0D#^SU;qFB diff --git a/tests/data/acpi/x86/q35/DSDT.numamem b/tests/data/acpi/x86/q35= /DSDT.numamem index df8edc05b69ecd1331973b16e534b44616b50f58..c24caffd8dae778b3f37381834f= 528737849248d 100644 GIT binary patch delta 65 zcmez9_{ovWCD6rLnr+5Ls$rkbsjNX$g6rLnr+5M1$rkbsj9!x~n$p8QV diff --git a/tests/data/acpi/x86/q35/DSDT.pvpanic-isa b/tests/data/acpi/x86= /q35/DSDT.pvpanic-isa index da3ce12787c28e555b6ba5eacb26275bdd4587f1..9355f161aaf04b2a7af30645028= 68802d313e679 100644 GIT binary patch delta 67 zcmccMbkT{+CDNE4ygaA3VoZFnQ@nulWFvV8CI{)wCGsJRjK-5sDk$;` Xa`Cw{{$T#W%)p^6z#uXChe8AZU5yc8 delta 66 zcmccUbis+sCDwelRq4_V+d9i1+Yx w;c>jc%E%EP>gmGB5g#1l$i>eQ?;I2?D9FX<&iI4*2QveQvH*j`FF#rGn delta 72 zcmdm$x-*r_CDjc$~c+FNP_bR^ABbQ4kZDG$w@{L03N6mfdBvi diff --git a/tests/data/acpi/x86/q35/DSDT.thread-count2 b/tests/data/acpi/x= 86/q35/DSDT.thread-count2 index f460be2bf74ae512db8f24418b42e8cf2a56202d..69b31da613663a58f9adef8d398= 1d9ed7c824a28 100644 GIT binary patch delta 67 zcmdng!L+%9iOVI}CB(Refq^k^BUf4zr<-(4e6UlzfZycGCI?3E$-A09Fd9!@-K@wj X$i?T*_=3DEWeGXsaR0E5KjTg?#w%efTu delta 66 zcmdno!L+G^iOVI}CB&$Ofq}7aBUf4zr>k^Ke6UlzfbZnWCI?2Z$-A09Fd9u>-K@wb Wz{Ts%_=3DEWeGXsZ`0K??l%@F{-`xNs4 diff --git a/tests/data/acpi/x86/q35/DSDT.tis.tpm12 b/tests/data/acpi/x86/q= 35/DSDT.tis.tpm12 index 67ebd7c158759221b801ecb67d8562d92fa219d5..a16d232e61f64876cf0eddd9cf6= c1d3a5141ce73 100644 GIT binary patch delta 78 zcmX@*bx8`Hh|ZeGNI{ iJv?1_951jkPJS;h#^cWTgZT$D1BbEzgT&;IN)Z5K*cF%n delta 75 zcmX@*cG8W@CD`^on5_KZH8>*bx8`Hh_YeGNI{ fJv?1_951jkPM)JA!TE#v2QveQk^sZxPf8I0DiRd} diff --git a/tests/data/acpi/x86/q35/DSDT.tis.tpm2 b/tests/data/acpi/x86/q3= 5/DSDT.tis.tpm2 index c6b58472157d575e2625557d1346586be06b927c..96e4b7b731c5d3142765979166a= 4ee8148e98490 100644 GIT binary patch delta 66 zcmaFt_QZ|LCDas5UvZFx>dr8@VLiIbEe=3D;)9*y1$-y#xH~XQ@nuF%o$35^CN7s?myq+_3=3DE7}8@ZUeINhXU;)9*y1^gz9b~!M5PY&z)z-T<#y<3rA Xkc-cq@dxt{W(E#r0S1Z5W!(_~(y (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464270975682.0310942746933; Sun, 14 Jun 2026 12:11:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAh-0000Al-AO; Sun, 14 Jun 2026 15:07:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAd-0008Na-W3 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:00 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAc-0001po-6o for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:06:59 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-459-uPASGT2TNnSF1aoEiW0dKg-1; Sun, 14 Jun 2026 15:06:55 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490cc1ae292so15155575e9.1 for ; Sun, 14 Jun 2026 12:06:55 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922035b4absm184569895e9.11.2026.06.14.12.06.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464017; 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: in-reply-to:in-reply-to:references:references; bh=UIGef6JbwrI6g4S4pS+Dx1r4bKu5n50rC/TnxegWTg8=; b=S/NqiQiyDcQWr7kDX+fnespjqWAEDqf4fo+KahSVYm3nVdxG2IDcIWFg0ukkF+Gvm2FTmH BpuEJFbrePV4o8iZsYaD4jCQbiWQhNCqPRMN71+rR9B5Wc/SwRJ2ZKt06V4A/v3bt6SRvF 9zpuROjz0qE2j5nSYI87sGmlsWxbJLQ= X-MC-Unique: uPASGT2TNnSF1aoEiW0dKg-1 X-Mimecast-MFC-AGG-ID: uPASGT2TNnSF1aoEiW0dKg_1781464014 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464014; x=1782068814; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=UIGef6JbwrI6g4S4pS+Dx1r4bKu5n50rC/TnxegWTg8=; b=cotPMi3JQoAyDIKTrHPszPAD8VnNs3fYAcis1lApbpll+qjby2P0JCvvoL6aWJ3Fq8 jBCqfW9BcR/H2Ydkc1o2HZ8nrPD7f7QlBfo6jmCfDSy2ScpRqRUsYALtriWxGzNUEk+P M4/SBY+9Ug0KJVgzomeRaLLsOD1d1DgSZPsOYp6KR3ccpJU9BEhpIlZDd8eNs/qDflRD hZRK7ko4dt4SCnUpa3nMwc9naQLVDwTHzMtQJ2qnpBKTGcviQ4dY+6XsWzroV8utRRdz 1lyzDxI1lg/O0djM824kAkIq80OOnRS/xnHxgNNxk1asWmv9aV2tXYB+2ZyQd3TJlV7s n5Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464014; x=1782068814; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UIGef6JbwrI6g4S4pS+Dx1r4bKu5n50rC/TnxegWTg8=; b=P6gOGk2iu+ua21GCG9Fx+FvXwp3ZAAx+SWh5vONTlwHQMb5QfK5OVoaIVkVX8G5YeQ +ZW5VCXSr0TRSMt67ViVBTrudAj8jpWK2H36cAbuZeg0iR1/hahqB4rjqAqaUCpUt8m8 E20YmV+E+3DWAmszO9sNdGRaVl3GNdZKYOvjQ7wPdN4qOoTftaU3H3buDdcbndXUL9qU d+jyoa/7B/6HN0niqLyxjclPnTESTLtat2DIwiJSxpH4RcE1wWzPd6qyMv2+0wYH2rGa QGCv9nI8zcvBfUocXNfp6UTs7UdPqPRhcYFiPHAsvtE7HthdNWkf/rTkecYMN+TsZ/ZE yVlA== X-Gm-Message-State: AOJu0Yydtg5/KUYwYc7mNY1eD6wibjg+spNGpXHPAgU118THRg5Euryl l4j1eVWpt0EStE/SitWKmCOIBPYmLU7ebc+Gl2Bw/o/lZGxdFr29pYWQgQ4j6aozmgQluUOhPbH GdpJB/Aapk2FGLiMBn8dDjCTruXU17V8cZkbcAfH1nzFHVOUMMuvCq0XbTYgIlhDxdnek6xnqNk fkqIH8bhIhXBI2lCkO192J5rJKmElTLVyY+A== X-Gm-Gg: Acq92OHynpMXm7CRnbGy6bDz8UOxpNuy6NIOKFK0olnpJYeEY1yY/9WrUJftrfvvFCv 2G8Dg3U9xgn9djEff/F6sSB21oNgY6ZvKJIKasoQSS4HyRChEtV2MDtpQhQWvOuO9/6rQSi8WnJ cRtzwJskR7RCifjIq+oWAaMiho/HgFYvujA+Dvst5OLy5dVCoVHM2Rf3G6eqnlgqdSAXACzIOWE rF/APFFZxxhY8pcXfG/859CYA6ywzsaes/7MuiEojPoj4ZD2abXx5ijUlA5dzaSnnsCbkbydYxR j4z99dxOw9LMgTAvAAB1QzIQUpiV2Q+euWqrAU5VMf2v6OMsvccOyb8ipRwrVc1aawFSeHqdDD/ Fo4s9vyatLRrATm4BZpQROGUHz5ST4u7EyrMKc3fJrqw= X-Received: by 2002:a05:600c:3542:b0:490:b4a8:e031 with SMTP id 5b1f17b1804b1-490ec480e65mr121591635e9.4.1781464013911; Sun, 14 Jun 2026 12:06:53 -0700 (PDT) X-Received: by 2002:a05:600c:3542:b0:490:b4a8:e031 with SMTP id 5b1f17b1804b1-490ec480e65mr121591275e9.4.1781464013340; Sun, 14 Jun 2026 12:06:53 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:51 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Daniil Tatianin , Raphael Norwitz , Lei Yang , Stefano Garzarella , "Gonglei (Arei)" , zhenwei pi , Jason Wang Subject: [PULL 027/106] vhost-user: rework enabling vrings Message-ID: <44c8f42d5824ab652ddeedb79851fa72d2af7be1.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464271329158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy We call the handler almost the same way in three places: - cryptodev-vhost.c - vhost_net.c - vhost.c The only difference, is that in vhost.c we don't try to call the handler for old vhost-user (when VHOST_USER_F_PROTOCOL_FEATURES is not supported). cryptodev-vhost and vhost_net code will just fail in this case. Probably they were developed only for newer vhost-user. Anyway, it doesn't seem correct to rely on this error path, if these devices want to check, that they don't communicate to old vhost-user protocol, they should do that earlier. Let's create the common helper, to call .vhost_set_vring_enable and use in all three places. For vhost-user let's just always skip enable/disable if it's unsupported. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Daniil Tatianin Reviewed-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Tested-by: Lei Yang Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-2-vsementsov@yandex-team.ru> --- backends/cryptodev-vhost.c | 8 +------- hw/net/vhost_net.c | 7 +------ hw/virtio/vhost-user.c | 7 ++++++- hw/virtio/vhost.c | 21 --------------------- include/hw/virtio/vhost.h | 9 +++++++++ 5 files changed, 17 insertions(+), 35 deletions(-) diff --git a/backends/cryptodev-vhost.c b/backends/cryptodev-vhost.c index 943680a23a..abdfce33af 100644 --- a/backends/cryptodev-vhost.c +++ b/backends/cryptodev-vhost.c @@ -152,7 +152,6 @@ vhost_set_vring_enable(CryptoDevBackendClient *cc, { CryptoDevBackendVhost *crypto =3D cryptodev_get_vhost(cc, b, queue); - const VhostOps *vhost_ops; =20 cc->vring_enable =3D enable; =20 @@ -160,12 +159,7 @@ vhost_set_vring_enable(CryptoDevBackendClient *cc, return 0; } =20 - vhost_ops =3D crypto->dev.vhost_ops; - if (vhost_ops->vhost_set_vring_enable) { - return vhost_ops->vhost_set_vring_enable(&crypto->dev, enable); - } - - return 0; + return vhost_dev_set_vring_enable(&crypto->dev, enable); } =20 int cryptodev_vhost_start(VirtIODevice *dev, int total_queues) diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index a8ee18a912..25e9f1fd24 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -587,7 +587,6 @@ VHostNetState *get_vhost_net(NetClientState *nc) int vhost_net_set_vring_enable(NetClientState *nc, int enable) { VHostNetState *net =3D get_vhost_net(nc); - const VhostOps *vhost_ops =3D net->dev.vhost_ops; =20 /* * vhost-vdpa network devices need to enable dataplane virtqueues after @@ -601,11 +600,7 @@ int vhost_net_set_vring_enable(NetClientState *nc, int= enable) =20 nc->vring_enable =3D enable; =20 - if (vhost_ops && vhost_ops->vhost_set_vring_enable) { - return vhost_ops->vhost_set_vring_enable(&net->dev, enable); - } - - return 0; + return vhost_dev_set_vring_enable(&net->dev, enable); } =20 int vhost_net_set_mtu(struct vhost_net *net, uint16_t mtu) diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index a8907cca74..13c73e7b17 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -1230,7 +1230,12 @@ static int vhost_user_set_vring_enable(struct vhost_= dev *dev, int enable) int i; =20 if (!virtio_has_feature(dev->features, VHOST_USER_F_PROTOCOL_FEATURES)= ) { - return -EINVAL; + /* + * For vhost-user devices, if VHOST_USER_F_PROTOCOL_FEATURES has n= ot + * been negotiated, the rings start directly in the enabled state, + * and can't be disabled. + */ + return 0; } =20 for (i =3D 0; i < dev->nvqs; ++i) { diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index b9dc4ed13b..b89797df95 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -2078,27 +2078,6 @@ int vhost_dev_get_inflight(struct vhost_dev *dev, ui= nt16_t queue_size, return 0; } =20 -static int vhost_dev_set_vring_enable(struct vhost_dev *hdev, int enable) -{ - if (!hdev->vhost_ops->vhost_set_vring_enable) { - return 0; - } - - /* - * For vhost-user devices, if VHOST_USER_F_PROTOCOL_FEATURES has not - * been negotiated, the rings start directly in the enabled state, and - * .vhost_set_vring_enable callback will fail since - * VHOST_USER_SET_VRING_ENABLE is not supported. - */ - if (hdev->vhost_ops->backend_type =3D=3D VHOST_BACKEND_TYPE_USER && - !virtio_has_feature(hdev->backend_features, - VHOST_USER_F_PROTOCOL_FEATURES)) { - return 0; - } - - return hdev->vhost_ops->vhost_set_vring_enable(hdev, enable); -} - /* * Host notifiers must be enabled at this point. * diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h index 89817bd848..3dfec5e15c 100644 --- a/include/hw/virtio/vhost.h +++ b/include/hw/virtio/vhost.h @@ -215,6 +215,15 @@ static inline bool vhost_dev_is_started(struct vhost_d= ev *hdev) return hdev->started; } =20 +static inline int vhost_dev_set_vring_enable(struct vhost_dev *hdev, int e= nable) +{ + if (!hdev->vhost_ops->vhost_set_vring_enable) { + return 0; + } + + return hdev->vhost_ops->vhost_set_vring_enable(hdev, enable); +} + /** * vhost_dev_start() - start the vhost device * @hdev: common vhost_dev structure --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464094; cv=none; d=zohomail.com; s=zohoarc; b=S9yoD0VZ/kauHrVAtRR8Kg2hYUB3Fkir5OAougoZ4JIkGU1/FvVh704ZA/v82pG0mSVp52BW2fZTyjKwrRIW9KVmRMZO60LTjR8/Y9mH8UbJtuZNPHKLi5yA2iCnCfkwU2/6uY7aYruHQCC+FywUrb54MHUhS4PzpVp2gPYmsW8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464094; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oN7X2D8NM/XDxALEaF70VOsTMgEaeaWJ0gRnytmbEO4=; b=K2rVqJZIQu+FT5bYPbvD+x9clfsWmGvWENH79Q+5aDtgjyNRiEmet0wErYxuFJpCdMRTj3CR3oDlvUCdOunUO3T6Brauit+zsFhO45MBI8ZSA7xKc9uWlbPpcGIb9gxRthrJsGXmZoTDAhMhkNez6vwULQ9rSoJFuivZz4+q3aQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464094230604.2608476789931; Sun, 14 Jun 2026 12:08:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAj-0000Ws-OQ; Sun, 14 Jun 2026 15:07:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAh-0000GD-Jl for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:03 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAf-0001rQ-Dg for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:03 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-630-tdFi0nIVPGailSct3_ttzg-1; Sun, 14 Jun 2026 15:06:59 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490b93debc8so25298815e9.1 for ; Sun, 14 Jun 2026 12:06:58 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492203dd0b9sm181808925e9.15.2026.06.14.12.06.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464020; 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: in-reply-to:in-reply-to:references:references; bh=oN7X2D8NM/XDxALEaF70VOsTMgEaeaWJ0gRnytmbEO4=; b=aIJeXdY2N0PzxEpudnCA5k2Abfu2lf+CAIDgLZqbzory3GHBGkcJ9S1iKwv3HDxG1PmFnn QkrXt+TPNXQ702GuZbyolTm1MsbUzws3ghVcDDytQcm7X6pLmf2oc4lIb4lbtwugxGaOJU 1Y7rL+QpbRHyt9NXPTfDkzkZUuiJbiw= X-MC-Unique: tdFi0nIVPGailSct3_ttzg-1 X-Mimecast-MFC-AGG-ID: tdFi0nIVPGailSct3_ttzg_1781464018 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464018; x=1782068818; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=oN7X2D8NM/XDxALEaF70VOsTMgEaeaWJ0gRnytmbEO4=; b=Ae9z2dwi3LLxIdXla8UVGvOtTgX0AfiK7PaQXld4Vo/CfCQxvuqZEgOJQ580yBy7lU 7ip/Db73FPCJiTCq/PtF+rOizWS5qHdDR/SNyBUKOlv7fzXbwm6tHSZRAy+eXYTGqK91 MfkDQrkIH1HKl4L8Li9ctlKPqPrG7vQNbSL9xaV54A/b5CpRBFkLv9Iqxp4JTWQ4ewnI OpJJLQdrT4oBuvECjO43zbbpKBUloXHv6Ybu2lXDYcS0s22HdxpKAJV/K+vjAqxxmGci /DX3iNJ5uiRp5rslNGyfA0TJsz3J8QpfIb8JJU5D5J53kjGyf75I/MC/EoOx4XisYA1C 1KCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464018; x=1782068818; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oN7X2D8NM/XDxALEaF70VOsTMgEaeaWJ0gRnytmbEO4=; b=VF4VPGNh8FllKg/U7c2yHEM2ekKrHtLVSMzXZo5805DO/lZimgWKxkfeUQ2zOETc0m ZGUgQCG7ZVEqZxldMIDnSssepQKpAYqLk+flEjwu/o9btVz+z9YbDNWrTJWDR0Z3wLSO WG4jHe6s0MWNBSUbkZ5XH6QHm3SRbRmy3/xOQo4kXwgIc093gWpQFx/q3yloIdxV7w0U 4+DHK8r0JwB3lTvKm7OHX0TMXu8x1V0LDNwg+4F3Q5TGFD4gaJpScWBrMf2PC0cNBwF9 gCbvyz/1I4y2kr1oxKEMhYCSPZz361o7gUIuSpX+hwgPxA3ygg0yMFFInclMcA+EzF/V WFfw== X-Gm-Message-State: AOJu0YzpTTrxylGExmg+xIe1rJ9PNG3dVJHXkTFebU+XQYgA4f6A2jtu g0kzB2MPcNQk2MRkYSqBeijt/x5XsWQAeH0XL83G0n55zKy3YuHeSZLGkHeES5gJI41A/EaKEEM 20e/YcMpBkHCWu45MwO0DPaw5UIcZp6eAA357u1sMEYchCDyLyKpVTZUG5hE8q4mzV5IQTvmqD7 Rmp/tnfWzJIeo2XHumhTkQirdcJFC8c+txDw== X-Gm-Gg: Acq92OFYC81WN4tRdYDrLb/U8F/4VPJ0FzjOK4X4N9ALNEtrsJiNiOheJ7xo8emkTGE ie4yvuoKKZLR0j8dE4RdBAh7jsrCj85YGYGdXCnYPJ//oXInhGLRBNycg9IHBbT1hXnaABrdaKh 0MiU54sWafkjM8cDquQJ5qC/tg88vQiO3K5XunWR2LlP9kGufhV+5+IkY+PsLYluuDC7YYg0ESE UeRwjtdku+YrPE5/dYe0GJ7fMDJDtGHHIymyjEuxcPywJUQaPQjkt3SmJoV//grA0DD63n1QNmu eLD3sVJLNgFUBQGIgvroxD9RDN1KkGCVNx2p/D4w1SbpnQVIcQVPRMnECmXRg5ZB2yd+SNfOLSt MTK2lCPH/9R76ZZAeRkYX0//us446ggXRgyzvZ6MyYjg= X-Received: by 2002:a05:600c:2d47:b0:490:c2a2:b1d4 with SMTP id 5b1f17b1804b1-4922011d635mr57204205e9.35.1781464017768; Sun, 14 Jun 2026 12:06:57 -0700 (PDT) X-Received: by 2002:a05:600c:2d47:b0:490:c2a2:b1d4 with SMTP id 5b1f17b1804b1-4922011d635mr57203885e9.35.1781464017213; Sun, 14 Jun 2026 12:06:57 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:53 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , devel@lists.libvirt.org, Markus Armbruster , Daniil Tatianin , Raphael Norwitz , Lei Yang , Raphael Norwitz , Stefano Garzarella , Kevin Wolf , Hanna Reitz , Jason Wang , Paolo Bonzini , Fam Zheng , Eric Blake , qemu-block@nongnu.org Subject: [PULL 028/106] vhost: drop backend_features field Message-ID: <1ee0bc0c9bf006a1ea9afeae67b6b7a0b57a4783.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464094952158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy This field is mostly unused and sometimes confusing. We even have a TODO-like comment to drop it, the comment is removed in this commit. The field is used to held VHOST_USER_F_PROTOCOL_FEATURES for vhost-user and/or VHOST_NET_F_VIRTIO_NET_HDR for vhost-net (which may be vhost-user-net). But we can simply recalculate these two flags in place from hdev->features, and from net-client for VHOST_NET_F_VIRTIO_NET_HDR. Note: removing field from x-query-virtio-status result is incompatible change. We can do it because the command is unstable. Cc: devel@lists.libvirt.org Signed-off-by: Vladimir Sementsov-Ogievskiy Acked-by: Markus Armbruster Reviewed-by: Daniil Tatianin Acked-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Tested-by: Lei Yang Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-3-vsementsov@yandex-team.ru> --- hw/block/vhost-user-blk.c | 1 - hw/net/vhost_net.c | 26 ++++++++++++++------------ hw/scsi/vhost-scsi.c | 1 - hw/scsi/vhost-user-scsi.c | 1 - hw/virtio/vdpa-dev.c | 1 - hw/virtio/vhost-user.c | 17 ++++++++--------- hw/virtio/virtio-hmp-cmds.c | 2 -- hw/virtio/virtio-qmp.c | 4 ---- include/hw/virtio/vhost.h | 7 ------- qapi/virtio.json | 3 --- 10 files changed, 22 insertions(+), 41 deletions(-) diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index c151e83677..dc99de0263 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -348,7 +348,6 @@ static int vhost_user_blk_connect(DeviceState *dev, Err= or **errp) s->dev.nvqs =3D s->num_queues; s->dev.vqs =3D s->vhost_vqs; s->dev.vq_index =3D 0; - s->dev.backend_features =3D 0; =20 vhost_dev_set_config_notifier(&s->dev, &blk_ops); =20 diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index 25e9f1fd24..fda90e231e 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -52,8 +52,14 @@ int vhost_net_set_config(struct vhost_net *net, const ui= nt8_t *data, =20 void vhost_net_ack_features_ex(struct vhost_net *net, const uint64_t *feat= ures) { - virtio_features_copy(net->dev.acked_features_ex, - net->dev.backend_features_ex); + virtio_features_clear(net->dev.acked_features_ex); + if (net->backend =3D=3D -1) { + net->dev.acked_features =3D + net->dev.features & (1ULL << VHOST_USER_F_PROTOCOL_FEATURES); + } else if (!qemu_has_vnet_hdr(net->nc)) { + net->dev.acked_features =3D 1ULL << VHOST_NET_F_VIRTIO_NET_HDR; + } + vhost_ack_features_ex(&net->dev, net->feature_bits, features); } =20 @@ -258,12 +264,9 @@ struct vhost_net *vhost_net_init(VhostNetOptions *opti= ons) if (r < 0) { goto fail; } - net->dev.backend_features =3D qemu_has_vnet_hdr(options->net_backe= nd) - ? 0 : (1ULL << VHOST_NET_F_VIRTIO_NET_HDR); net->backend =3D r; net->dev.protocol_features =3D 0; } else { - virtio_features_clear(net->dev.backend_features_ex); net->dev.protocol_features =3D 0; net->backend =3D -1; =20 @@ -284,13 +287,12 @@ struct vhost_net *vhost_net_init(VhostNetOptions *opt= ions) net->dev.features &=3D ~(1ULL << VIRTIO_NET_F_MRG_RXBUF); } =20 - if (virtio_features_andnot(missing_features, - net->dev.backend_features_ex, - net->dev.features_ex)) { - fprintf(stderr, "vhost lacks feature mask 0x" VIRTIO_FEATURES_= FMT - " for backend\n", VIRTIO_FEATURES_PR(missing_features)); - goto fail; - } + if (!qemu_has_vnet_hdr(options->net_backend) && + (~net->dev.features & (1ULL << VHOST_NET_F_VIRTIO_NET_HDR))) { + fprintf(stderr, "vhost lacks feature mask 0x%llx for backend\n= ", + ~net->dev.features & (1ULL << VHOST_NET_F_VIRTIO_NET_H= DR)); + goto fail; + } } =20 /* Set sane init value. Override when guest acks. */ diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c index 699863cc10..859888fdba 100644 --- a/hw/scsi/vhost-scsi.c +++ b/hw/scsi/vhost-scsi.c @@ -275,7 +275,6 @@ static void vhost_scsi_realize(DeviceState *dev, Error = **errp) vqs =3D g_new0(struct vhost_virtqueue, vsc->dev.nvqs); vsc->dev.vqs =3D vqs; vsc->dev.vq_index =3D 0; - vsc->dev.backend_features =3D 0; =20 ret =3D vhost_dev_init(&vsc->dev, (void *)(uintptr_t)vhostfd, VHOST_BACKEND_TYPE_KERNEL, 0, errp); diff --git a/hw/scsi/vhost-user-scsi.c b/hw/scsi/vhost-user-scsi.c index 3612897d4b..5070178dc2 100644 --- a/hw/scsi/vhost-user-scsi.c +++ b/hw/scsi/vhost-user-scsi.c @@ -159,7 +159,6 @@ static int vhost_user_scsi_connect(DeviceState *dev, Er= ror **errp) vsc->dev.nvqs =3D VIRTIO_SCSI_VQ_NUM_FIXED + vs->conf.num_queues; vsc->dev.vqs =3D s->vhost_vqs; vsc->dev.vq_index =3D 0; - vsc->dev.backend_features =3D 0; =20 ret =3D vhost_dev_init(&vsc->dev, &s->vhost_user, VHOST_BACKEND_TYPE_U= SER, 0, errp); diff --git a/hw/virtio/vdpa-dev.c b/hw/virtio/vdpa-dev.c index 4532d63653..06179e402e 100644 --- a/hw/virtio/vdpa-dev.c +++ b/hw/virtio/vdpa-dev.c @@ -104,7 +104,6 @@ static void vhost_vdpa_device_realize(DeviceState *dev,= Error **errp) v->dev.vqs =3D vqs; v->dev.vq_index =3D 0; v->dev.vq_index_end =3D v->dev.nvqs; - v->dev.backend_features =3D 0; v->started =3D false; =20 ret =3D vhost_vdpa_get_iova_range(v->vhostfd, &iova_range); diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 13c73e7b17..7ce17c5b2d 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -1465,14 +1465,15 @@ static int vhost_user_set_features(struct vhost_dev= *dev, int ret; =20 /* - * We need to include any extra backend only feature bits that - * might be needed by our device. Currently this includes the - * VHOST_USER_F_PROTOCOL_FEATURES bit for enabling protocol - * features. + * Don't lose VHOST_USER_F_PROTOCOL_FEATURES, which is vhost-user + * specific. */ - ret =3D vhost_user_set_u64(dev, VHOST_USER_SET_FEATURES, - features | dev->backend_features, - log_enabled); + if (virtio_has_feature(dev->features, VHOST_USER_F_PROTOCOL_FEATURES))= { + features |=3D 1ULL << VHOST_USER_F_PROTOCOL_FEATURES; + } + + ret =3D vhost_user_set_u64(dev, VHOST_USER_SET_FEATURES, features, + log_enabled); =20 if (virtio_has_feature(dev->protocol_features, VHOST_USER_PROTOCOL_F_STATUS)) { @@ -2192,8 +2193,6 @@ static int vhost_user_backend_init(struct vhost_dev *= dev, void *opaque, (dev->config_ops && dev->config_ops->vhost_dev_config_notifier= ); uint64_t protocol_features; =20 - dev->backend_features |=3D 1ULL << VHOST_USER_F_PROTOCOL_FEATURES; - err =3D vhost_user_get_u64(dev, VHOST_USER_GET_PROTOCOL_FEATURES, &protocol_features); if (err < 0) { diff --git a/hw/virtio/virtio-hmp-cmds.c b/hw/virtio/virtio-hmp-cmds.c index 1daae482d3..4bf9a3109d 100644 --- a/hw/virtio/virtio-hmp-cmds.c +++ b/hw/virtio/virtio-hmp-cmds.c @@ -176,8 +176,6 @@ void hmp_virtio_status(Monitor *mon, const QDict *qdict) hmp_virtio_dump_features(mon, s->vhost_dev->features); monitor_printf(mon, " Acked features:\n"); hmp_virtio_dump_features(mon, s->vhost_dev->acked_features); - monitor_printf(mon, " Backend features:\n"); - hmp_virtio_dump_features(mon, s->vhost_dev->backend_features); monitor_printf(mon, " Protocol features:\n"); hmp_virtio_dump_protocols(mon, s->vhost_dev->protocol_features); } diff --git a/hw/virtio/virtio-qmp.c b/hw/virtio/virtio-qmp.c index f9cdca50d9..71717c56a4 100644 --- a/hw/virtio/virtio-qmp.c +++ b/hw/virtio/virtio-qmp.c @@ -710,8 +710,6 @@ VirtioStatus *qmp_x_query_virtio_status(const char *pat= h, Error **errp) vdev->guest_features_ex); status->host_features =3D qmp_decode_features(vdev->device_id, vdev->host_features_ex); - status->backend_features =3D qmp_decode_features(vdev->device_id, - vdev->backend_features_ex= ); =20 switch (vdev->device_endian) { case VIRTIO_DEVICE_ENDIAN_LITTLE: @@ -752,8 +750,6 @@ VirtioStatus *qmp_x_query_virtio_status(const char *pat= h, Error **errp) qmp_decode_features(vdev->device_id, hdev->features_ex); status->vhost_dev->acked_features =3D qmp_decode_features(vdev->device_id, hdev->acked_features_ex); - status->vhost_dev->backend_features =3D - qmp_decode_features(vdev->device_id, hdev->backend_features_ex= ); =20 status->vhost_dev->protocol_features =3D qmp_decode_protocols(hdev->protocol_features); diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h index 3dfec5e15c..e139e05985 100644 --- a/include/hw/virtio/vhost.h +++ b/include/hw/virtio/vhost.h @@ -100,16 +100,9 @@ struct vhost_dev { * * @features: available features provided by the backend * @acked_features: final negotiated features with front-end driver - * - * @backend_features: this is used in a couple of places to either - * store VHOST_USER_F_PROTOCOL_FEATURES to apply to - * VHOST_USER_SET_FEATURES or VHOST_NET_F_VIRTIO_NET_HDR. Its - * future use should be discouraged and the variable retired as - * its easy to confuse with the VirtIO backend_features. */ VIRTIO_DECLARE_FEATURES(features); VIRTIO_DECLARE_FEATURES(acked_features); - VIRTIO_DECLARE_FEATURES(backend_features); =20 /** * @protocol_features: is the vhost-user only feature set by diff --git a/qapi/virtio.json b/qapi/virtio.json index 09dd0e6d05..671f1ad793 100644 --- a/qapi/virtio.json +++ b/qapi/virtio.json @@ -85,8 +85,6 @@ # # @acked-features: vhost_dev acked_features # -# @backend-features: vhost_dev backend_features -# # @protocol-features: vhost_dev protocol_features # # @max-queues: vhost_dev max_queues @@ -106,7 +104,6 @@ 'vq-index': 'int', 'features': 'VirtioDeviceFeatures', 'acked-features': 'VirtioDeviceFeatures', - 'backend-features': 'VirtioDeviceFeatures', 'protocol-features': 'VhostDeviceProtocols', 'max-queues': 'uint64', 'backend-cap': 'uint64', --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464120; cv=none; d=zohomail.com; s=zohoarc; b=ViE80DZyiH9+hIY80jkphhp69cpiZDT54Jgy36fAg14svWBNfgFmWSWrqVGFdhSYl43vTZ45+ZIdFqWB5Rfjtalz4GKGKSmUw8LaP6Ei0miOFkSk+LI30DL2w1S/nosrLSfOp+MVeyxVhP9sfY6elacAKdFN0HWOVyyqgFDnQzo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464120; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sAlejr7MstV5eT+ruLrczEJBZFqQUgP8BOOtIwWsurw=; b=hL+bvPquUOVeUXYYN2/JSOQxPrzGW6Ja8+xG8OZpv3WC58sSrWQkUH+gEYyLJWy6EVEPdGdqMStg/onIqT9k8PWc38GK+5MdV/KIQ+h2gbQXIxhjqG902ozNFbhxQQEIQItMlqK2GtZ6Ax3eDwjK8WsQUX7KYAjhvaB03E8bGrc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464120489285.47261419442316; Sun, 14 Jun 2026 12:08:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAm-0000oE-JC; Sun, 14 Jun 2026 15:07:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAl-0000e1-4H for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:07 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAi-0001tC-Qh for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:06 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-690-XpelZ23GPkKH3yCc-A2Yyg-1; Sun, 14 Jun 2026 15:07:02 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490b2f22ea2so22519385e9.1 for ; Sun, 14 Jun 2026 12:07:02 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220345528sm209727415e9.8.2026.06.14.12.06.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:06:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464024; 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: in-reply-to:in-reply-to:references:references; bh=sAlejr7MstV5eT+ruLrczEJBZFqQUgP8BOOtIwWsurw=; b=dzfhCtySGytN1B2t4CT4lPv3mvJoXERm+tt/I/MrHOeaciVnJNucpAXhRNm2zotj+oS6Vv 8xjNXhlLmAzLjWAx0WRxKCj5cck+IvPNSbc/DSelZu/c0ybZVkh5VsmYad2OJTZUyg1oMl NaXxlckd40RNhsNE4VwmIbO9ppKXhI4= X-MC-Unique: XpelZ23GPkKH3yCc-A2Yyg-1 X-Mimecast-MFC-AGG-ID: XpelZ23GPkKH3yCc-A2Yyg_1781464021 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464021; x=1782068821; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=sAlejr7MstV5eT+ruLrczEJBZFqQUgP8BOOtIwWsurw=; b=hTmCIp0KfqZuRNiCP2EOlsiR/6Ozn/cyagxUS5go0ONIyYyCIcX4oAYH8l2hi5m+q0 5jwBAw04Q9X+nEJTGCbzEF6q3HvuVwuk1RAXFcLYJc3254IpgzygKPNFoq+13aCnimAX YdD0T2kZ635vRc2LAXY1nPbsD1fZJ0mr+SSrq06M56JSsIBVqU4qjgeAndLxDJwFwcL+ EO0//837SGwjERyZPIaGVs9dNQgFgSUQJMitjMUhQXZqzMWHvYw2bOnvNM6ZOci9L3Td hAMFsiebayr1uQNeSdK3Fo5FvKZdgWxpNN0yhNHdqYY8LeGIwDxdb/RZE36pF7JK3HV0 33Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464021; x=1782068821; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sAlejr7MstV5eT+ruLrczEJBZFqQUgP8BOOtIwWsurw=; b=h3eH3oRkvwvE2kKCKchPfS4td3pG9V6c5AfGcY3wLgaUAcduxSfrSuWQgUCM3LR5XN CmeFmko1Jrr7RPI7t9/i6UJmihHwdU2dzXFg4IeUjYnvEjcs4w9XM7tIkMmSQIZEyBDA VBxj0OyBxIso90vKNoU1cIHSqoDNfFSqRl8JelHn57AetU1H/T80lNFRXZVoFjLACxfB EZ2egEhtKYRDjin80nlw5Xalv3q9JfAaVGl8fFqDqHz9Etpsd0qW0x6/4AntThbXCoqY E0Qk2QoN2mz0/FzflAH5BOtFii3W82vRV82yCoJvXKHsZjZlr5nvVUHToAjAx5uC8Xja Ljag== X-Gm-Message-State: AOJu0YxItI20gD0mFY5KkQmIkU5d+crm1fXcYhMmp8nwReAKEUatsRst HIUI7EINub9qrrMHdI9QYQH0Ke9FNjD9HK15uRG2ra8/DVrY4Na/FnHazXbpmfQNXyNvkB0OT4D sT7Fl5nx2LPvJz+fcNrFgydShhfMKqTqBeEOyuEJ7hU+ysQdJjz4yhM7pZ+jo3E/bCUpXS9y0w0 WXL/EIiaRyHO5TJy4eSO6DBBJxn1rh65tqUQ== X-Gm-Gg: Acq92OGHMrkIu8YPkYpJbEB1/8fLJeCq+adIw/ZMSJTGBxIeWKJ4DJo1l6xhSWU+Jna v2DPFEiJLeeWsxQv9zjfhR0eT5Bi4BrMw/75fdUMoc8FKX374BtvlCn50GqP7uczoFLwOmrc61h ZfPAJuTge9MPacCHnxak5SWMl30pKtEWVIVDuOq0UOsREPOwdjpVe0N1OpT2IhZB3goiJ5kyoz6 t35ggpQm3VrfylCC8wn94SLaKkfmpsQT4hugiVpvwZCaxrZQp+RksozUavKkN/tr3VUN6hsVBgG D2Xh7/LWDuac+eiMv7svn5zOuLbv0/rQZ6jzaP12AXMkM8k1CxwRWAhqzflCYnzvRU6PIw5fekw R64o5IhtB2PJAW3KseRlv949HAWls1AHoWaLcIugC3Rs= X-Received: by 2002:a05:600c:528c:b0:490:bbc1:d508 with SMTP id 5b1f17b1804b1-4922005e290mr95373995e9.1.1781464021174; Sun, 14 Jun 2026 12:07:01 -0700 (PDT) X-Received: by 2002:a05:600c:528c:b0:490:bbc1:d508 with SMTP id 5b1f17b1804b1-4922005e290mr95373695e9.1.1781464020632; Sun, 14 Jun 2026 12:07:00 -0700 (PDT) Date: Sun, 14 Jun 2026 15:06:57 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Daniil Tatianin , Raphael Norwitz , Lei Yang , Stefano Garzarella Subject: [PULL 029/106] vhost-user: introduce vhost_user_has_protocol_feature() helper Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464121064158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Make all protocol feature checks in the same way. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Daniil Tatianin Reviewed-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Tested-by: Lei Yang Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-4-vsementsov@yandex-team.ru> --- hw/virtio/vhost-user.c | 120 +++++++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 58 deletions(-) diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 7ce17c5b2d..72aeed26ca 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -267,6 +267,12 @@ struct scrub_regions { int fd_idx; }; =20 +static bool vhost_user_has_protocol_feature(struct vhost_dev *dev, + uint64_t feature) +{ + return virtio_has_feature(dev->protocol_features, feature); +} + static int vhost_user_read_header(struct vhost_dev *dev, VhostUserMsg *msg) { struct vhost_user *u =3D dev->opaque; @@ -430,8 +436,8 @@ static int vhost_user_set_log_base(struct vhost_dev *de= v, uint64_t base, { int fds[VHOST_USER_MAX_RAM_SLOTS]; size_t fd_num =3D 0; - bool shmfd =3D virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_LOG_SHMFD); + bool shmfd =3D + vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_LOG_SHM= FD); int ret; VhostUserMsg msg =3D { .hdr.request =3D VHOST_USER_SET_LOG_BASE, @@ -1001,11 +1007,11 @@ static int vhost_user_set_mem_table(struct vhost_de= v *dev, int fds[VHOST_MEMORY_BASELINE_NREGIONS]; size_t fd_num =3D 0; bool do_postcopy =3D u->postcopy_listen && u->postcopy_fd.handler; - bool reply_supported =3D virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_REPLY_= ACK); + bool reply_supported =3D + vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_REPLY_A= CK); bool config_mem_slots =3D - virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS); + vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS); int ret; =20 if (do_postcopy) { @@ -1053,8 +1059,9 @@ static int vhost_user_set_mem_table(struct vhost_dev = *dev, static int vhost_user_set_vring_endian(struct vhost_dev *dev, struct vhost_vring_state *ring) { - bool cross_endian =3D virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_CROSS_END= IAN); + bool cross_endian =3D + vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_CROSS_ENDIAN); VhostUserMsg msg =3D { .hdr.request =3D VHOST_USER_SET_VRING_ENDIAN, .hdr.flags =3D VHOST_USER_VERSION, @@ -1124,8 +1131,9 @@ static int vhost_user_write_sync(struct vhost_dev *de= v, VhostUserMsg *msg, int ret; =20 if (wait_for_reply) { - bool reply_supported =3D virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_REPLY_ACK); + bool reply_supported =3D + vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_REPLY_ACK); if (reply_supported) { msg->hdr.flags |=3D VHOST_USER_NEED_REPLY_MASK; } @@ -1475,8 +1483,7 @@ static int vhost_user_set_features(struct vhost_dev *= dev, ret =3D vhost_user_set_u64(dev, VHOST_USER_SET_FEATURES, features, log_enabled); =20 - if (virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_STATUS)) { + if (vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_STATUS)= ) { if (!ret) { return vhost_user_add_status(dev, VIRTIO_CONFIG_S_FEATURES_OK); } @@ -1530,8 +1537,8 @@ static int vhost_user_reset_device(struct vhost_dev *= dev) * Historically, reset was not implemented so only reset devices * that are expecting it. */ - if (!virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_RESET_DEVICE)) { + if (!vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_RESET_DEVICE)) { return -ENOSYS; } =20 @@ -1588,8 +1595,8 @@ static int vhost_user_backend_handle_vring_host_notif= ier(struct vhost_dev *dev, void *addr; char *name; =20 - if (!virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_HOST_NOTIFIER) || + if (!vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_HOST_NOTIFIER) || vdev =3D=3D NULL || queue_idx >=3D virtio_get_num_queues(vdev)) { return -EINVAL; } @@ -1887,13 +1894,13 @@ static int vhost_setup_backend_channel(struct vhost= _dev *dev) }; struct vhost_user *u =3D dev->opaque; int sv[2], ret =3D 0; - bool reply_supported =3D virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_REPLY_= ACK); + bool reply_supported =3D + vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_REPLY_A= CK); Error *local_err =3D NULL; QIOChannel *ioc; =20 - if (!virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_BACKEND_REQ)) { + if (!vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_BACKEND_REQ)) { return 0; } =20 @@ -2141,8 +2148,8 @@ static int vhost_user_postcopy_notifier(NotifierWithR= eturn *notifier, =20 switch (pnd->reason) { case POSTCOPY_NOTIFY_PROBE: - if (!virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_PAGEFAULT)) { + if (!vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_PAGEFAULT)) { /* TODO: Get the device name into this error somehow */ error_setg(errp, "vhost-user backend not capable of postcopy"); @@ -2240,7 +2247,7 @@ static int vhost_user_backend_init(struct vhost_dev *= dev, void *opaque, } =20 /* query the max queues we support if backend supports Multiple Qu= eue */ - if (dev->protocol_features & (1ULL << VHOST_USER_PROTOCOL_F_MQ)) { + if (vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_MQ)= ) { err =3D vhost_user_get_u64(dev, VHOST_USER_GET_QUEUE_NUM, &dev->max_queues); if (err < 0) { @@ -2258,18 +2265,18 @@ static int vhost_user_backend_init(struct vhost_dev= *dev, void *opaque, } =20 if (virtio_has_feature(features, VIRTIO_F_IOMMU_PLATFORM) && - !(virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_BACKEND_REQ) && - virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_REPLY_ACK))) { + !(vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_BACKEND_REQ) && + vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_REPLY_ACK))) { error_setg(errp, "IOMMU support requires reply-ack and " "backend-req protocol features."); return -EINVAL; } =20 /* get max memory regions if backend supports configurable RAM slo= ts */ - if (!virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS)= ) { + if (!vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS)) { u->user->memory_slots =3D VHOST_MEMORY_BASELINE_NREGIONS; } else { err =3D vhost_user_get_max_memslots(dev, &ram_slots); @@ -2293,8 +2300,8 @@ static int vhost_user_backend_init(struct vhost_dev *= dev, void *opaque, } =20 if (dev->migration_blocker =3D=3D NULL && - !virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_LOG_SHMFD)) { + !vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_LOG_SHMFD)) { error_setg(&dev->migration_blocker, "Migration disabled: vhost-user backend lacks " "VHOST_USER_PROTOCOL_F_LOG_SHMFD feature."); @@ -2363,8 +2370,8 @@ static bool vhost_user_requires_shm_log(struct vhost_= dev *dev) { assert(dev->vhost_ops->backend_type =3D=3D VHOST_BACKEND_TYPE_USER); =20 - return virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_LOG_SHMFD); + return vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_LOG_SHMFD); } =20 static int vhost_user_migration_done(struct vhost_dev *dev, char* mac_addr) @@ -2379,8 +2386,7 @@ static int vhost_user_migration_done(struct vhost_dev= *dev, char* mac_addr) } =20 /* if backend supports VHOST_USER_PROTOCOL_F_RARP ask it to send the R= ARP */ - if (virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_RARP)) { + if (vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_RARP)) { msg.hdr.request =3D VHOST_USER_SEND_RARP; msg.hdr.flags =3D VHOST_USER_VERSION; memcpy((char *)&msg.payload.u64, mac_addr, 6); @@ -2394,11 +2400,11 @@ static int vhost_user_migration_done(struct vhost_d= ev *dev, char* mac_addr) static int vhost_user_net_set_mtu(struct vhost_dev *dev, uint16_t mtu) { VhostUserMsg msg; - bool reply_supported =3D virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_REPLY_= ACK); + bool reply_supported =3D + vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_REPLY_A= CK); int ret; =20 - if (!(dev->protocol_features & (1ULL << VHOST_USER_PROTOCOL_F_NET_MTU)= )) { + if (!vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_NET_MT= U)) { return 0; } =20 @@ -2458,8 +2464,7 @@ static int vhost_user_get_config(struct vhost_dev *de= v, uint8_t *config, .hdr.size =3D VHOST_USER_CONFIG_HDR_SIZE + config_len, }; =20 - if (!virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_CONFIG)) { + if (!vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_CONFIG= )) { error_setg(errp, "VHOST_USER_PROTOCOL_F_CONFIG not supported"); return -EINVAL; } @@ -2502,8 +2507,8 @@ static int vhost_user_set_config(struct vhost_dev *de= v, const uint8_t *data, { int ret; uint8_t *p; - bool reply_supported =3D virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_REPLY_= ACK); + bool reply_supported =3D + vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_REPLY_A= CK); =20 VhostUserMsg msg =3D { .hdr.request =3D VHOST_USER_SET_CONFIG, @@ -2511,8 +2516,7 @@ static int vhost_user_set_config(struct vhost_dev *de= v, const uint8_t *data, .hdr.size =3D VHOST_USER_CONFIG_HDR_SIZE + size, }; =20 - if (!virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_CONFIG)) { + if (!vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_CONFIG= )) { return -ENOTSUP; } =20 @@ -2547,8 +2551,9 @@ static int vhost_user_crypto_create_session(struct vh= ost_dev *dev, uint64_t *session_id) { int ret; - bool crypto_session =3D virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_CRYPTO_SESSIO= N); + bool crypto_session =3D + vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_CRYPTO_SESSION); CryptoDevBackendSessionInfo *backend_info =3D session_info; VhostUserMsg msg =3D { .hdr.request =3D VHOST_USER_CREATE_CRYPTO_SESSION, @@ -2649,8 +2654,9 @@ static int vhost_user_crypto_close_session(struct vhost_dev *dev, uint64_t session_id) { int ret; - bool crypto_session =3D virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_CRYPTO_SESSIO= N); + bool crypto_session =3D + vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_CRYPTO_SESSION); VhostUserMsg msg =3D { .hdr.request =3D VHOST_USER_CLOSE_CRYPTO_SESSION, .hdr.flags =3D VHOST_USER_VERSION, @@ -2695,8 +2701,8 @@ static int vhost_user_get_inflight_fd(struct vhost_de= v *dev, .hdr.size =3D sizeof(msg.payload.inflight), }; =20 - if (!virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) { + if (!vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) { return 0; } =20 @@ -2763,8 +2769,8 @@ static int vhost_user_set_inflight_fd(struct vhost_de= v *dev, .hdr.size =3D sizeof(msg.payload.inflight), }; =20 - if (!virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) { + if (!vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) { return 0; } =20 @@ -2863,8 +2869,7 @@ void vhost_user_async_close(DeviceState *d, =20 static int vhost_user_dev_start(struct vhost_dev *dev, bool started) { - if (!virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_STATUS)) { + if (!vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_STATUS= )) { return 0; } =20 @@ -2889,16 +2894,15 @@ static void vhost_user_reset_status(struct vhost_de= v *dev) return; } =20 - if (virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_STATUS)) { + if (vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_STATUS)= ) { vhost_user_set_status(dev, 0); } } =20 static bool vhost_user_supports_device_state(struct vhost_dev *dev) { - return virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_DEVICE_STATE); + return vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_DEVICE_STATE); } =20 static int vhost_user_set_device_state_fd(struct vhost_dev *dev, --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464233; cv=none; d=zohomail.com; s=zohoarc; b=RcjdgyfqurJNFY2ww7lOfNcKB/Ml5hrjzDaLXv1Qxipweo5ZL5zE2M409KBRPnrWsbsS2osz+4u/h7HKunW6M/Q0mnD84OUKu+GIyLuHP+iMxnrw9zakkLulfd7CAeC26TqOxZEk4Gl84D01OWtEUZT0ul5Lw41TaTHAphq+lYk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464233; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OTRrNFoGzxxR5M/VZ/bnXQ71PiEMWMbPEG5ObNe6UPQ=; b=e8xfhylbNv22miSbOFP1aoVF8+geAu8LEDfADPZo8DSvub0USXu1iUw7llo0N1As3BKj/WjBGzIIPUE9CsISosuCYlHRrr/XQbS+aVg+ZO/1iWT1TzuQr773Bn5pvoTsT6h6uR25tB3CPojK7SR0FhZooStj5PT/VWND6gofH9M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464233038278.6654050893105; Sun, 14 Jun 2026 12:10:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAr-000138-6X; Sun, 14 Jun 2026 15:07:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAn-0000tr-M8 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:09 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAl-0001uW-KD for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:09 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-557-s2DhADtEPhaXDMF9whCzhQ-1; Sun, 14 Jun 2026 15:07:05 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-49221de4ed4so7703165e9.0 for ; Sun, 14 Jun 2026 12:07:05 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490ea94f5b0sm187757855e9.1.2026.06.14.12.07.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464026; 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: in-reply-to:in-reply-to:references:references; bh=OTRrNFoGzxxR5M/VZ/bnXQ71PiEMWMbPEG5ObNe6UPQ=; b=RLo9eZaLkYGXQyTSZuxu0yehOJOWfDDg0QKUCwPvYyCOWuapGGbWntPo7ieetXj/MWgptO VuXbzsZf0wvkg/QZOkKxuE/vw+ZUDCCCV3vyj+43Wgq9q1Eu79fSWKipfHN60vdxivKM1R 3PW6jDb91tASQOJSH9ik0Dojrz010wk= X-MC-Unique: s2DhADtEPhaXDMF9whCzhQ-1 X-Mimecast-MFC-AGG-ID: s2DhADtEPhaXDMF9whCzhQ_1781464025 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464024; x=1782068824; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=OTRrNFoGzxxR5M/VZ/bnXQ71PiEMWMbPEG5ObNe6UPQ=; b=abUxcSKpdV/RriXm++fAK/IiwkYfVDw1p5tSqrW8tCR2FW3B7/TnDieJNOA8jHcVU3 dwSHK4JZ22O9/ZD/2tlbUmr+mY/y/i4sqzWVrfBCaL3dkpSMraCDoa8ApLz1bLXwJE7n qtcF10xtFHhhHiw/8l27SZzzOvGQMuMsftWftXP5DQQdqpSHUfnxbbN6wBtd+TwHCEy8 uO8GCOqw5A+7at06SJ9b8z+3rFn8QuA/d4d/mmTUxi5Pq5ha/++mXJ2yeu2CvDeTu1ri 1dXbyjP/XFqbTOQBjgBCRjPZ0YhyTO0fINu3FlRMsyBVXz0qQJYVhoR4Jx6Ii6CK5KVz EaBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464024; x=1782068824; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OTRrNFoGzxxR5M/VZ/bnXQ71PiEMWMbPEG5ObNe6UPQ=; b=dG5pzwiQOINEIbd+C9axHk6/qLo2Yad6O5v/clgCVmSjg1nBvX1bVIan0EY3UyFLof r07Ju9VPUgjov5q5b6ht7wJWWh7vxCG/FqMNmkVj0VXUlS5EGw1vab6g8D7Eo4lNqL5/ Tyq6B7lUIdBtC3A8TGEGEkcPcVANCNBITsrh/8v69Oo9zz8pTwfksM0CaK47br/CQEdw kfpFIXnaOlwydxfLdOsP7MDvYva5MtWFNjFjchQJNfeaAIlofDLtee9Kw14n5oewoS1E eMzUp0iMelHBc+QMXQ66VGKJ4EOQDL5frqrEeTOOfAwQ6VyD/Ee17/LrJvQsBKKyRkxT Bh3g== X-Gm-Message-State: AOJu0YzqdlLlSLc0i/REydqbkKq1nGvTFrkeVyBNB/PmHw0quNSH2vTQ eDYKU7+YBCm1tY7iMw3H0tBlDlHzf2PUUbnSkIK6kuB6Wgt1cZsohvSUS1uEaFlwJeLZIlFiqFa 4vn9yC3pmtXhxkWQ/sqTwys10YHsHLZT/Bk+gWqoDF/oWDblafi9znBZKoK7EB51wzEoWuCMi4f ilEIGfBpif9xEFTukaj6i2oDkSxBajX/Gj3g== X-Gm-Gg: Acq92OE+3iuf1EabKwAqO3zeh3ESmXUq4DmPYFwQVktd4F9OHBuwWq116FgzdI4BmWk Or9hj5gkCJ7Z+XiYfygMITyT96buV/sQDHTEyWBgxuMQiEjpfwf1VWFoqSMKggcBdY6XaLFnxu5 +TsDQAOp5skfzILQQR6YnweMDeAuz3tZsn990UfhmkturmYYzggyJEtLRsPNVuFT9IixCJ25WSE o4fsJjHQ2Eh6aHOT2Rjf4WIIiyoJTC43Es+3tPke50K96XSsLjBKbwz/Y6oZi0gzOePjIkUnEX8 7bQ5In2xbcP7LhLQa6gYV+bRPiU9Tf3fbDLfSJnP/uwb97WwQVAQZZ4Br5B/touh7XYgLhSLrKu bexYU4Feri/BiS1hlBHsmDE5OJBzAyp/XjExjG0RTRkw= X-Received: by 2002:a05:600c:4595:b0:48f:d5b8:5b07 with SMTP id 5b1f17b1804b1-490ec4fb683mr146217615e9.20.1781464024415; Sun, 14 Jun 2026 12:07:04 -0700 (PDT) X-Received: by 2002:a05:600c:4595:b0:48f:d5b8:5b07 with SMTP id 5b1f17b1804b1-490ec4fb683mr146217125e9.20.1781464023783; Sun, 14 Jun 2026 12:07:03 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:00 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Stefano Garzarella , "Gonglei (Arei)" , zhenwei pi , Raphael Norwitz , Kevin Wolf , Hanna Reitz , Jason Wang , qemu-block@nongnu.org Subject: [PULL 030/106] vhost: move protocol_features to vhost_user Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464235357158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy As comment says: it's only for vhost-user. So, let's move it to corresponding vhost backend realization. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-5-vsementsov@yandex-team.ru> --- backends/cryptodev-vhost.c | 1 - hw/block/vhost-user-blk.c | 6 ++---- hw/net/vhost_net.c | 2 -- hw/virtio/meson.build | 1 + hw/virtio/vhost-user-stub.c | 6 ++++++ hw/virtio/vhost-user.c | 36 +++++++++++++++++++++++++++------- hw/virtio/virtio-qmp.c | 6 ++++-- include/hw/virtio/vhost-user.h | 4 ++++ include/hw/virtio/vhost.h | 8 -------- 9 files changed, 46 insertions(+), 24 deletions(-) create mode 100644 hw/virtio/vhost-user-stub.c diff --git a/backends/cryptodev-vhost.c b/backends/cryptodev-vhost.c index abdfce33af..c6069f4e5b 100644 --- a/backends/cryptodev-vhost.c +++ b/backends/cryptodev-vhost.c @@ -60,7 +60,6 @@ cryptodev_vhost_init( =20 crypto->cc =3D options->cc; =20 - crypto->dev.protocol_features =3D 0; crypto->backend =3D -1; =20 /* vhost-user needs vq_index to initiate a specific queue pair */ diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index dc99de0263..2831f3c053 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -572,10 +572,8 @@ static bool vhost_user_blk_inflight_needed(void *opaqu= e) { struct VHostUserBlk *s =3D opaque; =20 - bool inflight_migration =3D virtio_has_feature(s->dev.protocol_feature= s, - VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIG= HT); - - return inflight_migration; + return vhost_user_has_protocol_feature( + &s->dev, VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIGHT); } =20 static const VMStateDescription vmstate_vhost_user_blk_inflight =3D { diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index fda90e231e..ca19983126 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -265,9 +265,7 @@ struct vhost_net *vhost_net_init(VhostNetOptions *optio= ns) goto fail; } net->backend =3D r; - net->dev.protocol_features =3D 0; } else { - net->dev.protocol_features =3D 0; net->backend =3D -1; =20 /* vhost-user needs vq_index to initiate a specific queue pair */ diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build index e0566a60de..0ea89d8af4 100644 --- a/hw/virtio/meson.build +++ b/hw/virtio/meson.build @@ -94,6 +94,7 @@ system_virtio_ss.add_all(when: 'CONFIG_VIRTIO_PCI', if_tr= ue: virtio_pci_ss) =20 system_ss.add_all(when: 'CONFIG_VIRTIO', if_true: system_virtio_ss) stub_ss.add(files('vhost-stub.c')) +stub_ss.add(files('vhost-user-stub.c')) stub_ss.add(files('virtio-stub.c')) stub_ss.add(files('virtio-md-stubs.c')) =20 diff --git a/hw/virtio/vhost-user-stub.c b/hw/virtio/vhost-user-stub.c new file mode 100644 index 0000000000..45559788dd --- /dev/null +++ b/hw/virtio/vhost-user-stub.c @@ -0,0 +1,6 @@ +#include "qemu/osdep.h" +#include "hw/virtio/vhost-user.h" + +void vhost_user_qmp_status(struct vhost_dev *dev, VirtioStatus *status) +{ +} diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 72aeed26ca..fc2ed1f17e 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -11,6 +11,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/virtio/virtio-dmabuf.h" +#include "hw/virtio/virtio-qmp.h" #include "hw/virtio/vhost.h" #include "hw/virtio/virtio-crypto.h" #include "hw/virtio/vhost-user.h" @@ -259,6 +260,14 @@ struct vhost_user { /* Our current regions */ int num_shadow_regions; struct vhost_memory_region shadow_regions[VHOST_USER_MAX_RAM_SLOTS]; + + /** + * @protocol_features: the vhost-user protocol feature set by + * VHOST_USER_SET_PROTOCOL_FEATURES. Protocol features are only + * negotiated if VHOST_USER_F_PROTOCOL_FEATURES has been offered + * by the backend (see @features). + */ + uint64_t protocol_features; }; =20 struct scrub_regions { @@ -267,10 +276,13 @@ struct scrub_regions { int fd_idx; }; =20 -static bool vhost_user_has_protocol_feature(struct vhost_dev *dev, - uint64_t feature) +bool vhost_user_has_protocol_feature(struct vhost_dev *dev, uint64_t featu= re) { - return virtio_has_feature(dev->protocol_features, feature); + struct vhost_user *u =3D dev->opaque; + + assert(dev->vhost_ops->backend_type =3D=3D VHOST_BACKEND_TYPE_USER); + + return virtio_has_feature(u->protocol_features, feature); } =20 static int vhost_user_read_header(struct vhost_dev *dev, VhostUserMsg *msg) @@ -1338,8 +1350,8 @@ static int vhost_set_vring_file(struct vhost_dev *dev, int ret; int fds[VHOST_USER_MAX_RAM_SLOTS]; size_t fd_num =3D 0; - bool reply_supported =3D virtio_has_feature(dev->protocol_features, - VHOST_USER_PROTOCOL_F_REPLY_= ACK); + bool reply_supported =3D + vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_REPLY_A= CK); VhostUserMsg msg =3D { .hdr.request =3D request, .hdr.flags =3D VHOST_USER_VERSION, @@ -2239,8 +2251,8 @@ static int vhost_user_backend_init(struct vhost_dev *= dev, void *opaque, } =20 /* final set of protocol features */ - dev->protocol_features =3D protocol_features; - err =3D vhost_user_set_protocol_features(dev, dev->protocol_featur= es); + u->protocol_features =3D protocol_features; + err =3D vhost_user_set_protocol_features(dev, u->protocol_features= ); if (err < 0) { error_setg_errno(errp, EPROTO, "vhost_backend_init failed"); return -EPROTO; @@ -3033,6 +3045,16 @@ static int vhost_user_check_device_state(struct vhos= t_dev *dev, Error **errp) return 0; } =20 +void vhost_user_qmp_status(struct vhost_dev *dev, VirtioStatus *status) +{ + struct vhost_user *u =3D dev->opaque; + + assert(dev->vhost_ops->backend_type =3D=3D VHOST_BACKEND_TYPE_USER); + + status->vhost_dev->protocol_features =3D + qmp_decode_protocols(u->protocol_features); +} + const VhostOps user_ops =3D { .backend_type =3D VHOST_BACKEND_TYPE_USER, .vhost_backend_init =3D vhost_user_backend_init, diff --git a/hw/virtio/virtio-qmp.c b/hw/virtio/virtio-qmp.c index 71717c56a4..c8bf702d38 100644 --- a/hw/virtio/virtio-qmp.c +++ b/hw/virtio/virtio-qmp.c @@ -751,12 +751,14 @@ VirtioStatus *qmp_x_query_virtio_status(const char *p= ath, Error **errp) status->vhost_dev->acked_features =3D qmp_decode_features(vdev->device_id, hdev->acked_features_ex); =20 - status->vhost_dev->protocol_features =3D - qmp_decode_protocols(hdev->protocol_features); status->vhost_dev->max_queues =3D hdev->max_queues; status->vhost_dev->backend_cap =3D hdev->backend_cap; status->vhost_dev->log_enabled =3D hdev->log_enabled; status->vhost_dev->log_size =3D hdev->log_size; + + if (hdev->vhost_ops->backend_type =3D=3D VHOST_BACKEND_TYPE_USER) { + vhost_user_qmp_status(hdev, status); + } } =20 return status; diff --git a/include/hw/virtio/vhost-user.h b/include/hw/virtio/vhost-user.h index 53fe996686..0e576fc538 100644 --- a/include/hw/virtio/vhost-user.h +++ b/include/hw/virtio/vhost-user.h @@ -10,6 +10,7 @@ =20 #include "chardev/char-fe.h" #include "hw/virtio/virtio.h" +#include "qapi/qapi-types-virtio.h" =20 enum VhostUserProtocolFeature { VHOST_USER_PROTOCOL_F_MQ =3D 0, @@ -113,4 +114,7 @@ void vhost_user_async_close(DeviceState *d, CharFrontend *chardev, struct vhost_dev *vhost, vu_async_close_fn cb); =20 +void vhost_user_qmp_status(struct vhost_dev *dev, VirtioStatus *status); +bool vhost_user_has_protocol_feature(struct vhost_dev *dev, uint64_t featu= re); + #endif diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h index e139e05985..4a9bd3effe 100644 --- a/include/hw/virtio/vhost.h +++ b/include/hw/virtio/vhost.h @@ -104,14 +104,6 @@ struct vhost_dev { VIRTIO_DECLARE_FEATURES(features); VIRTIO_DECLARE_FEATURES(acked_features); =20 - /** - * @protocol_features: is the vhost-user only feature set by - * VHOST_USER_SET_PROTOCOL_FEATURES. Protocol features are only - * negotiated if VHOST_USER_F_PROTOCOL_FEATURES has been offered - * by the backend (see @features). - */ - uint64_t protocol_features; - uint64_t max_queues; uint64_t backend_cap; /* @started: is the vhost device started? */ --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464428; cv=none; d=zohomail.com; s=zohoarc; b=D5svgOYLcMckbFvRS+staAajRqRdhuha/C4w0RdW+ZsEwCCPt5YmeRBZVY9Dzg/Y54jDNpXD6d9uXU+DUJXcavge7xnr77cMsfsPwC21ac3pmR2fNnbnfn7z2go0dhGkTpsqdeRJW17D0gJe+HR6knFliH0605hqgglAsNEDEkc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464428; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JmyJVNdxvqpFL0dv00OCrhFq3kla9VTy5HUktDdpb0c=; b=F09KmbFcWBvRUJa4f+5M6rJ9+extg2ldva0WtAgzkVeSa3sVQBs/KF8OniyIcIwJo/lDkjAMfGVlzkFWTKRZKMRU/nhN6/YKyZllEwpWfrit4uFXRhf0PADLSfsr+rCatDcxeKC5Q0wRJ9azpEjRqOl1zArTNBq7CDeMed9diVA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464428644624.2075695141335; Sun, 14 Jun 2026 12:13:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAt-0001Eg-A7; Sun, 14 Jun 2026 15:07:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAr-00014w-HL for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAp-0001v9-7j for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:13 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-397-pJDqvXdJPqa-nI24C5IbNA-1; Sun, 14 Jun 2026 15:07:09 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-45ef4931de5so2131951f8f.1 for ; Sun, 14 Jun 2026 12:07:08 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922037055csm191121755e9.13.2026.06.14.12.07.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464030; 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=JmyJVNdxvqpFL0dv00OCrhFq3kla9VTy5HUktDdpb0c=; b=ioEMTQWjRryi6oe8MWWvutFF8xALQOHFlbCZHsWbKnywpVIGi/CVQK50zYc+F5j2/hxk3a GOjzcPpGxBlrP4vDfryQAZSpsOjH6lmPSxxPMXri3gj+cJGZDHybf1rsGnUVIFhAx6NwiI ohW3eAiHeprnpltyb0TzuqwL1jbwGAA= X-MC-Unique: pJDqvXdJPqa-nI24C5IbNA-1 X-Mimecast-MFC-AGG-ID: pJDqvXdJPqa-nI24C5IbNA_1781464028 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464028; x=1782068828; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=JmyJVNdxvqpFL0dv00OCrhFq3kla9VTy5HUktDdpb0c=; b=pKq3/KfDFX9P4+7yfyoVg0byrgwHhOcuJ/bDFBQrbCIBJj0y2JcdJbCOSHPY2gVwaU 0FIwufSMebwZfOES9PnT9LQ4skCWjG21q1BIpZmDKjAlmZwny3dYzqfmiLX2QXFVpz+x 2U5a7VfIl0T8CJEG8XecgrUxvaOYFaJ0J21bDs16Cy+yQgfE/gkItqHxHH7iG95Hceif ofb3ubyejnhsDzzG7YK1e3F8xcCxqGjIxx9QGdmjEzV32cKY4hopYiiKG2Ib4zMOgzUm z//SE+wSAuLX0uVKsuPDbmD15OGdduXNMdbVje8DSqdsjBgf6oiihFNWo/lrr/lh/KMu CehA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464028; x=1782068828; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JmyJVNdxvqpFL0dv00OCrhFq3kla9VTy5HUktDdpb0c=; b=oMB+jsPsseQRONAuItbtR7ghF46K9qh74sZqZWL43k7ilh6OeZ66A5RrSgQl7w+Qzp rJDXJt7EMVT74l36jtdJ18jygY3ivorJ+AGBvQqK+f2QMuCKO1Nd++Qo0JOaQNgX7/07 kHu7sMjAkGMDVlpV8Hzr4vwXsmVQH3+d2xkk9eHy/wUtYNxpx4ShIBjxlC7aKJYTCfcy 2BHGL1X5tuJCvr7IXIi3lvAcduahYsG/X0jbDd/mxwMpOehDAoafnWJXq2TOpvk7Lv6f J36jy1m9noMjOLK3E6TWkkzOYyQpdATUZJn1JWNpN9w4+Xw4Vtt9dSrsM70fL0D/Lwoy xtGQ== X-Gm-Message-State: AOJu0Yxrc4h3/V3VJl76Bl9qJnhT48CCgBW6solLjPKFIiOcTyWPZQLW 09BpFE1xl8FHJJgZCZgS+B8Kw1XTPu/rRuk07n+TjHHsmBjHNytt6BVODDdU/E5MO6qY2z42Z0M 9cILngwnXMUmz6ZtXj7JiNK3s3fhabLZ85jp8w4sX8YR+DNGGYeIMiGxU2ZxhCj8ZRN3FRq+FtF h8BI/gsTA4kBc1fWfr+H0odpdN+a+8E7JNpQ== X-Gm-Gg: Acq92OHHFXRwimtkR1vs2oIKQiMEhUYXPlLRQglUFBpkz9OKQJeqaP+pU3VVCZtzQp7 rLEkv9wdFD4fHY+k5b7PuweEW79w/g4dEa3IUt4dVoJ/SfhjNmR39Fb3TltcC0HzAegh1+vYfzv sKRBvQm8t8GVvoKc5YuymzfyO/wjmmwt9SRSqaGbcmHJHI/eaWVf6SdZJ1pnc3Qc93mBbwJIkMR alHJp5ElhIVGGiFmpmcJJJfZf+MWhEg2bm14tUusN6sK4mUWn6nGuu6ioRIF2Bbon7Tk/lHrSmE oAeN8kB6Kn0znV8X2JJfeSkgy+9AwDSGo34lOdMy3qVLZCak+PN70Ki2SGcDzgyMCW+3gowG7Tt vaxgfIvBLdLFmzZAAoAQyRJe+SU4g/KoSg59UOFSiDpM= X-Received: by 2002:a05:600c:1d02:b0:489:32b:ac0b with SMTP id 5b1f17b1804b1-490ec48fec5mr124765115e9.6.1781464027780; Sun, 14 Jun 2026 12:07:07 -0700 (PDT) X-Received: by 2002:a05:600c:1d02:b0:489:32b:ac0b with SMTP id 5b1f17b1804b1-490ec48fec5mr124764695e9.6.1781464027272; Sun, 14 Jun 2026 12:07:07 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:04 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Raphael Norwitz , Daniil Tatianin , Lei Yang , Stefano Garzarella , =?utf-8?Q?Marc-Andr=C3=A9?= Lureau Subject: [PULL 031/106] vhost-user-gpu: drop code duplication Message-ID: <0641dfdac00ba76ffbe41c59291e5ad23c62c219.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464429900158500 From: Vladimir Sementsov-Ogievskiy Obviously, this duplicated fragment doesn't make any sense. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Raphael Norwitz Reviewed-by: Daniil Tatianin Reviewed-by: Michael S. Tsirkin Tested-by: Lei Yang Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-6-vsementsov@yandex-team.ru> --- hw/display/vhost-user-gpu.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hw/display/vhost-user-gpu.c b/hw/display/vhost-user-gpu.c index 6e5e6540a4..6f02314356 100644 --- a/hw/display/vhost-user-gpu.c +++ b/hw/display/vhost-user-gpu.c @@ -644,10 +644,6 @@ vhost_user_gpu_device_realize(DeviceState *qdev, Error= **errp) VIRTIO_GPU_F_RESOURCE_UUID)) { g->parent_obj.conf.flags |=3D 1 << VIRTIO_GPU_FLAG_RESOURCE_UUID_E= NABLED; } - if (virtio_has_feature(g->vhost->dev.features, - VIRTIO_GPU_F_RESOURCE_UUID)) { - g->parent_obj.conf.flags |=3D 1 << VIRTIO_GPU_FLAG_RESOURCE_UUID_E= NABLED; - } =20 if (!virtio_gpu_base_device_realize(qdev, NULL, NULL, errp)) { return; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464475; cv=none; d=zohomail.com; s=zohoarc; b=nTyVKVyou/sjPQ7i9zkbKnSYgQGs5B0hDg0KgMR6dyq4usT7/ssbdLVxO56NTjmh/z3jyBrh1GnXjcHvJjsfxX/zq4SM0lqLBKtIugUJF7b2bnCzO7CWiwEbJcXOg+ADoD2fXpGeWGZwLxmJeTzO1wkmbgheIf4Y8rk/h15uq10= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464475; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8SJcS+9UqaVjBAPSUcIsntYvZkpRpH6gZNVtlSqPFRY=; b=A+mZJeZwYQ8xuD6L6xs2YUkNN/Ehj+tMyL8aLeXhkJ1p0uVd/F9YDp9nnHtUnVcvXsLVcxXAdhrbXzDw22yQAsuJ66ArU/uXD25TeOtH9WkOkqj6occ919wjLKEZosgsbh39YN01kLqEV8KvGfST5cHssEUK8deMffPWHKr9zqk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146447539430.941290574912273; Sun, 14 Jun 2026 12:14:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAv-0001YE-Vp; Sun, 14 Jun 2026 15:07:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAu-0001NB-FK for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:16 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAs-0001vV-40 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:16 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-653-9bEKXCnlN0mbwwiBhBTmCg-1; Sun, 14 Jun 2026 15:07:12 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490b9318944so16617675e9.1 for ; Sun, 14 Jun 2026 12:07:11 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492203bfb27sm210030865e9.11.2026.06.14.12.07.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464033; 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: in-reply-to:in-reply-to:references:references; bh=8SJcS+9UqaVjBAPSUcIsntYvZkpRpH6gZNVtlSqPFRY=; b=BeMpAjBJagjVIkD28Nn/grHpynfXq352enk2Rsi418DnnUHOU6LgcQBxXFSCIlOzEuWEPa 6lL3Ec1YtNNxpD6lD/O7Ga8VI8KbMg2OicGs17KcazXtidbPPEap6VBgfrLRBMQx29v8kC afKfhsNIXUmX7rVcKfD2O9OwQW7SfRY= X-MC-Unique: 9bEKXCnlN0mbwwiBhBTmCg-1 X-Mimecast-MFC-AGG-ID: 9bEKXCnlN0mbwwiBhBTmCg_1781464031 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464031; x=1782068831; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=8SJcS+9UqaVjBAPSUcIsntYvZkpRpH6gZNVtlSqPFRY=; b=D6g0doRVGiII8UsJ3frOLOkQW4MdFI+FAwc1cuSMxo7LtwefxFG8ACkKbWn4BMdhrX vIYykJd4Cw4nvpS6/t7jUMEJMnSaWjjntJcKMJGuMaO6qU2EW6sOT+Ua91PAblDLzzoK +W0zPliFmkpHMEJ93CkIXd2+qVoga7Y/eWBFMW1EyTsk2tL9CnkRHeykK0j1Y18/ONbM GVjJmITNOta6XN5hohr+Yt0KPO+xYmQUL7zaZ5JJX0AUjeyRhGPWiBuX2Zr4Yuhx9ful v1IrYDZ6XQMxwCyK2/18c0IznOTYDeRc37zZma5c9czKNe6cFuY9akoZ23Fw8QOJ0Wqi CmLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464031; x=1782068831; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8SJcS+9UqaVjBAPSUcIsntYvZkpRpH6gZNVtlSqPFRY=; b=n0GTcnXfyGyAv937xCPqef0zdlSxbCOdyT3L9VloGh1fCYxhPHVFaKX3ObTRMgBYX0 Q1uaMvNcsf2NdDrCqFZ3mqHvdLlEaucqJD3NmtlJ2dUUIbv2pGSUy1BiMzQVUJES7DN5 mRGCWpN9+takxAUzURgO52xb16M1G4iBxwkSR42fMtr7sr4dqedbKB9oqd+4L/bz2T/r zpCzj9xKysNDpHYAW5PAlzaHaQBxhAPMaBgdwrp8DAcgnApI/sqfKWho1ivjH/e+sM4J cVqI8yH7yyy7Mi8d0a5l889qw5wv5OBujBmNEMkq1a3OQzE9EcyCdUde8DCSICaub2hD UfEg== X-Gm-Message-State: AOJu0YwoftvZLosHctLsQApyMg3llbpNBoBeoKMtZJ1lj1nsugdzWajP 8yZQaaagUMVYD9gMeKtjvEd5cP0DPfueGUMM4bgZvF8UpJh9i/7FPp1zqEDbMpHtiqWxoSq1bS+ iXgK74UjMXPF5YCyPq+vfKnKMJxsVJdkWebnCV/pFFrviLmNi1Hnk/l+lrsDuSG4mKjweVjvpTh CGMjv7NX3ow3eFbzIDNe7mQCvPrJoN0f/mpQ== X-Gm-Gg: Acq92OGHruKgEYvYo5AKGbXeoXMeejuuCeS91C11AgAzE4aVVYdPr4H2DeJVuEGN0eT QA2d76ZpaTU6XWT0gk+2uqLiabUPEoZ2YpXP8LObSuiDfwWzM1T0zbim9z/fvGUeGlxXVXktN3X wITfTMu8cNNWMftI3/3xW2jWDJKWI/vqMfOG7K1eYwxAJSKWJLOPA3u92nGJX9ZuDctCVDBCR5m /t8vNz6P/VBsQ0+xCS0EeWVJwDCZNpMHPUcgEb/YIQNVlGAbyGjRuycXezsyeKxFfLtYJxw0SkC bIfLg+6hh1sDU9Vl6rPYk2df1ohyv3CWlHQ8V8QPgb3S86Wiy2EbaFDzr25aSrr7NBVmAYFZvWD C+0KqPvZOFwlWEMYrOLzBEnIXfTBYqj1+ZfWPo0VZl0g= X-Received: by 2002:a05:600c:4712:b0:490:b55c:cec3 with SMTP id 5b1f17b1804b1-490ec4dc8d8mr152520505e9.12.1781464030564; Sun, 14 Jun 2026 12:07:10 -0700 (PDT) X-Received: by 2002:a05:600c:4712:b0:490:b55c:cec3 with SMTP id 5b1f17b1804b1-490ec4dc8d8mr152520055e9.12.1781464029952; Sun, 14 Jun 2026 12:07:09 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:07 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Daniil Tatianin , Lei Yang , Stefano Garzarella , =?utf-8?Q?Marc-Andr=C3=A9?= Lureau , Jason Wang , Alex =?utf-8?Q?Benn=C3=A9e?= Subject: [PULL 032/106] vhost: make vhost_dev.features private Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464476249158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy It's hard to control where and how do we use this field. Let's cover all usages by getters/setters, and keep direct access to the field only in vhost.c. It will help to control migration of this field in further commits. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Daniil Tatianin Reviewed-by: Michael S. Tsirkin Tested-by: Lei Yang Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-7-vsementsov@yandex-team.ru> --- hw/display/vhost-user-gpu.c | 7 +++---- hw/net/vhost_net.c | 18 ++++++++--------- hw/virtio/vdpa-dev.c | 2 +- hw/virtio/vhost-user-base.c | 8 ++++++-- hw/virtio/vhost-user.c | 4 ++-- hw/virtio/vhost.c | 6 +++--- hw/virtio/virtio-qmp.c | 2 +- include/hw/virtio/vhost.h | 39 +++++++++++++++++++++++++++++++++++-- net/vhost-vdpa.c | 7 +++---- 9 files changed, 65 insertions(+), 28 deletions(-) diff --git a/hw/display/vhost-user-gpu.c b/hw/display/vhost-user-gpu.c index 6f02314356..57360898ca 100644 --- a/hw/display/vhost-user-gpu.c +++ b/hw/display/vhost-user-gpu.c @@ -631,17 +631,16 @@ vhost_user_gpu_device_realize(DeviceState *qdev, Erro= r **errp) =20 /* existing backend may send DMABUF, so let's add that requirement */ g->parent_obj.conf.flags |=3D 1 << VIRTIO_GPU_FLAG_DMABUF_ENABLED; - if (virtio_has_feature(g->vhost->dev.features, VIRTIO_GPU_F_VIRGL)) { + if (vhost_dev_has_feature(&g->vhost->dev, VIRTIO_GPU_F_VIRGL)) { g->parent_obj.conf.flags |=3D 1 << VIRTIO_GPU_FLAG_VIRGL_ENABLED; } - if (virtio_has_feature(g->vhost->dev.features, VIRTIO_GPU_F_EDID)) { + if (vhost_dev_has_feature(&g->vhost->dev, VIRTIO_GPU_F_EDID)) { g->parent_obj.conf.flags |=3D 1 << VIRTIO_GPU_FLAG_EDID_ENABLED; } else { error_report("EDID requested but the backend doesn't support it."); g->parent_obj.conf.flags &=3D ~(1 << VIRTIO_GPU_FLAG_EDID_ENABLED); } - if (virtio_has_feature(g->vhost->dev.features, - VIRTIO_GPU_F_RESOURCE_UUID)) { + if (vhost_dev_has_feature(&g->vhost->dev, VIRTIO_GPU_F_RESOURCE_UUID))= { g->parent_obj.conf.flags |=3D 1 << VIRTIO_GPU_FLAG_RESOURCE_UUID_E= NABLED; } =20 diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index ca19983126..323d117735 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -54,8 +54,8 @@ void vhost_net_ack_features_ex(struct vhost_net *net, con= st uint64_t *features) { virtio_features_clear(net->dev.acked_features_ex); if (net->backend =3D=3D -1) { - net->dev.acked_features =3D - net->dev.features & (1ULL << VHOST_USER_F_PROTOCOL_FEATURES); + net->dev.acked_features =3D (vhost_dev_features(&net->dev) & + (1ULL << VHOST_USER_F_PROTOCOL_FEATURES)); } else if (!qemu_has_vnet_hdr(net->nc)) { net->dev.acked_features =3D 1ULL << VHOST_NET_F_VIRTIO_NET_HDR; } @@ -282,15 +282,15 @@ struct vhost_net *vhost_net_init(VhostNetOptions *opt= ions) if (backend_kernel) { if (!qemu_has_vnet_hdr_len(options->net_backend, sizeof(struct virtio_net_hdr_mrg_rxbuf))) { - net->dev.features &=3D ~(1ULL << VIRTIO_NET_F_MRG_RXBUF); + vhost_dev_clear_feature(&net->dev, VIRTIO_NET_F_MRG_RXBUF); } =20 if (!qemu_has_vnet_hdr(options->net_backend) && - (~net->dev.features & (1ULL << VHOST_NET_F_VIRTIO_NET_HDR))) { - fprintf(stderr, "vhost lacks feature mask 0x%llx for backend\n= ", - ~net->dev.features & (1ULL << VHOST_NET_F_VIRTIO_NET_H= DR)); - goto fail; - } + !vhost_dev_has_feature(&net->dev, VHOST_NET_F_VIRTIO_NET_HDR))= { + fprintf(stderr, "vhost lacks VHOST_NET_F_VIRTIO_NET_HDR " + "feature for backend\n"); + goto fail; + } } =20 /* Set sane init value. Override when guest acks. */ @@ -298,7 +298,7 @@ struct vhost_net *vhost_net_init(VhostNetOptions *optio= ns) virtio_features_from_u64(features, options->get_acked_features(net->nc)); if (virtio_features_andnot(missing_features, features, - net->dev.features_ex)) { + vhost_dev_features_ex(&net->dev))) { fprintf(stderr, "vhost lacks feature mask 0x" VIRTIO_FEATURES_= FMT " for backend\n", VIRTIO_FEATURES_PR(missing_features)= ); goto fail; diff --git a/hw/virtio/vdpa-dev.c b/hw/virtio/vdpa-dev.c index 06179e402e..94188d37bb 100644 --- a/hw/virtio/vdpa-dev.c +++ b/hw/virtio/vdpa-dev.c @@ -224,7 +224,7 @@ static uint64_t vhost_vdpa_device_get_features(VirtIODe= vice *vdev, Error **errp) { VhostVdpaDevice *s =3D VHOST_VDPA_DEVICE(vdev); - uint64_t backend_features =3D s->dev.features; + uint64_t backend_features =3D vhost_dev_features(&s->dev); =20 if (!virtio_has_feature(features, VIRTIO_F_IOMMU_PLATFORM)) { virtio_clear_feature(&backend_features, VIRTIO_F_IOMMU_PLATFORM); diff --git a/hw/virtio/vhost-user-base.c b/hw/virtio/vhost-user-base.c index 01ab9ca56b..5bbf4a7367 100644 --- a/hw/virtio/vhost-user-base.c +++ b/hw/virtio/vhost-user-base.c @@ -118,9 +118,13 @@ static uint64_t vub_get_features(VirtIODevice *vdev, uint64_t requested_features, Error **errp) { VHostUserBase *vub =3D VHOST_USER_BASE(vdev); + uint64_t backend_features =3D vhost_dev_features(&vub->vhost_dev); + /* This should be set when the vhost connection initialises */ - g_assert(vub->vhost_dev.features); - return vub->vhost_dev.features & ~(1ULL << VHOST_USER_F_PROTOCOL_FEATU= RES); + g_assert(backend_features); + virtio_clear_feature(&backend_features, VHOST_USER_F_PROTOCOL_FEATURES= ); + + return backend_features; } =20 /* diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index fc2ed1f17e..68dd89cd8f 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -1249,7 +1249,7 @@ static int vhost_user_set_vring_enable(struct vhost_d= ev *dev, int enable) { int i; =20 - if (!virtio_has_feature(dev->features, VHOST_USER_F_PROTOCOL_FEATURES)= ) { + if (!vhost_dev_has_feature(dev, VHOST_USER_F_PROTOCOL_FEATURES)) { /* * For vhost-user devices, if VHOST_USER_F_PROTOCOL_FEATURES has n= ot * been negotiated, the rings start directly in the enabled state, @@ -1488,7 +1488,7 @@ static int vhost_user_set_features(struct vhost_dev *= dev, * Don't lose VHOST_USER_F_PROTOCOL_FEATURES, which is vhost-user * specific. */ - if (virtio_has_feature(dev->features, VHOST_USER_F_PROTOCOL_FEATURES))= { + if (vhost_dev_has_feature(dev, VHOST_USER_F_PROTOCOL_FEATURES)) { features |=3D 1ULL << VHOST_USER_F_PROTOCOL_FEATURES; } =20 diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index b89797df95..e39e0676e0 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1612,7 +1612,7 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaq= ue, } } =20 - virtio_features_copy(hdev->features_ex, features); + virtio_features_copy(hdev->_features_ex, features); =20 hdev->memory_listener =3D (MemoryListener) { .name =3D "vhost", @@ -1635,7 +1635,7 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaq= ue, }; =20 if (hdev->migration_blocker =3D=3D NULL) { - if (!virtio_has_feature_ex(hdev->features_ex, VHOST_F_LOG_ALL)) { + if (!vhost_dev_has_feature_ex(hdev, VHOST_F_LOG_ALL)) { error_setg(&hdev->migration_blocker, "Migration disabled: vhost lacks VHOST_F_LOG_ALL fe= ature."); } else if (vhost_dev_log_is_shared(hdev) && !qemu_memfd_alloc_chec= k()) { @@ -1909,7 +1909,7 @@ void vhost_get_features_ex(struct vhost_dev *hdev, const int *bit =3D feature_bits; =20 while (*bit !=3D VHOST_INVALID_FEATURE_BIT) { - if (!virtio_has_feature_ex(hdev->features_ex, *bit)) { + if (!vhost_dev_has_feature_ex(hdev, *bit)) { virtio_clear_feature_ex(features, *bit); } bit++; diff --git a/hw/virtio/virtio-qmp.c b/hw/virtio/virtio-qmp.c index c8bf702d38..51e3a42c4c 100644 --- a/hw/virtio/virtio-qmp.c +++ b/hw/virtio/virtio-qmp.c @@ -747,7 +747,7 @@ VirtioStatus *qmp_x_query_virtio_status(const char *pat= h, Error **errp) status->vhost_dev->nvqs =3D hdev->nvqs; status->vhost_dev->vq_index =3D hdev->vq_index; status->vhost_dev->features =3D - qmp_decode_features(vdev->device_id, hdev->features_ex); + qmp_decode_features(vdev->device_id, vhost_dev_features_ex(hde= v)); status->vhost_dev->acked_features =3D qmp_decode_features(vdev->device_id, hdev->acked_features_ex); =20 diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h index 4a9bd3effe..54862f9b44 100644 --- a/include/hw/virtio/vhost.h +++ b/include/hw/virtio/vhost.h @@ -98,10 +98,11 @@ struct vhost_dev { * offered by a backend which may be a subset of the total * features eventually offered to the guest. * - * @features: available features provided by the backend + * @_features: available features provided by the backend, private, + * direct access only in vhost.h/vhost.c * @acked_features: final negotiated features with front-end driver */ - VIRTIO_DECLARE_FEATURES(features); + VIRTIO_DECLARE_FEATURES(_features); VIRTIO_DECLARE_FEATURES(acked_features); =20 uint64_t max_queues; @@ -403,6 +404,40 @@ int vhost_dev_get_inflight(struct vhost_dev *dev, uint= 16_t queue_size, struct vhost_inflight *inflight); bool vhost_dev_has_iommu(struct vhost_dev *dev); =20 +static inline bool vhost_dev_has_feature(struct vhost_dev *dev, + uint64_t feature) +{ + return virtio_has_feature(dev->_features, feature); +} + +static inline bool vhost_dev_has_feature_ex(struct vhost_dev *dev, + uint64_t feature) +{ + return virtio_has_feature_ex(dev->_features_ex, feature); +} + +static inline uint64_t vhost_dev_features(struct vhost_dev *dev) +{ + return dev->_features; +} + +static inline const uint64_t *vhost_dev_features_ex(struct vhost_dev *dev) +{ + return dev->_features_ex; +} + +static inline void vhost_dev_clear_feature(struct vhost_dev *dev, + uint64_t feature) +{ + virtio_clear_feature(&dev->_features, feature); +} + +static inline void vhost_dev_clear_feature_ex(struct vhost_dev *dev, + uint64_t feature) +{ + virtio_clear_feature_ex(dev->_features_ex, feature); +} + #ifdef CONFIG_VHOST int vhost_reset_device(struct vhost_dev *hdev); #else diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c index f1523697e2..c85956a04b 100644 --- a/net/vhost-vdpa.c +++ b/net/vhost-vdpa.c @@ -257,15 +257,14 @@ static bool vhost_vdpa_get_vnet_hash_supported_types(= NetClientState *nc, { assert(nc->info->type =3D=3D NET_CLIENT_DRIVER_VHOST_VDPA); VhostVDPAState *s =3D DO_UPCAST(VhostVDPAState, nc, nc); - uint64_t features =3D s->vhost_vdpa.dev->features; int fd =3D s->vhost_vdpa.shared->device_fd; struct { struct vhost_vdpa_config hdr; uint32_t supported_hash_types; } config; =20 - if (!virtio_has_feature(features, VIRTIO_NET_F_HASH_REPORT) && - !virtio_has_feature(features, VIRTIO_NET_F_RSS)) { + if (!vhost_dev_has_feature(s->vhost_vdpa.dev, VIRTIO_NET_F_HASH_REPORT= ) && + !vhost_dev_has_feature(s->vhost_vdpa.dev, VIRTIO_NET_F_RSS)) { return false; } =20 @@ -586,7 +585,7 @@ static int vhost_vdpa_net_cvq_start(NetClientState *nc) * If we early return in these cases SVQ will not be enabled. The migr= ation * will be blocked as long as vhost-vdpa backends will not offer _F_LO= G. */ - if (!vhost_vdpa_net_valid_svq_features(v->dev->features, NULL)) { + if (!vhost_vdpa_net_valid_svq_features(vhost_dev_features(v->dev), NUL= L)) { return 0; } =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464066; cv=none; d=zohomail.com; s=zohoarc; b=EdF5pB/GR4B1yee8jan3e2RDhe0sfIBqvowZu0U39udCzIP85rtYrHvxsTwOs1/9goaUZQgCL1ZXExowT8VMqTiM8FEwKwLeMd+Y/VL3PoZbTISDlS6kvNOfFBI3hH+IUl90InAyytS5h0CwlREtWGX4euO6pVMmUIE4so9EvTI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464066; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xNE+FzuWcPvZLw0zlSSEW+Itu4un1W0AmA555SPCbPk=; b=jWMO4YAoeiYWTvIyfqUfCJR/rUsY9Fd8H5dNN4MqfvZELVhbw3LPn7dC/u1s5saUMhSy55RaaiEqnxH66D+4UmJ6/SQUPdG+WVzLd1hvONPyhLQsDINrWBcJLxD+mg7gmV11IGM2yJ02+epXVN9VosdzqGzr7rnXfQhVumTgTGY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464066733728.9057848614653; Sun, 14 Jun 2026 12:07:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqAz-0001ww-UH; Sun, 14 Jun 2026 15:07:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAx-0001jV-PB for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAu-0001w0-Vg for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:18 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-444-phmUaUz6NNu6I28N1aVxsQ-1; Sun, 14 Jun 2026 15:07:14 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4601c9b630fso1231359f8f.0 for ; Sun, 14 Jun 2026 12:07:14 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2b0c35sm27630375f8f.22.2026.06.14.12.07.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464036; 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: in-reply-to:in-reply-to:references:references; bh=xNE+FzuWcPvZLw0zlSSEW+Itu4un1W0AmA555SPCbPk=; b=K3iOeabkH4BXtQMzaYrdI6aXthUdv+ShGxx9gr058eoTnfoF7ho5Ht2iAMYT2bf9ZX6nae EvKfBDjKQDt5eSDzdzLC2v0/XFSToD0PS7QR0WP1UmiBwQwlSOXWlg8/9PB7Fi5X5D9y9C CBsJco+4bXLdgb86youtOAI2eDeN0Nc= X-MC-Unique: phmUaUz6NNu6I28N1aVxsQ-1 X-Mimecast-MFC-AGG-ID: phmUaUz6NNu6I28N1aVxsQ_1781464034 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464033; x=1782068833; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=xNE+FzuWcPvZLw0zlSSEW+Itu4un1W0AmA555SPCbPk=; b=Fr2PxEziOwdaLImd1i42bK4Aybyc2u9P75hQ8tRZH9owTmLkXllUhnvrqNut21maBP nV6FQ+AgbGZ9ZcPR+S/YQ3QjL+UTc9jfnaxRkGXWdglkFaNuoUbCMb4ziRNiVM9Prq4i xLkr59XqTxEEnydmpMcBWS+x08Uku9Cb+er4cX1YYib6ZMtBTLpktLi/gX9Fg9FK+KEQ OANkZVpbGR1E/jLRfU+oiTW+ZGEhBsyaizJ8pZ59Xf53auJs0J/KI7tRuqut933t5Np2 j9kS/xiehAGJExOPfTmWPD9uro8Uylyra5k7pOwl19lSsD9kFBWyy5epURexPmfBxRbR C3Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464033; x=1782068833; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xNE+FzuWcPvZLw0zlSSEW+Itu4un1W0AmA555SPCbPk=; b=r8eFUPlurqfG498S6MY5BRmO0flZ+N7sA/t8tocG5CnN1gUu5kFe8nnJPyOh5dIwdG bBh5V7O5iOhP4V414dvHswwdfqSYWg6s32TG/J3UypkOkt0DG85pme7XoIbdsMfY/ZWO HEbHnHIcQhkur2iLOqjFUBa4IQL+JtqkFe+pcctlnr5bdl8liiDIALDVhfWLFM3Y2a5N vzntHY0W3EelnmzCbnlsCZNWfk5P5GzlbCnyQKiCfY3pUUBEN5yDO9EHHnT7G6j6dsqd i8KDDyN/PKe4f+hrVkQS2d9aunnZHP8UOSwszRJ5Rg24CZSV4aWMBdiCh7raSfe6Otnl 62IA== X-Gm-Message-State: AOJu0YzM6514zlNUYvRH9cBiC3aSonZrxBXMgZbuSsbhKmJEkk+1XuBO K0BvQEDJAvKzKvrsaMBj6H2gFkmv+OYOMfJHOSi+WAcES8TG7KbL9NjEUiT9bZx4OPkAOckK/Oy MjI7tmxV5l54Zx/Y/e9D1FNgIRIeEmUWnCwGRZJk+VeAZ3f15D1l3yTvBMcu2rGqB8fqSEwtFW+ dOQkduQjd7Cc0DD90L6COQneED0neKVncQpQ== X-Gm-Gg: Acq92OEo+M2Ujed+FLoLnt6MtOzdoWbpAJ0/mtxXuJDF+ULlDt0mYH2pwGEL7UgBB57 5Qs0KvLcHmydoo17m3j8swRNkHt4KGiU/U5f3+GEBh5iovjRR5Ez7wKSphLxopLWk3i9jWfB+Yg +WE26zHG31s2HaJTb8r+g7F1IP4y5nRi3gypeCXx5VMj3j1VMg8/5lj0DIY/O7zmu50AzJIDqty 3dtm9rpRcqt9Gqh9EFmtq2RDdsr04jUp1KaPf8JGznE82XOd6+3eOlcOLMGx2hIhnErgR7/g4gv y4tSCNaQgViJj6bJSmj7xwpkGto20gG4ns8WxXRYWNDHO84ORKujhSG+dgT6In8eMcJypF8wBjB JCoFZP7YO7VduXp7hF8R04LwvtlPs5/r8JPD+Mz8AogU= X-Received: by 2002:a05:6000:2508:b0:452:8286:86bf with SMTP id ffacd0b85a97d-4606da8c96cmr14732158f8f.1.1781464033420; Sun, 14 Jun 2026 12:07:13 -0700 (PDT) X-Received: by 2002:a05:6000:2508:b0:452:8286:86bf with SMTP id ffacd0b85a97d-4606da8c96cmr14732110f8f.1.1781464032782; Sun, 14 Jun 2026 12:07:12 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:10 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Eric Farman , Cornelia Huck , Halil Pasic , Christian Borntraeger , Matthew Rosato , Richard Henderson , Ilya Leoshkevich , David Hildenbrand , qemu-s390x@nongnu.org Subject: [PULL 033/106] virtio: move common part of _set_guest_notifier to generic code Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464068474158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy virtio-pci, virtio-mmio and virtio-ccw handle config notifier equally but with different code (mmio adds a separate function, when pci use common function). Let's chose the more compact way (pci) and reuse it for mmio. Signed-off-by: Vladimir Sementsov-Ogievskiy Acked-by: Eric Farman Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-8-vsementsov@yandex-team.ru> --- hw/s390x/virtio-ccw.c | 35 ++++++++++++------------- hw/virtio/virtio-mmio.c | 41 +++++------------------------ hw/virtio/virtio-pci.c | 34 +++--------------------- hw/virtio/virtio.c | 47 +++++++++++++++++++++++++++++++--- include/hw/virtio/virtio-pci.h | 3 --- include/hw/virtio/virtio.h | 15 ++++++++--- 6 files changed, 82 insertions(+), 93 deletions(-) diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index ba55bf4fe9..cdad862ec2 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -1025,20 +1025,27 @@ static int virtio_ccw_set_guest_notifier(VirtioCcwD= evice *dev, int n, VirtQueue *vq =3D virtio_get_queue(vdev, n); EventNotifier *notifier =3D virtio_queue_get_guest_notifier(vq); VirtioDeviceClass *k =3D VIRTIO_DEVICE_GET_CLASS(vdev); + int r; + + if (!assign) { + if (k->guest_notifier_mask && vdev->use_guest_notifier_mask) { + k->guest_notifier_mask(vdev, n, true); + } + if (with_irqfd) { + virtio_ccw_remove_irqfd(dev, n); + } + } + + r =3D virtio_set_guest_notifier(vdev, n, assign, with_irqfd); + if (r < 0) { + return r; + } =20 if (assign) { - int r =3D event_notifier_init(notifier, 0); - - if (r < 0) { - return r; - } - virtio_queue_set_guest_notifier_fd_handler(vq, true, with_irqfd); if (with_irqfd) { r =3D virtio_ccw_add_irqfd(dev, n); if (r) { - virtio_queue_set_guest_notifier_fd_handler(vq, false, - with_irqfd); - event_notifier_cleanup(notifier); + virtio_set_guest_notifier(vdev, n, false, with_irqfd); return r; } } @@ -1054,16 +1061,8 @@ static int virtio_ccw_set_guest_notifier(VirtioCcwDe= vice *dev, int n, k->guest_notifier_pending(vdev, n)) { event_notifier_set(notifier); } - } else { - if (k->guest_notifier_mask && vdev->use_guest_notifier_mask) { - k->guest_notifier_mask(vdev, n, true); - } - if (with_irqfd) { - virtio_ccw_remove_irqfd(dev, n); - } - virtio_queue_set_guest_notifier_fd_handler(vq, false, with_irqfd); - event_notifier_cleanup(notifier); } + return 0; } =20 diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index 742ca3d3e4..58c6d46aab 100644 --- a/hw/virtio/virtio-mmio.c +++ b/hw/virtio/virtio-mmio.c @@ -670,18 +670,11 @@ static int virtio_mmio_set_guest_notifier(DeviceState= *d, int n, bool assign, VirtIOMMIOProxy *proxy =3D VIRTIO_MMIO(d); VirtIODevice *vdev =3D virtio_bus_get_device(&proxy->bus); VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_GET_CLASS(vdev); - VirtQueue *vq =3D virtio_get_queue(vdev, n); - EventNotifier *notifier =3D virtio_queue_get_guest_notifier(vq); + int r; =20 - if (assign) { - int r =3D event_notifier_init(notifier, 0); - if (r < 0) { - return r; - } - virtio_queue_set_guest_notifier_fd_handler(vq, true, with_irqfd); - } else { - virtio_queue_set_guest_notifier_fd_handler(vq, false, with_irqfd); - event_notifier_cleanup(notifier); + r =3D virtio_set_guest_notifier(vdev, n, assign, with_irqfd); + if (r < 0) { + return r; } =20 if (vdc->guest_notifier_mask && vdev->use_guest_notifier_mask) { @@ -690,30 +683,7 @@ static int virtio_mmio_set_guest_notifier(DeviceState = *d, int n, bool assign, =20 return 0; } -static int virtio_mmio_set_config_guest_notifier(DeviceState *d, bool assi= gn, - bool with_irqfd) -{ - VirtIOMMIOProxy *proxy =3D VIRTIO_MMIO(d); - VirtIODevice *vdev =3D virtio_bus_get_device(&proxy->bus); - VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_GET_CLASS(vdev); - EventNotifier *notifier =3D virtio_config_get_guest_notifier(vdev); - int r =3D 0; =20 - if (assign) { - r =3D event_notifier_init(notifier, 0); - if (r < 0) { - return r; - } - virtio_config_set_guest_notifier_fd_handler(vdev, assign, with_irq= fd); - } else { - virtio_config_set_guest_notifier_fd_handler(vdev, assign, with_irq= fd); - event_notifier_cleanup(notifier); - } - if (vdc->guest_notifier_mask && vdev->use_guest_notifier_mask) { - vdc->guest_notifier_mask(vdev, VIRTIO_CONFIG_IRQ_IDX, !assign); - } - return r; -} static int virtio_mmio_set_guest_notifiers(DeviceState *d, int nvqs, bool assign) { @@ -735,7 +705,8 @@ static int virtio_mmio_set_guest_notifiers(DeviceState = *d, int nvqs, goto assign_error; } } - r =3D virtio_mmio_set_config_guest_notifier(d, assign, with_irqfd); + r =3D virtio_mmio_set_guest_notifier(d, VIRTIO_CONFIG_IRQ_IDX, assign, + with_irqfd); if (r < 0) { goto assign_error; } diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index bcab2d18b8..fd9719547f 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1208,43 +1208,17 @@ static void virtio_pci_vector_poll(PCIDevice *dev, } } =20 -void virtio_pci_set_guest_notifier_fd_handler(VirtIODevice *vdev, VirtQueu= e *vq, - int n, bool assign, - bool with_irqfd) -{ - if (n =3D=3D VIRTIO_CONFIG_IRQ_IDX) { - virtio_config_set_guest_notifier_fd_handler(vdev, assign, with_irq= fd); - } else { - virtio_queue_set_guest_notifier_fd_handler(vq, assign, with_irqfd); - } -} - static int virtio_pci_set_guest_notifier(DeviceState *d, int n, bool assig= n, bool with_irqfd) { VirtIOPCIProxy *proxy =3D to_virtio_pci_proxy(d); VirtIODevice *vdev =3D virtio_bus_get_device(&proxy->bus); VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_GET_CLASS(vdev); - VirtQueue *vq =3D NULL; - EventNotifier *notifier =3D NULL; + int r; =20 - if (n =3D=3D VIRTIO_CONFIG_IRQ_IDX) { - notifier =3D virtio_config_get_guest_notifier(vdev); - } else { - vq =3D virtio_get_queue(vdev, n); - notifier =3D virtio_queue_get_guest_notifier(vq); - } - - if (assign) { - int r =3D event_notifier_init(notifier, 0); - if (r < 0) { - return r; - } - virtio_pci_set_guest_notifier_fd_handler(vdev, vq, n, true, with_i= rqfd); - } else { - virtio_pci_set_guest_notifier_fd_handler(vdev, vq, n, false, - with_irqfd); - event_notifier_cleanup(notifier); + r =3D virtio_set_guest_notifier(vdev, n, assign, with_irqfd); + if (r < 0) { + return r; } =20 if (!msix_enabled(&proxy->pci_dev) && diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 63e2faee99..3780e86039 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -3835,8 +3835,10 @@ static void virtio_config_guest_notifier_read(EventN= otifier *n) virtio_notify_config(vdev); } } -void virtio_queue_set_guest_notifier_fd_handler(VirtQueue *vq, bool assign, - bool with_irqfd) + +static void virtio_queue_set_guest_notifier_fd_handler(VirtQueue *vq, + bool assign, + bool with_irqfd) { if (assign && !with_irqfd) { event_notifier_set_handler(&vq->guest_notifier, @@ -3851,7 +3853,7 @@ void virtio_queue_set_guest_notifier_fd_handler(VirtQ= ueue *vq, bool assign, } } =20 -void virtio_config_set_guest_notifier_fd_handler(VirtIODevice *vdev, +static void virtio_config_set_guest_notifier_fd_handler(VirtIODevice *vdev, bool assign, bool with_ir= qfd) { EventNotifier *n; @@ -3868,6 +3870,45 @@ void virtio_config_set_guest_notifier_fd_handler(Vir= tIODevice *vdev, } } =20 +static void virtio_set_guest_notifier_fd_handler(VirtIODevice *vdev, + VirtQueue *vq, + int n, bool assign, + bool with_irqfd) +{ + if (n =3D=3D VIRTIO_CONFIG_IRQ_IDX) { + virtio_config_set_guest_notifier_fd_handler(vdev, assign, with_irq= fd); + } else { + virtio_queue_set_guest_notifier_fd_handler(vq, assign, with_irqfd); + } +} + +int virtio_set_guest_notifier(VirtIODevice *vdev, int n, bool assign, + bool with_irqfd) +{ + VirtQueue *vq =3D NULL; + EventNotifier *notifier =3D NULL; + + if (n =3D=3D VIRTIO_CONFIG_IRQ_IDX) { + notifier =3D virtio_config_get_guest_notifier(vdev); + } else { + vq =3D virtio_get_queue(vdev, n); + notifier =3D virtio_queue_get_guest_notifier(vq); + } + + if (assign) { + int r =3D event_notifier_init(notifier, 0); + if (r < 0) { + return r; + } + virtio_set_guest_notifier_fd_handler(vdev, vq, n, true, with_irqfd= ); + } else { + virtio_set_guest_notifier_fd_handler(vdev, vq, n, false, with_irqf= d); + event_notifier_cleanup(notifier); + } + + return 0; +} + EventNotifier *virtio_queue_get_guest_notifier(VirtQueue *vq) { return &vq->guest_notifier; diff --git a/include/hw/virtio/virtio-pci.h b/include/hw/virtio/virtio-pci.h index 5cb20b73f6..ee50fb0d55 100644 --- a/include/hw/virtio/virtio-pci.h +++ b/include/hw/virtio/virtio-pci.h @@ -250,9 +250,6 @@ void virtio_pci_types_register(const VirtioPCIDeviceTyp= eInfo *t); * @fixed_queues. */ unsigned virtio_pci_optimal_num_queues(unsigned fixed_queues); -void virtio_pci_set_guest_notifier_fd_handler(VirtIODevice *vdev, VirtQueu= e *vq, - int n, bool assign, - bool with_irqfd); =20 int virtio_pci_add_shm_cap(VirtIOPCIProxy *proxy, uint8_t bar, uint64_t of= fset, uint64_t length, uint8_t id); diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index 6344bd7b68..d9fde42558 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -420,8 +420,6 @@ void virtio_queue_update_used_idx(VirtIODevice *vdev, i= nt n); VirtQueue *virtio_get_queue(VirtIODevice *vdev, int n); uint16_t virtio_get_queue_index(VirtQueue *vq); EventNotifier *virtio_queue_get_guest_notifier(VirtQueue *vq); -void virtio_queue_set_guest_notifier_fd_handler(VirtQueue *vq, bool assign, - bool with_irqfd); int virtio_device_start_ioeventfd(VirtIODevice *vdev); int virtio_device_grab_ioeventfd(VirtIODevice *vdev); void virtio_device_release_ioeventfd(VirtIODevice *vdev); @@ -435,8 +433,17 @@ void virtio_queue_aio_detach_host_notifier(VirtQueue *= vq, AioContext *ctx); VirtQueue *virtio_vector_first_queue(VirtIODevice *vdev, uint16_t vector); VirtQueue *virtio_vector_next_queue(VirtQueue *vq); EventNotifier *virtio_config_get_guest_notifier(VirtIODevice *vdev); -void virtio_config_set_guest_notifier_fd_handler(VirtIODevice *vdev, - bool assign, bool with_ir= qfd); + +/** + * virtio_set_guest_notifier - set/unset queue or config guest notifier + * + * @vdev: the VirtIO device + * @n: queue number, or VIRTIO_CONFIG_IRQ_IDX to set config notifer + * @assign: true to set notifier, false to unset + * @with_irqfd: irqfd enabled + */ +int virtio_set_guest_notifier(VirtIODevice *vdev, int n, bool assign, + bool with_irqfd); =20 static inline void virtio_add_feature(uint64_t *features, unsigned int fbi= t) { --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464051; cv=none; d=zohomail.com; s=zohoarc; b=hSFnIaDVgL/Jigyflg1Dg5lmlnes39l80dNSfhrvCf+2RapOSabxwywrHuzTIjTOrkVtpWw9B1+YV97JmhDBzjRy4Z3hB7M3m8YzVocJFULTpnJ+fTBMcbRg5q0Q42vqCU/j7yyR4cTDcqEUIZxRzByzqTBLx5492wGOoJX/mJ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464051; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hKLuNmAUmeYJWAvkQ8zFnwwkwbgZSbPam78U8U7/FoM=; b=KMGxqva0FanO8PZG09TzY9uEhPmtFcmXe+JfOu+xMVyrLigZvYjsXL4JVAg8RpkH5/qxT039PRX8LzMqStcF1pqUs/DvC5UEWkravRsPf91fQe5EunRGkQjgOPdtICxNbORP/hpZW7nwSumF+Vn5fzZgriyF2TSYf0ztWmOhF48= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464051632528.7953865440769; Sun, 14 Jun 2026 12:07:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqB3-00028w-HO; Sun, 14 Jun 2026 15:07:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAz-0001sf-6x for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAx-0001w6-6F for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:20 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-456-UWh036ZSNQGNV4B4M8PnXg-1; Sun, 14 Jun 2026 15:07:17 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490a060eb84so19273885e9.0 for ; Sun, 14 Jun 2026 12:07:16 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922034c1cbsm151813485e9.10.2026.06.14.12.07.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464038; 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: in-reply-to:in-reply-to:references:references; bh=hKLuNmAUmeYJWAvkQ8zFnwwkwbgZSbPam78U8U7/FoM=; b=PpyLeajJUTjwMh4tTj5kQFOzixS8RBhnPbbABKJs39RR/ENVV7MZ4v9ybdAkphF27cQJtK 2kEKSUdUQ3yIxqI1WOtt0XVdNp1bAFxyLNWtVAChnDc+TCvxQ1ZnTAd4l+UbApvacD9RnA /y5RjQL5CBgs2q1kj32BJUZ48X+zUiw= X-MC-Unique: UWh036ZSNQGNV4B4M8PnXg-1 X-Mimecast-MFC-AGG-ID: UWh036ZSNQGNV4B4M8PnXg_1781464036 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464036; x=1782068836; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=hKLuNmAUmeYJWAvkQ8zFnwwkwbgZSbPam78U8U7/FoM=; b=PBTlNis7nVKm0mVJ+qR+RUPcUjZdYCj0q/2BG9ucW24vxqF+9gFEYCryfBv8H6OuY4 awsfGx8VCfgU48fdndfmhc2plNBUR0bvR0BbzxXUyQK9lRHfz2Ucx52Eizd7KYlrWhZO MQT5wkxA14Clyj2gRF2rKBvt2WlqGEzzvLPjCqXCs97Fim1yDAPOvkAXTm2wz9D9OPqd L7c+v+8fd5KLwf6MQSnoaOucMGmvA2/4lfSemnRmRkhNIW7QgUC2PgDAeevOlMRO3DBP 67SZJfhMlKQaxCk1B+IDhYv/PgREuf6ciPHI6NZQpnsGb0kUyPx1UCAbB+9O4uUBvttg Z2rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464036; x=1782068836; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hKLuNmAUmeYJWAvkQ8zFnwwkwbgZSbPam78U8U7/FoM=; b=W0FtvGPT6bvWIzWrEMg/nHrQbFgLxSvYiYrMhGlk1GnHqA95qNc5+t4RDJ76thS6OJ 3D1KYuhGctYssZLMtuH+uEWN4TiK4ni4xH5FCTS+ua8BWoBysWWwf/SFP3jsI+Ol5tNt c5upMCqR5npY07cIjyylANsHo+mQ8NUESoRQGBQZxEp7m+Tnd++jyj97g1ZZywqikLLs NUs/7VbGyILAjPtDV8oPSj4KYjZOHgncjc/7+E5LbwThqUVO02HfEh0G+c5QP1fW1TE+ oHEpLERcAv265w3OQZ7p/kIYPBp6GVsGEtYlS0aAG9P3zW3FiLZLYF+siGBngYTYr7uv zjRQ== X-Gm-Message-State: AOJu0YxNeBZ06tMFnP1DyZp2lc3IHh4eZBRAf7xOkDw9vT09p8wCSM8B YwD0nBSS+I6C2fpIF8Lq3hSYyDmBRs5alYqjHjy0cy6sjf6H7wLdw3QA3WT1gr27YE++onIwHO7 nDbzH2CHMLSHZnyPaxlmRfgk7wAVGRdAdF7pzWS74dQUf13nPZlBC+g9ElBc1PQf3qULgZ29jvt mVrvJTVuwIq9gNhIDhlntfQmTpQe+54Neo9A== X-Gm-Gg: Acq92OHVeeB63skip9xHSWVwXq6jMPdUeZhZ/xSY53Qvf4pOUc2/0AXd9WVq9LEO2ia QYGmSFeqAelhn9exPDG/MjoEUXgO6lzXzH0bpA39ICPzF2ARCYpR6lrvyNvNMWCSwqtHq6zRLsW zkuJ0aohjD1YXOsuD5rG7qFo/t8tGEx4eRH93pf016YPo0+FOtnICsH24HT2633nruGZFaV/QTI LVrxlbT7l5bI4A1VlYmPw+L9EOSWvDS8H1yUu+35YXKi2n/cOKkdJnbpD4ZixtntuoVjCUTeQJ2 zKB0dlcx5VZEQGzk6jsds3UEhR23Yjdi8yky34UaH+1/gvxrKeF6r1ZAICTVELN2ooucaYlyRmK zow3Zg6dk0QiNJ1vLtMwBjBl3mtqOnIMk3Quc+/4GYpE= X-Received: by 2002:a05:600c:190b:b0:490:bcf6:469f with SMTP id 5b1f17b1804b1-490ec33898fmr140709175e9.0.1781464035502; Sun, 14 Jun 2026 12:07:15 -0700 (PDT) X-Received: by 2002:a05:600c:190b:b0:490:bcf6:469f with SMTP id 5b1f17b1804b1-490ec33898fmr140708895e9.0.1781464034946; Sun, 14 Jun 2026 12:07:14 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:13 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Daniil Tatianin Subject: [PULL 034/106] virtio: drop *_set_guest_notifier_fd_handler() helpers Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464052607158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Now they don't make code more readable. Let's better put the whole logic into virtio_queue_set_guest_notifier(). Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Daniil Tatianin Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-9-vsementsov@yandex-team.ru> --- hw/virtio/virtio.c | 75 +++++++++++----------------------------------- 1 file changed, 17 insertions(+), 58 deletions(-) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 3780e86039..fb7f7f0f06 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -3836,73 +3836,32 @@ static void virtio_config_guest_notifier_read(Event= Notifier *n) } } =20 -static void virtio_queue_set_guest_notifier_fd_handler(VirtQueue *vq, - bool assign, - bool with_irqfd) -{ - if (assign && !with_irqfd) { - event_notifier_set_handler(&vq->guest_notifier, - virtio_queue_guest_notifier_read); - } else { - event_notifier_set_handler(&vq->guest_notifier, NULL); - } - if (!assign) { - /* Test and clear notifier before closing it, - * in case poll callback didn't have time to run. */ - virtio_queue_guest_notifier_read(&vq->guest_notifier); - } -} - -static void virtio_config_set_guest_notifier_fd_handler(VirtIODevice *vdev, - bool assign, bool with_ir= qfd) -{ - EventNotifier *n; - n =3D &vdev->config_notifier; - if (assign && !with_irqfd) { - event_notifier_set_handler(n, virtio_config_guest_notifier_read); - } else { - event_notifier_set_handler(n, NULL); - } - if (!assign) { - /* Test and clear notifier before closing it,*/ - /* in case poll callback didn't have time to run. */ - virtio_config_guest_notifier_read(n); - } -} - -static void virtio_set_guest_notifier_fd_handler(VirtIODevice *vdev, - VirtQueue *vq, - int n, bool assign, - bool with_irqfd) -{ - if (n =3D=3D VIRTIO_CONFIG_IRQ_IDX) { - virtio_config_set_guest_notifier_fd_handler(vdev, assign, with_irq= fd); - } else { - virtio_queue_set_guest_notifier_fd_handler(vq, assign, with_irqfd); - } -} - int virtio_set_guest_notifier(VirtIODevice *vdev, int n, bool assign, bool with_irqfd) { - VirtQueue *vq =3D NULL; - EventNotifier *notifier =3D NULL; - - if (n =3D=3D VIRTIO_CONFIG_IRQ_IDX) { - notifier =3D virtio_config_get_guest_notifier(vdev); - } else { - vq =3D virtio_get_queue(vdev, n); - notifier =3D virtio_queue_get_guest_notifier(vq); - } + bool is_config =3D n =3D=3D VIRTIO_CONFIG_IRQ_IDX; + VirtQueue *vq =3D is_config ? NULL : virtio_get_queue(vdev, n); + EventNotifier *notifier =3D is_config ? + virtio_config_get_guest_notifier(vdev) : + virtio_queue_get_guest_notifier(vq); + EventNotifierHandler *read_fn =3D is_config ? + virtio_config_guest_notifier_read : + virtio_queue_guest_notifier_read; =20 if (assign) { int r =3D event_notifier_init(notifier, 0); if (r < 0) { return r; } - virtio_set_guest_notifier_fd_handler(vdev, vq, n, true, with_irqfd= ); - } else { - virtio_set_guest_notifier_fd_handler(vdev, vq, n, false, with_irqf= d); + } + + event_notifier_set_handler(notifier, + (assign && !with_irqfd) ? read_fn : NULL); + + if (!assign) { + /* Test and clear notifier before closing it,*/ + /* in case poll callback didn't have time to run. */ + read_fn(notifier); event_notifier_cleanup(notifier); } =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464428; cv=none; d=zohomail.com; s=zohoarc; b=e9CT5UjnKPuf6DySeL5FB1mHqX9Nbo7J3omu+tDSulfNDrX35QOHt84bKvT5WgE4AmTVoMjYSxC6pcqDjEDn4hy2yf9Y0sN7noN0GxD5EJxqBR2xX6vux8Uej2j7suHozuaYa6UT8U4pEwtrEQCtMgx18QrXX7edn9I2cPf5pl0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464428; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xKVTfr9eil4RAYxuwVtA/XauKHWMtTW+RXtJLde9A7U=; b=juqLPAx+43QvjUHm+lLRQ/POpG62CHSWz4NK3klrUwEO8ivfG1HRxzkv+XFdN7FWJoc8CL6AoNbK2/5RoqNuVO6Gez8eCtI/V/FiQTL2gj/yNhSkN0Pplkn+VqBjuT//aiqYXaO2UfahQ1TCp+utVoLxmYSUNLBLjbIEZo2tMHc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464428452943.1158507663353; Sun, 14 Jun 2026 12:13:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqB5-0002Dg-DY; Sun, 14 Jun 2026 15:07:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqB1-000226-8v for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:23 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqAz-0001wQ-J9 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:23 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-416-EwXwkWOkPtGUgOlTsu57Yw-1; Sun, 14 Jun 2026 15:07:19 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490b3f53c81so11136155e9.3 for ; Sun, 14 Jun 2026 12:07:19 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220310a58sm210512375e9.4.2026.06.14.12.07.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464041; 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: in-reply-to:in-reply-to:references:references; bh=xKVTfr9eil4RAYxuwVtA/XauKHWMtTW+RXtJLde9A7U=; b=aZxYz3VAHTj2w4N3HQmZHo8GWe34MhTZxRi5lSWER/jx6IGBASNNoC6IeZoqzxSPJDa4du dBmPPXr4JkkgNfcfF9hbFM52aFPAaOSquFavEgobJuIWoME9YKgbz3OK+hjLsoqe2rD3gv 2uH7w8/eH7zf6cCB0Gxau1xPEUXl9P8= X-MC-Unique: EwXwkWOkPtGUgOlTsu57Yw-1 X-Mimecast-MFC-AGG-ID: EwXwkWOkPtGUgOlTsu57Yw_1781464039 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464038; x=1782068838; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=xKVTfr9eil4RAYxuwVtA/XauKHWMtTW+RXtJLde9A7U=; b=bPzLJY42NyIXfimHMDbWrMA6yS27OdNr6OythGGfnivg5cG6hJZumXba9hwOW6Fgjy wumLcp18tPETbp2Kqfnwa5n7Sxn5GV/bg6rB/pPReMDsrpK/WjMzXv+g6R2yQoHtRrlZ GSCLhsGcEaU+weXNACai9wxwuAGMHdjXHQkgI8/sRoWK9eyYu4CTsevyYEcX0vXkFu8j Zit7oVcIuE1nNAbNBPIk74h3Mu+QeDnUGqa9Kfl1nDQJ5UXm+9TVaRPNFkRS+yRJLDEC qO8fXLe24C9OyZARxf/zdN/bDdxLmfhiBBSjZJb1WVrUZF5BcU7ucwraSk08P5RW0oB7 fCgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464038; x=1782068838; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xKVTfr9eil4RAYxuwVtA/XauKHWMtTW+RXtJLde9A7U=; b=XDEb78xd7qH1hXuBQa483ZeQWW1E+EyF6F1hxykUgF0I0Nlm/g0atumGicYnI/6OCD HAY4Xgh6am1/j0w9biu+MmLmF6UGuJ+kN7TvLGpDOpuZixGcrkKkBdHdajLnPvzQ51A9 GprjzvurS150U7IV01V87NmOpm1jTqH7Tvl9PERe9LD5eTdHZng9t8eJBBTWA6XkysgR ukGgkc2U6pNNm6zXh++Tf5yt9P9PUYOUKKr2V4uLIT0R9/P5xGLWLg/nm4169ajNtWJt zQF9caI2frvufftH7hLopOb/YSxHm6B3bjrcHuZZ3CEsHLuTGyblJqYA2JLJRllVwNpV MY2Q== X-Gm-Message-State: AOJu0Yx2ikZ7OqXeJj6umRke7zNysmvBfPfwzsQfaZvw/zU1px5Hbuar y9JBkL0WkfBlEuSozemz6g4uBwcJKO2zbmlLnzKHvtcdvA6Y+2QDucXD3p7qRf1nAOdec3NYV2i K0RLRFGhoWXZaD0Dj3QyEPufsUG6O0dLhccBINQbSjRgzHczL6GGqfnLzWTuRxJZuEPaejw1KEP XVKS7dy2l0tqxjwGhjTy/UgvaMZJ3UTPxoXg== X-Gm-Gg: Acq92OHdvSsbrmi8pJbHUlN8/F3BzdP6+fy9qDUyQu/zAd+gs2HRhxn63SC5SIO/JY2 Lmg35IPhAMYImWRAtO+orIhlXrs662+t3M468FBESo1jkXzbOHhl9aspwNuHrZFJcppcbdP/55C 2Y6D7ZUhPa5l8xvKAA+PDqmIVgegAHrecmW/HO8bIHCbNt7cz17QLhlfH0UV6P0yz6OjgLzEvjO f8zVNhq3sMlx8r7XGmGY8WZOpUd7gpvgYklmspw3yyyZho9r5cTS1RUVT9aNODhJSvaxPgmPaBP xaHEfdYP4YNRJzz5UC7D3DmOSEIGXVLxnxXKW9uxnaORm1JOqCaWNGsuXoUQPia1FYYTYK/KCOE FgQcpBVYleZmI1HZ2UT4PExoVdyZqpsKk1fQZ8D0bx8o= X-Received: by 2002:a05:600c:58d5:b0:490:c2a2:e91e with SMTP id 5b1f17b1804b1-490ec523a8amr103766905e9.34.1781464038472; Sun, 14 Jun 2026 12:07:18 -0700 (PDT) X-Received: by 2002:a05:600c:58d5:b0:490:c2a2:e91e with SMTP id 5b1f17b1804b1-490ec523a8amr103766685e9.34.1781464037873; Sun, 14 Jun 2026 12:07:17 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:15 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Raphael Norwitz , Daniil Tatianin , Lei Yang , Stefano Garzarella Subject: [PULL 035/106] vhost-user: keep QIOChannelSocket for backend channel Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464429933158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Keep QIOChannelSocket pointer instead of more generic QIOChannel. No real difference for now, but it would be simpler to migrate socket fd in further commit. Signed-off-by: Vladimir Sementsov-Ogievskiy Acked-by: Raphael Norwitz Reviewed-by: Daniil Tatianin Reviewed-by: Michael S. Tsirkin Tested-by: Lei Yang Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-10-vsementsov@yandex-team.ru> --- hw/virtio/vhost-user.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 68dd89cd8f..31eaf65430 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -239,7 +239,7 @@ struct vhost_user { struct vhost_dev *dev; /* Shared between vhost devs of the same virtio device */ VhostUserState *user; - QIOChannel *backend_ioc; + QIOChannelSocket *backend_sioc; GSource *backend_src; NotifierWithReturn postcopy_notifier; struct PostCopyFD postcopy_fd; @@ -1796,8 +1796,8 @@ static void close_backend_channel(struct vhost_user *= u) g_source_destroy(u->backend_src); g_source_unref(u->backend_src); u->backend_src =3D NULL; - object_unref(OBJECT(u->backend_ioc)); - u->backend_ioc =3D NULL; + object_unref(OBJECT(u->backend_sioc)); + u->backend_sioc =3D NULL; } =20 static gboolean backend_read(QIOChannel *ioc, GIOCondition condition, @@ -1909,7 +1909,6 @@ static int vhost_setup_backend_channel(struct vhost_d= ev *dev) bool reply_supported =3D vhost_user_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_REPLY_A= CK); Error *local_err =3D NULL; - QIOChannel *ioc; =20 if (!vhost_user_has_protocol_feature( dev, VHOST_USER_PROTOCOL_F_BACKEND_REQ)) { @@ -1922,15 +1921,15 @@ static int vhost_setup_backend_channel(struct vhost= _dev *dev) return -saved_errno; } =20 - ioc =3D QIO_CHANNEL(qio_channel_socket_new_fd(sv[0], &local_err)); - if (!ioc) { + u->backend_sioc =3D qio_channel_socket_new_fd(sv[0], &local_err); + if (!u->backend_sioc) { error_report_err(local_err); return -ECONNREFUSED; } - u->backend_ioc =3D ioc; - u->backend_src =3D qio_channel_add_watch_source(u->backend_ioc, - G_IO_IN | G_IO_HUP, - backend_read, dev, NULL, N= ULL); + u->backend_src =3D qio_channel_add_watch_source(QIO_CHANNEL(u->backend= _sioc), + G_IO_IN | G_IO_HUP, + backend_read, dev, + NULL, NULL); =20 if (reply_supported) { msg.hdr.flags |=3D VHOST_USER_NEED_REPLY_MASK; @@ -2350,7 +2349,7 @@ static int vhost_user_backend_cleanup(struct vhost_de= v *dev) close(u->postcopy_fd.fd); u->postcopy_fd.handler =3D NULL; } - if (u->backend_ioc) { + if (u->backend_sioc) { close_backend_channel(u); } g_free(u->region_rb); --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464084; cv=none; d=zohomail.com; s=zohoarc; b=lnmkXD1H281dxA+iLaZ4eZ9Lv5wboSYOVL02vyvvlysfHQdfRSBM2dSLpnYpCB1Mh8MFXZ+67Y2NIzycca8rfn/k4U8UhScGb/OByCBnM4Lq9Yyy4c8WHbriq9fcpVYuN0T2/9nNxNu8doXdexbUXWmsFbBS0UGm4t2l1BM8JIs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464084; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xn6dFnmNSImHX8MQYTUhlfN05kv5iWMDypR6RoZj2Dw=; b=aEpzLuNALfNEiPlxe/s3UTaHD7wWUJGdG2/Q/4YzJzjKgsHf0o9CnI6IVi8Nvm9LLDeHwYms+ibz90GAQNtYLhwDLCIg/wrmkc8oy5e0btqXHgVP0Skcjtus4LM4oQowLZxThRpsRB5NCal07DtRcEmoCtTLffoOuZ4D37fDO/M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464084064281.5601678197527; Sun, 14 Jun 2026 12:08:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBJ-0002Wz-DR; Sun, 14 Jun 2026 15:07:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqB4-0002Dt-Bd for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:27 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqB2-0001wk-Pz for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:26 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-695-pjWyFF_9P-ySOhhDqfgibw-1; Sun, 14 Jun 2026 15:07:22 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490dad70f95so23922755e9.3 for ; Sun, 14 Jun 2026 12:07:22 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220308f13sm193020055e9.5.2026.06.14.12.07.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464044; 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: in-reply-to:in-reply-to:references:references; bh=xn6dFnmNSImHX8MQYTUhlfN05kv5iWMDypR6RoZj2Dw=; b=V3+txAAcQJU0DirXIzbUMVoHV/CEvcDaRjrJ78AnR8Uq/86WTNJ/KFtS8B9LANe0nAiiCM ZGQq0ccHU3fVdtD3gw2tkQYbQsfDsgcVfFv1oSUdXIFvp9l53ObUXF09PN6c0FYDhczQ4e w5q26ebnbRTxZ2mVuTTzzErxtDy3c5E= X-MC-Unique: pjWyFF_9P-ySOhhDqfgibw-1 X-Mimecast-MFC-AGG-ID: pjWyFF_9P-ySOhhDqfgibw_1781464042 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464041; x=1782068841; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=xn6dFnmNSImHX8MQYTUhlfN05kv5iWMDypR6RoZj2Dw=; b=IvYAYNDlKWFxtcEOI7cybaFjSmWwTZkAHjESCdY43r7ve3D7vl/B0Z5TVh7uYhYZkc q/ZDT6qsALwRHVKF5M3OZ57K+t9LW7ITg7oKXsQ7gwhMdRtEuQ+xpGPnwlsV1flYvyKA I88oNmHJsiefZBosBSiST9Y/1mIfooV7WgGyzMxBAv++s778sqsKIEc5+WSOYKzQ2Zww 0QkHXu6AyApMqR8lL0hx79EWV1hsg130yzuzsrL4PNBFHiEOqloMI7+AeGCbMNsEh+QQ uXBKyW+rO1c2FFMvxdx+8TZ0+/nahufTix7feJAaowFEusU/plpA0QxF0+UeSmBbL1Km fSNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464041; x=1782068841; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xn6dFnmNSImHX8MQYTUhlfN05kv5iWMDypR6RoZj2Dw=; b=Wl89YjUzDnI0+P+ufiId7rTVmRe3DxC+7sN7uWb5p1kMjHbn4ChctL0v4sfkidu7xV LTUZZhIu0lYTg3iR/jvpMOQtPCPuvyTl5ERn+iJ5jeTD8FC6CXUvpUk1lyiwydbjVY8Z sA+tuRPOvq3suOqbcMS4o/BWPIK+SnSigZ9ZYkj+M2Etom8JX1TaKfqedI/Kx0wbdpG0 9di+6qruzqUO67p75MA4YTw6EmN7JqKhgZpQhL4TRp6WnsPOmBwZdrYd1VJN1C4doACh hd5Nq7bBi/1FmAqhdNlXQInNH8jXTmAlWZBAJ1g4xKJu8meJNz9qOrjdkIXzjaeHRc/w MA2Q== X-Gm-Message-State: AOJu0Yxdu95XYsaKXAZdjto7aMHXIvoMokXTS9nLp0/Z9cBScCebmSFt KjOFOFnAOj2jJJ5Qd+dvVQpVjq2KS6rDDEGPkBej4SQaf/dVx3GzMGYf9FFf2lkMklLpR2uFNYO /7wobrMO0P5hzOb164F06wH9Z/SjvkyHPqhST+aGbGLGD0Yn7NR4nlw91Fxanm0WL60V2VyZy9J vPxcSY2c1FhSX9l2XfnEwYEPnfBseCD6VSmA== X-Gm-Gg: Acq92OFwiOkNjYfYEjWtiXZK65L5KOzrQIedoObJXtMkTC0mmRFYr4fXYdfZ3cGx82r R1nG1s0aX1IX9GXDborXlGe9KniBlkZ2dRrdNRWWTDKiQ7snmZ0XbYWH8vRNrO+chJUGaX+pTIO BZJaX6XCTJDf+5j3WRZvoLGSeXY7QvPzz8SRxhrU4uF/PJGRfs5DvzfPYukyxziPzu+FyhZc8N4 Jjvr8MDo4Gxk9b9yQw5MqG0Iq9Qnfir2k9wS+WY9Ku/TEGGauh7Ha31L56bzxdJ2IZmp21GoSae fY19cjc2hHAmROkiRSQBFCc/LG+hXDZItq5y4SXa1pn1b4Ijluy8HVKvl9Iu3FZwzMqoBG2zf2i FZwqG/pPXa6anLjih8i/3kKr1dyPCqzSx2kFjKpfcfMk= X-Received: by 2002:a05:600c:3583:b0:490:5466:8591 with SMTP id 5b1f17b1804b1-490ec4e74dbmr177416215e9.12.1781464041566; Sun, 14 Jun 2026 12:07:21 -0700 (PDT) X-Received: by 2002:a05:600c:3583:b0:490:5466:8591 with SMTP id 5b1f17b1804b1-490ec4e74dbmr177415835e9.12.1781464041083; Sun, 14 Jun 2026 12:07:21 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:18 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Raphael Norwitz , Stefano Garzarella Subject: [PULL 036/106] vhost: vhost_virtqueue_start(): fix failure path Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464084529158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy We miss call to unmap in cases when vhost_memory_map() returns lenght less than requested (still we consider such cases as an error). Let's fix it in vhost_memory_map(). Fixes: c471ad0e9b ("vhost_net: device IOTLB support") Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-11-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index e39e0676e0..131a2fbf87 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -454,11 +454,20 @@ static inline void vhost_dev_log_resize(struct vhost_= dev *dev, uint64_t size) } =20 static void *vhost_memory_map(struct vhost_dev *dev, hwaddr addr, - hwaddr *plen, bool is_write) + hwaddr len, bool is_write) { if (!vhost_dev_has_iommu(dev)) { - return address_space_map(dev->vdev->dma_as, addr, plen, is_write, - MEMTXATTRS_UNSPECIFIED); + hwaddr mapped_len =3D len; + void *res =3D address_space_map(dev->vdev->dma_as, addr, &mapped_l= en, + is_write, MEMTXATTRS_UNSPECIFIED); + if (!res) { + return NULL; + } + if (len !=3D mapped_len) { + address_space_unmap(dev->vdev->dma_as, res, mapped_len, 0, 0); + return NULL; + } + return res; } else { return (void *)(uintptr_t)addr; } @@ -1312,22 +1321,22 @@ int vhost_virtqueue_start(struct vhost_dev *dev, } =20 l =3D vq->desc_size; - vq->desc =3D vhost_memory_map(dev, vq->desc_phys, &l, false); - if (!vq->desc || l !=3D vq->desc_size) { + vq->desc =3D vhost_memory_map(dev, vq->desc_phys, l, false); + if (!vq->desc) { r =3D -ENOMEM; goto fail_alloc_desc; } =20 l =3D vq->avail_size; - vq->avail =3D vhost_memory_map(dev, vq->avail_phys, &l, false); - if (!vq->avail || l !=3D vq->avail_size) { + vq->avail =3D vhost_memory_map(dev, vq->avail_phys, l, false); + if (!vq->avail) { r =3D -ENOMEM; goto fail_alloc_avail; } =20 l =3D vq->used_size; - vq->used =3D vhost_memory_map(dev, vq->used_phys, &l, true); - if (!vq->used || l !=3D vq->used_size) { + vq->used =3D vhost_memory_map(dev, vq->used_phys, l, true); + if (!vq->used) { r =3D -ENOMEM; goto fail_alloc_used; } --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464309; cv=none; d=zohomail.com; s=zohoarc; b=UxLj8LAn8dYmnmrRvIE/lp8ojOG7So/PjlGGHHSacmT2o48gLEMQKR3nkjM5cZb6p9jluGUfh/KdoSRYwV+SXsFXc7ezzEM5ZmZeYfK/mGBWVGqX+QYgRa1Zg58vkSNPRPwA4uTU/1cyaKF9rw05GOVZbtIhSinQo6ELflw8KKI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464309; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=viOnv7vns4x2QuQDCUIYzKJ96reRINzzZuhUSEBRK4k=; b=mY0hnszN7wqF3jXglf6VVQca2oDX7WLRa+YRs3Q2Tbo9MdYCccQbvTV9QeD0yZCYW+iTHd2WvyAogaD5BkRDbSqNTasPhXdaiZDZ3siDvow180IE1dQOhhUj3YH53WhQfGYaSKBJOzqwA19sEoDQVMgDhCDP/8b21cmnrxIhCXY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464309536955.375462839836; Sun, 14 Jun 2026 12:11:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBN-0002qj-3m; Sun, 14 Jun 2026 15:07:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqB7-0002Lb-Kr for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:33 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqB5-0001xX-RQ for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:29 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-348-qaycHxEMNQuaBkROYsHt9Q-1; Sun, 14 Jun 2026 15:07:26 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490b93debc8so25300625e9.1 for ; Sun, 14 Jun 2026 12:07:25 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490ea9563b8sm174731045e9.2.2026.06.14.12.07.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464047; 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: in-reply-to:in-reply-to:references:references; bh=viOnv7vns4x2QuQDCUIYzKJ96reRINzzZuhUSEBRK4k=; b=CSEvArDgBNoUVGH5Nk9WWXZL6XWOEKleVvo1b7bpAUqRuOzsVa5xRGJkuOBk5gGcxpa2Ff ZR28OM8uYhypUZXrzUHrhS28UsZaRkPUEr+6Yw7uGq1S00R79H7FSwjFvdm1KHSdw6gX+d +uuulWWQAGAhXMuzCFo6Bj4HtmSwAHU= X-MC-Unique: qaycHxEMNQuaBkROYsHt9Q-1 X-Mimecast-MFC-AGG-ID: qaycHxEMNQuaBkROYsHt9Q_1781464045 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464045; x=1782068845; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=viOnv7vns4x2QuQDCUIYzKJ96reRINzzZuhUSEBRK4k=; b=C68mF01HykChhH3yKYKxTMhptyEpCv7uorLKnMaePsxHkjeM9cfzAYZ2LtdD2cZZVp p1DRwQtkkU42tD/5UiRLplx8VibiUOaVwJpdYYXgs+HatTAyrWKBak19VT6/tIfvuADX 5msyZ2Fy2a2UPzdxHsO2lAioNgHHDoZ0fVQ72ZkoS49KJEvNg1+RiP8D4UlvfMeUzHpr v9qhQXplvrj0E6nc921GG2+DdJE8efMMj15uVMj8ewxifbKbreOIWakHUr2BjCUAh+kA +B53epTbSlQ0iAT1JWX4vpH42YQwhAxhLWJ4SiC6NBJ61lULzDneD3yL0FsI3/ojtKR7 JD5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464045; x=1782068845; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=viOnv7vns4x2QuQDCUIYzKJ96reRINzzZuhUSEBRK4k=; b=cUt8leL/XofkRjSq9agZaQSNHEXIx/IyeNaTpcUge2k0j8fUz2raqoWSXmOLA+cUof wQTq21m1Svd2VUzUWKxvCjYdBa+QpmPWOmrYtPBg0MhBgI63vKp9W0DXRc25ZMaQkNnA y1X4lLA2b0547oOuBkn1Fw70HJCC1oK1sYP7zewqeJHO+6D8fm4II4ekoJiuwPs3zNCQ bJdjrmjYLN0bXpkfXWSWydvSGt1ONfLmrmISSPUeGAInOWyE8jCa8rZHh0SmUJLIvQTM nUNWVZTNp9G9w4W+XnpEX22rPrjz/Mf199dlC6Ke47kaxr6PD1PespZqugHj/yLw6F3Q uBsg== X-Gm-Message-State: AOJu0YyEeHQsUGkfHLndZ9rIrsdrDfb/v8sUrUKPuZnqKiyu0CEWmlCL zyBY0pnhnvMGhz9F3ML7lTwuZVyejWqaM097mP0ROmTSkyDla23/kOwKmOgWL7HUDVCI5aOwJHx zDDokF1x8oyK0mmh7TNOgG9dRucinPEwWgw2NxkBgnDzdnCsBo1Zv3qhFeLQOO8jzV5F5Is30LD kYorj/IrcfQ1zDG7PJNZpZ55drqrDpWHHBhQ== X-Gm-Gg: Acq92OG3vG51UBCtsrH0voAE9MJYHnaQXV2BeMVdDuvZMiuj5mds4lc2p0flYtptIAJ 0cW4Msqqkrwt03hv+agLr5NshYbmh0+ghoyfilAP3ejSvnY2/Kg8AVkS2Hr6gGY5YrtN1zaq/wk 0pmm6UkRDVvvjlpXrYUZuSOxDOB23wgPSAt9nLhlCwMi2YefV82W0LPatWcPG0Yv4dc5lZZtNtZ dsFI5iPfF8G/j/CTUWE7/U+Va3nqL80eqvUD99Mmo0LtiyyQooK6boIlMO5/6NlLkowoYPis2rZ mTFavMyJQBVWzZtUeEUYtWfVGFlFEhVGcqlUCF6DtH7eJS3FJvrEpg11yTEMnSOu22p2AFaaiqU H3l3mDlyBGOBlKipCYidckR6W6ycZ1JFqErcSzRZa6Tg= X-Received: by 2002:a05:600c:47d1:b0:490:e170:b7ee with SMTP id 5b1f17b1804b1-492200c04c0mr59651985e9.17.1781464044643; Sun, 14 Jun 2026 12:07:24 -0700 (PDT) X-Received: by 2002:a05:600c:47d1:b0:490:e170:b7ee with SMTP id 5b1f17b1804b1-492200c04c0mr59651785e9.17.1781464044067; Sun, 14 Jun 2026 12:07:24 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:21 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Daniil Tatianin , Raphael Norwitz , Stefano Garzarella Subject: [PULL 037/106] vhost: make vhost_memory_unmap() null-safe Message-ID: <558084367e9059dbe9f851699cc90be3499ed0fa.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464311404158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy This helps to simplify failure paths of vhost_virtqueue_start() a lot. We also need to zero-out pointers on unmap, to not try to unmap invalid pointers. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Daniil Tatianin Reviewed-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-12-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 131a2fbf87..b9b7a984e3 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -473,14 +473,20 @@ static void *vhost_memory_map(struct vhost_dev *dev, = hwaddr addr, } } =20 -static void vhost_memory_unmap(struct vhost_dev *dev, void *buffer, +static void vhost_memory_unmap(struct vhost_dev *dev, void **buffer, hwaddr len, int is_write, hwaddr access_len) { + if (!*buffer) { + return; + } + if (!vhost_dev_has_iommu(dev)) { - address_space_unmap(dev->vdev->dma_as, buffer, len, is_write, + address_space_unmap(dev->vdev->dma_as, *buffer, len, is_write, access_len); } + + *buffer =3D NULL; } =20 static int vhost_verify_ring_part_mapping(void *ring_hva, @@ -1324,33 +1330,33 @@ int vhost_virtqueue_start(struct vhost_dev *dev, vq->desc =3D vhost_memory_map(dev, vq->desc_phys, l, false); if (!vq->desc) { r =3D -ENOMEM; - goto fail_alloc_desc; + goto fail; } =20 l =3D vq->avail_size; vq->avail =3D vhost_memory_map(dev, vq->avail_phys, l, false); if (!vq->avail) { r =3D -ENOMEM; - goto fail_alloc_avail; + goto fail; } =20 l =3D vq->used_size; vq->used =3D vhost_memory_map(dev, vq->used_phys, l, true); if (!vq->used) { r =3D -ENOMEM; - goto fail_alloc_used; + goto fail; } =20 r =3D vhost_virtqueue_set_addr(dev, vq, vhost_vq_index, dev->log_enabl= ed); if (r < 0) { - goto fail_alloc; + goto fail; } =20 file.fd =3D event_notifier_get_fd(virtio_queue_get_host_notifier(vvq)); r =3D dev->vhost_ops->vhost_set_vring_kick(dev, &file); if (r) { VHOST_OPS_DEBUG(r, "vhost_set_vring_kick failed"); - goto fail_kick; + goto fail; } =20 /* Clear and discard previous events if any. */ @@ -1370,24 +1376,19 @@ int vhost_virtqueue_start(struct vhost_dev *dev, file.fd =3D -1; r =3D dev->vhost_ops->vhost_set_vring_call(dev, &file); if (r) { - goto fail_vector; + goto fail; } } =20 return 0; =20 -fail_vector: -fail_kick: -fail_alloc: - vhost_memory_unmap(dev, vq->used, virtio_queue_get_used_size(vdev, idx= ), +fail: + vhost_memory_unmap(dev, &vq->used, virtio_queue_get_used_size(vdev, id= x), 0, 0); -fail_alloc_used: - vhost_memory_unmap(dev, vq->avail, virtio_queue_get_avail_size(vdev, i= dx), + vhost_memory_unmap(dev, &vq->avail, virtio_queue_get_avail_size(vdev, = idx), 0, 0); -fail_alloc_avail: - vhost_memory_unmap(dev, vq->desc, virtio_queue_get_desc_size(vdev, idx= ), + vhost_memory_unmap(dev, &vq->desc, virtio_queue_get_desc_size(vdev, id= x), 0, 0); -fail_alloc_desc: return r; } =20 @@ -1434,11 +1435,11 @@ static int do_vhost_virtqueue_stop(struct vhost_dev= *dev, vhost_vq_index); } =20 - vhost_memory_unmap(dev, vq->used, virtio_queue_get_used_size(vdev, idx= ), + vhost_memory_unmap(dev, &vq->used, virtio_queue_get_used_size(vdev, id= x), 1, virtio_queue_get_used_size(vdev, idx)); - vhost_memory_unmap(dev, vq->avail, virtio_queue_get_avail_size(vdev, i= dx), + vhost_memory_unmap(dev, &vq->avail, virtio_queue_get_avail_size(vdev, = idx), 0, virtio_queue_get_avail_size(vdev, idx)); - vhost_memory_unmap(dev, vq->desc, virtio_queue_get_desc_size(vdev, idx= ), + vhost_memory_unmap(dev, &vq->desc, virtio_queue_get_desc_size(vdev, id= x), 0, virtio_queue_get_desc_size(vdev, idx)); return r; } --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464350; cv=none; d=zohomail.com; s=zohoarc; b=mJkS89Hc3EeivszX7kdkQmVowfK7M1QaOxnqWy1KdMSRZ2oYon+isPV2y+y13CG+AmL1WHgiGMsHQ7zkf4iugThw+pKZ3KvjzcXxLDJ5Vmt2Tw+p19gVsW56X7AJKyEHkUt5+gQ4sCg0qWG8xV33KH81/StzXZ12iZJbTFuOY1M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464350; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ciAHQiL8oLMziOSY6mFU0q/YMW1lcOKJcQakg7fvlSA=; b=nb4R95guEsJzbt6UTzrfQM1eUuJHMH+cxYag/dCg/XwtDgIgL2CDG/PlCacyk243Za4bpNB4lSnxX3nrmh+kKlGPFU2pI3rUgnC5RV7nfrYDtiIuSnU1TEiGs2qksLTvgwnJa9UPZs6zghSjcOtLGmIEuNErW0tUIb5QXUNkbVQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464350990241.17112201640157; Sun, 14 Jun 2026 12:12:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBP-00033q-0u; Sun, 14 Jun 2026 15:07:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBC-0002TI-MI for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:37 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBA-0001yH-2X for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:33 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-307-uMisvmjPNGebUdnPKZ5jvA-1; Sun, 14 Jun 2026 15:07:29 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490b5d2e394so17284065e9.3 for ; Sun, 14 Jun 2026 12:07:29 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220372ed0sm163993215e9.14.2026.06.14.12.07.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464050; 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: in-reply-to:in-reply-to:references:references; bh=ciAHQiL8oLMziOSY6mFU0q/YMW1lcOKJcQakg7fvlSA=; b=UWkyx0pBVmYS7kK00+py8HMHxgkrPzoJ1f0JBooXpQd7t7Xv7o0oGSqdu4+Et/v2rOXfAB 9ScmPazBcMWXVlzsCvF0tHoy8bnJRxGH3Y/9tfhr3DjAjra79HKksDDQuV7/DphzHYLsoC FXdxVAkd79xB1HDpI19lt8L9v+3yPqA= X-MC-Unique: uMisvmjPNGebUdnPKZ5jvA-1 X-Mimecast-MFC-AGG-ID: uMisvmjPNGebUdnPKZ5jvA_1781464048 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464048; x=1782068848; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=ciAHQiL8oLMziOSY6mFU0q/YMW1lcOKJcQakg7fvlSA=; b=mzEj+1YFssgiQh3MPE6YxsD5VwhVyvBf/AdItFlqSZyq5nz/hMovGjAl5HPazM+bsr iWq5EkkkakzGsDqCbCSTgTKPfHnp4nuhJpB+mm0QKCFABj6VHIB32IfKlqc1UHWhOJXc qHJOMvlhABgs3ubVoxGqmEkrAO8/T+ut9z4LkJNhiECHkdXtu+Om4SDteYTDayrRnBcB SGoFWK4Q9UbT1Zh/JgdFbqWCk04e52ik2yTy78USvYzPbnNgkD7zd+8unv+oSABGXK8N PdHtLb7TA3Q0AMSsXZO9aTsefUEmmVG921ldjgmafPLhs1xjbwXtnQxsSYV+tQ8aig8H 1zaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464048; x=1782068848; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ciAHQiL8oLMziOSY6mFU0q/YMW1lcOKJcQakg7fvlSA=; b=eIOHWQGHrJLZHbG6g9AdjlqHCXJ7vBGJw0my7/sCj4A9hOQXgy4t9Km+55jvmdnju1 N/cLIOKH0UTbLyt3U9gj2HNPHHUYuadS9bwT8Gzm4DRCeKaPUFQhwSL4QklCecr+bC9m lD3phS3yjjNDZPPf3a+XNLrCWprs6qp6N6dbLDHyQXM1IV4RnjuHEIvPBosw6yMg5R44 CupYyRXw+rMAfN3XIuJyIWazujwYF2yNi2cxKKcGe2jRxJjbf2E4dSA4YBb//0Lyp3Ib frpD6h3mzA8QatfQzd28IRKv/WI3nNTNoweFBog0x5c0Os2p/Z1kW5vnwK+6j/PZC240 omcg== X-Gm-Message-State: AOJu0Yw1W6JQk8iBK1KaxOV/W/KhPl1AhM6EqIukvKji1eoxHZICMnCU Y1qmS8dHMhPZcpzJCY7Ecjiu7+OtXsUWkJ79E65soePoQqcxSNTIR8hCttetzDaxHkWK6PvldBG yn4Gogj8E7luwUeyN1LF3P+Op1Gj2uVp1q6AAkaO6Dtqwtqmv9LtfiYoiNaknOXrTt5oqZtZNIl Lz5Fd5dP/AU24mhV9HS5WqUR25DKgmh3mVQw== X-Gm-Gg: Acq92OEhZsPt0i8UZyi2IAcQ3arYogo2ClG5EgGlGooZslzwoZCXDaJczWM9/Xir3If o7G0O9wuLhTb6LLeqeu4JDAUQQrzUkTkoU4qw8HA/uXH2w39I0OYgVF5B2MGXHyOslDOuM4KnQd IXh+4JCNhkEUAEr8ZQqFSmirVm9Agpvpjl4rDZf0jMxAPGgnGsoSXQGcbOYDQr9m+60fVK05a4l wzahchLWfF2UhD/g9XrImCnR+c6gBNKjLRJOu+dD2j6qNhnMziIf1O1CyWZvl202oqphLA1FyVg IcQXmGsTF4h7CGqpb3G+aI29VEmnfdR7o/JZQnwKCwYmIpSxaTGKjbHJE0vfP9SsAmfBWJuXSXc DFQrzE5iTih68xq7IlC9TjqdZp90NvePMi64Av0xd1f0= X-Received: by 2002:a05:600d:6452:20b0:490:bc46:1a58 with SMTP id 5b1f17b1804b1-490ec4fb6d6mr101566395e9.18.1781464048004; Sun, 14 Jun 2026 12:07:28 -0700 (PDT) X-Received: by 2002:a05:600d:6452:20b0:490:bc46:1a58 with SMTP id 5b1f17b1804b1-490ec4fb6d6mr101566065e9.18.1781464047404; Sun, 14 Jun 2026 12:07:27 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:24 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Daniil Tatianin , Raphael Norwitz , Lei Yang , Stefano Garzarella Subject: [PULL 038/106] vhost: simplify calls to vhost_memory_unmap() Message-ID: <060ef8cac1153e3c84ca3d43254c03de3c75b593.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464351645158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy No reason to calculate memory size again, as we have corresponding variable for each vring. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Daniil Tatianin Reviewed-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Tested-by: Lei Yang Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-13-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index b9b7a984e3..f43e563f0d 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1383,12 +1383,9 @@ int vhost_virtqueue_start(struct vhost_dev *dev, return 0; =20 fail: - vhost_memory_unmap(dev, &vq->used, virtio_queue_get_used_size(vdev, id= x), - 0, 0); - vhost_memory_unmap(dev, &vq->avail, virtio_queue_get_avail_size(vdev, = idx), - 0, 0); - vhost_memory_unmap(dev, &vq->desc, virtio_queue_get_desc_size(vdev, id= x), - 0, 0); + vhost_memory_unmap(dev, &vq->used, vq->used_size, 0, 0); + vhost_memory_unmap(dev, &vq->avail, vq->avail_size, 0, 0); + vhost_memory_unmap(dev, &vq->desc, vq->desc_size, 0, 0); return r; } =20 @@ -1435,12 +1432,9 @@ static int do_vhost_virtqueue_stop(struct vhost_dev = *dev, vhost_vq_index); } =20 - vhost_memory_unmap(dev, &vq->used, virtio_queue_get_used_size(vdev, id= x), - 1, virtio_queue_get_used_size(vdev, idx)); - vhost_memory_unmap(dev, &vq->avail, virtio_queue_get_avail_size(vdev, = idx), - 0, virtio_queue_get_avail_size(vdev, idx)); - vhost_memory_unmap(dev, &vq->desc, virtio_queue_get_desc_size(vdev, id= x), - 0, virtio_queue_get_desc_size(vdev, idx)); + vhost_memory_unmap(dev, &vq->used, vq->used_size, 1, vq->used_size); + vhost_memory_unmap(dev, &vq->avail, vq->avail_size, 0, vq->avail_size); + vhost_memory_unmap(dev, &vq->desc, vq->desc_size, 0, vq->desc_size); return r; } =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464613; cv=none; d=zohomail.com; s=zohoarc; b=I1eBfJW0xmI66SUt29rFRcT1AUUY8wRQo2FhiiaQ9RuyMdHAuljj/n9oTq1NRlQDb47n6uFrJjH6K5fTx5lwKf8M+JYo/t1oxy291CwkipolGZstrgDdNS2omeqpGvgTUyMUoDyen/Vx3pcp9+0QWMBsoKeOQvRok6cmCulRRJM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464613; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rwaEuPK7+O7yDymvQWRrZNfcvXvxTXlnEXU6uD1afn0=; b=DoaYtNgXsUwdklukkFs7NFlvzMiO/Hi1hzdjuWJ48BNREX8A88BKpIwojuTkrOM2xJBGQKtdCqw7TmKpnNYOLn+PNFksVQKYC5MGWr6p41nKaQNV5yPzOCGwlJjbbnDAx5PcOwG85C66CS0JbVL94Bv4Bi4iBot+m06xz/NRLQE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464613131143.63913022186898; Sun, 14 Jun 2026 12:16:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBL-0002fK-AC; Sun, 14 Jun 2026 15:07:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBH-0002Vj-IH for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:41 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBC-0001yc-GY for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:37 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-643-A8MO2NcmPpCQhm6uD-LUjw-1; Sun, 14 Jun 2026 15:07:31 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490c840efe6so31077805e9.1 for ; Sun, 14 Jun 2026 12:07:31 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490ea963cf8sm163404525e9.2.2026.06.14.12.07.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464053; 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: in-reply-to:in-reply-to:references:references; bh=rwaEuPK7+O7yDymvQWRrZNfcvXvxTXlnEXU6uD1afn0=; b=ZNMFVX2c099LWb0unnYQKiHPVqv/OQNqeFjot1vbSojtNw3q5gw16pe2yfRIOzKNtX/Nd0 NnbJTllEgd5KXrZVY5B1ZWS6bkzdIsMnGy9iWTtNKhDgqjZu1f5VU9x80c35ZMpsBnVFyD uvN2pfq2npjE82WKQL9v4GETMoUN6UI= X-MC-Unique: A8MO2NcmPpCQhm6uD-LUjw-1 X-Mimecast-MFC-AGG-ID: A8MO2NcmPpCQhm6uD-LUjw_1781464050 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464050; x=1782068850; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=rwaEuPK7+O7yDymvQWRrZNfcvXvxTXlnEXU6uD1afn0=; b=OtWDQm3aA5ucEGEeyf1j7kYN6qB4lsdxYGOPoUunPaM+HfEtSlWTz2yw6nN98k7uYs tYICtF2UDUrs1uuGxx9iRP8VpILzTu4EccjGNT9s5XQk4cMGSDIsi9DiQViWaBGW2MRI BkHh539z3ffKHegU0QN64kAJSZoMlIE5rm/8HSRvml/9Co9+FQ2RhQHAWk7lPH3QwcuN Xw+SDTEi0ivQ8yjl2SmKit04Bjgml98BrFgVd9JEeS271S1M9+i8aC1ew8SGBwlIsnmr YeTOYlr5VPGE505V2m/O2WiIunyBfIxH8bi7gyScn2urygbQsqOvn2ZIoDr8DDV1pUgp u50A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464050; x=1782068850; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rwaEuPK7+O7yDymvQWRrZNfcvXvxTXlnEXU6uD1afn0=; b=akcl5Y6DUvtd3y8elirdKGBAcRRCdY3GFpoK5vXDninTQTbtzydCkXD1hfSqcvWnaG Kb6ZNESuB/fML3SkZYVcdKCtT//9wXnuhaR1AvFLF3m++FkPDA7duqgKsVcHdAv1Df2F phTceNiOu1LZPz+T98XNJi5pkoeKg4OVCsrLgU1znfVgU1Yx27CHAuGyOuGPdlJlJtvw lYwtIhcCo48KDQwONUtohFWhbUw536A+vyaKG9VBNLBWHzBtEO7k0Zq3JjHvo4wsjMCo PGhTZofHJMOAFdIE+zRTtNVcdIrRPfTQQWB29A6ZR+Sftq++StP9A5WQZfVHhh+Hlfhz duGQ== X-Gm-Message-State: AOJu0Yz2f7lId7PMoJZpdqbgafPC4J7Vut08m31Z6Le2fPT6gePj2vTB Kke37A5zeGEUHYHJUOpY96cPnk5q0bn3KH1qyKWpimz7+9FT15HKy/bsIPywNIN9J22TWScPUwO SdkotOxDb8Wd7QzE6sFf5vsInxsdstgKsOCx/zF7F3lJNxCBY9AQ6rd6ekWRAj4UF0N2/w9sDTd suru+cSJH832L7KeXfTFshlX+yOIvFTMNfXg== X-Gm-Gg: Acq92OFFEqwHI/W8JJ4EQineKPtnj9I7CyGAtAua5fIXAp+vRWMCvro7a/4CQjnGd8L ucB0x4fCZ+hLjAG7LVJhEXnXwojBF4DIOZyKp50H3rQYYvyANxTGUrYjgIB/lMx/StpPCOjeU85 WdthIo9TE3awq9Zr+pdFquXg5G/i1Oj9/8v/wGdwiZQ7UwGNn9Bwu6KuH8WWFDvPO2xvA9JQGIc XZHMZO82R2Z5+4iXy3EoxjT2lAyz80qRqC5oIOKQSDEaij59aQsOz7UwHP2iS4sm6YFYwxuqJiM D2ACeK/7UC3D3mEDOo/zfMChXJhdplIwLEpu6JtSwCRcYI1MRnNl+ZY28Z2nlvN0ZUt9hXrbPjo 2MBYndhWtGiOcQ9CXks2I6br30WJHAmp9g3/opk0kdOs= X-Received: by 2002:a05:600c:8b2a:b0:490:4b89:5372 with SMTP id 5b1f17b1804b1-490ec50a338mr131341825e9.11.1781464050244; Sun, 14 Jun 2026 12:07:30 -0700 (PDT) X-Received: by 2002:a05:600c:8b2a:b0:490:4b89:5372 with SMTP id 5b1f17b1804b1-490ec50a338mr131341435e9.11.1781464049672; Sun, 14 Jun 2026 12:07:29 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:27 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Raphael Norwitz , Daniil Tatianin , Stefano Garzarella Subject: [PULL 039/106] vhost: move vrings mapping to the top of vhost_virtqueue_start() Message-ID: <60abdf60d505748a729b05de2864813f20f4b8f4.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464614597158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy This simplifies further refactoring and final introduction of vhost backend live migration. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Raphael Norwitz Reviewed-by: Daniil Tatianin Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-14-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index f43e563f0d..d5bafbcc4b 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1303,29 +1303,6 @@ int vhost_virtqueue_start(struct vhost_dev *dev, return 0; } =20 - vq->num =3D state.num =3D virtio_queue_get_num(vdev, idx); - r =3D dev->vhost_ops->vhost_set_vring_num(dev, &state); - if (r) { - VHOST_OPS_DEBUG(r, "vhost_set_vring_num failed"); - return r; - } - - state.num =3D virtio_queue_get_last_avail_idx(vdev, idx); - r =3D dev->vhost_ops->vhost_set_vring_base(dev, &state); - if (r) { - VHOST_OPS_DEBUG(r, "vhost_set_vring_base failed"); - return r; - } - - if (vhost_needs_vring_endian(vdev)) { - r =3D vhost_virtqueue_set_vring_endian_legacy(dev, - virtio_vdev_is_big_end= ian(vdev), - vhost_vq_index); - if (r) { - return r; - } - } - l =3D vq->desc_size; vq->desc =3D vhost_memory_map(dev, vq->desc_phys, l, false); if (!vq->desc) { @@ -1347,6 +1324,28 @@ int vhost_virtqueue_start(struct vhost_dev *dev, goto fail; } =20 + vq->num =3D state.num =3D virtio_queue_get_num(vdev, idx); + r =3D dev->vhost_ops->vhost_set_vring_num(dev, &state); + if (r) { + VHOST_OPS_DEBUG(r, "vhost_set_vring_num failed"); + goto fail; + } + + state.num =3D virtio_queue_get_last_avail_idx(vdev, idx); + r =3D dev->vhost_ops->vhost_set_vring_base(dev, &state); + if (r) { + VHOST_OPS_DEBUG(r, "vhost_set_vring_base failed"); + goto fail; + } + + if (vhost_needs_vring_endian(vdev)) { + r =3D vhost_virtqueue_set_vring_endian_legacy( + dev, virtio_vdev_is_big_endian(vdev), vhost_vq_index); + if (r) { + goto fail; + } + } + r =3D vhost_virtqueue_set_addr(dev, vq, vhost_vq_index, dev->log_enabl= ed); if (r < 0) { goto fail; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464326; cv=none; d=zohomail.com; s=zohoarc; b=T3IBvHW+a2D19OX6GcNcNDjf91sISJcLpPrSjoMHqG5s2sHJCiHlwwS05p3JfQGFH3lMTBkskc45cs9pFboFiseoMxjhB78L6UWCKSs6dTWzJJwRPqgouzxMlo6kWRWAHj6c2Vw0sn9EIsV0SKF5AX8W3XGnfJ/sdYy5BEvM+tQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464326; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mVuCWbga5LSxIklMA4eDSA2aVqOGc2j1p74x6rlVsK4=; b=AeuGVQx6Jx9dtBFmcgFzfeAA84STlJB83+mBj0oHBFtmiki3IeBOOtxwG64FNBYHaQmXmJjh6zBwcIznUsrdLag7sd9IXqunReQEVQxM2RsONn8z37ZUnOC9tdoJ1SZFlY77ji0SoihwmyG/Fj14wDUHsYbJTm3QzEGzdGgF5mk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464326620197.9693938764617; Sun, 14 Jun 2026 12:12:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBP-00035p-IN; Sun, 14 Jun 2026 15:07:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBH-0002Vi-IH for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:41 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBE-000206-IY for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:38 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-608--g8UuaOHNnO9uEd95FjYbQ-1; Sun, 14 Jun 2026 15:07:33 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490c840efe6so31077915e9.1 for ; Sun, 14 Jun 2026 12:07:33 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922031b21dsm176850365e9.6.2026.06.14.12.07.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464054; 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: in-reply-to:in-reply-to:references:references; bh=mVuCWbga5LSxIklMA4eDSA2aVqOGc2j1p74x6rlVsK4=; b=AaaD4YE+KfKiZ1YQhLLeBYb3S5TSo+2dXJxC04PlYye767/J8DGpzWrjUb14yphdwmVh9P Wok1IHssgIkA/vVwpUr1pVMltZl6pfpzYesDqdTGKPPqRyjb0WnTMeL1dPvfI1G5C7rbiG m8MVkbPJN2Rc3K4mAjaKy9VdHo8k2ac= X-MC-Unique: -g8UuaOHNnO9uEd95FjYbQ-1 X-Mimecast-MFC-AGG-ID: -g8UuaOHNnO9uEd95FjYbQ_1781464052 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464052; x=1782068852; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=mVuCWbga5LSxIklMA4eDSA2aVqOGc2j1p74x6rlVsK4=; b=UAJDEMDyEoCFv51MWai8ya+9guw+qlELQl0iIYe7sg7g5X893qQeg65QiZdQsHyutL xXNo2+/fCaohXNlTPvPHqhUPCZl8KLM1XPC4/mtvRJYNNMh/3gYpdt7BJgTXn7GYpyai DmD+baNQ0KacPvhYJp5TS3qRkH0/8iT0bxc2HQeoiNYytYnb0NuxqMpZFPl2lf6Rxy6m U8K3IEC+RZRsrSfIiuN0uoZovfgXbxRlR9tYPX327T99/IN/1VRC2H9PXb8id0bGxiFe fN60fMql/Bn4KIngSL1DTAuF8qAvyfqtn8YlAC72SN0sP0TNOHJv6j6N0f/UvuYXaUr3 j2Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464052; x=1782068852; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mVuCWbga5LSxIklMA4eDSA2aVqOGc2j1p74x6rlVsK4=; b=YCLatsgaAjSDxsaOT0GHSSEgTkIGmBNhyRl7J2ulf42ZTeyyV+ZRNdxqAckHLjoirK M2BbHSx8xGVBxAnArtLZLkztywfgrw2ET73U/Kh3XIwdJctd55yDkzbw9gHZqhkR4Nk3 hz7byzbA2U8vsWJUyK2ia5M1DevZQxxQo6Z0cIOPfrPGgIqnbwGyUEwoXSjXijKj7ax+ +W6Tpm5npIcmCjydgE6t7gXhXZTWBqf3d4vwa4tChjHaMALxULOuJqX6fQQ9Q+3aV1vR yGjlbKrcxCjnHKf+pC05suq8dpO7rSvGQiQCsHp7vF37SWtCO/fbEhGrsOOUxP/FYGDI hcaQ== X-Gm-Message-State: AOJu0Yz43vdOLplehyoC72COGohUlPk+QVxtQi+fxzfMNw7ETeN6tOKt 1Pp8Y2tY41FIj15Ou6v07Xrk4pfMFUyQ/pvswLdSGh1oc23aqEbcTOvuzdXYOSg+BIblit6glM5 tiaedniVXw7JBB3tT2qNVslsQhO6RTWkxSWXtjxES83njeY2zpbZaiVP8MxZUI6Yrm49JFgaPxS +D7aM0Hkl5QoTAmZE+3GFT1srxgDO3UXuflg== X-Gm-Gg: Acq92OFu5/3M7H7cF8cZaEa/KM+TXcjp3tMogd+Mgp1rV35tZUAyaJal4roeIooKE3+ YqVQOknIfoPhoBStfLy+6MIhL29iNZV9jaPRJ67t/DTPKco/4YhKQulNbSw762FwkxAEaB0dqMB 6wimEfFp5RsrfttB/+GdrEE3HbNq3ThUav93o3JNkkFEIaMyXVI5L3TTQlf60FvrWe7zsoOQoKk GSEyiChmciJqEoi68H8D7e5kmBvqEX3GOUZ1SY2JmCXeA4aHXQkvpJ5W2Da/RcyaBtiee4KixNc sUDQaXu2Iuv9h7xAL+oCbUUxvZSSqNwEf6AnAr+Jv6kQFekkVgfgltKV/IjwlRtXkpkUegyPfg6 WJdj6WE4WOtS4cwB1kpEOfEHCb9g9QzKR1/FQVLE5XYY= X-Received: by 2002:a05:600c:1912:b0:490:bbc1:c9be with SMTP id 5b1f17b1804b1-490ec30f6aamr110702605e9.0.1781464052266; Sun, 14 Jun 2026 12:07:32 -0700 (PDT) X-Received: by 2002:a05:600c:1912:b0:490:bbc1:c9be with SMTP id 5b1f17b1804b1-490ec30f6aamr110702395e9.0.1781464051768; Sun, 14 Jun 2026 12:07:31 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:29 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Raphael Norwitz , Stefano Garzarella Subject: [PULL 040/106] vhost: vhost_virtqueue_start(): drop extra local variables Message-ID: <4801e50cf1af17ffdd80b4b01b3f57581c9b91cc.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464327469158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy One letter named variables doesn't really help to read the code, and they simply duplicate structure fields. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-15-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index d5bafbcc4b..a3bf7e5a9b 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1277,7 +1277,6 @@ int vhost_virtqueue_start(struct vhost_dev *dev, BusState *qbus =3D BUS(qdev_get_parent_bus(DEVICE(vdev))); VirtioBusState *vbus =3D VIRTIO_BUS(qbus); VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(vbus); - hwaddr l; int r; int vhost_vq_index =3D dev->vhost_ops->vhost_get_vq_index(dev, idx); struct vhost_vring_file file =3D { @@ -1302,23 +1301,17 @@ int vhost_virtqueue_start(struct vhost_dev *dev, /* Queue might not be ready for start */ return 0; } - - l =3D vq->desc_size; - vq->desc =3D vhost_memory_map(dev, vq->desc_phys, l, false); + vq->desc =3D vhost_memory_map(dev, vq->desc_phys, vq->desc_size, false= ); if (!vq->desc) { r =3D -ENOMEM; goto fail; } - - l =3D vq->avail_size; - vq->avail =3D vhost_memory_map(dev, vq->avail_phys, l, false); + vq->avail =3D vhost_memory_map(dev, vq->avail_phys, vq->avail_size, fa= lse); if (!vq->avail) { r =3D -ENOMEM; goto fail; } - - l =3D vq->used_size; - vq->used =3D vhost_memory_map(dev, vq->used_phys, l, true); + vq->used =3D vhost_memory_map(dev, vq->used_phys, vq->used_size, true); if (!vq->used) { r =3D -ENOMEM; goto fail; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464610; cv=none; d=zohomail.com; s=zohoarc; b=H1rv8AUD1Lj6fKmlWRKewnV17pwlvbgGRLgO++f7kS2R29EvqWFfmy07Uf9RVgz66RM6lTz35VHozZWNowTxF4m7wz0vQcQh//z0T7nZQKxjFsq4Ze9xVTe7zn17sgsMZWSWSbmcNbGnswtPDbg0A4wodBCKq0yg3HHQ3AP3zpg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464610; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ppGnyWYFuQsvcdkmPeeWCQHykpufEIZUSAGd/P4lOOM=; b=k4VPIVhAwbpGIPA7fGokiWWqo654K+huE4+UCIXK2TGQFnpSMianx8y0QG0I10URnM6syYKFI3fboCo1F8LMBOy0GVoUAEsG/2r2uA9kG9aNO2N/fyTc2mtf2Jy+C43bxMupj2abRvTsoX+UESQ054oCL0n+tfR/Ox1gpOC21tI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464610715257.1664271044543; Sun, 14 Jun 2026 12:16:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBL-0002ez-9J; Sun, 14 Jun 2026 15:07:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBJ-0002Vv-0S for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:41 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBH-00021F-C8 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:40 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-79-pgu15-R0NN-xkUfs08_uyQ-1; Sun, 14 Jun 2026 15:07:36 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490eca575d6so13640305e9.3 for ; Sun, 14 Jun 2026 12:07:36 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490ea4b2e8esm170032745e9.0.2026.06.14.12.07.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464057; 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: in-reply-to:in-reply-to:references:references; bh=ppGnyWYFuQsvcdkmPeeWCQHykpufEIZUSAGd/P4lOOM=; b=TaP5NPlq2zc2n/jTqx8S76VcONk8ccm3WArDB6QWnu7f0O4bNSY4iVNBv+91z/hET/2igv gf1SFUIMLOlBjJHVVCKLkCpb2FeM28OgxinsGA6jkJd8UNAgJKQwAQDTlE4fTrstoJQ9Bb nNOIF/zfwF7DT/IWrKXtkto0yZVW5/c= X-MC-Unique: pgu15-R0NN-xkUfs08_uyQ-1 X-Mimecast-MFC-AGG-ID: pgu15-R0NN-xkUfs08_uyQ_1781464055 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464055; x=1782068855; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=ppGnyWYFuQsvcdkmPeeWCQHykpufEIZUSAGd/P4lOOM=; b=hANvvyUiftTmxf33as8crOJ1i+6fqA5aJx1KWoc97PBn3zaLR3EUs5D7MKT5+aTuFj fZGO95c+LupZ6P6G4cTie3QHyiSTWMQtheju0K0JB7Fl1xnwWLPUp13avVCmriTjMWpe hYZm2v+S+8EsTTyGLPEZEZcRmIBwnsuKGtJoA9xxN6hdw0HpUJDlyq8zJ3k9fnH5WG4b IZxNH8r+w4Ds3VWVLnWQeF3BFqh9MFrLTBmmvMDco65RRDIbN3RaLqYjVenI1jlspAjb Tj8qOi8yYMXe6rvRlNzbDkamphkO4w7LgTwMFjjpoMVKqaH25SFqw4dlwG2tJNQdcQCz B/cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464055; x=1782068855; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ppGnyWYFuQsvcdkmPeeWCQHykpufEIZUSAGd/P4lOOM=; b=tCTwefBbGXLL9FaEUXSOyxDOBCBFVwNlgh5sUqO26fNaCG47KKOPKxp0O0ASgI43D2 /mc8CMUy1R/SDIiEKYftJA+D6VE7CB01EhV7M4kultRgikrV/uQHjsrOKflptVF/48W2 by9KZMS8emgSogOYYuMZnvtg25fUciWxh5zcxlMfByrnrKYYZJry/kOLBIwsZ31/dnNp D1bhq7+uA+8DdYs9Fl1ZGaks0zr1J8BHyJL8yZYSRYB4QDffRqkagAM4NbG/Ey+/49fN sIGZXEhyzifiFnOmU4zwVP0jpEjCh+k54kVKaOygLpDXUmuaA0rZp5QcA2H1aZLsR6Vu fRoA== X-Gm-Message-State: AOJu0YyDmUqgObnN9DjG1/u1YJtWcKiER5c/H6KMRXr7HhZH4kYY/l+z rpl/XBV0P/XIIdWDsePeKTjAb+E2bYMx9jSnXmM5MX/AKcVKnyFKJiCYx4bxhVM674N1hTMWH0i n77qxEVXbczp6isVV1W1M9s+Vjxy7CjVdWwiDH5s9lvaLRmmUTj3gqWMgmL3cQp9Db+Ic1r5+za tERG6pPsL+gfokJ9pRSkCpTrIcpbx7rw5ugw== X-Gm-Gg: Acq92OGk6/7CtatKhZ00wvdeJy7OduxnRafad1NFTeIn3+kRdUhl9v579cJe5aBJN/e Xr3rb+LzmGbxGZBqs4Fh4e6EyLsKRYyRiXbf6bm+XYVokr6j0TkM5yqxaP+zgszEtuI5y5Cq9U8 0fC1gHfZQxdZS1KehXpJuUxWfYVD5MZdQRWBPKgXMh/TSUq0G+74UICyNLBscEsOcIerpYaVbqd mlsIo8jITAaXBhm584th0MFTZejcOTHsp3yX25zVQ6gVvCXcPwd+NvCxim2+t15GvTLHfD3D5Pz fByChUQFp0seAL+590YOOtmIuHy0S5Uxb1A+5lpRAn0xi6Yq0ewjvqRpP1Tb5Ml9K/L9cmH9uNg xF1a/TiTbYt9nfU3U2kiIS+aGk9pKXFfycY8nwU5tgaM= X-Received: by 2002:a05:600c:4685:b0:490:e190:3b50 with SMTP id 5b1f17b1804b1-490ec4d4f7cmr171822625e9.9.1781464054785; Sun, 14 Jun 2026 12:07:34 -0700 (PDT) X-Received: by 2002:a05:600c:4685:b0:490:e190:3b50 with SMTP id 5b1f17b1804b1-490ec4d4f7cmr171822215e9.9.1781464054221; Sun, 14 Jun 2026 12:07:34 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:32 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Raphael Norwitz , Stefano Garzarella Subject: [PULL 041/106] vhost: final refactoring of vhost vrings map/unmap Message-ID: <4e61c89262aa7fad36df39daf5d7ab759079bd9a.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464612803158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Introduce helper functions vhost_vrings_map() and vhost_vrings_unmap() and use them. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-16-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 89 +++++++++++++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 34 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index a3bf7e5a9b..c71b18cfc8 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -489,6 +489,56 @@ static void vhost_memory_unmap(struct vhost_dev *dev, = void **buffer, *buffer =3D NULL; } =20 +static void vhost_vrings_unmap(struct vhost_dev *dev, + struct vhost_virtqueue *vq, bool touched) +{ + vhost_memory_unmap(dev, &vq->used, vq->used_size, touched, + touched ? vq->used_size : 0); + vhost_memory_unmap(dev, &vq->avail, vq->avail_size, 0, + touched ? vq->avail_size : 0); + vhost_memory_unmap(dev, &vq->desc, vq->desc_size, 0, + touched ? vq->desc_size : 0); +} + +static int vhost_vrings_map(struct vhost_dev *dev, + struct VirtIODevice *vdev, + struct vhost_virtqueue *vq, + unsigned idx) +{ + vq->desc_size =3D virtio_queue_get_desc_size(vdev, idx); + vq->desc_phys =3D virtio_queue_get_desc_addr(vdev, idx); + vq->desc =3D NULL; + vq->avail_size =3D virtio_queue_get_avail_size(vdev, idx); + vq->avail_phys =3D virtio_queue_get_avail_addr(vdev, idx); + vq->avail =3D NULL; + vq->used_size =3D virtio_queue_get_used_size(vdev, idx); + vq->used_phys =3D virtio_queue_get_used_addr(vdev, idx); + vq->used =3D NULL; + + if (vq->desc_phys =3D=3D 0) { + /* Queue might not be ready for start */ + return 0; + } + vq->desc =3D vhost_memory_map(dev, vq->desc_phys, vq->desc_size, false= ); + if (!vq->desc) { + goto fail; + } + vq->avail =3D vhost_memory_map(dev, vq->avail_phys, vq->avail_size, fa= lse); + if (!vq->avail) { + goto fail; + } + vq->used =3D vhost_memory_map(dev, vq->used_phys, vq->used_size, true); + if (!vq->used) { + goto fail; + } + + return 1; + +fail: + vhost_vrings_unmap(dev, vq, false); + return -ENOMEM; +} + static int vhost_verify_ring_part_mapping(void *ring_hva, uint64_t ring_gpa, uint64_t ring_size, @@ -1287,34 +1337,9 @@ int vhost_virtqueue_start(struct vhost_dev *dev, }; struct VirtQueue *vvq =3D virtio_get_queue(vdev, idx); =20 - vq->desc_size =3D virtio_queue_get_desc_size(vdev, idx); - vq->desc_phys =3D virtio_queue_get_desc_addr(vdev, idx); - vq->desc =3D NULL; - vq->avail_size =3D virtio_queue_get_avail_size(vdev, idx); - vq->avail_phys =3D virtio_queue_get_avail_addr(vdev, idx); - vq->avail =3D NULL; - vq->used_size =3D virtio_queue_get_used_size(vdev, idx); - vq->used_phys =3D virtio_queue_get_used_addr(vdev, idx); - vq->used =3D NULL; - - if (vq->desc_phys =3D=3D 0) { - /* Queue might not be ready for start */ - return 0; - } - vq->desc =3D vhost_memory_map(dev, vq->desc_phys, vq->desc_size, false= ); - if (!vq->desc) { - r =3D -ENOMEM; - goto fail; - } - vq->avail =3D vhost_memory_map(dev, vq->avail_phys, vq->avail_size, fa= lse); - if (!vq->avail) { - r =3D -ENOMEM; - goto fail; - } - vq->used =3D vhost_memory_map(dev, vq->used_phys, vq->used_size, true); - if (!vq->used) { - r =3D -ENOMEM; - goto fail; + r =3D vhost_vrings_map(dev, vdev, vq, idx); + if (r <=3D 0) { + return r; } =20 vq->num =3D state.num =3D virtio_queue_get_num(vdev, idx); @@ -1375,9 +1400,7 @@ int vhost_virtqueue_start(struct vhost_dev *dev, return 0; =20 fail: - vhost_memory_unmap(dev, &vq->used, vq->used_size, 0, 0); - vhost_memory_unmap(dev, &vq->avail, vq->avail_size, 0, 0); - vhost_memory_unmap(dev, &vq->desc, vq->desc_size, 0, 0); + vhost_vrings_unmap(dev, vq, false); return r; } =20 @@ -1424,9 +1447,7 @@ static int do_vhost_virtqueue_stop(struct vhost_dev *= dev, vhost_vq_index); } =20 - vhost_memory_unmap(dev, &vq->used, vq->used_size, 1, vq->used_size); - vhost_memory_unmap(dev, &vq->avail, vq->avail_size, 0, vq->avail_size); - vhost_memory_unmap(dev, &vq->desc, vq->desc_size, 0, vq->desc_size); + vhost_vrings_unmap(dev, vq, true); return r; } =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464330; cv=none; d=zohomail.com; s=zohoarc; b=bb2nS22f/N9C9eY18PzvTHNH8FdMH1JxUZRX9M9STrsp4ys68N/HoBma1Nx88/XRgHFBHDOIL09rwUMNs8RjFsYsNoYuJQ77VDPZ07evjIb+y4LUY+x0Mv30R6oBYru0s529xnFckfIr+RgsAJZgUxjO3LASt2DFw/dZRoBQ9HA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464330; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Wven1IZ1pJBmkOs/LOXOpmRVZifqPAgbVO1O49C6M1A=; b=YNHATTLFrYnqgffpp+NrbMzmulpaljCNnOCudP0zdZHaN7A5iAXaG6Ic9bCKDoKrzbw0TXttEMKuEjni1Q1zZQV0CdRV+a6icam6Yien6b8H6fnRXrfWGIFJcEddTQXVk5yLDoJ7KdLpQzc4HngBtWLhe6JOr0BtY/v1qdHKCPU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464330526355.01262689847954; Sun, 14 Jun 2026 12:12:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBN-0002vK-G2; Sun, 14 Jun 2026 15:07:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBM-0002nO-Go for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBK-00021u-M5 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:44 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-180-YFnj7G9cMqeAfka6dL9wxQ-1; Sun, 14 Jun 2026 15:07:40 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490b93debc8so25301895e9.1 for ; Sun, 14 Jun 2026 12:07:39 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492203d2449sm168720315e9.14.2026.06.14.12.07.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464061; 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: in-reply-to:in-reply-to:references:references; bh=Wven1IZ1pJBmkOs/LOXOpmRVZifqPAgbVO1O49C6M1A=; b=AMB+Hf68SvWsoDq/HC6jX+ZbwftSASKdmnGZ0s044TbXjIXmcptCOpDZI8AEqp1OchfE5P Ldb0SwdiuWQLUOF6Mw6S2DfF2uVdt16R2AT/AUIBygZkjdJOXNudsZeNc7YZ+jWluTd/Z6 3dPXGay1ODMANp1Pvg1A0/b7vshRILI= X-MC-Unique: YFnj7G9cMqeAfka6dL9wxQ-1 X-Mimecast-MFC-AGG-ID: YFnj7G9cMqeAfka6dL9wxQ_1781464059 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464059; x=1782068859; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=Wven1IZ1pJBmkOs/LOXOpmRVZifqPAgbVO1O49C6M1A=; b=ZtZAN1Z1qLx9WoixIpmVlMfU0bz2OYTb8TdYAWGE3WYvh3JKLN7gmAt6PHebyJay/2 yf+Hmd0Mhkcv5aw/7v1QrV89wCGE2XZhk8LUeYx41pInABxfvCPIBwolE2kCiBVz5DT9 s6zETgiwtCyhy50QlBdjzXZBRcOySi04j05DJkacTjA2BMxFGohM8FubNEMKNgcVUGKz ZGNXZ/PixJI6vkoC/0zUNkg3dMWLdO3s68xSxSZjhkli/Vn0GV7SbH0V18S7wyzDGrmg lwPX2K2a6D2Fb3IEWuqpyrVumUjPasC7LDe4Ro1GLg653W9BmfQfts411SC9cT7/xlXF NPaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464059; x=1782068859; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Wven1IZ1pJBmkOs/LOXOpmRVZifqPAgbVO1O49C6M1A=; b=l36nWg0QcSsv9vy01f+ngJhc69F+vPlpnrgpnBdPhp3S/O+we+oRP+N4YXWw8PSkvM cYpL6fQ9wXpCvByWMwcFHMe1wVQ5pT5DQuojE4VG3I6OG39q6aJslw1WWUg5lmvmDXPk Qk39iPNOf8q8HK0hsa6VaITPsKHcQq1jgIcU/VnaFwQ9sQZY9WSfbFcJZlClX0kd7D4B +GnGE4+T8QW4ILTmfmh0fKupA1jcDEoYWwwIO2aTeN+L4+LFy9d0UHba/BBEsZrQvOiq DWrhN35mcNWHTgaMf0p+iqVMUiAHM2p4IQZv+TMvKwTwYeymbrpWVydxqvCGozSY8qX4 QewQ== X-Gm-Message-State: AOJu0YzC1D34XoyG6ip+i+KeDDinyaZN0TkLWh+2sWAWQo+idZlM2bZe 2uYq/biz7U58h3oiz3pUGiXHCyetj+HSRUPfsEA3EdpvDCE1cxARllJPlfCNe6alccYCCVIV/jc lz2hlGkxLA0/lKWdGfDxTJPt/qHTy6qbxEHZi44I0wZpX9SAPm/I3/SThrCWnUQ4/FG5jPc0rls y3SlRt3zbvE9S+W4cMVwJ2DzECNZQHa0vGFQ== X-Gm-Gg: Acq92OH1v3oEooYSBdTn/52DcZECy8IydoCTkVCVfhdkuWwyAGZBTYUGTj3QAP7/Jii 5SWo4cEQBvLeNqEjJWjrck4mGB0El+02100lJ4dHFGpvwrJUQOXNRHtvedMxH2GEFr+Pe2hyeAT I2WnORpuBoitbbz67xid1neEF1t6IXM+ac2Dv7MZG8YcUW7o7F8KeFRQeCeZpunkHnVSCQlI2Ln ezycvlEklgmvZRScgvq1GZcj+1nh/i/8kdWfdeMKWmOVB6a2J/lBlwoH9GrLggsQGkoKeWfuFmf ZEovEZQ9mAnkgSUG9Qagv/l2gmL6/dFgnMdsFmbzr9E85f2yZkQkLD0gNIEW+0EToA0MwpUPNdF h2NWFZGgGyOQfnWIqKYfQJ5lv6qN2ngaBjwyfRNi/TV4= X-Received: by 2002:a05:600c:1d99:b0:490:e5c1:b8bf with SMTP id 5b1f17b1804b1-49220061e5bmr92733675e9.13.1781464058758; Sun, 14 Jun 2026 12:07:38 -0700 (PDT) X-Received: by 2002:a05:600c:1d99:b0:490:e5c1:b8bf with SMTP id 5b1f17b1804b1-49220061e5bmr92733305e9.13.1781464058161; Sun, 14 Jun 2026 12:07:38 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:34 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Raphael Norwitz , Daniil Tatianin , Lei Yang , Stefano Garzarella Subject: [PULL 042/106] vhost: simplify vhost_dev_init() error-path Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464331515158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy No reason to rollback setting up busyloop timeout on failure. We don't do such rollback for other things we setup in backend. Also, look at vhost_net_init() in hw/net/vhost_net.c: we may fail after successfully called vhost_dev_init(), and in this case we'll just call vhost_dev_cleanup(), which doesn't rollback busyloop timeout. So, let's keep it simple. Signed-off-by: Vladimir Sementsov-Ogievskiy Acked-by: Raphael Norwitz Reviewed-by: Daniil Tatianin Reviewed-by: Michael S. Tsirkin Tested-by: Lei Yang Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-17-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index c71b18cfc8..7f370f393e 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1624,7 +1624,7 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaq= ue, busyloop_timeout); if (r < 0) { error_setg_errno(errp, -r, "Failed to set busyloop timeout= "); - goto fail_busyloop; + goto fail; } } } @@ -1664,7 +1664,7 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaq= ue, if (hdev->migration_blocker !=3D NULL) { r =3D migrate_add_blocker_normal(&hdev->migration_blocker, errp); if (r < 0) { - goto fail_busyloop; + goto fail; } } =20 @@ -1696,17 +1696,11 @@ int vhost_dev_init(struct vhost_dev *hdev, void *op= aque, " than current number of used (%d) and reserved (%d)" " memory slots for memory devices.", limit, used, reser= ved); r =3D -EINVAL; - goto fail_busyloop; + goto fail; } =20 return 0; =20 -fail_busyloop: - if (busyloop_timeout) { - while (--i >=3D 0) { - vhost_virtqueue_set_busyloop_timeout(hdev, hdev->vq_index + i,= 0); - } - } fail: hdev->nvqs =3D n_initialized_vqs; vhost_dev_cleanup(hdev); --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464205; cv=none; d=zohomail.com; s=zohoarc; b=aoTJRBBLlXq6lA+91hDqbu7qCEX8ARNmmISSRzHvdfS4lf0YDdmebuOZWIl1/kOmlOfWjNsAsXD6DOwaF5hXMkNpC5XjGnrxXI1Ax4O0x7WoLyVspkQ70PVdTg1fMaJb9tmZX+4m6DwENhBZa0PgaVXBOxaodZl2apL7pKuYrpo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464205; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=N+FoHQ4zhVNsmAgFquV7vxNfd5ZYY6tnJT/LNwUhRdU=; b=KEWajjHR9IPSheZna5yxlvRdgVK/oIyszRNJqccARWgPQ3vJcIz5lQ3BAJf9l4DTsyQ2//D5bp/p57uSH7GyrUo8ziJ3hSdyTNHfETy54gpIk/ACXw+Zx0V+7e2rfTn8bhVFMc+qJSgmx+Fh/SkeknvXggJKZfjL5dUrsgX022M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464205495713.8627718256758; Sun, 14 Jun 2026 12:10:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBQ-0003Av-WD; Sun, 14 Jun 2026 15:07:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBP-00035n-FU for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBN-000227-SR for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:47 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-284-5_ebVQgRMFGQyj6RS5N6og-1; Sun, 14 Jun 2026 15:07:42 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490a767c7dcso16786515e9.2 for ; Sun, 14 Jun 2026 12:07:42 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492202e5d61sm170264725e9.1.2026.06.14.12.07.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464063; 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: in-reply-to:in-reply-to:references:references; bh=N+FoHQ4zhVNsmAgFquV7vxNfd5ZYY6tnJT/LNwUhRdU=; b=MjbOmdHxtzDql8ogZ+Pvx56mOTJWkIXoekNstcdQ/ghuU+30oQSbjA4x0CFwSaRE322E+V KYJqph87huaqPhrZKrwbplfFh71DxUBQzXSh+Ljqf05SQgexgkN0ZGUbT8th/tqVCjZgTj c7+k9j2PDmMyLO7mxdyEiN/Xcbtu46g= X-MC-Unique: 5_ebVQgRMFGQyj6RS5N6og-1 X-Mimecast-MFC-AGG-ID: 5_ebVQgRMFGQyj6RS5N6og_1781464061 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464061; x=1782068861; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=N+FoHQ4zhVNsmAgFquV7vxNfd5ZYY6tnJT/LNwUhRdU=; b=plRQqSgaMJ5BXv0J19CHoXchd6MUFE53xDpt0b9QwsEx8wcFjrAITUkT+WW8oDtuQT ZK7M4MxCBjLulPqXgzuoAqNcCdwg9Q2Z1EzpPxRth6jN8dx3Bdw51/S98ytiPjChFmR2 b4ewylr1W6OrjTkoebXPDw9N76mUq7u+RZ3mXtufw3l3WRdf58tofkxdMeCs4sVD/6SO m/XLBpbxxGlSAieDihJXrmJf+LnbMMDMx+tLfDULfPSLsaa9bXf9B6vU+S1oy30M1QsU 5D9fyMWjmAGnDMvAQHpr2w4zllnMrAWtNZfEJtmhArgUu9zK/MPSOtZWvB3rRgF60Gsg WWSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464061; x=1782068861; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=N+FoHQ4zhVNsmAgFquV7vxNfd5ZYY6tnJT/LNwUhRdU=; b=H4O92UeDkH10ykT2HS8IrEC8gKdBU2O94JvhtOqd/NFfpajDS1Qhu0uS20St6Qrzie 2GDwjcAn3t5Y9jn240QN/Vo/IPI/KpJt6TANssgBhaXdaZ4cUrmom9w+AlPFKbCiOJpH p/RshrzmM2s+2xGM7N7JnbF+FYPfHqoxn1h8FixsmOLFZDwE/6iWEu83h3vpXGYtXTqS 2T5WDi9zwcNySdQyto4DSSwfi176vOGns9gbkkXbDeSsG3fRcaT9+6uwv90iG1Rc893I 6AuFv2U7caXl2pra7AIiut5qZfcvoDeWQ1Ku1mDDkfQU5ONi8GRWW0Ewm2fWeMFmbTZD 5Bkw== X-Gm-Message-State: AOJu0YwMPDJQ/BWpXsQofjyd3IBZmXhU1R4UXoZRzJS/GWO76+06LV2l Wf47ECtAaLNb9LRhIKQaTzNQZD0fMmlDF3HFMwIOc4uWd7rO14GffDpzO9oAFOotbMQPqhkRQ5V R6FstIjB3v5EpBbTOLgVW4QSToJODGPb55YyYqrNouZmKY7sub37UtxIs40Jq4+aNMseOdP4D2o 07HLKNll64XE+xK84l5UaOpDXJDSF/kUPXKQ== X-Gm-Gg: Acq92OFPRzKCs6EjzDeBkwklum6sQirnkuDEMkNH5PaA3v2xOH51G5y7rQ2xz9eTylc HrsJRzVYuYV/e2rrUsw7BCo3pUeYB5lPjmydgP6yoEXwRfYGXCgey3KUKLeNHObbm64y/S+I3ni ir1E1NAPr5OuYCUcTvGBmVYM2VdD+WXFRiHC0cfrBgOTNjeaX1FrKCAHMvaf51ZF9+UORFW5YNI GQIphss6HEGnFPxRzdkh/noLrCyGriOfSh4i51NLZQjAcsTTZkS45vfDqohbHHYwElQhH67TX4C 2eBK8e8qCEIGzNwUS5IPdobV55VxJiye3FIMb7qeN+YPX+QGbeKAx1Puacd394zmgWPCGobJk/U R8AZF+9bCbSURhEvKVTCjRPFWc0Th1eAbUQJ5ZUE4V24= X-Received: by 2002:a05:600c:3650:b0:490:d354:bd0a with SMTP id 5b1f17b1804b1-49220143bd1mr64997955e9.31.1781464061069; Sun, 14 Jun 2026 12:07:41 -0700 (PDT) X-Received: by 2002:a05:600c:3650:b0:490:d354:bd0a with SMTP id 5b1f17b1804b1-49220143bd1mr64997745e9.31.1781464060653; Sun, 14 Jun 2026 12:07:40 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:38 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Raphael Norwitz , Daniil Tatianin , Lei Yang , Stefano Garzarella Subject: [PULL 043/106] vhost: move busyloop timeout initialization to vhost_virtqueue_init() Message-ID: <2c943949d76b9b273de1e4b0f42d3671b8240a37.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464207035158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Let's all per-virtqueue initializations be in one place. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Raphael Norwitz Reviewed-by: Daniil Tatianin Reviewed-by: Michael S. Tsirkin Tested-by: Lei Yang Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-18-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 7f370f393e..55ce7ae977 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1496,7 +1496,8 @@ static void vhost_virtqueue_error_notifier(EventNotif= ier *n) } =20 static int vhost_virtqueue_init(struct vhost_dev *dev, - struct vhost_virtqueue *vq, int n) + struct vhost_virtqueue *vq, int n, + bool busyloop_timeout) { int vhost_vq_index =3D dev->vhost_ops->vhost_get_vq_index(dev, n); struct vhost_vring_file file =3D { @@ -1533,6 +1534,14 @@ static int vhost_virtqueue_init(struct vhost_dev *de= v, vhost_virtqueue_error_notifier); } =20 + if (busyloop_timeout) { + r =3D vhost_virtqueue_set_busyloop_timeout(dev, n, busyloop_timeou= t); + if (r < 0) { + VHOST_OPS_DEBUG(r, "Failed to set busyloop timeout"); + goto fail_err; + } + } + return 0; =20 fail_err: @@ -1611,24 +1620,14 @@ int vhost_dev_init(struct vhost_dev *hdev, void *op= aque, } =20 for (i =3D 0; i < hdev->nvqs; ++i, ++n_initialized_vqs) { - r =3D vhost_virtqueue_init(hdev, hdev->vqs + i, hdev->vq_index + i= ); + r =3D vhost_virtqueue_init(hdev, hdev->vqs + i, hdev->vq_index + i, + busyloop_timeout); if (r < 0) { error_setg_errno(errp, -r, "Failed to initialize virtqueue %d"= , i); goto fail; } } =20 - if (busyloop_timeout) { - for (i =3D 0; i < hdev->nvqs; ++i) { - r =3D vhost_virtqueue_set_busyloop_timeout(hdev, hdev->vq_inde= x + i, - busyloop_timeout); - if (r < 0) { - error_setg_errno(errp, -r, "Failed to set busyloop timeout= "); - goto fail; - } - } - } - virtio_features_copy(hdev->_features_ex, features); =20 hdev->memory_listener =3D (MemoryListener) { --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464564; cv=none; d=zohomail.com; s=zohoarc; b=XD1lA1WjJt+8DoA80f0InsQN6XzrXnjn0P8v6e+pAPayk53rSFpT/bKnFxrZkCjbBjQB88joVZYHkj/+i1NEkO61TrNzGHw54/OrNhPw6898x09MqzeTaj9hrUFcIItG4B8WpcW/J85K2lcCcC682NL9IZXdARL5LpRuAzl+ahQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464564; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=42Wx/LEWh6GcKpP6Zwkqps4q+eKptoyc2d1gA9UxQqU=; b=BXbMk22h8rSwXa8PcXIca0vvvQmETWV5pP36jLbvILEfT8QOGjCGXMKSmlGeO5mqPvs41koa3YX60MK2rqYUjarbbYxdfZVlXBH+kjJFgqcOJKTFqEE8Jd6xtXXjOwCEw3d5RJON6vk0Xsng1A4WvdaVvDT7ZOIj2lDiUnRBP98= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464564557563.1936480520026; Sun, 14 Jun 2026 12:16:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBR-0003BD-7K; Sun, 14 Jun 2026 15:07:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBQ-00038u-4b for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:48 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBO-00022T-KW for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:47 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-318-_IgE74-iMIe7aToCLT2I-Q-1; Sun, 14 Jun 2026 15:07:44 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-45ef3aeeb41so1608473f8f.1 for ; Sun, 14 Jun 2026 12:07:44 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f26f23fsm26725273f8f.9.2026.06.14.12.07.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464066; 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: in-reply-to:in-reply-to:references:references; bh=42Wx/LEWh6GcKpP6Zwkqps4q+eKptoyc2d1gA9UxQqU=; b=Fp5tqUgKtbIxR1HmvDUgl6r5mYYkD4MQfUUwHTVnQxKwpNEFFzg5m+xnHyfd+Tqej2WUL3 C+++LGTOMpGWiXCBbDv5sXw5Ee/y3YEcwFyBULJ5oZ/ix2+c4rgc87EUShaRVKE8wfWmUu jh0QHgN845nr4LcEQlbX7/1K8nzZhIk= X-MC-Unique: _IgE74-iMIe7aToCLT2I-Q-1 X-Mimecast-MFC-AGG-ID: _IgE74-iMIe7aToCLT2I-Q_1781464063 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464063; x=1782068863; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=42Wx/LEWh6GcKpP6Zwkqps4q+eKptoyc2d1gA9UxQqU=; b=fRgKKSoqXH84n7/HcBhVVbxWcE6VPhJh41CTHLvvPVO5hTZ2If8QkFSlvXl3cNUtO4 x6kAIdEkKmK5+aYShZGtL+pZG5VK/lEjhiqgG6fbNqcnEhpXHtSiOpEoF5IZlYUrIa84 HoUBjcrdbLKlDEb0UKIUJlD5EK3M5bbs3OpBOE1UZ6ZgIlLCzP7h3UYdEMPudjVeOV5i 6yiufV6ULlQlauRfRFwLuqC6U2IxeYYCg050jn/eWjXS3Zx2IBXNt+dwtFmMU0gU6FyS lnhPDSy1R8xlDdsvgeBzHXpUG9iY9cW/hmPKJQrHhQdNFu/iwR/lcdg0q/clI/kZlr9Z wE+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464063; x=1782068863; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=42Wx/LEWh6GcKpP6Zwkqps4q+eKptoyc2d1gA9UxQqU=; b=Q7vZLR6N4OdaUEGXyyj2J2/UP3n2ENtJgjFi8EO+M7QDfvdboZfA0d8ne2f8dksIDT X9VXn9HJZgfhQ5EM/gOtQQ5YklZ7bo7VKFKwn7rfmG1ivTlQQZChqjQgMOJPFvHanP+A +WaAPAspovLwrA5W2L2nxumvpHvSQMeKrKXViYRljKOEEUyENbCRIJd9naERXG9YY5QY vK2OvMYb/znCr0w6ABCffbSkiaviIu3KVkYLInQIcU+XCa3OrTAPzwzmMi8zoXYgwR9a z4x+szEfCY4ffi8ekDKfNQwtFgKV0Gzi3XGtwFLU+yXxwSfy2qQ9vJxWEssdexV1V43W ZdgA== X-Gm-Message-State: AOJu0YyqaIk7S/Nd+9OYlz2+2o2F9A6YiQjg9caT11O+myqLkXGYe3qm /LftLNP1HqUVMi292YxHUznqdzFpYWNn8UdDbm/LXlzPqD2XcJSXiG5JUdlODYu6W6NzOZWT5A8 euDIjXFyWV+Qv+I+S1GBjreZ3YF9B/YmY4yPCTtg9gvZjcTaJi5d/kDiHjs3Rt7MNvCVW/rlbzi DfgX3UvdeLDJ2+83XSTq0Yh03qyiWEDhy6eQ== X-Gm-Gg: Acq92OH/JHwiLgQvYssUwMWTV9bFUaiO+XV2eLIObp9gr9koRP5cyrB2skXngdFN4g+ TVlwhvOVhypC7WMZ7K0/lH3KiFXR/z3buq6ja8qJsF3bDTkPTDvO/YE8D+I7i/An4SiJ2pu8o4n O7tpFOcIG/Xv/+8t+R7H07SF037GnDmK/6ZrpdlRpfIWfr2Kzts6gfLsO/+S/k6za5K5YN0UWXj vileTZP1NE5/ZpkTSB2eMk1vm80Ahmh6yavm/FihQI+AWqt+PJXjrxVv2g5yRIxZa2KngL6EELN /wNWbZ31B2mztZDG3I+x/kNeeyMmHncsDYBGFC5pIbGO+iW0QjaQBQ5qQBq2/C8FS9L08vOAaA4 EYrqS9qRBtfrmsAJiwWVRlH3GMX/yzLLpIAbvCqys8hM= X-Received: by 2002:a7b:c8d9:0:b0:490:b3e7:4614 with SMTP id 5b1f17b1804b1-490ec5020dbmr98352935e9.25.1781464063406; Sun, 14 Jun 2026 12:07:43 -0700 (PDT) X-Received: by 2002:a7b:c8d9:0:b0:490:b3e7:4614 with SMTP id 5b1f17b1804b1-490ec5020dbmr98352695e9.25.1781464062869; Sun, 14 Jun 2026 12:07:42 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:40 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Daniil Tatianin , Raphael Norwitz , Stefano Garzarella Subject: [PULL 044/106] vhost: vhost_dev_init(): simplify features initialization Message-ID: <3aedf875edd5fd2d595b4f1755a8ef2830963612.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464566565158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Drop extra variable and extra function parameter passing, initialize dev._features directly. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Daniil Tatianin Reviewed-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-19-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 55ce7ae977..93c6a5f5e9 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1560,18 +1560,17 @@ static void vhost_virtqueue_cleanup(struct vhost_vi= rtqueue *vq) } } =20 -static int vhost_dev_get_features(struct vhost_dev *hdev, - uint64_t *features) +static int vhost_dev_init_features(struct vhost_dev *hdev) { uint64_t features64; int r; =20 if (hdev->vhost_ops->vhost_get_features_ex) { - return hdev->vhost_ops->vhost_get_features_ex(hdev, features); + return hdev->vhost_ops->vhost_get_features_ex(hdev, hdev->_feature= s_ex); } =20 r =3D hdev->vhost_ops->vhost_get_features(hdev, &features64); - virtio_features_from_u64(features, features64); + virtio_features_from_u64(hdev->_features_ex, features64); return r; } =20 @@ -1579,7 +1578,6 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaq= ue, VhostBackendType backend_type, uint32_t busyloop_timeou= t, Error **errp) { - uint64_t features[VIRTIO_FEATURES_NU64S]; unsigned int used, reserved, limit; int i, r, n_initialized_vqs =3D 0; =20 @@ -1600,9 +1598,9 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaq= ue, goto fail; } =20 - r =3D vhost_dev_get_features(hdev, features); + r =3D vhost_dev_init_features(hdev); if (r < 0) { - error_setg_errno(errp, -r, "vhost_get_features failed"); + error_setg_errno(errp, -r, "vhost_init_features failed"); goto fail; } =20 @@ -1628,8 +1626,6 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaq= ue, } } =20 - virtio_features_copy(hdev->_features_ex, features); - hdev->memory_listener =3D (MemoryListener) { .name =3D "vhost", .begin =3D vhost_begin, --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464558; cv=none; d=zohomail.com; s=zohoarc; b=KMEh0Kb/LGgG8NdpQxnP/2Vy/NI1hcDdFNDAWDZZsTz6BH3p8g2ZeUXKpTxyilUrZ/fbg8HW2AVwssdW1gRLlbXM3SFEpF49/Y/acY07z7tHGN8enj46jLE/SAnUbdqaxluP4gowrShYfDgqVz68z3JONFTKCGhUz2dCBr0m2uw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464558; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TMJ+Jpgo2ce7J8yDlqHmRVXp1DveBeVU3H/kU+6+esk=; b=hi8s0t/lSP7k/GFQKjCp9N20lOKOn39NN9fIgQ/r4SZEExop5/1KU26n/4F2zIwlvMa19dqK+UX90QeUPT8PGF5sBWTC0RpcJCVBa2xiajODnvn194pIuyk0jRra40fsD6ij5YzxNK6BzFihhc+L4AZhZWMh7aVm/wZKmvbjqe8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146455898749.008015716275054; Sun, 14 Jun 2026 12:15:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBT-0003H4-Md; Sun, 14 Jun 2026 15:07:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBS-0003DZ-4A for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:50 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBQ-00022i-Jt for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:49 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-77-p-NfuPUoOl-xVVwNk9WCBw-1; Sun, 14 Jun 2026 15:07:46 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-45eef10d5ebso1357939f8f.0 for ; Sun, 14 Jun 2026 12:07:46 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f26393asm28062983f8f.5.2026.06.14.12.07.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464067; 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=TMJ+Jpgo2ce7J8yDlqHmRVXp1DveBeVU3H/kU+6+esk=; b=eEROd/n5SMxpwtpnQ5TH0Q4a1/D0j73zuig1q5/8MVOLevvCyudBswOwPDD+pySYBQyVD2 ARZTTKNgqkLSl7uvP9l6A4oICVPmPywdV9x+AwxARYU5ry/ZcyOO6+fqbgZXMgGxFViRFB SiA1eCxQDS0q8MZu79frE5YCMWmtBRI= X-MC-Unique: p-NfuPUoOl-xVVwNk9WCBw-1 X-Mimecast-MFC-AGG-ID: p-NfuPUoOl-xVVwNk9WCBw_1781464065 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464065; x=1782068865; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=TMJ+Jpgo2ce7J8yDlqHmRVXp1DveBeVU3H/kU+6+esk=; b=C4pcvBM4nlQXknItbrliDwRCItmQcvfJ8RloF+tpghl+ChuDR9kzrDomsn9SsqvOVw NjAHTo1wKbPRWm4Uow0KhE30JrR8Fd7VzrFTUQMHnCuVkUHPHIQHzMVQwSdEJTyWrvBK Zh6+2v1ScDNl/bXmVbtH/Wv84nyO/2+TvRlD3DI0ZJfMy5MCYLTBAKDerRdT5MrGe/G9 LNTlms7BQE3tvULCsmEmh67kkAYfTN8xhfN5Dh4VPLb6pzDV7d4CAjAqQPwlLVvgKz9p LrNwyTON4IwlsUMuL7Nji9dIHVwlu1C921wSJQpgzxj+QXxZG0eQJ55G/wPDvMzZGYpz 9ZPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464065; x=1782068865; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=TMJ+Jpgo2ce7J8yDlqHmRVXp1DveBeVU3H/kU+6+esk=; b=FvKi67/vBUcAnYFT1kM+Ixw+YPlh/UAfjEO5Fh2RhmWw6+E/o8AXKBpJksIfl9hH75 AOFdgifcJ5+HIJfRnm5q9Obl0rseQyDX44Q9gBYRWNmJo2gdwkHyzZCrYKLOw+mQ+5pg uffJyBGvf57pFMIp74BIvGlZYzOfqxJEQLWgnOWjI2sjeBXSJ53h1tYA73g69o/gemGs 8lg7fGfjSsVTqwuIjDWVd9LFj1kHZU9hnEzapRFou5JPvLK2X3vqQ++cXWwxiWk6hGjc 1MABCE+G+GctJZpLDKdQ5NnfTmTcGF1yahwpnBUa3k8urwaB8dSyvvwj8T+sfcXZVPkf MCdA== X-Gm-Message-State: AOJu0YwQa3/I/IkFrVyf2T5GmycJEIOZx3FvChsfKNutOHv1qas7n4+H 92GNQsm7mYckYfGspbgvnB6hx4XaftjB3BZDo4duUTPKlawdfFeu6qBVfbjuhEVjOWxbcTJxWvQ /ytuWD9dE7lEaj/gUw5xpD4K+tNALB8p2XO2SwSzLSWLApqdFHqct36Zc7RRc7Vwm8Ky9Eq/Ba7 MNj5aUsPlQhOy4ppR+9Exs8nKWJH8KdmSTZA== X-Gm-Gg: Acq92OG1+Vj+As5sXgP1Y76jqCG+QhgOBkmj7ZVxNy4feP18hQ2Ww77Y40Q9EnKWXC7 2Y/y43dR0bvW0C1HgVX0uRZzc1AKaacphcGBcPIYf/aH9ouK+/PIWuQms+5mt750INWyAuYLALL Uufpv3nU059goH030+a9KRII0J60Ud5ydKPWjrqKt749bRLWpo1zxdmkpcVfYsl7/iRQqjA0Nu5 idnQxBTEc8VA9I2oJL8GkZfYYBRuL189ZfuQqFQ+V40y8xBPuAC9y/vzh5rnjgJPPW6D3oQvwI8 Dje6QvGu5ApdPLaqohC4EbQFagkUsOtZ9tfmzi+TAXekst4NMFPPvSP2bAbKXlqiSwTNOo/C0WD i5m/e9f/C9IEnWeGTQOTu4nptifMtfcyI3Zsh4E7RZ1M= X-Received: by 2002:a05:6000:1889:b0:460:70ff:fe14 with SMTP id ffacd0b85a97d-4607ebf6dd0mr9601141f8f.42.1781464065476; Sun, 14 Jun 2026 12:07:45 -0700 (PDT) X-Received: by 2002:a05:6000:1889:b0:460:70ff:fe14 with SMTP id ffacd0b85a97d-4607ebf6dd0mr9601101f8f.42.1781464064965; Sun, 14 Jun 2026 12:07:44 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:43 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Raphael Norwitz , Daniil Tatianin , Lei Yang Subject: [PULL 045/106] hw/virtio/virtio-bus: refactor virtio_bus_set_host_notifier() Message-ID: <658660c838935836cb904d6c29f15767d952b256.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464560440158500 From: Vladimir Sementsov-Ogievskiy The logic kept as is. Refactor to simplify further changes. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Raphael Norwitz Reviewed-by: Daniil Tatianin Reviewed-by: Michael S. Tsirkin Tested-by: Lei Yang Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-20-vsementsov@yandex-team.ru> --- hw/virtio/virtio-bus.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/hw/virtio/virtio-bus.c b/hw/virtio/virtio-bus.c index cef944e015..9b545acda3 100644 --- a/hw/virtio/virtio-bus.c +++ b/hw/virtio/virtio-bus.c @@ -298,20 +298,18 @@ int virtio_bus_set_host_notifier(VirtioBusState *bus,= int n, bool assign) __func__, strerror(-r), r); return r; } - r =3D k->ioeventfd_assign(proxy, notifier, n, true); - if (r < 0) { - error_report("%s: unable to assign ioeventfd: %d", __func__, r= ); - virtio_bus_cleanup_host_notifier(bus, n); - } - } else { - k->ioeventfd_assign(proxy, notifier, n, false); } =20 - if (r =3D=3D 0) { - virtio_queue_set_host_notifier_enabled(vq, assign); + r =3D k->ioeventfd_assign(proxy, notifier, n, assign); + if (r < 0 && assign) { + error_report("%s: unable to assign ioeventfd: %d", __func__, r); + virtio_bus_cleanup_host_notifier(bus, n); + return r; } =20 - return r; + virtio_queue_set_host_notifier_enabled(vq, assign); + + return 0; } =20 void virtio_bus_cleanup_host_notifier(VirtioBusState *bus, int n) --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464307; cv=none; d=zohomail.com; s=zohoarc; b=K6N6HPj6D+ExSYHCYsqeOHvcVScMg1u+uLoGduHubttjrcVyo6ceo1LzUV4NnPxISTqMiI6jDLSi3YFggJSuKvO0HYzcXlIQ61eQqdselrKTLi9Hg9ok7Gvs6np+VCX11kK/ri2YOP2pG6OLk9mXbUnjxX5IAh6BPsCdsAIca2I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464307; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NzyuGiME89aqDLR5LZsqNNgqW2rfSpG7SYs6XXdhRBU=; b=bxn1airH9KsUOd8Clf7mUBMvJf7lvG5kNFjAz+RrMyFieR0Y8L/eNWxrbcoMzqLOMIio4LIiZWLKCKba6M5hre9b8sPWnBGOgiY1gO0zmLDSwv2xQ8X8ljb/IdLxyZ/L99lAQqPAMaeKOohsdnx5axZil3e0UUIzSfchuOeKceU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464306990838.8789526448062; Sun, 14 Jun 2026 12:11:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBb-0003Op-Ew; Sun, 14 Jun 2026 15:07:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBU-0003Hu-H8 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBS-00022t-QO for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:52 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-540-I11cKia-MFOWb6OuYibddA-1; Sun, 14 Jun 2026 15:07:49 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-45efa7755faso1005513f8f.1 for ; Sun, 14 Jun 2026 12:07:48 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f26f450sm29269901f8f.10.2026.06.14.12.07.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464070; 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: in-reply-to:in-reply-to:references:references; bh=NzyuGiME89aqDLR5LZsqNNgqW2rfSpG7SYs6XXdhRBU=; b=M+RFX/McxSHI1oVU4WjXBNVisBnmYVlmL91zinUXFTU6DtDaRdrQSxWQgILjmuYBjD1uce 4wtk7d3JmqvQiKngQya2PqAa9Ksnag9srgYB6AcJgPKUDw4gAg+WHsxBW+9L8xN8rKI9w+ KiKoW6nHtmXiOiaivT3gxu9n+Ko3Kak= X-MC-Unique: I11cKia-MFOWb6OuYibddA-1 X-Mimecast-MFC-AGG-ID: I11cKia-MFOWb6OuYibddA_1781464068 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464068; x=1782068868; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=NzyuGiME89aqDLR5LZsqNNgqW2rfSpG7SYs6XXdhRBU=; b=t18S1PegH8VVtV3Pd86QpRse95O67Sx1zKt0xxRttWmHMC6Tktiwbs2t9v6J65BBhu 2N4w7nxOe6ytfeUY0apQyBHEqobxHtGwTfeCYSOa9WQWF8AfrGMPYXPu6IEh+oOU8I+6 +7v3RlmbuN9A7UPmzpFuxsp+aQEcZFftw/NPFtonVZpyypz8TsofPDdTnsA7NUEKPcQK U+6FeDx4PXjtMEO9Qb6WvxKldr16PUG0a/C3f2oAz1oiiaJ5QAe4D8QuLwepGJIC/cfj xNMtW2xtQAcNkWFCml6yT6fBE5aglPHIK1Cd29zIunz304pqHIo0E6BrfYzvCCxQ2yUy Gi/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464068; x=1782068868; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NzyuGiME89aqDLR5LZsqNNgqW2rfSpG7SYs6XXdhRBU=; b=UB3qYlWgAsMk59vkGfMI0Wd8yd2KO82sYZMtXIFR9DV7FRLIPEwF5zwu1R7hp/Ynoi XGsi8CoUQMkdzj2SVE9VlqD9KljoPHEnTiU0nVVFskZjBdOBqZ/8NLEBct4BmjAbndqY rFaZAocajV3dWChy5DxllvfdEPrliih6JFOTrx5mefjgbdh9W9c48CqQlyDtUc5dKfz3 XdFQFmVTIRlvI2/6/X2SXQLWs9h+r5/eB1qWJzM3CiYdxaCKOe8h2J+IQb316L6LGOFz GTXNcgbZp005NkbeImdRf+Hl7QO8yzOqySMtiR1hOI2BRu8uiyH7zFuqPdiJJfcTmkCh WRzw== X-Gm-Message-State: AOJu0Yys2jl2XDpquwFvctJmACHU01iY7Typz+wMAS2kl2/noJi0RYaf kAwlbSjbDqzv0INfgNv1bv3tsdjMkNkmSypa+kTzVHOFIXlDlra6uDaGm3MoYfoJQFW18J8X1RP M8bp55/3TLFKrtxsaQ+llUgKPtubpNjq8sKBMmQP8SElsm1jjXXB3naQKLp14fwlpH4TfV3KM3U 40rgbr/sw+PyrKxB3X3D0E8c/kVVoORyUYzw== X-Gm-Gg: Acq92OEYR8E3z1FKrS8xWC9liOcYMvAhXA6cgofIlOdPUduUO3z/wuykwlrPQGr38md DLErcixcOx05k0dmtaZIUUIldDS4FulMJvZjM8Rsrqbdcvm7q4BxM9LS7e0qiDMraMPJ3mrEXyB uI21DWK8+QS99NU7qvXqILC9aI9qpNCG229FRlN1QONNHoWr07tfMMwlEoUG7i3wViBcekKcCS1 g5tnckOF4OYj8HVj0XWVdV83d+ZGD6FSFZTWTD0DnPp1muSJ294FT7bpOeYWYvMfkEhtoOiuCCY bv7UW9t2NcxbKAZWgcNcvdGxxFHsGd4dMnwFjytlyRR45GW35r270Z8e/p5oOblmz0KlyHa+MNW qc3p+zSzD4txG3JBkyu2xmGF7dp6l/5jahOGz4Lj6fn8= X-Received: by 2002:a05:6000:2082:b0:460:3234:77d4 with SMTP id ffacd0b85a97d-46074b8effdmr9861242f8f.42.1781464067704; Sun, 14 Jun 2026 12:07:47 -0700 (PDT) X-Received: by 2002:a05:6000:2082:b0:460:3234:77d4 with SMTP id ffacd0b85a97d-46074b8effdmr9861206f8f.42.1781464067174; Sun, 14 Jun 2026 12:07:47 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:45 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Raphael Norwitz , Stefano Garzarella Subject: [PULL 046/106] vhost-user: make trace events more readable Message-ID: <6fdb2219f46e39df9f4182e53e0f7f3e277e92f1.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464307627158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-21-vsementsov@yandex-team.ru> --- hw/virtio/trace-events | 4 +-- hw/virtio/vhost-user.c | 63 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 63 insertions(+), 4 deletions(-) diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events index 658cc365e7..aa1ffa5e94 100644 --- a/hw/virtio/trace-events +++ b/hw/virtio/trace-events @@ -25,8 +25,8 @@ vhost_user_set_mem_table_withfd(int index, const char *na= me, uint64_t memory_siz vhost_user_postcopy_waker(const char *rb, uint64_t rb_offset) "%s + 0x%"PR= Ix64 vhost_user_postcopy_waker_found(uint64_t client_addr) "0x%"PRIx64 vhost_user_postcopy_waker_nomatch(const char *rb, uint64_t rb_offset) "%s = + 0x%"PRIx64 -vhost_user_read(uint32_t req, uint32_t flags) "req:%d flags:0x%"PRIx32"" -vhost_user_write(uint32_t req, uint32_t flags) "req:%d flags:0x%"PRIx32"" +vhost_user_read(uint32_t req, const char *req_name, uint32_t flags) "req:%= d (%s) flags:0x%"PRIx32"" +vhost_user_write(uint32_t req, const char *req_name, uint32_t flags) "req:= %d (%s) flags:0x%"PRIx32"" vhost_user_create_notifier(int idx, void *n) "idx:%d n:%p" =20 # vhost-vdpa.c diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 31eaf65430..4fb136b7b3 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -114,6 +114,63 @@ typedef enum VhostUserBackendRequest { VHOST_USER_BACKEND_MAX } VhostUserBackendRequest; =20 +#define VHOST_USER_CASE(name) \ + case VHOST_USER_##name: \ + return #name; + +static const char *vhost_req_name(VhostUserRequest req) +{ + switch (req) { + VHOST_USER_CASE(NONE) + VHOST_USER_CASE(GET_FEATURES) + VHOST_USER_CASE(SET_FEATURES) + VHOST_USER_CASE(SET_OWNER) + VHOST_USER_CASE(RESET_OWNER) + VHOST_USER_CASE(SET_MEM_TABLE) + VHOST_USER_CASE(SET_LOG_BASE) + VHOST_USER_CASE(SET_LOG_FD) + VHOST_USER_CASE(SET_VRING_NUM) + VHOST_USER_CASE(SET_VRING_ADDR) + VHOST_USER_CASE(SET_VRING_BASE) + VHOST_USER_CASE(GET_VRING_BASE) + VHOST_USER_CASE(SET_VRING_KICK) + VHOST_USER_CASE(SET_VRING_CALL) + VHOST_USER_CASE(SET_VRING_ERR) + VHOST_USER_CASE(GET_PROTOCOL_FEATURES) + VHOST_USER_CASE(SET_PROTOCOL_FEATURES) + VHOST_USER_CASE(GET_QUEUE_NUM) + VHOST_USER_CASE(SET_VRING_ENABLE) + VHOST_USER_CASE(SEND_RARP) + VHOST_USER_CASE(NET_SET_MTU) + VHOST_USER_CASE(SET_BACKEND_REQ_FD) + VHOST_USER_CASE(IOTLB_MSG) + VHOST_USER_CASE(SET_VRING_ENDIAN) + VHOST_USER_CASE(GET_CONFIG) + VHOST_USER_CASE(SET_CONFIG) + VHOST_USER_CASE(CREATE_CRYPTO_SESSION) + VHOST_USER_CASE(CLOSE_CRYPTO_SESSION) + VHOST_USER_CASE(POSTCOPY_ADVISE) + VHOST_USER_CASE(POSTCOPY_LISTEN) + VHOST_USER_CASE(POSTCOPY_END) + VHOST_USER_CASE(GET_INFLIGHT_FD) + VHOST_USER_CASE(SET_INFLIGHT_FD) + VHOST_USER_CASE(GPU_SET_SOCKET) + VHOST_USER_CASE(RESET_DEVICE) + VHOST_USER_CASE(GET_MAX_MEM_SLOTS) + VHOST_USER_CASE(ADD_MEM_REG) + VHOST_USER_CASE(REM_MEM_REG) + VHOST_USER_CASE(SET_STATUS) + VHOST_USER_CASE(GET_STATUS) + VHOST_USER_CASE(GET_SHARED_OBJECT) + VHOST_USER_CASE(SET_DEVICE_STATE_FD) + VHOST_USER_CASE(CHECK_DEVICE_STATE) + default: + return ""; + } +} + +#undef VHOST_USER_CASE + typedef struct VhostUserMemoryRegion { uint64_t guest_phys_addr; uint64_t memory_size; @@ -308,7 +365,8 @@ static int vhost_user_read_header(struct vhost_dev *dev= , VhostUserMsg *msg) return -EPROTO; } =20 - trace_vhost_user_read(msg->hdr.request, msg->hdr.flags); + trace_vhost_user_read(msg->hdr.request, + vhost_req_name(msg->hdr.request), msg->hdr.flags= ); =20 return 0; } @@ -428,7 +486,8 @@ static int vhost_user_write(struct vhost_dev *dev, Vhos= tUserMsg *msg, return ret < 0 ? -saved_errno : -EIO; } =20 - trace_vhost_user_write(msg->hdr.request, msg->hdr.flags); + trace_vhost_user_write(msg->hdr.request, vhost_req_name(msg->hdr.reque= st), + msg->hdr.flags); =20 return 0; } --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464341; cv=none; d=zohomail.com; s=zohoarc; b=n43J6/P6BXifE1t6u0orSg0RXo+T81oimX+DY6M26jJYIbMieqmhpunAYK6JhJvcDlyXFyMdZLcso9MO1aVx0Pp7DnmFtPjIFXeBeg77b55/yyoKEMpRxCCzqWC0DPo9KCazkEyRXieK+iDX0XNA1ORppUNZjIkQ9kPgO249TZo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464341; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OjcO48NagB8ylMATDfiV8LNmkAYdZ8jEtUGpdBfZuKw=; b=HuYjFSpAcxJdEGZ6m21zlsPf7TwJs06gQbJakcdZcnMRdmnHaTp9V6m5UksuAa6BpRdZsAClvlgkfilV1Dpisgz2mRQfdcSuiUsiwPxfgjAhNpiobnZHsPeH9XZCogEhx44/sVXC9juOzMhI9EJY36dIyKdoh4wjNJyT+1ifOTM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464341681570.108317567729; Sun, 14 Jun 2026 12:12:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBd-0003gc-GL; Sun, 14 Jun 2026 15:08:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBX-0003Pn-Te for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBV-000239-OB for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:55 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-317-QwM8_GdPMmumkfqlx4TYcA-1; Sun, 14 Jun 2026 15:07:51 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-46016bedbaaso1799829f8f.1 for ; Sun, 14 Jun 2026 12:07:51 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f26f4f6sm29134766f8f.16.2026.06.14.12.07.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464073; 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: in-reply-to:in-reply-to:references:references; bh=OjcO48NagB8ylMATDfiV8LNmkAYdZ8jEtUGpdBfZuKw=; b=eMXcliXRhFr6SOIa9bHtKgkV79vC3zR/TQlk3zUIJrCTcJkokY70qQQZ/cO7nu3ModIstk zkFcpj+tAXDveXskCg4k0p5GOJQf4dKdYtTaIDRrLzIviamtuRcDXL+jIWm6luYMPbkYG4 ftYXz/1+76MAFcAE6RCOvks0WX1pOk4= X-MC-Unique: QwM8_GdPMmumkfqlx4TYcA-1 X-Mimecast-MFC-AGG-ID: QwM8_GdPMmumkfqlx4TYcA_1781464070 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464070; x=1782068870; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=OjcO48NagB8ylMATDfiV8LNmkAYdZ8jEtUGpdBfZuKw=; b=JeW/S8G5ZWeJgH59+l8DPEO+aOIc/sLBIObY5xPrWeYqlIDw/RgXoQkINJLeTQM7bs NADJwTevCvRpeSsVtVAMwgU3NyVQpoB5nX8eekTsGR1e+KpQq3zoI7dfKvMiXXfkyUQR i2lftQh446cUyTJVg46H1Ywl32XUt+Bbh/Rq+04iXqhZMLlXhXGumqZ0lsbrTk34EPEy loLzgwFSdQe3oF95jVgD6+AsRsQeTHytsS1DgdE/jeYF3LrQzenymvXAVAYN1ZufLRtE IbAK9yqsiStsF0navW0zfxiQmo1wnfeD4Zro7nQcDlnd5QRtD2vet5QY/32cKsKWtbYu XD5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464070; x=1782068870; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OjcO48NagB8ylMATDfiV8LNmkAYdZ8jEtUGpdBfZuKw=; b=F2qpl2nwI8FBqZCvoF4EnIsSTfF1/YPg0MYRCYnNZWoI7UMhVxAM/K1OzY2YBLX1+J jAQzYtt1B4ENSOYw15lKm/JbDOmHk2OWtS8kn5hpUaImIUhjFnOrqMqF5pcWWP1SFRvY cp9o+oVQZJcGDpHkN7KOFRMtVGQGiD6CFRrHOzzCd+T6BUQ8Mf2TrnaZf+5aD7CHLuVm k85sIs7ReqJoIl7RkF7B/dVAGIzyfNrYJpZNZFdIillOxAmD3e5iz4wllsGWFYCNoIGu 9Lvp25inzwY8N3JgvaiqmtbttqoZovc+zrxcuJd3I0yrmz9VIRPQ3qN3R98IY+KbMvqF gOBA== X-Gm-Message-State: AOJu0Yzu8BHQG9ov3tVy+qQKYGI1unXSAnMvyJR/h7MZAG0h76pH5p8M GNTFhNZW5MAfzoJAWfwJRgicZF2AiojaCsx9xgF3ZKPCQvD4ffZlkaNNDdc4lHIiCCYhQ2EREBh b+8VeWwYvq93gMVS9OWfD8O3goKj153VnGVPz5GAj5YLKO2AS0rjbXxjoWvg9ckKmz+WIjT3YlF y0tfBfF9ODfBZIPCko8ujN9KuQIUzB/olv4g== X-Gm-Gg: Acq92OHa4cqcMSSaa4wxV8lF9uIxhJ3vgc0VtdU53O8SJIPIjq+pg+D8YJzKEbXH9iu MkQqhlOzaxBDuRr704n/oW/bXhlb68R+Cxhi+2XM9j3Asb5uDg0YKD+zF23EbWnzH2L51ZtNKQk BhPGLUaiAcxYgafrWS77F7CvYUNkZzUCzJFxBP1lDxb6PV48mg+Zy3NmViwZ94lf0Dc+zpIXm9S zoZN84wjzZamQRbPM58jt8ZbCmk6xr/vSsCOdVf3MB99kqkwe/GzkF542k5CECj4C07WBHBiL56 6JkT5n0fLXwPgy0tetxcPs9qPn2vadjVdyPmfNov1zbiseFKxskws1AaU+mZgu12C8qy6vPfnHO Ijmfr+s9iaujWqDyKhL/lJLpO+qQvPmi8CUKHby1KtHM= X-Received: by 2002:a05:6000:25f7:b0:43d:7868:21f0 with SMTP id ffacd0b85a97d-4606da57dd1mr14907205f8f.9.1781464070236; Sun, 14 Jun 2026 12:07:50 -0700 (PDT) X-Received: by 2002:a05:6000:25f7:b0:43d:7868:21f0 with SMTP id ffacd0b85a97d-4606da57dd1mr14907152f8f.9.1781464069686; Sun, 14 Jun 2026 12:07:49 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:47 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Daniil Tatianin , Raphael Norwitz , Lei Yang , Kevin Wolf , Hanna Reitz , Stefano Garzarella , Raphael Norwitz , qemu-block@nongnu.org Subject: [PULL 047/106] vhost-user-blk: add some useful trace-points Message-ID: <587c9d91cd9cb2ee09813afa60e952a1d47a9932.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464343554158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Daniil Tatianin Reviewed-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Tested-by: Lei Yang Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-22-vsementsov@yandex-team.ru> --- hw/block/trace-events | 10 ++++++++++ hw/block/vhost-user-blk.c | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/hw/block/trace-events b/hw/block/trace-events index cc9a9f2460..dbaa5ca6cb 100644 --- a/hw/block/trace-events +++ b/hw/block/trace-events @@ -58,6 +58,16 @@ virtio_blk_handle_zone_mgmt(void *vdev, void *req, uint8= _t op, int64_t sector, i virtio_blk_handle_zone_reset_all(void *vdev, void *req, int64_t sector, in= t64_t len) "vdev %p req %p sector 0x%" PRIx64 " cap 0x%" PRIx64 "" virtio_blk_handle_zone_append(void *vdev, void *req, int64_t sector) "vdev= %p req %p, append sector 0x%" PRIx64 "" =20 +# vhost-user-blk.c +vhost_user_blk_start_in(void *vdev) "vdev %p" +vhost_user_blk_start_out(void *vdev) "vdev %p" +vhost_user_blk_stop_in(void *vdev) "vdev %p" +vhost_user_blk_stop_out(void *vdev) "vdev %p" +vhost_user_blk_connect_in(void *vdev) "vdev %p" +vhost_user_blk_connect_out(void *vdev) "vdev %p" +vhost_user_blk_device_realize_in(void *vdev) "vdev %p" +vhost_user_blk_device_realize_out(void *vdev) "vdev %p" + # hd-geometry.c hd_geometry_lchs_guess(void *blk, int cyls, int heads, int secs) "blk %p L= CHS %d %d %d" hd_geometry_guess(void *blk, uint32_t cyls, uint32_t heads, uint32_t secs,= int trans) "blk %p CHS %u %u %u trans %d" diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 2831f3c053..530f44ab52 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -31,6 +31,7 @@ #include "hw/virtio/virtio-access.h" #include "system/system.h" #include "system/runstate.h" +#include "trace.h" =20 static const int user_feature_bits[] =3D { VIRTIO_BLK_F_SIZE_MAX, @@ -137,6 +138,8 @@ static int vhost_user_blk_start(VirtIODevice *vdev, Err= or **errp) VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(qbus); int i, ret; =20 + trace_vhost_user_blk_start_in(vdev); + if (!k->set_guest_notifiers) { error_setg(errp, "binding does not support guest notifiers"); return -ENOSYS; @@ -192,6 +195,8 @@ static int vhost_user_blk_start(VirtIODevice *vdev, Err= or **errp) } s->started_vu =3D true; =20 + trace_vhost_user_blk_start_out(vdev); + return ret; =20 err_guest_notifiers: @@ -212,6 +217,8 @@ static int vhost_user_blk_stop(VirtIODevice *vdev) int ret; bool force_stop =3D false; =20 + trace_vhost_user_blk_stop_in(vdev); + if (!s->started_vu) { return 0; } @@ -233,6 +240,9 @@ static int vhost_user_blk_stop(VirtIODevice *vdev) } =20 vhost_dev_disable_notifiers(&s->dev, vdev); + + trace_vhost_user_blk_stop_out(vdev); + return ret; } =20 @@ -340,6 +350,8 @@ static int vhost_user_blk_connect(DeviceState *dev, Err= or **errp) VHostUserBlk *s =3D VHOST_USER_BLK(vdev); int ret =3D 0; =20 + trace_vhost_user_blk_connect_in(vdev); + if (s->connected) { return 0; } @@ -366,6 +378,8 @@ static int vhost_user_blk_connect(DeviceState *dev, Err= or **errp) ret =3D vhost_user_blk_start(vdev, errp); } =20 + trace_vhost_user_blk_connect_out(vdev); + return ret; } =20 @@ -456,6 +470,8 @@ static void vhost_user_blk_device_realize(DeviceState *= dev, Error **errp) int retries; int i, ret; =20 + trace_vhost_user_blk_device_realize_in(vdev); + if (!s->chardev.chr) { error_setg(errp, "chardev is mandatory"); return; @@ -515,6 +531,9 @@ static void vhost_user_blk_device_realize(DeviceState *= dev, Error **errp) qemu_chr_fe_set_handlers(&s->chardev, NULL, NULL, vhost_user_blk_event, NULL, (void *)dev, NULL, true); + + trace_vhost_user_blk_device_realize_out(vdev); + return; =20 virtio_err: --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464391; cv=none; d=zohomail.com; s=zohoarc; b=SYFDpis7T0w6AJpfQjgxpHzTwERIfx+8CxuCnS0F9WYXbBy4PtaIPz50Fk5LjlM3IKHTQRjrjqD6nH6G32A2nJIfwE9v/gLjos9voJFvhmHq+963wJ7+HfiItgr6AczMRTLklCK0FPGDnZf052DhfwPz3LyY+wVBW+iCdXleBfM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464391; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=k0/ph/T6xtd6OrEATvYJH2TDT/erooqTl4Flj5mUGIs=; b=W19PDKSwS1pVa26uWkft6EwusAMx1IHe8FwMmTsvD2EXYT9nllUlSQ/ZFye2kmdFKCbRjcfREyJUS3+YW1lBSqRniIOEWw5amXpyv5ocXDGlm1zI17n8X8WHISHAE8LV1Bh5V6XzxZT99EkOhytVm3bfuHhohwk04TFkCHbB72I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146439149325.76529429577181; Sun, 14 Jun 2026 12:13:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBd-0003eT-2N; Sun, 14 Jun 2026 15:08:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBb-0003Ti-Ad for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:59 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBY-00023P-Hu for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:07:57 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-600-blDkCfSvO8WynIcb5IRK_Q-1; Sun, 14 Jun 2026 15:07:54 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490ae3bcf4cso12096055e9.3 for ; Sun, 14 Jun 2026 12:07:54 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492203dd0b9sm181871995e9.15.2026.06.14.12.07.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464075; 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: in-reply-to:in-reply-to:references:references; bh=k0/ph/T6xtd6OrEATvYJH2TDT/erooqTl4Flj5mUGIs=; b=R651euGbt143G/9IvYUKIIjZoLgqka7hODVpddLEKnXHHY9WN6JGy8RG53jZowCPbLwDXe ANcxHFsDJ90j16HbFvrDeSzR6xBxoPNrg+ktbjGSVgYn5vVXm5+mX22vN+oayLv/c4xlQV MaFWfPPO0doGIFYp+DoBtzQGb7L96Go= X-MC-Unique: blDkCfSvO8WynIcb5IRK_Q-1 X-Mimecast-MFC-AGG-ID: blDkCfSvO8WynIcb5IRK_Q_1781464073 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464073; x=1782068873; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=k0/ph/T6xtd6OrEATvYJH2TDT/erooqTl4Flj5mUGIs=; b=hbOEpd8mlD7Dgr2AWMDQ26AfpmN46WkIZsSPFQT6y5/Au+E8R24Oo8BAkovFew2sxg ypXPfK5ZVMUQBGbyUnO95A2cLkERNHRC6iFon8zV3pvkPOG3dwE1lTiHeCZGF0BPxBTX MK4NC9NzZl2suHuQ9H/6jZbx8Ed6yHIcmmRUepmHWdZBUtrCQmom/hmJfIRBJzS9+M5B V7Utm5gIheHGPznGEtERrBCQPHo1vlmzs8bezKtr+aMDw9JBnU4RbgVC7Ln5dSFNHANl wRx6QPibrknoftwkLiXxMZLMDI/4ckaMB1LVb/bRUQNzNJE5O3D+xW1MO9SVD6i54qYl +Q+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464073; x=1782068873; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=k0/ph/T6xtd6OrEATvYJH2TDT/erooqTl4Flj5mUGIs=; b=ZzLST11KzzQa30pvyfsD7csyW9M0lcx0/c0sbqEYrTAxT+eZigiMDC72/4bEnlH5GC VC9aTcpBTV6QavXLc8e3ZRjMsWt/Cbw18C59Vlbd4Rl8zvZS1rim5O/Q2oRnsXyvHwOJ 1Kud8JuCYIF2MZkqBOdpo0dR8F29Vu04el5/3m5wkdAfwomli/CfM1KzpXF5I44iByCK p50OVE/qWzWUW8eaK5f4WnbDGBC2DGURjBIkwDNE3uaNrkznsALEJuVRCgzquvLROSIH 3LR4x7TBU4rr25Bp1vo579+BVasvq1KyfD5YIG3ix7dDdoivfDk6X1s0+UPKqn8XgfCj h8bw== X-Gm-Message-State: AOJu0Yw5+viXDzJXsIscQ8rNC00tIpSR1NxQ0l7DpXSHwhQxUG99zl6v sKaX4BVE9JE+tuAPUKKp8VJrK/XHJYzKOW0pvy/pLVXTV+GWbklHXGsPPdprcodH176SowTaacJ +DtQ313y4DFKCQwfoWnMXQRVh7UywiWkQcTWIfuuk2M/LDSlt8niVACh27y9XRX5H7uEZS15C9j HWPdMRy6oAQ982vHZo7Q4Fhva5cjJN+GhjWw== X-Gm-Gg: Acq92OFrqlU5gPF91nb/SkHXosLNnB8NFZcuxasAG4LuD93oGnegH3q1fRFTIT59R+3 GaeskhULEimplFf5WWeTrKqNeZ78roY2G4DphPY5T1n/s2x7PDjlkmziW8vtnxcIHxSkxgaayGJ 5AbIDGdh9y5R4HulA7vQdqma74/2Jn0UcjD1oJj9O13GMMDccELAfHGJ4XJ5Hk7wqS7U4MYTHvO uwpB5moiFN15mhuRNy9jtWIoEfIMBYDaq5uDBsgIJ0kR6Wffp79wywQdbUCpEUDrbMoB/q1Ugo7 A4IuNU9GokOOUU0adfK2wm6MoDWheo8JDjPM0l9yy+Qx27dTn352AHrk5ofGuBdD5MaFz9hoGQj PgiTWS9fn/xPuNesXxlLkbzN8x4/GCy7aHLdCCFL2u/w= X-Received: by 2002:a7b:c017:0:b0:48e:6db3:ff2e with SMTP id 5b1f17b1804b1-49220093459mr69075115e9.15.1781464073015; Sun, 14 Jun 2026 12:07:53 -0700 (PDT) X-Received: by 2002:a7b:c017:0:b0:48e:6db3:ff2e with SMTP id 5b1f17b1804b1-49220093459mr69074895e9.15.1781464072532; Sun, 14 Jun 2026 12:07:52 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:49 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Daniil Tatianin , Raphael Norwitz , Stefano Garzarella Subject: [PULL 048/106] vhost: add some useful trace-points Message-ID: <2d5e87062b6fc283c1effe58ae81d902a57097b8.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464391766158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Daniil Tatianin Reviewed-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260420200339.708640-23-vsementsov@yandex-team.ru> --- hw/virtio/trace-events | 12 ++++++++++-- hw/virtio/vhost.c | 20 ++++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events index aa1ffa5e94..2a57edc21e 100644 --- a/hw/virtio/trace-events +++ b/hw/virtio/trace-events @@ -9,8 +9,16 @@ vhost_section(const char *name) "%s" vhost_reject_section(const char *name, int d) "%s:%d" vhost_iotlb_miss(void *dev, int step) "%p step %d" vhost_dev_cleanup(void *dev) "%p" -vhost_dev_start(void *dev, const char *name, bool vrings) "%p:%s vrings:%d" -vhost_dev_stop(void *dev, const char *name, bool vrings) "%p:%s vrings:%d" +vhost_dev_start_in(void *dev, const char *name, bool vrings) "%p:%s vrings= :%d" +vhost_dev_start_out(void *dev, const char *name) "%p:%s" +vhost_dev_stop_in(void *dev, const char *name, bool vrings) "%p:%s vrings:= %d" +vhost_dev_stop_out(void *dev, const char *name) "%p:%s" +vhost_virtqueue_start_in(void *dev, const char *name, int idx) "%p:%s %d" +vhost_virtqueue_start_out(void *dev, const char *name, int idx) "%p:%s %d" +vhost_virtqueue_stop_in(void *dev, const char *name, int idx) "%p:%s %d" +vhost_virtqueue_stop_out(void *dev, const char *name, int idx) "%p:%s %d" +vhost_dev_init_in(void *dev) "%p" +vhost_dev_init_out(void *dev) "%p" =20 =20 # vhost-user.c diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 93c6a5f5e9..c610007e81 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1337,6 +1337,8 @@ int vhost_virtqueue_start(struct vhost_dev *dev, }; struct VirtQueue *vvq =3D virtio_get_queue(vdev, idx); =20 + trace_vhost_virtqueue_start_in(dev, vdev->name, idx); + r =3D vhost_vrings_map(dev, vdev, vq, idx); if (r <=3D 0) { return r; @@ -1397,6 +1399,8 @@ int vhost_virtqueue_start(struct vhost_dev *dev, } } =20 + trace_vhost_virtqueue_start_out(dev, vdev->name, idx); + return 0; =20 fail: @@ -1415,6 +1419,8 @@ static int do_vhost_virtqueue_stop(struct vhost_dev *= dev, }; int r =3D 0; =20 + trace_vhost_virtqueue_stop_in(dev, vdev->name, idx); + if (virtio_queue_get_desc_addr(vdev, idx) =3D=3D 0) { /* Don't stop the virtqueue which might have not been started */ return 0; @@ -1448,6 +1454,8 @@ static int do_vhost_virtqueue_stop(struct vhost_dev *= dev, } =20 vhost_vrings_unmap(dev, vq, true); + + trace_vhost_virtqueue_stop_out(dev, vdev->name, idx); return r; } =20 @@ -1581,6 +1589,8 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaq= ue, unsigned int used, reserved, limit; int i, r, n_initialized_vqs =3D 0; =20 + trace_vhost_dev_init_in(hdev); + hdev->vdev =3D NULL; hdev->migration_blocker =3D NULL; =20 @@ -1694,6 +1704,8 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaq= ue, goto fail; } =20 + trace_vhost_dev_init_out(hdev); + return 0; =20 fail: @@ -2098,7 +2110,7 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODev= ice *vdev, bool vrings) /* should only be called after backend is connected */ assert(hdev->vhost_ops); =20 - trace_vhost_dev_start(hdev, vdev->name, vrings); + trace_vhost_dev_start_in(hdev, vdev->name, vrings); =20 vdev->vhost_started =3D true; hdev->started =3D true; @@ -2183,6 +2195,8 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODev= ice *vdev, bool vrings) } } vhost_start_config_intr(hdev); + + trace_vhost_dev_start_out(hdev, vdev->name); return 0; fail_iotlb: if (vhost_dev_has_iommu(hdev) && @@ -2232,7 +2246,7 @@ static int do_vhost_dev_stop(struct vhost_dev *hdev, = VirtIODevice *vdev, event_notifier_cleanup( &hdev->vqs[VHOST_QUEUE_NUM_CONFIG_INR].masked_config_notifier); =20 - trace_vhost_dev_stop(hdev, vdev->name, vrings); + trace_vhost_dev_stop_in(hdev, vdev->name, vrings); =20 if (hdev->vhost_ops->vhost_dev_start) { hdev->vhost_ops->vhost_dev_start(hdev, false); @@ -2262,6 +2276,8 @@ static int do_vhost_dev_stop(struct vhost_dev *hdev, = VirtIODevice *vdev, hdev->started =3D false; vdev->vhost_started =3D false; hdev->vdev =3D NULL; + + trace_vhost_dev_stop_out(hdev, vdev->name); return rc; } =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464095; cv=none; d=zohomail.com; s=zohoarc; b=m9SWCLaB03jCOlgdkjy5v0rZVyMARRaKQvKrj7lhVGpRqoD0UM0YdnxSQ2xWWRn4SvwYF+Rn3U9J9ZCvBRSGgAkLtVuihRYBwLeJyS646CsS4qZjNiq6JfOfGgTLUy9Ebl3ATCPqKe1ZxeuFYM0B7lwoGtCQbm8Hso18/8B/bBY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464095; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+GuTh5V0GuOw0obJKJe9L/Do0KN5TpKDxtGQn1t1Hdw=; b=l5ArlgViTvk+zjyzvGDtgxhbWZJE4agdW+2Y7AVYpNlgMfpkCJvHOD46klMqKK6iR4NubHjF3vs2T2HM4Pa1/wP5xoaNSUq9k6r/nnDYIXUmOh+xZMPqVIGOZyvXYw9xPQYrPpseIp4kHhDTufocBvA5Dltb+yKfgfDUiWDv5Js= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464095793639.8761141031282; Sun, 14 Jun 2026 12:08:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBf-0003rW-L6; Sun, 14 Jun 2026 15:08:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBd-0003gG-BA for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:01 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBb-00023c-3v for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:01 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-507-26ruouRpPvS7b80zeFc_og-1; Sun, 14 Jun 2026 15:07:56 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490b37e1f48so17506915e9.0 for ; Sun, 14 Jun 2026 12:07:56 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922034c1cbsm151846345e9.10.2026.06.14.12.07.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464078; 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: in-reply-to:in-reply-to:references:references; bh=+GuTh5V0GuOw0obJKJe9L/Do0KN5TpKDxtGQn1t1Hdw=; b=NLmLaukxhUJW75MFb5bRVzk0XU3hpqSIvsib/G7vR60SyIRF+aECp6FBN4efvvjFL9qC73 XbjxK3thZEqklJtJFKsHnx4jk1TTNAg+VZ42eepkkEaRAGtTtImR2uN7hmNHbNJQioHztR bf2QcmWJUUULIZufcBNMfc3PBmU4YZc= X-MC-Unique: 26ruouRpPvS7b80zeFc_og-1 X-Mimecast-MFC-AGG-ID: 26ruouRpPvS7b80zeFc_og_1781464076 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464075; x=1782068875; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=+GuTh5V0GuOw0obJKJe9L/Do0KN5TpKDxtGQn1t1Hdw=; b=VR+ShwY5GsgBYbS1PVvRl78pDVAeSQJ74DUAaPhsj4xdssRUKSJLRxbW8bhF+2LRYm r6DWEGriT9gofb21shf92VwNKKfVTJDZ+MszG5SgPRPsRnjo6rUV2GmihoyjZdlHWlQ/ 35ERFrGKe4kZDYYLBs0DPVaZ7GOhthR+mal3xKR4VCgEQ+ix/LpkzGlGDzLh7Evskbyc tzWwJGZJwzVx8H4ddzba2frCLVSNdIOmTryOFhK+C7F1q6uFfz3ZsWYw5THTxYomk/GI OX4GMCi4E3c/lJxWUX5p0UHxnMgXK4S6exycSQ24pgb4ty4zbeU24lquDx4NUoqgq8+D 9lUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464075; x=1782068875; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+GuTh5V0GuOw0obJKJe9L/Do0KN5TpKDxtGQn1t1Hdw=; b=E/lKdtcKkGN1ADkGYraMOHh9R3ndaMHAbwNkuwJS1hYSWcq3HEtvphLJ9yBRmMp3GZ FNTHYo2G/pbLd3o4fPemR/7JSDHyLikAK6widvMYyk92X1KVaraiQ8wOumqdolj8EzSB SPkeLpgV7K45RqSWdN3Z3MpexuanG6wZW2/nF8x+VPIj7F5rzuVKxdu/Fav7fuWpvS+M y+749HqS3igAr+ayIJvV+1tAp6enZzCfYYJg3F8E6pPW6jf5iG7nT6NlftmQvXczfVnO cxHo8FfTJsAUboiNZt0qUvDJtJeuO7989uORRWBwqSm2FqWNJ5i3kK5UyIh0//Yjd78L xBjw== X-Gm-Message-State: AOJu0YxOdLgnF7fz+k5HdaXc/rphiScQiF2GH0EFsE+fBtTas9OqFV7G eQigdIeCyHcRTfIOszLKePbckgsr1rBvQZxCKztkOBO8Kzw0H2iCpp+E2YJ3KAwyhv91741jN7S uABnVNK/n+//VoLd1xoeeIy0Un8bVBRCChY2pgxp7B8uCu2gGvb2Q2f+XfV7E5Vn+K2aJHF8gf2 taW0fPYG7ysgMcND8Br2JJp3pV+sob/F7QoQ== X-Gm-Gg: Acq92OH6LTJtXGU+90brEZIq/Ek8TwcbKC2Zaxk5FgR+SSrN6Q0lxLo1Leiy7VyrW1C OaOUIaPEPMsG7aTttY/7afXVOi5cfXIEcSg+Oswb9H7hPhgjyoXxcr8Wb7rRWwbeMgul+h1Zvss gb09Ovl+21d4QfOdSLM/oHEBtwOmKXBK6Sh/4cb4qZEHrr/bqME36u0aanhh0vGfWFwBb86r3+u 70ZiMTDfvLuQoFiMf6+o2UcD64pANBcgjiht+9UhIiXbzKHcels9CBER8lfMLnCwqVE99eHtlDq h5Qavqh39zE2TQs07UqAyTorKO4S4z7jKDgnrM0srb7UPl3C0E6iY3ft5BJcI6W66TQSkJOEl4f uqksh2UPGV9V6bXl6A41BRcdteryFo2owv9xFXzKz5Ek= X-Received: by 2002:a05:600c:6542:b0:48a:93f8:dd02 with SMTP id 5b1f17b1804b1-4922006283cmr65638135e9.14.1781464075379; Sun, 14 Jun 2026 12:07:55 -0700 (PDT) X-Received: by 2002:a05:600c:6542:b0:48a:93f8:dd02 with SMTP id 5b1f17b1804b1-4922006283cmr65637745e9.14.1781464074772; Sun, 14 Jun 2026 12:07:54 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:52 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Stefano Garzarella Subject: [PULL 049/106] vhost: move IOTLB functions from vhost-backend.c to vhost.c Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464096687158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Move and rename vhost_backend_update_device_iotlb(), vhost_backend_invalidate_device_iotlb(), and vhost_backend_handle_iotlb_msg() from vhost-backend.c to vhost.c. vhost-backend.c is actually about vhost-kernel backend. But these functions are shared with vhost-user, so let's move them into generic place. Moreover, two of three functions becomes static as they are used only in vhost.c. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Michael S. Tsirkin Based-on: <20260206095258.894504-1-vsementsov@yandex-team.ru> Signed-off-by: Michael S. Tsirkin Message-Id: <20260420202032.714884-2-vsementsov@yandex-team.ru> --- hw/virtio/vhost-backend.c | 82 +---------------------------- hw/virtio/vhost-user.c | 2 +- hw/virtio/vhost.c | 85 +++++++++++++++++++++++++++++-- include/hw/virtio/vhost-backend.h | 11 ---- include/hw/virtio/vhost.h | 2 + 5 files changed, 86 insertions(+), 96 deletions(-) diff --git a/hw/virtio/vhost-backend.c b/hw/virtio/vhost-backend.c index 4367db0d95..fea88afc39 100644 --- a/hw/virtio/vhost-backend.c +++ b/hw/virtio/vhost-backend.c @@ -298,7 +298,7 @@ static void vhost_kernel_iotlb_read(void *opaque) break; } =20 - vhost_backend_handle_iotlb_msg(dev, &msg.iotlb); + vhost_handle_iotlb_msg(dev, &msg.iotlb); } } else { struct vhost_msg msg; @@ -313,7 +313,7 @@ static void vhost_kernel_iotlb_read(void *opaque) break; } =20 - vhost_backend_handle_iotlb_msg(dev, &msg.iotlb); + vhost_handle_iotlb_msg(dev, &msg.iotlb); } } } @@ -392,81 +392,3 @@ const VhostOps kernel_ops =3D { .vhost_send_device_iotlb_msg =3D vhost_kernel_send_device_iotlb_ms= g, }; #endif - -int vhost_backend_update_device_iotlb(struct vhost_dev *dev, - uint64_t iova, uint64_t uaddr, - uint64_t len, - IOMMUAccessFlags perm) -{ - struct vhost_iotlb_msg imsg; - - imsg.iova =3D iova; - imsg.uaddr =3D uaddr; - imsg.size =3D len; - imsg.type =3D VHOST_IOTLB_UPDATE; - - switch (perm) { - case IOMMU_RO: - imsg.perm =3D VHOST_ACCESS_RO; - break; - case IOMMU_WO: - imsg.perm =3D VHOST_ACCESS_WO; - break; - case IOMMU_RW: - imsg.perm =3D VHOST_ACCESS_RW; - break; - default: - return -EINVAL; - } - - if (dev->vhost_ops && dev->vhost_ops->vhost_send_device_iotlb_msg) - return dev->vhost_ops->vhost_send_device_iotlb_msg(dev, &imsg); - - return -ENODEV; -} - -int vhost_backend_invalidate_device_iotlb(struct vhost_dev *dev, - uint64_t iova, uint64_t l= en) -{ - struct vhost_iotlb_msg imsg; - - imsg.iova =3D iova; - imsg.size =3D len; - imsg.type =3D VHOST_IOTLB_INVALIDATE; - - if (dev->vhost_ops && dev->vhost_ops->vhost_send_device_iotlb_msg) - return dev->vhost_ops->vhost_send_device_iotlb_msg(dev, &imsg); - - return -ENODEV; -} - -int vhost_backend_handle_iotlb_msg(struct vhost_dev *dev, - struct vhost_iotlb_msg *imsg) -{ - int ret =3D 0; - - if (unlikely(!dev->vdev)) { - error_report("Unexpected IOTLB message when virtio device is stopp= ed"); - return -EINVAL; - } - - switch (imsg->type) { - case VHOST_IOTLB_MISS: - ret =3D vhost_device_iotlb_miss(dev, imsg->iova, - imsg->perm !=3D VHOST_ACCESS_RO); - break; - case VHOST_IOTLB_ACCESS_FAIL: - /* FIXME: report device iotlb error */ - error_report("Access failure IOTLB message type not supported"); - ret =3D -ENOTSUP; - break; - case VHOST_IOTLB_UPDATE: - case VHOST_IOTLB_INVALIDATE: - default: - error_report("Unexpected IOTLB message type"); - ret =3D -EINVAL; - break; - } - - return ret; -} diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 4fb136b7b3..6978d8ee94 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -1901,7 +1901,7 @@ static gboolean backend_read(QIOChannel *ioc, GIOCond= ition condition, =20 switch (hdr.request) { case VHOST_USER_BACKEND_IOTLB_MSG: - ret =3D vhost_backend_handle_iotlb_msg(dev, &payload.iotlb); + ret =3D vhost_handle_iotlb_msg(dev, &payload.iotlb); break; case VHOST_USER_BACKEND_CONFIG_CHANGE_MSG: ret =3D vhost_user_backend_handle_config_change(dev); diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index c610007e81..4d42f8bda4 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -916,14 +916,92 @@ static void vhost_region_addnop(MemoryListener *liste= ner, vhost_region_add_section(dev, section); } =20 +static int vhost_update_device_iotlb(struct vhost_dev *dev, + uint64_t iova, uint64_t uaddr, + uint64_t len, + IOMMUAccessFlags perm) +{ + struct vhost_iotlb_msg imsg; + + imsg.iova =3D iova; + imsg.uaddr =3D uaddr; + imsg.size =3D len; + imsg.type =3D VHOST_IOTLB_UPDATE; + + switch (perm) { + case IOMMU_RO: + imsg.perm =3D VHOST_ACCESS_RO; + break; + case IOMMU_WO: + imsg.perm =3D VHOST_ACCESS_WO; + break; + case IOMMU_RW: + imsg.perm =3D VHOST_ACCESS_RW; + break; + default: + return -EINVAL; + } + + if (dev->vhost_ops && dev->vhost_ops->vhost_send_device_iotlb_msg) { + return dev->vhost_ops->vhost_send_device_iotlb_msg(dev, &imsg); + } + + return -ENODEV; +} + +static int vhost_invalidate_device_iotlb(struct vhost_dev *dev, + uint64_t iova, uint64_t len) +{ + struct vhost_iotlb_msg imsg; + + imsg.iova =3D iova; + imsg.size =3D len; + imsg.type =3D VHOST_IOTLB_INVALIDATE; + + if (dev->vhost_ops && dev->vhost_ops->vhost_send_device_iotlb_msg) { + return dev->vhost_ops->vhost_send_device_iotlb_msg(dev, &imsg); + } + + return -ENODEV; +} + +int vhost_handle_iotlb_msg(struct vhost_dev *dev, struct vhost_iotlb_msg *= imsg) +{ + int ret =3D 0; + + if (unlikely(!dev->vdev)) { + error_report("Unexpected IOTLB message when virtio device is stopp= ed"); + return -EINVAL; + } + + switch (imsg->type) { + case VHOST_IOTLB_MISS: + ret =3D vhost_device_iotlb_miss(dev, imsg->iova, + imsg->perm !=3D VHOST_ACCESS_RO); + break; + case VHOST_IOTLB_ACCESS_FAIL: + /* FIXME: report device iotlb error */ + error_report("Access failure IOTLB message type not supported"); + ret =3D -ENOTSUP; + break; + case VHOST_IOTLB_UPDATE: + case VHOST_IOTLB_INVALIDATE: + default: + error_report("Unexpected IOTLB message type"); + ret =3D -EINVAL; + break; + } + + return ret; +} + static void vhost_iommu_unmap_notify(IOMMUNotifier *n, IOMMUTLBEntry *iotl= b) { struct vhost_iommu *iommu =3D container_of(n, struct vhost_iommu, n); struct vhost_dev *hdev =3D iommu->hdev; hwaddr iova =3D iotlb->iova + iommu->iommu_offset; =20 - if (vhost_backend_invalidate_device_iotlb(hdev, iova, - iotlb->addr_mask + 1)) { + if (vhost_invalidate_device_iotlb(hdev, iova, iotlb->addr_mask + 1)) { error_report("Fail to invalidate device iotlb"); } } @@ -1304,8 +1382,7 @@ int vhost_device_iotlb_miss(struct vhost_dev *dev, ui= nt64_t iova, int write) len =3D MIN(iotlb.addr_mask + 1, len); iova =3D iova & ~iotlb.addr_mask; =20 - ret =3D vhost_backend_update_device_iotlb(dev, iova, uaddr, - len, iotlb.perm); + ret =3D vhost_update_device_iotlb(dev, iova, uaddr, len, iotlb.per= m); if (ret) { trace_vhost_iotlb_miss(dev, 4); error_report("Fail to update device iotlb"); diff --git a/include/hw/virtio/vhost-backend.h b/include/hw/virtio/vhost-ba= ckend.h index ff94fa1734..57497e197a 100644 --- a/include/hw/virtio/vhost-backend.h +++ b/include/hw/virtio/vhost-backend.h @@ -222,17 +222,6 @@ typedef struct VhostOps { vhost_check_device_state_op vhost_check_device_state; } VhostOps; =20 -int vhost_backend_update_device_iotlb(struct vhost_dev *dev, - uint64_t iova, uint64_t uaddr, - uint64_t len, - IOMMUAccessFlags perm); - -int vhost_backend_invalidate_device_iotlb(struct vhost_dev *dev, - uint64_t iova, uint64_t l= en); - -int vhost_backend_handle_iotlb_msg(struct vhost_dev *dev, - struct vhost_iotlb_msg *imsg); - int vhost_user_gpu_set_socket(struct vhost_dev *dev, int fd); =20 int vhost_user_get_shared_object(struct vhost_dev *dev, unsigned char *uui= d, diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h index 54862f9b44..b292e9f0fe 100644 --- a/include/hw/virtio/vhost.h +++ b/include/hw/virtio/vhost.h @@ -403,6 +403,8 @@ int vhost_dev_set_inflight(struct vhost_dev *dev, int vhost_dev_get_inflight(struct vhost_dev *dev, uint16_t queue_size, struct vhost_inflight *inflight); bool vhost_dev_has_iommu(struct vhost_dev *dev); +int vhost_handle_iotlb_msg(struct vhost_dev *dev, struct vhost_iotlb_msg *= imsg); + =20 static inline bool vhost_dev_has_feature(struct vhost_dev *dev, uint64_t feature) --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464326; cv=none; d=zohomail.com; s=zohoarc; b=broOtvsBu8h0JtFUKteYfiW938phZXPcNb/MO9sEif7dSYALA3WoVYumrUIErnAYWwDaX1RGYEcSZL0HuKiXDwbFrvv7vau1pGT2CuYnHM5wbXOEjYkpQNegCiAtknzfvTkG+ir/8/bPuCglWdv8rIs5pgkOPzm/OOHQ8C5kwlU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464326; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pt0EyeSxg4/HAYXjOQeT2VvKcIzpOhnnRGb8xdH0H7c=; b=CzcDDK4Rk9Wr2IEDne4e8At9uKqBEbZv5f6MgY30yO2rYvx4wiR9HMgHJF4kmkKwXayboVYCg+lHwyzfb1oa5iKf0QVqBrd6nHvBAtZr+/CqJu9Dna8Qa3aQxTCKB3WAXVuZ6CRifzeuf1GWQD8sb0r4vdQn0846reUPQxys70E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464326923422.514329006337; Sun, 14 Jun 2026 12:12:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBh-00042i-5U; Sun, 14 Jun 2026 15:08:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBf-0003rn-N5 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:03 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBd-00024U-Jx for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:03 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-331-fuzp1SePOp6ffkH4yLtNbw-1; Sun, 14 Jun 2026 15:07:59 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490a060eb84so19275395e9.0 for ; Sun, 14 Jun 2026 12:07:59 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922037055csm191172275e9.13.2026.06.14.12.07.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464080; 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: in-reply-to:in-reply-to:references:references; bh=pt0EyeSxg4/HAYXjOQeT2VvKcIzpOhnnRGb8xdH0H7c=; b=Yuc5IEBxySOYFbZN5R1DmGPP1AM907WwOOHQPKX6+X/mOYMisg2++VisFoDtERdIu57BSb YzTxqnC51PaCqjl8rYU2rZ9LIPEROirbbdH7zjQMVJnvtO1D8rSwTRecU/yuUUlkqwwTK6 fI/IUnq85l2dFHbo7oBynb1eAuX0yFw= X-MC-Unique: fuzp1SePOp6ffkH4yLtNbw-1 X-Mimecast-MFC-AGG-ID: fuzp1SePOp6ffkH4yLtNbw_1781464078 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464078; x=1782068878; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=pt0EyeSxg4/HAYXjOQeT2VvKcIzpOhnnRGb8xdH0H7c=; b=nvlVU7jCSlJh103s08DH2j2XyzYsMH5bXu9WwepXIwgbVl40VNTvxGzhnybUbJvuJX eKqlqqW284WG6T1Bc6CCYg0qhDp9N46Qfj6vnkN3yTSU7T4VSKilvxid4HBU6MbGP8L+ tUcjX+fnJr2VcdfSnj+wm0S46FrAya5Ag9WCTLZ1BFFw/QAQSWuPPxnlFKmLF5dcYwQV I0DFfTvY+AHfCLZmsDlzoSx7BaxDGg1cJ7UPZUQvmkZZ+hlvft5aXZqtO9nv3o2DvcIF OuoRp/xkmj/7T+il1/TMnRysGBXlWFmQQA8Nfp5J26b8iq6cfeAhC8BAZz8eFLfxpuui 1HXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464078; x=1782068878; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pt0EyeSxg4/HAYXjOQeT2VvKcIzpOhnnRGb8xdH0H7c=; b=T5xMSsVdr48FlS3Gyfg7kkL0MYvFtVEuvCkZ2T/POV0HaHbzsygJdvXCmpH+VNtf0R 7AzA45pD29R/V4uwihB2KfWCUgWWU7rgyw9kVJ9cNQrqktX6v4HgsncDpj0SVJSOsw+o QseK1Fj3EQuNKV8L+Q9cvSPWaLIF/l5CBN7Px6YKvy/xJhHTDPMSvGgI4xsFQgQTuKry O2yRoOyDYzDEKshe0TQzyWKFsA5O8/TdYEDWea27KPK0Dazlcc3jXS/gyS3QA4flMeRg zRywM2fZhrAvjsOBbceblRRMTPzs7A9EfQtBK95aJhrjvX8E5Q8EPA2p5Jp0behgk2Sn aWXg== X-Gm-Message-State: AOJu0Yxe1+Y0yGoxqPymeteLWo8thtujZ5ej1H+W2IEgI+F14xb/pFZt tknh5lmIXpUaPrtoMHhVfJ38fU84Ut64NQMXNZRlndGNowYMRloIIGWbZsisvB9QkbzvgG0N17H 8PmxoU5mQvuy0ed7LWX+Y2aujH/YPVF0U56oW3imDge2teBcWjtyKB0+56a3uL/NU+Usu6STc9C lfg8Bii2VVl3aubVIKiJ0du2AB6MtrHG/z6A== X-Gm-Gg: Acq92OFe5Cb+Z7FpWDg1SrcCSjlOIHB/ETlU0z9OPjRDmiaudyLeslRawTmOlGaGUQy VsfWyDZKFNPwLUVq3JHSxTCCEa4frx5c22wYRx4bLwa3Z5OZ3YWZnXOGGPT3QfVne3su6dt5UPf WLWtw7Lhhkz7v19zXdFzhrU7FbClb6c3xZ8sPyTxPE2BMYuqi2lReD+7ALj2g6wbNncMgQyxdFp Bhu11XoIjUAIAxgiKpM/gscaJ4S/Nzx2jbqTklqmN1oX/CaVdJGldxxi0vnb5vwwX5FeuNuoXbg W2c2EUOur96+ThkegqUNebaq6XcwloYBRbEAW6m10B4m76ftegpIDMePmn8A8jhHAcuPw8mUpj9 gxQRNIxjnu9SFSRxXvGC8XK/kIfhNQRS/4RFc1Ql8TgQ= X-Received: by 2002:a05:600c:a210:b0:490:e60b:5fcd with SMTP id 5b1f17b1804b1-490ec521002mr87983895e9.32.1781464078154; Sun, 14 Jun 2026 12:07:58 -0700 (PDT) X-Received: by 2002:a05:600c:a210:b0:490:e60b:5fcd with SMTP id 5b1f17b1804b1-490ec521002mr87983605e9.32.1781464077509; Sun, 14 Jun 2026 12:07:57 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:55 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Stefano Garzarella Subject: [PULL 050/106] vhost: use consistent naming for backend handlers Message-ID: <83a2e2ecc108b44e2a49ec44d2ff0150dac984a2.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464327598158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Most of handlers start from simply .vhost_, except for these four, starting from .vhost_backend_. Let's rename them to be consistent. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Michael S. Tsirkin Based-on: <20260206095258.894504-1-vsementsov@yandex-team.ru> Signed-off-by: Michael S. Tsirkin Message-Id: <20260420202032.714884-3-vsementsov@yandex-team.ru> --- hw/virtio/vhost-backend.c | 6 +++--- hw/virtio/vhost-user.c | 8 ++++---- hw/virtio/vhost-vdpa.c | 6 +++--- hw/virtio/vhost.c | 14 +++++++------- include/hw/virtio/vhost-backend.h | 17 ++++++++--------- 5 files changed, 25 insertions(+), 26 deletions(-) diff --git a/hw/virtio/vhost-backend.c b/hw/virtio/vhost-backend.c index fea88afc39..caeadd069b 100644 --- a/hw/virtio/vhost-backend.c +++ b/hw/virtio/vhost-backend.c @@ -358,9 +358,9 @@ static void vhost_kernel_set_iotlb_callback(struct vhos= t_dev *dev, =20 const VhostOps kernel_ops =3D { .backend_type =3D VHOST_BACKEND_TYPE_KERNEL, - .vhost_backend_init =3D vhost_kernel_init, - .vhost_backend_cleanup =3D vhost_kernel_cleanup, - .vhost_backend_memslots_limit =3D vhost_kernel_memslots_limit, + .vhost_init =3D vhost_kernel_init, + .vhost_cleanup =3D vhost_kernel_cleanup, + .vhost_memslots_limit =3D vhost_kernel_memslots_limit, .vhost_net_set_backend =3D vhost_kernel_net_set_backend, .vhost_scsi_set_endpoint =3D vhost_kernel_scsi_set_endpoint, .vhost_scsi_clear_endpoint =3D vhost_kernel_scsi_clear_endpoint, diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 6978d8ee94..78ffb25d6b 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -3115,10 +3115,10 @@ void vhost_user_qmp_status(struct vhost_dev *dev, V= irtioStatus *status) =20 const VhostOps user_ops =3D { .backend_type =3D VHOST_BACKEND_TYPE_USER, - .vhost_backend_init =3D vhost_user_backend_init, - .vhost_backend_cleanup =3D vhost_user_backend_cleanup, - .vhost_backend_memslots_limit =3D vhost_user_memslots_limit, - .vhost_backend_no_private_memslots =3D vhost_user_no_private_memsl= ots, + .vhost_init =3D vhost_user_backend_init, + .vhost_cleanup =3D vhost_user_backend_cleanup, + .vhost_memslots_limit =3D vhost_user_memslots_limit, + .vhost_no_private_memslots =3D vhost_user_no_private_memslots, .vhost_set_log_base =3D vhost_user_set_log_base, .vhost_set_mem_table =3D vhost_user_set_mem_table, .vhost_set_vring_addr =3D vhost_user_set_vring_addr, diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c index 9c7634e243..9347462489 100644 --- a/hw/virtio/vhost-vdpa.c +++ b/hw/virtio/vhost-vdpa.c @@ -1590,8 +1590,8 @@ static bool vhost_vdpa_force_iommu(struct vhost_dev = *dev) =20 const VhostOps vdpa_ops =3D { .backend_type =3D VHOST_BACKEND_TYPE_VDPA, - .vhost_backend_init =3D vhost_vdpa_init, - .vhost_backend_cleanup =3D vhost_vdpa_cleanup, + .vhost_init =3D vhost_vdpa_init, + .vhost_cleanup =3D vhost_vdpa_cleanup, .vhost_set_log_base =3D vhost_vdpa_set_log_base, .vhost_set_vring_addr =3D vhost_vdpa_set_vring_addr, .vhost_set_vring_num =3D vhost_vdpa_set_vring_num, @@ -1602,7 +1602,7 @@ const VhostOps vdpa_ops =3D { .vhost_get_features =3D vhost_vdpa_get_features, .vhost_set_owner =3D vhost_vdpa_set_owner, .vhost_set_vring_endian =3D NULL, - .vhost_backend_memslots_limit =3D vhost_vdpa_memslots_limit, + .vhost_memslots_limit =3D vhost_vdpa_memslots_limit, .vhost_set_mem_table =3D vhost_vdpa_set_mem_table, .vhost_set_features =3D vhost_vdpa_set_features, .vhost_reset_device =3D vhost_vdpa_reset_device, diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 4d42f8bda4..ffd7d404cc 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -58,7 +58,7 @@ unsigned int vhost_get_max_memslots(void) struct vhost_dev *hdev; =20 QLIST_FOREACH(hdev, &vhost_devices, entry) { - max =3D MIN(max, hdev->vhost_ops->vhost_backend_memslots_limit(hde= v)); + max =3D MIN(max, hdev->vhost_ops->vhost_memslots_limit(hdev)); } return max; } @@ -69,7 +69,7 @@ unsigned int vhost_get_free_memslots(void) struct vhost_dev *hdev; =20 QLIST_FOREACH(hdev, &vhost_devices, entry) { - unsigned int r =3D hdev->vhost_ops->vhost_backend_memslots_limit(h= dev); + unsigned int r =3D hdev->vhost_ops->vhost_memslots_limit(hdev); unsigned int cur_free =3D r - hdev->mem->nregions; =20 if (unlikely(r < hdev->mem->nregions)) { @@ -664,8 +664,8 @@ static bool vhost_section(struct vhost_dev *dev, Memory= RegionSection *section) */ if ((memory_region_get_fd(section->mr) < 0 || !qemu_ram_is_shared(section->mr->ram_block)) && - dev->vhost_ops->vhost_backend_no_private_memslots && - dev->vhost_ops->vhost_backend_no_private_memslots(dev)) { + dev->vhost_ops->vhost_no_private_memslots && + dev->vhost_ops->vhost_no_private_memslots(dev)) { trace_vhost_reject_section(mr->name, 2); return false; } @@ -1674,7 +1674,7 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaq= ue, r =3D vhost_set_backend_type(hdev, backend_type); assert(r >=3D 0); =20 - r =3D hdev->vhost_ops->vhost_backend_init(hdev, opaque, errp); + r =3D hdev->vhost_ops->vhost_init(hdev, opaque, errp); if (r < 0) { goto fail; } @@ -1691,7 +1691,7 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaq= ue, goto fail; } =20 - limit =3D hdev->vhost_ops->vhost_backend_memslots_limit(hdev); + limit =3D hdev->vhost_ops->vhost_memslots_limit(hdev); if (limit < MEMORY_DEVICES_SAFE_MAX_MEMSLOTS && memory_devices_memslot_auto_decision_active()) { error_setg(errp, "some memory device (like virtio-mem)" @@ -1809,7 +1809,7 @@ void vhost_dev_cleanup(struct vhost_dev *hdev) g_free(hdev->mem); g_free(hdev->mem_sections); if (hdev->vhost_ops) { - hdev->vhost_ops->vhost_backend_cleanup(hdev); + hdev->vhost_ops->vhost_cleanup(hdev); } assert(!hdev->log); =20 diff --git a/include/hw/virtio/vhost-backend.h b/include/hw/virtio/vhost-ba= ckend.h index 57497e197a..aab6bf3ef7 100644 --- a/include/hw/virtio/vhost-backend.h +++ b/include/hw/virtio/vhost-backend.h @@ -51,10 +51,9 @@ struct vhost_scsi_target; struct vhost_iotlb_msg; struct vhost_virtqueue; =20 -typedef int (*vhost_backend_init)(struct vhost_dev *dev, void *opaque, - Error **errp); -typedef int (*vhost_backend_cleanup)(struct vhost_dev *dev); -typedef int (*vhost_backend_memslots_limit)(struct vhost_dev *dev); +typedef int (*vhost_init)(struct vhost_dev *dev, void *opaque, Error **err= p); +typedef int (*vhost_cleanup)(struct vhost_dev *dev); +typedef int (*vhost_memslots_limit)(struct vhost_dev *dev); =20 typedef int (*vhost_net_set_backend_op)(struct vhost_dev *dev, struct vhost_vring_file *file); @@ -131,7 +130,7 @@ typedef int (*vhost_crypto_create_session_op)(struct vh= ost_dev *dev, typedef int (*vhost_crypto_close_session_op)(struct vhost_dev *dev, uint64_t session_id); =20 -typedef bool (*vhost_backend_no_private_memslots_op)(struct vhost_dev *dev= ); +typedef bool (*vhost_no_private_memslots_op)(struct vhost_dev *dev); =20 typedef int (*vhost_get_inflight_fd_op)(struct vhost_dev *dev, uint16_t queue_size, @@ -166,10 +165,10 @@ typedef int (*vhost_check_device_state_op)(struct vho= st_dev *dev, Error **errp); =20 typedef struct VhostOps { VhostBackendType backend_type; - vhost_backend_init vhost_backend_init; - vhost_backend_cleanup vhost_backend_cleanup; - vhost_backend_memslots_limit vhost_backend_memslots_limit; - vhost_backend_no_private_memslots_op vhost_backend_no_private_memslots; + vhost_init vhost_init; + vhost_cleanup vhost_cleanup; + vhost_memslots_limit vhost_memslots_limit; + vhost_no_private_memslots_op vhost_no_private_memslots; vhost_net_set_backend_op vhost_net_set_backend; vhost_net_set_mtu_op vhost_net_set_mtu; vhost_scsi_set_endpoint_op vhost_scsi_set_endpoint; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464104; cv=none; d=zohomail.com; s=zohoarc; b=j2RcUr69KiKgzG4f8/09nMMxzAdWPK+MAGCLQLkrqnCeKdOhs4FxxFIRoorZcAOGYzzHoNq/EjIvATLdAPI6QjZK5SbCobGQ9CZjt2p4+uj+vboywPmy3YCpOB8zNY4gbrpPqUEL5UAG7yqIq9Ge86LYXuAXVs5b86alFVG9/RA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464104; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=V6hUAUjTOLpx6Ar8t3YIETcJ6oUZLH3lFxtItrYg4n8=; b=CJ0IUbKB0mgmXNY1kLjMsISDeML7t9rfD4RfW5u/pJoCd42fZ/NjvG5MIjvAnE0NUdPOuEl/2w0h2+mJfU4OXze4eZxYIGbJT8DzLE+5Fxr6QS32edxKoHkWC4kjsWvvWXJJpTD5Ym4bU/jIw63q57/lru+ya9P7mZdTqdcBKEU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464104677867.3712908111969; Sun, 14 Jun 2026 12:08:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBi-0004GD-SG; Sun, 14 Jun 2026 15:08:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBg-00041W-Pu for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:04 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBf-00025O-4C for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:04 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-557-1V2wm3RhNVW0aJY5FJ_l-A-1; Sun, 14 Jun 2026 15:08:01 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490aadb1386so18039865e9.0 for ; Sun, 14 Jun 2026 12:08:00 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492203d08bcsm184205355e9.13.2026.06.14.12.07.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:07:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464082; 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: in-reply-to:in-reply-to:references:references; bh=V6hUAUjTOLpx6Ar8t3YIETcJ6oUZLH3lFxtItrYg4n8=; b=JXfx57Ha1yayniLJbebUbhtyJWcBOkl22zypCF9xvYhYekUwmg5IhZs/hZ2XTHj4GiKxPk CV8n8KCXyOXNRBFnezv47LUy7xqMVhT4qWtchDl6Muv2dOwUV+3CBNrxheJAP7/TSG6x1s zUgeC+MfbNorcviGOhmiLHYjh2KiWXg= X-MC-Unique: 1V2wm3RhNVW0aJY5FJ_l-A-1 X-Mimecast-MFC-AGG-ID: 1V2wm3RhNVW0aJY5FJ_l-A_1781464080 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464080; x=1782068880; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=V6hUAUjTOLpx6Ar8t3YIETcJ6oUZLH3lFxtItrYg4n8=; b=kPFG/bNJui9z+6arh2yvvAJOAhY+jPPVoJpD5k4+TTZtxLpsOcV13hCYnqivpTzIGp eL6M3VkuHTrdC2S91u9ZKLbf2RPkLV7lS9B20nPYJdMdkA2BIbsexQ9HoU78A1K1p0qt B4BbOiJLBhIIB8meEgL0RLdHUprY1mjvX9kN/OJsSLgZmYPM5q8hRlbjgmU3ER9bgHKD kaL3ceDhKjImW5Clsxxo6f7ZDs1Bkh5iGk7ys6D6eUB9+fSH8vPwT0UFCKxdjIr9Bo84 4m0tmIt93unTUKh2WZ5xdI6JH850dAcoSzfHmscHRzPAmyyHlkCOhc5zYLyL+RKD93Yb aE/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464080; x=1782068880; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=V6hUAUjTOLpx6Ar8t3YIETcJ6oUZLH3lFxtItrYg4n8=; b=lSQaM+uG3uF3a+0Rv5IlN4BR+nwnnrE+USgQBjqmDnREYT1goPhKwBU81NnFCRP3C6 STOJ8BWj67BF2khWdFOdNk2RJOlQ/5+kJ4A6zUuM+MubWtAw46HoJouowXZPFv8yXx2j wUj+ZSzRyk6DpP5W8uaKnfit+dPngIVZPBIBJ8GYHXphX1zRfCju0qeIYYbqtcdClD9k vbJgTRsmYRw54Gi8XnnBo8CNVAa4t8Wr8iJEAqWc1uKaZN5vITDxLFhA8xAw2QnoKx1s W8sKJIOPSGyF/114VZox2Xqz8H3G6T9xo4OqNKhsOEYlFoh7Wn8ejh/tCF8sqDy8pPNz MuVw== X-Gm-Message-State: AOJu0YwjIMHlk+fdn5dW04brQFwC2KdKd6fF4Jt3RNJ1A2wcJIffse7e xPjTrhiz25OW69XL8vdqtThA6x0Z/LDnGEylG7DAl3fu1HcnxAIr1I9WV5tdkfe6vvqvZRtR3pb PI7kRC+NfIatgUcT8+CiGI3/yRs3y9dXHEwN+dB1g63+ske3UQEwGDDYxEnqVh/KJBiFNV3HUw5 LuSwrPUR02sUg5EcRwLC9Ly4x/NoBIV6lg9w== X-Gm-Gg: Acq92OFnpCRUVDAo9uU8A+ykhbDl1CecS+OdMIeUTOUpIj1i3ecoNVgmzDXH8IAKw87 Ne+8W/WAwpElTDmxwxzAmovEkPxIz4BGJ5pJSM5Fr7XujVTS3admrP5D6nPW8OiiOARz4V3tN8Z BGTcHVCqPVp02aC1vJNAzZkUDXZ+iMSbSReUK0kCCISpoiGnYlGLs4YtKrNJR6ydGO7bbv6PSI6 GXriQG50bPceaDmnS5SiuAG2FQ4H6ztGKA1liEIfHzPmR/+s+P9SDXX17o7kax8Dp1e4cPukjXk DnozRU8/uFeC+LGV4FKsxo+0IKbRKgWDpDsRRP7cPx147L1PRnDeQqJzhs8k/sbDeM9zUbgDVpT qBo0Zmn2McRX8FoJNmdH7GWfkfiNd16yMWX8lN8+8k24= X-Received: by 2002:a05:600c:1912:b0:490:bbc1:c9be with SMTP id 5b1f17b1804b1-490ec30f6aamr110711965e9.0.1781464079896; Sun, 14 Jun 2026 12:07:59 -0700 (PDT) X-Received: by 2002:a05:600c:1912:b0:490:bbc1:c9be with SMTP id 5b1f17b1804b1-490ec30f6aamr110711765e9.0.1781464079394; Sun, 14 Jun 2026 12:07:59 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:57 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Stefano Garzarella Subject: [PULL 051/106] vhost: rename vhost-backend.c to vhost-kernel.c Message-ID: <78bdeadfe60b051871f1ca3fffbce9ce1304bd4f.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464106683158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy This file is totally about vhost-kernel implementation, not generic code. Let's finally give it corresponding name. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260420202032.714884-4-vsementsov@yandex-team.ru> --- hw/virtio/meson.build | 2 +- hw/virtio/{vhost-backend.c =3D> vhost-kernel.c} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename hw/virtio/{vhost-backend.c =3D> vhost-kernel.c} (99%) diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build index 0ea89d8af4..3943e0d006 100644 --- a/hw/virtio/meson.build +++ b/hw/virtio/meson.build @@ -14,7 +14,7 @@ system_virtio_ss.add(files('virtio-qmp.c')) =20 if have_vhost system_virtio_ss.add(files('vhost.c')) - system_virtio_ss.add(files('vhost-backend.c', 'vhost-iova-tree.c')) + system_virtio_ss.add(files('vhost-kernel.c', 'vhost-iova-tree.c')) if have_vhost_user system_virtio_ss.add(files('vhost-user.c')) system_virtio_ss.add(files('vhost-user-base.c')) diff --git a/hw/virtio/vhost-backend.c b/hw/virtio/vhost-kernel.c similarity index 99% rename from hw/virtio/vhost-backend.c rename to hw/virtio/vhost-kernel.c index caeadd069b..3390b48c6f 100644 --- a/hw/virtio/vhost-backend.c +++ b/hw/virtio/vhost-kernel.c @@ -1,5 +1,5 @@ /* - * vhost-backend + * vhost-kernel * * Copyright (c) 2013 Virtual Open Systems Sarl. * --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464120; cv=none; d=zohomail.com; s=zohoarc; b=buhq4SaJlKeAinOrKrnBHAci3CaDTTfmsfMwBgz85dDGaOwWyCNLCWHBe856TdqjKbKzBeGyQn9aC7oV/S/V+s+TBODnRVD7YJK610HmGY4xxVk02k6XuRatcVJjaonuGpgkWOEz+KEttA8TEJw9sKZD/pzRamTMJNkSqdbfuBk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464120; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NlDgjrdCBxb5NnIPdmBEmzWvRwRkTmziOuRUeAZBzBs=; b=U5tk/yQlPKos6uvX6+D/S5eL9dk3paD2/gQK5m/MJut9SDOJYUKp3GHlx9JpCe12w3fkNnWsPV5jUxxOJpU+I0WIR+DAInwYbMB/NsjNvEFZwOqVlnRe2e6fFIPSIdLQA8NASgEgmYdBqsUcgTt+Jir38PhVS/LvDXyAiaODXQI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464120379152.9668634954685; Sun, 14 Jun 2026 12:08:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBk-0004Wo-Sn; Sun, 14 Jun 2026 15:08:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBj-0004IV-8V for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:07 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBh-00025l-Co for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:06 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-618-4C0WhOzuOcSuzIqDeLQkqw-1; Sun, 14 Jun 2026 15:08:03 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-45ef4931de5so2132154f8f.1 for ; Sun, 14 Jun 2026 12:08:03 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922033dd3esm176523705e9.8.2026.06.14.12.08.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464084; 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: in-reply-to:in-reply-to:references:references; bh=NlDgjrdCBxb5NnIPdmBEmzWvRwRkTmziOuRUeAZBzBs=; b=e1TlBBOGE57rbQWTvFv7w4Ra2dlqZnE/iKegpC0LTPpJzoQhbA2mKgFaVoq7kDaymxEHWO ys33yJ50e7XRbbQiAGXvAnfIztU+3aX8CzNZmRkg4vWojT6DeoKAjoTrDOsv+heNpM3r3f zzgc/zbXpvuZAtMVLXXTDJrAwPZgxyY= X-MC-Unique: 4C0WhOzuOcSuzIqDeLQkqw-1 X-Mimecast-MFC-AGG-ID: 4C0WhOzuOcSuzIqDeLQkqw_1781464082 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464082; x=1782068882; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=NlDgjrdCBxb5NnIPdmBEmzWvRwRkTmziOuRUeAZBzBs=; b=jqykcBOwZVsRnv83XFZ5cUCnvJ2UtJ9l6d7RracCYaYyt75G8U9rruPhtaOH6m08jz uIeu4DzxSUF99tdw5BykEraliWd5QvRCz5SyOtfeIF6GJaV2JWjjVenRa9NQNZbW4WCZ /3RcuPLRzTZBRy4Xkbi3+vwanMQ/Kql20DKJeJYhik5SEzMgbo9EOilxySETu3yCNmlT kjsB7oOj5OjccL33tDg1gXAQ9ADoC3MIP0B+NsiyRTwj8fKq+xf+g9gwW6c983qlCEk9 /CW2VH/yL8hO623pbgG9E9oQtfopp3k6RkRhEyh00oTHwV6AWKcPxfAHoYetXMOyDBWu Lnag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464082; x=1782068882; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NlDgjrdCBxb5NnIPdmBEmzWvRwRkTmziOuRUeAZBzBs=; b=TVQgvCQL/2nzOCNF7u1l8rsolL4Y/GA9W4jgyhmMXpDvIj5tgV9ClSX72hy3KLO7nT yzqdOpT9lMhHJNXHQvIklhmDdQytJ71g/YOrnApifW2ZwxugHlU936BxPjILIShg4FVw b/G5lV5khBcxITkynEXCTfWnChMSTBD/3oZxIVpeYvBql/RA178MkMePaGck9pjCgM79 zjTZqEXgbNvZUOiWN0CW76ribQCNk53qH6IoeAAeKVjlpixPzAELHvPmRdISGeaXe5YK HNWR3ng1+3yqXS/2SKVjw5T4yx6q5FUHW6CNdyJASZbeUZYU1D7+0FbyyM6YlsU+pJMW jCyw== X-Gm-Message-State: AOJu0Yy99n6ra7Gja3eDG2eaUNOfrHz5ULQSQjABqiw0yzwwEi0+c9ds 0HNuFeEI0FeIw9bPozmKkhBKRkJUIJTvX225cgu1u2ENWZYv4aI5lIIDte7Qp28B8JujFavQaD7 CwNv8HTsV5ccLF0y8ryekUdhA5zMHfS6fkgPcMcKKXtq01FT/ZvMuHg5w0by5FEwsm03CEo3q3g yWGFlK4IIvPmnJ+akrrMK3dPFezJlMEmzMQA== X-Gm-Gg: Acq92OHOroo6bXBzG9JFsJ/5TiZ1Pw4KJzuFkekpms/Si59ngtVU0QjGNcNMbkS54px SNOkAYMvIjana6t1lhu8GDoMsFgk9S7J+JwmHfw7uctOAR2vvrVwpcJzL9z/thkOhTxisauUCn/ e0xdC6jpFijv5JZe/IXv8k5KH13GIVMR9X5KGVd04PeYE5YCGKArObDKw4B/QuJMfSMhlypUn0m oWZ2povCaMt+DfX5Gwb618XGJiUqVw/OsvSSLRdUHYJN1viI/dmdlXkAuvC6szSbB8JkyPxtIqe uF37I4JAzj68hsZTj147+BX8JA5rqjaOBdd6kP0gVcpWp2jPxhq+lY+PKAnaiZTg8iA0YzVc9CF NBgVtiHMwcR6Ak67eFbzje29CBAh0eonUwdL6GumOLjk= X-Received: by 2002:a05:600c:1d02:b0:489:32b:ac0b with SMTP id 5b1f17b1804b1-490ec48fec5mr124792445e9.6.1781464082030; Sun, 14 Jun 2026 12:08:02 -0700 (PDT) X-Received: by 2002:a05:600c:1d02:b0:489:32b:ac0b with SMTP id 5b1f17b1804b1-490ec48fec5mr124792085e9.6.1781464081439; Sun, 14 Jun 2026 12:08:01 -0700 (PDT) Date: Sun, 14 Jun 2026 15:07:59 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Stefano Garzarella Subject: [PULL 052/106] vhost: replace .vhost_vq_get_addr() with .vhost_phys_vring_addr() Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464120956158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Make a simper handler to consolidate the logic in one place. That helps further changes. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Michael S. Tsirkin Based-on: <20260206095258.894504-1-vsementsov@yandex-team.ru> Signed-off-by: Michael S. Tsirkin Message-Id: <20260420202032.714884-5-vsementsov@yandex-team.ru> --- hw/virtio/vhost-vdpa.c | 13 +++---------- hw/virtio/vhost.c | 12 ++++++------ include/hw/virtio/vhost-backend.h | 6 ++---- 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c index 9347462489..9e1aa4860a 100644 --- a/hw/virtio/vhost-vdpa.c +++ b/hw/virtio/vhost-vdpa.c @@ -1571,16 +1571,9 @@ static int vhost_vdpa_set_owner(struct vhost_dev *de= v) return 0; } =20 -static int vhost_vdpa_vq_get_addr(struct vhost_dev *dev, - struct vhost_vring_addr *addr, struct vhost_virtqueue = *vq) +static bool vhost_vdpa_phys_vring_addr(struct vhost_dev *dev) { - assert(dev->vhost_ops->backend_type =3D=3D VHOST_BACKEND_TYPE_VDPA); - addr->desc_user_addr =3D (uint64_t)(unsigned long)vq->desc_phys; - addr->avail_user_addr =3D (uint64_t)(unsigned long)vq->avail_phys; - addr->used_user_addr =3D (uint64_t)(unsigned long)vq->used_phys; - trace_vhost_vdpa_vq_get_addr(dev, vq, addr->desc_user_addr, - addr->avail_user_addr, addr->used_user_ad= dr); - return 0; + return true; } =20 static bool vhost_vdpa_force_iommu(struct vhost_dev *dev) @@ -1617,7 +1610,7 @@ const VhostOps vdpa_ops =3D { .vhost_send_device_iotlb_msg =3D NULL, .vhost_dev_start =3D vhost_vdpa_dev_start, .vhost_get_device_id =3D vhost_vdpa_get_device_id, - .vhost_vq_get_addr =3D vhost_vdpa_vq_get_addr, + .vhost_phys_vring_addr =3D vhost_vdpa_phys_vring_addr, .vhost_force_iommu =3D vhost_vdpa_force_iommu, .vhost_set_config_call =3D vhost_vdpa_set_config_call, .vhost_reset_status =3D vhost_vdpa_reset_status, diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index ffd7d404cc..564a5d4698 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1093,16 +1093,16 @@ static int vhost_virtqueue_set_addr(struct vhost_de= v *dev, struct vhost_virtqueue *vq, unsigned idx, bool enable_log) { + bool phys =3D dev->vhost_ops->vhost_phys_vring_addr && + dev->vhost_ops->vhost_phys_vring_addr(dev); struct vhost_vring_addr addr; int r; memset(&addr, 0, sizeof(struct vhost_vring_addr)); =20 - if (dev->vhost_ops->vhost_vq_get_addr) { - r =3D dev->vhost_ops->vhost_vq_get_addr(dev, &addr, vq); - if (r < 0) { - VHOST_OPS_DEBUG(r, "vhost_vq_get_addr failed"); - return r; - } + if (phys) { + addr.desc_user_addr =3D (uint64_t)(unsigned long)vq->desc_phys; + addr.avail_user_addr =3D (uint64_t)(unsigned long)vq->avail_phys; + addr.used_user_addr =3D (uint64_t)(unsigned long)vq->used_phys; } else { addr.desc_user_addr =3D (uint64_t)(unsigned long)vq->desc; addr.avail_user_addr =3D (uint64_t)(unsigned long)vq->avail; diff --git a/include/hw/virtio/vhost-backend.h b/include/hw/virtio/vhost-ba= ckend.h index aab6bf3ef7..7cc3bb5441 100644 --- a/include/hw/virtio/vhost-backend.h +++ b/include/hw/virtio/vhost-backend.h @@ -141,9 +141,7 @@ typedef int (*vhost_set_inflight_fd_op)(struct vhost_de= v *dev, =20 typedef int (*vhost_dev_start_op)(struct vhost_dev *dev, bool started); =20 -typedef int (*vhost_vq_get_addr_op)(struct vhost_dev *dev, - struct vhost_vring_addr *addr, - struct vhost_virtqueue *vq); +typedef bool (*vhost_phys_vring_addr_op)(struct vhost_dev *dev); =20 typedef int (*vhost_get_device_id_op)(struct vhost_dev *dev, uint32_t *dev= _id); =20 @@ -211,7 +209,7 @@ typedef struct VhostOps { vhost_get_inflight_fd_op vhost_get_inflight_fd; vhost_set_inflight_fd_op vhost_set_inflight_fd; vhost_dev_start_op vhost_dev_start; - vhost_vq_get_addr_op vhost_vq_get_addr; + vhost_phys_vring_addr_op vhost_phys_vring_addr; vhost_get_device_id_op vhost_get_device_id; vhost_force_iommu_op vhost_force_iommu; vhost_set_config_call_op vhost_set_config_call; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464479; cv=none; d=zohomail.com; s=zohoarc; b=GdU4dt4+3fimU8panGhIFYIAqh3qjXISLmjhgb3+FBGncIbA7az6ksp1ZVcr9aayGQ47NaDor81kf2ELkwXYKwH5V6odSPijWWW0gGuVql7zRHoFa7udueXp6VbhtQXGZsll30UgyncH0A6sUVbAJErVP2Ka8OWF0nl/2hJ/89M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464479; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6w5MPdQ6Q8V00xQPWk2w58F/DB6Chuw3ITEkFRbQpCI=; b=R27y8GUV3i3mebJX3SLho+6d540vJb3UI2Rwd4BcjyU7Y3ws6kqIsQgnp93qDrfZYJyyjjpJaTEt3b94t5zErdnph1RGjNsBz9ZsmS7AN+LSp7njl7AIDbRd2i/b2MvY69dP85NsVIfR9HxrN3Q0u3rjC1Aku+pRaNGwigIveG0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464479649471.6209568814937; Sun, 14 Jun 2026 12:14:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBx-0005hF-30; Sun, 14 Jun 2026 15:08:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBv-0005Rp-2N for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBs-00029O-I2 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:18 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-452-XLSI9PgqOieISxxfTLHMtw-1; Sun, 14 Jun 2026 15:08:07 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-45f3d008865so2062708f8f.0 for ; Sun, 14 Jun 2026 12:08:06 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f26f1cdsm27904086f8f.11.2026.06.14.12.08.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464093; 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: in-reply-to:in-reply-to:references:references; bh=6w5MPdQ6Q8V00xQPWk2w58F/DB6Chuw3ITEkFRbQpCI=; b=PuiuvXR/16EDAg1iel0crbMGvw+TikBV67W1s5LWbFVJOTAlLiua3SBUn+IKZ2E9IH4Jsy tvwmpasP+HbAF2VP89ImnD8BD2k0YFBSkYy1fXFtO92G6D0Ocj2OKm8hxGqus625Oe3Exv p86b2UBLiX64raDRckjUp/y0pjMaNGw= X-MC-Unique: XLSI9PgqOieISxxfTLHMtw-1 X-Mimecast-MFC-AGG-ID: XLSI9PgqOieISxxfTLHMtw_1781464084 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464084; x=1782068884; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=6w5MPdQ6Q8V00xQPWk2w58F/DB6Chuw3ITEkFRbQpCI=; b=XQw7f8IJGM1yHHMSgseB6y2BwlFu4IoKCFdQp9h6dekHMfaf5ST4tho49TEwnhX+qj mYMU0f3xawmOysJ1R9Ts0k5WTeBL6y514RBFfNCeeZjhRZyd2r4Sg24WnMeQrGwdUhgE 7Pw5RPzDxmDANv5EGCYY1VtT2Bxk4W/xGgo8SFNpvvC07NatZzTg7BxJ/VLpyIQSnTzx KeZGDFEPhHGE/h61LStzFxof83uSO4D/RsPfIiybUozGKjiN/BcvWyO3F+D8m034qnAM 35M0AMnkLSFiJqnnznSY8XKL4PNMs+rFvFakEdVIujb4glojjTNL5eUwQrn2t5nrTRd+ vFuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464084; x=1782068884; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6w5MPdQ6Q8V00xQPWk2w58F/DB6Chuw3ITEkFRbQpCI=; b=ZTyq3HkVh0YlYbvy9a4HWJrPY0P8B0Nu4Pp4N1vMmxGco4uWOeb7UfmqtWT1T+GaHx zWbU+3Wov2LlRXSCZHAgo4NNHfTYBqA3ZUQ2ETghp8fWrHsMtebwm9Ikumb6Jan786f9 BNyQAd+ncTmGmefJ6Y15WBpeYsGPZrpBCrtMSdIS67WywrmbK3QwmQp4dr1Ahjb0VqTI qCIOVLLGCe2N6xn+bV9mv9BJhVS04rCX5Y3/qIoF3v/euSUArUi288BwX4XreuwfOXHZ iAhUXtFd++d5SKNtuCrHU6/7qMFCrk+Ej8RDR0mz1Sj02EJ1Pb1zlOnfwAgAjkgYEdXW h9Ow== X-Gm-Message-State: AOJu0YwGKmkY+Ufp1YvYjYWrNwrU315j3a3RIQw73PURrhWTka45Phon 5/wkn8jddEv3Fo+YL2uiefllylyTm2L0PSr8E5s/Nve8N+UtEahWn7tbPLRlFPbaHD5ZKU+neid rcof/A6r6F+6v3sjSxVA4NBjkcvL4NMCKGAldT0PEVVbMCcRi1+JXkaDhHonFK6M50lSoE8GcPj rEhJttS8NDezUDXH/6iR3jZxHWqeUe4SB6zQ== X-Gm-Gg: Acq92OES4Um8tvf9DCGmbcvFdUAWfKjDmyLR46NQm4ZQ2NkwQZHji4R0fnbhwNdmKwi ihmG51jEHFFyC3kj7P0E6S1b1Wf1Gif4xNWUjHqBbBlN8ETozv48ylM/VHpMFL2S2J/GSQaAF0G TxtR3AIVReYT16PAEFZJnmF8dMFDiIYv3B2YADudNImE5FFrtLESPi2D/EJ0AnamncRxeegxwAk O9Ls3Gl3gplQtt9d4ZNXdD+RivfxxZHZkCBGk9pP65CQncQZa95v/Paa+Rj00sYXkF97P/JS4YL j0slPchkLO0CgK34r5Q/w8m9YLiP1fDNYn8Vxl2/uqY6e6m0R2eovnp0+8D5ZKW72qbtihYQEV4 Yg2DeBuEYLlmTjM5dAzQv9RPgpSC+B70m4+FIEMdHRww= X-Received: by 2002:a5d:5f41:0:b0:460:11a7:f82e with SMTP id ffacd0b85a97d-4606cb29f5fmr12171302f8f.8.1781464084163; Sun, 14 Jun 2026 12:08:04 -0700 (PDT) X-Received: by 2002:a5d:5f41:0:b0:460:11a7:f82e with SMTP id ffacd0b85a97d-4606cb29f5fmr12171274f8f.8.1781464083711; Sun, 14 Jun 2026 12:08:03 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:01 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Stefano Garzarella Subject: [PULL 053/106] vhost: simplify vhost_memory_map() and vhost_memory_unmap() Message-ID: <846a29de2bd2a299acf54af2169c14b52fba6706.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464480063158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Make these functions simple wrappers around address_space_map() and address_space_unmap(). Move IOMMU handling logic one layer up to the callers. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Michael S. Tsirkin Based-on: <20260206095258.894504-1-vsementsov@yandex-team.ru> Signed-off-by: Michael S. Tsirkin Message-Id: <20260420202032.714884-6-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 564a5d4698..cc083572f4 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -456,21 +456,17 @@ static inline void vhost_dev_log_resize(struct vhost_= dev *dev, uint64_t size) static void *vhost_memory_map(struct vhost_dev *dev, hwaddr addr, hwaddr len, bool is_write) { - if (!vhost_dev_has_iommu(dev)) { - hwaddr mapped_len =3D len; - void *res =3D address_space_map(dev->vdev->dma_as, addr, &mapped_l= en, - is_write, MEMTXATTRS_UNSPECIFIED); - if (!res) { - return NULL; - } - if (len !=3D mapped_len) { - address_space_unmap(dev->vdev->dma_as, res, mapped_len, 0, 0); - return NULL; - } - return res; - } else { - return (void *)(uintptr_t)addr; + hwaddr mapped_len =3D len; + void *res =3D address_space_map(dev->vdev->dma_as, addr, &mapped_len, + is_write, MEMTXATTRS_UNSPECIFIED); + if (!res) { + return NULL; } + if (len !=3D mapped_len) { + address_space_unmap(dev->vdev->dma_as, res, mapped_len, 0, 0); + return NULL; + } + return res; } =20 static void vhost_memory_unmap(struct vhost_dev *dev, void **buffer, @@ -481,17 +477,18 @@ static void vhost_memory_unmap(struct vhost_dev *dev,= void **buffer, return; } =20 - if (!vhost_dev_has_iommu(dev)) { - address_space_unmap(dev->vdev->dma_as, *buffer, len, is_write, - access_len); - } - + address_space_unmap(dev->vdev->dma_as, *buffer, len, is_write, + access_len); *buffer =3D NULL; } =20 static void vhost_vrings_unmap(struct vhost_dev *dev, struct vhost_virtqueue *vq, bool touched) { + if (vhost_dev_has_iommu(dev)) { + return; + } + vhost_memory_unmap(dev, &vq->used, vq->used_size, touched, touched ? vq->used_size : 0); vhost_memory_unmap(dev, &vq->avail, vq->avail_size, 0, @@ -519,6 +516,14 @@ static int vhost_vrings_map(struct vhost_dev *dev, /* Queue might not be ready for start */ return 0; } + + if (vhost_dev_has_iommu(dev)) { + vq->desc =3D (void *)(uintptr_t)vq->desc_phys; + vq->avail =3D (void *)(uintptr_t)vq->avail_phys; + vq->used =3D (void *)(uintptr_t)vq->used_phys; + return 1; + } + vq->desc =3D vhost_memory_map(dev, vq->desc_phys, vq->desc_size, false= ); if (!vq->desc) { goto fail; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464296; cv=none; d=zohomail.com; s=zohoarc; b=Rh2gTwys1Vf7qdA3bNXsoNGRrLvHSGwp8puntC9j9Ae8DYduIX9rj+SS0PUMblOotcsL8FxSBLYYiWQ8ZUO38aj5mgnP7jIhqXweKPFxvynMNeB+P8KXnMu3K/HT703gA+gkvot2VLj7E7U5Dg7G486aPLcXFiyluGLg5Ec2AJM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464296; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OaUZT96fAwiJONpo6DOLyRAzoALjcbufa5FttKGfo4g=; b=f5/JY6kGLtLEm0heVERzc/Umwnn1LSgqlVva3pZS5CW4qzDANcXRehsnSpfczqbNUvYxHFe35Kz6+diagfpv8iKAN7hOVn95rFdR9QqhirgtwlqeD96YexAalZQri2OYRlnBURpIVL+2P8z8Awe0DSu73jRkonFkKPyGUWQkrL4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464296312162.83247985198886; Sun, 14 Jun 2026 12:11:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBo-0004dW-J9; Sun, 14 Jun 2026 15:08:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBn-0004d5-G2 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:11 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBl-00026b-L0 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:11 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-515-Yj4oPXSPNjaAAcO6YY6S8Q-1; Sun, 14 Jun 2026 15:08:07 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-45efa2f7009so1710068f8f.3 for ; Sun, 14 Jun 2026 12:08:07 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492203bfb27sm210094875e9.11.2026.06.14.12.08.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464088; 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: in-reply-to:in-reply-to:references:references; bh=OaUZT96fAwiJONpo6DOLyRAzoALjcbufa5FttKGfo4g=; b=XAlVzuLxvlOZ4GWgUe0onhmRBvZ4kRvWv8V/wpwaCgGHrJNJaoJzM4iEF7zlt/MwMFfG5J 3DXQ2I722cIgd69Yv9n2JqAbIkXCQ/vobwXpcaRnNALS2naDRX0S2OX1Qu1wWA5rG9DU/q 0swzKInrLu9dOH46wiN72eap88kfWr8= X-MC-Unique: Yj4oPXSPNjaAAcO6YY6S8Q-1 X-Mimecast-MFC-AGG-ID: Yj4oPXSPNjaAAcO6YY6S8Q_1781464086 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464086; x=1782068886; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=OaUZT96fAwiJONpo6DOLyRAzoALjcbufa5FttKGfo4g=; b=KbDGhzCtOILcuY3cEISiyD0MpuStv/JBydnq0CNKqgYiqAv/vUUVHjVEtzFeePbAg6 HzyVSVqu3SLXwA2uJ302f+CS96nUs4wutwB45Acz6ehn2qjE4HjplG/1qv7WCv3jaMSi Q0Asg6z4ZescLFz4ycWp3gBNoAO7c0meqoJ8CHLAeWaIipOtaWyjZNzckcgZY07xd6OT SOwfKfKVFTHpKRkNi9ZE8tIVOQcE8Uxugn01uTy/TqHshNIl/77LbZC0de9v3X4kM3VI eE4N1pognnurASqn90u+B/0funA3WomTtGv7sxZ/0Fid9V+wMfTOR4zehUnU0T6aTWse 4jhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464086; x=1782068886; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OaUZT96fAwiJONpo6DOLyRAzoALjcbufa5FttKGfo4g=; b=GLHzQhQPh5/g+TGGTt2SiJbKsNdnyi7gQIapyVBD9suSv7RrDHK262F/2MoEpuj2NW zkhBVMUO4jYsaYD3IPaaZOI4T9d3WK3wvat62ELx+hx85jThdiR12xgYEHiMZHXBsYW4 wM5gAS9/TILbTSB4+7XafwNHX8BZ++YIcTHhZkHSbP/hYlgJFnKSMYkDX6jJiEZo2mA+ koSsllZ1N6dX+jkOuoqriyBFpr7YxXj704MeG5Dh56aW//avwAsE8j6FsjCKDp1iC5k5 Z4OVbt0uL5POchh7JuAQXYDnWYGFd5ND75YtbP5fvHqENuMZWiSMDR6kbd73GXYogsAe 0F9g== X-Gm-Message-State: AOJu0YxvFOSsGpfA1w0k5DPBSEVDNfFenXGOGI2VKlsxaPv/K358Ue70 BbNIyaTUrbL2f1ff1Yfj117Amf/xgHBsEqaDm+GvRDFOH2Ob2TNAcew1fore1wUJXDxlRHWhYSH c65NlYzEP3M4rjw9prNBNx20gdZIxl3q5ClQBoqBZYCJjlQ6Cv76k+zPf9O3Kw0M/bhgKvlUnfk i395ihvmXr/oh7LCLftMKRheCKNT3R/Xz2KA== X-Gm-Gg: Acq92OEeiIvvLUg1ACJRFstIcJ+2f68Gf76cc08aGwDmzaOrcOE7n8ggu9eJJ3CMIV+ dedUI4KxjFfMBeXxgclmCWl1YquCIip5rhmf8URxRYxofkfIuLhyEyo5ITkcBNwdQtCkW9M0sro 1HnUaow3ZUe5XS6x5cqm54J9ploSKVSZG60DbNqyd9YH+muaxX/x1JBezdNY0SXyisX11hZRCpI QelkOBm4DF7OhJ2SJxoSidp53r+R7FZVlzkXXH1i8u/i7PpYdDwjdAvt8zygFJJtzdLv3bJ3MMY ExJJESiIed34c6yGoD7fn/FGW2gOra5YWJAqJQSYIIzMY3rL8yJHqVqdcONp57KwksrDrc4NGAA wZltlTc1pZtStcwCLV1Rw84e2CvfXBuMuPER1VtpGUkQ= X-Received: by 2002:a05:600c:81c5:b0:490:ea88:9d4c with SMTP id 5b1f17b1804b1-4922016094fmr73990125e9.32.1781464086301; Sun, 14 Jun 2026 12:08:06 -0700 (PDT) X-Received: by 2002:a05:600c:81c5:b0:490:ea88:9d4c with SMTP id 5b1f17b1804b1-4922016094fmr73989765e9.32.1781464085681; Sun, 14 Jun 2026 12:08:05 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:03 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Markus Armbruster , Eric Blake Subject: [PULL 054/106] qapi: remove user addresses from x-query-virtio-vhost-queue-status Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464297505158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Semantics of these (actually, internal) fields is not simple, they may contain either virtual or physical addresses. We are going to change this to simplify the logic. Keeping this logic only for unstable info command seems too much. Changing semantics of info fields doesn't seem to make real sense too. So, let's just drop them. We can dot it, as command is experimental. Signed-off-by: Vladimir Sementsov-Ogievskiy Acked-by: Markus Armbruster Reviewed-by: Michael S. Tsirkin Based-on: <20260206095258.894504-1-vsementsov@yandex-team.ru> Signed-off-by: Michael S. Tsirkin Message-Id: <20260420202032.714884-7-vsementsov@yandex-team.ru> --- hw/virtio/virtio-hmp-cmds.c | 3 --- hw/virtio/virtio-qmp.c | 3 --- qapi/virtio.json | 15 --------------- 3 files changed, 21 deletions(-) diff --git a/hw/virtio/virtio-hmp-cmds.c b/hw/virtio/virtio-hmp-cmds.c index 4bf9a3109d..a91bb7dbed 100644 --- a/hw/virtio/virtio-hmp-cmds.c +++ b/hw/virtio/virtio-hmp-cmds.c @@ -203,15 +203,12 @@ void hmp_vhost_queue_status(Monitor *mon, const QDict= *qdict) monitor_printf(mon, " call: %"PRId64"\n", s->call); monitor_printf(mon, " VRing:\n"); monitor_printf(mon, " num: %"PRId64"\n", s->num); - monitor_printf(mon, " desc: 0x%016"PRIx64"\n", s->desc); monitor_printf(mon, " desc_phys: 0x%016"PRIx64"\n", s->desc_phys); monitor_printf(mon, " desc_size: %"PRId32"\n", s->desc_size); - monitor_printf(mon, " avail: 0x%016"PRIx64"\n", s->avail); monitor_printf(mon, " avail_phys: 0x%016"PRIx64"\n", s->avail_phys); monitor_printf(mon, " avail_size: %"PRId32"\n", s->avail_size); - monitor_printf(mon, " used: 0x%016"PRIx64"\n", s->used); monitor_printf(mon, " used_phys: 0x%016"PRIx64"\n", s->used_phys); monitor_printf(mon, " used_size: %"PRId32"\n", s->used_size); diff --git a/hw/virtio/virtio-qmp.c b/hw/virtio/virtio-qmp.c index 51e3a42c4c..ae9be0a00f 100644 --- a/hw/virtio/virtio-qmp.c +++ b/hw/virtio/virtio-qmp.c @@ -794,9 +794,6 @@ VirtVhostQueueStatus *qmp_x_query_virtio_vhost_queue_st= atus(const char *path, status->name =3D g_strdup(vdev->name); status->kick =3D hdev->vqs[queue].kick; status->call =3D hdev->vqs[queue].call; - status->desc =3D (uintptr_t)hdev->vqs[queue].desc; - status->avail =3D (uintptr_t)hdev->vqs[queue].avail; - status->used =3D (uintptr_t)hdev->vqs[queue].used; status->num =3D hdev->vqs[queue].num; status->desc_phys =3D hdev->vqs[queue].desc_phys; status->desc_size =3D hdev->vqs[queue].desc_size; diff --git a/qapi/virtio.json b/qapi/virtio.json index 671f1ad793..1fc4e38a44 100644 --- a/qapi/virtio.json +++ b/qapi/virtio.json @@ -650,12 +650,6 @@ # # @call: vhost_virtqueue call # -# @desc: vhost_virtqueue desc -# -# @avail: vhost_virtqueue avail -# -# @used: vhost_virtqueue used -# # @num: vhost_virtqueue num # # @desc-phys: vhost_virtqueue desc_phys (descriptor area physical @@ -678,9 +672,6 @@ 'data': { 'name': 'str', 'kick': 'int', 'call': 'int', - 'desc': 'uint64', - 'avail': 'uint64', - 'used': 'uint64', 'num': 'int', 'desc-phys': 'uint64', 'desc-size': 'uint32', @@ -720,12 +711,9 @@ # "avail-size": 2054, # "desc-size": 16384, # "used-size": 8198, -# "desc": 140141447430144, # "num": 1024, # "call": 0, -# "avail": 140141447446528, # "desc-phys": 5216108544, -# "used": 140141447448640, # "kick": 0 # } # } @@ -744,12 +732,9 @@ # "avail-size": 262, # "desc-size": 2048, # "used-size": 1030, -# "desc": 140141413580800, # "num": 128, # "call": 0, -# "avail": 140141413582848, # "desc-phys": 5182259200, -# "used": 140141413583168, # "kick": 0 # } # } --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464188; cv=none; d=zohomail.com; s=zohoarc; b=HDfgW3D7cZ3++yRn+5VtjtTXEj2klAxjDwV9BJ8mMz/lcYa+2COvrXWw/DCE723V5wyjJ4lpVW9Y5b35gTrVhJ6zBvTzMlkTeIcsmcCIitidTGZxT3VgDWmkaGcQAj4HjB1IaualiMI6Vdn52t9RwrFI38FLOteMy82G+xx7pew= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464188; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tzSDXCMizU4TOWSVQ4fgeunoJ6amd5xM77Merhp11X8=; b=LNCYetKfNHFjVkgGcvDHlywi3W+LvzYdwLAu5A8X6klSP1tP4LkPyMEzKooWkjwyGZ5mSExDM/Giozhf142Zs+LlmiRbGk4mH8qCeF+i7k9K9W7kR9WEt0F17BfXlgI7jJ5yMmEuyDLJMl8Yfm7vnKzhoGoJY9q187JA5D6bvF4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464188407725.1191539216472; Sun, 14 Jun 2026 12:09:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBs-00055k-Fr; Sun, 14 Jun 2026 15:08:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBq-0004oZ-Cd for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:14 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBo-000291-IB for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:14 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-567-yeiHGq5UOBO3-0zVlTq9TQ-1; Sun, 14 Jun 2026 15:08:09 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-46067b07571so1600278f8f.1 for ; Sun, 14 Jun 2026 12:08:09 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2d9becsm25989044f8f.34.2026.06.14.12.08.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464091; 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: in-reply-to:in-reply-to:references:references; bh=tzSDXCMizU4TOWSVQ4fgeunoJ6amd5xM77Merhp11X8=; b=hhCLIHglBqDbUE4xecAlYdaBkNO8zTGV8noWX8qs7VQwSvls7CXaSDsTBh7PgtDYExu5gX MbTmHu2i5OQ1cAnb5HFoi5TKW0AOtgZ9prANjoLHssuI/l67t2qIoxLPo+YseC2G7Wilqq H+JujOZWSGd3OU5rWwfGuPFJ0Jx5J4s= X-MC-Unique: yeiHGq5UOBO3-0zVlTq9TQ-1 X-Mimecast-MFC-AGG-ID: yeiHGq5UOBO3-0zVlTq9TQ_1781464089 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464088; x=1782068888; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=tzSDXCMizU4TOWSVQ4fgeunoJ6amd5xM77Merhp11X8=; b=c35O//bVLnMux1rzAiKo9mi8eOaL8Ns1vZyxZVKXI6ILWDG3/iAeRbbVjR5FXsJVw9 lfu41o/XGWadV4+bOOn3WX1UW5qdIUB8jyldsWf+uu35nXlB4JlMuOqhUOHG4PV0RlEU vjRwpeBzExFly9z4hxsDJwm4GlLVpoVE52KcJtIC4srUSyd/16piyQzrkiZkx5xNttB4 /IQXUS3mO2NPmfBtpuIX4Xju+K3qkY5yx4+vD9duTPpD6zIdMmYbNwGkPTmucg27t2Nl 2I1Mm3ixolfyal6P3OrrLzrhz7Y4MpggzywfiyFJDYz6uQzZc1EGtfqm+d9/tohysxel YtUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464088; x=1782068888; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tzSDXCMizU4TOWSVQ4fgeunoJ6amd5xM77Merhp11X8=; b=GVLXQOQOmV4GudlWr76nfb4T0/uivp9FESBqJzJxTLAdzIrumf/D/K2n88tRAUw9iP le2fOngAG9dTmWkUqECzCtOE7BjtUJ2pU92YWxNztRT+jQkQzLwIkuEEp4N7MzDpMtQ1 EJp8t7KfVWotQ59UUxrKZepv5RtONoKm+qPcNndXRnOHRT+Y53t3JmtRFPjxyQcigID1 z9fiPqA7QpqATt6VnUNKmVgiZL0pv9feF1TiIGTT6StrUJYZ/7LZ6420Hgg3njCw1Lw8 L2OFZSh++QrPlBnKmg/+Hh9smB1nJFpADN3g3mbt4WnLrZ4fut4k/ATI1+WwG7kuXK1I RzFw== X-Gm-Message-State: AOJu0YxuhVg70Dd64Rk/i/z7di6SpxT6ty385f+1oERs7kEz7v++RobW Zr5epLPpNokCD9B+B9Rx01t5qF42rwqNr66o+FXV4LIAQfw9L0UFZHUKJa+TErLZiV9JslVNO5Q x5l9JDaO0S8YpfVnodSshogPz7Ua14M4iKvjEqoOejKyBblNm+orkHE/rgTKurAZv57BCzNR3M4 S08Uec7YD1c3ok+81//Zfl9chDbrpqyzXxMg== X-Gm-Gg: Acq92OGvHyK0bn+i5JzTzrtqsMqwmGAX/yCZg0QNotnJC5r2jfrKtSPHQuOI2jWRgKc P93ZMIVjR0pJdjuhfV5Mqg/ye/95PZ0TH1xSv07b7kpUYal9BwTidJY9LKO61/pOLvboU+tpL7E 6yrrBKUAKCOkCPpwgS9/JPOulPSV3Skowfe0wnH3xhGF8spEguVnMNDReUJ/e6zxqaGDEmOJV4X qaMTLKekOwTDTvGqijzi89jA5SgWOSjlUJhvJ7LGWVSSzyCq3PJSqjNieGoM7fsgeb0oSeMXVJz YFvaojacij+3DLAAV9aE8C4Q0Lk0q/HH4bH8z0MOM0533xLXKAxB+bOld36yghWlTjr3th+dxlB rRAxhbwKkFIZxdirmyIsp0k9HNiwaFfsSSUuhwu5sU60= X-Received: by 2002:a05:6000:41e5:b0:45e:8edc:dacc with SMTP id ffacd0b85a97d-4606d03bf34mr13770230f8f.27.1781464088514; Sun, 14 Jun 2026 12:08:08 -0700 (PDT) X-Received: by 2002:a05:6000:41e5:b0:45e:8edc:dacc with SMTP id ffacd0b85a97d-4606d03bf34mr13770199f8f.27.1781464087891; Sun, 14 Jun 2026 12:08:07 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:05 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Stefano Garzarella Subject: [PULL 055/106] vhost: stop reusing vq->desc (and friends) to store physical address Message-ID: <15bbdc0a7bc96933fbe2a913346ab03dbd4584e1.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464188978158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Remove the hack of storing physical addresses in vq->desc/avail/used pointers when IOMMU is present. Instead, handle this case directly in vhost_virtqueue_set_addr() by checking for IOMMU presence. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Michael S. Tsirkin Based-on: <20260206095258.894504-1-vsementsov@yandex-team.ru> Signed-off-by: Michael S. Tsirkin Message-Id: <20260420202032.714884-8-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index cc083572f4..6bb6b07e19 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -518,9 +518,6 @@ static int vhost_vrings_map(struct vhost_dev *dev, } =20 if (vhost_dev_has_iommu(dev)) { - vq->desc =3D (void *)(uintptr_t)vq->desc_phys; - vq->avail =3D (void *)(uintptr_t)vq->avail_phys; - vq->used =3D (void *)(uintptr_t)vq->used_phys; return 1; } =20 @@ -1104,7 +1101,7 @@ static int vhost_virtqueue_set_addr(struct vhost_dev = *dev, int r; memset(&addr, 0, sizeof(struct vhost_vring_addr)); =20 - if (phys) { + if (phys || vhost_dev_has_iommu(dev)) { addr.desc_user_addr =3D (uint64_t)(unsigned long)vq->desc_phys; addr.avail_user_addr =3D (uint64_t)(unsigned long)vq->avail_phys; addr.used_user_addr =3D (uint64_t)(unsigned long)vq->used_phys; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464590; cv=none; d=zohomail.com; s=zohoarc; b=UAZZNchT7qo+qkdJ6yu1FS9AcjOPR1abnpRQEJYSe45wstUa02JT9GI6J1P25kG5BhT1VPnxk9E1wy+ZvMfhq+FbtmwxS8yJehO2uVCdOxA2ucvCMQczcHOPXSOwlx5DbAIeioTMX4CjAWom7MX2iq0rcBUjey+LHY63TGfJaVQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464590; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xchnRDkuMDmqYE0l4bXozaE3u6jXG7uZukZrRqShITs=; b=c6rWtXIFGczhlrRLZxhX2VFuI/2oRjVkykUmybgzljsahEH8+pboKwe0yi0bQOOkFtAs+sXIl58G8zsfi43RMAGkD24lFQzKN3F/FypxFGWB1S0ZNM3QDQjjg7CfZQb44dj9JufH2yJMz8qzjywS+w8844osXY16TR5UkvxbDsk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464590216756.5517292744472; Sun, 14 Jun 2026 12:16:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBv-0005Uj-Ey; Sun, 14 Jun 2026 15:08:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBt-0005DX-56 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:17 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBq-00029G-Gs for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:16 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-631-_y5p0wo1O1CJC2IDb8sZ9w-1; Sun, 14 Jun 2026 15:08:12 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490b93debc8so25304325e9.1 for ; Sun, 14 Jun 2026 12:08:12 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2c5266sm29983246f8f.29.2026.06.14.12.08.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464093; 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: in-reply-to:in-reply-to:references:references; bh=xchnRDkuMDmqYE0l4bXozaE3u6jXG7uZukZrRqShITs=; b=Q75JWVrye/IH3QhY8Q4KgnLNDxoC6cB5lgr6Gl6gB/cO7YahhF7RSIngid0rl69Be45rQO wfKrp3QKOWgExnsuHXHCXPlPNIRHKdKrlFdjrkrIxJPjgu+piX8q9FeXIkzCRKfO8TGn4A jIxz6jSyIdiaWYvHoGso4vNOvuPAxEo= X-MC-Unique: _y5p0wo1O1CJC2IDb8sZ9w-1 X-Mimecast-MFC-AGG-ID: _y5p0wo1O1CJC2IDb8sZ9w_1781464091 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464091; x=1782068891; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=xchnRDkuMDmqYE0l4bXozaE3u6jXG7uZukZrRqShITs=; b=i8kjYaVb9C9byOq5KkulgQDJ+x/G43WNhe83tVPRIpFrQoUbf3nLC+kUWQ2GFdpiFW Kp6mYLgPFrixeHCvq5t59iNLMYcDI8OYWZF/XZ99c9uVGTqD9ezH+UOjDJ91j4q6zZYF W5EiUqNMbYAsK5wVR1UwrYwfX+eu+JjCeIBOFw9qJEcu8uKalQ6hBLaKfc0mdrFDPEqA StjKfHLsviWvGVqSsTHvgR8FvDCib6gbMaqmyCBL3jPbGD+Pi0Ycx2wWD2iu0Iz7FvBP dHj33PdC/06B0FFzJN+xHRVqreK2/CgmhCyTVQYvhXpoYbtuyZ+4tP4Fo72zv6xK/wps 9jPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464091; x=1782068891; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xchnRDkuMDmqYE0l4bXozaE3u6jXG7uZukZrRqShITs=; b=lftz8vUSrVuLL6NBd8xO6PZna5za+VmEgQKPKPHesaffcSjxljWME4zAX47fRZxLdb aZSCjVcl+GMlL8Rcn57pXm28pef+byeVzIQVkzR4DpPKmSo+qDdDcywYoOkRjHjhcCrB YMqvvkZxNwhzQMt3JX4dGShrEtN7T2NqHRn5UOdna48cTGvm0zIK8cnWo6wap8SHa4cM 81eeCVbPKWEEQmKtH/jaYlJMfqe/JpudxRUmake/iJZgo8izqiuMJ8EcPM+XolGWQzmc tNWW5TjBGMFceTr7poW4Ghquw8gpnKvHo96b4A6MBvj+LwV+YDveM1I1e60BrTzs+Sg9 zfMg== X-Gm-Message-State: AOJu0YzYRKM8WkMl6/HdfWJP09yXJeMQe4v3k5+wyPTi3uj50L9HDfD1 CNF5EswreZLr1f+Kx5ki2xCs+5Z1ZERiyigwwPyeIcPLp6fI1db7Em+KfKdEVZofV4h1tRQ6foW UN6siqeNPtTjEjy6CPLpToU0I7R6sUUE2xqywSGXdXPn9nCyKOULb8vbJMbyrduwpxWpXuGPH0t OphFnZ5q001cJZdV7ueudG0yJfsaYkuKE4Gw== X-Gm-Gg: Acq92OHKKSHfnCCPVXACOMdxjj0AhymKI8ZJrWljEmGOykkfIvxQV43qRetFH2KQhvY bp+rXHrYvXFI6eznyFYNt+c5R90biQMWflYEbXIANOkB0ErQB5/f8nG5jhfeC5rSutV5aBE/CdM yJiT/Fzt4snFJPQmqK2gJJVJpyKyCTH9ZdcH/Bfk5g7yn0P9KMQVf06RBivB/rxojlpeQIi6Qkv 9fV5L37DMJoferYeXb7xxSY55/4x23zl8kP23JAKE95drl19rMymCL944LbivZAngHyIu+H+BP9 kw7/xFS8lkHp9vPfP6CoTS8mDQJ0iyJK2lDWWIvWoe9z42fNMwQm1J4KGi9hv+7dq5QsvZ/8ch2 qRjU4clFkhUAz4h/B9pPobE/3eGzgWu0k6b0skBlKA8M= X-Received: by 2002:a05:600c:6542:b0:48a:93f8:dd02 with SMTP id 5b1f17b1804b1-4922006283cmr65644785e9.14.1781464091011; Sun, 14 Jun 2026 12:08:11 -0700 (PDT) X-Received: by 2002:a05:600c:6542:b0:48a:93f8:dd02 with SMTP id 5b1f17b1804b1-4922006283cmr65644435e9.14.1781464090368; Sun, 14 Jun 2026 12:08:10 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:08 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Stefano Garzarella Subject: [PULL 056/106] vhost: rename vring pointer fields to reflect user addresses Message-ID: <3fbef0689a3cde55efce72a3f6333031a3149f69.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464590496158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Rename vq->desc/avail/used to vq->desc_user/avail_user/used_user to clearly indicate these fields contain user space addresses, not physical addresses. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Michael S. Tsirkin Based-on: <20260206095258.894504-1-vsementsov@yandex-team.ru> Signed-off-by: Michael S. Tsirkin Message-Id: <20260420202032.714884-9-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 37 +++++++++++++++++++------------------ include/hw/virtio/vhost.h | 6 +++--- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 6bb6b07e19..e3d452a763 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -489,11 +489,11 @@ static void vhost_vrings_unmap(struct vhost_dev *dev, return; } =20 - vhost_memory_unmap(dev, &vq->used, vq->used_size, touched, + vhost_memory_unmap(dev, &vq->used_user, vq->used_size, touched, touched ? vq->used_size : 0); - vhost_memory_unmap(dev, &vq->avail, vq->avail_size, 0, + vhost_memory_unmap(dev, &vq->avail_user, vq->avail_size, 0, touched ? vq->avail_size : 0); - vhost_memory_unmap(dev, &vq->desc, vq->desc_size, 0, + vhost_memory_unmap(dev, &vq->desc_user, vq->desc_size, 0, touched ? vq->desc_size : 0); } =20 @@ -504,13 +504,13 @@ static int vhost_vrings_map(struct vhost_dev *dev, { vq->desc_size =3D virtio_queue_get_desc_size(vdev, idx); vq->desc_phys =3D virtio_queue_get_desc_addr(vdev, idx); - vq->desc =3D NULL; + vq->desc_user =3D NULL; vq->avail_size =3D virtio_queue_get_avail_size(vdev, idx); vq->avail_phys =3D virtio_queue_get_avail_addr(vdev, idx); - vq->avail =3D NULL; + vq->avail_user =3D NULL; vq->used_size =3D virtio_queue_get_used_size(vdev, idx); vq->used_phys =3D virtio_queue_get_used_addr(vdev, idx); - vq->used =3D NULL; + vq->used_user =3D NULL; =20 if (vq->desc_phys =3D=3D 0) { /* Queue might not be ready for start */ @@ -521,16 +521,17 @@ static int vhost_vrings_map(struct vhost_dev *dev, return 1; } =20 - vq->desc =3D vhost_memory_map(dev, vq->desc_phys, vq->desc_size, false= ); - if (!vq->desc) { + vq->desc_user =3D vhost_memory_map(dev, vq->desc_phys, vq->desc_size, = false); + if (!vq->desc_user) { goto fail; } - vq->avail =3D vhost_memory_map(dev, vq->avail_phys, vq->avail_size, fa= lse); - if (!vq->avail) { + vq->avail_user =3D vhost_memory_map(dev, vq->avail_phys, vq->avail_siz= e, + false); + if (!vq->avail_user) { goto fail; } - vq->used =3D vhost_memory_map(dev, vq->used_phys, vq->used_size, true); - if (!vq->used) { + vq->used_user =3D vhost_memory_map(dev, vq->used_phys, vq->used_size, = true); + if (!vq->used_user) { goto fail; } =20 @@ -594,7 +595,7 @@ static int vhost_verify_ring_mappings(struct vhost_dev = *dev, =20 j =3D 0; r =3D vhost_verify_ring_part_mapping( - vq->desc, vq->desc_phys, vq->desc_size, + vq->desc_user, vq->desc_phys, vq->desc_size, reg_hva, reg_gpa, reg_size); if (r) { break; @@ -602,7 +603,7 @@ static int vhost_verify_ring_mappings(struct vhost_dev = *dev, =20 j++; r =3D vhost_verify_ring_part_mapping( - vq->avail, vq->avail_phys, vq->avail_size, + vq->avail_user, vq->avail_phys, vq->avail_size, reg_hva, reg_gpa, reg_size); if (r) { break; @@ -610,7 +611,7 @@ static int vhost_verify_ring_mappings(struct vhost_dev = *dev, =20 j++; r =3D vhost_verify_ring_part_mapping( - vq->used, vq->used_phys, vq->used_size, + vq->used_user, vq->used_phys, vq->used_size, reg_hva, reg_gpa, reg_size); if (r) { break; @@ -1106,9 +1107,9 @@ static int vhost_virtqueue_set_addr(struct vhost_dev = *dev, addr.avail_user_addr =3D (uint64_t)(unsigned long)vq->avail_phys; addr.used_user_addr =3D (uint64_t)(unsigned long)vq->used_phys; } else { - addr.desc_user_addr =3D (uint64_t)(unsigned long)vq->desc; - addr.avail_user_addr =3D (uint64_t)(unsigned long)vq->avail; - addr.used_user_addr =3D (uint64_t)(unsigned long)vq->used; + addr.desc_user_addr =3D (uint64_t)(unsigned long)vq->desc_user; + addr.avail_user_addr =3D (uint64_t)(unsigned long)vq->avail_user; + addr.used_user_addr =3D (uint64_t)(unsigned long)vq->used_user; } addr.index =3D idx; addr.log_guest_addr =3D vq->used_phys; diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h index b292e9f0fe..684bafcaad 100644 --- a/include/hw/virtio/vhost.h +++ b/include/hw/virtio/vhost.h @@ -24,9 +24,9 @@ struct vhost_inflight { struct vhost_virtqueue { int kick; int call; - void *desc; - void *avail; - void *used; + void *desc_user; + void *avail_user; + void *used_user; int num; unsigned long long desc_phys; unsigned desc_size; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464283; cv=none; d=zohomail.com; s=zohoarc; b=XH8yWLg/SMWyDpwak53W/zL7lq+dko/1DOGIoEmwWbaatg9+mjgeWio3okmH6SwlU6SsYxsJHjSIfLR1lMsWbkrSGnWbcmueyZ+i/g1opWK9GRkyfKCcj90F4/yJM8S40W9C6p+vMk52HJuufQzOksDa0Fh6bJ2efZlddAZ6DcA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464283; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FchcoYqetxRLX+8KPnVCCEBTRzg70wUN0lFDoJ7PCfE=; b=PeTQSVWMj2ZiATNAgctVpC0QV4GvfvJWVrAOd6fpKfNJr9UFxTl4LMap8ZhQCTAs+A0bERN9x+DP/TzoeaNkoR6Ifz+wXcsKeDbuX6v7wwCHOwomA3gaD1a+SXUHuV66YlInHaNXWMVd807/A3XZeImTS8K3OWWd4qLxbFa+PKc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464283708338.4850322987569; Sun, 14 Jun 2026 12:11:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqC0-0005xf-BC; Sun, 14 Jun 2026 15:08:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBu-0005MJ-6i for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:18 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBs-00029j-GK for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:17 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-655-EacYfflgNv-lsyChcqYLFg-1; Sun, 14 Jun 2026 15:08:14 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-46010392f89so2479994f8f.2 for ; Sun, 14 Jun 2026 12:08:14 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2c473bsm30398162f8f.28.2026.06.14.12.08.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464095; 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: in-reply-to:in-reply-to:references:references; bh=FchcoYqetxRLX+8KPnVCCEBTRzg70wUN0lFDoJ7PCfE=; b=QeCBW58ZYGnpmNRBPYe4oIEbfDKKF/izJusv9isr/P66786XZCC0azZLHuOjqLu5jyGowN WPoGnbv27baIYmodQwmBx0Bl9mcSws5s4hySaVjX1v1VY2CLOy8FtUlIrPUvSsXp6a3SRm pPEL8Dg3T6cmHVA14w34xLSRJ3RL7pM= X-MC-Unique: EacYfflgNv-lsyChcqYLFg-1 X-Mimecast-MFC-AGG-ID: EacYfflgNv-lsyChcqYLFg_1781464093 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464093; x=1782068893; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=FchcoYqetxRLX+8KPnVCCEBTRzg70wUN0lFDoJ7PCfE=; b=ShAG38+/epL8TVxlYg1KGxBGvVT5sRbmItWWb8J+UGFhhpmrk9mStrLmxsUWe+AQhh f8EGhxWQkahMHnxqq2rQpBiblz8ADd/cfa3s/bAafQSln5pKDor0v6x+1D0lpGWhsKXz QFpNKhMkIOQurk7Tp5ypZNF/7Og4vBzlZIWqjpUxqd+BsDI9AoxGoc1s4r7sFxI8X5JY aQ4lxkRZZ9h644MrA6AsSiTWU5XnlOMviaooNrNx+UxVnY4OdNFytpSIdTBAKK9JyfVp AwZeSXxI52KYV+Auacw1dmSbbdrsho/EYwyQ+r8zLSoIxJwgD8H/hQvfM7StJGdisdZ4 WFag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464093; x=1782068893; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FchcoYqetxRLX+8KPnVCCEBTRzg70wUN0lFDoJ7PCfE=; b=Afmo/bdhdU/sZ3uac+BGbaQ1EJomOq7fANXuXUbdJfotiuqnBgUtw+vWmkYPG5qC+m TvbgD3rdJ4rv1znn6p3lhGHdxKgNyTr0HW7xDXgrJiolOy4MUXLBfsspZsQSt+IH29lM iphW6cbYWK81jG4RzbWH1ok/AogHtlL3XlGk7p06vxKNFmeGJ17WHTzyMJFYWepYNxue 1RXl8qt4eBTK0bq1XaGdA8oBBXTqU/4zsLjebJQgarnA4HF5gz2YV5tollxI4s177+Hq FnGZN+unHoUK144ysA6gp57ioSvbNjCUGhvccSjJSCSIWPpXYfm3DPmu8jGahV4H3WBW RFsA== X-Gm-Message-State: AOJu0YxI3FeBlNyR18+L8AwZ5IhqUdAkB+PJYVqwXwmKKx4AAmWQOa4g JGha8px8IN9KRWPMCILvyFZqcgbl51ebvj/SU/FyO8w8amdQnLXVHNjSHODT0izu9xQTN3iAwAo tsApkM9W0ejLCuTcIU2JtrVFrS6EsfU9QpEfZ/UkVJfumn0vvw4kxxUVmAP7wGl6/oILlQ7oyKe /tOoX4Kby7Fqn6vaKB58mglbDusC5s+H68Dg== X-Gm-Gg: Acq92OGRToSNGwTJSewysCkQmxTNnjeDmPO/hF4bbV7mknBcIsmYF0U0Pco2BpiIaVw vB58c/myB7AYmC5uyRPi/sVLpULHwzBLkimOZkB7MbUXklM7M6jsvAVD4EjrJNujwb7IibnJOiV UlZ4a19wTQmPJjMItoT3UuB9lrTmGMU4mifMaPgMzqSuUkEHZTEHXxSbvIa9LXDV5EwynOA91pN wgh7qkZpZcwP/jTfo2iwVjab7a4FqYdBevGahUPOyC4EZruRlnpKLe8LFr5c//KOzkqW8ZZiOJL aUpKQoXkrf8uIPmtlqROfcxwCEl+JIoDgSDG+/T5W3gVEKcwzXuRTbM/qMc74cS0sZ7KYDj4+X9 iRh+zGeYaJkafbjo7Qf+7qcJfiwD7W5GfQhWp442cJUM= X-Received: by 2002:a05:6000:428a:b0:45e:edcc:f6dc with SMTP id ffacd0b85a97d-4606db9667amr15561807f8f.6.1781464093184; Sun, 14 Jun 2026 12:08:13 -0700 (PDT) X-Received: by 2002:a05:6000:428a:b0:45e:edcc:f6dc with SMTP id ffacd0b85a97d-4606db9667amr15561767f8f.6.1781464092571; Sun, 14 Jun 2026 12:08:12 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:10 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Stefano Garzarella Subject: [PULL 057/106] vhost: add .vhost_phys_iotlb_msg() handler Message-ID: <04f0d0a69eb93c3da135068afd081871ab4f6bd5.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464285394158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Allow backends to chose, which addr to put into vhost_iotlb_msg: user or physical. To be used in further commit. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Michael S. Tsirkin Based-on: <20260206095258.894504-1-vsementsov@yandex-team.ru> Signed-off-by: Michael S. Tsirkin Message-Id: <20260420202032.714884-10-vsementsov@yandex-team.ru> --- hw/virtio/vhost.c | 11 ++++++++--- include/hw/virtio/vhost-backend.h | 3 +++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index e3d452a763..af41841b52 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -920,14 +920,18 @@ static void vhost_region_addnop(MemoryListener *liste= ner, } =20 static int vhost_update_device_iotlb(struct vhost_dev *dev, - uint64_t iova, uint64_t uaddr, + uint64_t iova, + uint64_t paddr, + uint64_t uaddr, uint64_t len, IOMMUAccessFlags perm) { + bool phys =3D dev->vhost_ops->vhost_phys_iotlb_msg && + dev->vhost_ops->vhost_phys_iotlb_msg(dev); struct vhost_iotlb_msg imsg; =20 imsg.iova =3D iova; - imsg.uaddr =3D uaddr; + imsg.uaddr =3D phys ? paddr : uaddr; imsg.size =3D len; imsg.type =3D VHOST_IOTLB_UPDATE; =20 @@ -1385,7 +1389,8 @@ int vhost_device_iotlb_miss(struct vhost_dev *dev, ui= nt64_t iova, int write) len =3D MIN(iotlb.addr_mask + 1, len); iova =3D iova & ~iotlb.addr_mask; =20 - ret =3D vhost_update_device_iotlb(dev, iova, uaddr, len, iotlb.per= m); + ret =3D vhost_update_device_iotlb(dev, iova, iotlb.translated_addr= , uaddr, + len, iotlb.perm); if (ret) { trace_vhost_iotlb_miss(dev, 4); error_report("Fail to update device iotlb"); diff --git a/include/hw/virtio/vhost-backend.h b/include/hw/virtio/vhost-ba= ckend.h index 7cc3bb5441..00881a0bd4 100644 --- a/include/hw/virtio/vhost-backend.h +++ b/include/hw/virtio/vhost-backend.h @@ -143,6 +143,8 @@ typedef int (*vhost_dev_start_op)(struct vhost_dev *dev= , bool started); =20 typedef bool (*vhost_phys_vring_addr_op)(struct vhost_dev *dev); =20 +typedef bool (*vhost_phys_iotlb_msg_op)(struct vhost_dev *dev); + typedef int (*vhost_get_device_id_op)(struct vhost_dev *dev, uint32_t *dev= _id); =20 typedef bool (*vhost_force_iommu_op)(struct vhost_dev *dev); @@ -210,6 +212,7 @@ typedef struct VhostOps { vhost_set_inflight_fd_op vhost_set_inflight_fd; vhost_dev_start_op vhost_dev_start; vhost_phys_vring_addr_op vhost_phys_vring_addr; + vhost_phys_iotlb_msg_op vhost_phys_iotlb_msg; vhost_get_device_id_op vhost_get_device_id; vhost_force_iommu_op vhost_force_iommu; vhost_set_config_call_op vhost_set_config_call; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464220; cv=none; d=zohomail.com; s=zohoarc; b=P7dcexwou4yiKMhlmar7m/NcjKD2HWTVSmyXgl4o9ImI8ST5LUBMtjoRDuFXqZ7ROZWv5w2LgEv6khxyTMwuqCbabvGtvarzGUuUGIvYVPRwR9E0FmWpG3n4lUEgNX1WHRPkCyHXCotvOW0LT6AC4TUoIU9802J+Vj+OEfsrSVE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464220; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=O5nKD/4fkDkbf90rlckX3ZpTPGbqwwxuPCnIOHWj7n0=; b=jL45KmGwISUEh+yCxQQ5bjjIWFbaJDbTQwAnKXj2xc38bZzZSFvplzfrGUeBb29mP5t2IsFXkWssAZTwG9Cd6/1x9zvr3ZAeeQPOR3yNMRIDZKutHv2ZMkOuMJNWv/w5k7Rdg/YusDNITKzNOhmizsZZG/j0syh1FhdyEv+Y6P4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464220373556.2941602080776; Sun, 14 Jun 2026 12:10:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqBy-0005pQ-4r; Sun, 14 Jun 2026 15:08:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBx-0005iU-6Y for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBv-0002A1-90 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:20 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-342-EFjpZo8WMHqbcWE18byiLA-1; Sun, 14 Jun 2026 15:08:17 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490ae016853so16990335e9.2 for ; Sun, 14 Jun 2026 12:08:17 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492203d2449sm168759905e9.14.2026.06.14.12.08.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464098; 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: in-reply-to:in-reply-to:references:references; bh=O5nKD/4fkDkbf90rlckX3ZpTPGbqwwxuPCnIOHWj7n0=; b=Zoc4MNJ2dbCO8e1P1PW6PAEjvBd0Ej7ER7xOwrhUH0H0r9CK9GYxgmi20gJmOGOHayxSch pyfq/xTULrm/MxCwqlfcLt9sgGvFVlUJvYkzLR/TXosx85M8yQ3Z4QUQDridxuRDeXisZA lvmP2fwBa9ZKsGYqqni+xyeMeLPCTPg= X-MC-Unique: EFjpZo8WMHqbcWE18byiLA-1 X-Mimecast-MFC-AGG-ID: EFjpZo8WMHqbcWE18byiLA_1781464096 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464096; x=1782068896; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=O5nKD/4fkDkbf90rlckX3ZpTPGbqwwxuPCnIOHWj7n0=; b=LNnIaXf+mnYzGXei9I7deiqr1kDqSItWIm/+z9mSAttff9wd11e912dSOFkTbL0T3/ GCehpuyw7lPEWIcKNCrOhTWr3KdfLTP1aHen3Ktp8VlQHL6Eegw0KnDZqgsKkte+abcE 6mNnpXZ2U/KZaieQQrK18q9/PM6JwAht0P5Qj5zhLkeped4PZSdZYXgoMXX1mZNcSXlB SSCScePvWezYpArX7A3pikOjfxoZG6apzwG0HSXVa5OuTAByNXoaHT01IEJzEjYF9d5h EFnz+br1A4svj8pUjAGhe6bW/zMr/3hTUBaIpqF+vdrYqGWrHf/34cR7rOidgrUCr6Xw /mEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464096; x=1782068896; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=O5nKD/4fkDkbf90rlckX3ZpTPGbqwwxuPCnIOHWj7n0=; b=B2A03umubap6E8IFExtLpU2SOCXzMyE/ATWMCS+mv5slfubbiD6coQjrUOGbr6DWHr z87FIyXJT9N3Y6k4l+vhj1x7KJ5YV8tjAN5gSudLUa4UV8SYW178GjhqD7e0Yd3eAxaf PdfPV/qvrOa4HQ8g3JVFBhUXeyudBOWcYwHfxNwvk2nvK3ZVCBx/RnwK7VSX3vU5uL0J i+29tURk6vFm62S0L5Yq5VKZPn/YxFKHkVVZQExZ5QVH+dDHd7XkQ3HIrAkpne5WH2sX Iovi21Ub2LKqv3PNf+tduWykzl2RkcbcgOCw5GJZQvgDqJdqEoDyIMpBe6XX3ijivHD5 nnbw== X-Gm-Message-State: AOJu0YwM/7iVUOF7oRpUlQVVsf8m8ErFBoell3vPhUxvyhtRh4BfWLiP /y/T50Rw48Yhz13C3mCaNgidSSWeGjGDv8CbmhLBRT7j4RXCt6jyr6c+9QsdoLOg+f7sWTgRMpE J+VkXuNCGD4xPjro+SHy4hJ+EJC1P0mZQG363Kn9rkmB/DxZdXd8TTISgT6poBr1crHSDfz1bT0 UAk5VsKduwQIacNO64FjwNmd/eKKmbILp1uQ== X-Gm-Gg: Acq92OFS5jlz5ugdJfbrzHpXqegWpt7YqK8oNsjyvn1K8y10J4Bjw0i5FVY0AEEQ+SF leHXmzaP12VzR3l0+PRBSa//86skAvFNwR67kLFbPMQfV4B9ND0yZ9K72fZIixKQLboGlO87fKD woQ7O53mrQu0QUrpwoloC/EkMOEh0HWVLbamJTOyrnzFqy4yJtuJb2DsQ85y6roC7zlcVkSExm7 ZNbaqgprNb71jnTeJqSWjD+t67Wh/QdjRY5m+mLGie0BDxfrcQdlomZMXG8NlGuDbZXATkuCMUY ijVjWQFxJqSh8zVJMoWN82THH8Gv9Slp/09DQNgzeLJqKz/0UQf9ZX2+ikvGX7Q4cPYEF+VbfGw 08pfJf2ZcUKZ8YzUtBZC6ddalrGQhq0iBbyAKMHTd7IU= X-Received: by 2002:a7b:c7d2:0:b0:490:c2a2:e91c with SMTP id 5b1f17b1804b1-490ec521e1cmr104464225e9.34.1781464096080; Sun, 14 Jun 2026 12:08:16 -0700 (PDT) X-Received: by 2002:a7b:c7d2:0:b0:490:c2a2:e91c with SMTP id 5b1f17b1804b1-490ec521e1cmr104463945e9.34.1781464095350; Sun, 14 Jun 2026 12:08:15 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:12 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Vladimir Sementsov-Ogievskiy , Stefano Garzarella , Pierrick Bouvier Subject: [PULL 058/106] vhost-user: add VHOST_USER_PROTOCOL_F_GPA_ADDRESSES Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464221176158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy Unlike the kernel, vhost-user backend knows nothing about QEMU's userspace addresses. We can pass GPA instead and nothing changes. Generally, vhost-user servers need these addresses only to calculate offsets inside memory regions. Still, some servers (QEMU's internal is one example) may do checks for passed addresses to be "userspace addresses", for example check for non-zero. That's why we need additional negotiation for the feature. The benefit: this opens the doors for further implementation of local migration (live-update) with passing open vhost-related FDs through UNIX domain socket. This way the connection with backend is kept live and untouched. Without this change, we would have to communicate with backend to inform it about UVA address changes, but it's better to simply use more stable GPA numbers, which don't change after migration. Additionally, the current implementation exposes QEMU's process address space by passing UVA, which breaks ASLR. New protocol feature avoids that. Note, that we do nothing with backend messages and replies. Frontends have to work with backends userspace addresses anyway, because they come from userfaultfd. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Michael S. Tsirkin Based-on: <20260206095258.894504-1-vsementsov@yandex-team.ru> Signed-off-by: Michael S. Tsirkin Message-Id: <20260420202032.714884-11-vsementsov@yandex-team.ru> --- docs/interop/vhost-user.rst | 21 +++++++++++++++++---- hw/virtio/vhost-user.c | 22 +++++++++++++++++----- include/hw/virtio/vhost-user.h | 1 + 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index 137c9f3669..8dcb030c53 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -164,8 +164,16 @@ A vring address description =20 :log: a 64-bit guest address for logging =20 -Note that a ring address is an IOVA if ``VIRTIO_F_IOMMU_PLATFORM`` has -been negotiated. Otherwise it is a user address. +.. Note:: + When ``VIRTIO_F_IOMMU_PLATFORM`` is negotiated, ring addresses are IOVA= s. + + Otherwise, when ``VHOST_USER_PROTOCOL_F_GPA_ADDRESSES`` is negotiated, = the + ring addresses are guest physical addresses for frontend messages. That + does not apply to backend replies. + + Finally, when neither ``VIRTIO_F_IOMMU_PLATFORM`` nor + ``VHOST_USER_PROTOCOL_F_GPA_ADDRESSES`` features are negotiated, ring + addresses are user virtual addresses. =20 .. _memory_region_description: =20 @@ -180,7 +188,9 @@ Memory region description =20 :size: a 64-bit size =20 -:user address: a 64-bit user address +:user address: a 64-bit user address. When ``VHOST_USER_PROTOCOL_F_GPA_ADD= RESSES`` + is negotiated, this field contain guest physical address instead and must + duplicate ``guest address`` field. =20 :mmap offset: a 64-bit offset where region starts in the mapped memory =20 @@ -252,7 +262,9 @@ An IOTLB message =20 :size: a 64-bit size =20 -:user address: a 64-bit user address +:user address: a 64-bit user address. When ``VHOST_USER_PROTOCOL_F_GPA_ADD= RESSES`` + is negotiated, this field contain guest physical address instead, except= for + ``VHOST_USER_BACKEND_IOTLB_MSG``, where it's user address anyway. =20 :permissions flags: an 8-bit value: - 0: No access @@ -1063,6 +1075,7 @@ Protocol features #define VHOST_USER_PROTOCOL_F_SHARED_OBJECT 18 #define VHOST_USER_PROTOCOL_F_DEVICE_STATE 19 #define VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIGHT 20 + #define VHOST_USER_PROTOCOL_F_GPA_ADDRESSES 21 =20 Front-end message types ----------------------- diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 78ffb25d6b..15042c0f3c 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -563,12 +563,22 @@ static MemoryRegion *vhost_user_get_mr_data(uint64_t = addr, ram_addr_t *offset, return mr; } =20 -static void vhost_user_fill_msg_region(VhostUserMemoryRegion *dst, +static bool vhost_user_gpa_addresses(struct vhost_dev *dev) +{ + return vhost_user_has_protocol_feature( + dev, VHOST_USER_PROTOCOL_F_GPA_ADDRESSES); +} + +static void vhost_user_fill_msg_region(struct vhost_dev *dev, + VhostUserMemoryRegion *dst, struct vhost_memory_region *src, uint64_t mmap_offset) { + bool use_phys =3D vhost_user_gpa_addresses(dev); + assert(src !=3D NULL && dst !=3D NULL); - dst->userspace_addr =3D src->userspace_addr; + + dst->userspace_addr =3D use_phys ? src->guest_phys_addr : src->userspa= ce_addr; dst->memory_size =3D src->memory_size; dst->guest_phys_addr =3D src->guest_phys_addr; dst->mmap_offset =3D mmap_offset; @@ -606,7 +616,7 @@ static int vhost_user_fill_set_mem_table_msg(struct vho= st_user *u, error_report("Failed preparing vhost-user memory table msg= "); return -ENOBUFS; } - vhost_user_fill_msg_region(®ion_buffer, reg, offset); + vhost_user_fill_msg_region(dev, ®ion_buffer, reg, offset); msg->payload.memory.regions[*fd_num] =3D region_buffer; fds[(*fd_num)++] =3D fd; } else if (track_ramblocks) { @@ -752,7 +762,7 @@ static int send_remove_regions(struct vhost_dev *dev, =20 if (fd > 0) { msg->hdr.request =3D VHOST_USER_REM_MEM_REG; - vhost_user_fill_msg_region(®ion_buffer, shadow_reg, 0); + vhost_user_fill_msg_region(dev, ®ion_buffer, shadow_reg, 0); msg->payload.mem_reg.region =3D region_buffer; =20 ret =3D vhost_user_write(dev, msg, NULL, 0); @@ -813,7 +823,7 @@ static int send_add_regions(struct vhost_dev *dev, u->region_rb[reg_idx] =3D mr->ram_block; } msg->hdr.request =3D VHOST_USER_ADD_MEM_REG; - vhost_user_fill_msg_region(®ion_buffer, reg, offset); + vhost_user_fill_msg_region(dev, ®ion_buffer, reg, offset); msg->payload.mem_reg.region =3D region_buffer; =20 ret =3D vhost_user_write(dev, msg, &fd, 1); @@ -3151,4 +3161,6 @@ const VhostOps user_ops =3D { .vhost_supports_device_state =3D vhost_user_supports_device_state, .vhost_set_device_state_fd =3D vhost_user_set_device_state_fd, .vhost_check_device_state =3D vhost_user_check_device_state, + .vhost_phys_vring_addr =3D vhost_user_gpa_addresses, + .vhost_phys_iotlb_msg =3D vhost_user_gpa_addresses, }; diff --git a/include/hw/virtio/vhost-user.h b/include/hw/virtio/vhost-user.h index 0e576fc538..5ab70dab7e 100644 --- a/include/hw/virtio/vhost-user.h +++ b/include/hw/virtio/vhost-user.h @@ -34,6 +34,7 @@ enum VhostUserProtocolFeature { VHOST_USER_PROTOCOL_F_SHARED_OBJECT =3D 18, VHOST_USER_PROTOCOL_F_DEVICE_STATE =3D 19, VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIGHT =3D 20, + VHOST_USER_PROTOCOL_F_GPA_ADDRESSES =3D 21, VHOST_USER_PROTOCOL_F_MAX }; =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464494; cv=none; d=zohomail.com; s=zohoarc; b=TC7R8F6VHp0+hA2sVcnj0SQR1pOM9FqvebRlc6Eq5Ltea1OCKjlfRoR9sJvPcv8OW1KStbyly7r8Dnw70TJ1Qtk/IoXgdEECXLZ6qz7dxwJsBVjQYd3tVaZT82sPjXcH1SlToLytryqtis+fndaxdEQzvx9v/VqfYijfb6VexKE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464494; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JfJdqs5MKd0CqLIkn3rh1rMCUwFP6s1/sPPGLqw8n/M=; b=j/gj0RkMe8If0QiKDaphshUscQCsUOfd7Fsz2769hB4+dTZSIF9FUvf6JqukMQOnSZjHNZ45ex2RD3q/Su9QtdKJ0nhwLonxdt25W3V0TtpkWYMDF1FLIatS6sUQUj+b9lKQxTitaQM/2IMuzMBR8D4dKGoHXiZlfWVUYuJACq4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464494711847.1365938308994; Sun, 14 Jun 2026 12:14:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCE-00069q-Hh; Sun, 14 Jun 2026 15:08:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqC2-00061Z-1e for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqC0-0002Am-Jq for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:25 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-615-Tu80dsN-M_-6kWGKSbK-Gg-1; Sun, 14 Jun 2026 15:08:19 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490ae461f8dso19277665e9.1 for ; Sun, 14 Jun 2026 12:08:19 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492202e5d6csm196030455e9.3.2026.06.14.12.08.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464103; 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=JfJdqs5MKd0CqLIkn3rh1rMCUwFP6s1/sPPGLqw8n/M=; b=CsIxeMuFzrM4Rq7vDlHXGe9moMU9A72blX5SZfr6OVtjhFp865i5H4biPFKJtLeGUfswsW udvGVeIu18y91z+UF5DZcZlrLYhdj1fESG4nvTeq9VABLAKy2Nmw1ko2hIYho+bC9Z+MZp 2cdkkBJ9bPRx1/3W30tjOEfjEMwKH34= X-MC-Unique: Tu80dsN-M_-6kWGKSbK-Gg-1 X-Mimecast-MFC-AGG-ID: Tu80dsN-M_-6kWGKSbK-Gg_1781464098 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464098; x=1782068898; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=JfJdqs5MKd0CqLIkn3rh1rMCUwFP6s1/sPPGLqw8n/M=; b=hSAnX5nkkFNeS3Q9R61jwbT/ola9P5M4XGq7pKadMsTAKntPdkigvACysbMd4rC9Uk tLKYaDJ8uP760IW4lI6dZ0Ejvxcts9F2Fp4rpv01HkFQEm6OSjG+bYnGmqqodKYRHIPu Xqc61K/DTJw/OVRheqC4DruuXHC+RTQeTWbOYhtrhn2zCrDMQ7tUptzwZP77umJoIc1y t/3ctQp5VBD5wuJc1VnH0AuHsNA4ZkOkXYuyZkz9VUHBhP8qI9U5MneIqfLhC2yIc8pt Tuo63LCBHBfugTts2SCiDjc7fzSyxAUa+qn6KS9jeXk/wzVb68J6V1irOYl7FeIM6KyP gdRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464098; x=1782068898; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JfJdqs5MKd0CqLIkn3rh1rMCUwFP6s1/sPPGLqw8n/M=; b=Zq+tZVCdeLmT2VyLEJ5T3XPreLSrUX9+pAl4P4GD4yxYt2XOxGYWhD59Z4qmbH7RUU Edc/2YiBZYrUVBZw32KIRZPlzyNh9vmuB9cTmH4yOM0QhwpqtSs9tRkQeRik2Km1r8du 0GSQgBciUgOz5pk3iS9RxZ54WytPmVBsx886sNAEGGTFni4Z1fJvV0W03q0gNr+ZcEQ1 SjtmbhrCuHAO2+7m6qm+Q8io9vMWbicq6GRPGQ4aCD5c8EZEhUj/xZFKmr7XQOo0ZcUR oKSvcj6GQ2VA5tVaigtL0iBkZW+2xqIX4f3Itlck8yjoFus/1QJL+Q3ICHdLgWi2AIzr 3o4g== X-Gm-Message-State: AOJu0Yzd+Zw73QtqX6PDV8yYhwg0HrYkS3IcCgwS//Q25eje8rpWrwcm gREG5hzd6uh3ig5iG72t0k/RdvmeisC0GRXYpRI0U8EUgtXZRTBGBQinV/9UWyZKTUQRwEvR55j ur+EbOSOQm8LZhpm2vIjpCZN9Z+S/EqVDfU/Wo72xCWfTV5aQJcpTFIYNGb+yoC1xizVzcKVlrV tdxztbxbUV1GaiD/W70DuN/95b4MrWSYdyaA== X-Gm-Gg: Acq92OGV6kpdAZ07Zl5tTbXlJ03h1AJ9xnGQitSugnVVJW5yd7KYOO/nWrB0g+DVCHt J4CtCpuEYtxjCrczaDw1ULSm64k9F7pSt4JqxAQKfbYxJqDK8i7cODYHeohsmgef8Gj2Xp0QxPo MJFCppTIoLOh7qr7pSjhe9RjqweRCBOx3+Zw/sRNvneb7kK2AXXdWELAHCnufg+XGv5AdlEAjlS Tcl/LfsAvib/5PFy9Nnz0ra1O246sVbZDegaY9vAGvxjljuowu2nAf8Efj15Y0+bOOmPCASmQrF P022vr8DFqpWVO/urtiBngS2cWZ2GAZ3gIM+Tk+Vfup30Y69tNu7Td7k+fKqD/wEMKzvJErWzs5 +ggh4Jg1sPHC1nZzBJ4ti/ANSAGiF3qNHN1ghfqMbmec= X-Received: by 2002:a05:600c:c04d:b0:492:1eed:3e67 with SMTP id 5b1f17b1804b1-492201439a1mr58945125e9.26.1781464098296; Sun, 14 Jun 2026 12:08:18 -0700 (PDT) X-Received: by 2002:a05:600c:c04d:b0:492:1eed:3e67 with SMTP id 5b1f17b1804b1-492201439a1mr58944875e9.26.1781464097717; Sun, 14 Jun 2026 12:08:17 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:15 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefano Garzarella , qemu-stable@nongnu.org, DARKNAVY , Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Subject: [PULL 059/106] libvhost-user: fix buffer overflow in virtqueue_read_indirect_desc() Message-ID: <85805ee887be4adddb1f1a34f526968adc95e582.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464496175158500 From: Stefano Garzarella virtqueue_read_indirect_desc() copies an indirect descriptor table into a buffer in chunks when the table crosses a memory region boundary. The destination is a struct vring_desc pointer but is advanced by a byte count, so each increment moves the pointer by read_len elements instead of read_len bytes, writing beyond the buffer. Use a char pointer for the destination so that the arithmetic advances correctly. While at it, change the source from a struct vring_desc pointer to a void pointer: when the table is split across regions, vu_gpa_to_va() can return a pointer into the middle of a descriptor, so casting it to a struct vring_desc pointer is wrong. The pointer is only used as a memcpy() source, so a void pointer is fine. Fixes: CVE-2026-6425 Fixes: 293084a719 ("libvhost-user: Support across-memory-boundary access") Cc: qemu-stable@nongnu.org Reported-by: DARKNAVY Signed-off-by: Stefano Garzarella Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260417132645.121192-2-sgarzare@redhat.com> --- subprojects/libvhost-user/libvhost-user.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvho= st-user/libvhost-user.c index 9c630c2170..014d210748 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -2391,8 +2391,9 @@ static int virtqueue_read_indirect_desc(VuDev *dev, struct vring_desc *desc, uint64_t addr, size_t len) { - struct vring_desc *ori_desc; + char *dst_desc =3D (char *)desc; uint64_t read_len; + void *ori_desc; =20 if (len > (VIRTQUEUE_MAX_SIZE * sizeof(struct vring_desc))) { return -1; @@ -2409,10 +2410,10 @@ virtqueue_read_indirect_desc(VuDev *dev, struct vri= ng_desc *desc, return -1; } =20 - memcpy(desc, ori_desc, read_len); + memcpy(dst_desc, ori_desc, read_len); len -=3D read_len; addr +=3D read_len; - desc +=3D read_len; + dst_desc +=3D read_len; } =20 return 0; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464270; cv=none; d=zohomail.com; s=zohoarc; b=HN8Fd/ih3cAgNcdZP3dUe0DabnXfKPkbhHcwAS6xcTKxOhuLtAmlK2CO+sd89Y+ofkMo6kAurCaMlj+P54V243PgJNwoFGRODwdJpTnn/pUmK7/PoIFSRfCl/psABvak+KO2KfpseNVfEuBfJWfSV9hXyrtYZmN0dFauu7oChhc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464270; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VDfoHXS7iEWo5M0RdHNJpei5+MJB/QTX3LEyVD1aqFQ=; b=mLG9ygrlLVThRVpxUmuF1v+Wxbz89ADsd90RoN73h4WHsStNNF1x4MIgWXyHkHSFKaIq0MHKnnDpHzgw9DgE5JaduH6iABjB1seXATXBb2JeyxMnuukekgOWOI+NNUXOQd5dNcWzSx/Oqk5WuDrBiNC7iduQkXB8UZThXM16bss= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464270584387.9266597805622; Sun, 14 Jun 2026 12:11:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCC-00065g-4P; Sun, 14 Jun 2026 15:08:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqC1-0005zs-52 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqBz-0002Ah-Lq for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:24 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-496-9QED1-ayMQmMjfvWJCVizQ-1; Sun, 14 Jun 2026 15:08:21 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4601daf4c65so1528708f8f.2 for ; Sun, 14 Jun 2026 12:08:21 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2e6a8fsm27246463f8f.37.2026.06.14.12.08.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464103; 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=VDfoHXS7iEWo5M0RdHNJpei5+MJB/QTX3LEyVD1aqFQ=; b=KyPuG5cZ+UUPlgwPyKHTktdWL/23hT3l18BxZAUiI65wkaencqfXEzI58mJk26ULL9rSoE +AAhnqXru6dTuNHFjlvM5S4pJ3oR+rJU/qthbEpME5Lpvqgl3Zx0GWd3pSIC8f0nVEgOcy 8rq9uMAw9Yxwoowr9EZBuRYPUXjt66Y= X-MC-Unique: 9QED1-ayMQmMjfvWJCVizQ-1 X-Mimecast-MFC-AGG-ID: 9QED1-ayMQmMjfvWJCVizQ_1781464101 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464100; x=1782068900; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=VDfoHXS7iEWo5M0RdHNJpei5+MJB/QTX3LEyVD1aqFQ=; b=eekJ/DgvnTu8MtPs86/k9CRAmghMfAlMbEEq+YY02WjHmmyccnQd69Y/ZGH49dAwEQ 2+toascwf2ylYYcaE/ja70wbdzqBk5hegtlUgg49ryj556e7iLUco1N5JLPt/FrOhjMk 45cD9Ro9wMMU8RMCtgsIlbyqKPyddblCuMxyIcc+VC+9ZXk4ZgJALEx2P+5pdC8O8zvv jxIMugxvZPg3VY6UR+BTm85Bz53pHeJgoLlnJUTqL0M2DH5YXMhCUU6v/coN/miRiU9y PahLtNKzJ3azFkaM+WvbdIRpvumz2n5FRa/4UIblUJHDIe9lyBM/hWY4CMdnc3kbhHiw HrZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464100; x=1782068900; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=VDfoHXS7iEWo5M0RdHNJpei5+MJB/QTX3LEyVD1aqFQ=; b=cFQx/HFYLRutaaRRWDz2N3zDEPmNDR5HlnxksMzv8zqwRW8XjY0miJY9v3JihZikkY dnQftVAqUNcAzWA4Mi46RZFIXGlrDSYlOPDAvIV0EQBqmit3BCgSAedlzQ5ozKfIPz6W 9J4hYRZFyS1r8JttIwrIchDsaTw0ubK8Z9CJCOETTpGNgiHxRuPAJGTq9qNiZwqhmF7K SX4McwwvCODKkb1JT+++IqotK6ay0Iqd1aBBW3TqR07uT8YhW2/GfRol8mLhWDh2NGox ZrhH3NZ7FLRtzqQwWNP7p+SqbhyeVUInRKIOrDBI+LYuT5C7mSyLxRCOvkvGmVF9cvPx LvvQ== X-Gm-Message-State: AOJu0Yz2o6jIQq9Gfvnwf+byFI3MBD5SCtFuwH3WcyTrGTzvOUALudxF XohsFv/+0i1dXT2aHGjk7Fg7Nx+/x+nDB+Ac1KxYI5vuTMjXJ6/4299fgcPC26m+axHMeKFHOWw 1egcuTEiirr/fkz9zaD9tH5tCqXBWalQaI7hm8XQN/P10yywQiNCOMbWsgkyx+h75pxXBc7N6ZZ JUxV1aUcd6l6N60Rj69XSPfpcEMI/1gLz0gg== X-Gm-Gg: Acq92OEIypgRzFHB5a2mTaRZHvSEmvsZqx3XAdZaifZzwz0mjjqPZd0ROmfw8z2kpSL /ZzG2RdWpvu0/zYZH8W9oFtOjPM4gMbNBj9j/vv8wgjgIG1FLZ15reW93iN2KSJdcj/F3SJjqZT 8p11jrtGey155kln36RiuMJSusi8/5aIPVy/WXzAWl3uxI6dOoMQoSZ378Wd0akq1jjXkkmm+Nv LU3plR7LX1Wku0BypxiOhOj5lW16McQsiSpSF/Bec9nTnj7LhhFzsa8rl+og58MDlmVXpdvLABe ffg1h11inVcwaVHbnVTSM5XeBwiJTav79Ora7g7NNZ/WkqMS8yxCMhIizDmulmQ+laUdeNMUBwX UicWBj/BEFuGNozTpHZwI1C6WpjAfwTHQ6LF8058Q+F8= X-Received: by 2002:adf:e013:0:20b0:45e:ef4a:8192 with SMTP id ffacd0b85a97d-4606dbad311mr10499427f8f.38.1781464100468; Sun, 14 Jun 2026 12:08:20 -0700 (PDT) X-Received: by 2002:adf:e013:0:20b0:45e:ef4a:8192 with SMTP id ffacd0b85a97d-4606dbad311mr10499402f8f.38.1781464099984; Sun, 14 Jun 2026 12:08:19 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:18 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefano Garzarella , qemu-stable@nongnu.org, DARKNAVY , Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= , Xie Yongji Subject: [PULL 060/106] libvduse: fix buffer overflow in vduse_queue_read_indirect_desc() Message-ID: <9f1b6d013d42b112680b435af9a9dff331b3fbaf.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464271673158500 From: Stefano Garzarella vduse_queue_read_indirect_desc() copies an indirect descriptor table into a buffer in chunks when the table crosses a memory region boundary. The destination is a struct vring_desc pointer but is advanced by a byte count, so each increment moves the pointer by read_len elements instead of read_len bytes, writing beyond the buffer. Use a char pointer for the destination so that the arithmetic advances correctly. While at it, change the source from a struct vring_desc pointer to a void pointer: when the table is split across regions, iova_to_va() can return a pointer into the middle of a descriptor, so casting it to a struct vring_desc pointer is wrong. The pointer is only used as a memcpy() source, so a void pointer is fine. Fixes: CVE-2026-6425 Fixes: a6caeee811 ("libvduse: Add VDUSE (vDPA Device in Userspace) library") Cc: qemu-stable@nongnu.org Reported-by: DARKNAVY Signed-off-by: Stefano Garzarella Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260417132645.121192-3-sgarzare@redhat.com> --- subprojects/libvduse/libvduse.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/subprojects/libvduse/libvduse.c b/subprojects/libvduse/libvdus= e.c index 21ffbb5b8d..df9ca5e56f 100644 --- a/subprojects/libvduse/libvduse.c +++ b/subprojects/libvduse/libvduse.c @@ -465,8 +465,9 @@ static int vduse_queue_read_indirect_desc(VduseDev *dev, struct vring_desc *desc, uint64_t addr, size_t len) { - struct vring_desc *ori_desc; + char *dst_desc =3D (char *)desc; uint64_t read_len; + void *ori_desc; =20 if (len > (VIRTQUEUE_MAX_SIZE * sizeof(struct vring_desc))) { return -1; @@ -483,10 +484,10 @@ vduse_queue_read_indirect_desc(VduseDev *dev, struct = vring_desc *desc, return -1; } =20 - memcpy(desc, ori_desc, read_len); + memcpy(dst_desc, ori_desc, read_len); len -=3D read_len; addr +=3D read_len; - desc +=3D read_len; + dst_desc +=3D read_len; } =20 return 0; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464323; cv=none; d=zohomail.com; s=zohoarc; b=Kyo7ytGm3Z0yz9rs1sqVoUMAUjOP8hgoU4kZWZa42gKR7p+91vj66EWtPx0vrQ2CzsEuuaY77pbVWqb0V5Yf5E+rciHHoX9f+570QsNRZIs5RZghaH6mE5ON1UlXIi0fz4eVZ2TJGKx7+rBvGbBKG8CWpfKA/3lnpqS7NqR+SmE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464323; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fM+6MOhv1VsWlyXc3NgGA3Lyz4yYGMByriNOzqqlJGA=; b=mIi6vvu/86YOXIAnUiiQ+/fNNJbPuGP1FYk5Ru+yzAZVmuVVvEyE5HLk2DDucYBspZdhU14LKAG88Ek7wGH9dbJIBAXkK5cWEj0Rk4GvM1SRQTr3aXU2eXjA+12M0IM01gpck62ELnEVLiSpWoKE1DcS+J/cE9UgIyxVkJKbizI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146432306093.130637454502; Sun, 14 Jun 2026 12:12:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCE-00068F-9E; Sun, 14 Jun 2026 15:08:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqC4-00061t-58 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqC2-0002B3-QK for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:27 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-245-XJrigv4TOOC72OUvek5ysg-1; Sun, 14 Jun 2026 15:08:24 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490d3f03883so22030885e9.1 for ; Sun, 14 Jun 2026 12:08:24 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2b1056sm27198427f8f.18.2026.06.14.12.08.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464105; 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: in-reply-to:in-reply-to:references:references; bh=fM+6MOhv1VsWlyXc3NgGA3Lyz4yYGMByriNOzqqlJGA=; b=SEWKlPFMlkXKJg/vHTZ10RStkciTe/NAgx/Vh2lyqVlx+8fn/4qjWAtkTbDvi9t3nsw54Y VBo5kD6Dy4oOCeAqFpFuqeSkMMzDn9ILdaNTO3n+kpalxnodJf4fNw85nlJgrgNtQckqM0 8s57/PHygIkSGJhjdW+pKQld6R3bbZA= X-MC-Unique: XJrigv4TOOC72OUvek5ysg-1 X-Mimecast-MFC-AGG-ID: XJrigv4TOOC72OUvek5ysg_1781464103 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464103; x=1782068903; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=fM+6MOhv1VsWlyXc3NgGA3Lyz4yYGMByriNOzqqlJGA=; b=ZT0iTUsekcjXfvjwlVpK2jc990QggF1CJ12p5DkUlOl/YvcD6eQ9HlVFw+dfbaiT0L dxgZShfGLitJP91DloHyTFoNKp8COvZ/zu1srbhWM2fh7a2w930a3p4sBKFKxmVuUBZQ Cj15Du+BZMTJszXwu0EzfkmdpOsSzuMrnf82hOw5VGXqwMPf6bbhaVaPxIJe8j3ZwOgp y50HHEugU59b8u4F+xal3PLojWvskFEGuFOOhR9Fo1mmSP5JjYSP0sEyY1L7vzE6lH0N RdK/psjTGeaLGD6lnZ99XdDijES+3SoHcFMATpwezhTgY6+Nwmug6gq/N1DOYJ8R+4v6 NQLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464103; x=1782068903; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fM+6MOhv1VsWlyXc3NgGA3Lyz4yYGMByriNOzqqlJGA=; b=qRZisfN9Ffk/Tw5T+3HyJ04POQ/egZ10Rs1MGHtIvplx4MSWj3bpeef5+S1x5DoZau ksOqGlxGGnRn3LebXp+fG/tPxvOyiiz3IfWEnKPWXZqq/lEruV0F0Wg/BL/1pzlCkrB5 yAgiE+968DXZPpkUr0Flm9GOa7qrCX/NekhCVOsPIfebirJ2rkY4c/Rhi+aKQ6uhDON2 +VNP4XvKmznDY4Pom0oLLc5l84zM8CObPPIdv6rEqZiyrkM/0CcVYt8zGSci+T/cWrGy /AtfsHxdaqzor9w0b8B9qTvUdJrpTQKwKHzEQ8ruY6J09SRy+TCWSjKTEW2UAgUZJJC5 nhkg== X-Gm-Message-State: AOJu0YwDbcZSbzgqUw1ytslD+kBaqszEYDJvLJN7FMReFGW6uUnblZsW WJZj7KBko/4V9SuGvGPXzjSFV+/HfxU78V2X+T9dQoYLHtP4135qEpEAtPGlXsOmMNySO4SA4i6 7X+ERdlvHm66BtEycJnsZ4kzdXzwoxr5fiY8nSvfvmKXbRG+k8YuH+uOWSa0muTMr4hR+yjLeNq HgYtqsN6eyRTakIMFCvYd+EFdHTuIT+1hh1g== X-Gm-Gg: Acq92OGHxOq37T+/7RgKahB4fQulEketKapO5KDumC+5xmHHwEuaSgasllYqb0DXn46 pKtkxiDolgCRHqOEeARlVHNQK16S9wJVpAFk9bT1pZgtuBRC+c6T91wzQ5wXJhnVef0I7UYXqMx B63LGvFvYeyh1/XxCaq3jN4Dt6g7lI9ycvXmkChJRnp/kP3Lk7bk9hGeTUNjLO6pAsrpFl4nID/ rRy/+JioxroM52e9s6mRHzDLtffX70+AB1Xx8OJiUFSpQtExYGtPN3ZCByUGQgtfsduZsX2SJCZ wjw0wzbGhqZJO/ZjvJzCjdAlo7cUEPm1BEKbAmy2uKN9aAafxNDzsFPJhV3nfJKfgMZVL3sbAab M6jt8p5hHqeWWy6dEX6rR7uelHMK2oezyi6gaM1sSInE= X-Received: by 2002:a05:600c:314a:b0:490:da12:f1fa with SMTP id 5b1f17b1804b1-490ec503f0cmr127714045e9.31.1781464102835; Sun, 14 Jun 2026 12:08:22 -0700 (PDT) X-Received: by 2002:a05:600c:314a:b0:490:da12:f1fa with SMTP id 5b1f17b1804b1-490ec503f0cmr127713715e9.31.1781464102262; Sun, 14 Jun 2026 12:08:22 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:20 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Jonathan Cameron , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Thomas Huth , Pierrick Bouvier , Richard Henderson Subject: [PULL 061/106] MAINTAINERS: Update CXL maintainers entry including adding linux-cxl list Message-ID: <7f79ee47951bd263b1447ab0281d92b69e2b70ee.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464323472158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jonathan Cameron The CXL maintainers entry needs an update. For a while convention has been to +CC linux-cxl@vger.kernel.org to get better coverage for CXL aspects so formalize that with an L entry. Drop Fan as he has not been at Samsung for a while now. Switch my email address over to my kernel.org one. Signed-off-by: Jonathan Cameron Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260415143040.22223-1-Jonathan.Cameron@huawei.com> --- MAINTAINERS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 3b768fc080..5a82aa3a05 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3203,8 +3203,8 @@ F: tests/qtest/migration/cpr* F: docs/devel/migration/CPR.rst =20 Compute Express Link -M: Jonathan Cameron -R: Fan Ni +M: Jonathan Cameron +L: linux-cxl@vger.kernel.org S: Supported F: hw/cxl/ F: hw/mem/cxl_type3.c --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464213; cv=none; d=zohomail.com; s=zohoarc; b=Dg5lUWtgWfACR8uZi6nyB+lyuU3xB2CMu/Fey6Le43kfo5gw8Rr8YKCn6fzmxWpq1a6Tm+xtMroo9WrShCUdouj+hlkeTGhCL2ga4n6FqNXo2lZIlBjMIvh83zucBLbsUJ55Cq4cL9/71dvsQRXbZSr1ngRBgsOZok5ykwOd9eQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464213; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BMrasA+5yej4Fp8nPUdQmO6ZFRFVhXynYmspMja4C+M=; b=nHLvxJfbjBmgTC/q9jfONloLjomtkza/KSb3ny5sVeQ4ebXhVn+2/Kh8pPfOg81BD4yN4zsGKfGL/BS6TH0CY1ryWvyPO9jZDA7xjMhKN5VubT9BcDin9TTozkDhAiN/b7czngWzoN7r/C3WauDuB66rw1ZwKq79xtxhlwY8exk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464213217860.9429701613705; Sun, 14 Jun 2026 12:10:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCF-0006ER-87; Sun, 14 Jun 2026 15:08:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqC7-00064N-RE for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:33 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqC6-0002Cg-6f for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:31 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-416-HALWTjI1P_uwQ3Hx7hIOpQ-1; Sun, 14 Jun 2026 15:08:26 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490d3f03883so22030985e9.1 for ; Sun, 14 Jun 2026 12:08:26 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2b0d28sm27642580f8f.20.2026.06.14.12.08.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464107; 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: in-reply-to:in-reply-to:references:references; bh=BMrasA+5yej4Fp8nPUdQmO6ZFRFVhXynYmspMja4C+M=; b=PZoiqZiIL5sbgb6gcCdAQxZTDhr7JjyAZyQjw89ixZJdoeu3aGMh2lCr2EkuD++YwM5QDx CDC6q/+IKlwxr8t+Ickv3wkInOVrqx86s2rlSVU2ZeXiGOiDqlvN6q3LPI7gU2XIgm04F4 4uhwQ0rYSgG4KzLQe+khM9JyPK4wCks= X-MC-Unique: HALWTjI1P_uwQ3Hx7hIOpQ-1 X-Mimecast-MFC-AGG-ID: HALWTjI1P_uwQ3Hx7hIOpQ_1781464105 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464105; x=1782068905; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=BMrasA+5yej4Fp8nPUdQmO6ZFRFVhXynYmspMja4C+M=; b=ZwxKFEetCW6S9hE4n9cq1JlY/cjX64CdSigj+nQA5T4/CGGti6ZelOJaEHwsW5w3tx KOWTZbEK6i/bv6z0Vos0KzsPG56AoxckeyDMxFz8ENrtjH1kCtAmuEvt6cHRDofOycZ1 HDpbUHajwxQIoe3oOdg26kDLiXE8hubf0lkeyXZjQF5DUporhXUNIbLk4M6Lu8eVhkcO 8iOLVG9VVPwJpQsOwt9V417ngf1L1MZ3enEN2/45LycLpLg34lZN+arjYCvpjIsfjRNW bbLnmY/wOMAeV8jHSqki7Cw0qte52OrSvTMX7rYnURdyOLMoGo0KUVQ9b2lL2HQnxD2h Uu4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464105; x=1782068905; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BMrasA+5yej4Fp8nPUdQmO6ZFRFVhXynYmspMja4C+M=; b=GO287TRCtI1cAIzPIgi1Y3D968j0pRzXwrXKH3Ly5uXKDcGaiO+Eke45XyPYU34oDp EDKyNuygtBbEUF8wIhbyMXB1K/G0KT4725KSZ4a/PzAkezreRyjU8Rlo/ARLUNPrjMcp qnMlOA23U8wRWQGRDNpS8L5YOXychHykWd7IfkNdkZxMrUa8yL06alyR3Dr5R/PGQquO MGDV6cIO6mCPfxflY1QVkzQ6mgrjkExW7W2vNACbwlQSjovF0w8lqHFPHn8QMBt6f3UV ecqER+ACODUJ/AlOrWExzMAHU3rO7gYgkfy4WqtRo3cie9sz888L/rcSBH3m4S9u//+k Lm3g== X-Gm-Message-State: AOJu0YzO9wniewW/Q/MMO6KJ4SG7DSOaVJaJ1wSLZE11cQ9zUCTxiv6q 5Hhj9H+YskZ9l1kq9geur19S6wBhEbQRFLmFxSujJFobLJLjBRrTZV7A2qLa6xV88KKjBZrASM/ v4+wyw6YduMASW+eSqe1hs6lUU/fJ76ydWpOJLoxE6gE2pKglFVFfQoqoeX7SQlwr0eu/IVGqSg HFE7nuUFu0T+2R0gUyzpsPUyyHlp4jpWNylQ== X-Gm-Gg: Acq92OEirrG1XDqfo0se3lsByKfhHUf5G4BJtubrVfU09zKt4ETjf2N/87tge86PuVn J4nCoGPhl9RKFHKYRbr6dxCaL+PvW15SfEgEVrClimC6W/xFmyni9If6QaTbDKKgxeJqL6BAIVp QzpLhy1k4Zo5JFf2rjdXXjvu8+4lZB0D1jxOPGRvfHzs/iyUOEoAFYK1wSsLArx6w7kuKVg8CrC brlmaW3gcS1qZ8HILNVMKtyTfDUzMi8MA9MthxvXCg2Ktnhm2y2WWec+VkUzJhac/4kFgtT+Yk1 6Do/SSmf8F11uqDMSoCBdD11OetLrxDE6YyDzHoynJVJMibF4QXqV2+U5Uugz3HliZ5sutPhc+F tzHWtzMVCv+oD6b1Prmp6OqlGKFlTjWSnqboOvWXVwyY= X-Received: by 2002:a05:600c:1d22:b0:490:e5c1:b8bd with SMTP id 5b1f17b1804b1-490ec313655mr152617825e9.0.1781464104994; Sun, 14 Jun 2026 12:08:24 -0700 (PDT) X-Received: by 2002:a05:600c:1d22:b0:490:e5c1:b8bd with SMTP id 5b1f17b1804b1-490ec313655mr152617265e9.0.1781464104307; Sun, 14 Jun 2026 12:08:24 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:22 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , "Jorge E. Moreira" , Stefano Garzarella , Pierrick Bouvier Subject: [PULL 062/106] vhost-user.rst: Explicitly allow front-end to write to kick FDs Message-ID: <08c2415217b53ee66a8b7f705a21beeef19ffc6d.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464215091158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Jorge E. Moreira" Migration of back-end state happens while the device is suspended (i.e all vrings are stopped). To resume normal operation on the destination, the vrings need to be started again with a kick (either a write on the FD or the VHOST_USER_VRING_KICK in-band message if negotiated). While these notifications are typically sent by the driver, it has no reason to send them in the destination if it already sent them in the source as the driver is unaware that a migration took place. Therefore it should be the responsibility of the vhost-user front-end to ensure these vrings are started. This is particularly necessary for queues where data only flows from device to driver, such as those used by the vsock and input devices. This behavior is already used by some qemu vhost-user front-ends (e.g vhost-user-blk) and by front-ends implemented on other VMMs(e.g CrosVm). Adding it to the vhost-user documentation makes it explicit that this strategy is permitted and suggest it to vhost-user front-end authors. Explicitly documenting it is necessary because vring kicks appear designed to originate in the driver, so having some originate in the front-end can be counterintuitive and cause developers to waste time looking for other alternatives or face pushback during code review. Signed-off-by: Jorge E. Moreira Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260411021205.3592118-1-jemoreira@google.com> --- docs/interop/vhost-user.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index 8dcb030c53..e8554a3859 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -668,7 +668,10 @@ destination, following the usual protocol for establis= hing a connection to a vhost-user back-end: This includes, for example, setting up memory mappings and kick and call FDs as necessary, negotiating protocol features, or setting the initial vring base indices (to the same value -as on the source side, so that operation can resume). +as on the source side, so that operation can resume). The vhost-user front= -end +may also write to the kick FDs of vrings containing unused buffers or send +``VHOST_USER_VRING_KICK`` if negotiated to start those vrings in the desti= nation +since the driver likely already kicked them in the source and won't do it = again. =20 Both on the source and on the destination side, after the respective front-end has seen all data transferred (when the transfer FD has been --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464610; cv=none; d=zohomail.com; s=zohoarc; b=DKyFQMILSLRQeHtGuIOxeAyOsgBEhV7VAgkkeRvAwnlQHSQ0X49SFBDRYdXs8p53aPIhGH5aTj3xAEMqyTm4ifzmOE/SVXwAj6uONYy8JkVcWNf3sWqCZXffpkXpEdKWeV+NBblz+Srb5Oa4H6ILfAan7iZ4AbPVa6pCqgpYOkU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464610; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pCyO86h5epZnCTJ4MCbMU1ZI7owfykpa/8SOyuRyK2c=; b=Up08TKWBQUWjP79r6x7wpBarrCyouRQZJLvchsBkLkJyTaF2No4UlpSJFnCHiyxHSwyEq+DrTBv3rL/5hVdns3B9WJNYPBzgW5hB7bngQ2dZh0YN91RGsjHJ5W+K9oG0DPg+rZ3TJ/wLU+0eeic3/o7Sbu+cznwLJjQ6sMT2a2M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464610555830.8420423635675; Sun, 14 Jun 2026 12:16:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCK-0006XQ-My; Sun, 14 Jun 2026 15:08:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCA-00065h-KZ for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqC8-0002Ht-NX for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:34 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-447-DwZH6vqRNHO9IdMNnNaH7A-1; Sun, 14 Jun 2026 15:08:28 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490b9cd54f3so14818835e9.2 for ; Sun, 14 Jun 2026 12:08:28 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922032ae56sm179875015e9.7.2026.06.14.12.08.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464112; 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: in-reply-to:in-reply-to:references:references; bh=pCyO86h5epZnCTJ4MCbMU1ZI7owfykpa/8SOyuRyK2c=; b=TxyE+BGOciKbta5FYEwnkcyIvOFBzY878WVX5Q2vKGxblvGT+OstrephePuFwkkzkJBVrd bg2DQM4zLP+KaXOFPsTK6eTkHdI//Q7VOYdR/mJG33mTAjzLkBRHKHu0Zj2srrsWi/1Mjb wKXeX2D2d2h2A6XADH1rl79mOC7/NsU= X-MC-Unique: DwZH6vqRNHO9IdMNnNaH7A-1 X-Mimecast-MFC-AGG-ID: DwZH6vqRNHO9IdMNnNaH7A_1781464108 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464107; x=1782068907; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=pCyO86h5epZnCTJ4MCbMU1ZI7owfykpa/8SOyuRyK2c=; b=oIdAsJt5ua0Fp73DfPSS6UdkZP8GGjOLnpgskrv2gSXIAPKcUkjvXMB8tJgY7Od54l w8EodZE/o9vh9Zh55BEbLuRg5NiBcazYlOHu3h52vWuL5AzUYWKgKUUjtlQFdsDPVE2x XAr6Vobq5n6+9vjLAoKfZfBEWQsdJTAnFtfrCbzj6Id/xQKlHceQbWAjHB87Ju9l8RAH SOdfEj1ZL2HzaNKFjvJzN1jjeHuwvsTzFwCCN3WNYQ9293TypGNt9gU+HPjkcAmgNtKm aaO+/P7UicpRhfo0wezEygRyLqLnAF/aGwuH5jD8EwKkPrcjF385YBvupwp0YnGlpPnm hRug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464107; x=1782068907; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pCyO86h5epZnCTJ4MCbMU1ZI7owfykpa/8SOyuRyK2c=; b=EZJpsyGP7DMrHh4O+5b9p8UdDPejfsco7uQg3T8Idxx7TmFOqp2hH5VHOm/LrLFbxD JP4KF/Y+Jrvi7lB+wXFrPFLGDY/VzHCtfmXv2XKSUf0DstUHBDU8vkT9kwjY1lxJv9ju onzZlwSs2sjDA5I4KVDTuwXboxyRdGNsPRDFIC0FTCf+lDtN817icmUIT1gtYkhey5F5 wARpJaITGDzMwg5Z2xoJUV+ebFH7Q1s2VulpdoTmHhH2BXOjyftAPMAkPxt7mSSds/VP NHJVL0xS3rpE7tDLdRX4uojlOFCZQRnTT98xoeJDZKDeX5keuVUvNDUENYbWo8mo/Cq/ OSew== X-Gm-Message-State: AOJu0YwV7kJD6GvE8spONjrfUXM6HIYAQBHQdo/h7hxQhZug6oVjt8TB CHiQWbzqEB4MV4koZ/fxmb7mD9yfkAY3ABrsZhmjn35WYnd53CsWDqZ0ymvwcE/jXco/mAQ14ne DTEOXleKzPhjwBQj7Jhb+Gfc6+TbAtVIXpINFhgReLyuC6wcNiW438+qJzPWJoElZEDSww23tAv xLg1sAs3nQXLiWlxuE1K0Un3AbMz1eKfHmdQ== X-Gm-Gg: Acq92OEXEPHGOPfZoAV3q2tl35DLrgQ86nI/LZOfgxRdF1M1Q+Gv8EnrDj9mZly5/oL ri7qenYlUj4DUOZ1x4+Tq+9eLpI4oKw+HRruWCzh/VRW7eTPV34HA+K5JeKenABJYsoCpz5r6yO 8BdBiI1t5XI2Om4F1FCt34RRbOR4vclMH9ICKfxx50BamoE/SaUCfC4s26zxr0+e2QVbf+dCHyw rDNQpmDnnRWDmxgp8/pNOH4MsD+yMGlcQpdjr7FdoqQ5HvI2J9g26x6wp3lQXuPxZF1I/7NR0bx tJfmXCAQfZT80wZ8tgoh8uHKYiAU+PCdMZX3CQBHe6JSaangF4fJj5CPuclyFdEN6WGDa32E3+p 7DVaIJ7DQziD2KvvChP09oE55PDDFaAbFBUmZeKDK1Zo= X-Received: by 2002:a05:600c:1906:b0:492:1edf:9fbc with SMTP id 5b1f17b1804b1-492200516f3mr93037775e9.1.1781464107427; Sun, 14 Jun 2026 12:08:27 -0700 (PDT) X-Received: by 2002:a05:600c:1906:b0:492:1edf:9fbc with SMTP id 5b1f17b1804b1-492200516f3mr93037315e9.1.1781464106758; Sun, 14 Jun 2026 12:08:26 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:24 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alejandro Jimenez , qemu-stable@nongnu.org, David Hoppenbrouwers , Sairaj Kodilkar , Paolo Bonzini , Richard Henderson Subject: [PULL 063/106] amd_iommu: Follow root pointer before page walk and use 1-based levels Message-ID: <786550e2d38a92e90c13eb9d57e3a72d7ab38d51.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464612906158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Alejandro Jimenez DTE[Mode] and PTE NextLevel encode page table levels as 1-based values, but fetch_pte() currently uses a 0-based level counter, making the logic harder to follow and requiring conversions between DTE mode and level. Switch the page table walk logic to use 1-based level accounting in fetch_pte() and the relevant macro helpers. To further simplify the page walking loop, split the root page table access from the walk i.e. rework fetch_pte() to follow the DTE Page Table Root Pointer and retrieve the top level pagetable entry before entering the loop, then iterate only over the PDE/PTE entries. The reworked algorithm fixes a page walk bug where the page size was calculated for the next level before checking if the current PTE was already a leaf/hugepage. That caused hugepage mappings to be reported as 4K pages, leading to performance degradation and failures in some setups. Fixes: a74bb3110a5b ("amd_iommu: Add helpers to walk AMD v1 Page Table form= at") Cc: qemu-stable@nongnu.org Reported-by: David Hoppenbrouwers Reviewed-By: David Hoppenbrouwers Reviewed-by: Sairaj Kodilkar Signed-off-by: Alejandro Jimenez Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260330212817.992673-2-alejandro.j.jimenez@oracle.com> --- hw/i386/amd_iommu.c | 134 ++++++++++++++++++++++++++++++-------------- hw/i386/amd_iommu.h | 11 ++-- 2 files changed, 98 insertions(+), 47 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 5d6a405263..bc083d0073 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -648,6 +648,52 @@ static uint64_t large_pte_page_size(uint64_t pte) return PTE_LARGE_PAGE_SIZE(pte); } =20 +/* + * Validate DTE fields and extract permissions and top level data required= to + * initiate the page table walk. + * + * On success, returns 0 and stores: + * - top_level: highest page-table level encoded in DTE[Mode] + * - dte_perms: effective permissions from the DTE + * + * On failure, returns -AMDVI_FR_PT_ROOT_INV. This includes cases where: + * - DTE permissions disallow read AND write + * - DTE[Mode] is invalid for translation + * - IOVA exceeds the address width supported by DTE[Mode] + * In all such cases a page walk must be aborted. + */ +static uint64_t amdvi_get_top_pt_level_and_perms(hwaddr address, uint64_t = dte, + uint8_t *top_level, + IOMMUAccessFlags *dte_per= ms) +{ + *dte_perms =3D amdvi_get_perms(dte); + if (*dte_perms =3D=3D IOMMU_NONE) { + return -AMDVI_FR_PT_ROOT_INV; + } + + /* Verifying a valid mode is encoded in DTE */ + *top_level =3D get_pte_translation_mode(dte); + + /* + * Page Table Root pointer is only valid for GPA->SPA translation on + * supported modes. + */ + if (*top_level =3D=3D 0 || *top_level > 6) { + return -AMDVI_FR_PT_ROOT_INV; + } + + /* + * If IOVA is larger than the max supported by the highest pgtable lev= el, + * there is nothing to do. + */ + if (address > PT_LEVEL_MAX_ADDR(*top_level)) { + /* IOVA too large for the current DTE */ + return -AMDVI_FR_PT_ROOT_INV; + } + + return 0; +} + /* * Helper function to fetch a PTE using AMD v1 pgtable format. * On successful page walk, returns 0 and pte parameter points to a valid = PTE. @@ -662,40 +708,49 @@ static uint64_t large_pte_page_size(uint64_t pte) static uint64_t fetch_pte(AMDVIAddressSpace *as, hwaddr address, uint64_t = dte, uint64_t *pte, hwaddr *page_size) { - IOMMUAccessFlags perms =3D amdvi_get_perms(dte); - - uint8_t level, mode; uint64_t pte_addr; + uint8_t pt_level, next_pt_level; + IOMMUAccessFlags perms; + int ret; =20 - *pte =3D dte; *page_size =3D 0; =20 - if (perms =3D=3D IOMMU_NONE) { + /* + * Verify the DTE is properly configured before page walk, and extract + * top pagetable level and permissions. + */ + ret =3D amdvi_get_top_pt_level_and_perms(address, dte, &pt_level, &per= ms); + if (ret < 0) { + return ret; + } + + /* + * Retrieve the top pagetable entry by following the DTE Page Table Ro= ot + * Pointer and indexing the top level table using the IOVA from the re= quest. + */ + pte_addr =3D NEXT_PTE_ADDR(dte, pt_level, address); + *pte =3D amdvi_get_pte_entry(as->iommu_state, pte_addr, as->devfn); + + if (*pte =3D=3D (uint64_t)-1) { + /* + * A returned PTE of -1 here indicates a failure to read the top l= evel + * page table from guest memory. A page walk is not possible and p= age + * size must be returned as 0. + */ return -AMDVI_FR_PT_ROOT_INV; } =20 /* - * The Linux kernel driver initializes the default mode to 3, correspo= nding - * to a 39-bit GPA space, where each entry in the pagetable translates= to a - * 1GB (2^30) page size. + * Calculate page size for the top level page table entry. + * This ensures correct results for a single level Page Table setup. */ - level =3D mode =3D get_pte_translation_mode(dte); - assert(mode > 0 && mode < 7); + *page_size =3D PTE_LEVEL_PAGE_SIZE(pt_level); =20 /* - * If IOVA is larger than the max supported by the current pgtable lev= el, - * there is nothing to do. + * The root page table entry and its level have been determined. Begin= the + * page walk. */ - if (address > PT_LEVEL_MAX_ADDR(mode - 1)) { - /* IOVA too large for the current DTE */ - return -AMDVI_FR_PT_ROOT_INV; - } - - do { - level -=3D 1; - - /* Update the page_size */ - *page_size =3D PTE_LEVEL_PAGE_SIZE(level); + while (pt_level > 0) { =20 /* Permission bits are ANDed at every level, including the DTE */ perms &=3D amdvi_get_perms(*pte); @@ -708,37 +763,34 @@ static uint64_t fetch_pte(AMDVIAddressSpace *as, hwad= dr address, uint64_t dte, return 0; } =20 + next_pt_level =3D PTE_NEXT_LEVEL(*pte); + /* Large or Leaf PTE found */ - if (PTE_NEXT_LEVEL(*pte) =3D=3D 7 || PTE_NEXT_LEVEL(*pte) =3D=3D 0= ) { + if (next_pt_level =3D=3D 0 || next_pt_level =3D=3D 7) { /* Leaf PTE found */ break; } =20 + pt_level =3D next_pt_level; + /* - * Index the pgtable using the IOVA bits corresponding to current = level - * and walk down to the lower level. + * The current entry is a Page Directory Entry. Descend to the low= er + * page table level encoded in current pte, and index the new table + * using the appropriate IOVA bits to retrieve the new entry. */ - pte_addr =3D NEXT_PTE_ADDR(*pte, level, address); + *page_size =3D PTE_LEVEL_PAGE_SIZE(pt_level); + + pte_addr =3D NEXT_PTE_ADDR(*pte, pt_level, address); *pte =3D amdvi_get_pte_entry(as->iommu_state, pte_addr, as->devfn); =20 if (*pte =3D=3D (uint64_t)-1) { - /* - * A returned PTE of -1 indicates a failure to read the page t= able - * entry from guest memory. - */ - if (level =3D=3D mode - 1) { - /* Failure to retrieve the Page Table from Root Pointer */ - *page_size =3D 0; - return -AMDVI_FR_PT_ROOT_INV; - } else { - /* Failure to read PTE. Page walk skips a page_size chunk = */ - return -AMDVI_FR_PT_ENTRY_INV; - } + /* Failure to read PTE. Page walk skips a page_size chunk */ + return -AMDVI_FR_PT_ENTRY_INV; } - } while (level > 0); + } + + assert(PTE_NEXT_LEVEL(*pte) =3D=3D 0 || PTE_NEXT_LEVEL(*pte) =3D=3D 7); =20 - assert(PTE_NEXT_LEVEL(*pte) =3D=3D 0 || PTE_NEXT_LEVEL(*pte) =3D=3D 7 = || - level =3D=3D 0); /* * Page walk ends when Next Level field on PTE shows that either a lea= f PTE * or a series of large PTEs have been reached. In the latter case, ev= en if diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index 302ccca512..7af3c742b7 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -186,17 +186,16 @@ =20 #define IOMMU_PTE_PRESENT(pte) ((pte) & AMDVI_PTE_PR) =20 -/* Using level=3D0 for leaf PTE at 4K page size */ -#define PT_LEVEL_SHIFT(level) (12 + ((level) * 9)) +/* Using level=3D1 for leaf PTE at 4K page size */ +#define PT_LEVEL_SHIFT(level) (12 + (((level) - 1) * 9)) =20 /* Return IOVA bit group used to index the Page Table at specific level */ #define PT_LEVEL_INDEX(level, iova) (((iova) >> PT_LEVEL_SHIFT(level))= & \ GENMASK64(8, 0)) =20 -/* Return the max address for a specified level i.e. max_oaddr */ -#define PT_LEVEL_MAX_ADDR(x) (((x) < 5) ? \ - ((1ULL << PT_LEVEL_SHIFT((x + 1))) - 1) : \ - (~(0ULL))) +/* Return the maximum output address for a specified page table level */ +#define PT_LEVEL_MAX_ADDR(level) (((level) > 5) ? (~(0ULL)) : \ + ((1ULL << PT_LEVEL_SHIFT((level) + 1))= - 1)) =20 /* Extract the NextLevel field from PTE/PDE */ #define PTE_NEXT_LEVEL(pte) (((pte) & AMDVI_PTE_NEXT_LEVEL_MASK) >> 9) --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464372; cv=none; d=zohomail.com; s=zohoarc; b=mOCsE5B2rU3gyX1YZ6uY/2GO752V1GguRNbMeYkSe5e8M6j9GT2e6n71CQOnB48BMq3IUgEXCZsuVN+qEG3HDkeM7N3KaxgFr2Pev93o4SzgekIMPfnxwvZeWYJmleswf/YQji0vKJZ6qptaDIqFWsy/Et5fEcLpu9EhyoL9lU8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464372; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KUPJ12Es9QnfxKUKTquG6Gjp9/vUPl/q9LFmvTsYL0M=; b=JSp+lNctw7F7wlCUm6uHuKpeS+CdFwrI0RnuydZ2IY7ez8rK27KJwp20SBqOcTiJ/OuAytxGHnk0SqLWNcL7YHu7oR5Z3NuLsamqA5wYaH8dY8qpExnG5REXhqMm4IAVe4am5yG7y6zqQf8oSKF6GQN/t6+9lAwyddgFpv3O7sM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464372844893.3381120388452; Sun, 14 Jun 2026 12:12:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCI-0006Tx-R0; Sun, 14 Jun 2026 15:08:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCB-000661-Q1 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqC9-0002IC-V8 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:35 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-203-9sEXxhQrNC2Oc6QMEORX3w-1; Sun, 14 Jun 2026 15:08:31 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490ae016853so16990885e9.2 for ; Sun, 14 Jun 2026 12:08:31 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922033dd59sm176900185e9.9.2026.06.14.12.08.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464113; 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: in-reply-to:in-reply-to:references:references; bh=KUPJ12Es9QnfxKUKTquG6Gjp9/vUPl/q9LFmvTsYL0M=; b=gXv6u128TH7ZGWRDtjTw3CVCknlhi34t33VIzV2nPjvqUQDHxTerly0XR4hPLMYQsISaUz iSCtNEiV/vucSKMVAfpDpc2Zld+Blq6+rNa8ANqODDmYw53xrZRpMveRZ20vOZhceLCNGi PUD4Zo1fUXrnMe8S8/hOJjbM7nm80js= X-MC-Unique: 9sEXxhQrNC2Oc6QMEORX3w-1 X-Mimecast-MFC-AGG-ID: 9sEXxhQrNC2Oc6QMEORX3w_1781464111 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464111; x=1782068911; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=KUPJ12Es9QnfxKUKTquG6Gjp9/vUPl/q9LFmvTsYL0M=; b=VaEt0zwvLJhzPzr304HKj+1wRf5dAtXhDgJgYHf4gBlIWkB8wDhI7XVtH6WgGpifTA qIX9fZzaWcrWQ4LbB9UzaEhuFXuKtV0kCK1PxiBLiNJq4dxgapI7l6YWCpepiZCWUmxO NgW+Z4wnASgSrzKL3l0khNaOBNdDHHN3+R8Kf3OGMSKaQMTJlVKwHBe1fVZDNszcKDqm pB6eQmLzBOwiaGYrA8Eo1w9i1ZrLh18h4asaFrj90gA1iHcbseapAKM28vT0zJkdrDsZ mqnVEhMLh/nHkVgQ5SVeH/KIOdXDRVYZqUDz5NWLxGMiYT8IAOhJ5Gs0SgdxtJuSJwo4 +2/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464111; x=1782068911; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KUPJ12Es9QnfxKUKTquG6Gjp9/vUPl/q9LFmvTsYL0M=; b=qXOG8MjZq+Zjehsmv7r9I2EazOvCO3XZFzFVMDal3Bu0hLUBSLMFZmPCf3juri1zeI /28phl7MbZXaG5XNESdz084IGnB+YPbY/QqLWnKN9ByxLBUJhWm3rXov4eUn75EW/wm6 if4UmboRp2UCLo5ALbVkgPLcldlTKZMETdYRsav4ZCCob9unJ4QFTkTySGbMtHFPnw/H RWoNqWvdk96ufaTfb0qNdDU5onXsK3rq39tdjGYNlKOcTIlYhPTPhJLB7iugus11el5b VG18PJkPiJ4tinlasnQDfio0UrKn8jELspg5kJL5d4N9gDtBiumK58ot69YMdQgqK+oT CQGg== X-Gm-Message-State: AOJu0Yyi/c0ql62Hhyt/1SuASx8UGx1NjCCVtld9zJ0bK0omzI4Vgt9h Oc7Oo7ueIZnoNPweqD5QLB9KbRV9Cvqc3MaMu8kW1mSQGMWgCIcvL+tUDbrjUwPdzbXujJSf20J b0T1rHC2D4dCk6nKyoXb4Migduh3955T/JzhznrQyEaVIsshRQkdlbdNtJmHUgvGDugTpwqCKzX 5NrZeULL+eoKQUPYKcWIHaV05ZxR8AlV1DXQ== X-Gm-Gg: Acq92OHKvkVu5OjAobQQVLS6lH3TUr4DmXNrjEpAxhjx9+9WMPhcr7nR5ECEa+3M7LR ooo/74iuhSuOXTWksVKDP7rPVLvPLi7gw9sQFSc0HocEefTsPGnyzEYS157hBbXSfjk+HVB1H6K N8a2FqoYNbaTcsf79+X6r+EuLpbqE/tlHVf/VzLIVekq5FDVfXfgJsRqmYuP1OGUCggaPaPEiNC TuVAnJ6si83SyKjctN7n+edDi9j3+UCGeDpqHkKPqdAF3S+bHHdlyAWW77qLZmUTqgDjtDy0g0v YQMCLg0y9IZb98XyArKWOM3io8VA6/WhrqMsMgERyI5Ls/kOR/bMJn67Ua/k1bUEVESgnkSNvjh VpqZnkObcFWMP2SgbRN448H3W+dWTWrn9V3DCpBdN6YM= X-Received: by 2002:a05:600c:c8a:b0:490:cc1b:15c7 with SMTP id 5b1f17b1804b1-490ec52114fmr138425185e9.30.1781464110650; Sun, 14 Jun 2026 12:08:30 -0700 (PDT) X-Received: by 2002:a05:600c:c8a:b0:490:cc1b:15c7 with SMTP id 5b1f17b1804b1-490ec52114fmr138424815e9.30.1781464109973; Sun, 14 Jun 2026 12:08:29 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:27 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alejandro Jimenez , qemu-stable@nongnu.org, Sairaj Kodilkar , Paolo Bonzini , Richard Henderson Subject: [PULL 064/106] amd_iommu: Reject non-decreasing NextLevel in fetch_pte() Message-ID: <291aa70ad254b6c48012dbfd16a4af0978ea1b84.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464373686158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Alejandro Jimenez The AMD-Vi specification requires that the NextLevel field for a page table entry must not be greater or equal to the current page table entry level. Enforce this to avoid infinite page walk loops on corrupted or buggy guest page tables. The initial implementation of fetch_pte() did not implement this check, but was not vulnerable since the page walk code explicitly decremented the level instead of retrieving it from the page table entry. Cc: qemu-stable@nongnu.org Reviewed-by: Sairaj Kodilkar Signed-off-by: Alejandro Jimenez Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260330212817.992673-3-alejandro.j.jimenez@oracle.com> --- hw/i386/amd_iommu.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index bc083d0073..99b05b2ab6 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -771,6 +771,10 @@ static uint64_t fetch_pte(AMDVIAddressSpace *as, hwadd= r address, uint64_t dte, break; } =20 + /* Next level must always be less than current level */ + if (pt_level <=3D next_pt_level) { + return -AMDVI_FR_PT_ENTRY_INV; + } pt_level =3D next_pt_level; =20 /* --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464227; cv=none; d=zohomail.com; s=zohoarc; b=PP5GPisRtPKqMCmFjEis3AdoGDNMbAjqzD5PrOeuOcZj27RulJSW93VXo9SaWbTTLS9dJe9WaNavkCNHHWVAZic+J/2QQOFE4YgTDoOeXPgUvG1OcZ+Zu5pxeOEzOt9giRC+zBzlLXOBnrBy2XHeTNjgSO/c41gFGl2LkWpdfUI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464227; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Bz0Hzu3fLL2IW1bug82AU7111y2zS870mTq6ckWmhqw=; b=WA9D5X4K2f7RCg2vsU+wwrPx37FzBF7U2NeuqJDllnTX6AXg6R2ElSqADgovDGfCfzjGFEYLlC85xmW6S3xSvd9RiJ+JjCxnylKT5GNuH06eVLnwDmi23ym7snsX0QMqww/CargDszGmy2wcpKC5q938b3Hggxyqbq1zK+IDh+g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464227349912.3434563801155; Sun, 14 Jun 2026 12:10:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCG-0006Oh-VX; Sun, 14 Jun 2026 15:08:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCF-0006EN-5O for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:39 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCD-0002Ie-1p for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:38 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-380-j_IcqRYbMai8SiKGzRQrBQ-1; Sun, 14 Jun 2026 15:08:34 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4600c8cb13aso1820945f8f.1 for ; Sun, 14 Jun 2026 12:08:34 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2b0d28sm27643353f8f.20.2026.06.14.12.08.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464115; 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: in-reply-to:in-reply-to:references:references; bh=Bz0Hzu3fLL2IW1bug82AU7111y2zS870mTq6ckWmhqw=; b=ZOrHFkcVRTkHv5ZRXoGI4IR8ZWnqcNowPJLlcMtcyHjUcy3xhkLrMBkA8w0/FXW4QCTGNI Levnmbbhf5NxlDiWWNRvxnDHzd9eDnHQrMma2dcnP9qHWeFfKfT9O2E52/wctXTo76dD+l av2fSV9+aLYkZgPa70Q+q/zZkTS5d1A= X-MC-Unique: j_IcqRYbMai8SiKGzRQrBQ-1 X-Mimecast-MFC-AGG-ID: j_IcqRYbMai8SiKGzRQrBQ_1781464113 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464113; x=1782068913; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=Bz0Hzu3fLL2IW1bug82AU7111y2zS870mTq6ckWmhqw=; b=rQ1mKKaHQp0A6fNR65oT2WImhUDDg6snaK2BFn7a+/1G8o3JPFNjE2qGzNZdAFfh5R Ra5PC+pgjIWXslfaiU2jtAt5YIAJud/ApF9gPxQwTCp3AonwvJRe/TOOc2zBKf3hIGWk NMlGdvtIMEM0c4A4S7Y/pbNQwLXxaVwN9NfeU3dS7uhZODnO7pT07EosJvdA7ET5/jch 3e88oMzODP2NVvqbwMs7AmzwXe6Viv/hnAFnaxUO4U33kvei7miLLKNDdNg5wrNgwUy2 hVQhooc7hZqtTyMNqBVEb4FjjBowxfToFKMG91JTRWXc/XgcGUwYY3XjaeFsmMcb/o7x cILg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464113; x=1782068913; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Bz0Hzu3fLL2IW1bug82AU7111y2zS870mTq6ckWmhqw=; b=A0gbJsL49i81WrUAf/9y+0T0S5bdTsOcXxKd0wuJcLfQr5cx8GouTXYs9XloRzxcNj HsxEkZ5ib1yEb/HCXiZRsetOWPuhG7QqBRBRXuhUlcC2U8zszKTZ/cXRS78NUqp9/J7j ttzy2ySP9X6Ewna2dyaHoyeOlqxDPebLvGQmpyTuMR8jz2jQp+kNYt97gjZ97AJIuxyQ ZamjkueoV/5AhllLJVHcr1BB5y6JzOPO3ROtMV6k4PzBhAlKS3qVsA2MAt3BZX+jTGAi bmeHN/KM/4fLoVj5hIBOViSjzhykNqJTIHpV9dbXjEuVg/DQYDbFNnCHVw9spGwjpl/e Wk+w== X-Gm-Message-State: AOJu0YxOyJgY+sVuFvul2ejuUNuPp1pT3xwzJ6nTduCal2FA1wYZjVU3 ZlANqfMDkSJ2aJZw4RA8oRiLn1AMjC3ixY43FZwbLczeYSZSSSmjj9bISVJMcVoy/03uX44vjf+ GN+hyF9snfuYVZS81iAIO6ojY5UX2EBJbUaS6dtCG7lfnCe2hfijI2cwkStyeQag2bDqRHHm/+5 OOJjsJyFg622vHWldiwlT9nQUSU4jznuNVqw== X-Gm-Gg: Acq92OEURk2woOz/aqy1w0M0I3jZAr7MumYuYsSA8j2kfluvPHfm4ralNmMKIs+C+72 j35InSRnEKw2dLxuxajY6IYjCIATPDWcQDmpteDrCxRrJVnAIAMJ7FQwQtpvLpIPNQK5dXQBmVN ALMDEdPR6ojkThw/vtbELeXZqdq4CwtxtT7FjON+OoDY3BgMn+pxzCBKFBz0OUy8FIaoilKdaj6 hM1vP4o7LIZbAQswQ7jNhxUD340dJKDeMYGHsLPG1CH/DlkNpVy78+LCTFcw6tHA261O+Zj6bm8 pwNkpJkKb62WhAZS5fy12VYoHl6VlW9ofp5C/fRLe1lzV9JzV5iWR8Ascz70gCy1ZlOmLNI296o HziXmUPwQgOgo1D43A7Y11r4Eyn7U6cKFadLsn9GOB2M= X-Received: by 2002:a05:6000:43d6:10b0:44b:5398:4e85 with SMTP id ffacd0b85a97d-4606db9839emr11411837f8f.22.1781464112871; Sun, 14 Jun 2026 12:08:32 -0700 (PDT) X-Received: by 2002:a05:6000:43d6:10b0:44b:5398:4e85 with SMTP id ffacd0b85a97d-4606db9839emr11411809f8f.22.1781464112382; Sun, 14 Jun 2026 12:08:32 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:30 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Max Makarov , Max Makarov , Stefano Garzarella , Kevin Wolf , Hanna Reitz , qemu-block@nongnu.org Subject: [PULL 065/106] vhost-user-blk-server: do not advertise VIRTIO_BLK_F_SIZE_MAX with size_max=0 Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464229162158501 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Max Makarov The QSD vhost-user-blk backend advertises VIRTIO_BLK_F_SIZE_MAX but sets size_max=3D0 in config, creating a contradictory state. The feature bit tells the guest that size_max is valid, but the value is zero. Windows viostor trusts the feature bit, reads size_max=3D0, and uses it in scatter-gather calculations producing zero-length segments that hang I/O. The disk appears empty (no GPT, no partitions), causing INACCESSIBLE_BOOT_DEVICE BSOD. Linux tolerates this because blk_validate_limits() silently corrects max_segment_size=3D0 to BLK_MAX_SEGMENT_SIZE (65536). This affects any VMM using QSD as a vhost-user-blk backend (QEMU, Cloud Hypervisor, etc.), since both pass through SIZE_MAX from the backend to the guest via feature intersection. Remove VIRTIO_BLK_F_SIZE_MAX from the backend feature bits. The size_max config field remains zero but is now ignored by guests since the feature is not negotiated. Signed-off-by: Max Makarov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260331152856.1802-1-maxpain@linux.com> --- block/export/vhost-user-blk-server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/export/vhost-user-blk-server.c b/block/export/vhost-user= -blk-server.c index 67912a3e17..46c0d303df 100644 --- a/block/export/vhost-user-blk-server.c +++ b/block/export/vhost-user-blk-server.c @@ -119,7 +119,7 @@ static uint64_t vu_blk_get_features(VuDev *dev) uint64_t features; VuServer *server =3D container_of(dev, VuServer, vu_dev); VuBlkExport *vexp =3D container_of(server, VuBlkExport, vu_server); - features =3D 1ull << VIRTIO_BLK_F_SIZE_MAX | + features =3D 1ull << VIRTIO_BLK_F_SEG_MAX | 1ull << VIRTIO_BLK_F_TOPOLOGY | 1ull << VIRTIO_BLK_F_BLK_SIZE | --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464467; cv=none; d=zohomail.com; s=zohoarc; b=LPTH+xE2EM+D7QEY01F/NzZ+cRnN4j8AFhvBHrlM16988fx2Fx5vB1hKYgEY0lXhpUtXc7ba3Wa9YUo+uAETiB3Ej7goqgv34hYbVIyKOFsRmLX4GsgGSRwp6PegpIlh4H7ekHgWdiI7nV+h40tE1qtV5KfoRrI6rBpjJtD8gVo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464467; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hgZCAxYFmsfw6kD1fGPLDLIDbzOgcLGMPPIQ9rhuoMw=; b=hAWr9V+sG/ukU/Bm+Re8wOaTKAnscMn7ng4gt53VJduJdaTri0iOHdzCW3wWCDOsbXKk7TxPOnkXUMei8XPd4DqN9oGwe4hewmNjwKRakuKsKpexuOXgsF4dVnEMBBUm3g6t9BMx45jGZYiZZlr83qugE8I1jgVIRQggsfQK71c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464467431746.563030347117; Sun, 14 Jun 2026 12:14:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCK-0006Xx-Or; Sun, 14 Jun 2026 15:08:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCG-0006Mf-Dn for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCE-0002Iy-Sy for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:40 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-426-fvTsw8dtNZ26P-otDYkr_g-1; Sun, 14 Jun 2026 15:08:36 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-45ef5e38a18so1174864f8f.1 for ; Sun, 14 Jun 2026 12:08:36 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492202edf89sm197256955e9.1.2026.06.14.12.08.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464118; 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: in-reply-to:in-reply-to:references:references; bh=hgZCAxYFmsfw6kD1fGPLDLIDbzOgcLGMPPIQ9rhuoMw=; b=ZQa7FiazSFuFMlUWi/qEk9JgAMtIOS6afZUAq4tMJFF0usAI2wTeG7XnFghvIxCaejz1du xweSOUnm5QeboCWaoZ+ckQOamQiAwQ5M+yKHzvw70KLlN0D1jOAOIkLPs0p24U10jyeSoZ J2IUm6NKcrM3fRkQnihO+7f1HaxdLjM= X-MC-Unique: fvTsw8dtNZ26P-otDYkr_g-1 X-Mimecast-MFC-AGG-ID: fvTsw8dtNZ26P-otDYkr_g_1781464116 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464115; x=1782068915; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=hgZCAxYFmsfw6kD1fGPLDLIDbzOgcLGMPPIQ9rhuoMw=; b=FmBF2BXqzzd/aO4Ub6aqZPZr5M28Y9jIAgp3gcZFbHo9mrjNQjuuHGmPtrOpfW8kvQ ey+Rq/+g5zMgCc5VTPOMwEhr9GNXY3Qc+DOFF2Sw4RWL/I0ZEvg6DoyKhRmm+tkhVfQy 9Jmeuuz8eolV1MZifJUO/yiTrHVTZsMME3+SIyATwpD3MB01yb+txhWPT2J9mfBynvap RL/KiejlrwKeZETEcRP9C9OXrnvScf8rrPJ1Fvy5QesMtM9LuHJcYobHHYMM74QHgJjd yjosgtNn9OQmDgFJo/Vfxjtai2hpl78ArlahQlRZWegL6lFgI2Ams946a/H6ieS+yG+E Z0pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464115; x=1782068915; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hgZCAxYFmsfw6kD1fGPLDLIDbzOgcLGMPPIQ9rhuoMw=; b=qZ+m8P4Kco+lW3PQt9RJDTYWxvBJTJ0+/AqrEz6hjWqMYN1VXN0o4W4DE/VeLWdRWB taQUgNl1GORGqw9j/nbjq0v7kjp3ZXW0tZTnx370r1HQTVxc5V5I21ivSZfcqQsFmHSh tPvLpLr0bhO89kz55Vmj7V+XVV7wPuIXH/lh+EUU9tAi+DvK3i4kf6RR1n7eNUhKqB/O yCjac/jqZMjkbz4Vj6zKJ9x7nR9vmKmkjOl8gRKn0EViCbWHyUzBa2hGYj5nEnioir1B WW3zWthOTSx87B8zWh/+pPJ27wmat0kFFbhd6IwbD3wGoRuPRKuRHHknKxocHP5u/kMc T30w== X-Gm-Message-State: AOJu0YwxR07QvttqrMU5tLbfkV15B50MQrJ0DlU56skYdiuxMzRB5AEo lpWrW4OIwGbTCAETb10YDnKwyRRbgz2MB07ZA7ntT7ntEAlVBAeaOfUTFm8SSQGHx7jMj1BoU07 RIIIuPHMpfcOWJwc+VXKuk67yyB0J3j6csi9F6TqQZqFRcX9VHk47Xhws7ktpll3ZKzpNUeDsss YuEEgITigClr1auEJ9GP0l3IY4J2S94KjzMA== X-Gm-Gg: Acq92OG4ds3k7ww5yC7KJ0PTDT5raf3sczOI5hJjsjMbqs0jHRpj4xR8H8xnfPkgnJV j9gXn7w2nQz7ki8cvlcVo9dGQolvTH+ipWpvA8f3+sNbJKD3NWoLr33Ax59+u62ojqLaE9RT9dE nI4lfWgpoT0LLxtjSW9GzjSkZtG286FK9Fps9u+FBFF1MWBxh9cylzTmA0rctPgvFoV7v4CIICY dimDyLjRYy7ahdVIz8qYTerXrg2eHeA03mE4jcV6AvDcqLvE3k0BrNLWklkW/xwwSJcXdwnFwow r3sOb2d4Wma59N6DinZtf8VOjlGHN7FVQhO5Ao94YtAO32MgHMMefQ8Voui5JgBcYnka0hDLMsi OUEvb0QijoFmm4bJKf0lJv6hRzyUmUlu1cwXrfcrY8/4= X-Received: by 2002:a05:600c:6214:b0:490:8fd1:72a with SMTP id 5b1f17b1804b1-49220086792mr86911155e9.3.1781464115415; Sun, 14 Jun 2026 12:08:35 -0700 (PDT) X-Received: by 2002:a05:600c:6214:b0:490:8fd1:72a with SMTP id 5b1f17b1804b1-49220086792mr86910895e9.3.1781464114889; Sun, 14 Jun 2026 12:08:34 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:32 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Max Makarov , Max Makarov , Raphael Norwitz , Stefano Garzarella , Kevin Wolf , Hanna Reitz , qemu-block@nongnu.org Subject: [PULL 066/106] vhost-user-blk: do not force VIRTIO_BLK_F_SIZE_MAX Message-ID: <639dcd58707951cb88a0dddcb5027780c53d49dd.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464468094158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Max Makarov vhost_user_blk_get_features() unconditionally advertises VIRTIO_BLK_F_SIZE_MAX regardless of what the backend reports in its config. The built-in QSD vhost-user-blk backend sets size_max=3D0, creating a contradictory state where the feature bit tells the guest that size_max is valid but the value is zero. The in-process virtio-blk device does not advertise VIRTIO_BLK_F_SIZE_MAX (it also sets size_max=3D0 in config), so guests never see this contradiction with native virtio-blk. Linux tolerates size_max=3D0 because blk_validate_limits() silently corrects max_segment_size=3D0 to BLK_MAX_SEGMENT_SIZE (65536). Windows viostor, however, trusts the feature bit and uses the raw size_max=3D0 in its scatter-gather calculations, producing zero-length segments that hang I/O. The disk appears empty to Windows (no GPT, no partitions), causing INACCESSIBLE_BOOT_DEVICE. Stop force-adding VIRTIO_BLK_F_SIZE_MAX in the frontend. The feature remains in user_feature_bits[], so backends that properly advertise it with a valid config value will still work. Signed-off-by: Max Makarov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260331134721.96047-1-maxpain@linux.com> --- hw/block/vhost-user-blk.c | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 530f44ab52..5c73a58ee0 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -283,7 +283,6 @@ static uint64_t vhost_user_blk_get_features(VirtIODevic= e *vdev, VHostUserBlk *s =3D VHOST_USER_BLK(vdev); =20 /* Turn on pre-defined features */ - virtio_add_feature(&features, VIRTIO_BLK_F_SIZE_MAX); virtio_add_feature(&features, VIRTIO_BLK_F_SEG_MAX); virtio_add_feature(&features, VIRTIO_BLK_F_GEOMETRY); virtio_add_feature(&features, VIRTIO_BLK_F_TOPOLOGY); --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464611; cv=none; d=zohomail.com; s=zohoarc; b=LB4khg5/IO9xAV+vZ01WEKHuhTxHwPNVTSfF6xLYPt+FQ+07SAoKO1XmcnkG3kDQ0hIXruxoTYxP25XzXkmHOT9ld9GhDW3jyUH1zX4YIsu3lXQuWu6fZOjtj6iGtc1sKxNvWBEv8Qg4ErfYGhUXth+6bBCGdp5hxdZfjxOnpVc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464611; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=msN9YtJ2beDk7iFPqt34oo1y2Ho3ePmmXDQmM1YHnyA=; b=djzKmL0+v/bflFcJvXSOo51TzHyoUplASKYkFQfOqGe5M6BdcLPxUGJXJfxFKmZMNqKLQMfis3DRc5zo0DNxtSLmbfNAbxpdl/nmFmuasnOeCRyB04xcszZJll/c0w25Wcoqbki5AVOgwRPM77z5fyFhfvKBuKoe1msDVM0d5ZI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464611634253.34994202877488; Sun, 14 Jun 2026 12:16:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCL-0006aM-7e; Sun, 14 Jun 2026 15:08:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCK-0006Vm-6Z for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCH-0002JX-Qw for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:43 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-462-EKe4jW9-NySAqxyPxDIXrA-1; Sun, 14 Jun 2026 15:08:39 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-45ef9437b7aso1475528f8f.0 for ; Sun, 14 Jun 2026 12:08:38 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f26f4f6sm29141207f8f.16.2026.06.14.12.08.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464120; 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: in-reply-to:in-reply-to:references:references; bh=msN9YtJ2beDk7iFPqt34oo1y2Ho3ePmmXDQmM1YHnyA=; b=YQZYVxqyspujZIvKfrAFLO3P/LhWiLYefiTck1/FOVJkY6IL5fbmaSQaw8syLMm4xV8ZCr aoAZc/Wn/WCVKgvIgBhqQDBIqMDmOGrdp5XpoyPdMciCoKwWF0N85fEYfTzkNN4Rr0bjpW oX7RbBAu+d3xho6BdmNx3Pg9YwGKfz0= X-MC-Unique: EKe4jW9-NySAqxyPxDIXrA-1 X-Mimecast-MFC-AGG-ID: EKe4jW9-NySAqxyPxDIXrA_1781464118 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464118; x=1782068918; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=msN9YtJ2beDk7iFPqt34oo1y2Ho3ePmmXDQmM1YHnyA=; b=W4SObDBGida6ezcNO4SA1w6VvKjJ9nH5eNCJ7hjz6oKR2aGhBWFlzCJd84jQ7Aczzo SDCld/6+e2x8H0+iZEAThigLgv+AeQlqs6MAJzAzHAFaAWubBf7XleBD3oDbeYbunRmU e7NpI4J0PCB2wKwpwsErHpfujDEpwRTTDkX0iV8cysdlVhB8B7kr65eeK8NhMNt2ks96 dvtTzVF9L6kOevudS58uIs7DKKlmPXS38+Ok3I+CEwoQBE1n8b3xYC27WtYEcRWt59Fs Kcm5u7c3o9Jl/tmSmTFT3eJqtOlGhx70S9qln6Sf0nUDnTwglrse74lk2K5cfn1j+keC 0xPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464118; x=1782068918; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=msN9YtJ2beDk7iFPqt34oo1y2Ho3ePmmXDQmM1YHnyA=; b=ec48h7SWRCD0HRZ+3qASz9iHxsMkMOyJG2bBL7Ft1hco0fO3p/xFNeOfeaqCZp9haa PIlaqCn9D172j47/kTWWoCpVydUJ13NQXYrs6ceGS+6orBDBBYCG3uluBUaBNnUX2oob I/At4rouI9u29ukJMTrLzWssHmvhtMrOJX5JwtHnEFbMJBH2z5rusCzGxsDJ5nOjA7Bw J+WgY4K4FFf5jbQJvhYQ4dx0t6BjYTpLO00CNmAEusISq1djLOVmMRxsk7CKjBTexENL FLMwOPNJ18gFxTmeHRSBmF83QPSRoN9bsGXtOKQhfCd6/FMWMgYi9qjEDGinbhihoyHq 5RHw== X-Gm-Message-State: AOJu0YwFIcx3bP38dsjvx/5pTA3B1GXo1lQ1G9uBlLmG6XxUXVWhcBFS 4TX2jnIT38ioFNVbqingYoyuIhPPcSwDft51ZkZDOva15qs/nv5EKxalR1vsezLR7wl3vcsT+jg 6TF6MZgC3kgyu3noiYfkjvGbt6QJbzIQwU8+anw91bJ7MoNhEXZSvSvhVjxB6Ftq/nN93l4JnCR DRJMx1ykvqnz+6puZQW1fWSfEtyO7A4ziBCw== X-Gm-Gg: Acq92OHxsUCTNQ/WshFrLG9BjPUYkwf1hRYEi5QA3+c4GO193dqzNg8Hz4gL4+x6rFW 3ChjOihfC6r6cgOSs283N/YcUpD4j/Ur8utGEm27NHJSi4mEIeUyAtEq68lzrMadJ1UroBMqFEp eZhAc4EQCuNTeiSCI0Hcctr+wgLEuC96iK8aZJktNx5GhKVWPeULPdFLHAbjB8k7sqKxR2MuIQH uupuFq/CCESE9DQCew23eWurxbA5TfCzodH+2IG3wjqltJgnw5CKn2mMjMBbe+fJjUJimdGytBP UjDWIx8pO+Dru00ZlRuk6zCajR+eNx3W5rpZVlLnD2xLJtKXVVd5G5T2o6TSBjOfbEiAs5ELbeM 1gEgNqjcxsQzGxWBYKLoSGsn6GOzYqQ0l/ieBemzi5Ic= X-Received: by 2002:a05:6000:2604:b0:460:71e6:e3b with SMTP id ffacd0b85a97d-46071e60f6fmr14436003f8f.27.1781464117759; Sun, 14 Jun 2026 12:08:37 -0700 (PDT) X-Received: by 2002:a05:6000:2604:b0:460:71e6:e3b with SMTP id ffacd0b85a97d-46071e60f6fmr14435953f8f.27.1781464117223; Sun, 14 Jun 2026 12:08:37 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:35 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Aditya Gupta , Zexiang Zhang , Nicholas Piggin , Glenn Miles , Harsh Prateek Bora , qemu-ppc@nongnu.org Subject: [PULL 067/106] ppc/pnv_phb3: Error out on invalid config access Message-ID: <218109781209f9d77242b2cdf743acac8bc3b893.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464612840158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Aditya Gupta PHB in Power8 supports 8 byte registers, and hence the ops structure allows accessing of 8 bytes in 'pnv_phb3_reg_ops' Both 'pnv_phb3_reg_read' & 'pnv_phb3_reg_write' pass the arguments as is to 'pnv_phb3_config_{read,write}', if offset is PHB_CONFIG_DATA. This when called with size as 8, causes following assert failure in 'pci_host_config_read_common' & 'pci_host_config_write_common': assert(len <=3D 4); Validate that size is <=3D4, before jumping to pci_host_config_{read,write}= _common Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3334 Reported-by: Zexiang Zhang Fixes: 9ae1329ee2fe ("ppc/pnv: Add models for POWER8 PHB3 PCIe Host bridge") Signed-off-by: Aditya Gupta Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260326190438.734239-2-adityag@linux.ibm.com> --- hw/pci-host/pnv_phb3.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index d6ab515337..4ffdb4ce31 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -475,6 +475,11 @@ void pnv_phb3_reg_write(void *opaque, hwaddr off, uint= 64_t val, unsigned size) =20 /* Special case configuration data */ if ((off & 0xfffc) =3D=3D PHB_CONFIG_DATA) { + if (size > 4) { + phb3_error(phb, "Invalid config access, offset: 0x%"PRIx64" si= ze: %d", + off, size); + return; + } pnv_phb3_config_write(phb, off & 0x3, size, val); return; } @@ -597,6 +602,11 @@ uint64_t pnv_phb3_reg_read(void *opaque, hwaddr off, u= nsigned size) uint64_t val; =20 if ((off & 0xfffc) =3D=3D PHB_CONFIG_DATA) { + if (size > 4) { + phb3_error(phb, "Invalid config access, offset: 0x%"PRIx64" si= ze: %d", + off, size); + return ~0ull; + } return pnv_phb3_config_read(phb, off & 0x3, size); } =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464270; cv=none; d=zohomail.com; s=zohoarc; b=kfj8kpI4goBxlyl0aB5cUTdbHUocOQQU7SOIqDsLctqEXrTHxNS3O/EJSRyCWkD3z4FhPC23BEca8Pso+Okj2JGWooVdpgXl5aB/qwKF6dXoRNTfea68Na8ZGRu5gqElG1iBtLdVU8beWNR8Ne9Oxy46cyOPUPGbI3i/5BmZAlM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464270; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6jMLBQCNfZ81UJ62zLcECx5FcUb5TVLKmM166QliHoU=; b=XiZKoK7ebN6yvXBqQkRroTdHcVZEZJsd73HYbywtHEphUmnjcZ176SB14Wo93BLSZX8f4udIJmMMiZfm5rL3WqzLUqJIa3XM/sHT4O8KIwV8mEIq9sao9k4kY4eSxDGxQRW2b5MnqGFjh2eGfP53qFuvYAtBDu9YAKyfpH4Q/9M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464270896528.8269458786755; Sun, 14 Jun 2026 12:11:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCN-0006kC-Nj; Sun, 14 Jun 2026 15:08:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCL-0006bq-Gn for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:45 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCJ-0002Js-BN for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:45 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-497-aotkIBLTPdOhHpujYrzWBg-1; Sun, 14 Jun 2026 15:08:41 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-46016bedbaaso1800218f8f.1 for ; Sun, 14 Jun 2026 12:08:41 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2d933esm25634000f8f.33.2026.06.14.12.08.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464122; 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: in-reply-to:in-reply-to:references:references; bh=6jMLBQCNfZ81UJ62zLcECx5FcUb5TVLKmM166QliHoU=; b=BBR0//+I+EJZ09LWaj4tKKnpbTtqC1iEQThp38YVTr/aqSNfxMMuQbt3GiUkZllpYdx8BX iLF3oxump7zJ/cdgcxtZ/rrz4D/fvPGcc0XD1Mf5QWtftg7GxORiCzAoaxy1kIvW/8gbCh ACB249ddftPFfZQLHLLh5Ak00ndRmAw= X-MC-Unique: aotkIBLTPdOhHpujYrzWBg-1 X-Mimecast-MFC-AGG-ID: aotkIBLTPdOhHpujYrzWBg_1781464120 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464120; x=1782068920; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=6jMLBQCNfZ81UJ62zLcECx5FcUb5TVLKmM166QliHoU=; b=DX38u0fCxqrKrfAMXjd2318vJ54xxCUT5iUhLiclNyobBJHdKYmQcwn4DFDc6vEuR8 u25bkum+komz+jETipbxLV0NH9MSy7kNZv5JersKIEuZCiat+iFeLQ30+0K2ibpkS4Hh LQyFAk99+loiI5/slLsUs9JZBpTjDluRK2XBZz9YDJbs86srTnSfkm6U3mAfBIquiESN avacLgRNuc9OL8imm2cd9TCdU6JdX+S7EU4niFqN9soYhQKSU5VYpefG3ZSOMoEjY/q3 LYti+ZdNMyp0AbYGDiFmz7qboZBYdaGJvz1yfKCVIBVBjSD//55xOwLL9Fwc+BjrOHqz wpZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464120; x=1782068920; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6jMLBQCNfZ81UJ62zLcECx5FcUb5TVLKmM166QliHoU=; b=W/p1aAHoyCzNEwyLoJueSIZycgzzgEX2KjRpVKLtZ+x1l1bWphLhwUulZMgMgOWJhE tdmTh1SYCydZJyj9hdmRZcyMKBrISRUQEUIV4tYIwcEh83u/3L22Tp9zofoZQYIdbsMp 5XYN/37bWGLF3ByBYs99hUPeEHw+3ByNkw4/6FggWD37TNC2hVExXDEQFaxu576xevGs QR83RxWe5I0HtXwkcsF2EX7QDKgAR0y2zRPp+H5qT11/s/O+OW0tpiNCkuadoDehAY6J T9y9+ao4L3Xye2KyVJ6n38MlxBkzQBiZ5fvg4VLwg34H0cOY6szU72hjzOVhbZ7t9qco ZWjg== X-Gm-Message-State: AOJu0YyeY+7x2ONxDCFCvjmDVClmT/YxAZej2LLWMRMzhOCjvdh00AD1 RXbhJak09fjHhD+91lH5evqr6wQ0R3ixiK8s50rNFirNnRU2hEPCtBFKl5JWf3YNtZo4wyv7Fg/ dESYobOQsMadhyhHLBitAZHn2HXe/yTv61xSaGc4sSjIMOAzh17qYT05ndbi7rSdoKnMwSpVidF PgO7OyFb1ABfw9J8cPT7wQteFtPipUzl9puw== X-Gm-Gg: Acq92OGDqi9+JWSVH5gigW5YBhkQktPqMmSvpL37hFUQRdr1+9CSb6UnsoH8QvSIkiE 8ged5XgHOh8TD0bxu88yC1u4BbHDnBOG8QybLMZpTF3Wfpqiebmcaz/GIsKpLrrVbb14rc/wMZa rRNRuid1VCoT+fYASDtq674Ax5qMrHlHbYcVkr3fhtzczsXw4H5w8XdyqHnN8PC8wfiXlRMxIFP DR0m6vLY2EPzh1fP45sdm/tLLhcFFGeSAfjvobLixytBcpmLRxMdNmpV5B88ElBoRPEO2j/8sFB dJOVvZCXUPVnsfPYoW2MG2Wegbui7ye5h5wz1tfHBbUaIv2baJPe2mSZwbpBfNVJVvISbsvrKJO fgwXmeB6kGpVBaTP6bDkKwI2D/RqRCc6n2cFVdmCRJxs= X-Received: by 2002:a5d:5d02:0:b0:45e:ea46:ce11 with SMTP id ffacd0b85a97d-4606da6307fmr16342257f8f.14.1781464120006; Sun, 14 Jun 2026 12:08:40 -0700 (PDT) X-Received: by 2002:a5d:5d02:0:b0:45e:ea46:ce11 with SMTP id ffacd0b85a97d-4606da6307fmr16342222f8f.14.1781464119418; Sun, 14 Jun 2026 12:08:39 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:37 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Aditya Gupta , Zexiang Zhang Subject: [PULL 068/106] hw/pci: Replace assert with bounds check and return Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464271283158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Aditya Gupta As reported in https://gitlab.com/qemu-project/qemu/-/work_items/3334, callers of 'pci_host_config_{read,write}_common' can pass length as 8, causing an assert failure The original issue with pnv_phb3 triggering the assert was fixed in a previous commit Instead of asserting on invalid length, check if the length is valid (<=3D4), otherwise return (with the failure error code in read) Reported-by: Zexiang Zhang Signed-off-by: Aditya Gupta Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260326190438.734239-3-adityag@linux.ibm.com> --- hw/pci/pci_host.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/hw/pci/pci_host.c b/hw/pci/pci_host.c index 91e3885c7f..2a7fdfa563 100644 --- a/hw/pci/pci_host.c +++ b/hw/pci/pci_host.c @@ -81,7 +81,12 @@ void pci_host_config_write_common(PCIDevice *pci_dev, ui= nt32_t addr, return; } =20 - assert(len <=3D 4); + if (len > 4) { + PCI_DPRINTF("%s: invalid length access: addr " HWADDR_FMT_plx " \ + len %d val %"PRIx32"\n", __func__, addr, len, val); + return; + } + /* non-zero functions are only exposed when function 0 is present, * allowing direct removal of unexposed functions. */ @@ -106,7 +111,12 @@ uint32_t pci_host_config_read_common(PCIDevice *pci_de= v, uint32_t addr, return ~0x0; } =20 - assert(len <=3D 4); + if (len > 4) { + PCI_DPRINTF("%s: invalid length access: addr " HWADDR_FMT_plx " \ + len %d val %"PRIx32"\n", __func__, addr, len, val); + return ~0x0; + } + /* non-zero functions are only exposed when function 0 is present, * allowing direct removal of unexposed functions. */ --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464234; cv=none; d=zohomail.com; s=zohoarc; b=REGcePu4BaLlMLaGXNf0PeU89GKCGIaDQllOuQ7UizlXeOfVTG9vyjSjyZUs7uQOBC4LJd/IxVAq/HsSTnwb871IY4P9wHpjLVMTaewiFMCnZa4IuzbnXrex4BHOeRoxE5VbqjABPqxherGXbrSuB9FMxpD5gXYS+T0ou8gCtNE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464234; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Sh5em8AlVrr5g6Oxe+hgEPBbAlPW7zFJt8787kbMrrY=; b=ldnU3+EoK/mj78hu8y/Ozo0FBOhPVYr7L5ML6zIrBIqeah4nB7L3y+8MaP5cdOvRlJntX/ulKZiVApgYpfhZrKwTFsUHjVZJTTZzdAotGYADsOMSYSDoEiIiwC07M4+nSH4Pwcea9T+sWVt2vrvfmUjx5WWOhFxnIC1dQyVUZyI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464234908400.126142693141; Sun, 14 Jun 2026 12:10:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCP-0006qo-Ej; Sun, 14 Jun 2026 15:08:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCO-0006lt-5B for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:48 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCM-0002KR-Ar for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:47 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-113-eaWnCby7O6aqfhCG-ZmWmQ-1; Sun, 14 Jun 2026 15:08:44 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490b79e6b94so22237295e9.2 for ; Sun, 14 Jun 2026 12:08:44 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922037ba81sm178130015e9.15.2026.06.14.12.08.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464125; 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: in-reply-to:in-reply-to:references:references; bh=Sh5em8AlVrr5g6Oxe+hgEPBbAlPW7zFJt8787kbMrrY=; b=dl66ma256pf7frH44ei+YqmWQjK/+P50nUAtjQT5hAvrl7At9isHC6sd2aWsF8wp/c15QC B4zgwDtiC3et55J6R0PiuF24mA9Oj4RmfuHEJs0WLXZpTcfgTRiBaoNKT3Zjs1b0Qjrz3u XU3JEUhnl4ZrrIuML329/Xa7AEiCBKY= X-MC-Unique: eaWnCby7O6aqfhCG-ZmWmQ-1 X-Mimecast-MFC-AGG-ID: eaWnCby7O6aqfhCG-ZmWmQ_1781464123 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464123; x=1782068923; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=Sh5em8AlVrr5g6Oxe+hgEPBbAlPW7zFJt8787kbMrrY=; b=bnEcXKYSKnp1eOa5Tal3cs5H83XI1Tl9eMCWrvwqnixXPqj8qCcZTGd739H7utjM3+ qWHmzj15plLnxZJydmpjTp7/u6OnvSvyx1kKh3llsrxJ0BmFi/nCshg2H22txmK7WizY gXbeVNUbJVBHEJ5UH0bLNDuBTrOO1xM6bLQsOZYIOi2Rd/a56gVQe1i8nd7Y3/7MEO+k DpEu40ZEPGQ8RPePZt+B+ZMLo0PZTbNRzYyaE1WqZ+J5olTo4OIVijGv5oVX8YgiGEuH n/Kcx6Bcf5HMjmytuw0mYMrjPL1ihE6IOeAhJec1vqGnmpdgmmxKlVPW1czsZ9D07qYr xMGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464123; x=1782068923; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Sh5em8AlVrr5g6Oxe+hgEPBbAlPW7zFJt8787kbMrrY=; b=jArCypRaAwzJpvhrZTGoOAk0+eXj2eVuczgYbXg6hEYA0V0Ppe6Kkw5A5tapj3lrko zCK+/boyXGQ8JFs/4d2/l355PzWWJ88+hZowFTKIA+D7zfF13/E0gPjnjdZtvr5mDjDx t32KQ6oOWKGtLmNy6Q+Cj+3+CaAtMwSD+YBdASS/Xz1Hgo2UzoLAEMvrcwi+1iZ2/9jL lOJRAlDmKFyq50HW/7//FVMsri+PZO0ikwtLjKSHvxFiIr00CRlIZQB9Djib5Yt180QW 1lUpkk8laqjXySjayThvtSA6oBYoDDyMwIFuS7IkFZcFjScc8F4irwo4lrqXWoK2JCDh 69lA== X-Gm-Message-State: AOJu0Yxm1ll8TTiou8c6iFcsE9q5XMNX+bU7VuxConeYV2eIhVQrj1Ww d6Nh1Uc4YqOmRa59Mc3O8xaHZ1b4YuPOdvdhHcKPsNyec1M5ht4vnAizZMTKNkDKS/o5cVB+xVW Nsx0ByfQtCwr/Qtui8GsSv72vFK5/uif9FbirY+KoWMNaJFj1+n0XUpRzdU3co+nNeSjShYISrO +d+QnsI+uA6vtAxe3RxnYZ8VHlwR9r7S9/JA== X-Gm-Gg: Acq92OGZqwTmTFXTcYU8cqhilv1e8H1EiHMSnNyzJw5hLMpMx4L7C2fpquezOLp/FD7 y4jiriG62Wl9tT8p+A02dqkMaeYgG436tG3nJ5VoqAWUODZd4D6Hv7bVa0GVbhgIqorJzYuiAz6 O3t/Ubq26gT+ftMlNwlWS4uXIYj7zWKLFkZMAkJLl/3RWGuJtBoTybNPfOpBYjf1oeIDVfG/Mvl rbKe5BzKdscLE6JjzLrrlkNaGI/7eghhpLO5dSeHQG+wHGy1+jg9Tv2kgBl8LZ3SZ7kP25hPhF/ ZjPn99IMUwDsNSHB0xVFjyd+VsKIDw9XzxKrtzU4jHwFajw9OuzkTZzBPMrM6uWZF3wq807yfvz nwjh+MhcN4gvXsYlVJcl2htb2w+Vdp99E1mqfIa5oM/s= X-Received: by 2002:a05:600c:3548:b0:490:ea8a:32d0 with SMTP id 5b1f17b1804b1-490ec501917mr155241245e9.20.1781464122978; Sun, 14 Jun 2026 12:08:42 -0700 (PDT) X-Received: by 2002:a05:600c:3548:b0:490:ea8a:32d0 with SMTP id 5b1f17b1804b1-490ec501917mr155240785e9.20.1781464122343; Sun, 14 Jun 2026 12:08:42 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:39 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kuan-Wei Chiu , Stefano Garzarella , Raphael Norwitz , Kevin Wolf , Hanna Reitz , Paolo Bonzini , Fam Zheng , Alex =?utf-8?Q?Benn=C3=A9e?= , Stefan Hajnoczi , Milan Zamazal , qemu-block@nongnu.org, virtio-fs@lists.linux.dev Subject: [PULL 069/106] vhost-user: Fix stale error logs and return values in teardown paths Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464235253158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kuan-Wei Chiu Commit bc85aae42045 ("vhost-user: return failure if backend crash when live migration") refactored the set_guest_notifiers error handling but introduced two regressions across multiple vhost devices. By moving the function call directly into the if condition, the subsequent error_report prints the stale ret variable instead of the actual error code. Additionally, the refactoring hardcoded a return value of -1 rather than propagating the true error status to the caller. Fix these issues by storing the set_guest_notifiers result in a local err variable. Fixes: bc85aae42045 ("vhost-user: return failure if backend crash when live= migration") Signed-off-by: Kuan-Wei Chiu Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260315231047.310029-1-visitorckw@gmail.com> --- backends/vhost-user.c | 8 ++++---- hw/block/vhost-user-blk.c | 9 +++++---- hw/scsi/vhost-scsi-common.c | 2 +- hw/virtio/vhost-user-base.c | 9 +++++---- hw/virtio/vhost-user-fs.c | 9 +++++---- hw/virtio/vhost-user-scmi.c | 9 +++++---- hw/virtio/vhost-vsock-common.c | 9 +++++---- 7 files changed, 30 insertions(+), 25 deletions(-) diff --git a/backends/vhost-user.c b/backends/vhost-user.c index 42845329e7..380d825023 100644 --- a/backends/vhost-user.c +++ b/backends/vhost-user.c @@ -102,7 +102,7 @@ vhost_user_backend_stop(VhostUserBackend *b) { BusState *qbus =3D BUS(qdev_get_parent_bus(DEVICE(b->vdev))); VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(qbus); - int ret; + int ret, err; =20 if (!b->started) { return 0; @@ -111,9 +111,9 @@ vhost_user_backend_stop(VhostUserBackend *b) ret =3D vhost_dev_stop(&b->dev, b->vdev, true); =20 if (k->set_guest_notifiers && - k->set_guest_notifiers(qbus->parent, b->dev.nvqs, false) < 0) { - error_report("vhost guest notifier cleanup failed: %d", ret); - return -1; + (err =3D k->set_guest_notifiers(qbus->parent, b->dev.nvqs, false))= < 0) { + error_report("vhost guest notifier cleanup failed: %d", err); + return err; } =20 vhost_dev_disable_notifiers(&b->dev, b->vdev); diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 5c73a58ee0..b2e46eb3f9 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -214,7 +214,7 @@ static int vhost_user_blk_stop(VirtIODevice *vdev) VHostUserBlk *s =3D VHOST_USER_BLK(vdev); BusState *qbus =3D BUS(qdev_get_parent_bus(DEVICE(vdev))); VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(qbus); - int ret; + int ret, err; bool force_stop =3D false; =20 trace_vhost_user_blk_stop_in(vdev); @@ -234,9 +234,10 @@ static int vhost_user_blk_stop(VirtIODevice *vdev) ret =3D force_stop ? vhost_dev_force_stop(&s->dev, vdev, true) : vhost_dev_stop(&s->dev, vdev, true); =20 - if (k->set_guest_notifiers(qbus->parent, s->dev.nvqs, false) < 0) { - error_report("vhost guest notifier cleanup failed: %d", ret); - return -1; + err =3D k->set_guest_notifiers(qbus->parent, s->dev.nvqs, false); + if (err < 0) { + error_report("vhost guest notifier cleanup failed: %d", err); + return err; } =20 vhost_dev_disable_notifiers(&s->dev, vdev); diff --git a/hw/scsi/vhost-scsi-common.c b/hw/scsi/vhost-scsi-common.c index 0bb4305de6..e19800a0bc 100644 --- a/hw/scsi/vhost-scsi-common.c +++ b/hw/scsi/vhost-scsi-common.c @@ -113,7 +113,7 @@ int vhost_scsi_common_stop(VHostSCSICommon *vsc) if (k->set_guest_notifiers) { int r =3D k->set_guest_notifiers(qbus->parent, vsc->dev.nvqs, fals= e); if (r < 0) { - error_report("vhost guest notifier cleanup failed: %d", ret); + error_report("vhost guest notifier cleanup failed: %d", r); return r; } } diff --git a/hw/virtio/vhost-user-base.c b/hw/virtio/vhost-user-base.c index 5bbf4a7367..8b62c6c36e 100644 --- a/hw/virtio/vhost-user-base.c +++ b/hw/virtio/vhost-user-base.c @@ -71,7 +71,7 @@ static int vub_stop(VirtIODevice *vdev) VHostUserBase *vub =3D VHOST_USER_BASE(vdev); BusState *qbus =3D BUS(qdev_get_parent_bus(DEVICE(vdev))); VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(qbus); - int ret; + int ret, err; =20 if (!k->set_guest_notifiers) { return 0; @@ -79,9 +79,10 @@ static int vub_stop(VirtIODevice *vdev) =20 ret =3D vhost_dev_stop(&vub->vhost_dev, vdev, true); =20 - if (k->set_guest_notifiers(qbus->parent, vub->vhost_dev.nvqs, false) <= 0) { - error_report("vhost guest notifier cleanup failed: %d", ret); - return -1; + err =3D k->set_guest_notifiers(qbus->parent, vub->vhost_dev.nvqs, fals= e); + if (err < 0) { + error_report("vhost guest notifier cleanup failed: %d", err); + return err; } =20 vhost_dev_disable_notifiers(&vub->vhost_dev, vdev); diff --git a/hw/virtio/vhost-user-fs.c b/hw/virtio/vhost-user-fs.c index ad6fcacf06..209993918a 100644 --- a/hw/virtio/vhost-user-fs.c +++ b/hw/virtio/vhost-user-fs.c @@ -105,7 +105,7 @@ static int vuf_stop(VirtIODevice *vdev) VHostUserFS *fs =3D VHOST_USER_FS(vdev); BusState *qbus =3D BUS(qdev_get_parent_bus(DEVICE(vdev))); VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(qbus); - int ret; + int ret, err; =20 if (!k->set_guest_notifiers) { return 0; @@ -113,9 +113,10 @@ static int vuf_stop(VirtIODevice *vdev) =20 ret =3D vhost_dev_stop(&fs->vhost_dev, vdev, true); =20 - if (k->set_guest_notifiers(qbus->parent, fs->vhost_dev.nvqs, false) < = 0) { - error_report("vhost guest notifier cleanup failed: %d", ret); - return -1; + err =3D k->set_guest_notifiers(qbus->parent, fs->vhost_dev.nvqs, false= ); + if (err < 0) { + error_report("vhost guest notifier cleanup failed: %d", err); + return err; } =20 vhost_dev_disable_notifiers(&fs->vhost_dev, vdev); diff --git a/hw/virtio/vhost-user-scmi.c b/hw/virtio/vhost-user-scmi.c index f9264c4374..9470f68c1f 100644 --- a/hw/virtio/vhost-user-scmi.c +++ b/hw/virtio/vhost-user-scmi.c @@ -89,7 +89,7 @@ static int vu_scmi_stop(VirtIODevice *vdev) BusState *qbus =3D BUS(qdev_get_parent_bus(DEVICE(vdev))); VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(qbus); struct vhost_dev *vhost_dev =3D &scmi->vhost_dev; - int ret; + int ret, err; =20 /* vhost_dev_is_started() check in the callers is not fully reliable. = */ if (!scmi->started_vu) { @@ -103,9 +103,10 @@ static int vu_scmi_stop(VirtIODevice *vdev) =20 ret =3D vhost_dev_stop(vhost_dev, vdev, true); =20 - if (k->set_guest_notifiers(qbus->parent, vhost_dev->nvqs, false) < 0) { - error_report("vhost guest notifier cleanup failed: %d", ret); - return -1; + err =3D k->set_guest_notifiers(qbus->parent, vhost_dev->nvqs, false); + if (err < 0) { + error_report("vhost guest notifier cleanup failed: %d", err); + return err; } vhost_dev_disable_notifiers(vhost_dev, vdev); return ret; diff --git a/hw/virtio/vhost-vsock-common.c b/hw/virtio/vhost-vsock-common.c index b33def900a..b79f4c9ce6 100644 --- a/hw/virtio/vhost-vsock-common.c +++ b/hw/virtio/vhost-vsock-common.c @@ -100,7 +100,7 @@ int vhost_vsock_common_stop(VirtIODevice *vdev) VHostVSockCommon *vvc =3D VHOST_VSOCK_COMMON(vdev); BusState *qbus =3D BUS(qdev_get_parent_bus(DEVICE(vdev))); VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(qbus); - int ret; + int ret, err; =20 if (!k->set_guest_notifiers) { return 0; @@ -108,9 +108,10 @@ int vhost_vsock_common_stop(VirtIODevice *vdev) =20 ret =3D vhost_dev_stop(&vvc->vhost_dev, vdev, true); =20 - if (k->set_guest_notifiers(qbus->parent, vvc->vhost_dev.nvqs, false) <= 0) { - error_report("vhost guest notifier cleanup failed: %d", ret); - return -1; + err =3D k->set_guest_notifiers(qbus->parent, vvc->vhost_dev.nvqs, fals= e); + if (err < 0) { + error_report("vhost guest notifier cleanup failed: %d", err); + return err; } =20 vhost_dev_disable_notifiers(&vvc->vhost_dev, vdev); --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464312; cv=none; d=zohomail.com; s=zohoarc; b=J7SJNiZp+eWiB2sxv/0DkMR1aQTHJx94Tkp2c1lcs4/fFaLAsUSUL5HdNwsiRJnFeZiSyMLYfrvuAH5uK8yFO3BU/KymB7YzPUNnFOWKUmcWwBYC21xgwBEG8sF0V5Jlp5fY0tw872QlVr/6nmZlreBanoBnKxVkv4oenrzO+w8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464312; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0j2TuSt5CDZksYraqgWgna1GGvtBvBsvP1dgCKoiTPU=; b=f1ZHqkyicvvql9iDgvAJnCvPx7AcryKKlD2rS5lvnHIfRVYeQE7uODXzxPZeoI+xoeC6WB+mN5Gc681tlBv0tREIGgoJRGBOX0JrcDETkPrQh7PJi26mmZNPOCoQQFsMswBsyvTBxYGj1m6OZj7GeIRsXLo5CKGngq5rRxjsti0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464312029226.15019156788878; Sun, 14 Jun 2026 12:11:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCf-00075n-5m; Sun, 14 Jun 2026 15:09:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCQ-0006uS-LB for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:50 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCP-0002MU-3s for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:50 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-583-2vNtkS8gPqWaCWkSpjEdZg-1; Sun, 14 Jun 2026 15:08:47 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490b3ec3f7fso15547455e9.1 for ; Sun, 14 Jun 2026 12:08:47 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490ea4a399fsm186564165e9.0.2026.06.14.12.08.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464128; 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: in-reply-to:in-reply-to:references:references; bh=0j2TuSt5CDZksYraqgWgna1GGvtBvBsvP1dgCKoiTPU=; b=QH+JUuJ8s2vRJVmYQahO8voTl6fPF32+P7K1OEr4EPZ04m4JNrpoaMefzuHJ55GnncBkV8 EEIvnKA3XblVloImrnj01auHyXdM0BISL6Sm928nmHSTe0yeSz/cMINpg+lcMM91FSnP0M ZdaXQpBJQukw35jm/zVDZ5nLelZH3uc= X-MC-Unique: 2vNtkS8gPqWaCWkSpjEdZg-1 X-Mimecast-MFC-AGG-ID: 2vNtkS8gPqWaCWkSpjEdZg_1781464126 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464126; x=1782068926; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=0j2TuSt5CDZksYraqgWgna1GGvtBvBsvP1dgCKoiTPU=; b=VhMjbdPhGLP07j3OsA9Jbfa/Y1pkMBURI6QW5VXbIkD2EJnA9bGUjREytEUfQgAqcM oV+LhiMMzaCsxefguZu02fIC1RI469TZz4EYzFohBT27lsbcPB7toBgqiR1S7w0bVBqK vx16RnPXuYAVOq0KB3iT5DWhQGMgluz/jBYK0wn57ViqUVtoMstSThnN/achHZwwfjPh pWan/AOCZiAHTYldSqVWC28+zLoV3fSAwPzt80/P0i5+vd4m4Ha1mUyVqhTmSI70sNBx qbWozFdubk9TWeTYfUB3ro7LUM1w95PbrsKdzymuLOjGiCp/I4jpJD1TRTecOLSIGLev xrEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464126; x=1782068926; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0j2TuSt5CDZksYraqgWgna1GGvtBvBsvP1dgCKoiTPU=; b=ekifoZ3JhJopy8qGAJxq9eFlDwfFkhDhgkWZEyYBFRTKhgKpO98hAC/v+a32FLjV62 JqMYDdPrAOaC6TNoc3xp3v3tUKRwdfxGGZIlC32jYB3YNhsT6/jtwsLkPcXjsM4lUN7q cmW8sKXJHEdV1sx3jjxhDIwIAj6bKf6AsX7rA2lmK4Deli/0eeh8dX/sI7DTpnDelaAF LGa1MaX+2lOHwfv6NvHmLTNIL00NBIL7zD+T8SYxOSKOqPrNGXcFMjemel97TUz+rjZl iK4CBt9OmWeuoRWoR/4KcebGG33aRBVbq8ujB1S83T2MpN2Ny56sAo8w/H8izRAlmzKI tW3A== X-Gm-Message-State: AOJu0YxzsNtkN2TJpJjenjjK3+ae3++YFdiT5F5uvZ+KMGBhROd6RXH0 GZu/MJmLsy26QtyMugoHE//DEcK5ymm/WW3Phjb0RR+2X4mBEt6iZk9VUg/czPt4gSB9RDtx7CX GkU6l7MfRaXy5sNQo2DdinkdK8AQfos88TvSg44Gg2TUM+UEaWaOd5boBLy85rC2lyiI2RtfXXu VPHtN+J7WMFY1gF19H3NIFzxllbY/Yfnm3IA== X-Gm-Gg: Acq92OFOf4lZrDHQ6fhV3g9WUcTjXVKsYIZsPoubeRSyqzLwAqZY89kvo5CfYUWs/5+ 2YcViReD1G8Pz7nyIdv7l99RKA9KEQDHEvGwKb++CwY44MWD5UE2rTJGz584AS6MV3EhF7YF+lN iPnHiG/gjpj+8c+R5+yrSSGjSOG6vn+Fsx69mOAGA2cxLbrI6wQ1nn8brHfI7hNDjfUxsp/g9uD VxfiMq4R80ZJtwxwbzLGxcRrn+/45n5i41z6AnOWnmEeEqPPSMGzMLg4BfZyK43oED5IOCsDkwr J5/5Sd4ema9+BQTl++WLgg8xZ0sbWIc/3MdqdUkyTOcJ3L75pehb4CCKfNsrG1vhpZmxxNnbhXM ttA1/o2KI3EODfVjeZ9840Ab8Tc832RSQHbcxABIDqow= X-Received: by 2002:a05:600c:c4ab:b0:48f:f64c:c2fe with SMTP id 5b1f17b1804b1-490ec4f8090mr159115655e9.22.1781464125907; Sun, 14 Jun 2026 12:08:45 -0700 (PDT) X-Received: by 2002:a05:600c:c4ab:b0:48f:f64c:c2fe with SMTP id 5b1f17b1804b1-490ec4f8090mr159115255e9.22.1781464125313; Sun, 14 Jun 2026 12:08:45 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:42 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alexey Gerasimenko , Thierry Escande Subject: [PULL 070/106] q35: Fix incorrect values for PCIEXBAR masks Message-ID: <412c48d054b484a0f88d858dc554c24e07e94358.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464313595158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Alexey Gerasimenko There are two small issues in PCIEXBAR address mask handling: - wrong bit positions for address mask bits (see PCIEXBAR description in Q35 datasheet) - incorrect usage of 64ADR_MASK Due to this, attempting to write a valid PCIEXBAR address may cause it to shift to another address, causing memory layout corruption where emulated MMIO regions may overlap real (passed through) MMIO ranges. Fix this by providing correct values. Fixes: df2d8b3ed4 ("q35: Introduce q35 pc based chipset emulator") Signed-off-by: Alexey Gerasimenko Signed-off-by: Thierry Escande Reviewed-by: Michael S. Tsirkin Message-Id: <20260313164649.794591-4-thierry.escande@vates.tech> Signed-off-by: Michael S. Tsirkin --- hw/pci-host/q35.c | 6 +++--- include/hw/pci-host/q35.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c index e85e4227b3..7368e3c598 100644 --- a/hw/pci-host/q35.c +++ b/hw/pci-host/q35.c @@ -306,12 +306,12 @@ static void mch_update_pciexbar(MCHPCIState *mch) break; case MCH_HOST_BRIDGE_PCIEXBAR_LENGTH_128M: length =3D 128 * 1024 * 1024; - addr_mask |=3D MCH_HOST_BRIDGE_PCIEXBAR_128ADMSK | - MCH_HOST_BRIDGE_PCIEXBAR_64ADMSK; + addr_mask |=3D MCH_HOST_BRIDGE_PCIEXBAR_128ADMSK; break; case MCH_HOST_BRIDGE_PCIEXBAR_LENGTH_64M: length =3D 64 * 1024 * 1024; - addr_mask |=3D MCH_HOST_BRIDGE_PCIEXBAR_64ADMSK; + addr_mask |=3D MCH_HOST_BRIDGE_PCIEXBAR_64ADMSK | + MCH_HOST_BRIDGE_PCIEXBAR_128ADMSK; break; case MCH_HOST_BRIDGE_PCIEXBAR_LENGTH_RVD: qemu_log_mask(LOG_GUEST_ERROR, "Q35: Reserved PCIEXBAR LENGTH\n"); diff --git a/include/hw/pci-host/q35.h b/include/hw/pci-host/q35.h index ddafc3f2e3..f31a71010b 100644 --- a/include/hw/pci-host/q35.h +++ b/include/hw/pci-host/q35.h @@ -100,8 +100,8 @@ struct Q35PCIHost { #define MCH_HOST_BRIDGE_PCIEXBAR_DEFAULT 0xb0000000 #define MCH_HOST_BRIDGE_PCIEXBAR_MAX (0x10000000) /* 256M */ #define MCH_HOST_BRIDGE_PCIEXBAR_ADMSK Q35_MASK(64, 35, 28) -#define MCH_HOST_BRIDGE_PCIEXBAR_128ADMSK ((uint64_t)(1 << 26)) -#define MCH_HOST_BRIDGE_PCIEXBAR_64ADMSK ((uint64_t)(1 << 25)) +#define MCH_HOST_BRIDGE_PCIEXBAR_128ADMSK ((uint64_t)(1 << 27)) +#define MCH_HOST_BRIDGE_PCIEXBAR_64ADMSK ((uint64_t)(1 << 26)) #define MCH_HOST_BRIDGE_PCIEXBAR_LENGTH_MASK ((uint64_t)(0x3 << 1)) #define MCH_HOST_BRIDGE_PCIEXBAR_LENGTH_256M ((uint64_t)(0x0 << 1)) #define MCH_HOST_BRIDGE_PCIEXBAR_LENGTH_128M ((uint64_t)(0x1 << 1)) --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464259; cv=none; d=zohomail.com; s=zohoarc; b=UAZGvxrU8jqcVABc+1wXfzHkP+q4zBxK9UOax2dObhhOJkXi5XnsNQprSEoWK5NtC4FveojfGFNsLc/LGGPW947fRK9KBc7ZhA+0/XE02U57zOShqF+nECsuZWUJIKpri/JDDGmETwWo+Qt40IQjM8uPIAwSI4AcBapadhYwlqk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464259; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Cc3Wh/bP9QvRlcbbFg5rG89g4DUdCV/mjJ1W8SnJKno=; b=gGtEp86W4sVIWFf8+xuU/oPENkCWLWQbuKNgcwVgXsRvPdxNGRTxdY8G+5G7EHvYwK2hNHTyWgzNWUAeCLWSPHNHz1Mc+YOl8n+RKprCBAVi+vUshdpsnqqmxp9UQ6/jJDH3rJkBQQzGLT51PP32CpFQsAasypR+d91OjbTmstY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146425912893.1748512801247; Sun, 14 Jun 2026 12:10:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDC-0007ZU-6B; Sun, 14 Jun 2026 15:09:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCU-00072i-CP for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCR-0002Me-7t for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:52 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-616-IveXA_WdPU2aCDWu69xSiQ-1; Sun, 14 Jun 2026 15:08:49 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-45f3d008865so2062894f8f.0 for ; Sun, 14 Jun 2026 12:08:49 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f26f309sm26264966f8f.14.2026.06.14.12.08.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464130; 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=Cc3Wh/bP9QvRlcbbFg5rG89g4DUdCV/mjJ1W8SnJKno=; b=DZjn9yXNm1AIcm2S0XSIJ75hy21T5QEOFwzzBc6SlJA/woDcQbfi+GnsbxpJG6s45cI9lL QqHzP+esYzNGPmkIHph6MAteFa/rmHf11l/t7HrEvvu5OF5iU92sOi1ciTA+1GFfg6Q1K6 jDw9ssWQgoHhS4WALMeWj/kYmf+sIVU= X-MC-Unique: IveXA_WdPU2aCDWu69xSiQ-1 X-Mimecast-MFC-AGG-ID: IveXA_WdPU2aCDWu69xSiQ_1781464128 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464128; x=1782068928; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=Cc3Wh/bP9QvRlcbbFg5rG89g4DUdCV/mjJ1W8SnJKno=; b=UJSUw6TGvdhyTi2cES8xo7pVc+ocP2UCEjcgmpng7lO9/xU36tCLoPCjmf4YGB9vMR TWYVWGXt6qp602/8vu0WBCawaMldw7eMXwi6gacMuMcUSj0JFCy/JsQF2CLSL7+853un w8gZLUevQ6k8iQxiH+y3wh8DncilV8zxuIndcUkMn2fk7DRVxQrywgaL7vfFFoYsr5Vy oAIl8M8I/YvsDAKgwUzLeAQol0an85CIPT1xMO3uLhzIscublEaqyE+eUgROtnuABhUb 8uXoS2xCGQLdWJQN4PMNO2FeElod2pAMbwhz9GzsywRWe91ETdEfhtXwLqAniPVdyGTZ h4AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464128; x=1782068928; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Cc3Wh/bP9QvRlcbbFg5rG89g4DUdCV/mjJ1W8SnJKno=; b=ll+ehTNlFeHCi4UKYIk2Bi8M69FmUUv68McI7k0szrDtXQqIKOLkIdui4fAbWVPB+1 lpUFbXdECjeQ6yB6TBKubPhEc5+haOCS6/89rlCmyw70ZGTeay2joHpdRhKYoVngGkHC I9X2Sgcac88hmcqMxVZAjMrgY+A6Va0/5u6wbsCZSCjlyj88Xn1lNPN8xFiB6H/oZc/y rqBSeaVkipAOPEoCvt/dOtL0gu4IUKG1aNnc83OP2RiDh/QCLW9jU9pmlOo1YZ3yY83n w1uoPHGD0RNIUjV83tfAnhzh+yPaZnahKxUbAHuIn7GIYzwlVpeQf2e/8SkcIt4mxS2Q 00VQ== X-Gm-Message-State: AOJu0YwrabImjzxJFFuPDrpqxMkyXLHaj9b/Uqii1JUX+xCDvXbUiLtm vVuLUyFizJViJwu4Vc8lKrBb9Uv7jpOyu7iCPb6PvkPUsllndpggd/GDil0wtm1lmsVTBdSe9g7 jlD2ZmFzp5PvMocHAmwsOZNqxQWKZxmz43VtXS1nnEybOedE1VkqYU3l2VwMHhEL21Mqfx0cRqo l4tozS8SULqlJmlDMYvdsI3Ao4xJjmpBqZqw== X-Gm-Gg: Acq92OHusIWeDsG8N9Sdnq74FAQDIVYpiORoj3OOmrg2t8gGEX63IZGR5BQq8MzZwQo KCSc9Qf9o3f04Qzek2mlW0vr9wFKp4PHh71yqiddxiENBolANQH1NWKkPgZClG6Rp1FfjIxZmSV VcOxgn06ovMV4YeODTGVJDEcFD5BF61WFyXAKxy0gmYrtECDyRzT4FpCX2xYxFMxBc8BuJJigEu /WTUVWcBLEkqpDMWTsIGWUfsHdrEiEljy4BgT1BYLQNni1EnuhB83xDFrQAVUJYPWr/vQ0jnh34 tPXnorloeRbu6+bsvakLvS8/GNpSJ2K2LEkt66HZY6Sdh+xVWHKgOTdkvbCFpxg0OqkK0gYAIRT MOyRhRgRRHCF2MGMgir17X8qs/PAFoAbo8qX9qNAKsKg= X-Received: by 2002:a05:6000:4a06:b0:45e:f93a:2069 with SMTP id ffacd0b85a97d-4606d023b2emr13415157f8f.23.1781464128291; Sun, 14 Jun 2026 12:08:48 -0700 (PDT) X-Received: by 2002:a05:6000:4a06:b0:45e:f93a:2069 with SMTP id ffacd0b85a97d-4606d023b2emr13415118f8f.23.1781464127696; Sun, 14 Jun 2026 12:08:47 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:45 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Eugenio =?utf-8?B?UMOpcmV6?= , Jason Wang , Stefano Garzarella Subject: [PULL 071/106] net/vhost-vdpa: enable vqs before DRIVER_OK if no cvq Message-ID: <66232095a1c71880a3fecc5ecaae47ec9a403134.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464261274158500 From: Eugenio P=C3=A9rez VDUSE do not forward the enable message to the userland device at the moment, leaving the dataplane disabled. As there is no functional difference if the device have no CVQ, enable them before DRIVER_OK in that case. For devices with a control vq, keep the enabling of the dataplane after CVQ so QEMU can restore the device configuration. Signed-off-by: Eugenio P=C3=A9rez Fixes: 6c4825476a43 ("vdpa: move vhost_vdpa_set_vring_ready to the caller") Acked-by: Jason Wang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304173857.2705296-1-eperezma@redhat.com> --- net/vhost-vdpa.c | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c index c85956a04b..c526c2b2dc 100644 --- a/net/vhost-vdpa.c +++ b/net/vhost-vdpa.c @@ -396,6 +396,7 @@ static int vhost_vdpa_net_data_start(NetClientState *nc) { VhostVDPAState *s =3D DO_UPCAST(VhostVDPAState, nc, nc); struct vhost_vdpa *v =3D &s->vhost_vdpa; + bool has_cvq =3D v->dev->vq_index_end % 2; =20 assert(nc->info->type =3D=3D NET_CLIENT_DRIVER_VHOST_VDPA); =20 @@ -405,6 +406,15 @@ static int vhost_vdpa_net_data_start(NetClientState *n= c) v->shadow_vqs_enabled =3D false; } =20 + if (!has_cvq) { + for (int i =3D 0; i < v->dev->nvqs; ++i) { + int ret =3D vhost_vdpa_set_vring_ready(v, i + v->dev->vq_index= ); + if (ret < 0) { + return ret; + } + } + } + if (v->index =3D=3D 0) { v->shared->shadow_data =3D v->shadow_vqs_enabled; vhost_vdpa_net_data_start_first(s); @@ -414,25 +424,6 @@ static int vhost_vdpa_net_data_start(NetClientState *n= c) return 0; } =20 -static int vhost_vdpa_net_data_load(NetClientState *nc) -{ - VhostVDPAState *s =3D DO_UPCAST(VhostVDPAState, nc, nc); - struct vhost_vdpa *v =3D &s->vhost_vdpa; - bool has_cvq =3D v->dev->vq_index_end % 2; - - if (has_cvq) { - return 0; - } - - for (int i =3D 0; i < v->dev->nvqs; ++i) { - int ret =3D vhost_vdpa_set_vring_ready(v, i + v->dev->vq_index); - if (ret < 0) { - return ret; - } - } - return 0; -} - static void vhost_vdpa_net_client_stop(NetClientState *nc) { VhostVDPAState *s =3D DO_UPCAST(VhostVDPAState, nc, nc); @@ -449,7 +440,6 @@ static NetClientInfo net_vhost_vdpa_info =3D { .size =3D sizeof(VhostVDPAState), .receive =3D vhost_vdpa_receive, .start =3D vhost_vdpa_net_data_start, - .load =3D vhost_vdpa_net_data_load, .stop =3D vhost_vdpa_net_client_stop, .cleanup =3D vhost_vdpa_cleanup, .has_vnet_hdr =3D vhost_vdpa_has_vnet_hdr, --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464287; cv=none; d=zohomail.com; s=zohoarc; b=PV3nj7vlWUGaeQrgBqdKiyWmVLf1GL5YwdtLIJf+E+r/OrV9F0Ihip/SgzgjabjbYpvwldXYexSLnUxYeI4xILmbDZHMmYvEqLc8cRXqkoa3z8XvoLfxI8BeoImU+qhl4Vi7IwD5D1+/EshYa1EON5MhWRki3OG4S8BuAz3/XpM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464287; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+5IDvjHpbpqRVslTo52DM6RFiRL2u3ldzUfX7cVrHQM=; b=XoZnNQ7MaC+rdhSL+fB34nc2OAAcCqwIZHSVPvZm6bJ8IeRl14RmfSIsAqWETnslbPIJ1xrybpRpuCQnaIOCB64i11y1s6yCmodIPKQJqMAeeawUOq4A+7mwaf3G1ROwq68sWu9GTdcOSHRlLusRdIjYi+6tn3X1u7zZHbuXw/Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464287098460.19959185141147; Sun, 14 Jun 2026 12:11:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDG-0007cv-BD; Sun, 14 Jun 2026 15:09:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCV-00075d-G7 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCU-0002Mk-5Q for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:55 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-658-RVkU-ZjtP52rV1XSGfQjtA-1; Sun, 14 Jun 2026 15:08:51 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-45efa2f7009so1710306f8f.3 for ; Sun, 14 Jun 2026 12:08:51 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220368ef4sm181995035e9.12.2026.06.14.12.08.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464133; 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=+5IDvjHpbpqRVslTo52DM6RFiRL2u3ldzUfX7cVrHQM=; b=RRdsm1v2B0SnCXczhMo2fMiUHm4KkJLxa7Q5rbEyV56cZn0XxsfDwF0sXjX7j6FGh7ebFH A/NFVosz228/8aiTjEFBTAtum6r+kE7cnvL8RG9SoktlNWXHFDW7ePFSP9mmPHEWE8B6ob 1zXeFGQAFIWaVkKPAnPC3/SeDXY2T0c= X-MC-Unique: RVkU-ZjtP52rV1XSGfQjtA-1 X-Mimecast-MFC-AGG-ID: RVkU-ZjtP52rV1XSGfQjtA_1781464130 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464130; x=1782068930; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=+5IDvjHpbpqRVslTo52DM6RFiRL2u3ldzUfX7cVrHQM=; b=DFBBH+NCskbBl8EXciOpXX5buQgqBwcqBiews3gBpKuxna1TvqGANVIuPfReaGFab5 ZTn4pOXcxXH4aWySm/KoM1qqeWFvpZw6+oWLA/Lge+7q2xYPSlho2Ika6eF5G4qKhwGj gd7ipmFshZOwurMoazo7shNQdR81m0DB1ip+1/tdoxmcm4UOAB0DQ8RnV5WVt5kYN13A giSPkaZkCYrnRI4iaBjsRq0XzoKGtck3NSonm/Jy9J59EAGr4i8sT9mOL2SNrGz0Vsxh ugrGB7XLudYSf3yvyujtt45IAR/jml/Kq8IMg/FGgohpGcDAtR2phUOuwCSHN84M1aWr DNMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464130; x=1782068930; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+5IDvjHpbpqRVslTo52DM6RFiRL2u3ldzUfX7cVrHQM=; b=LqK2HTG3VLqSP3/tCSMtXiIgJxRy55cReHlgTQRF8fvzM1gP46TETdCBBVAayZ5R28 +OsRs28BjajB69LOQRdFOpYLXlP1VQAINU0Xw4VI/tHrB+8wvKXqr8IyXH3v8PZpqN/9 ZV7faWr3l5fVzwL9B6Jqn8WHmz/d7N/Gn3vPoFB41CkFTCd1ilgJprFbGJMmUnd4H5Cl NThUXY++HCXjuN5O6bJpj90cQPoB0g5EdRmVkM0tWyrfAh9HdMrl6LmcyOiR0e7PT6xj 3UfdCu1eP33pyzf83qIYljYS/f1OglYM3eihUSPteu1pWKLIkgXWkg65baSG6qPrt3hi Qy6w== X-Gm-Message-State: AOJu0Yx+nSiVMJvA/s17t7E4ZNE1QjRxXkYpnPVFq9h2d4iwA2sfVYpw suawoyUln/ckrYbMQFnO01pUvEzsht7UhpiZMLC1v/hxfhLXJ0lao578M3raNyBWhaMy+AJtSeD abwlAwCoRV+rriBZnuhVI8m9QN+WtLXSiuPnZ/vsmjc+jf/RATaJ0vynf8Ml416ttR4/tb2EYKv 7DuCerh9UnQ72qXjNVv5zG/Qj2t+RP03Pxkg== X-Gm-Gg: Acq92OHEx6qimlcPRHhDG9NCDI/7VujC5b5MLXMkyWwbDgu4BjqlTq5CGKLJ42wvFgz vqkH9PYtvNOBvINa09FwYVn1Q1UidsyNKkOGTGm3kcguqITJOeb1CscqJMwN801iJlnQVicciIk +pfVkyTVnGvMva81uyBBan8TftyJelyre0MosDnyZdom6QlH97e1F9VU1L1kXFIlShFaX5owais 2vSk9ZxiV/cl6HK3cLLIRLKzYXoB8+Gii6+4K4M+2R3NH853+1DTuHbwIsL8RsOuCP5A7N+b7EL mhcdzDIUihNPsx2IlhFm8kv6r0u6LS6lHn4TxLV5GHQm1nbxbHvoJw2O4On+WazhB3U1xkiOTbJ 1xtLKhVrmPxrMZ4UVI9cUIF7wYlJ2JlP3e/nbjov+fs8= X-Received: by 2002:a05:600c:1790:b0:48a:8b02:ae91 with SMTP id 5b1f17b1804b1-49220092ec4mr53592005e9.11.1781464130351; Sun, 14 Jun 2026 12:08:50 -0700 (PDT) X-Received: by 2002:a05:600c:1790:b0:48a:8b02:ae91 with SMTP id 5b1f17b1804b1-49220092ec4mr53591845e9.11.1781464129863; Sun, 14 Jun 2026 12:08:49 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:47 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Eugenio =?utf-8?B?UMOpcmV6?= Subject: [PULL 072/106] virtio: Allow to fill a whole virtqueue in order Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464287337158500 From: Eugenio P=C3=A9rez As the while steps < max_steps is already one less than the vq size, the right maximum max_steps variable is queue length, not the maximum possible remainder of % vq->vring.num. Fixes: b44135daa37 ("virtio: virtqueue_ordered_fill - VIRTIO_F_IN_ORDER sup= port") Signed-off-by: Eugenio P=C3=A9rez Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304173535.2702587-2-eperezma@redhat.com> --- hw/virtio/virtio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index fb7f7f0f06..ed58c1af9f 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -986,7 +986,7 @@ static void virtqueue_ordered_fill(VirtQueue *vq, const= VirtQueueElement *elem, * We shouldn't need to increase 'i' by more than or equal to * the distance between used_idx and last_avail_idx (max_steps). */ - max_steps =3D (vq->last_avail_idx - vq->used_idx) % vq->vring.num; + max_steps =3D MIN(vq->last_avail_idx - vq->used_idx, vq->vring.num); =20 /* Search for element in vq->used_elems */ while (steps < max_steps) { --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464502; cv=none; d=zohomail.com; s=zohoarc; b=MgRPKiZoQ6Sj4HEVO8fQ/8oNN0JJ/CxmXgYWflzC9LRoJl1r4Tt8KXobRMC+6Szu+EazurnpVuNRrXX+gt28tyvjtPPao1M7sBzwLEZaXoKooNi0bz1kGGj53Oo5Mqx0ydnYIDG0TPj6JcmntAjwZTXtc2lJnRrO6LlNaA9d+Ng= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464502; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eqyz/+ku0gzWEAFCgZbWuwwj2nCCgyC/ph/YGtDa7co=; b=ZD1QzZ8VvbEqKeR8j/2ZUicXr3j5hc2wdWIb7p3cScTmd2cOgElbjNW8hR8CkgLTrTnNRDHs16XzcGpVBlwx/NYiET5nHDBKSi0jnLQ1GKaIjr6v51ti2dfndeS8y0VFO3FSUTMBXTd13Z8OLP5DiwEIwu/tkYivR88nmIEEPb0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464502468246.21674186757537; Sun, 14 Jun 2026 12:15:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCl-0007Dg-64; Sun, 14 Jun 2026 15:09:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCZ-000763-5D for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:59 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCX-0002N5-Hq for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:58 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-90-aCSY7b1PNWKcR8RGFkLvlw-1; Sun, 14 Jun 2026 15:08:53 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490b79e6b94so22237485e9.2 for ; Sun, 14 Jun 2026 12:08:53 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492203d2449sm168799475e9.14.2026.06.14.12.08.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464137; 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=eqyz/+ku0gzWEAFCgZbWuwwj2nCCgyC/ph/YGtDa7co=; b=DXqdh+VdM/4VELxMe47W0nnROjyLuHmgW9qxcXYrP9tFem8fehzvQZPDvQ3Et9Fg8yxzcr 5LvBobfpSQEV77CyEAiaRDJAVRsCerlqfHrgc1RmZkZovtRNoGYvURwozkakF+z47lslmn lGZdfotbV+pby1awmlXz7XqDvHLcNRo= X-MC-Unique: aCSY7b1PNWKcR8RGFkLvlw-1 X-Mimecast-MFC-AGG-ID: aCSY7b1PNWKcR8RGFkLvlw_1781464133 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464132; x=1782068932; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=eqyz/+ku0gzWEAFCgZbWuwwj2nCCgyC/ph/YGtDa7co=; b=GtEd+dcL3dxeioJ5o0PysQSQiVOJZIdT0DfgTsW78quu8fRxNO+7lxF2azLo/CkVbc N9qYyGW4xSDUlcn1Q/pwyn4A46g/1fd/BAS59w3Slq5c9Wf36aR68MZV+xmv+p70CkKh oH4oknpDkwIX7w8wp/7dq8D7Rz1tttU4XUIrqHkOFsPfUUdWFnLniV/5PRTYvbbN7FHs t0/nM6avgxT/b6Yn/XzEdoJnag0dXZGd2lNaYTPbIx1QvdJ3ZSd+kkxIXyXatz6fCZ/t aiXrIGYgubiqoYsBxI31bQNhiIhcKt748tnX8Vwmd67RYgcx143fRAFoFmISXdWmlQgB z0FA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464132; x=1782068932; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=eqyz/+ku0gzWEAFCgZbWuwwj2nCCgyC/ph/YGtDa7co=; b=PTHDKKV4+w8PvY+zFa5PsuR66mzW3+NxcwLwirgOZCCjh/Q42+hFEF4gl3J658Ehm/ vMHeduyW83lN7sej7I+OSVnE0NIki/4j96w4wng39IN6kDj5a9WnMg1Jp7Kq3Za2QBhT 5ctTkY0CasLBY1zfb9rah3uUA6HkamWknAZwE/rbzTbhA6pZkcFH5p0sUeHUbx0+ZMlM h4TE9fnWIikTDoo53HzFF1GoOY3Bj4V8VrDpq3cV9hKBndV/jDbbeKzA7hVJn98rUca/ A9bWC8NySzBzUwWsy+2ybAe+buSON0WNg/N739U1cLdF+26EzWYznczBhMJfbMcpDT5E HO7w== X-Gm-Message-State: AOJu0YyqedPYR3v8ZAC1QgFhSFWxyz0dS8gdBlFwy2QCe8vraKyf8tKL 33jngx2Grh7LINoYvJrYzzfPdIykyV1kwHK2wZl2TpJoKAPqA2ixCVqgxH+G6Ga7ykwDVGaXNRs jV6plfbUxakRpjsI1Oo7IWWv3WZWJ4BzLbFIrIMiPcKSaSu4RZxgbWepNHsa9MULeEzGO3E5Flf O54ntQxpVbSDuva+I78Er7kCdBZDKGk3oXXw== X-Gm-Gg: Acq92OFuacOoJJl0hAuR4XrSoqId/4Z0zn33pjAPcfKAZYXmlmCZp4MYgH6UCSIoMPE d78vtMAeYyqlkM4IqbGDbSrDjWGsWD/iJA0HOTDo8G3WgkmRXRnkMptX/4oW5jLS4CJfQXJgX2g uWOfsc8IaFROv758InUjGv4vegNB0au1ziPvYV6pk/lNlPINDFndL1OYI9IzlI8SiybxjgWuJvd 3n5xWXAMRV0+G/Kc9xEu0q6zz/dUnFpsbx7d6u9Xpo6a3RzHmDAARqh9W43rFdCBSNUlGtNxhG6 XxUMaBbbW3GN6hByo0Yo/IAtsvmtn6HkultevBuOdPfO9GB4TMj+cT3y5CzjRoxTvoYfD3sRyRT 8OcCGzxEDn88qCFAKzblDBqXx367Csfx2JAlmx9d+nxQ= X-Received: by 2002:a05:600c:314a:b0:490:e1a6:261 with SMTP id 5b1f17b1804b1-490ec5092c8mr137629995e9.26.1781464132450; Sun, 14 Jun 2026 12:08:52 -0700 (PDT) X-Received: by 2002:a05:600c:314a:b0:490:e1a6:261 with SMTP id 5b1f17b1804b1-490ec5092c8mr137629715e9.26.1781464131914; Sun, 14 Jun 2026 12:08:51 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:50 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Eugenio =?utf-8?B?UMOpcmV6?= , Jason Wang , Stefano Garzarella Subject: [PULL 073/106] vhost: move svq next desc array to descs state struct Message-ID: <927d0beaad0ac6db96865a96fdad0c1a93b3477d.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464504148158500 From: Eugenio P=C3=A9rez It's the right place for it as it is part of the descriptor state. We save the memory management of the array, and make the code changes of the next patches easier. Signed-off-by: Eugenio P=C3=A9rez Acked-by: Jason Wang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304173535.2702587-3-eperezma@redhat.com> --- hw/virtio/vhost-shadow-virtqueue.c | 14 ++++++-------- hw/virtio/vhost-shadow-virtqueue.h | 12 ++++++------ 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-vi= rtqueue.c index 6242aeb69c..901253d06e 100644 --- a/hw/virtio/vhost-shadow-virtqueue.c +++ b/hw/virtio/vhost-shadow-virtqueue.c @@ -175,7 +175,7 @@ static bool vhost_svq_vring_write_descs(VhostShadowVirt= queue *svq, hwaddr *sg, for (n =3D 0; n < num; n++) { if (more_descs || (n + 1 < num)) { descs[i].flags =3D flags | cpu_to_le16(VRING_DESC_F_NEXT); - descs[i].next =3D cpu_to_le16(svq->desc_next[i]); + descs[i].next =3D cpu_to_le16(svq->desc_state[i].next); } else { descs[i].flags =3D flags; } @@ -183,10 +183,10 @@ static bool vhost_svq_vring_write_descs(VhostShadowVi= rtqueue *svq, hwaddr *sg, descs[i].len =3D cpu_to_le32(iovec[n].iov_len); =20 last =3D i; - i =3D svq->desc_next[i]; + i =3D svq->desc_state[i].next; } =20 - svq->free_head =3D svq->desc_next[last]; + svq->free_head =3D svq->desc_state[last].next; return true; } =20 @@ -432,7 +432,7 @@ static uint16_t vhost_svq_last_desc_of_chain(const Vhos= tShadowVirtqueue *svq, uint16_t num, uint16_t i) { for (uint16_t j =3D 0; j < (num - 1); ++j) { - i =3D svq->desc_next[i]; + i =3D svq->desc_state[i].next; } =20 return i; @@ -473,7 +473,7 @@ static VirtQueueElement *vhost_svq_get_buf(VhostShadowV= irtqueue *svq, num =3D svq->desc_state[used_elem.id].ndescs; svq->desc_state[used_elem.id].ndescs =3D 0; last_used_chain =3D vhost_svq_last_desc_of_chain(svq, num, used_elem.i= d); - svq->desc_next[last_used_chain] =3D svq->free_head; + svq->desc_state[last_used_chain].next =3D svq->free_head; svq->free_head =3D used_elem.id; svq->num_free +=3D num; =20 @@ -705,9 +705,8 @@ void vhost_svq_start(VhostShadowVirtqueue *svq, VirtIOD= evice *vdev, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYM= OUS, -1, 0); svq->desc_state =3D g_new0(SVQDescState, svq->vring.num); - svq->desc_next =3D g_new0(uint16_t, svq->vring.num); for (unsigned i =3D 0; i < svq->vring.num - 1; i++) { - svq->desc_next[i] =3D i + 1; + svq->desc_state[i].next =3D i + 1; } } =20 @@ -744,7 +743,6 @@ void vhost_svq_stop(VhostShadowVirtqueue *svq) virtqueue_unpop(svq->vq, next_avail_elem, 0); } svq->vq =3D NULL; - g_free(svq->desc_next); g_free(svq->desc_state); munmap(svq->vring.desc, vhost_svq_driver_area_size(svq)); munmap(svq->vring.used, vhost_svq_device_area_size(svq)); diff --git a/hw/virtio/vhost-shadow-virtqueue.h b/hw/virtio/vhost-shadow-vi= rtqueue.h index 9c273739d6..f52c33e650 100644 --- a/hw/virtio/vhost-shadow-virtqueue.h +++ b/hw/virtio/vhost-shadow-virtqueue.h @@ -23,6 +23,12 @@ typedef struct SVQDescState { * guest's */ unsigned int ndescs; + + /* + * Backup next field for each descriptor so we can recover securely, n= ot + * needing to trust the device access. + */ + uint16_t next; } SVQDescState; =20 typedef struct VhostShadowVirtqueue VhostShadowVirtqueue; @@ -84,12 +90,6 @@ typedef struct VhostShadowVirtqueue { /* Next VirtQueue element that guest made available */ VirtQueueElement *next_guest_avail_elem; =20 - /* - * Backup next field for each descriptor so we can recover securely, n= ot - * needing to trust the device access. - */ - uint16_t *desc_next; - /* Caller callbacks */ const VhostShadowVirtqueueOps *ops; =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464464; cv=none; d=zohomail.com; s=zohoarc; b=AJZRFl7CIh5BISkScuNfo2ogiEdimCTyLKDo5Fk5f6+kdUguS7swbrXQOzxLEEMSPEpZlAqv6M1INhi9+HwnEHDYBOAKMKY33CPhYixVPrCqSYY1QS9sOJiDVmfmCjwS69z4L2nAv4VZdf819wxPyplG6JzMqLWC/lv2jKWfb5U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464464; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=I/ys6ZssApw29Zt0fL+bJEbJHwULzWoQ7y5saFW1/Yw=; b=Orpf6N5ZggwYnWz5oztyMn/7DPRPrFPxbA2DQ3iwPGfjLnH3dasM+DokswG7OZEDs68/975nDsINIBjMtoqnYjPVTkJw3MFwSx543OYz1oPgVCoWSSoZpHqB382wzATxArDy8oa1S709MODo0XavTwJHMe9/yJVrtWBFUtCL7ec= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464464052637.612787123504; Sun, 14 Jun 2026 12:14:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCl-0007Fe-DE; Sun, 14 Jun 2026 15:09:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCa-00077J-6h for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:05 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCX-0002NE-TJ for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:08:59 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-198-euSA0pIINPau7FrON-f-Gg-1; Sun, 14 Jun 2026 15:08:56 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-45ef63d1214so1614963f8f.3 for ; Sun, 14 Jun 2026 12:08:55 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2cf5d9sm23854470f8f.32.2026.06.14.12.08.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464137; 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=I/ys6ZssApw29Zt0fL+bJEbJHwULzWoQ7y5saFW1/Yw=; b=Xy5GilMNFnmGFvRq35iFVBo26chMkeogA+QSGH8khxEpdQHxphAKu7Wjpq8dEuo2X+Fhc+ gGZ6S8FWCOil0ToyJMCqxwk2miCtVNn8x4Eg5bBUyC0qp+UPHtgmiohX54W67RZ5eWUsQe 1BeFkTwQFS/q30K3mp9e27ri5XdIE/8= X-MC-Unique: euSA0pIINPau7FrON-f-Gg-1 X-Mimecast-MFC-AGG-ID: euSA0pIINPau7FrON-f-Gg_1781464135 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464135; x=1782068935; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=I/ys6ZssApw29Zt0fL+bJEbJHwULzWoQ7y5saFW1/Yw=; b=AvhHpQiSD8/kky/fiPgby8ksgpgJI1heWw3ll2NPmpN0AsoiMWlI5y/lw0ieGcLDGk B1/pqd5LNI8VohPKuZFxoh9LzT/bMg4aWHvTkzBI6vWF78fv+I2nPNaZJtmJ7sYkrmQ/ 66h3DL/bXDlAgn6Z59S2u3NdtoX/4X27jSrPbXD8S839Uy8jRMKWgJ+kdDgLDoO3hFQF o2TUYkta8q2eTQYBpru29zQ4E+XzWLZaund4SWx1ZlSX02lYTh0h6EDFxFQS12YigbTH HvfpeE0I/FmizwH6/6rU4EAn5swERSCnEoSTtUYFfRTzB8fGOr6tnSkndENNU9bTjaF+ S+xQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464135; x=1782068935; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=I/ys6ZssApw29Zt0fL+bJEbJHwULzWoQ7y5saFW1/Yw=; b=R2LtnN4SrxRGqFhvpKlM4L8bH8xeg+YzCg5m4txLNfCVZqohI4EU5sJl2zswQJyTjV 4rx9HTX5VQoHubioBXg7EMxZCltiIT15uVHsl5dC0yk+7pl7wjdx738WP3Y5OvtryNWH CwIQ1Bus0lESUJ3OBEffjr1hnxsRKcFKzSb0Db4xwwiN4beSplj46WTHxYQF9kPIj9zn M6lD+WsX4PL0RVu9EEVYpwyeJwkUI5odyh0/GnhAr8luNFm1whF/VPmBEivxjG3RitoD bPq7ifHVfrHiZO7zOx8cKr7GOstLzZzzOHwIftss0SstK4/aL/NXFXvuaNpdz32MqPCq 3X9g== X-Gm-Message-State: AOJu0YzWQJ6T39gM4fO0j4rPycARbLYm/dqtoEhnv7aKxqhNxvXi9bge zwSQLgby623ZFeLTGb9HGWtyoatOox4f4QBLFGHzDD7LV0val3i1gZiIy7Zk9xcR6X85utm4tA/ szwKwVa831wLjN0W+hduQQ1mBs/Gv6TQRIlAxNFdNYcZIVdN3TpdYEAwlpHBKLxRmtTjHfqV/1v AjfHDMECDiCHTY6KVwbUAd2SWuCKQDu47fGQ== X-Gm-Gg: Acq92OEsdsObFC7eiGNEutphMJTF9epdn6nl59/GRDrib3MIv0/AoJl8i+G3VFIzZ2V qt9G01OI7LhhkR+nKioleryZ6AVzVfqgzWSjtXSPCVB5oNa4eJtypyaPOysNFhFM3z1rCJxp23R 0SKeQw7ki4AN0UJeml+4KyVny3IzW42MlyI7BvZLsbRvTz4nVf+unNMY/Iu2+kkKNB0dDzUk47i 9ld0Po1DSov5WWcEjTXCKL6oM3S2M1WiEFXrjgbSKWuYse57lNJa9qEjj32ljeawqyNR1h7m248 FEZLwb1TxIwT3unICTL+sfYCmQ44CBTrVKJqcsUTADy3PygXyDJbPbaYzZy/F3BpBTgMQkVG7JQ D1KV7xwk11Gmd61yi6HKcwbPE8QJyfDPk7opYx9G2jVU= X-Received: by 2002:a05:6000:288f:b0:460:3234:4472 with SMTP id ffacd0b85a97d-4606dbe5c41mr14333606f8f.40.1781464134726; Sun, 14 Jun 2026 12:08:54 -0700 (PDT) X-Received: by 2002:a05:6000:288f:b0:460:3234:4472 with SMTP id ffacd0b85a97d-4606dbe5c41mr14333578f8f.40.1781464134248; Sun, 14 Jun 2026 12:08:54 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:52 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Eugenio =?utf-8?B?UMOpcmV6?= , Jason Wang , Stefano Garzarella Subject: [PULL 074/106] vhost: factor out the descriptor next fetching Message-ID: <00373aa05e683e4d4f72f534a8b9179cd4065149.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464466023158500 From: Eugenio P=C3=A9rez The next field will not be used if IN_ORDER is enabled. Signed-off-by: Eugenio P=C3=A9rez Acked-by: Jason Wang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304173535.2702587-4-eperezma@redhat.com> --- hw/virtio/vhost-shadow-virtqueue.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-vi= rtqueue.c index 901253d06e..7adacd4f54 100644 --- a/hw/virtio/vhost-shadow-virtqueue.c +++ b/hw/virtio/vhost-shadow-virtqueue.c @@ -139,6 +139,20 @@ static bool vhost_svq_translate_addr(const VhostShadow= Virtqueue *svq, return true; } =20 +/** + * Get the next descriptor in the chain in SVQ vring from a descriptor id + * + * @svq Shadow Virtqueue + * @id ID of the descriptor + * + * Return the id of the next descriptor. + */ +static uint16_t vhost_svq_next_desc(const VhostShadowVirtqueue *svq, + uint16_t id) +{ + return svq->desc_state[id].next; +} + /** * Write descriptors to SVQ vring * @@ -173,9 +187,11 @@ static bool vhost_svq_vring_write_descs(VhostShadowVir= tqueue *svq, hwaddr *sg, } =20 for (n =3D 0; n < num; n++) { + uint16_t next =3D vhost_svq_next_desc(svq, i); + if (more_descs || (n + 1 < num)) { descs[i].flags =3D flags | cpu_to_le16(VRING_DESC_F_NEXT); - descs[i].next =3D cpu_to_le16(svq->desc_state[i].next); + descs[i].next =3D cpu_to_le16(next); } else { descs[i].flags =3D flags; } @@ -183,10 +199,10 @@ static bool vhost_svq_vring_write_descs(VhostShadowVi= rtqueue *svq, hwaddr *sg, descs[i].len =3D cpu_to_le32(iovec[n].iov_len); =20 last =3D i; - i =3D svq->desc_state[i].next; + i =3D next; } =20 - svq->free_head =3D svq->desc_state[last].next; + svq->free_head =3D vhost_svq_next_desc(svq, last); return true; } =20 @@ -432,7 +448,7 @@ static uint16_t vhost_svq_last_desc_of_chain(const Vhos= tShadowVirtqueue *svq, uint16_t num, uint16_t i) { for (uint16_t j =3D 0; j < (num - 1); ++j) { - i =3D svq->desc_state[i].next; + i =3D vhost_svq_next_desc(svq, i); } =20 return i; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464475; cv=none; d=zohomail.com; s=zohoarc; b=afaTXPLS3moIGotGtd3HY+RYeLU0ZlmYe2tHUYGPd3IpP93QrZ2aoAc3Ze1ifpnlD4Lf48qoMY867Cb2yvmRh0h0PJWkzXlTURkjxmfxwpNR/WRfZgBt9ail7+IdQtuY0TdwrDIi+SQ1k4GNxZSH1lXUg4SLHjUyNFrKwf9hx8g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464475; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ok0lvba2stfaZNgrdWga/lmddPgOemeWMEkvpGK7Gy8=; b=infirLQ/gWHmGt0LwHJTNbSbxsLyvHea+B1BNfJNONG4+K1b877VfdLNQbSHHIbeWfot0kQQSbkBaAU9JM6dwHs2Q2PbQCSHqk7/FT1H4W8oG7rGn7h7k2WGomHtYs0qfVdB0t6UyTuCh08b1NS94/XUZpPc7QhkuXQl50Bfsr0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464475011251.18931062791637; Sun, 14 Jun 2026 12:14:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCp-0007LF-Im; Sun, 14 Jun 2026 15:09:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCb-00077Z-Pc for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:05 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCa-0002Nc-5J for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:01 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-622-BsJLz5WjMz69G7P9ioc4hw-1; Sun, 14 Jun 2026 15:08:58 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-460129ef947so1596509f8f.1 for ; Sun, 14 Jun 2026 12:08:58 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2b0d4fsm28698969f8f.24.2026.06.14.12.08.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464139; 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=ok0lvba2stfaZNgrdWga/lmddPgOemeWMEkvpGK7Gy8=; b=S050wSoLqGNRGN4Vi+80BtqDzP86RhgfyKJKgEsBlHzhRnL9b0rXLTrzQB+7mVqBOoKuxw gqim1X2XkDlohSHm+h+3iX8/KEAyUPpipglk65CRQPcMTJxQyL/lyv8VsFtOQt7GYHB8K5 GHKkZm6XuCO3vMsH7P8NKksgVpzYlGk= X-MC-Unique: BsJLz5WjMz69G7P9ioc4hw-1 X-Mimecast-MFC-AGG-ID: BsJLz5WjMz69G7P9ioc4hw_1781464137 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464137; x=1782068937; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=ok0lvba2stfaZNgrdWga/lmddPgOemeWMEkvpGK7Gy8=; b=N/In6g4XO91uj9oBKQ3YdREolimVnBNk6ZkI00X1q8O6znwPKQsURaUkXtdDh7ZVcv sLeGFhHhgRqVU9c9gyzAJjlFAGkJiu830e2TGreeykmygZmhJ/jyMLbvceqlZK8yy419 5KslXocnCiVR3H4jRaH+NHEBYWWQ5S7WMUgpQVY7pHwBQUH1hD55cRrGBqB9fRRBEDxb 9g54BdmjCCFJLrILSSFRW/BLW9tgQ4e6/ElbrKY3epLonHpeekeazZIr6ykB5Er0Wd4d jO8igQ3aZJNvdBSGmW8y3k6CZ1lW+NAD58hAnM8LljMpioiRMJH/BJTVsdzjIQrzGQ7T ma1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464137; x=1782068937; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ok0lvba2stfaZNgrdWga/lmddPgOemeWMEkvpGK7Gy8=; b=Cbe6nQyHoxA7alM6J0BTs5PqPL9rXiB0JuhjI1q9NgQs0EATUQaI7rUjUsAO72+Wvr uQLPAaAcmHXHofqO3D8r7J0Zk3wMqzWODOwlWR4myeSPBX877a6zxGKPZe3UVkbTW6uc vP4fIaZclJyq2cRSKu2Vz/Q5BI0qmosFnhlwoUn8nLtSTdU84USEsJ3LyPU3mk/AEWZV eNPshWZo5taI7jezrKUQW2hBzSVQhAw1cgirXw6f3yeH4fuaRy+LU2GBqgB1+L6vbm35 oxKWiimjklYfMFaArSXf1gMmhDRRLQqvY1b3zwaFE4hi3aLcFB6PemTLscSAAvT+5/A3 U2vw== X-Gm-Message-State: AOJu0Yzzsd6BdhCy+t9LkfemAeKRYBEPxxE2f1h7eXoyxrVPA3xMJ39h I6kKSpBskuQ2HorYMHum7YYCcLH8P2v3JTOycZQjJUbYVe9GU1pkz8smeCckaBvsv8WRuGglsoW w6S3E4vCwV6wgkK3e6loHBoqIXYAIaVIENSnFvI89J5TMhOqiyw+wQ0vAH3nXaNYPaSm/T5s2O7 Ytvddw53L1nlys0jfBKJQS143t0q3jHEksiw== X-Gm-Gg: Acq92OELt5ARqAyzX+MheM4P6eifR7w7BHakWm3f4pbw3AoYBcKlBFUNTXqGX4yD1ZF 4jKcqSVvS7YP62T2+pZbwVXIPcYUqn003QFRo2rBzbzeAZ7oGmOuIY/CTd3X26xsPcLQNjoZGun U1BSAjQUOCeXS71f3VUzE80BJH6+KS1XDKxEC+8NeuOmRCEKFdyCmsAHREZtEhgVlAiaRhbP4c6 tzsR9209JEvNLe1DfQpZDr7Pc59ctDUGBZCXMl6kp2CzH/pDgE+8tSeUc+sfscp0njBfflNvtga CwSIXCMK1kdYUXUyrebMR7slJBNuaTYazcPKCKKB4JUOy+StByhBDLryquXIy3WtNnN940ge5Iq /v4f1T5Jt55bOj6LJd6tGeaGPZHuEWVR7DamImrnnJmc= X-Received: by 2002:a05:600c:46c4:b0:490:b355:9c8c with SMTP id 5b1f17b1804b1-490ec4fbcb7mr152436305e9.23.1781464136820; Sun, 14 Jun 2026 12:08:56 -0700 (PDT) X-Received: by 2002:a05:600c:46c4:b0:490:b355:9c8c with SMTP id 5b1f17b1804b1-490ec4fbcb7mr152436045e9.23.1781464136320; Sun, 14 Jun 2026 12:08:56 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:54 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Eugenio =?utf-8?B?UMOpcmV6?= , Stefano Garzarella Subject: [PULL 075/106] vhost: factor out the get of last used desc in SVQ Message-ID: <90369a1165c4ffc5a22c9e0fb1743bc0ff896861.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464476132158500 From: Eugenio P=C3=A9rez This code path is modified to handle in order devices. Abstract here so we can generalize on the caller. Signed-off-by: Eugenio P=C3=A9rez Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304173535.2702587-5-eperezma@redhat.com> --- hw/virtio/vhost-shadow-virtqueue.c | 45 +++++++++++++++++++----------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-vi= rtqueue.c index 7adacd4f54..e7e3c9155c 100644 --- a/hw/virtio/vhost-shadow-virtqueue.c +++ b/hw/virtio/vhost-shadow-virtqueue.c @@ -444,6 +444,25 @@ static void vhost_svq_disable_notification(VhostShadow= Virtqueue *svq) } } =20 +/* + * Gets the next buffer id and moves forward the used idx, so the next time + * SVQ calls this function will get the next one. + * + * @svq: Shadow VirtQueue + * @len: Consumed length by the device. + * + * Return the next descriptor consumed by the device. + */ +static uint16_t vhost_svq_get_last_used_split(VhostShadowVirtqueue *svq, + uint32_t *len) +{ + const vring_used_t *used =3D svq->vring.used; + uint16_t last_used =3D svq->last_used_idx++ & (svq->vring.num - 1); + + *len =3D le32_to_cpu(used->ring[last_used].len); + return le32_to_cpu(used->ring[last_used].id); +} + static uint16_t vhost_svq_last_desc_of_chain(const VhostShadowVirtqueue *s= vq, uint16_t num, uint16_t i) { @@ -458,8 +477,6 @@ G_GNUC_WARN_UNUSED_RESULT static VirtQueueElement *vhost_svq_get_buf(VhostShadowVirtqueue *svq, uint32_t *len) { - const vring_used_t *used =3D svq->vring.used; - vring_used_elem_t used_elem; uint16_t last_used, last_used_chain, num; =20 if (!vhost_svq_more_used(svq)) { @@ -468,33 +485,29 @@ static VirtQueueElement *vhost_svq_get_buf(VhostShado= wVirtqueue *svq, =20 /* Only get used array entries after they have been exposed by dev */ smp_rmb(); - last_used =3D svq->last_used_idx & (svq->vring.num - 1); - used_elem.id =3D le32_to_cpu(used->ring[last_used].id); - used_elem.len =3D le32_to_cpu(used->ring[last_used].len); + last_used =3D vhost_svq_get_last_used_split(svq, len); =20 - svq->last_used_idx++; - if (unlikely(used_elem.id >=3D svq->vring.num)) { + if (unlikely(last_used >=3D svq->vring.num)) { qemu_log_mask(LOG_GUEST_ERROR, "Device %s says index %u is used", - svq->vdev->name, used_elem.id); + svq->vdev->name, last_used); return NULL; } =20 - if (unlikely(!svq->desc_state[used_elem.id].ndescs)) { + if (unlikely(!svq->desc_state[last_used].ndescs)) { qemu_log_mask(LOG_GUEST_ERROR, "Device %s says index %u is used, but it was not available", - svq->vdev->name, used_elem.id); + svq->vdev->name, last_used); return NULL; } =20 - num =3D svq->desc_state[used_elem.id].ndescs; - svq->desc_state[used_elem.id].ndescs =3D 0; - last_used_chain =3D vhost_svq_last_desc_of_chain(svq, num, used_elem.i= d); + num =3D svq->desc_state[last_used].ndescs; + svq->desc_state[last_used].ndescs =3D 0; + last_used_chain =3D vhost_svq_last_desc_of_chain(svq, num, last_used); svq->desc_state[last_used_chain].next =3D svq->free_head; - svq->free_head =3D used_elem.id; + svq->free_head =3D last_used; svq->num_free +=3D num; =20 - *len =3D used_elem.len; - return g_steal_pointer(&svq->desc_state[used_elem.id].elem); + return g_steal_pointer(&svq->desc_state[last_used].elem); } =20 /** --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464490; cv=none; d=zohomail.com; s=zohoarc; b=KgXONfBdelzhLbYD9Xrv4TC1yNHXjN5dt1L0s0R4iwhljx1caT4Q/npuOvc1leFp0b54xiTosjqWzmNF92l3FAysY3EodwlmK4QaRLXGtPuXvJzeCf5wzbpjSzfIx/tWdrhmps6jr7rTuchVaTp9orVgpyu/iNkVugmNSYKvgqs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464490; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=L82IqZcjvhDjhQvEYE7lWFL29u1mdBHp70yRlARDTLY=; b=eQyKNoX+oOpK6mlpYNBXvy/dVAWiWsc2KHr+zEaaJmzx43H+j9vG1L5toYs3lf7oSSnTq1fmGvgr7irn2ZA7lJJuZVCnIDSbAj2vZCm+mpqgP+bmnxvc/2Hr1S2X9jG+RxstEtUN3/W6/lDDl9ddTI5RWgpsgoo0CPd55jv3LxQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464490334875.6157647831526; Sun, 14 Jun 2026 12:14:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCr-0007Mc-Io; Sun, 14 Jun 2026 15:09:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCe-00077c-Vq for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:05 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCd-0002Nw-FT for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:04 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-458-s3JJnyggPRSk45jtKii-OQ-1; Sun, 14 Jun 2026 15:09:00 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490b9318944so16620385e9.1 for ; Sun, 14 Jun 2026 12:09:00 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2b0d70sm27361271f8f.19.2026.06.14.12.08.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:08:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464141; 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=L82IqZcjvhDjhQvEYE7lWFL29u1mdBHp70yRlARDTLY=; b=RvhyJConm9xYwVDT/XzFYOgXgpUv+mm6uEwsWD+3evZ5XsBVavnYX30SyZX3DOtV2K6Ubu 3ZpkIReXPGBgmT8m1VN0JSIU/mLLr5nKnuPt8HTLKfjv/XaF8FEyDEdqfcabGoYerxJYzQ BtPYv4FTpcrHsYkBCHkuuSts5UaKjd8= X-MC-Unique: s3JJnyggPRSk45jtKii-OQ-1 X-Mimecast-MFC-AGG-ID: s3JJnyggPRSk45jtKii-OQ_1781464139 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464139; x=1782068939; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=L82IqZcjvhDjhQvEYE7lWFL29u1mdBHp70yRlARDTLY=; b=Jg+qjBu7gPi3v7UiGja91nXe52MNDEE37qH1zG5W+eOUE1HiNaPFmCqMFGmAWHcfG+ GWrC8wf8OXC8p6XuZn1jDhwWveVp8Ms6lHsq5QTsf9K+LfLI0CkMBD1WF2rwoKNrODNV ySAYNhc6V57riuTruS0W3Q+hAnGHGOuzD73oCYTHygyj54GOcLC35YIIL2VNoak04ac9 yN+MMJQHrhPHtvKzcZKhnofsCyVc3uVXBI3sYsaRO1uOLrhVhnYeOEL7taJt4Fkxewpr ZBpcS67P7XhDu5onSYkP7HQDTVEqMLmPosnNkFM/HLUwEkuWCN9mm3JMziVJP/4E6YQG SvKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464139; x=1782068939; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=L82IqZcjvhDjhQvEYE7lWFL29u1mdBHp70yRlARDTLY=; b=DAL7dpegiXD+WhCknUMrv9vGl7s4M1ynxGsDI0Ew+V0QKEpiX193mcmNrl//RCz0Ej 6entpeEFAH956vL1+0qjKM2zGdSTmNv893uCVvVCkXLSE9dXyHvRnZbV/IsnWkiFXr8T vKWct9JjkdYYy2VdxscC0zybiYmZlTlsHRq3A0jd92DbJz4GHhbv52F6nwUxppF9Cg6G Gdir6Sp5DTgeAiDNL+MT4Nct6wzxn+bjjzOJEfWe1jCXuiUKhXJ5g8TNH4JVSv+VxZKn 1gmT/eddK9O8i2hvcUPk+d1QbKs0vB7dXDer+WusTxWpjt2dyDuyVrZXXw/gWqWH/T/C Drug== X-Gm-Message-State: AOJu0YwPa4AhitU7KMo2pSAOmanHCVTY+r68+/XiTW7OSJVBoteI+B2s 3ODncU4AYIgI7Vzr1yB1poJTxaT06Z+GDQNIAZLD7lG+O81W0MxJMns0FuLcro94ewWfcpX5x96 v0ZTL4Ee3Hp7wU1MMZmI5rRB5/A7MH0USp9rnqDRTkgGjZf5/U1Vj6ie2c+zWLUKIRc+dfw9bN4 /xC1JFNkhG2g3d3W5T8sajdA0OcDOVXnT3tw== X-Gm-Gg: Acq92OEqycMxP52d3G14S3soqzMSF4RcWuhyLBE+eDq7l99EE3w32dMU/7kgd0vj2/F xPDLuh8FbIly3aeD2JBb4PpQBajggr3jLGYs6Nru7DD0jNfIwtF5LTEWIcnrvsX+RIp8FNTJldk wSuglDjxiuZKYb4f1HKSu+gH4lcss1L8gvpEvjds3GSGlEF1jyLx8O6OJmhn0UOALdnUXht2Jra xptdWFVY6ziQqlH1OJy7gydx3yjvg0jjSTPUj5wTMZwh4UamTW6GBGAAbyvf36/8skgvT0n1OAb IVRetRrHSU7ywF2pNRE6klnUBGhAyut/2rnLUm4NYF311LYShcKw7E8C68vuxRDRuOL5tyj7Jx/ 4lmNJX3mab4YlVwYTJsakUUP12+6kK7T8xAad9izXabg= X-Received: by 2002:a05:600c:138e:b0:490:d354:bd00 with SMTP id 5b1f17b1804b1-490ec507db7mr148172535e9.25.1781464138997; Sun, 14 Jun 2026 12:08:58 -0700 (PDT) X-Received: by 2002:a05:600c:138e:b0:490:d354:bd00 with SMTP id 5b1f17b1804b1-490ec507db7mr148172285e9.25.1781464138472; Sun, 14 Jun 2026 12:08:58 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:56 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Eugenio =?utf-8?B?UMOpcmV6?= , Stefano Garzarella Subject: [PULL 076/106] vhost: factor out the detach buf logic in SVQ Message-ID: <7291b1a5f8b0c2dfa95e544dd59fa8144dde72fc.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464492142158500 From: Eugenio P=C3=A9rez This code path is modified to handle in order devices. Abstract here so we can generalize on the caller. Signed-off-by: Eugenio P=C3=A9rez Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304173535.2702587-6-eperezma@redhat.com> --- hw/virtio/vhost-shadow-virtqueue.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-vi= rtqueue.c index e7e3c9155c..2d8fc82cc0 100644 --- a/hw/virtio/vhost-shadow-virtqueue.c +++ b/hw/virtio/vhost-shadow-virtqueue.c @@ -473,11 +473,24 @@ static uint16_t vhost_svq_last_desc_of_chain(const Vh= ostShadowVirtqueue *svq, return i; } =20 +G_GNUC_WARN_UNUSED_RESULT +static VirtQueueElement *vhost_svq_detach_buf(VhostShadowVirtqueue *svq, + uint16_t id) +{ + uint16_t num =3D svq->desc_state[id].ndescs; + uint16_t last_used_chain =3D vhost_svq_last_desc_of_chain(svq, num, id= ); + + svq->desc_state[last_used_chain].next =3D svq->free_head; + svq->free_head =3D id; + + return g_steal_pointer(&svq->desc_state[id].elem); +} + G_GNUC_WARN_UNUSED_RESULT static VirtQueueElement *vhost_svq_get_buf(VhostShadowVirtqueue *svq, uint32_t *len) { - uint16_t last_used, last_used_chain, num; + uint16_t last_used; =20 if (!vhost_svq_more_used(svq)) { return NULL; @@ -500,14 +513,9 @@ static VirtQueueElement *vhost_svq_get_buf(VhostShadow= Virtqueue *svq, return NULL; } =20 - num =3D svq->desc_state[last_used].ndescs; + svq->num_free +=3D svq->desc_state[last_used].ndescs; svq->desc_state[last_used].ndescs =3D 0; - last_used_chain =3D vhost_svq_last_desc_of_chain(svq, num, last_used); - svq->desc_state[last_used_chain].next =3D svq->free_head; - svq->free_head =3D last_used; - svq->num_free +=3D num; - - return g_steal_pointer(&svq->desc_state[last_used].elem); + return vhost_svq_detach_buf(svq, last_used); } =20 /** --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464421; cv=none; d=zohomail.com; s=zohoarc; b=JyZ7wIZ70E1UI7msEBvYhOapvyub9GZ5ex4enrCb2tNmvO7Zp/9j/zkvG4JOScZui8p0Kq4wVkOn7hDllG2JhMaQwaaRHxbTNvuqjuNuk/8rGsTODrECluFnC7ch8t7KkbPjXHxYp8Enfg3kjUmSYzoHVjMUALj/SrpZPaho8EY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464421; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yknmJ7/BrwD4b2kAfEcOvb77sRsuPj51BSB4Y0Ox3ms=; b=JLQ6+x1eeZGz/6CXUbYKQcB8xlflMPLXsBwIhBxWdDkmEruisRaR/eFPdk9Bn+DB+GnmFCSSsZLQ9k5Atdb4WGIPLsLcBoEQv/f3d3Sd1Iu4C3Z/C+ZBho3RwuyzmS21YYWALnB4CS7Gw9Nuqiq9Ij68TtSaqlGyod8duWbhLgY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464421195197.2412436805547; Sun, 14 Jun 2026 12:13:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqCr-0007Mq-Nh; Sun, 14 Jun 2026 15:09:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCg-0007DB-Bo for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:07 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCe-0002O9-Bp for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:06 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-279-aHmtByWoMfq0mi0fzXyKMA-1; Sun, 14 Jun 2026 15:09:02 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490b0682d2fso23953695e9.0 for ; Sun, 14 Jun 2026 12:09:02 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492203bfb27sm210158445e9.11.2026.06.14.12.08.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464143; 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=yknmJ7/BrwD4b2kAfEcOvb77sRsuPj51BSB4Y0Ox3ms=; b=MrC1Xd8knyuIfPgh9kvtzRljgaHcsG5LIkScVgMNy1CboTZVqQycd5ZwAHyCFuQEgGVene 4YssqIf9qGPRvFp01itkSMd3+dZF+YaSwWmj8Ozr02Ad4GoH0r9WubD3SuX5S0MxKLm7xn NzX1H22OQIsfG3zSmXJlMOHMrYt9mBM= X-MC-Unique: aHmtByWoMfq0mi0fzXyKMA-1 X-Mimecast-MFC-AGG-ID: aHmtByWoMfq0mi0fzXyKMA_1781464141 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464141; x=1782068941; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=yknmJ7/BrwD4b2kAfEcOvb77sRsuPj51BSB4Y0Ox3ms=; b=fjdQ8RaSDqcZ6l+nzDmhobKod05hqHgVAKU6jS1m6T2ahScfOr55+8PxnZmQtwZ5Le 8MUSSwgHFX/w4UqxqskSP3/952e9/ZLUYEt9mcJZumQY37SOG7WbNN/mDpEchfvgJiY0 XGP42k3zM4BWkCkwZVBzN64xHyN15h4s0D+IQi0UCHN/o4KrT2VpQ+KBKiqxxrzWerxa 12zIKgL0IBrmJGtg3W1dmVgisBr5Q20/ZBZ8yEvKHy9fx//lMUufxenUvNAI3yK5HMC0 am7rNwFbgIHm/Qx8QxDV5IMAan4c3wGTG/A8lUsMvJOUmxwcMaOVBlEUroF5FGck/jxn m/pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464141; x=1782068941; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=yknmJ7/BrwD4b2kAfEcOvb77sRsuPj51BSB4Y0Ox3ms=; b=fbUfqndZheW9euEgM3IBplqpFyhg3UymivRS2cO431epwia9WjZv+0jRrabJbEP/Od GVMHqwnDGBP/pHKdpyViVJplQKxnqy4UYzpz0dghaIG/PtMWGNB/UcPgCZwHTOX/Nc3B ZJjb3hRMrkYM91czCOn7cK7VQ8C6b/iT67337iU/QoKm4tgFP3z7UoDBtwCc4mw8EN2F +u6PTWyF7U1VPbenNeUwCcVPfdHZeVr+0Z8JEqVuwCzlzv3gL7MMvAO3OEPZGkhzVKgt hPWwo4BgUah4a0NGsJ+frObMj+zFJBE75BdXcgHKo1Fb9eQxGBPaL7BcGV7xL+EWH5R0 7M4Q== X-Gm-Message-State: AOJu0YxFfw2dEXUkYHdyDCQG5SM8AzPoY2e+g4XX3YTPNFRxppJo5GG0 jpGM8tzTEJAE+h2uAUou7arQTqOjYZOFSXauu+aiBo9iI5XfFvm0vrqNaNCRieo8iC7xnCn7ub5 mE9fv+R/pVgFCsnJFWHZHjBRx2L/XHQh0i/oSrGoSyaig8kZr/QiUgB6F7SG/aINNZnJ6NGTdXn fZPFl4OjGzusZ/ROUu3VfNvVbYDADheWtuUg== X-Gm-Gg: Acq92OEaRBohPQr7NJahGL3cB+iYJuVHAFTbwByorlOTuK4/jtr26b/aneiMKDVkabd FwRxYnASJn95QhAv092upCfFN11FEpdR6DBuUPwy9aP23syVhLLz9JY4JpxxcWmEOLmgNAXsm3t znD4YNWiC2JTgSEpSJfqS9W3TMTtcfjRp2EfZMcJUY5lLtDjBKS+kWkAtEFg2n9ihkyRsFolIE/ 1kuyACxQIp03RyxlrBOOzp2b4vOlU5RZwmz2cxVANrESKutudS7hg1UowPrBkjN3n+8HV5QCjnl ss+nmFH3SanzhlpRC2/RzLIfoqjkrhMlx4QTDnoKhWa9Fny/MfrVc0VxBSXZ2r1sTF1JaB8g1O5 JSBjGLnJiAAtrg6448mV7ZzjJZCATUaHkzPSmy/6TJO8= X-Received: by 2002:a05:600c:154b:b0:490:d38c:7836 with SMTP id 5b1f17b1804b1-4922005e579mr99902475e9.3.1781464141167; Sun, 14 Jun 2026 12:09:01 -0700 (PDT) X-Received: by 2002:a05:600c:154b:b0:490:d38c:7836 with SMTP id 5b1f17b1804b1-4922005e579mr99902105e9.3.1781464140639; Sun, 14 Jun 2026 12:09:00 -0700 (PDT) Date: Sun, 14 Jun 2026 15:08:58 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Eugenio =?utf-8?B?UMOpcmV6?= , Jason Wang , Stefano Garzarella Subject: [PULL 077/106] vhost: add in_order feature to shadow virtqueue Message-ID: <485c9e69ef6e9030ac368745886f07dfb56602a6.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464422053158500 From: Eugenio P=C3=A9rez Some vdpa devices benefit from the in order feature. Add support to SVQ so QEMU can migrate these. Signed-off-by: Eugenio P=C3=A9rez Acked-by: Jason Wang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304173535.2702587-7-eperezma@redhat.com> --- hw/virtio/vhost-shadow-virtqueue.c | 137 +++++++++++++++++++++++++++-- hw/virtio/vhost-shadow-virtqueue.h | 36 ++++++-- 2 files changed, 160 insertions(+), 13 deletions(-) diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-vi= rtqueue.c index 2d8fc82cc0..60212fcd7b 100644 --- a/hw/virtio/vhost-shadow-virtqueue.c +++ b/hw/virtio/vhost-shadow-virtqueue.c @@ -12,11 +12,14 @@ =20 #include "qemu/error-report.h" #include "qapi/error.h" +#include "qemu/iov.h" #include "qemu/main-loop.h" #include "qemu/log.h" #include "qemu/memalign.h" #include "linux-headers/linux/vhost.h" =20 +#define VIRTIO_RING_NOT_IN_BATCH UINT16_MAX + /** * Validate the transport device features that both guests can use with th= e SVQ * and SVQs can use with the device. @@ -150,7 +153,33 @@ static bool vhost_svq_translate_addr(const VhostShadow= Virtqueue *svq, static uint16_t vhost_svq_next_desc(const VhostShadowVirtqueue *svq, uint16_t id) { - return svq->desc_state[id].next; + if (virtio_vdev_has_feature(svq->vdev, VIRTIO_F_IN_ORDER)) { + return (id =3D=3D svq->vring.num) ? 0 : ++id; + } else { + return svq->desc_state[id].next; + } +} + +/** + * Updates the SVQ free_head member after adding them to the SVQ avail rin= g. + * The new free_head is the next descriptor that SVQ will make available by + * forwarding a new guest descriptor. + * + * @svq Shadow Virtqueue + * @num Number of descriptors added + * @id ID of the last descriptor added to the SVQ avail ring. + */ +static void vhost_svq_update_free_head(VhostShadowVirtqueue *svq, + size_t num, uint16_t id) +{ + if (virtio_vdev_has_feature(svq->vdev, VIRTIO_F_IN_ORDER)) { + svq->free_head +=3D num; + if (svq->free_head >=3D svq->vring.num) { + svq->free_head -=3D svq->vring.num; + } + } else { + svq->free_head =3D vhost_svq_next_desc(svq, id); + } } =20 /** @@ -202,7 +231,7 @@ static bool vhost_svq_vring_write_descs(VhostShadowVirt= queue *svq, hwaddr *sg, i =3D next; } =20 - svq->free_head =3D vhost_svq_next_desc(svq, last); + vhost_svq_update_free_head(svq, num, last); return true; } =20 @@ -306,6 +335,9 @@ int vhost_svq_add(VhostShadowVirtqueue *svq, const stru= ct iovec *out_sg, svq->num_free -=3D ndescs; svq->desc_state[qemu_head].elem =3D elem; svq->desc_state[qemu_head].ndescs =3D ndescs; + if (virtio_vdev_has_feature(svq->vdev, VIRTIO_F_IN_ORDER)) { + svq->desc_state[qemu_head].in_bytes =3D iov_size(in_sg, in_num); + } vhost_svq_kick(svq); return 0; } @@ -401,6 +433,12 @@ static void vhost_handle_guest_kick_notifier(EventNoti= fier *n) static bool vhost_svq_more_used(VhostShadowVirtqueue *svq) { uint16_t *used_idx =3D &svq->vring.used->idx; + + if (virtio_vdev_has_feature(svq->vdev, VIRTIO_F_IN_ORDER) && + svq->batch_last.id !=3D VIRTIO_RING_NOT_IN_BATCH) { + return true; + } + if (svq->last_used_idx !=3D svq->shadow_used_idx) { return true; } @@ -463,6 +501,47 @@ static uint16_t vhost_svq_get_last_used_split(VhostSha= dowVirtqueue *svq, return le32_to_cpu(used->ring[last_used].id); } =20 +/* + * Gets the next buffer id and moves forward the used idx, so the next time + * SVQ calls this function will get the next one. IN_ORDER version + * + * @svq: Shadow VirtQueue + * @len: Consumed length by the device. + * + * Return the next descriptor consumed by the device. + */ +static int32_t vhost_svq_get_last_used_split_in_order( + VhostShadowVirtqueue *svq, + uint32_t *len) +{ + unsigned num =3D svq->vring.num; + const vring_used_t *used =3D svq->vring.used; + uint16_t last_used =3D svq->last_used & (num - 1); + uint16_t last_used_idx =3D svq->last_used_idx & (num - 1); + + if (svq->batch_last.id =3D=3D VIRTIO_RING_NOT_IN_BATCH) { + svq->batch_last.id =3D le32_to_cpu(used->ring[last_used_idx].id); + svq->batch_last.len =3D le32_to_cpu(used->ring[last_used_idx].len); + } + + if (unlikely(last_used >=3D num)) { + qemu_log_mask(LOG_GUEST_ERROR, "Device %s says index %u is used", + svq->vdev->name, last_used); + return -1; + } + + if (svq->batch_last.id =3D=3D last_used) { + svq->batch_last.id =3D VIRTIO_RING_NOT_IN_BATCH; + *len =3D svq->batch_last.len; + } else { + *len =3D svq->desc_state[last_used].in_bytes; + } + + svq->last_used +=3D svq->desc_state[last_used].ndescs; + svq->last_used_idx++; + return last_used; +} + static uint16_t vhost_svq_last_desc_of_chain(const VhostShadowVirtqueue *s= vq, uint16_t num, uint16_t i) { @@ -474,8 +553,8 @@ static uint16_t vhost_svq_last_desc_of_chain(const Vhos= tShadowVirtqueue *svq, } =20 G_GNUC_WARN_UNUSED_RESULT -static VirtQueueElement *vhost_svq_detach_buf(VhostShadowVirtqueue *svq, - uint16_t id) +static VirtQueueElement *vhost_svq_detach_buf_split(VhostShadowVirtqueue *= svq, + uint16_t id) { uint16_t num =3D svq->desc_state[id].ndescs; uint16_t last_used_chain =3D vhost_svq_last_desc_of_chain(svq, num, id= ); @@ -486,6 +565,33 @@ static VirtQueueElement *vhost_svq_detach_buf(VhostSha= dowVirtqueue *svq, return g_steal_pointer(&svq->desc_state[id].elem); } =20 +G_GNUC_WARN_UNUSED_RESULT +static VirtQueueElement *vhost_svq_detach_buf_split_in_order( + VhostShadowVirtqueue *svq, + uint16_t id) +{ + return g_steal_pointer(&svq->desc_state[id].elem); +} + +/* + * Return the descriptor id (and the chain of ids) to the free list + * + * @svq: Shadow Virtqueue + * @id: Id of the buffer to return. + * + * Return the element associated to the buffer if any. + */ +G_GNUC_WARN_UNUSED_RESULT +static VirtQueueElement *vhost_svq_detach_buf(VhostShadowVirtqueue *svq, + uint16_t id) +{ + if (virtio_vdev_has_feature(svq->vdev, VIRTIO_F_IN_ORDER)) { + return vhost_svq_detach_buf_split_in_order(svq, id); + } else { + return vhost_svq_detach_buf_split(svq, id); + } +} + G_GNUC_WARN_UNUSED_RESULT static VirtQueueElement *vhost_svq_get_buf(VhostShadowVirtqueue *svq, uint32_t *len) @@ -498,7 +604,18 @@ static VirtQueueElement *vhost_svq_get_buf(VhostShadow= Virtqueue *svq, =20 /* Only get used array entries after they have been exposed by dev */ smp_rmb(); - last_used =3D vhost_svq_get_last_used_split(svq, len); + + if (virtio_vdev_has_feature(svq->vdev, VIRTIO_F_IN_ORDER)) { + int32_t r; + r =3D vhost_svq_get_last_used_split_in_order(svq, len); + if (r < 0) { + return NULL; + } + + last_used =3D r; + } else { + last_used =3D vhost_svq_get_last_used_split(svq, len); + } =20 if (unlikely(last_used >=3D svq->vring.num)) { qemu_log_mask(LOG_GUEST_ERROR, "Device %s says index %u is used", @@ -726,6 +843,8 @@ void vhost_svq_start(VhostShadowVirtqueue *svq, VirtIOD= evice *vdev, svq->next_guest_avail_elem =3D NULL; svq->shadow_avail_idx =3D 0; svq->shadow_used_idx =3D 0; + memset(&svq->batch_last, 0, sizeof(svq->batch_last)); + svq->last_used =3D 0; svq->last_used_idx =3D 0; svq->vdev =3D vdev; svq->vq =3D vq; @@ -742,8 +861,12 @@ void vhost_svq_start(VhostShadowVirtqueue *svq, VirtIO= Device *vdev, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYM= OUS, -1, 0); svq->desc_state =3D g_new0(SVQDescState, svq->vring.num); - for (unsigned i =3D 0; i < svq->vring.num - 1; i++) { - svq->desc_state[i].next =3D i + 1; + if (virtio_vdev_has_feature(svq->vdev, VIRTIO_F_IN_ORDER)) { + svq->batch_last.id =3D VIRTIO_RING_NOT_IN_BATCH; + } else { + for (unsigned i =3D 0; i < svq->vring.num - 1; i++) { + svq->desc_state[i].next =3D i + 1; + } } } =20 diff --git a/hw/virtio/vhost-shadow-virtqueue.h b/hw/virtio/vhost-shadow-vi= rtqueue.h index f52c33e650..ec16a1e838 100644 --- a/hw/virtio/vhost-shadow-virtqueue.h +++ b/hw/virtio/vhost-shadow-virtqueue.h @@ -24,11 +24,19 @@ typedef struct SVQDescState { */ unsigned int ndescs; =20 - /* - * Backup next field for each descriptor so we can recover securely, n= ot - * needing to trust the device access. - */ - uint16_t next; + union { + /* + * Total length of the available buffer that is writable by the de= vice. + * Only used in packed vq. + */ + uint32_t in_bytes; + + /* + * Backup next field for each descriptor so we can recover securel= y, not + * needing to trust the device access. Only used in split vq. + */ + uint16_t next; + }; } SVQDescState; =20 typedef struct VhostShadowVirtqueue VhostShadowVirtqueue; @@ -99,9 +107,25 @@ typedef struct VhostShadowVirtqueue { /* Next head to expose to the device */ uint16_t shadow_avail_idx; =20 - /* Next free descriptor */ + /* + * Next free descriptor. + * + * Without IN_ORDER free_head is used as a linked list head, and + * desc_next[id] is the next element. + * With IN_ORDER free_head is the next available buffer index. + */ uint16_t free_head; =20 + /* + * Last used element of the processing batch of used descriptors if + * IN_ORDER. + * If SVQ is not processing a batch of descriptors id is set to UINT_M= AX. + */ + vring_used_elem_t batch_last; + + /* Last used id if IN_ORDER and split vq */ + uint16_t last_used; + /* Last seen used idx */ uint16_t shadow_used_idx; =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464539; cv=none; d=zohomail.com; s=zohoarc; b=GAxIb4URrc+WJdIm7ZvYl36bUwyChVI1wPnkQvairPQT51Tq7WMckyG05t0GjtqR51McLn/wWUF0PWdrhcpCKh5gB4rLCe2z6sV4BHOOWdPyGAgpipyDhOpbmHINtGyObiXBoIlZUg7Nep5aKpfUqByW86ihtXblU2TwBJ5EiGg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464539; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JRsUC3cDyPKsm/U7J25nkVTJSXN6mbxsHqYdeSrlC54=; b=lUqioWWrpmo4S251dBzEX9kwzSWjDBWPOJbTTQR6+vEArdBTjT5XRMTgTx5zepy609VKYIfDJrqrn5UFu9mX6djVUYVtRGmferK9f6u6s0I5LJqgD1Pp+ld+3sy7+pdT3uc7V0c+7sr5QIFsgFThcGTEvsj6dB9J94nVtrrbO04= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146453917211.976198829083387; Sun, 14 Jun 2026 12:15:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDL-00083j-Sq; Sun, 14 Jun 2026 15:09:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCi-0007Df-3o for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:09 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCg-0002OY-Nn for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:07 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-347-D-PwjmRTPU662KLFcisw6g-1; Sun, 14 Jun 2026 15:09:04 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-45efa7755faso1005593f8f.1 for ; Sun, 14 Jun 2026 12:09:04 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492201fad25sm193218865e9.0.2026.06.14.12.09.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464146; 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=JRsUC3cDyPKsm/U7J25nkVTJSXN6mbxsHqYdeSrlC54=; b=OcE1TvnokQ43ndTvmgBQviXEwltIpM2cGteWAIZqgzzg8V5enoRudRi40c4M0N4gtgD784 aad5rfMzxtNIQeNHDwwrOM5L5EkoESiJDUHrBLD+ACGXSKpc0RHit3y6wlhr8EWMc+1cEq 0E+bt+W9zgzeXgnuRpNQB/P6SLxfvrw= X-MC-Unique: D-PwjmRTPU662KLFcisw6g-1 X-Mimecast-MFC-AGG-ID: D-PwjmRTPU662KLFcisw6g_1781464143 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464143; x=1782068943; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=JRsUC3cDyPKsm/U7J25nkVTJSXN6mbxsHqYdeSrlC54=; b=NpVm+iS6ZKTK3cxKWwf8kb3Qv2kshMXNNZWh5cEMkkrU8Q+RqBHg0OULhZRX0XF+Y2 7sMIDVl2fLZdrVs7sQD1h45N6aTicRjJSjOFxQC0hjlNqtuVZ/aPlRfzgFB73x1o2Wvn A04hzLXwBs/QchJfZRX9o+G9fNxgB/UO03x1njoyi20srm6r5rOzaImtUMmPIVx7lnTR LDIM6QJ2nLLP8ktAwIEIrc3hFfwA52wj+6WsG3jjpaWUktoIeex6R5NYz1Ybs0CTfzne yblcu56/4Y88VQ4oD8oicVSPUL8Svc7EAp9nM+4HsIRxozHnarzgc3LuXr9YGQaiWB4y IiTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464143; x=1782068943; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JRsUC3cDyPKsm/U7J25nkVTJSXN6mbxsHqYdeSrlC54=; b=Xh24KK8k6dgdbZ/fJMLgOfEUwY8C2zagJIkCX6m612ofju/awbWkolkpHHgEWTFAbf AFWOJBGh40kyQuVkoTYUW63Pg5p9Xp3Bg4frZ+N1yhVfCOnwcv/mSUBfePs1p7orJFpY ixOQQiOmQ8/WQwWIWQYOrUILre+OmCEmyVOk2HsNAyWFsEdHJh6n6OEWcOUtc21rzzxY 7VU0nyGtDJaVsQ05o2VQo/ndWa1Y/nyCV26M86EPH5ZaqUjCwhip5NNWTJaSnwPw8Y2Y 98jcTx2i7r1AnHemLlJje2GT0GT7Rjzl9rNbsUYoC89OPhBI00BtBtrhEksTftN+1j2d Mqrg== X-Gm-Message-State: AOJu0Yzr3rD1DWzXhO9odAi7vIZ30xOZj0uDpqR+QjWonTKHDOjZceNb ah3DX4Ync8JT2aqIckNODQWNH8kanElOqudXpHxAm01XixX//hFvn5j5U6anPKN2sKn7Y7foCBc wItXquWaV95PUPrF/gI1ejgXgNpJcOfh7z6c1obK9avFG9+FgnfkI0Jq5z8hUe6BsJWCinKyLEo dIJgtPpY59EImKvVN72Ky8iULdruU8wsfFAg== X-Gm-Gg: Acq92OHnNpXBs+Eu3ltGrVMRRmLpjyzJ+XEEH/o3YLZJpdgmIKZMgd3CemwR4su4H2+ qpP3dTHxowRRMehCcCSxgMo5ZJ+J7pd7qJmWDt0uNNtSkIdNaJ0K8lRqI5u3zLjaOT/ItrPJb2c XuhaYqpJcjddoFoVu8xlsjuL3rvUbrVqAdpeTk9TRQMUK4DuQqZurUWfJU+qZ0L8dSxt17HpDri mgXdpgkFBJP8hxHFEE3I9yGTWTV+a2/bi7g7Enen2l84FVVYZ1VN02KZA0OegJJLqhaipZENqBJ E5w8onIH3jKVxgsb/f6T7Rdow+7HJqdENpow9ucRttufC1Nc5zBxc5V5z2vOYKj117Yph4f089w dpGkHesNLRCXvhqRXDXhBFNTHPnwDXLaJ6CyyVapWioM= X-Received: by 2002:a7b:c041:0:b0:490:50eb:b777 with SMTP id 5b1f17b1804b1-492200514f3mr68037165e9.5.1781464143314; Sun, 14 Jun 2026 12:09:03 -0700 (PDT) X-Received: by 2002:a7b:c041:0:b0:490:50eb:b777 with SMTP id 5b1f17b1804b1-492200514f3mr68036935e9.5.1781464142797; Sun, 14 Jun 2026 12:09:02 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:00 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Eugenio =?utf-8?B?UMOpcmV6?= , Jason Wang , Stefano Garzarella Subject: [PULL 078/106] vhost: accept in order feature flag Message-ID: <942a1a32300859576f2917b920c25bb949faa1e8.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464540335158501 From: Eugenio P=C3=A9rez Let's accept the feature flag with all the infrastructure to process it in place. Signed-off-by: Eugenio P=C3=A9rez Acked-by: Jason Wang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304173535.2702587-8-eperezma@redhat.com> --- hw/virtio/vhost-shadow-virtqueue.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-vi= rtqueue.c index 60212fcd7b..bcb7f2ffc7 100644 --- a/hw/virtio/vhost-shadow-virtqueue.c +++ b/hw/virtio/vhost-shadow-virtqueue.c @@ -38,6 +38,7 @@ bool vhost_svq_valid_features(uint64_t features, Error **= errp) case VIRTIO_F_ANY_LAYOUT: case VIRTIO_RING_F_EVENT_IDX: case VIRTIO_RING_F_INDIRECT_DESC: + case VIRTIO_F_IN_ORDER: continue; =20 case VIRTIO_F_ACCESS_PLATFORM: --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464475; cv=none; d=zohomail.com; s=zohoarc; b=cWMkM6/TO0M6ND4QyYhpkYfiKiUG1lySmm1wwLvhJORMQ8cxMvc2T9hu3ijRdf7ZQYrTno1uX2p/flgiuK4brA1wHtf63X9XuzIi181LIfGy2A7TbfJDZD3fgb6PmG/0quc6FI0LS+rMmsTPTWYUsBsezaTFsxYbcqi3rMSv0iQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464475; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FczVbIScfdeHNZS44E/9RwCeDdg9P6d3ILixOOMivMk=; b=B0colKQVGQj41g6bzWUvSrGkfkKuO/L+YM+gjnjU+1kqY+uOOiru+M0v+8bld2j3/x6kvn+oxe/M0T8jx4x8PMCky/VMm2dNjhNL92MSfnPfhml2zkQVOWrJdd6quv65C7KdLJE4IpWVYdffES9Pr4yJ0VUD16TZVR4c5VZaJRc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464475142839.6984325630848; Sun, 14 Jun 2026 12:14:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDK-0007rw-UK; Sun, 14 Jun 2026 15:09:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCk-0007EF-Jn for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:11 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCi-0002Oy-SS for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:10 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-595-dectmnEZMB2ocKuTyTA63A-1; Sun, 14 Jun 2026 15:09:06 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-46011aa5000so1115200f8f.3 for ; Sun, 14 Jun 2026 12:09:06 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2c4240sm25273555f8f.27.2026.06.14.12.09.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464148; 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: in-reply-to:in-reply-to:references:references; bh=FczVbIScfdeHNZS44E/9RwCeDdg9P6d3ILixOOMivMk=; b=ZaYgNzcxbqTfTKEQf+kXVSeVkJOzDixTLzGuPAydkfu2mJYbD3/YVQc/VPWT6ELPH60x/q M6EEm1zm4eHhrNblPr6VtY8O3I1fh72AuVpvUitZKpeamsltJH9pZUKBneXlDLQWo8Nhiq T1aSNL96dGD4mCROUUSMpO2m2epAgBg= X-MC-Unique: dectmnEZMB2ocKuTyTA63A-1 X-Mimecast-MFC-AGG-ID: dectmnEZMB2ocKuTyTA63A_1781464146 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464146; x=1782068946; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=FczVbIScfdeHNZS44E/9RwCeDdg9P6d3ILixOOMivMk=; b=SyKhsYYexLTsujGAeEXpxh4Dy7ULVi8d54GWg4yC9KBRBqpYQ6/o7CHU9DhRumVCni bnIkU03uIKwlAeMlYw9qhVk1yzFXGUe2oq394Cxdvje3aZPQ64p62IRVeJhTX363XJ7j 36GOjdp0BCNWdN/MdchXCNNKrXZe1q0XIU6gvN8rckfJBUROLJ2XLgpQSdh2i0aYPxZG 1PXed+UE4LKRwEYjJnxsvl+nsi4KTQtofUobTZyReiPkEIRHmsnIo4e6hufc7jwRr4q/ 2jaVzrF4delEfkBj3ly18zxzjVeXVMzdE81ywP5er9ujPZh+bCyIYqDclYltYfIM/Q1U LndA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464146; x=1782068946; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FczVbIScfdeHNZS44E/9RwCeDdg9P6d3ILixOOMivMk=; b=jUvFz4e7OScgIzfuuOUALcHX2whubn+Ny/EENvbD3cBGJGiWa6xDxI3I53AOhlKA5P xfnVfYFqkS6WqIl0H3aMHdmRu37vXuFBRVLzHK5+L3npEEQsm+iaIMUA6BiMKazkXQfX 4opFTexBOhJowFg7JAJPpu4ZxbhoVsnkr3ILv+koWu9KCCwAnjNXtVesS9d4VIORaD64 ldbS7Kk0m4g7o8NOJa4BUNnyOiTmhJK7ZVj4qFVNim04ESrNG7bfMnAOeZZ/NcC1yuXE vL4MH/MtyRqucU9/t4RxslfT3zoF5wHx4NS98iRWRo3QX85pGqiZD8WQmP6e1qah1E3e S1uw== X-Gm-Message-State: AOJu0YyozNFbYM6Y1YGv7I+DZwQz//e/vhpicOy+mp5H6PGA6XJL9aJI dLZFKHm+m98DxRr84alpStFHWXGe2ym9OPW2/da8u0H/6qcZRXwKN1LtWpirJ4piFugJYNxiNjE op99fucyuzJVoPuxYgSMbcUWwJQ3cmQy/B9rVO/WHgE4bsQcwB8Qx73TWZIfe07v1s/Q9tceLkq u63T6kYt7qNzpRxrH5wIWT3vQV8uAS/7Tpzw== X-Gm-Gg: Acq92OEtT1xZOhrWWzfp6pxfk71HSPO3m2spYQiosOywTxS547vTZYAIce8eqN3TMk2 /X4X0r6RPF5F2JiLCrfNANcNNUQfnTResiDbY+V04+/yeLBh5uSBvwm8zbcD2xQTTmtk4Y9eCrg SAxH/wY2pqpGB8RLAMU3LSk5966+MLP7FpGjQ/N3hzBQ+d/InVzInxTOcvMNrmXNhF1hO1OyZGD Ve9QZqiJRUAEyh81+Irueptl6Dj0WpiMN7ZWgyFzsQAu21VTQUXMIrRhzsSQS4cXIOVT0i4YYB2 JDSIgkfHJi9k8tH95rp+ddZI18yoOaoD7QD9Y4eIWBBOjU4KlfKSxRzNKhq++20MRc1x55QczvW +FJF//xKha7sry3QbxCciZGGt/tPRa5uHeXNXaJOTZQQ= X-Received: by 2002:a05:6000:184b:b0:43d:77a8:3baf with SMTP id ffacd0b85a97d-46074b84e9emr10021081f8f.32.1781464145599; Sun, 14 Jun 2026 12:09:05 -0700 (PDT) X-Received: by 2002:a05:6000:184b:b0:43d:77a8:3baf with SMTP id ffacd0b85a97d-46074b84e9emr10021031f8f.32.1781464144999; Sun, 14 Jun 2026 12:09:04 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:02 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Sairaj Kodilkar , Vasant Hegde , Alejandro Jimenez , Paolo Bonzini , Richard Henderson Subject: [PULL 079/106] amd_iommu: Use switch case to determine mmio register name Message-ID: <25e92816c8d1e4c4f35a1c076d9d5f3a90e17a93.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464476156158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Sairaj Kodilkar This makes it easier to add new MMIO registers for tracing and removes the unnecessary complexity introduced by amdvi_mmio_(low/high) array. Signed-off-by: Sairaj Kodilkar Reviewed-by: Vasant Hegde Reviewed-by: Alejandro Jimenez Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260302115130.5903-2-sarunkod@amd.com> --- hw/i386/amd_iommu.c | 74 ++++++++++++++++----------------------------- hw/i386/amd_iommu.h | 4 --- 2 files changed, 26 insertions(+), 52 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 99b05b2ab6..1c44848aa9 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -35,29 +35,6 @@ #include "kvm/kvm_i386.h" #include "qemu/iova-tree.h" =20 -/* used AMD-Vi MMIO registers */ -const char *amdvi_mmio_low[] =3D { - "AMDVI_MMIO_DEVTAB_BASE", - "AMDVI_MMIO_CMDBUF_BASE", - "AMDVI_MMIO_EVTLOG_BASE", - "AMDVI_MMIO_CONTROL", - "AMDVI_MMIO_EXCL_BASE", - "AMDVI_MMIO_EXCL_LIMIT", - "AMDVI_MMIO_EXT_FEATURES", - "AMDVI_MMIO_PPR_BASE", - "UNHANDLED" -}; -const char *amdvi_mmio_high[] =3D { - "AMDVI_MMIO_COMMAND_HEAD", - "AMDVI_MMIO_COMMAND_TAIL", - "AMDVI_MMIO_EVTLOG_HEAD", - "AMDVI_MMIO_EVTLOG_TAIL", - "AMDVI_MMIO_STATUS", - "AMDVI_MMIO_PPR_HEAD", - "AMDVI_MMIO_PPR_TAIL", - "UNHANDLED" -}; - struct AMDVIAddressSpace { PCIBus *bus; /* PCIBus (for bus number) */ uint8_t devfn; /* device function */ @@ -1540,31 +1517,31 @@ static void amdvi_cmdbuf_run(AMDVIState *s) } } =20 -static inline uint8_t amdvi_mmio_get_index(hwaddr addr) +static inline +const char *amdvi_mmio_get_name(hwaddr addr) { - uint8_t index =3D (addr & ~0x2000) / 8; - - if ((addr & 0x2000)) { - /* high table */ - index =3D index >=3D AMDVI_MMIO_REGS_HIGH ? AMDVI_MMIO_REGS_HIGH := index; - } else { - index =3D index >=3D AMDVI_MMIO_REGS_LOW ? AMDVI_MMIO_REGS_LOW : i= ndex; + /* Return MMIO names as string literals */ + switch (addr) { +#define MMIO_REG_TO_STRING(mmio_reg) case mmio_reg: return #mmio_reg + MMIO_REG_TO_STRING(AMDVI_MMIO_DEVICE_TABLE); + MMIO_REG_TO_STRING(AMDVI_MMIO_COMMAND_BASE); + MMIO_REG_TO_STRING(AMDVI_MMIO_EVENT_BASE); + MMIO_REG_TO_STRING(AMDVI_MMIO_CONTROL); + MMIO_REG_TO_STRING(AMDVI_MMIO_EXCL_BASE); + MMIO_REG_TO_STRING(AMDVI_MMIO_EXCL_LIMIT); + MMIO_REG_TO_STRING(AMDVI_MMIO_EXT_FEATURES); + MMIO_REG_TO_STRING(AMDVI_MMIO_COMMAND_HEAD); + MMIO_REG_TO_STRING(AMDVI_MMIO_COMMAND_TAIL); + MMIO_REG_TO_STRING(AMDVI_MMIO_EVENT_HEAD); + MMIO_REG_TO_STRING(AMDVI_MMIO_EVENT_TAIL); + MMIO_REG_TO_STRING(AMDVI_MMIO_STATUS); + MMIO_REG_TO_STRING(AMDVI_MMIO_PPR_BASE); + MMIO_REG_TO_STRING(AMDVI_MMIO_PPR_HEAD); + MMIO_REG_TO_STRING(AMDVI_MMIO_PPR_TAIL); +#undef MMIO_REG_TO_STRING + default: + return "UNHANDLED"; } - - return index; -} - -static void amdvi_mmio_trace_read(hwaddr addr, unsigned size) -{ - uint8_t index =3D amdvi_mmio_get_index(addr); - trace_amdvi_mmio_read(amdvi_mmio_low[index], addr, size, addr & ~0x07); -} - -static void amdvi_mmio_trace_write(hwaddr addr, unsigned size, uint64_t va= l) -{ - uint8_t index =3D amdvi_mmio_get_index(addr); - trace_amdvi_mmio_write(amdvi_mmio_low[index], addr, size, val, - addr & ~0x07); } =20 static uint64_t amdvi_mmio_read(void *opaque, hwaddr addr, unsigned size) @@ -1584,7 +1561,7 @@ static uint64_t amdvi_mmio_read(void *opaque, hwaddr = addr, unsigned size) } else if (size =3D=3D 8) { val =3D amdvi_readq(s, addr); } - amdvi_mmio_trace_read(addr, size); + trace_amdvi_mmio_read(amdvi_mmio_get_name(addr), addr, size, addr & ~0= x07); =20 return val; } @@ -1742,7 +1719,8 @@ static void amdvi_mmio_write(void *opaque, hwaddr add= r, uint64_t val, return; } =20 - amdvi_mmio_trace_write(addr, size, val); + trace_amdvi_mmio_write(amdvi_mmio_get_name(addr), addr, size, val, off= set); + switch (addr & ~0x07) { case AMDVI_MMIO_CONTROL: amdvi_mmio_reg_write(s, size, val, addr); diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index 7af3c742b7..17b7ba899f 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -45,10 +45,6 @@ #define AMDVI_CAPAB_FLAG_IOTLBSUP (1 << 24) #define AMDVI_CAPAB_INIT_TYPE (3 << 16) =20 -/* No. of used MMIO registers */ -#define AMDVI_MMIO_REGS_HIGH 7 -#define AMDVI_MMIO_REGS_LOW 8 - /* MMIO registers */ #define AMDVI_MMIO_DEVICE_TABLE 0x0000 #define AMDVI_MMIO_COMMAND_BASE 0x0008 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464530; cv=none; d=zohomail.com; s=zohoarc; b=m7Sow3gtQ5S7kU7oe1CIX/Ubp3dVjdJnsutgWjyIk0RWX0PCuU4XcDPb1IBT4FWIVac9CYPckbjBVS8tyMn1tBjVD2nPkOLTNQc+Az0X8yVx5M1u1wX3yXjdGwZ/0cTuxrfHhgghsB8levafZVieRZSw4mfPGtSJx00c8MrW37M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464530; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UJX+Nq7r7a7nzrqVQPKDrYeY3XcVLdwNa+3KVMcJknc=; b=Ncy/AN0h56STXGv27XKaQdoPN1CQRY9GP1QdWr6+sGwJz0nBud3Tn6iyG6wLrlT1zzzBRiiNwSzBW6mUD58/YSB1d4oa8JUU5hlZuH8twDAws1UUb53klOarLcn1auM+U62pGEo7bakP2K3ppgmVOGkBa2qLzFo0pPbnUD/las4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146453064668.1614914745179; Sun, 14 Jun 2026 12:15:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDK-0007mI-9I; Sun, 14 Jun 2026 15:09:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCn-0007L0-RT for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCl-0002S7-4j for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:12 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-614-9ZrzfdtCNzCt650kZMDodQ-1; Sun, 14 Jun 2026 15:09:09 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-45eebc943bfso2062404f8f.0 for ; Sun, 14 Jun 2026 12:09:09 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220324211sm195363575e9.6.2026.06.14.12.09.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464150; 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: in-reply-to:in-reply-to:references:references; bh=UJX+Nq7r7a7nzrqVQPKDrYeY3XcVLdwNa+3KVMcJknc=; b=T9HQqEwrj0F1A5clUC+5lsAoy2RSjcSa3xE7dRydp8MyUUmdXXNyguTZzu3KVDQve/h3HV PJhGdYCQnfnxyyH2YZGxNM4duaoPCU7FXJeR8pI0qdc0kON9tz4Zl37hF6NzpAyiQmeLVs CQyI7Z9fup+JAmP+Sun2xP+j94FiY5w= X-MC-Unique: 9ZrzfdtCNzCt650kZMDodQ-1 X-Mimecast-MFC-AGG-ID: 9ZrzfdtCNzCt650kZMDodQ_1781464148 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464148; x=1782068948; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=UJX+Nq7r7a7nzrqVQPKDrYeY3XcVLdwNa+3KVMcJknc=; b=RlgrA8MClFGr2shYIELEDK7Lo4jGsVPMRMiOHcaimKQ9bwEJ6NQmr/MfhYkSlaM1Lg /I0SRBom8zmCncWls0i9OYifysAEWz875Cg90thSQld6UC5GJBxng1ZNqGn8HYh1NUH6 miilijrNXMt0dAHlK9OnCOLc35EXE43ioRRY60dq0BB+p4uHhrsXCt/BlgO97afq6FlW e8QpackB+aQlgfHSAoOoC4ohVDFIWdAqqCt2LoYjKfgSxyFyeVJKLvBde4enkfGWmg4R ROhVf4JVRBH4PjX752VzATd10bfzncr5ghQDCZkAqv//lNP9qYJDGDjprXT7Ul3A0YSs iP7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464148; x=1782068948; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UJX+Nq7r7a7nzrqVQPKDrYeY3XcVLdwNa+3KVMcJknc=; b=JD+5wdzTvHB8eB8o3Z6dAu6wqbr1ppK5xat3rVbQ3i+N4M4XR5QXL7nxCn7wJXphWS wx4cQ2bB1buc2+FW+2EzKEEwIF8Za4nJdjK34tbWPPN4iJe7ryn+BCGQQkZ7FPGy4h4F A2rMZzpJdgHSottZi53tXXIs2wKUAn5q0xzeh7b7M5HR6+Jc0hccrh2LIlMXZRencaQf wmBSqATDauF5jMkhmblkALfxE79M+T0hpLfn2fXC8epjOFCyWibXTQp+1tl45Jizt6Gx oIqLN1bguWUX3pz3s1qj9om9lRXMIHcBYPfjsU/RlsrrtLOMPAOSdv4RVj2rwOKn+Cmy z73Q== X-Gm-Message-State: AOJu0Yz2ZQ3L76hwTuVoVjcF1U9jYDgVjzhu4xAQF8k+dapuIH0vWaGk bXVr089Muny8kzvZSNDekCc3zLCWLri84Ddav9gvw2M8px7rz39gtBCl3oCTzzU12Tf/7vdnoMU 7++cMr84vvaOl4ygb3mELdCJUrJ3yVyWl43/c1kDgevVGGF7+9YM5bmUGemoo4jSqWjcOdmR7q2 zKQVI2o/YT4ypRbLd51vz/OLULhGU+b0xSvQ== X-Gm-Gg: Acq92OGaHmR7N98rDfN7hM3ZT5h8jibidu+0nm/3v6q0QOBS2Hbmbmc16rJJeFg7Wdc 2Q/ciixd6WV8eu4zhJ4J1nCpIMUKJcCgn3nrbXf30EXi1fekRSD3aa/KomSqVS18ROmQm6Jn1U4 SezY+fskAv7RrcxuAmnuJeLuDlUwOwlGq5DT5FzUHgsNKe8UlyQhd+WMQ7RE7Y2s0WLi9S9Py5F 54BVxxz1FHaTCFs4tkDZ7Kev6Bc43z4ctcGeZOXtABgx01jViH9SFhKCnHRdPg9bHuCEqTECAxa F7tsqrh33LtXrTaldnHAZrPL1Hmejgym64MD3SZdILEq5z1NmBY8WTvq9HD7vNysH377CfGtXFc UpGzYPyocG9dsldjYu3l5ykJ07V0Di7TlWj9m0RyxYJ0= X-Received: by 2002:a05:600c:3145:b0:490:9dc3:3483 with SMTP id 5b1f17b1804b1-490ec480f88mr134826765e9.2.1781464147903; Sun, 14 Jun 2026 12:09:07 -0700 (PDT) X-Received: by 2002:a05:600c:3145:b0:490:9dc3:3483 with SMTP id 5b1f17b1804b1-490ec480f88mr134826405e9.2.1781464147270; Sun, 14 Jun 2026 12:09:07 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:05 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Sairaj Kodilkar , Vasant Hegde , Alejandro Jimenez , Paolo Bonzini , Richard Henderson Subject: [PULL 080/106] amd_iommu: Turn on XT support only when guest has enabled it Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464532344158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Sairaj Kodilkar Current code uses 32 bit destination ID irrespective of the fact that guest has enabled x2APIC support through control register[XTEn] and completely depends on command line parameter xtsup=3Don. This is not a correct hardware behaviour and can cause problems in the guest which has not enabled XT mode. Introduce new flag "xten", which is enabled when guest writes 1 to the control register bit 50 (XTEn). Also, add a new subsection in `VMStateDescription` for backward compatibility during vm migration. Signed-off-by: Sairaj Kodilkar Reviewed-by: Vasant Hegde Reviewed-by: Alejandro Jimenez Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260302115130.5903-3-sarunkod@amd.com> --- hw/i386/amd_iommu.c | 21 +++++++++++++++++++-- hw/i386/amd_iommu.h | 4 +++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 1c44848aa9..5947d3aecf 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -1579,6 +1579,8 @@ static void amdvi_handle_control_write(AMDVIState *s) s->cmdbuf_enabled =3D s->enabled && !!(control & AMDVI_MMIO_CONTROL_CMDBUFLEN); s->ga_enabled =3D !!(control & AMDVI_MMIO_CONTROL_GAEN); + s->xten =3D !!(control & AMDVI_MMIO_CONTROL_XTEN) && s->xtsup && + s->ga_enabled; =20 /* update the flags depending on the control register */ if (s->cmdbuf_enabled) { @@ -2054,7 +2056,7 @@ static int amdvi_int_remap_ga(AMDVIState *iommu, irq->vector =3D irte.hi.fields.vector; irq->dest_mode =3D irte.lo.fields_remap.dm; irq->redir_hint =3D irte.lo.fields_remap.rq_eoi; - if (iommu->xtsup) { + if (iommu->xten) { irq->dest =3D irte.lo.fields_remap.destination | (irte.hi.fields.destination_hi << 24); } else { @@ -2437,6 +2439,7 @@ static void amdvi_init(AMDVIState *s) s->mmio_enabled =3D false; s->enabled =3D false; s->cmdbuf_enabled =3D false; + s->xten =3D false; =20 /* reset MMIO */ memset(s->mmior, 0, AMDVI_MMIO_SIZE); @@ -2501,6 +2504,16 @@ static void amdvi_sysbus_reset(DeviceState *dev) amdvi_reset_address_translation_all(s); } =20 +static const VMStateDescription vmstate_xt =3D { + .name =3D "amd-iommu-xt", + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (VMStateField[]) { + VMSTATE_BOOL(xten, AMDVIState), + VMSTATE_END_OF_LIST() + } +}; + static const VMStateDescription vmstate_amdvi_sysbus_migratable =3D { .name =3D "amd-iommu", .version_id =3D 1, @@ -2545,7 +2558,11 @@ static const VMStateDescription vmstate_amdvi_sysbus= _migratable =3D { VMSTATE_UINT8_ARRAY(romask, AMDVIState, AMDVI_MMIO_SIZE), VMSTATE_UINT8_ARRAY(w1cmask, AMDVIState, AMDVI_MMIO_SIZE), VMSTATE_END_OF_LIST() - } + }, + .subsections =3D (const VMStateDescription *const []) { + &vmstate_xt, + NULL + } }; =20 static void amdvi_sysbus_realize(DeviceState *dev, Error **errp) diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index 17b7ba899f..300d91b34d 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -102,6 +102,7 @@ #define AMDVI_MMIO_CONTROL_COMWAITINTEN (1ULL << 4) #define AMDVI_MMIO_CONTROL_CMDBUFLEN (1ULL << 12) #define AMDVI_MMIO_CONTROL_GAEN (1ULL << 17) +#define AMDVI_MMIO_CONTROL_XTEN (1ULL << 50) =20 /* MMIO status register bits */ #define AMDVI_MMIO_STATUS_CMDBUF_RUN (1 << 4) @@ -413,7 +414,8 @@ struct AMDVIState { =20 /* Interrupt remapping */ bool ga_enabled; - bool xtsup; + bool xtsup; /* xtsup=3Don command line */ + bool xten; /* guest controlled, x2apic mode enabled */ =20 /* DMA address translation */ bool dma_remap; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464302; cv=none; d=zohomail.com; s=zohoarc; b=XBUFetQ0CUuRW+OyFSRu1ijvUGDz2KRw1u4At+nrfvuIxQj+vRT7LEePeth9bq+zxCa9gbarcqHkc+9AsmiNoScOlqe2Nz8YUkVRgM2fy1TXftvzNZivY915lPL5L+Z9rlezxw3UUanyw85G6zM5N5w+nxos9ZZRkAGVRxK/C9Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464302; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=a46sKVH32bCRMvIBLUmf7FNMvT7dbG+TFR4oxcl+h58=; b=hi/AHnEUhGp9Rf5WbNJ34pcg/ntmKYQe8mN0q6KWGtHh++em2g2Yu+xM7ttgqfX3VguERzq16oSz08VIiaZEMbSJ7IGbTPOgXWKh8STurXjeWgakPIYXRkMV4VhyZ2SxY5oOr4vjC5El1YNgufqKccIMeXiEjPBCLDt3YWKpsE0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464302635142.57450473462904; Sun, 14 Jun 2026 12:11:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDO-0008Tr-QC; Sun, 14 Jun 2026 15:09:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCp-0007LK-Ho for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCn-0002TR-Kh for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:15 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-144-v3dYr8BqOCy_v_Ujp0NRJw-1; Sun, 14 Jun 2026 15:09:11 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4601102c30dso1475037f8f.2 for ; Sun, 14 Jun 2026 12:09:11 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2cf5d9sm23855994f8f.32.2026.06.14.12.09.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464153; 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=a46sKVH32bCRMvIBLUmf7FNMvT7dbG+TFR4oxcl+h58=; b=EwKh7aKKn8Zs0h3PANIhEqmFTMnOgm8XWk1kVECBAgVXeqM8xvzZuAP6uVh8IT71HRyBIV eKyV8cZpp0XwbJyzkrGzW4R7KVpwJETZL+sSzrD1n1utiD7nxU9OlVtXw2VSt7Y0Rw7H6Y 6sAAw6yGbn5kKFU7FlI/+OR476pwokQ= X-MC-Unique: v3dYr8BqOCy_v_Ujp0NRJw-1 X-Mimecast-MFC-AGG-ID: v3dYr8BqOCy_v_Ujp0NRJw_1781464150 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464150; x=1782068950; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=a46sKVH32bCRMvIBLUmf7FNMvT7dbG+TFR4oxcl+h58=; b=CQkiu1kMwSICm40fe97iMkPL1Yh8uG75ihKZsp+7LaNtYY5ltkwL8W9FoF5kxGZ5ec lBJzZgOIuSoLaU+QXpo7oXy7hsOXXG+oeB5KQ9gADQc3drN9C3w48cv1HFMNvcTKqCKx GYF01ZaUlsR35byjfJYTowSGqU4NXIz0EldcZNoQW1UaZEPeRLOGJ1c0flap2w90Z+Ux pxxEKoSXcioX6M20W6ziBq6bOjU139hd3c+wRNKX8lLydRTx0iLJ7ICvoDbDVIKI9Olh WipRnNyuowS+Q0DRbUTahd4kDeRtk7Fo66ZfCc/KOgHNgM2B8AKsI9YqIYLfRbcbjkvF xWmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464150; x=1782068950; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=a46sKVH32bCRMvIBLUmf7FNMvT7dbG+TFR4oxcl+h58=; b=NwPrVRq4JvTIpeKT8ibhhoEnozLhaqVEkXwhrz8X/dqAm+2D8vCRfIwXt6FO6iJHbg kD5rRgGyVOKfbFDbaBqhefsOq8ct0PuDqg7kzZ1DRds1IDwxNRjJacKGYerA2xhhufR2 KA3w9sVYURqVpc6m95eAC7IZaX9IP83XjWmVzjVkS/zoZm7wdEDXS809gOYAi6PZasmG J/hUk5TD8TDQePDPOGEOu7OlNKPwQ/ZCa16JLTi3+Rr9fuATURaoSyyQjAfPJR4DOKSJ QI2ToIFkDzUBQgzhKu5biCD8HxzKgv62PjOYII+30timRhF0jcgFGrb11MqYi8DgDXyj tspw== X-Gm-Message-State: AOJu0YwY3QgASh5kn1UMnwPx5e+UlJ7pOxvt2b/slz3VmdMC7bUVWJDV v/SLXvuCfk2cy6dKt45jJUHRSmMtTDBxVSmAzScYsg49dtK47F53gR+Ht7iN77yol8m+ht8/qlc HzkBXGzU9eY5tfMLpzDHJvL8CjoJiPijkLI1Lay9QA9PXM6tjOnDhK3PkTxafNO3k2hQEr8ZDZj 9JXE/gKRTwfNu8KYzSHH4tCkiGDOB99lcMgA== X-Gm-Gg: Acq92OET5i7fEOlYlO4PXXCDXWPXJvR9EvHCjSFRFbs591As+E8duK+4n4PDz0BpWMu FiKsCgeGd2Y1gsaoRSrcUjzjHKQB5BIXG06+vcq+TF/fA7acbotKYOUexOqEUbtiQM6uLKKglJG XtLG7+/O/rBlnFEXnxFh70e3k9MdVDRdNhpUjRohPGhkgaEi/JDT2smhUnKOr+PqRleX4Qjs81r admr/RCjOI9f8zicVenEtWxKsLSW7kIl0kki6Gu/mc+wCMmsZVUJLwYpXcWe7pYbfkL8JU1sV7Q hI303QVbJ3+bCs4DCNxq6HFkNhraYQ22HPiqEAJT3VNPz4e/X5So507zgGDQzO21I1V+Uqk1tJs xbI/XQBoGkyqMJ2io5js52p6VE7W3NtCZFKDgtl9IxC8= X-Received: by 2002:a05:6000:188e:b0:45e:f271:5019 with SMTP id ffacd0b85a97d-4606db8c6fbmr15479974f8f.14.1781464150041; Sun, 14 Jun 2026 12:09:10 -0700 (PDT) X-Received: by 2002:a05:6000:188e:b0:45e:f271:5019 with SMTP id ffacd0b85a97d-4606db8c6fbmr15479934f8f.14.1781464149535; Sun, 14 Jun 2026 12:09:09 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:07 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Sairaj Kodilkar , Vasant Hegde , Alejandro Jimenez , Paolo Bonzini , Richard Henderson Subject: [PULL 081/106] amd_iommu: Generate XT interrupts when xt support is enabled Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464303407158500 From: Sairaj Kodilkar When MMIO 0x18[IntCapXTEn]=3D1, interrupts originating from the IOMMU itsel= f are sent based on the programming in XT IOMMU Interrupt Control Registers in MM= IO 0x170-0x180 instead of the programming in the IOMMU's MSI capability regist= ers. The guest programs these registers with appropriate vector and destination ID instead of writing to PCI MSI capability. Current AMD vIOMMU is capable of generating interrupts only through PCI MSI capability and does not care about xt mode. Because of this AMD vIOMMU cannot generate event log interrupts when the guest has enabled xt mode. Introduce a new flag "intcapxten" which is set when guest writes control register [IntCapXTEn] (bit 51) and use vector and destination field in the XT MMIO register (0x170) to support XT mode. Signed-off-by: Sairaj Kodilkar Reviewed-by: Vasant Hegde Reviewed-by: Alejandro Jimenez Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260302115130.5903-4-sarunkod@amd.com> --- hw/i386/amd_iommu.c | 47 ++++++++++++++++++++++++++++++++++++++------ hw/i386/amd_iommu.h | 17 ++++++++++++++++ hw/i386/trace-events | 1 + 3 files changed, 59 insertions(+), 6 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 5947d3aecf..79216fb305 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -192,18 +192,38 @@ static void amdvi_assign_andq(AMDVIState *s, hwaddr a= ddr, uint64_t val) amdvi_writeq_raw(s, addr, amdvi_readq(s, addr) & val); } =20 +static void amdvi_build_xt_msi_msg(AMDVIState *s, MSIMessage *msg) +{ + union mmio_xt_intr xt_reg; + struct X86IOMMUIrq irq; + + xt_reg.val =3D amdvi_readq(s, AMDVI_MMIO_XT_GEN_INTR); + + irq.vector =3D xt_reg.vector; + irq.delivery_mode =3D xt_reg.delivery_mode; + irq.dest_mode =3D xt_reg.destination_mode; + irq.dest =3D (xt_reg.destination_hi << 24) | xt_reg.destination_lo; + irq.trigger_mode =3D 0; + irq.redir_hint =3D 0; + + x86_iommu_irq_to_msi_message(&irq, msg); +} + static void amdvi_generate_msi_interrupt(AMDVIState *s) { MSIMessage msg =3D {}; - MemTxAttrs attrs =3D { - .requester_id =3D pci_requester_id(&s->pci->dev) - }; =20 - if (msi_enabled(&s->pci->dev)) { + if (s->intcapxten) { + trace_amdvi_generate_msi_interrupt("XT GEN"); + amdvi_build_xt_msi_msg(s, &msg); + } else if (msi_enabled(&s->pci->dev)) { + trace_amdvi_generate_msi_interrupt("MSI"); msg =3D msi_get_message(&s->pci->dev, 0); - address_space_stl_le(&address_space_memory, msg.address, msg.data, - attrs, NULL); + } else { + trace_amdvi_generate_msi_interrupt("NO MSI"); + return; } + apic_get_class(NULL)->send_msi(&msg); } =20 static uint32_t get_next_eventlog_entry(AMDVIState *s) @@ -1538,6 +1558,7 @@ const char *amdvi_mmio_get_name(hwaddr addr) MMIO_REG_TO_STRING(AMDVI_MMIO_PPR_BASE); MMIO_REG_TO_STRING(AMDVI_MMIO_PPR_HEAD); MMIO_REG_TO_STRING(AMDVI_MMIO_PPR_TAIL); + MMIO_REG_TO_STRING(AMDVI_MMIO_XT_GEN_INTR); #undef MMIO_REG_TO_STRING default: return "UNHANDLED"; @@ -1581,6 +1602,15 @@ static void amdvi_handle_control_write(AMDVIState *s) s->ga_enabled =3D !!(control & AMDVI_MMIO_CONTROL_GAEN); s->xten =3D !!(control & AMDVI_MMIO_CONTROL_XTEN) && s->xtsup && s->ga_enabled; + /* + * IntCapXTEn controls whether IOMMU-originated interrupts are sent ba= sed + * on the information in XT IOMMU Interrupt Control Registers rather t= han + * the IOMMU=E2=80=99s MSI capability registers. Therefore it requires= IOMMU + * x2APIC support capabilities (i.e. XTSup=3D1), but it is independent= of + * whether a driver chooses to enable x2APIC mode for interrupt remapp= ing + * (i.e. XTEn=3D1). + */ + s->intcapxten =3D !!(control & AMDVI_MMIO_CONTROL_INTCAPXTEN) && s->xt= sup; =20 /* update the flags depending on the control register */ if (s->cmdbuf_enabled) { @@ -1790,6 +1820,9 @@ static void amdvi_mmio_write(void *opaque, hwaddr add= r, uint64_t val, case AMDVI_MMIO_STATUS: amdvi_mmio_reg_write(s, size, val, addr); break; + case AMDVI_MMIO_XT_GEN_INTR: + amdvi_mmio_reg_write(s, size, val, addr); + break; } } =20 @@ -2440,6 +2473,7 @@ static void amdvi_init(AMDVIState *s) s->enabled =3D false; s->cmdbuf_enabled =3D false; s->xten =3D false; + s->intcapxten =3D false; =20 /* reset MMIO */ memset(s->mmior, 0, AMDVI_MMIO_SIZE); @@ -2510,6 +2544,7 @@ static const VMStateDescription vmstate_xt =3D { .minimum_version_id =3D 1, .fields =3D (VMStateField[]) { VMSTATE_BOOL(xten, AMDVIState), + VMSTATE_BOOL(intcapxten, AMDVIState), VMSTATE_END_OF_LIST() } }; diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index 300d91b34d..3cab04a6d4 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -53,6 +53,7 @@ #define AMDVI_MMIO_EXCL_BASE 0x0020 #define AMDVI_MMIO_EXCL_LIMIT 0x0028 #define AMDVI_MMIO_EXT_FEATURES 0x0030 +#define AMDVI_MMIO_XT_GEN_INTR 0x0170 #define AMDVI_MMIO_COMMAND_HEAD 0x2000 #define AMDVI_MMIO_COMMAND_TAIL 0x2008 #define AMDVI_MMIO_EVENT_HEAD 0x2010 @@ -103,6 +104,7 @@ #define AMDVI_MMIO_CONTROL_CMDBUFLEN (1ULL << 12) #define AMDVI_MMIO_CONTROL_GAEN (1ULL << 17) #define AMDVI_MMIO_CONTROL_XTEN (1ULL << 50) +#define AMDVI_MMIO_CONTROL_INTCAPXTEN (1ULL << 51) =20 /* MMIO status register bits */ #define AMDVI_MMIO_STATUS_CMDBUF_RUN (1 << 4) @@ -338,6 +340,20 @@ struct irte_ga { union irte_ga_hi hi; }; =20 +union mmio_xt_intr { + uint64_t val; + struct { + uint64_t rsvd_1:2, + destination_mode:1, + rsvd_2:5, + destination_lo:24, + vector:8, + delivery_mode:1, + rsvd_3:15, + destination_hi:8; + }; +}; + #define TYPE_AMD_IOMMU_DEVICE "amd-iommu" OBJECT_DECLARE_SIMPLE_TYPE(AMDVIState, AMD_IOMMU_DEVICE) =20 @@ -416,6 +432,7 @@ struct AMDVIState { bool ga_enabled; bool xtsup; /* xtsup=3Don command line */ bool xten; /* guest controlled, x2apic mode enabled */ + bool intcapxten; /* guest controlled, IOMMU x2apic interrupts enabled = */ =20 /* DMA address translation */ bool dma_remap; diff --git a/hw/i386/trace-events b/hw/i386/trace-events index 5fa5e93b68..a1dfade20f 100644 --- a/hw/i386/trace-events +++ b/hw/i386/trace-events @@ -118,6 +118,7 @@ amdvi_ir_intctl(uint8_t val) "int_ctl 0x%"PRIx8 amdvi_ir_target_abort(const char *str) "%s" amdvi_ir_delivery_mode(const char *str) "%s" amdvi_ir_irte_ga_val(uint64_t hi, uint64_t lo) "hi 0x%"PRIx64" lo 0x%"PRIx= 64 +amdvi_generate_msi_interrupt(const char *str) "Mode: %s" =20 # vmport.c vmport_register(unsigned char command, void *func, void *opaque) "command:= 0x%02x func: %p opaque: %p" --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464310; cv=none; d=zohomail.com; s=zohoarc; b=kGuAEtIXaX2ZTRCOJiVtSl8PTha8wiKUVnrs7DzLj6E1M98W84dSeAScT2nVXEbOxmfeYCv/a2fwvtPQsay0sNaa56axOS4d+i3fERYYe+aPJC2a/bTl2RHQC2OQobIKvLiyUTW4O6KpLfoFXgRG26YB7YnAw5wqCsrRvyWU9jg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464310; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QZNUnahvC+4HEfCF2Lnl65IlITe2u76Ii/lnMqZAtNU=; b=NMzqAKJv4mc3aQk09YcIQjG7VlyNuIMr+bt3khCtU9O5hpW/ShUyPJ3Sbtu03IyD2WiUKjPGnxkINyQrgLOqksdtvREO8ffeEwSPazy/sBRvkFrzfQkpEHbEYvJXXdjKQpMqt+jXb5zdhACKL9YE5KXybM70ryjUT0p7r0rN9n4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464310042878.1199922167306; Sun, 14 Jun 2026 12:11:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDS-0000NF-0V; Sun, 14 Jun 2026 15:09:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCr-0007PB-PP for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCp-0002Tm-I8 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:17 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-631-f0R_O-6AMwKZxDzzCYuPxA-1; Sun, 14 Jun 2026 15:09:13 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490b9318944so16621035e9.1 for ; Sun, 14 Jun 2026 12:09:13 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922033156csm174007305e9.7.2026.06.14.12.09.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464154; 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: in-reply-to:in-reply-to:references:references; bh=QZNUnahvC+4HEfCF2Lnl65IlITe2u76Ii/lnMqZAtNU=; b=Ay5u/Md9YkSFRxT7gtihn47BnNWJrNz4/aFdvczdiTPyTjQlzOKf/NOxZVRHyaWAw/c2tI NblTeveqmmrWi3eUnzj1e8VsyWk3ix2um5IAYiUlwZK8DoUqq74Jo86d9O+Q4l7idkbrKN 90XguSGxXDwhPr2gu0EvWjL8RJF6hRU= X-MC-Unique: f0R_O-6AMwKZxDzzCYuPxA-1 X-Mimecast-MFC-AGG-ID: f0R_O-6AMwKZxDzzCYuPxA_1781464152 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464152; x=1782068952; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=QZNUnahvC+4HEfCF2Lnl65IlITe2u76Ii/lnMqZAtNU=; b=XQf/f8lz9mnaXkUsGtfqg+AnHgGVpI+5a1zA5u3S4u0oAW1jWHKrtp4jhlhH/kvbxL MZlyi6M9BqGPiRjqkq/HwVCrJsHojfN9/IkSxsRLy2c3aIUiKsOHYOr7kleCctpylpKn F6FzMhlQC3sWi5m/eJ6+PDPtoE93i4OAj7dB/z/CaJt+eul9yAzOVRt+vjMkYQcAexPZ bqJKTzqXmcCcYC+4Z1FQjJlv1EhGX02FhupRG3G/E+gUsx18X2/YKdgQ7G0uYVkn5HMh yOoXLXoa2PsOxVzRlaKzObUc4m33WADkK4u0dzkOlURLpvwuuy+dY+kf5ZITTZkpLHJi LrhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464152; x=1782068952; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QZNUnahvC+4HEfCF2Lnl65IlITe2u76Ii/lnMqZAtNU=; b=ZUWksvTfZYLIDmT42c3Dm7T4TmIimB9irF8t8VhhEYYUP8uNUJJzybvmgcLEUGa+ia 1+HNwlgPGiGk3n3dpQ6JewZwcMGRov7bs7lXc7GVjHR5cJ1kI9+L9SDgPoLTp7d9hLTN 2MLlhZcSN0hIDyhf15IIJ5pGROQ/fjgRZGvYWxlRe0qpjwgjSiRVnAkAoj7nJCkgvGzI UwhVVOB8q3r0lOpvplIt9Ur6/tMG489UIllyQuuHTOebkTUTiGfvGGPt8KfvLBTRVQ+O oIlHwRxDesOniSiJTjih5fzcZNkZUmQoAZYjBnM3XsdR0Amnv4cU0wO04cwj4AAsDHVF wnMg== X-Gm-Message-State: AOJu0YwtrItAL3fL8kRlInw57O/8Hr4MGiC3X8GqEzJATo7lw6CGB9ma 5/YZtjmuzngOzhfiwOspQIjiYr/AoCcruNIUDZtwRFojOk1qGTdPX12PT76vfsiN9fuComNFrNL nrds1yMCj3NdVKnMMsDMGXH2X6CzoFXrtQHuHFZyjPTQRCi3X70YZCnT4bgGthdi3AwBLrMi466 +i/dpjgbw7dAH+GMIBn7eHCk+IQzzPM7pOAw== X-Gm-Gg: Acq92OEgXVi1ba2xJLZDb1SZg1Z2Z0mlEFSY4Vm5h1gTIW0tfBF0XnbHlMQZAin+UYK jmFRMLZ/+TH29J/zTJUeYlGPJH14uwNG190MAiuwcdwVyn/ezKGq7I1CHRCiFxyu1m69Y+d3hZI V6tywxkQ+M3Dc7Yoc2uIvNXUvKAN1hgiiqNE5p8r/I1YAoDgjwy+aqALmFSx39tCEN/qO7WCv5G on7mV9soSe36kn8/yY83GTtOaNcW/0dSY62tHltEX2sa/RaF2JFr7HssrQ/QjgJNceW5ZsxkuI+ E1Vyrvn78MNghNmfNZYw3g3MjxzHKNPQxeOcdg53uWib3+6Pt0yvzsyiLDfUKZfHq0jbQoVrS1h QsZkb9lFgAQdrKAXX7T+8K+wH75IivOqu8NPCsQIIquA= X-Received: by 2002:a05:600c:4685:b0:490:9bc2:bf8b with SMTP id 5b1f17b1804b1-490ec4cd13amr166634435e9.5.1781464152270; Sun, 14 Jun 2026 12:09:12 -0700 (PDT) X-Received: by 2002:a05:600c:4685:b0:490:9bc2:bf8b with SMTP id 5b1f17b1804b1-490ec4cd13amr166634045e9.5.1781464151707; Sun, 14 Jun 2026 12:09:11 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:09 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kuan-Wei Chiu , Cornelia Huck , Paolo Bonzini Subject: [PULL 082/106] standard-headers: Add virtio_rtc.h from Linux 7.0-rc1 Message-ID: <5341284a7cbadb19fa61dadb643475d3aef2f5a3.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464311503158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kuan-Wei Chiu Add virtio_rtc.h from the upstream Linux kernel using scripts/update-linux-headers.sh. Source: - Linux commit 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f (v7.0-rc1) - Author: Linus Torvalds - Date: Sun Feb 22 13:18:59 2026 -0800 Signed-off-by: Kuan-Wei Chiu Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260228182246.700714-2-visitorckw@gmail.com> --- include/standard-headers/linux/virtio_rtc.h | 237 ++++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 include/standard-headers/linux/virtio_rtc.h diff --git a/include/standard-headers/linux/virtio_rtc.h b/include/standard= -headers/linux/virtio_rtc.h new file mode 100644 index 0000000000..7e2c21ebff --- /dev/null +++ b/include/standard-headers/linux/virtio_rtc.h @@ -0,0 +1,237 @@ +/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-C= lause) */ +/* + * Copyright (C) 2022-2024 OpenSynergy GmbH + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#ifndef _LINUX_VIRTIO_RTC_H +#define _LINUX_VIRTIO_RTC_H + +#include "standard-headers/linux/types.h" + +/* alarm feature */ +#define VIRTIO_RTC_F_ALARM 0 + +/* read request message types */ + +#define VIRTIO_RTC_REQ_READ 0x0001 +#define VIRTIO_RTC_REQ_READ_CROSS 0x0002 + +/* control request message types */ + +#define VIRTIO_RTC_REQ_CFG 0x1000 +#define VIRTIO_RTC_REQ_CLOCK_CAP 0x1001 +#define VIRTIO_RTC_REQ_CROSS_CAP 0x1002 +#define VIRTIO_RTC_REQ_READ_ALARM 0x1003 +#define VIRTIO_RTC_REQ_SET_ALARM 0x1004 +#define VIRTIO_RTC_REQ_SET_ALARM_ENABLED 0x1005 + +/* alarmq message types */ + +#define VIRTIO_RTC_NOTIF_ALARM 0x2000 + +/* Message headers */ + +/** common request header */ +struct virtio_rtc_req_head { + uint16_t msg_type; + uint8_t reserved[6]; +}; + +/** common response header */ +struct virtio_rtc_resp_head { +#define VIRTIO_RTC_S_OK 0 +#define VIRTIO_RTC_S_EOPNOTSUPP 2 +#define VIRTIO_RTC_S_ENODEV 3 +#define VIRTIO_RTC_S_EINVAL 4 +#define VIRTIO_RTC_S_EIO 5 + uint8_t status; + uint8_t reserved[7]; +}; + +/** common notification header */ +struct virtio_rtc_notif_head { + uint16_t msg_type; + uint8_t reserved[6]; +}; + +/* read requests */ + +/* VIRTIO_RTC_REQ_READ message */ + +struct virtio_rtc_req_read { + struct virtio_rtc_req_head head; + uint16_t clock_id; + uint8_t reserved[6]; +}; + +struct virtio_rtc_resp_read { + struct virtio_rtc_resp_head head; + uint64_t clock_reading; +}; + +/* VIRTIO_RTC_REQ_READ_CROSS message */ + +struct virtio_rtc_req_read_cross { + struct virtio_rtc_req_head head; + uint16_t clock_id; +/* Arm Generic Timer Counter-timer Virtual Count Register (CNTVCT_EL0) */ +#define VIRTIO_RTC_COUNTER_ARM_VCT 0 +/* x86 Time-Stamp Counter */ +#define VIRTIO_RTC_COUNTER_X86_TSC 1 +/* Invalid */ +#define VIRTIO_RTC_COUNTER_INVALID 0xFF + uint8_t hw_counter; + uint8_t reserved[5]; +}; + +struct virtio_rtc_resp_read_cross { + struct virtio_rtc_resp_head head; + uint64_t clock_reading; + uint64_t counter_cycles; +}; + +/* control requests */ + +/* VIRTIO_RTC_REQ_CFG message */ + +struct virtio_rtc_req_cfg { + struct virtio_rtc_req_head head; + /* no request params */ +}; + +struct virtio_rtc_resp_cfg { + struct virtio_rtc_resp_head head; + /** # of clocks -> clock ids < num_clocks are valid */ + uint16_t num_clocks; + uint8_t reserved[6]; +}; + +/* VIRTIO_RTC_REQ_CLOCK_CAP message */ + +struct virtio_rtc_req_clock_cap { + struct virtio_rtc_req_head head; + uint16_t clock_id; + uint8_t reserved[6]; +}; + +struct virtio_rtc_resp_clock_cap { + struct virtio_rtc_resp_head head; +#define VIRTIO_RTC_CLOCK_UTC 0 +#define VIRTIO_RTC_CLOCK_TAI 1 +#define VIRTIO_RTC_CLOCK_MONOTONIC 2 +#define VIRTIO_RTC_CLOCK_UTC_SMEARED 3 +#define VIRTIO_RTC_CLOCK_UTC_MAYBE_SMEARED 4 + uint8_t type; +#define VIRTIO_RTC_SMEAR_UNSPECIFIED 0 +#define VIRTIO_RTC_SMEAR_NOON_LINEAR 1 +#define VIRTIO_RTC_SMEAR_UTC_SLS 2 + uint8_t leap_second_smearing; +#define VIRTIO_RTC_FLAG_ALARM_CAP (1 << 0) + uint8_t flags; + uint8_t reserved[5]; +}; + +/* VIRTIO_RTC_REQ_CROSS_CAP message */ + +struct virtio_rtc_req_cross_cap { + struct virtio_rtc_req_head head; + uint16_t clock_id; + uint8_t hw_counter; + uint8_t reserved[5]; +}; + +struct virtio_rtc_resp_cross_cap { + struct virtio_rtc_resp_head head; +#define VIRTIO_RTC_FLAG_CROSS_CAP (1 << 0) + uint8_t flags; + uint8_t reserved[7]; +}; + +/* VIRTIO_RTC_REQ_READ_ALARM message */ + +struct virtio_rtc_req_read_alarm { + struct virtio_rtc_req_head head; + uint16_t clock_id; + uint8_t reserved[6]; +}; + +struct virtio_rtc_resp_read_alarm { + struct virtio_rtc_resp_head head; + uint64_t alarm_time; +#define VIRTIO_RTC_FLAG_ALARM_ENABLED (1 << 0) + uint8_t flags; + uint8_t reserved[7]; +}; + +/* VIRTIO_RTC_REQ_SET_ALARM message */ + +struct virtio_rtc_req_set_alarm { + struct virtio_rtc_req_head head; + uint64_t alarm_time; + uint16_t clock_id; + /* flag VIRTIO_RTC_FLAG_ALARM_ENABLED */ + uint8_t flags; + uint8_t reserved[5]; +}; + +struct virtio_rtc_resp_set_alarm { + struct virtio_rtc_resp_head head; + /* no response params */ +}; + +/* VIRTIO_RTC_REQ_SET_ALARM_ENABLED message */ + +struct virtio_rtc_req_set_alarm_enabled { + struct virtio_rtc_req_head head; + uint16_t clock_id; + /* flag VIRTIO_RTC_ALARM_ENABLED */ + uint8_t flags; + uint8_t reserved[5]; +}; + +struct virtio_rtc_resp_set_alarm_enabled { + struct virtio_rtc_resp_head head; + /* no response params */ +}; + +/** Union of request types for requestq */ +union virtio_rtc_req_requestq { + struct virtio_rtc_req_read read; + struct virtio_rtc_req_read_cross read_cross; + struct virtio_rtc_req_cfg cfg; + struct virtio_rtc_req_clock_cap clock_cap; + struct virtio_rtc_req_cross_cap cross_cap; + struct virtio_rtc_req_read_alarm read_alarm; + struct virtio_rtc_req_set_alarm set_alarm; + struct virtio_rtc_req_set_alarm_enabled set_alarm_enabled; +}; + +/** Union of response types for requestq */ +union virtio_rtc_resp_requestq { + struct virtio_rtc_resp_read read; + struct virtio_rtc_resp_read_cross read_cross; + struct virtio_rtc_resp_cfg cfg; + struct virtio_rtc_resp_clock_cap clock_cap; + struct virtio_rtc_resp_cross_cap cross_cap; + struct virtio_rtc_resp_read_alarm read_alarm; + struct virtio_rtc_resp_set_alarm set_alarm; + struct virtio_rtc_resp_set_alarm_enabled set_alarm_enabled; +}; + +/* alarmq notifications */ + +/* VIRTIO_RTC_NOTIF_ALARM notification */ + +struct virtio_rtc_notif_alarm { + struct virtio_rtc_notif_head head; + uint16_t clock_id; + uint8_t reserved[6]; +}; + +/** Union of notification types for alarmq */ +union virtio_rtc_notif_alarmq { + struct virtio_rtc_notif_alarm alarm; +}; + +#endif /* _LINUX_VIRTIO_RTC_H */ --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464428; cv=none; d=zohomail.com; s=zohoarc; b=V8EqoZ1H80DTkas5LiAPK2Ia3PXCznBZ1rIATVFusQyfI1R2Eur/17YNxLoy3JZPg0kuFd+lYiomEJ/Dy7fGdy/m1YJcPHo/SPU5vku2qWVpG0NBK9Alycg2FsID8imHRkmrrKLD0gw4/spiJsUvY4I72yHhnGo6kerJ+ps3wHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464428; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eABkb4PGnM+0KkhsEI++HbZI/L2LUOkqkJzR+Km3n0M=; b=OGgAl181d1a9/aLVQ7lxxnWR7znN9RkuklWvxBcK2AK1IGOUQUAtN+w+7VBtph7+okV9U0KBm1tic74XGuxebb9fsdI6quRtjLxzTnKhgProeyQ5waWLLnE652UP2IK3ioP4oDW973cUif4V9QAfPie+F0JLrP1AzJ+ECMH0QCQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464428586477.030539837325; Sun, 14 Jun 2026 12:13:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDL-0007uo-Ly; Sun, 14 Jun 2026 15:09:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCu-0007Pf-J3 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:25 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCr-0002Tz-Qt for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:19 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-671-AWW3WJvFMGWEYc3immfmqQ-1; Sun, 14 Jun 2026 15:09:15 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490b4d3d3e6so17664005e9.0 for ; Sun, 14 Jun 2026 12:09:15 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922032ae56sm179917075e9.7.2026.06.14.12.09.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464157; 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: in-reply-to:in-reply-to:references:references; bh=eABkb4PGnM+0KkhsEI++HbZI/L2LUOkqkJzR+Km3n0M=; b=Qct/sY0NHx5VOndfPtilkAxdXOvI0fnmm1gkXHbFn+xChn+jqPFy4yULfeiulu0TpaEbok oB1c1SC+Relt6tbOM4weVy08HU2G6sJIDnshGgXCy0URG0PVELcc7wk4J7c4ungpE0EngC LtebqF6MpYRSTyCg2WCjLL7afo1FRKo= X-MC-Unique: AWW3WJvFMGWEYc3immfmqQ-1 X-Mimecast-MFC-AGG-ID: AWW3WJvFMGWEYc3immfmqQ_1781464154 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464154; x=1782068954; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=eABkb4PGnM+0KkhsEI++HbZI/L2LUOkqkJzR+Km3n0M=; b=tFyHLpk0aJ38nez7ATTymSHMs7F430czdeHY/WORKyN++g+OD10vSQHyqMmG/iUSuq QLG7udk5QTvUKPG5kf/KDRxFZk6kbTDI5jkUqZVAeHSyMGs7tkeK2kriMUi6kie5CqeV dLVeqwWw1kAuG3wr7iBzl6jg20F1Wr2u18PvJ+DHfT6NOY8s3c48aB9ikOT+gRt4w+FR rNQPbnxjNdyIQQu0oXlWlvgw0XCn5IweH/tYNrUAIn7CbiZUkdNi1g+Mre9TGpzZrpUh 1r5xCfJKs89OZWLv7Klkb7bAN9igJzs0J+CHrqxAaX2dioH4ljdLHgZt6r/gR/FtHN3n GyZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464154; x=1782068954; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eABkb4PGnM+0KkhsEI++HbZI/L2LUOkqkJzR+Km3n0M=; b=TVNTxDr8kFTNc7sv7+XV1OyiY0wsN2b/OodnW4czWb5x/kQa/yunSB/Y0R92khcsYq 54QticeFph4w4Aes/KhoEq/htahCZa4ClBlFuZrWsj+ouyFS0L5MgBUjfy0gtcQG86F0 sa+ZrMVaeBJ2zu5iwury8c7aOWGyZhPPclVwxasGFjXs4gL7yTcxuT22jXqlZH0LxL72 9Z71wHKqMoedacNvEobApYIZpirRLW0IrRPU2NxIe9Q57VKKPfmkdTXozWvZLsV3DA4d H1mN5TwMrLagRdXdHz1zgfEmaoOE37I3d8sqtvJYYPA+n25w96t+nUCM8Kkv3r078yle OWMQ== X-Gm-Message-State: AOJu0YxqGkhX7j/rSnEGYAXchFzhTzmNks9dYYacYj370+bqcGf1gJP0 eHYSMbHGS9mqxjRVRLK1QJtoqqbYlqkMntvwqQOGv7n2wC5xDedxS5vdqX8PwfQeSQY9PiTQcLG xksMKpmrKT5ucJ6y4jp1FcnxoJNeGdU4GiAsiKAG4JThiFj9m7UXudY0rMPCcx+omtu19c5g1gt QZbB00wAWV+yh2sXh1QG2eLAYpwULklZ23zA== X-Gm-Gg: Acq92OHgl9RResajk+LU7PG91R8ZkT0d5oG1aGDqKem3e7E932PZ09zKHhuAjYr4vH2 4IqOFyaEil0zqQ5gzfB5StdJAXpdmII0jwQT6jLfCUUkiN76X9NhylCDrbmAOwa7Dr2qbOX2jVt AduUtWcr58oB30Dg64pplk8rDTdSbZ9cCdbomP1/f3hjzFBZPHvCLhrv5aAUtOyla3SeUbJOtet Qc7tS/tdzjURpTP9YGLO+veuTHrAkRYTE9bgAnt9wnDB9+bchDOxVzb/Xgfs9oBHnDh9rY0ncRj GPZwSMC0/jwHAlhu9WgBhJYjTI4+vGtKM/5iC/mkqSUjMeHycU2Ezjg7H2rKUsM56n34FF615ra wS5Iwki0EhSxlMmIFqJf2iW6/l7NW+LIP+rvMatzeHuc= X-Received: by 2002:a05:600c:6b69:b0:490:b642:ce2c with SMTP id 5b1f17b1804b1-490ec4df221mr97545965e9.14.1781464154226; Sun, 14 Jun 2026 12:09:14 -0700 (PDT) X-Received: by 2002:a05:600c:6b69:b0:490:b642:ce2c with SMTP id 5b1f17b1804b1-490ec4df221mr97545785e9.14.1781464153647; Sun, 14 Jun 2026 12:09:13 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:11 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kuan-Wei Chiu , Paolo Bonzini Subject: [PULL 083/106] virtio-rtc: Add basic virtio-rtc support Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464430040158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kuan-Wei Chiu Introduce the core device and PCI bindings for the virtio-rtc device (VIRTIO_ID_CLOCK). This implementation provides a read-only clock that returns the host's time (QEMU_CLOCK_HOST) to the guest. It handles fundamental control requests, reporting a single supported clock of type VIRTIO_RTC_CLOCK_UTC, and responds to standard read requests. - Virtio RTC Spec: https://github.com/oasis-tcs/virtio-spec/tree/master/device-types/rtc - Linux Virtio RTC driver: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/dri= vers/virtio/virtio_rtc_driver.c?h=3Dv7.0-rc1 Signed-off-by: Kuan-Wei Chiu Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260228182246.700714-3-visitorckw@gmail.com> --- MAINTAINERS | 7 ++ hw/virtio/Kconfig | 5 + hw/virtio/meson.build | 2 + hw/virtio/virtio-rtc-pci.c | 65 +++++++++++ hw/virtio/virtio-rtc.c | 190 +++++++++++++++++++++++++++++++++ include/hw/virtio/virtio-rtc.h | 22 ++++ 6 files changed, 291 insertions(+) create mode 100644 hw/virtio/virtio-rtc-pci.c create mode 100644 hw/virtio/virtio-rtc.c create mode 100644 include/hw/virtio/virtio-rtc.h diff --git a/MAINTAINERS b/MAINTAINERS index 5a82aa3a05..df36496cfb 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2527,6 +2527,13 @@ F: include/system/rng*.h F: backends/rng*.c F: tests/qtest/virtio-rng-test.c =20 +virtio-rtc +M: Kuan-Wei Chiu +S: Maintained +F: hw/virtio/virtio-rtc.c +F: hw/virtio/virtio-rtc-pci.c +F: include/hw/virtio/virtio-rtc.h + virtio-nsm M: Alexander Graf M: Dorjoy Chowdhury diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig index 2ebdac16b3..91cf833407 100644 --- a/hw/virtio/Kconfig +++ b/hw/virtio/Kconfig @@ -76,6 +76,11 @@ config VIRTIO_MEM depends on VIRTIO_MEM_SUPPORTED select VIRTIO_MD =20 +config VIRTIO_RTC + bool + default y + depends on VIRTIO + config VHOST_VSOCK_COMMON bool depends on VIRTIO diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build index 3943e0d006..0e02323516 100644 --- a/hw/virtio/meson.build +++ b/hw/virtio/meson.build @@ -54,6 +54,7 @@ if have_vhost endif system_virtio_ss.add(when: 'CONFIG_VHOST_USER_VSOCK', if_true: files('vhos= t-user-vsock.c')) system_virtio_ss.add(when: 'CONFIG_VIRTIO_RNG', if_true: files('virtio-rng= .c')) +system_virtio_ss.add(when: 'CONFIG_VIRTIO_RTC', if_true: files('virtio-rtc= .c')) =20 system_virtio_ss.add(when: 'CONFIG_VIRTIO_BALLOON', if_true: files('virtio= -balloon.c')) system_virtio_ss.add(when: 'CONFIG_VHOST_USER_FS', if_true: files('vhost-u= ser-fs.c')) @@ -77,6 +78,7 @@ virtio_pci_ss.add(when: 'CONFIG_VIRTIO_CRYPTO', if_true: = files('virtio-crypto-pc virtio_pci_ss.add(when: 'CONFIG_VIRTIO_INPUT_HOST', if_true: files('virtio= -input-host-pci.c')) virtio_pci_ss.add(when: 'CONFIG_VIRTIO_INPUT', if_true: files('virtio-inpu= t-pci.c')) virtio_pci_ss.add(when: 'CONFIG_VIRTIO_RNG', if_true: files('virtio-rng-pc= i.c')) +virtio_pci_ss.add(when: 'CONFIG_VIRTIO_RTC', if_true: files('virtio-rtc-pc= i.c')) virtio_pci_ss.add(when: 'CONFIG_VIRTIO_NSM', if_true: [files('virtio-nsm-p= ci.c', 'cbor-helpers.c'), libcbor]) virtio_pci_ss.add(when: 'CONFIG_VIRTIO_BALLOON', if_true: files('virtio-ba= lloon-pci.c')) virtio_pci_ss.add(when: 'CONFIG_VIRTIO_9P', if_true: files('virtio-9p-pci.= c')) diff --git a/hw/virtio/virtio-rtc-pci.c b/hw/virtio/virtio-rtc-pci.c new file mode 100644 index 0000000000..fe25f21fbc --- /dev/null +++ b/hw/virtio/virtio-rtc-pci.c @@ -0,0 +1,65 @@ +/* + * Virtio RTC PCI Bindings + * + * Copyright (c) 2026 Kuan-Wei Chiu + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/virtio/virtio-pci.h" +#include "hw/virtio/virtio-rtc.h" +#include "standard-headers/linux/virtio_ids.h" + +typedef struct VirtIORtcPCI { + VirtIOPCIProxy parent_obj; + VirtIORtc vdev; +} VirtIORtcPCI; + +#define TYPE_VIRTIO_RTC_PCI "virtio-rtc-pci-base" +OBJECT_DECLARE_SIMPLE_TYPE(VirtIORtcPCI, VIRTIO_RTC_PCI) + +static void virtio_rtc_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) +{ + VirtIORtcPCI *dev =3D VIRTIO_RTC_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + + qdev_realize(vdev, BUS(&vpci_dev->bus), errp); +} + +static void virtio_rtc_pci_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + + set_bit(DEVICE_CATEGORY_MISC, dc->categories); + k->realize =3D virtio_rtc_pci_realize; + + pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_10_BASE + VIRTIO_ID_CLOCK; + pcidev_k->revision =3D 0x00; + pcidev_k->class_id =3D PCI_CLASS_SYSTEM_RTC; +} + +static void virtio_rtc_pci_instance_init(Object *obj) +{ + VirtIORtcPCI *dev =3D VIRTIO_RTC_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_RTC); +} + +static const VirtioPCIDeviceTypeInfo virtio_rtc_pci_info =3D { + .base_name =3D TYPE_VIRTIO_RTC_PCI, + .non_transitional_name =3D "virtio-rtc-pci", + .instance_size =3D sizeof(VirtIORtcPCI), + .instance_init =3D virtio_rtc_pci_instance_init, + .class_init =3D virtio_rtc_pci_class_init, +}; + +static void virtio_rtc_pci_register(void) +{ + virtio_pci_types_register(&virtio_rtc_pci_info); +} + +type_init(virtio_rtc_pci_register); diff --git a/hw/virtio/virtio-rtc.c b/hw/virtio/virtio-rtc.c new file mode 100644 index 0000000000..32de9c1650 --- /dev/null +++ b/hw/virtio/virtio-rtc.c @@ -0,0 +1,190 @@ +/* + * Virtio RTC device core + * + * Copyright (c) 2026 Kuan-Wei Chiu + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/iov.h" +#include "qemu/timer.h" +#include "hw/virtio/virtio.h" +#include "hw/virtio/virtio-rtc.h" +#include "standard-headers/linux/virtio_ids.h" +#include "standard-headers/linux/virtio_rtc.h" + +static void virtio_rtc_handle_request(VirtIODevice *vdev, VirtQueue *vq) +{ + VirtQueueElement *elem; + struct virtio_rtc_req_head req_head; + size_t written; + + while ((elem =3D virtqueue_pop(vq, sizeof(VirtQueueElement)))) { + if (elem->out_num < 1 || elem->in_num < 1) { + virtio_error(vdev, "virtio-rtc: request missing in/out buffers= "); + virtqueue_detach_element(vq, elem, 0); + g_free(elem); + break; + } + + if (iov_to_buf(elem->out_sg, elem->out_num, 0, &req_head, + sizeof(req_head)) !=3D sizeof(req_head)) { + virtio_error(vdev, "virtio-rtc: request header too short"); + virtqueue_detach_element(vq, elem, 0); + g_free(elem); + break; + } + + written =3D 0; + + switch (le16_to_cpu(req_head.msg_type)) { + case VIRTIO_RTC_REQ_CFG: { + struct virtio_rtc_resp_cfg resp =3D {0}; + resp.head.status =3D VIRTIO_RTC_S_OK; + resp.num_clocks =3D cpu_to_le16(1); + written =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, + sizeof(resp)); + break; + } + case VIRTIO_RTC_REQ_CLOCK_CAP: { + struct virtio_rtc_req_clock_cap req; + struct virtio_rtc_resp_clock_cap resp =3D {0}; + + if (iov_to_buf(elem->out_sg, elem->out_num, 0, &req, + sizeof(req)) !=3D sizeof(req)) { + resp.head.status =3D VIRTIO_RTC_S_EINVAL; + written =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &re= sp, + sizeof(resp.head)); + break; + } + + if (le16_to_cpu(req.clock_id) !=3D 0) { + resp.head.status =3D VIRTIO_RTC_S_ENODEV; + } else { + resp.head.status =3D VIRTIO_RTC_S_OK; + resp.type =3D VIRTIO_RTC_CLOCK_UTC; + } + written =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, + sizeof(resp)); + break; + } + case VIRTIO_RTC_REQ_CROSS_CAP: { + struct virtio_rtc_req_cross_cap req; + struct virtio_rtc_resp_cross_cap resp =3D {0}; + + if (iov_to_buf(elem->out_sg, elem->out_num, 0, &req, + sizeof(req)) !=3D sizeof(req)) { + resp.head.status =3D VIRTIO_RTC_S_EINVAL; + written =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &re= sp, + sizeof(resp.head)); + break; + } + + if (le16_to_cpu(req.clock_id) !=3D 0) { + resp.head.status =3D VIRTIO_RTC_S_ENODEV; + } else { + resp.head.status =3D VIRTIO_RTC_S_OK; + } + written =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, + sizeof(resp)); + break; + } + case VIRTIO_RTC_REQ_READ: { + struct virtio_rtc_req_read req; + struct virtio_rtc_resp_read resp =3D {0}; + + if (iov_to_buf(elem->out_sg, elem->out_num, 0, &req, + sizeof(req)) !=3D sizeof(req)) { + resp.head.status =3D VIRTIO_RTC_S_EINVAL; + written =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &re= sp, + sizeof(resp.head)); + break; + } + + if (le16_to_cpu(req.clock_id) !=3D 0) { + resp.head.status =3D VIRTIO_RTC_S_ENODEV; + written =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &re= sp, + sizeof(resp.head)); + } else { + resp.head.status =3D VIRTIO_RTC_S_OK; + resp.clock_reading =3D + cpu_to_le64(qemu_clock_get_ns(QEMU_CLOCK_HOST)); + written =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &re= sp, + sizeof(resp)); + } + break; + } + default: { + struct virtio_rtc_resp_head resp =3D {0}; + resp.status =3D VIRTIO_RTC_S_EOPNOTSUPP; + written =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, + sizeof(resp)); + break; + } + } + + virtqueue_push(vq, elem, written); + virtio_notify(vdev, vq); + g_free(elem); + } +} + +static void virtio_rtc_device_realize(DeviceState *dev, Error **errp) +{ + VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); + VirtIORtc *vrtc =3D VIRTIO_RTC(dev); + + virtio_init(vdev, VIRTIO_ID_CLOCK, 0); + vrtc->vq =3D virtio_add_queue(vdev, 64, virtio_rtc_handle_request); +} + +static void virtio_rtc_device_unrealize(DeviceState *dev) +{ + VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); + VirtIORtc *vrtc =3D VIRTIO_RTC(dev); + + virtio_delete_queue(vrtc->vq); + virtio_cleanup(vdev); +} + +static uint64_t virtio_rtc_get_features(VirtIODevice *vdev, uint64_t f, + Error **errp) +{ + return f; +} + +static const VMStateDescription vmstate_virtio_rtc =3D { + .name =3D "virtio-rtc", + .minimum_version_id =3D 1, + .version_id =3D 1, + .fields =3D (const VMStateField[]) { + VMSTATE_VIRTIO_DEVICE, + VMSTATE_END_OF_LIST() + }, +}; + +static void virtio_rtc_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_CLASS(klass); + + set_bit(DEVICE_CATEGORY_MISC, dc->categories); + vdc->realize =3D virtio_rtc_device_realize; + vdc->unrealize =3D virtio_rtc_device_unrealize; + vdc->get_features =3D virtio_rtc_get_features; + dc->vmsd =3D &vmstate_virtio_rtc; +} + +static const TypeInfo virtio_rtc_info =3D { + .name =3D TYPE_VIRTIO_RTC, + .parent =3D TYPE_VIRTIO_DEVICE, + .instance_size =3D sizeof(VirtIORtc), + .class_init =3D virtio_rtc_class_init, +}; + +static void virtio_rtc_register_types(void) +{ + type_register_static(&virtio_rtc_info); +} + +type_init(virtio_rtc_register_types) diff --git a/include/hw/virtio/virtio-rtc.h b/include/hw/virtio/virtio-rtc.h new file mode 100644 index 0000000000..51aa35201a --- /dev/null +++ b/include/hw/virtio/virtio-rtc.h @@ -0,0 +1,22 @@ +/* + * Virtio RTC device + * + * Copyright (c) 2026 Kuan-Wei Chiu + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef QEMU_VIRTIO_RTC_H +#define QEMU_VIRTIO_RTC_H + +#include "hw/virtio/virtio.h" +#include "qom/object.h" + +#define TYPE_VIRTIO_RTC "virtio-rtc-device" +OBJECT_DECLARE_SIMPLE_TYPE(VirtIORtc, VIRTIO_RTC) + +struct VirtIORtc { + VirtIODevice parent_obj; + VirtQueue *vq; +}; + +#endif --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464314; cv=none; d=zohomail.com; s=zohoarc; b=QO2rXRntSqeLMxNGa0NKD+2aDO6X87tA0AGrpJXIHzOyEuiZWCXzdHJYw7kg/iybeYgRjNcdV5Nv5yQc06pQjhQqvUV4+ISek7qZq2kg/M8AiFbderddPsLsQ09QJkYHcEA0p1/YyKNYrMoxJx/mmGgpH8sZFwy2mjVGea4bng8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464314; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cCsEBchDqMJf36ggGyZ9NuiwogF7rzLKHNisGDcVuX4=; b=DI9sO9CuYYoDDSIZWjuiXpef5k8FPPJY8Vag9x/KZ+x667I3QsCvU2F+itVZTzSFT9esVPB7lj8N5nplebIDBXac1hcUHv8Kl9uvjdOAedx8dF+uJrvp/EdGnlj3FQ1oB1S3F78ucUZ6R8mUz1Zn0VwEk+FWqSq7NV6Xd/ko/QA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464314175565.0864323230043; Sun, 14 Jun 2026 12:11:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDN-0008Du-3V; Sun, 14 Jun 2026 15:09:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCu-0007RC-OO for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:25 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCt-0002WM-A6 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:20 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-590-ikBQojwANz2hyHAVxh74AA-1; Sun, 14 Jun 2026 15:09:17 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490bae3a39bso23756675e9.1 for ; Sun, 14 Jun 2026 12:09:17 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2dbfb1sm29152046f8f.35.2026.06.14.12.09.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464158; 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: in-reply-to:in-reply-to:references:references; bh=cCsEBchDqMJf36ggGyZ9NuiwogF7rzLKHNisGDcVuX4=; b=b/Kv1hNpdtiPwsN3HWtwo7GVP6z5pNMaSMVWK0KGfuWRZr1PFuyYX8AIDpDIhpQ6ZN++Fq ldfoek/Bw+bNsG+2lvC7utGf5G1R2Fbg5jFV4L0kYG5foTPFpLSQDtrP6G5Pi0m1uIbTYk 06dEhGd+Ws0gJ5Cg9DLvDqTYH/PKuyM= X-MC-Unique: ikBQojwANz2hyHAVxh74AA-1 X-Mimecast-MFC-AGG-ID: ikBQojwANz2hyHAVxh74AA_1781464156 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464156; x=1782068956; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=cCsEBchDqMJf36ggGyZ9NuiwogF7rzLKHNisGDcVuX4=; b=TQ/Rjr6KcFlfpBjnz34aaMwNxxasbaYofkuYgx3AoZE54p0/QdtES0RKhHWtqvNgam dQHF+IA9VetwMpPRBpAzjRRIXq4fQuSYhhwqKA7on3RoWoAO/tZhaBtLt5ubDLBsCyaz M50Gxizp1d+SNqUuCRQroEf8OivLI8lJjCpJoa5ywJ75pXqoY3tmrmd3ZQE0RtIlCrpf nJUJ4aeL8lAqpmfCbNsHUzA9pS8gNlxvUETPsZhaRVqGNd23B2MqV9cHD+FrgAH03VBu 1XmaTCmHoeu+mhwLYvXegziZTjfPgV/Mkjx0avSSwHADF0EBMqVZGpb1dV+GNgg02MBp CXhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464156; x=1782068956; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cCsEBchDqMJf36ggGyZ9NuiwogF7rzLKHNisGDcVuX4=; b=HslCWJtFWLjzoBazzC6cteMVNM1kmNKbHvw7RThPfr0DwiQ5iWSF/VPPrufvzTpMF5 VZJLDwsm/sSxIxwvYS1Qn4HMfdDzSAF/fXb3USmNbfkEqAeh3lgIzohfAhxvG28HnN3y SWp7dzvGHeSc/WdQJxli6Zps8tRjcIwv+dAzjmF+a1WXD6ZVQgHGAjas7syykWYnC9D/ N7EjhHqim4gsTInR9RrMaDd8Z+dwBTgDBeuKbA8DnXU16LuCuNFX9PugqwTi5B4A/6zI NjSB6SOV71UvHCEj9BDhxId5HcelDHsa8O7IP+ziXof0JuDacs+1NjBv6KQYpCQua0Ew yz2Q== X-Gm-Message-State: AOJu0YxHjgO76tt9je25vJOv9m4PsB4O6sh03qni6cfT6kAZxPCLetnQ 5rP7MAqz87j9Bc+YHlGSA0xq5IUY4vSdWRUgbWUyPfRJuLWNYfanAPhq2Df+Bw9d8WWBT0Kg6iB ERSwYUnuoggyV75KeWbiakWbrsVHDMF8En7tEXSSxn5wMPKF3FU3HmfTqzrQXpaLdvpkbFsUk2f krdi4V60PgJFaehbgiNzIn6b3mQhDTibgh/A== X-Gm-Gg: Acq92OGMBl8iByXrb9K2BsMtF6piFaTZiP6wahEmaug90Dv8dEQYWVQ3iX9qke6pv6e bU94rQK0sLgcwUz6H0WN8aIPt/D/omFH3d8D75HoFA98Pwuktza7UVC9cQ0lc71KW2e8khaP073 9sHu0m+iR7V6j/h7ldGI2IXd3mXHta5Lbh/S8OGX7Y1hWyC7rdMRH6ZYMj6Wrd7Bf2B8JyNbkfl 1fNaglUfx6K8/pp4HgWmrvjBHGaSHmtsHUdd2R9UHCPNYQkHHl8ol9kHahil6cU2jrysWSb0+Xv Mt4ESLoirXjPgGxuzPmc7YSEtdGjxBUJfv5sbPOe9l501ZXEhHJPNydxjN6D5vZUe0R3Blf1yOn 9NIprRIDX7kuy7wcn2fCx7y41mbDYgTkA3UackHh1NMA= X-Received: by 2002:a05:600d:8494:10b0:490:c7dd:de3e with SMTP id 5b1f17b1804b1-490ec521187mr100016235e9.31.1781464156379; Sun, 14 Jun 2026 12:09:16 -0700 (PDT) X-Received: by 2002:a05:600d:8494:10b0:490:c7dd:de3e with SMTP id 5b1f17b1804b1-490ec521187mr100016035e9.31.1781464155816; Sun, 14 Jun 2026 12:09:15 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:13 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Thomas Huth , Paolo Bonzini , Richard Henderson Subject: [PULL 084/106] hw/i386/pc: Add a proper owner for the ioport memory regions Message-ID: <653f3b5a15bbc3db564639f7ee50c547f61a002c.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464315543158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Thomas Huth Without a proper owner, the memory regions show up in /machine/unattached in the QOM tree, which is something that should be avoided. Signed-off-by: Thomas Huth Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260217141827.534426-1-thuth@redhat.com> --- hw/i386/pc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 2ecad3c503..a6958b4054 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1051,10 +1051,12 @@ void pc_basic_device_init(struct PCMachineState *pc= ms, MemoryRegion *ioportF0_io =3D g_new(MemoryRegion, 1); X86MachineState *x86ms =3D X86_MACHINE(pcms); =20 - memory_region_init_io(ioport80_io, NULL, &ioport80_io_ops, NULL, "iopo= rt80", 1); + memory_region_init_io(ioport80_io, OBJECT(pcms), &ioport80_io_ops, NUL= L, + "ioport80", 1); memory_region_add_subregion(isa_bus->address_space_io, 0x80, ioport80_= io); =20 - memory_region_init_io(ioportF0_io, NULL, &ioportF0_io_ops, NULL, "iopo= rtF0", 1); + memory_region_init_io(ioportF0_io, OBJECT(pcms), &ioportF0_io_ops, NUL= L, + "ioportF0", 1); memory_region_add_subregion(isa_bus->address_space_io, 0xf0, ioportF0_= io); =20 /* --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464328; cv=none; d=zohomail.com; s=zohoarc; b=aJNqOOWZqr1sZjRTAF6nq2ZXbuTj7y72r5hKhRwoR/YS18WOSVuai15ucBdCTJLjBivkgrERVvt6CUOslIMlymZDpazfwqHn0tq8vt/PI1H5lJviwsqtUnEaCB0PBTonlRth99WbysLthncU0b02TVcf91H30UoJtHpk/s58frg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464328; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hMSjzoHh5eLV9v+BiMfQgZHJ14Xa1/fuSL+UsKHzc9Y=; b=TVE4OgdYJCKvvZFfwmi2+hu0EpRxlHSeWuUNyOlr/lTBbYBv+KZcLRxu1OakoWXgU3HaJUr0eSjwznd3PiTvb3c1x+qfIlFfMlVTrIWzxMqW+0rVpvakj/4uo9VS3+UHgDwWAMeJlGd35mVeNA5LnFS3V0ya24Y0QIOz60Fatys= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464328592845.5377445728384; Sun, 14 Jun 2026 12:12:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDM-0008CL-Tk; Sun, 14 Jun 2026 15:09:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCy-0007Yb-9O for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:30 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCw-0002Zl-D0 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:24 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-635-ZaU4qouUNmixCiociC3mHg-1; Sun, 14 Jun 2026 15:09:20 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490b79e6b94so22238985e9.2 for ; Sun, 14 Jun 2026 12:09:20 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922031b7d2sm197621255e9.5.2026.06.14.12.09.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464161; 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=hMSjzoHh5eLV9v+BiMfQgZHJ14Xa1/fuSL+UsKHzc9Y=; b=il5VeGm/WYOsL2EpgvOLPVixM6PQA5/yvEkEB36unkS1LsjZFF1OHH8T7ve3kO8dlVVtiO nZ4zVDZDeICCsicdcNmT/pDw0EOcxfhAYh39KsEH8uNKc0XoKu8fJtLdFCWg8OL4crZhWa vqGT/k4HSHmZmrychiqy+ySSDe9eqxQ= X-MC-Unique: ZaU4qouUNmixCiociC3mHg-1 X-Mimecast-MFC-AGG-ID: ZaU4qouUNmixCiociC3mHg_1781464159 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464159; x=1782068959; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=hMSjzoHh5eLV9v+BiMfQgZHJ14Xa1/fuSL+UsKHzc9Y=; b=dMVaQoNO++B6JsynkfLuzwIXo/F9P8w75+K8laEGxE3qgdlRt0CqAQjsYTjsRAGdTv aVRH8UYaCAhe4AWfcrcc9khAMi171ja/UYJXP1F+FNj1aKKrVes0svXXD/gHWAQHEKeI t8Tr16lpG50DQnwwYL/923tbUMeOJ+HSrHuDw6UVIA3xXVILV0i9QeNAp3tz0Rx7/DzS nYLAjXssotTm/ucbRdAkJZVcliUW3RJXdNFRFot33KRYo1UtyWAGw/lc82uePont50mn hD1lIo4L+uHgIQMhtWz4vvCyf3FJylQOrv2PkTedu5uTRKNNB1/dhu8mhnO/K9+iYc5F bwUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464159; x=1782068959; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=hMSjzoHh5eLV9v+BiMfQgZHJ14Xa1/fuSL+UsKHzc9Y=; b=XQzlk5MCa7+vx0VeNnsDdb8msrMccC+A4BQs1EbsGsZ60VsDSxvQOSUllq9v8nQ809 9K38dQKyY2mwX9t9FS5uNJDKKGb/Qa71x5Rl8skFLHpnO3dqVJIH0xO2GJOK8CuJOwUy jnG5Z8f8/0HYuSU61Xl03hDYjlAu5jn/kGUP3NO46PHJ+BgXzP2FWem9FRuPxMZcb9n9 jHiPiKZsUuzciCDsg6Rd8aHg2BSj5JWBclhLZ3TQLRJwm0WEpdFQWUYgbxkN5bQ4X+5b TC3k9F0nt9gRtwexVH4TJXdfOMGwz7uBN+olhoRrMaY37EGYxg0TRYzyp+K+miw2WUGd 2ZDw== X-Gm-Message-State: AOJu0YxcpgeWU5bbWDv36hnDYn2WttCMATAzLdE9XxJ1sPV0zumf7jWl H+HYeHJnzaVX3Ha1A0F2vWbfYkPLk2emwEFC6I53+9jVIi57LSPexSL5BQ0y9z/yerpem5H6MPA JKa8rqMHlOi2swhWlh+MMOXXqw3hhrApTtGJ2+lFq1B3zieBf3w5b/BmlpCRYyFI+R86OUpIyRy AIiEgrK0GlJ9yZ/ri52LtiH3Zcp4r3kZJq3g== X-Gm-Gg: Acq92OFR3Op7Lga2AEEpckV08rUC8oQBp+6r0y8QgZkSlQCA7neC7SnNWRg2AFVU0yg W+oi1wOZ/I/PFo9L6Gzk0CadAAeTZKKj4akyOXHW6v9oLaqdAJlI1LtnbK8AJpdBf/Bft9yL/69 hj6o5CZuHKAVZ4SXP3NzehB0CO/m/T2vXy0qGKLaA2O1sxurLUgYFZaRtTc+A0z8Lg20tRBg26L eOEgfOtYeaBrAto0o/cu4C+oPuKQseMeuSXOqxarHscj16X3+OMZq65ymXKoMOTFbLTsLZVRtfF fwdbf1U4Fq2x/uw1gJrMBd+AHrsBShRNLIf5k7MTjHy3/hJndsZd/9sT72F5OG2EIAh6Jz6v3M9 PWmUcJ+rOgUqhIGUj5DMkm670jQJCvt8MQ9fIQlAaq6E= X-Received: by 2002:a05:600c:314a:b0:490:e1a6:261 with SMTP id 5b1f17b1804b1-490ec5092c8mr137640835e9.26.1781464159186; Sun, 14 Jun 2026 12:09:19 -0700 (PDT) X-Received: by 2002:a05:600c:314a:b0:490:e1a6:261 with SMTP id 5b1f17b1804b1-490ec5092c8mr137640545e9.26.1781464158570; Sun, 14 Jun 2026 12:09:18 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:15 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha , Zhao Liu , Eric Auger Subject: [PULL 085/106] acpi: add API to build WDAT instructions Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464329570158500 From: Igor Mammedov Add definitions for WDAT[1] actions/instructions and build_append_wdat_ins() API to build table entries. 1) "Hardware Watchdog Timers Design=C2=A0Specification" https://uefi.org/acpi 'Watchdog Action Table (WDAT)' Signed-off-by: Igor Mammedov Reviewed-by: Ani Sinha Reviewed-by: Zhao Liu Reviewed-by: Michael S. Tsirkin Message-Id: <20260303092532.2410177-2-imammedo@redhat.com> Reviewed-by: Eric Auger Signed-off-by: Michael S. Tsirkin --- hw/acpi/aml-build.c | 14 +++++ include/hw/acpi/wdat.h | 118 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 include/hw/acpi/wdat.h diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index 413d9b6240..9b3cdd3781 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -35,6 +35,7 @@ #include "hw/acpi/acpi_aml_interface.h" #include "qemu/cutils.h" #include "hw/core/cpu.h" +#include "hw/acpi/wdat.h" =20 static GArray *build_alloc_array(void) { @@ -2872,3 +2873,16 @@ void qbus_build_aml(BusState *bus, Aml *scope) call_dev_aml_func(DEVICE(kid->child), scope); } } + +void build_append_wdat_ins(GArray *table_data, + WDATAction action, uint8_t flags, + struct AcpiGenericAddress as, + uint32_t val, uint32_t mask) +{ + build_append_int_noprefix(table_data, action, 1); /* Watchdog Actio= n */ + build_append_int_noprefix(table_data, flags, 1); /* Instruction Fl= ags */ + build_append_int_noprefix(table_data, 0, 2); /* Reserved */ + build_append_gas_from_struct(table_data, &as); /* Register Regio= n */ + build_append_int_noprefix(table_data, val, 4); /* Value */ + build_append_int_noprefix(table_data, mask, 4); /* Mask */ +} diff --git a/include/hw/acpi/wdat.h b/include/hw/acpi/wdat.h new file mode 100644 index 0000000000..89803eef4b --- /dev/null +++ b/include/hw/acpi/wdat.h @@ -0,0 +1,118 @@ +/* + * Watchdog Action Table (WDAT) definitions + * + * Copyright Red Hat, Inc. 2026 + * Author(s): Igor Mammedov + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#ifndef QEMU_HW_ACPI_WDAT_H +#define QEMU_HW_ACPI_WDAT_H + +#include "hw/acpi/acpi-defs.h" + +/* + * Watchdog actions as described in + * "Hardware Watchdog Timers Design=C2=A0Specification" + * for link to spec see https://uefi.org/acpi + * 'Watchdog Action Table (WDAT)' + */ +typedef enum { + /* + * Restarts the watchdog timer's countdown. This action is + * required. + */ + WDAT_ACTION_RESET =3D 0x1, + /* + * Returns the current countdown value of the watchdog hardware + * (in count intervals). + */ + WDAT_ACTION_QUERY_CURRENT_COUNTDOWN_PERIOD =3D 0x4, + /* + * Returns the countdown value the watchdog hardware is + * configured to use when reset (in count intervals). + */ + WDAT_ACTION_QUERY_COUNTDOWN_PERIOD =3D 0x5, + /* + * Sets the countdown value (in count intervals) to be used when + * the watchdog timer is reset. This action is required if + * WDAT_ACTION_RESET does not explicitly write a new + * countdown value to a register during a reset. Otherwise, this + * action is optional. + */ + WDAT_ACTION_SET_COUNTDOWN_PERIOD =3D 0x6, + /* + * Determines if the watchdog hardware is currently in enabled/ + * running state. The same result must occur when performed from + * both from enabled/stopped state and enabled/running state. If + * the watchdog hardware is disabled, results are indeterminate. + * This action is required. + */ + WDAT_ACTION_QUERY_RUNNING_STATE =3D 0x8, + /* + * Starts the watchdog, if not already in running state. If the + * watchdog hardware is disabled, results are indeterminate. + * This action is required. + */ + WDAT_ACTION_SET_RUNNING_STATE =3D 0x9, + /* + * Determines if the watchdog hardware is currently in enabled/ + * stopped state. The same result must occur when performed from + * both the enabled/stopped state and enabled/running state. If + * the watchdog hardware is disabled, results are indeterminate. + * This action is required. + */ + WDAT_ACTION_QUERY_STOPPED_STATE =3D 0xA, + /* + * Stops the watchdog, if not already in stopped state. If the + * watchdog hardware is disabled, results are indeterminate. + * This action is required. + */ + WDAT_ACTION_SET_STOPPED_STATE =3D 0xB, + /* + * Determines if the watchdog hardware is configured to perform a + * reboot when the watchdog is fired. + */ + WDAT_ACTION_QUERY_REBOOT =3D 0x10, + /* + * Configures the watchdog hardware to perform a reboot when it + * is fired. + */ + WDAT_ACTION_SET_REBOOT =3D 0x11, + /* + * Determines if the watchdog hardware is configured to perform a + * system shutdown when fired. + */ + WDAT_ACTION_QUERY_SHUTDOWN =3D 0x12, + /* + * Configures the watchdog hardware to perform a system shutdown + * when fired. + */ + WDAT_ACTION_SET_SHUTDOWN =3D 0x13, + /* + * Determines if the current boot was caused by the watchdog + * firing. The boot status is required to be set if the watchdog + * fired and caused a reboot. It is recommended that the + * Watchdog Status be set if the watchdog fired and caused a + * shutdown. This action is required. + */ + WDAT_ACTION_QUERY_WATCHDOG_STATUS =3D 0x20, + /* + * Sets the watchdog's boot status to the default value. This + * action is required. + */ + WDAT_ACTION_SET_WATCHDOG_STATUS =3D 0x21, +} WDATAction; + +#define WDAT_INS_READ_VALUE 0x0 +#define WDAT_INS_READ_COUNTDOWN 0x1 +#define WDAT_INS_WRITE_VALUE 0x2 +#define WDAT_INS_WRITE_COUNTDOWN 0x3 +#define WDAT_INS_PRESERVE_REGISTER 0x80 + +void build_append_wdat_ins(GArray *table_data, + WDATAction action, uint8_t flags, + struct AcpiGenericAddress as, + uint32_t val, uint32_t mask); + +#endif /* QEMU_HW_ACPI_WDAT_H */ --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464320; cv=none; d=zohomail.com; s=zohoarc; b=EboHI9dsDcwA3cgWqpVUHzQMLLy9zut2yLzGEcG8amxurOYYV2kvPEYXGuJofh8G6quwZ5GEUyettt7dz72vSob2rhcSxk4ZPDaV94Rh4ucZcyW5YyT/eSzUQ7kC9NQF73P6FCWfrfWlnjnCmmEZn0RAI4lsPsJe3C6+Cujop3Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464320; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VFYJL+moHp7Nhp/WdZk9yxo8Dl31jRMqPIYW7M964RY=; b=WohUBfjd45t9INS3wn2msHrgH5lsTN9UrZTlb7XpGmPlo+Tu5hJZ4JhM0YsYsze63UUhhST5Xcnzz+0juXzRSK+9Qcft2I7A7jb9Ed8mL18KkJpzXjJdFuNok2MedgOUue8xckb5G+jg2bAvqbfpvY5b8Ck7VVEGq2oZscI6mYQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146432042034.84472812755007; Sun, 14 Jun 2026 12:12:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDN-0008LI-TJ; Sun, 14 Jun 2026 15:09:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqD0-0007Yi-M3 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqCz-0002df-4n for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:26 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-452-0wqHOVdEMtGY94OfLQqH5A-1; Sun, 14 Jun 2026 15:09:23 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490ae0167ceso12787565e9.1 for ; Sun, 14 Jun 2026 12:09:23 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922037ba81sm178164595e9.15.2026.06.14.12.09.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464164; 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: in-reply-to:in-reply-to:references:references; bh=VFYJL+moHp7Nhp/WdZk9yxo8Dl31jRMqPIYW7M964RY=; b=MU7J8ELTXLXrhwHnAHJedw94mlbWuvfS8VtcNRwnyJuGKLGRL6kTf6V7sDX79WGMX9gY3z ULnuteE2RWvwKMMf0vCpZ3T7kQnBBZctK4q01RDnTTpFOFuORwhU8whZgsxq6kyEL3yMIv hiLxE/Mc8PZuHP2aVhFzUXToD+valKI= X-MC-Unique: 0wqHOVdEMtGY94OfLQqH5A-1 X-Mimecast-MFC-AGG-ID: 0wqHOVdEMtGY94OfLQqH5A_1781464162 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464162; x=1782068962; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=VFYJL+moHp7Nhp/WdZk9yxo8Dl31jRMqPIYW7M964RY=; b=l01DoVt5AarucxeIcxq/4PpMi06wE+ZrDqOfhvkJkkAV+QjrWTfIKiubcleeGGlF0l aR1ZYD7kcdI29cB6MvDoc6BTq2B3Ou2UoJDH3DJryOhkiJYZbzYRk7Ip5lN1fIFyiseV TwWx8WwC4A+mS2yITIe9GGRu3Lt+HK1M1o+yvGBsi3QsvrsAKuZgWvcps+IhMO+1Zp0P qC9P4f1RaDr0rEVgI0ZTd2H8zAm4py89rjb6tcO4Zdp1El1zRouNBd4GzUKhiDC1t8U5 24FODgyDQr6wSppr+0Ce46zTUqEctWa0NLCTB5zBIkKQjm5T7WvOq9LYinJ+zxRIQkVi 2ulg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464162; x=1782068962; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VFYJL+moHp7Nhp/WdZk9yxo8Dl31jRMqPIYW7M964RY=; b=E1TwM3UTqlz9+fpaSe+nzgRpqmEWyxge2AWT8IUYsXH2T4TGvrnBZfDZi/CQu7uEk3 eN+CMFWQAmLSqz+8BnmrFmuR5rLQtceSVdfTk9eKmeFIHo2oztUFNWpcHO7AnZxoW1Ei kwnPmBtzLvRIqF54HQgbcTdL+PkdwLCPHHeC8OjE468Sn8l0shIM1WPOZ+faOWDOhHVA sNSV0FfwiJD6+g2ujKE3Wl0rcGv4c2ALtE3QoqwqJIuyiDcb9+CwZGwcdpowaSCopMX5 NDoImAwapUYXfMpgNzYyivf1junJ8ZG3CDDW+rU4W85EsEZ+eqhpfv5lxCmzHtJsgYj3 LnOA== X-Gm-Message-State: AOJu0YyDd0xikl8D5ipzqBCUjqxYTy/u+K2Ycr48g1zie4FSgZOeLRMI sVWsXq3il5vDWFyJgviw0BgzbNmfk+wlLWclYS+/0zVAikwNJ5lLpFvWcfnwpf2O3zy2+y+v2TP MD2OAUFz4XDIpAweHr2E9lfZ05mD5elHr4WcgrrKpmDefRyxZiG8Zs3/vy+frPYDHWAHB6X8KbD wf3h6MOkh8hi8sh3nF/JRsw25Pb4K9W02Tng== X-Gm-Gg: Acq92OGGIVQEoq5XugjzyLjrj/nVqYIC4249ulO3sHm2vBunxEe9VobWSqDMrD6pMYe h5aVZFWK8ft+K+kVWPH8HscfP+NEK5FP45I4fKaey3OwMxfr+Izt5a+zBog7V7GLW2gw7zKKfEW Zxfiiu7tCkxadAGcGfwiI/TsK21t+7FbuylVImRSV0r4J4bwSfyFIw5bNjeELxMd7u+LKFQ0Wrl I9eoK36tA4eNyGMaCntFeE2i9EnZJrlzofJjI+U9nABB6vXzwFIC0IYuDTVXuUULChuKP/TPnEl PIZXzPpZyTAhf5r8CbOkvU2EWMcSXYCK9/yYKJxWcKa3xcz31VN7XXMa6tXJqa3RwFZ/HYRLkWi wGTcF2BKsSG6mmfOYpcH4/ik7A/R85Ovmx0Z9aHBgFE4= X-Received: by 2002:a05:600c:c8a:b0:490:e0e3:9587 with SMTP id 5b1f17b1804b1-490ec51f748mr138865105e9.31.1781464162103; Sun, 14 Jun 2026 12:09:22 -0700 (PDT) X-Received: by 2002:a05:600c:c8a:b0:490:e0e3:9587 with SMTP id 5b1f17b1804b1-490ec51f748mr138864805e9.31.1781464161476; Sun, 14 Jun 2026 12:09:21 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:18 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Zhao Liu , Ani Sinha , Paolo Bonzini , Richard Henderson Subject: [PULL 086/106] x86: q35: add 'wdat' property Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464321464158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Used for enabling WDAT based watchdog for builtin iTCO watchdog. Usage: -M q35,wdat=3D{on|off} By default it is disabled. Signed-off-by: Igor Mammedov Reviewed-by: Zhao Liu Reviewed-by: Ani Sinha Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260303092532.2410177-3-imammedo@redhat.com> --- hw/i386/pc_q35.c | 18 ++++++++++++++++++ include/hw/i386/pc.h | 1 + 2 files changed, 19 insertions(+) diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index d8fed698c7..6c1e4eff5f 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -331,6 +331,18 @@ static void pc_q35_init(MachineState *machine) } } =20 +static bool pc_q35_machine_get_wdat(Object *o, Error **errp) +{ + PCMachineState *pcms =3D PC_MACHINE(o); + return pcms->wdat_enabled; +} + +static void pc_q35_machine_set_wdat(Object *o, bool value, Error **errp) +{ + PCMachineState *pcms =3D PC_MACHINE(o); + pcms->wdat_enabled =3D value; +} + #define DEFINE_Q35_MACHINE(major, minor) \ DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, NULL, majo= r, minor); =20 @@ -343,6 +355,7 @@ static void pc_q35_init(MachineState *machine) static void pc_q35_machine_options(MachineClass *m) { PCMachineClass *pcmc =3D PC_MACHINE_CLASS(m); + ObjectClass *oc =3D OBJECT_CLASS(m); pcmc->pci_root_uid =3D 0; pcmc->default_cpu_version =3D 1; =20 @@ -361,6 +374,11 @@ static void pc_q35_machine_options(MachineClass *m) machine_class_allow_dynamic_sysbus_dev(m, TYPE_RAMFB_DEVICE); machine_class_allow_dynamic_sysbus_dev(m, TYPE_VMBUS_BRIDGE); machine_class_allow_dynamic_sysbus_dev(m, TYPE_UEFI_VARS_X64); + object_class_property_add_bool(oc, "wdat", + pc_q35_machine_get_wdat, pc_q35_machine_set_wdat); + object_class_property_set_description(oc, "wdat", + "Enable WDAT watchdog support. Default: off"); + compat_props_add(m->compat_props, pc_q35_compat_defaults, pc_q35_compat_defaults_len); } diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 85a74363b5..d4b6d3ed57 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -45,6 +45,7 @@ typedef struct PCMachineState { const char *south_bridge; =20 bool acpi_build_enabled; + bool wdat_enabled; bool smbus_enabled; bool sata_enabled; bool hpet_enabled; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464398; cv=none; d=zohomail.com; s=zohoarc; b=dVhfb6CskOyBlVPBspUMY0WRijOYCEdW1+XEcTLC5Te7JJiDvuJUiTOy0fJ3aRadENTl1ScyqmAWjbDJz6Gn8dVz1gB2IHbQZ/XIDynxFSOfBUPwthLzz93O+7UwZ/gsGOg5qh46U3oWcH39wm8wqc+ZKXCp0uC7HMvY0bEIFgs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464398; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7mhm2Z0+zF7FCJcUlbFK2dWY8j2xichPXZTo2x7IOY8=; b=AVIafqUu33nG84FGhXNUGpUeB8npUx7b94GzXnUy3q5CypLSLEmHUo+43XqeBGoIbVsy81mIMHrcZw3Et2V7sWbMLLG0AyO+B/NS1TG+FFwqlfAQKoevfIoPa0fC2cgFEUOTj9gxfenna58NwsRK4liFK71WhVnpklIOsYRtGVw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464398759314.2456105527044; Sun, 14 Jun 2026 12:13:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDP-0000Ao-LY; Sun, 14 Jun 2026 15:09:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqD4-0007Z3-9W for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqD1-0002e7-IN for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:30 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-142-oa_8DS0ZNCa2Rc1cFVk_xw-1; Sun, 14 Jun 2026 15:09:25 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-490e547f3cfso24343395e9.3 for ; Sun, 14 Jun 2026 12:09:25 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4619a041986sm3218801f8f.23.2026.06.14.12.09.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464167; 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=7mhm2Z0+zF7FCJcUlbFK2dWY8j2xichPXZTo2x7IOY8=; b=UsZ4eXQqBDaYOPvouHB8sK4/Ajkh1YZEGSBxg58aM2fWmuyS6lSPChQd1LXuYL2gi8x2dl Bt5R4Zu8qi+tOkZ3UH16X5LYb7HhHoe/ZIQVjYEcZcwQhwcW613rIU8iwq88j64m+iDo3i 8EclXqBikE4eDkrODZ3eZGhmVK9VT00= X-MC-Unique: oa_8DS0ZNCa2Rc1cFVk_xw-1 X-Mimecast-MFC-AGG-ID: oa_8DS0ZNCa2Rc1cFVk_xw_1781464165 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464164; x=1782068964; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=7mhm2Z0+zF7FCJcUlbFK2dWY8j2xichPXZTo2x7IOY8=; b=acQqBRwJ8ykXgYG8FD6fZ+EAHuupO1v2PAGkw8HdbNrqd1l+OoZbrIrFpszTJN3rJo /GlTXFPRIHNZM+4x5uNEaFXltLmP0jASn9M3mFLk5EnCFU+8cCtwB1l6VmVE7q9knIh2 IvwwqOYbV5PDEQgW+kR2hoUrDkthFtj1APlSsh89yodcEWpmWrFHXUmOKEIQ5aJp7RA9 WzbeFyYo7fozypfhKz8ofAqpXLoqCK8aMW97V8BHKOy4dDEFTYcgz+9uFzjHQKku9L26 Mwd3U9gvRMtTT8Q/nSHWrcu8yJMV+TZPbbRbUA681Yg6fwUD/ah1MNBZaGysBvyr/7hI Cm5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464164; x=1782068964; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7mhm2Z0+zF7FCJcUlbFK2dWY8j2xichPXZTo2x7IOY8=; b=sYBaSHc65HNtucuyE6x/MQ4s+CtPIawkq5JJUenUhbtCvKO4765QaApScyiev6J7+5 Lo9Kgth5Gm4hanknPFsemEA+qOcsk/fq1pezUmPrlPsnpLeFgkoBnqc+V3gcOe/bSta2 EdckAIIKXruY760y464sQygIcH+v2n1HE9Xemzto1/CO3PvyWVEiO8J5cvs/CdwNvgRr rkiLlhTu/aPeggj3NoVU/8cABA3YFd17xsN5o20vQ/Qi/70+M0Pt+PeqUcBqnV8MeHsQ 3FwAC8qEDPfIeYXIrQjASSjQBcbQdR3C4ad8HSG2wNWY0LTmDOd78VuI5oqr3jUTpxQU trqA== X-Gm-Message-State: AOJu0YwsgQsyTlN/2VH85lLjo5El6k90ifcgLm8alxkXL/kcIUARl+GB 8nB6gBl5e8FFBDi20OB9xWPyKKjx6LvFhuIGIM/2lTFj6PejDV8dYdJDOgfhpRw2JNAsV15u5Ky uk5SyMnBmOh5K3OkLwWGjqa79ZMkF1F8F93j0mvIokutvMc6nIDmEK5DOY515xbRxpoFfuDFVIQ cns2o6bo6SLlCqCnQ7DxE12sFzYofRL4UK/Q== X-Gm-Gg: Acq92OGl6jaHisgSeFPfmd2+AcnBTeLOsejt3DyN7Dby8SBESM3zuOIHG45bXggM6am 204eT5Oxt6pVpnMUFHowVWS3kvKsGPoPVQRwSEvWn3vuAtwcCQhYS7VXeaSo8w1zFXQnpgpTpno O/+FpZVd0qMvt2E5U7DocZWxou0SAvbdH/bcnuhZcqGrcs6+srfl9+ieqVLK1ZYwhXMyjrTZRWL x/g/pxSuEl5+ZKQijWnLNfekdW4rL1RHWp8t8NewKfBMMyB5ai/GHvHG1pH8Tl7PHmrxtlB7FBe E7bFqC11RDESK7P2fAlbpri4hYTgoIRjoqC/p6RRHhUKnjvgYIZgFOHd95C3OXaLL8FvVoShq0x oBlcWRGQ6nALTNhtXJJHnkDb8vMpdfN3Gv/A/741KFeE= X-Received: by 2002:a05:600c:a47:b0:490:52c0:744c with SMTP id 5b1f17b1804b1-490ec4ee63cmr139784365e9.20.1781464164396; Sun, 14 Jun 2026 12:09:24 -0700 (PDT) X-Received: by 2002:a05:600c:a47:b0:490:52c0:744c with SMTP id 5b1f17b1804b1-490ec4ee63cmr139784065e9.20.1781464163799; Sun, 14 Jun 2026 12:09:23 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:21 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha , Zhao Liu , Paolo Bonzini , Richard Henderson Subject: [PULL 087/106] x86: q35: generate WDAT ACPI table Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464399901158500 From: Igor Mammedov It will generate WDAT table [1] customized for TCO watchdog. This allows Windows guests (Windows Server 2008/Vista+) to use TCO watchdog using built-in generic driver, which alleviates need to install vendor specific drivers. Given that enabling it might change guest behaviour (both Windows/Linux) the feature is disabled by default. Users that need it can enable the feature with following CLI option. -machine wdat=3Don 1) "Hardware Watchdog Timers Design=C2=A0Specification" https://uefi.org/acpi 'Watchdog Action Table (WDAT)' Signed-off-by: Igor Mammedov Reviewed-by: Ani Sinha Reviewed-by: Zhao Liu Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260303092532.2410177-4-imammedo@redhat.com> --- hw/acpi/meson.build | 3 +- hw/acpi/wdat-ich9-stub.c | 15 +++++++ hw/acpi/wdat-ich9.c | 90 +++++++++++++++++++++++++++++++++++++ hw/i386/acpi-build.c | 12 +++++ include/hw/acpi/wdat-ich9.h | 15 +++++++ 5 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 hw/acpi/wdat-ich9-stub.c create mode 100644 hw/acpi/wdat-ich9.c create mode 100644 include/hw/acpi/wdat-ich9.h diff --git a/hw/acpi/meson.build b/hw/acpi/meson.build index 1c5251909b..0c7bfb278a 100644 --- a/hw/acpi/meson.build +++ b/hw/acpi/meson.build @@ -25,7 +25,8 @@ acpi_ss.add(when: 'CONFIG_ACPI_PCI_BRIDGE', if_true: file= s('pci-bridge.c')) acpi_ss.add(when: 'CONFIG_ACPI_PCIHP', if_true: files('pcihp.c')) stub_ss.add(files('acpi-pci-hotplug-stub.c')) acpi_ss.add(when: 'CONFIG_ACPI_VIOT', if_true: files('viot.c')) -acpi_ss.add(when: 'CONFIG_ACPI_ICH9', if_true: files('ich9.c', 'ich9_tco.c= ', 'ich9_timer.c')) +acpi_ss.add(when: 'CONFIG_ACPI_ICH9', if_true: files('ich9.c', 'ich9_tco.c= ', 'ich9_timer.c', 'wdat-ich9.c')) +stub_ss.add(files('wdat-ich9-stub.c')) acpi_ss.add(when: 'CONFIG_ACPI_ERST', if_true: files('erst.c')) acpi_ss.add(when: 'CONFIG_IPMI', if_true: files('ipmi.c')) stub_ss.add(files('ipmi-stub.c')) diff --git a/hw/acpi/wdat-ich9-stub.c b/hw/acpi/wdat-ich9-stub.c new file mode 100644 index 0000000000..7c30ef3558 --- /dev/null +++ b/hw/acpi/wdat-ich9-stub.c @@ -0,0 +1,15 @@ +/* + * Copyright Red Hat, Inc. 2026 + * Author(s): Igor Mammedov + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/acpi/wdat-ich9.h" + +void build_ich9_wdat(GArray *table_data, BIOSLinker *linker, const char *o= em_id, + const char *oem_table_id, uint64_t tco_base) +{ + g_assert_not_reached(); +} diff --git a/hw/acpi/wdat-ich9.c b/hw/acpi/wdat-ich9.c new file mode 100644 index 0000000000..259c45c62d --- /dev/null +++ b/hw/acpi/wdat-ich9.c @@ -0,0 +1,90 @@ +/* + * TCO Watchdog Action Table (WDAT) + * + * Copyright Red Hat, Inc. 2026 + * Author(s): Igor Mammedov + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/acpi/wdat.h" +#include "hw/acpi/wdat-ich9.h" +#include "hw/southbridge/ich9.h" + +#define TCO_REG(base, reg_offset, reg_width) { .space_id =3D AML_AS_SYSTEM= _IO, \ + .address =3D base + reg_offset, .bit_width =3D reg_width, \ + .access_width =3D AML_WORD_ACC, }; + +/* + * "Hardware Watchdog Timers Design=C2=A0Specification" + * https://uefi.org/acpi 'Watchdog Action Table (WDAT)' + * + * ICH9 specific implementation. + */ +void build_ich9_wdat(GArray *table_data, BIOSLinker *linker, const char *o= em_id, + const char *oem_table_id, uint64_t tco_base) +{ + AcpiTable table =3D { .sig =3D "WDAT", .rev =3D 1, .oem_id =3D oem_id, + .oem_table_id =3D oem_table_id }; + struct AcpiGenericAddress tco_rld =3D TCO_REG(tco_base, 0x0, 16); + struct AcpiGenericAddress tco2_sts =3D TCO_REG(tco_base, 0x6, 16); + struct AcpiGenericAddress tco1_cnt =3D TCO_REG(tco_base, 0x8, 16); + struct AcpiGenericAddress tco_tmr =3D TCO_REG(tco_base, 0x12, 16); + + acpi_table_begin(&table, table_data); + build_append_int_noprefix(table_data, 0x20, 4); /* Watchdog Header Len= gth */ + build_append_int_noprefix(table_data, 0xff, 2); /* PCI Segment */ + build_append_int_noprefix(table_data, 0xff, 1); /* PCI Bus Number */ + build_append_int_noprefix(table_data, 0xff, 1); /* PCI Device Number */ + build_append_int_noprefix(table_data, 0xff, 1); /* PCI Function Number= */ + build_append_int_noprefix(table_data, 0, 3); /* Reserved */ + /* + * limits/resolution are defined by ICH9 TCO spec + */ + build_append_int_noprefix(table_data, 0x258, 4);/* Timer Period, ms */ + build_append_int_noprefix(table_data, 0x3ff, 4);/* Maximum Count */ + build_append_int_noprefix(table_data, 0x4, 4); /* Minimum Count */ + /* + * WATCHDOG_ENABLED & WATCHDOG_STOPPED_IN_SLEEP_STATE + */ + build_append_int_noprefix(table_data, 0x81, 1); /* Watchdog Flags */ + build_append_int_noprefix(table_data, 0, 3); /* Reserved */ + /* + * watchdog instruction entries + */ + build_append_int_noprefix(table_data, 10 /* # of actions below */, 4); + /* Action table */ + build_append_wdat_ins(table_data, WDAT_ACTION_RESET, + WDAT_INS_WRITE_VALUE, + tco_rld, 0x1, 0x1ff); + build_append_wdat_ins(table_data, WDAT_ACTION_QUERY_RUNNING_STATE, + WDAT_INS_READ_VALUE, + tco1_cnt, 0x0, 0x800); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_RUNNING_STATE, + WDAT_INS_WRITE_VALUE | WDAT_INS_PRESERVE_REGISTER, + tco1_cnt, 0, 0x800); + build_append_wdat_ins(table_data, WDAT_ACTION_QUERY_STOPPED_STATE, + WDAT_INS_READ_VALUE, + tco1_cnt, 0x800, 0x800); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_STOPPED_STATE, + WDAT_INS_WRITE_VALUE | WDAT_INS_PRESERVE_REGISTER, + tco1_cnt, 0x800, 0x800); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_COUNTDOWN_PERIOD, + WDAT_INS_WRITE_COUNTDOWN, + tco_tmr, 0x0, 0x3FF); + build_append_wdat_ins(table_data, WDAT_ACTION_QUERY_COUNTDOWN_PERIOD, + WDAT_INS_READ_COUNTDOWN, + tco_tmr, 0x0, 0x3FF); + build_append_wdat_ins(table_data, WDAT_ACTION_QUERY_WATCHDOG_STATUS, + WDAT_INS_READ_VALUE, + tco2_sts, 0x2, 0x2); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_WATCHDOG_STATUS, + WDAT_INS_WRITE_VALUE | WDAT_INS_PRESERVE_REGISTER, + tco2_sts, 0x2, 0x2); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_WATCHDOG_STATUS, + WDAT_INS_WRITE_VALUE | WDAT_INS_PRESERVE_REGISTER, + tco2_sts, 0x4, 0x4); + + acpi_table_end(linker, &table); +} diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 0d7c83d5e9..2ee061558c 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -78,6 +78,7 @@ =20 #include "hw/acpi/hmat.h" #include "hw/acpi/viot.h" +#include "hw/acpi/wdat-ich9.h" =20 #include CONFIG_DEVICES =20 @@ -110,6 +111,7 @@ typedef struct AcpiPmInfo { uint16_t cpu_hp_io_base; uint16_t pcihp_io_base; uint16_t pcihp_io_len; + uint64_t tco_io_base; } AcpiPmInfo; =20 typedef struct AcpiMiscInfo { @@ -204,6 +206,7 @@ static void acpi_get_pm_info(MachineState *machine, Acp= iPmInfo *pm) pm->pcihp_io_len =3D 0; pm->smi_on_cpuhp =3D false; pm->smi_on_cpu_unplug =3D false; + pm->tco_io_base =3D 0; =20 assert(obj); init_common_fadt_data(machine, obj, &pm->fadt); @@ -225,6 +228,8 @@ static void acpi_get_pm_info(MachineState *machine, Acp= iPmInfo *pm) !!(smi_features & BIT_ULL(ICH9_LPC_SMI_F_CPU_HOTPLUG_BIT)); pm->smi_on_cpu_unplug =3D !!(smi_features & BIT_ULL(ICH9_LPC_SMI_F_CPU_HOT_UNPLUG_BIT)); + pm->tco_io_base =3D object_property_get_uint(obj, ACPI_PM_PROP_PM_= IO_BASE, + NULL) + ICH9_PMIO_TCO_RLD; } pm->pcihp_io_base =3D object_property_get_uint(obj, ACPI_PCIHP_IO_BASE_PROP, NULL); @@ -2078,6 +2083,13 @@ void acpi_build(AcpiBuildTables *tables, MachineStat= e *machine) acpi_add_table(table_offsets, tables_blob); build_waet(tables_blob, tables->linker, x86ms->oem_id, x86ms->oem_tabl= e_id); =20 + if (pcms->wdat_enabled =3D=3D true) { + g_assert(pm.tco_io_base); + acpi_add_table(table_offsets, tables_blob); + build_ich9_wdat(tables_blob, tables->linker, x86ms->oem_id, + x86ms->oem_table_id, pm.tco_io_base); + } + /* Add tables supplied by user (if any) */ for (u =3D acpi_table_first(); u; u =3D acpi_table_next(u)) { unsigned len =3D acpi_table_len(u); diff --git a/include/hw/acpi/wdat-ich9.h b/include/hw/acpi/wdat-ich9.h new file mode 100644 index 0000000000..60a2a6a112 --- /dev/null +++ b/include/hw/acpi/wdat-ich9.h @@ -0,0 +1,15 @@ +/* + * Copyright Red Hat, Inc. 2026 + * Author(s): Igor Mammedov + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#ifndef QEMU_HW_ACPI_WDAT_ICH9_H +#define QEMU_HW_ACPI_WDAT_ICH9_H + +#include "hw/acpi/aml-build.h" + +void build_ich9_wdat(GArray *table_data, BIOSLinker *linker, const char *o= em_id, + const char *oem_table_id, uint64_t tco_base); + +#endif /* QEMU_HW_ACPI_WDAT_ICH9_H */ --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464325; cv=none; d=zohomail.com; s=zohoarc; b=ZJITCdah8GHqbw/TpX80BpXuNzaw7WI2tQu9mmWlvNdLs1wQrooFHBsArt6TdmXkBhzIZn8KLdklOgUtkiT8fF0ZmGVDbpuDAZ64gwHodnAC3vdMg7gIRDR82KRuKtbt7TTqmlLYjOEmBxD+0/G4nXfRwsjUgcLnCWkghJI1jiY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464325; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SWeGTj7EwdyIVL6K3gXCRmAsQCPB78CchrdftE53rGY=; b=BZydW/dza2pRYwMOTqKp3x6UMXMSTsGXzHsllGn0GFCPtWCrSAO7bPpXf/Iyj0kaAI3oA6YFyyI5t0RuayUB55kB5lNCmSEDNFfxmu3BXaGycFFdqLi73GBu6fRKwNsCtixcjqASl6dfU17QZuOShBKN+7vYdtG6xnUl3AQz0oY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464325409822.9340842292219; Sun, 14 Jun 2026 12:12:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDO-0008UC-QV; Sun, 14 Jun 2026 15:09:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqD5-0007Z4-Av for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:37 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqD3-0002eO-Mt for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:31 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-468-hfsI3Q6lPt-P6tJTSCSBuw-1; Sun, 14 Jun 2026 15:09:27 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-46010bc0f1eso1417683f8f.3 for ; Sun, 14 Jun 2026 12:09:27 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2e6a8fsm27253629f8f.37.2026.06.14.12.09.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464169; 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: in-reply-to:in-reply-to:references:references; bh=SWeGTj7EwdyIVL6K3gXCRmAsQCPB78CchrdftE53rGY=; b=MAqmJGGr69M09ZHoXqx1qTEkVpDxGPGUUeeVpTY2VZKgbVPVuf4ietOU9fEZXQpofLpFYW /2HAIVrpQqVnFEKZOdsDEIw4FNtvH86a5uZIJl1d+343Mcd9ayQXLSsrXEnUDae7ulDNz2 U5KKL74YKXqgUuBGSmOVpRTMhWQYmno= X-MC-Unique: hfsI3Q6lPt-P6tJTSCSBuw-1 X-Mimecast-MFC-AGG-ID: hfsI3Q6lPt-P6tJTSCSBuw_1781464167 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464166; x=1782068966; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=SWeGTj7EwdyIVL6K3gXCRmAsQCPB78CchrdftE53rGY=; b=VGnzilQMxSWL3+P2I5XHRq+tihf0Ljiiy9zFOCj1iLKL3OjSOGi6SF8podeaJnRyaS tofQUYL47LmJfOHb6ZgpEesRqDKmzW3Ll5wJ1TjI9Jh8KNxOuY0/z9Iovf7J3ouzd8ke rtWnYfuj11lValcPnELsXqsglIrjVl9kcsEHLTAovKZ522VUyawNVFnvBnZgNyrp5okX OnTKPcNLRJGvRAo/lkF6qTquX0ou9t8vGuQn5Wc0cSyHtFXavh00NMxa3v/lpRX2EGG2 5vgMt8Vtdaep04PJ2mcFQTeNHhLRyeUHwpa5osXEqxcDXB3jWhvSWXspdgjxD02qud5o FImw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464166; x=1782068966; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SWeGTj7EwdyIVL6K3gXCRmAsQCPB78CchrdftE53rGY=; b=U4ItS2iRJbbNbsMoBiNKwy/KskmLk2BonmMVl4MrFg+fypMEvCoV2raK6KDT2IohU7 OrLyaRe6jwhgG3CSw/z+gOBn0aM5FN50wSGi+3kW32QDycUX9+ZPF/10itIrMRIDiZ8I aYo4LHOCu7h0QRkV3gjYSP6V2xsuuFY6YuJLc/A8yvua1yClFiDdgpb25UdFhMrl6wXD dIiMFwmHqbrK6vsESUlpaAomSmnzdiCA1fsOPLuikFPQBadDrZ6Ueng8ZBtrj7CHy+Qf AQS02OKv5Vn3dT/Rycz+kC9gR1cIBvJzZGi9Ci2PcbuQ3x/GSuGSGjiHgoJ+d4PYzVj+ zxhw== X-Gm-Message-State: AOJu0YyJLWSRarwteKC8od0a9cvoMk/c1vc8LEn+dd9bLN6W5bqKhmZt oghFWCS2jzv+y6RSvQknJ/iUxLkApdbpj/nFQ5nUmJ1ZhJd4jI8En/H3FcIzCDUhpK2DVQxv/t4 DFszcjY5C6iOtwoM3OhoToWB0yQGrZkBSksvtUU9/GTBE8zAU3MuY9ult26DVzTRkt861kvLQ7K 4U9t8hbRcmdojC/Wgqaa2nWpOsyMdrwReVXg== X-Gm-Gg: Acq92OEwLXbm2unxIkWTSSd8v4Lk0ktdrC74FbDnilIepLJ9P4LO9fLG0HKcGERcDyt pEQPCPnrgcLEE6//xA/l8mHaisHRqeZCaVzgSTdv4pzT25S1qG99UVvKZHGyejUypAchHqJsq9u LBM3P+og/Cf/Qm3ZpCZpZ+ZGEUiNBE2VLHs/I/9dxaqXNvYOy9YaPNIH6ZEZuarRDV1hWJsqnJ9 65ioOz7H4KhLySq1QG7oWzu3cAhLpopzq95PWnHz0Ay0vt73Xv5b9ANwZa1FeShA/gsrt5VNlYx vlhGW19HwOMZY+6P+pZG33FgWUduS+nWwPeYR7o46rSfFBGgl4Oft7ZO6rblbKx/u6IcQ1aX+Bg HfKbtQ9jOC1Qb5cIaYC78gJGvs4ouUdSLeDbyweGDp9g= X-Received: by 2002:a05:6000:400c:b0:45e:9115:2982 with SMTP id ffacd0b85a97d-4606dba784bmr15552793f8f.34.1781464166444; Sun, 14 Jun 2026 12:09:26 -0700 (PDT) X-Received: by 2002:a05:6000:400c:b0:45e:9115:2982 with SMTP id ffacd0b85a97d-4606dba784bmr15552757f8f.34.1781464165923; Sun, 14 Jun 2026 12:09:25 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:23 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha , Zhao Liu Subject: [PULL 088/106] tests: acpi: x86/q35: whitelist new WDAT table Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464327484158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Signed-off-by: Igor Mammedov Acked-by: Ani Sinha Reviewed-by: Zhao Liu Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260303092532.2410177-5-imammedo@redhat.com> --- tests/data/acpi/x86/q35/WDAT.wdat | 0 tests/qtest/bios-tables-test-allowed-diff.h | 1 + 2 files changed, 1 insertion(+) create mode 100644 tests/data/acpi/x86/q35/WDAT.wdat diff --git a/tests/data/acpi/x86/q35/WDAT.wdat b/tests/data/acpi/x86/q35/WD= AT.wdat new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..14b680debe 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,2 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/x86/q35/WDAT.wdat", --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464338; cv=none; d=zohomail.com; s=zohoarc; b=J5MWCnRKMRcDQVKNTzH5FlpE5cE6lr2mJ07lzMQO8EFyk5p1h8XfF1ST6M3Qzod1JzvKi9JuM1CwJ41FuELKMFsTI3EjxApOFVcqysyctLHieeYZkOYZCK7PUALOaZjqUO5oY5bZ6VqOWeixieewdW2yFH9xXeHUcxaBLw42r6o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464338; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Rpal2W86mAE9e6bf+ImoOSz7GYFAC1OuHewPuBp7b9c=; b=SDS9JY1cSXCeCD3BQnqdkDoLGbHAeAWEj/wlkzqzxhpoCop1HtQvIdAoG2Rl3J5DkzBW3V/1PNEkOVJ/y49AQ2MymgDo063RB6oXqCeOFbVU0I1pfJUhZd6QdZYz73F03KxxmNUaj5ORVxy9j9+LA9SJDiq1XUWoyzEUINkDHC0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464338421362.7940693903963; Sun, 14 Jun 2026 12:12:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDO-0008MQ-1J; Sun, 14 Jun 2026 15:09:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqD8-0007ZP-AZ for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqD7-0002f2-0F for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:34 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-441-My1Pl6sNMQGxWNH1smbSkA-1; Sun, 14 Jun 2026 15:09:30 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490aadb1386so18042355e9.0 for ; Sun, 14 Jun 2026 12:09:30 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220372ed0sm164096875e9.14.2026.06.14.12.09.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464172; 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: in-reply-to:in-reply-to:references:references; bh=Rpal2W86mAE9e6bf+ImoOSz7GYFAC1OuHewPuBp7b9c=; b=StDnWNXToVY2eJNFmbRNkQnifTHB3qe0SDaHVOwlyYv1cwdkrFQgfAuHniTIHMPOZehfUQ BYA7WvfTWpAzhxJJS6AU6O35ronHsg9UoPox8yt41tMMvhZEEV0OMSJYQaQohRyEujZ0gI dgswNy1MxWAP2ahp7vcvaaD9e1grEzs= X-MC-Unique: My1Pl6sNMQGxWNH1smbSkA-1 X-Mimecast-MFC-AGG-ID: My1Pl6sNMQGxWNH1smbSkA_1781464170 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464170; x=1782068970; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=Rpal2W86mAE9e6bf+ImoOSz7GYFAC1OuHewPuBp7b9c=; b=Zp5ptGCEp2SnpESo4S3JQ0/hlXECZ1QoNdeUs7hu54fl8OI/alma9x+Hhdav7+QOIu kuSRm93gqHbx1D2BMevfuH7DJGU4vF5Y9VpRWxirzltZ9qP+gnuo77Y4GpGjn+801g49 ADgF6isjLuvlJs5q7nhzqsg8RFz9DsKvcCvP0EY5XBcjYC8p2Lmku4uzYHRKEZAuB0Jf r9a0F8dnmmXzHYIfcfEfU21ZlV0raWBhjLY2BWhcX9pqVp7DRHGQ+RmBcnJf3J8wO+2L j/myhzNV5pSdGj3/PC5qmAahutrM/+Tf8mvsmk8h/MqQI5EtkxG+l1q3vPV6BkTYir4U l+SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464170; x=1782068970; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Rpal2W86mAE9e6bf+ImoOSz7GYFAC1OuHewPuBp7b9c=; b=JhMX9+iD4iyyUTmYKXgAu47TWZZT2V1BlHCCry10UK46184RLfONE3steaiYoGfmwr 3i+lTzMLlkArfzz66torJ4yaLAmvaoPuRmsOvNKZSFFpIzfSCm5B7YONi6rvkI1OuZi9 Zi7trcRKNNoWppAbjt1Ag9B0FL/S0TGoas3hZ1JCRpgfO+0m0rYrk0/osvjvLzwbGN41 ZmeksGp3SNWNwCi6ul4h62u7XDHz1VH56ydU39qpZnRbOiKDgasyOxDL8xo/jjukAnjF zKwG5hbkUYGha9DnzdX9mUn4n5II/UvrLVh+3H/7bdfR2lUP6M8P8SnNTJfJBAhS9RR7 oc0w== X-Gm-Message-State: AOJu0Yzaf156y22ieFUZ3B8crFAbuW2FSTsWgtrRu/45FXePc+hMTkfU uhDpCwIG2rzDA55S/skxTOxcqz+9GphxEBLRONg/j8jQ9YTMLGndy12VV0vfVeNma8BzD2I1oRG 5NTyJtztzg/ypjlCaWUO5YJzqDaCVZBiKNsBpjcc4Se4HdORk7ufVuUZICFqUGyYCvv7Iu8fqYS UFrnLF6DFXKPWFOYtqUWkgHJPtJLrfFH/yew== X-Gm-Gg: Acq92OE9TvUP2Yvdv943dXs95/0Yrs7Blgdrv7ICQcU73sskD+cfHEOz+xS799UMX5a lxP3rtvfkpZ+/3M447DZnVzNdjRE83xasisw+3I4S+rprUP+6qYLjTDIEV7yUiMtFRW9uIU8jzD cs2Jb6h3AfIIJ87OyxgiRYOKITMdcCc/I7lZVoRxjOlfcVn37YyD4gLD/FENM6rPxDDexOcqEnx 8bEHgS+s2JUEToWRBluqiUpVohBue7pEumyLJFLixD79qeSDpedMKtktKin2+sj2pEDKmlUdm+G qkOngXNK9DTGLdhVL+nT3pV7/NeMMhLCSNIqQ0e68QKi/6YLRSM0HWG8PPmvhBhNW3Uw0nd5TO8 NbCOWeZrb4vJnWrDkkX6rF3Av/2SLiyRMTsxqE9kDdVY= X-Received: by 2002:a05:600c:c171:b0:48a:53cb:8604 with SMTP id 5b1f17b1804b1-490ec4dfb03mr109813265e9.14.1781464169573; Sun, 14 Jun 2026 12:09:29 -0700 (PDT) X-Received: by 2002:a05:600c:c171:b0:48a:53cb:8604 with SMTP id 5b1f17b1804b1-490ec4dfb03mr109813025e9.14.1781464169031; Sun, 14 Jun 2026 12:09:29 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:26 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha , Zhao Liu Subject: [PULL 089/106] tests: acpi: x86/q35: add WDAT table test case Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464339598158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Signed-off-by: Igor Mammedov Reviewed-by: Ani Sinha Reviewed-by: Zhao Liu Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260303092532.2410177-6-imammedo@redhat.com> --- tests/qtest/bios-tables-test.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c index 510751799e..af6d9b5136 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c @@ -2534,6 +2534,18 @@ static void test_acpi_isapc_smbios_legacy(void) free_test_data(&data); } =20 +static void test_acpi_q35_wdat(void) +{ + test_data data =3D { + .machine =3D MACHINE_Q35, + .arch =3D "x86", + .variant =3D ".wdat", + }; + + test_acpi_one("-machine wdat=3Don", &data); + free_test_data(&data); +} + static void test_oem_fields(test_data *data) { int i; @@ -2828,6 +2840,7 @@ int main(int argc, char *argv[]) qtest_add_func("acpi/q35/cxl", test_acpi_q35_cxl); #endif qtest_add_func("acpi/q35/slic", test_acpi_q35_slic); + qtest_add_func("acpi/q35/wdat", test_acpi_q35_wdat); } if (qtest_has_machine("microvm")) { qtest_add_func("acpi/microvm", test_acpi_microvm_tcg); --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464329; cv=none; d=zohomail.com; s=zohoarc; b=XiS+LFhvv1R1TQi2+zJamHlXNc9MWU685RzpW7W+ceJYHl8/7ZPNUCYigqQbhIAVwXaKxyO/z/H0a00nwMK5/mF2aS2kS/0aIxMYi/m6grB2mC21nKqUJVlNLvDaIw/sp0CGSelgdcBAnNJVrHUzwU7PsJW/KmKF8mpacjLD7c4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464329; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6dOn/8eHkNMQ82sgE1aT+KD7v5OPI6ZiP0ExOB9U4bQ=; b=gJ3E6AM8lfjiviGG9CT/DgdMSy24Vs4aU+hejO0qMyr9ufd/F6uwBJXFBPOULM3Qqc755GX6VNDy1apGRcPyt9EEM8Dd0LE8NDgfqj2YppDN/udcAk9j7oYefyqvAAd32lT8S+b8xrQgHUtdi+yRyYNZYmamU39FebWxyh9odcg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17814643293075.077348525023808; Sun, 14 Jun 2026 12:12:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDS-0000No-OC; Sun, 14 Jun 2026 15:09:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDB-0007ZV-QD for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqD8-0002fT-W7 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:36 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-499-ApdcwSRJOSim9WcfoaeznQ-1; Sun, 14 Jun 2026 15:09:33 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490ab3f6e55so14549375e9.0 for ; Sun, 14 Jun 2026 12:09:32 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492202e5d61sm170358795e9.1.2026.06.14.12.09.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464174; 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: in-reply-to:in-reply-to:references:references; bh=6dOn/8eHkNMQ82sgE1aT+KD7v5OPI6ZiP0ExOB9U4bQ=; b=AVwAnP86K0bjV+UdicbFHBDANXfcLrxfSuHIetWTvrDLCCgi4TcdCewCLbx1EGlxjSrTs3 WM7fFlRntU9FvicA1BnbeOkQxCVRcwA9KxnJoFlgRPBEusOHRIITE7jlrfxhk8tPeQNn0B cPIk9o7Je/H4K03zO2KX6b7CvWBOcAg= X-MC-Unique: ApdcwSRJOSim9WcfoaeznQ-1 X-Mimecast-MFC-AGG-ID: ApdcwSRJOSim9WcfoaeznQ_1781464172 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464172; x=1782068972; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=6dOn/8eHkNMQ82sgE1aT+KD7v5OPI6ZiP0ExOB9U4bQ=; b=Yd+NY15O/81W2UmusfstHRTG2fFwqxl/MkwElFGk/uVoXLN+ME2R2AgE1ple/kLpPw d8YcdfrNvhfsj1nI7c9ZpjUk84i9RxQJZPbiJxwwOabHm/w/aDJAFFZDj9LEp7MPdPey sfUooYwKF3cJA509t0+t0bVlLdQeh05UB9WVOauUtmzgKCQUWpaPtb+EfqYw+7yvcRGg xWJ7+c7VHffXL+1htOpgIybgDcXgLgSvwsysXCoAa+0S7S5oKR0KyQHiiOjdDzzEdgP0 1p3nRQfHkROgqDg150WyrxGMZ04NPKfZvi/70x+nL+QN0lNMCY76X4/nJZ4+dIkeIGaT SdcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464172; x=1782068972; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6dOn/8eHkNMQ82sgE1aT+KD7v5OPI6ZiP0ExOB9U4bQ=; b=GMZjbtNnrul6ycvClTlnyFP9Ii57cZTcphQd0PKzT7ysjpwz0Yty2gaV/S0r49anGH naAOP24+/J+1qzciK6lQZGONOc7c4q6SaruFMs6l3WcPU31iP/kuv5vfzqmaFDKnrLJW RI4DQEee5GL/fbj8Jyb2xeIAobwxKh/IZzefqby2J2x6d8jCA9/e6WW4ywEpMJhzPA72 Cg2iOv4jbMLjmcNr5PU8IrweSXiCutnj4G9jfKZBtitC7KKEWHLkSEJCLx9vb+tbj0Gf IXvRhylUAmz5klczbGfx5Z4AqfwZ6f5JLCespP2tMWktc7ZUlv4qM49MSK1w9JzsSQmI zZIA== X-Gm-Message-State: AOJu0YwkwdYaBWFQnBJwe1ilIIchYMi8KUBnj2AjYy+81jOas7TvvFRO wlNfEA92j6wt8e2aShzm49CD7FUUtj3GjCPF8i3qzRoSajd5rZGpinbotbP566GRF8gDV4oRWkC rxNLx9KXDi8h6VRhsgZzxY38UgQ87fSd931APoc5ur4W3Yt1XpT2f2yXf8Akh/WXtcbW/A/PK64 j8AyU4bpHm53AjXzJbXfnW2IX9+6Sv0e2nEQ== X-Gm-Gg: Acq92OEopnQDPE/rUxmyWHPJ0aqeZa6nyVCaO/5h5WLudYJePGH796TYnTFmgNupysE 9F+MxCVPc2xhx5lot47nuAR6Q26PfS7r8aR5QE7B5EUlQkOF5pEpg64SkG3EKHXMKXPufpBhtTs PzsxTcBGUcqfZQ0wV3Jo0Mt5kkHOUyEazJSxGqAesmDkwg9y0w0Nw3tw1NU3uEKsYlHQKQJMUBM oSnjpqFkKBSQRwpB2LoENeHS5Xy/K2x8vLqnI/n0uhtkJMcAB+Rb4MQ9cimPsEvG4pGJ39itrrY t1QS+DEesRY7ewHqtj1ywbRvltq81MgP6FZh4CjSouzuFb3ClMflQeD0VMcc1yZziBPTSq/1z5b Ftb1dV+jCwg7UYy2ojV/7htukNtFeH42L584u/jpAyfw= X-Received: by 2002:a05:600c:314a:b0:490:da12:f1fa with SMTP id 5b1f17b1804b1-490ec503f0cmr127745895e9.31.1781464171719; Sun, 14 Jun 2026 12:09:31 -0700 (PDT) X-Received: by 2002:a05:600c:314a:b0:490:da12:f1fa with SMTP id 5b1f17b1804b1-490ec503f0cmr127745585e9.31.1781464171116; Sun, 14 Jun 2026 12:09:31 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:29 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha , Zhao Liu Subject: [PULL 090/106] tests: acpi: x86/q35: update expected WDAT blob Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464329561158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov replace blank table with a new one: +[000h 0000 4] Signature : "WDAT" [Watchdog Actio= n Table] +[004h 0004 4] Table Length : 00000134 +[008h 0008 1] Revision : 01 +[009h 0009 1] Checksum : 31 +[00Ah 0010 6] Oem ID : "BOCHS " +[010h 0016 8] Oem Table ID : "BXPC " +[018h 0024 4] Oem Revision : 00000001 +[01Ch 0028 4] Asl Compiler ID : "BXPC" +[020h 0032 4] Asl Compiler Revision : 00000001 + +[024h 0036 4] Header Length : 00000020 +[028h 0040 2] PCI Segment : 00FF +[02Ah 0042 1] PCI Bus : FF +[02Bh 0043 1] PCI Device : FF +[02Ch 0044 1] PCI Function : FF +[02Dh 0045 3] Reserved : 000000 +[030h 0048 4] Timer Period : 00000258 +[034h 0052 4] Max Count : 000003FF +[038h 0056 4] Min Count : 00000004 +[03Ch 0060 1] Flags (decoded below) : 81 + Enabled : 1 + Stopped When Asleep : 1 +[03Dh 0061 3] Reserved : 000000 +[040h 0064 4] Watchdog Entry Count : 0000000A + +[044h 0068 1] Watchdog Action : 01 +[045h 0069 1] Instruction : 02 +[046h 0070 2] Reserved : 0000 + +[048h 0072 12] Register Region : [Generic Address Structur= e] +[048h 0072 1] Space ID : 01 [SystemIO] +[049h 0073 1] Bit Width : 10 +[04Ah 0074 1] Bit Offset : 00 +[04Bh 0075 1] Encoded Access Width : 02 [Word Access:16] +[04Ch 0076 8] Address : 0000000000000660 + +[054h 0084 4] Value : 00000001 +[058h 0088 4] Register Mask : 000001FF + +[05Ch 0092 1] Watchdog Action : 08 +[05Dh 0093 1] Instruction : 00 +[05Eh 0094 2] Reserved : 0000 + +[060h 0096 12] Register Region : [Generic Address Structur= e] +[060h 0096 1] Space ID : 01 [SystemIO] +[061h 0097 1] Bit Width : 10 +[062h 0098 1] Bit Offset : 00 +[063h 0099 1] Encoded Access Width : 02 [Word Access:16] +[064h 0100 8] Address : 0000000000000668 + +[06Ch 0108 4] Value : 00000000 +[070h 0112 4] Register Mask : 00000800 + +[074h 0116 1] Watchdog Action : 09 +[075h 0117 1] Instruction : 82 +[076h 0118 2] Reserved : 0000 + +[078h 0120 12] Register Region : [Generic Address Structur= e] +[078h 0120 1] Space ID : 01 [SystemIO] +[079h 0121 1] Bit Width : 10 +[07Ah 0122 1] Bit Offset : 00 +[07Bh 0123 1] Encoded Access Width : 02 [Word Access:16] +[07Ch 0124 8] Address : 0000000000000668 + +[084h 0132 4] Value : 00000000 +[088h 0136 4] Register Mask : 00000800 + +[08Ch 0140 1] Watchdog Action : 0A +[08Dh 0141 1] Instruction : 00 +[08Eh 0142 2] Reserved : 0000 + +[090h 0144 12] Register Region : [Generic Address Structur= e] +[090h 0144 1] Space ID : 01 [SystemIO] +[091h 0145 1] Bit Width : 10 +[092h 0146 1] Bit Offset : 00 +[093h 0147 1] Encoded Access Width : 02 [Word Access:16] +[094h 0148 8] Address : 0000000000000668 + +[09Ch 0156 4] Value : 00000800 +[0A0h 0160 4] Register Mask : 00000800 + +[0A4h 0164 1] Watchdog Action : 0B +[0A5h 0165 1] Instruction : 82 +[0A6h 0166 2] Reserved : 0000 + +[0A8h 0168 12] Register Region : [Generic Address Structur= e] +[0A8h 0168 1] Space ID : 01 [SystemIO] +[0A9h 0169 1] Bit Width : 10 +[0AAh 0170 1] Bit Offset : 00 +[0ABh 0171 1] Encoded Access Width : 02 [Word Access:16] +[0ACh 0172 8] Address : 0000000000000668 + +[0B4h 0180 4] Value : 00000800 +[0B8h 0184 4] Register Mask : 00000800 + +[0BCh 0188 1] Watchdog Action : 06 +[0BDh 0189 1] Instruction : 03 +[0BEh 0190 2] Reserved : 0000 + +[0C0h 0192 12] Register Region : [Generic Address Structur= e] +[0C0h 0192 1] Space ID : 01 [SystemIO] +[0C1h 0193 1] Bit Width : 10 +[0C2h 0194 1] Bit Offset : 00 +[0C3h 0195 1] Encoded Access Width : 02 [Word Access:16] +[0C4h 0196 8] Address : 0000000000000672 + +[0CCh 0204 4] Value : 00000000 +[0D0h 0208 4] Register Mask : 000003FF + +[0D4h 0212 1] Watchdog Action : 05 +[0D5h 0213 1] Instruction : 01 +[0D6h 0214 2] Reserved : 0000 + +[0D8h 0216 12] Register Region : [Generic Address Structur= e] +[0D8h 0216 1] Space ID : 01 [SystemIO] +[0D9h 0217 1] Bit Width : 10 +[0DAh 0218 1] Bit Offset : 00 +[0DBh 0219 1] Encoded Access Width : 02 [Word Access:16] +[0DCh 0220 8] Address : 0000000000000672 + +[0E4h 0228 4] Value : 00000000 +[0E8h 0232 4] Register Mask : 000003FF + +[0ECh 0236 1] Watchdog Action : 20 +[0EDh 0237 1] Instruction : 00 +[0EEh 0238 2] Reserved : 0000 + +[0F0h 0240 12] Register Region : [Generic Address Structur= e] +[0F0h 0240 1] Space ID : 01 [SystemIO] +[0F1h 0241 1] Bit Width : 10 +[0F2h 0242 1] Bit Offset : 00 +[0F3h 0243 1] Encoded Access Width : 02 [Word Access:16] +[0F4h 0244 8] Address : 0000000000000666 + +[0FCh 0252 4] Value : 00000002 +[100h 0256 4] Register Mask : 00000002 + +[104h 0260 1] Watchdog Action : 21 +[105h 0261 1] Instruction : 82 +[106h 0262 2] Reserved : 0000 + +[108h 0264 12] Register Region : [Generic Address Structur= e] +[108h 0264 1] Space ID : 01 [SystemIO] +[109h 0265 1] Bit Width : 10 +[10Ah 0266 1] Bit Offset : 00 +[10Bh 0267 1] Encoded Access Width : 02 [Word Access:16] +[10Ch 0268 8] Address : 0000000000000666 + +[114h 0276 4] Value : 00000002 +[118h 0280 4] Register Mask : 00000002 + +[11Ch 0284 1] Watchdog Action : 21 +[11Dh 0285 1] Instruction : 82 +[11Eh 0286 2] Reserved : 0000 + +[120h 0288 12] Register Region : [Generic Address Structur= e] +[120h 0288 1] Space ID : 01 [SystemIO] +[121h 0289 1] Bit Width : 10 +[122h 0290 1] Bit Offset : 00 +[123h 0291 1] Encoded Access Width : 02 [Word Access:16] +[124h 0292 8] Address : 0000000000000666 + +[12Ch 0300 4] Value : 00000004 +[130h 0304 4] Register Mask : 00000004 Signed-off-by: Igor Mammedov Acked-by: Ani Sinha Reviewed-by: Zhao Liu Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260303092532.2410177-7-imammedo@redhat.com> --- tests/data/acpi/x86/q35/WDAT.wdat | Bin 0 -> 308 bytes tests/qtest/bios-tables-test-allowed-diff.h | 1 - 2 files changed, 1 deletion(-) diff --git a/tests/data/acpi/x86/q35/WDAT.wdat b/tests/data/acpi/x86/q35/WD= AT.wdat index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e1e056b390e51c49f11f7b0d35e= 4e7c55d8067b1 100644 GIT binary patch literal 308 zcmaivF$w}f3`JkEx{TV)5#kX9FW|0)oq~c}T8Xtc(2GYhPO+$9AY^#?`OH6WH>b6L zth#-_J6bm!dNVTt;vLff$K8QJ!5f$W4`2?6f@Jj4QYvm-AjK}Dx5`T;m_2{<;x*QX lL4w7nzVfzt``kzV@waK@$$at15&T;93Z<9T{~wRc(JwJ97XbhO literal 0 HcmV?d00001 diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 14b680debe..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,2 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/x86/q35/WDAT.wdat", --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464529; cv=none; d=zohomail.com; s=zohoarc; b=M+ALwtUlYNglIy6t0JH6ipSPo1JUeCqcczL+o/pWMV/joTyv5qlqKNU4T0tLwIIXzyikIFQ+qXuSYP0k0XKGDXtFMFANBwJEUFj2EIE6PuSMAnXCL34CJy0nNR/kYCrK0gO9ZoIVmAUsW76x7IAG8RC0nWSGd4rtIxdGpwIy1wI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464529; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0NvLYREljc+ft4RiXcDSNeNDEsOxKAXIxPux9YIw4+s=; b=kEZyBBF8nH5R51JvKf/pbdddH8QilewloxaVoDNN2yGjqWFVqN41PQeHsGkRyFr0s199CzSR6das8u7MHPLh1cjQt942IpqRj+N77ymQGwZ+OKuI9Ubxy/wddRGGRwqckd/8QLmLKOLw0Y3BbybAUWud+Cck1PQqWjks7mdR194= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464529064789.7365852195684; Sun, 14 Jun 2026 12:15:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDT-0000OD-09; Sun, 14 Jun 2026 15:09:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDF-0007iW-OF for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDB-0002fh-TS for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:41 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-404-A04l0azYOQiQPQUEOxeHmQ-1; Sun, 14 Jun 2026 15:09:35 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490b2f22ea2so22526905e9.1 for ; Sun, 14 Jun 2026 12:09:35 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922037055csm191273385e9.13.2026.06.14.12.09.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464177; 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: in-reply-to:in-reply-to:references:references; bh=0NvLYREljc+ft4RiXcDSNeNDEsOxKAXIxPux9YIw4+s=; b=Yi7FKfkS1PooVBMcUizZP7+ZfECCDkTA/pjPTja2LdRWK3DOqEuKh3+dCODhBtYAGc8SB4 S3EoFUzudjArxoUqot1sccHCj8Fw1rhN10XBxV37onUGywEQr8nKR3OFjKpTgse5cqp3kl 8Gka1wW5cDp89DOdx6SbPR7v0Bl36W8= X-MC-Unique: A04l0azYOQiQPQUEOxeHmQ-1 X-Mimecast-MFC-AGG-ID: A04l0azYOQiQPQUEOxeHmQ_1781464175 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464174; x=1782068974; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=0NvLYREljc+ft4RiXcDSNeNDEsOxKAXIxPux9YIw4+s=; b=W4xuWn9b093dissNihsrHDPDIHr8N7e9691/cb3DYazqXboD5sTQfOSahP0cYuiyM8 k1Ub7VKtkNX8RVyHaBrQdpjixQle7U0q/6OJeLe6/t+kZtaZIJW2R5Eu+vey1Ar7h3gi +Ra4FivHWt+zRLlCciSswRfiUOogT65UPVMb0WNueJ09j4hcpUCEbrP5PRtyKg4aG7I9 xNT7S/j2zxqnDttT0FeHkaYEwCRNQCMOXHbUGLO5tS6/9wUwodNkT+kcVflMP5slXMkt Aqjyo9C5I9zA7Lp/msdY57z4tHO1YCih481ae7q2gYoPeh2BopoyUQWxk3jsC3g9QefY 28eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464174; x=1782068974; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0NvLYREljc+ft4RiXcDSNeNDEsOxKAXIxPux9YIw4+s=; b=AwzIuxYORaK4Zwb4RHVlbB+ItDYI9wx7qKxosVW0gmjw1m7VV2TVatx1i70z7D0lFJ TksRkd4ZmAqP8Jw80jQiVnNXQz48Ds2lHVIWCu89pXOi+34t9a941rVyZGXjz0rUT+G/ 1o6Jyx6Aa2Eliv3iqYH+XV2aN75LqOaOtf1Cyj1UI9sPmEnMRa2GpuuncriexGaevhHj pi1zIXB3YVt0BNCHDLlZ8kVlye+/FaCFmXeRsIboNu/3FAikAZ+eKY7tVL8YMHUExA1d GqLFHyuxGJkHNQKrdfOZOHYmSay2gwRKyb6O3/C1DfwxisgldQb6ssCsvDpR4Nvbwcn+ LcwA== X-Gm-Message-State: AOJu0Yxv8vTKacbaNWWWXoyOuBj3rjxPSxa5hf58mu84hiJs/SbvmJEs PXsG2P6kI7KAUIg9F6RCyQf1lQ5bvdFRGq24H5JbYAW5ybjS04naqfFlkn0RgAXOrJBDBGwtn9c MtuCGHQLrD9bQPAveOHezh/JbJsYEMuQm46l0tSmAblIEFhFZTUovJuxbJjkaQ5HNHpCJzYtWp7 Z0cFBYJaFBUmp2ZQ3FMOVjwa28TeOEAXQ1Tg== X-Gm-Gg: Acq92OEM5cZWy/PsxG/+Sv1WN3Kj5COtMtF6x2Z1QscZFHFPDxem3F096EW9Yk9rdyw VS+UtmMoXlg7V7B5ysopgWCe0bi30fOs9LNn6GlmaxHDWBFPT3Hp87+IV28iYjaeg+GmQeEhfQ6 q0stg1gXO3XU2cMzNffLkMhfIeQH0rPI8IHhHbvXMmWzs70jbi7R3/dntzo7G98UaP4V9X59Cjj YKBHb/JySe94mH9R/DVQwISc6YVRe8imn+PYNeD/hwlV+NxBqDeJ2ZnK3x5vjcRuwAkydwgwbGj xTtTZlSF2IPcBsDND8cZixhgTSe/L5V4ZWMP9a89rslcGVPgM6QL8EdcZAtdRGSomFan2/7i/Ct cH06vYBg1yZ9DzHKNs+jeCc9pQCDYnLJN4vC6dyIpUOU= X-Received: by 2002:a05:600c:6c8b:b0:490:c2a3:abae with SMTP id 5b1f17b1804b1-49220137b2bmr61360195e9.34.1781464174281; Sun, 14 Jun 2026 12:09:34 -0700 (PDT) X-Received: by 2002:a05:600c:6c8b:b0:490:c2a3:abae with SMTP id 5b1f17b1804b1-49220137b2bmr61359985e9.34.1781464173600; Sun, 14 Jun 2026 12:09:33 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:31 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Albert Esteve , Stefan Hajnoczi , Stefano Garzarella , Paolo Bonzini , Peter Xu , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= Subject: [PULL 091/106] vhost-user: Add VirtIO Shared Memory map request Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464530443158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Albert Esteve Add SHMEM_MAP/UNMAP requests to vhost-user for dynamic management of VIRTIO Shared Memory mappings. This implementation introduces VirtioSharedMemoryMapping as a unified QOM object that manages both the mapping metadata and MemoryRegion lifecycle. This object provides reference-counted lifecycle management with automatic cleanup of file descriptors and memory regions through QOM finalization. This request allows backends to dynamically map file descriptors into a VIRTIO Shared Memory Region identified by their shmid. Maps are created using memory_region_init_ram_from_fd() with configurable read/write permissions, and the resulting MemoryRegions are added as subregions to the shmem container region. The mapped memory is then advertised to the guest VIRTIO drivers as a base address plus offset for reading and writting according to the requested mmap flags. The backend can unmap memory ranges within a given VIRTIO Shared Memory Region to free resources. Upon receiving this message, the frontend removes the MemoryRegion as a subregion and automatically unreferences the VirtioSharedMemoryMapping object, triggering cleanup if no other references exist. Error handling has been improved to ensure consistent behavior across handlers that manage their own vhost_user_send_resp() calls. Since these handlers clear the VHOST_USER_NEED_REPLY_MASK flag, explicit error checking ensures proper connection closure on failures, maintaining the expected error flow. Note the memory region commit for these operations needs to be delayed until after we reply to the backend to avoid deadlocks. Otherwise, the MemoryListener would send a VHOST_USER_SET_MEM_TABLE message before the reply. Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Albert Esteve Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304165223.2166175-2-aesteve@redhat.com> --- hw/virtio/vhost-user.c | 274 ++++++++++++++++++++++ hw/virtio/virtio.c | 201 ++++++++++++++++ include/hw/virtio/virtio.h | 134 +++++++++++ include/system/memory.h | 2 +- subprojects/libvhost-user/libvhost-user.c | 70 ++++++ subprojects/libvhost-user/libvhost-user.h | 54 +++++ system/memory.c | 14 ++ 7 files changed, 748 insertions(+), 1 deletion(-) diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 15042c0f3c..d627351f45 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -100,6 +100,7 @@ typedef enum VhostUserRequest { VHOST_USER_GET_SHARED_OBJECT =3D 41, VHOST_USER_SET_DEVICE_STATE_FD =3D 42, VHOST_USER_CHECK_DEVICE_STATE =3D 43, + VHOST_USER_GET_SHMEM_CONFIG =3D 44, VHOST_USER_MAX } VhostUserRequest; =20 @@ -111,6 +112,8 @@ typedef enum VhostUserBackendRequest { VHOST_USER_BACKEND_SHARED_OBJECT_ADD =3D 6, VHOST_USER_BACKEND_SHARED_OBJECT_REMOVE =3D 7, VHOST_USER_BACKEND_SHARED_OBJECT_LOOKUP =3D 8, + VHOST_USER_BACKEND_SHMEM_MAP =3D 9, + VHOST_USER_BACKEND_SHMEM_UNMAP =3D 10, VHOST_USER_BACKEND_MAX } VhostUserBackendRequest; =20 @@ -189,6 +192,12 @@ typedef struct VhostUserMemRegMsg { VhostUserMemoryRegion region; } VhostUserMemRegMsg; =20 +typedef struct VhostUserShMemConfig { + uint32_t nregions; + uint32_t padding; + uint64_t memory_sizes[VIRTIO_MAX_SHMEM_REGIONS]; +} VhostUserShMemConfig; + typedef struct VhostUserLog { uint64_t mmap_size; uint64_t mmap_offset; @@ -245,6 +254,23 @@ typedef struct VhostUserShared { unsigned char uuid[16]; } VhostUserShared; =20 +/* For the flags field of VhostUserMMap */ +#define VHOST_USER_FLAG_MAP_RW (1u << 0) + +typedef struct { + /* VIRTIO Shared Memory Region ID */ + uint8_t shmid; + uint8_t padding[7]; + /* File offset */ + uint64_t fd_offset; + /* Offset within the VIRTIO Shared Memory Region */ + uint64_t shm_offset; + /* Size of the mapping */ + uint64_t len; + /* Flags for the mmap operation, from VHOST_USER_FLAG_MAP_* */ + uint64_t flags; +} VhostUserMMap; + typedef struct { VhostUserRequest request; =20 @@ -277,6 +303,8 @@ typedef union { VhostUserInflight inflight; VhostUserShared object; VhostUserTransferDeviceState transfer_state; + VhostUserMMap mmap; + VhostUserShMemConfig shmem; } VhostUserPayload; =20 typedef struct VhostUserMsg { @@ -1860,6 +1888,196 @@ vhost_user_backend_handle_shared_object_lookup(stru= ct vhost_user *u, return 0; } =20 +/** + * vhost_user_backend_handle_shmem_map() - Handle SHMEM_MAP backend request + * @dev: vhost device + * @ioc: QIOChannel for communication + * @hdr: vhost-user message header + * @payload: message payload containing mapping details + * @fd: file descriptor for the shared memory region + * + * Handles VHOST_USER_BACKEND_SHMEM_MAP requests from the backend. Creates + * a VhostUserShmemObject to manage the shared memory mapping and adds it + * to the appropriate VirtIO shared memory region. The VhostUserShmemObject + * serves as an intermediate parent for the MemoryRegion, ensuring proper + * lifecycle management with reference counting. + * + * Returns: 0 on success, negative errno on failure + */ +static int +vhost_user_backend_handle_shmem_map(struct vhost_dev *dev, + QIOChannel *ioc, + VhostUserHeader *hdr, + VhostUserPayload *payload, + int fd) +{ + VirtioSharedMemory *shmem; + VhostUserMMap *vu_mmap =3D &payload->mmap; + VirtioSharedMemoryMapping *existing; + Error *local_err =3D NULL; + int ret =3D 0; + + if (fd < 0) { + error_report("Bad fd for map"); + ret =3D -EBADF; + goto send_reply; + } + + if (QSIMPLEQ_EMPTY(&dev->vdev->shmem_list)) { + error_report("Device has no VIRTIO Shared Memory Regions. " + "Requested ID: %d", vu_mmap->shmid); + ret =3D -EFAULT; + goto send_reply; + } + + shmem =3D virtio_find_shmem_region(dev->vdev, vu_mmap->shmid); + if (!shmem) { + error_report("VIRTIO Shared Memory Region at " + "ID %d not found or uninitialized", vu_mmap->shmid); + ret =3D -EFAULT; + goto send_reply; + } + + if ((vu_mmap->shm_offset + vu_mmap->len) < vu_mmap->len || + (vu_mmap->shm_offset + vu_mmap->len) > memory_region_size(&shmem->= mr)) { + error_report("Bad offset/len for mmap %" PRIx64 "+%" PRIx64, + vu_mmap->shm_offset, vu_mmap->len); + ret =3D -EFAULT; + goto send_reply; + } + + QTAILQ_FOREACH(existing, &shmem->mmaps, link) { + if (ranges_overlap(existing->offset, existing->len, + vu_mmap->shm_offset, vu_mmap->len)) { + error_report("VIRTIO Shared Memory mapping overlap"); + ret =3D -EFAULT; + goto send_reply; + } + } + + memory_region_transaction_begin(); + + /* Create VirtioSharedMemoryMapping object */ + VirtioSharedMemoryMapping *mapping =3D virtio_shared_memory_mapping_ne= w( + vu_mmap->shmid, fd, vu_mmap->fd_offset, vu_mmap->shm_offset, + vu_mmap->len, vu_mmap->flags & VHOST_USER_FLAG_MAP_RW); + + if (!mapping) { + ret =3D -EFAULT; + goto send_reply_commit; + } + + /* Add the mapping to the shared memory region */ + if (virtio_add_shmem_map(shmem, mapping) !=3D 0) { + error_report("Failed to add shared memory mapping"); + object_unref(OBJECT(mapping)); + ret =3D -EFAULT; + goto send_reply_commit; + } + +send_reply_commit: + /* Send reply and commit after transaction started */ + if (hdr->flags & VHOST_USER_NEED_REPLY_MASK) { + payload->u64 =3D !!ret; + hdr->size =3D sizeof(payload->u64); + if (!vhost_user_send_resp(ioc, hdr, payload, &local_err)) { + error_report_err(local_err); + memory_region_transaction_commit(); + return -EFAULT; + } + } + memory_region_transaction_commit(); + return 0; + +send_reply: + if (hdr->flags & VHOST_USER_NEED_REPLY_MASK) { + payload->u64 =3D !!ret; + hdr->size =3D sizeof(payload->u64); + if (!vhost_user_send_resp(ioc, hdr, payload, &local_err)) { + error_report_err(local_err); + return -EFAULT; + } + } + return 0; +} + +/** + * vhost_user_backend_handle_shmem_unmap() - Handle SHMEM_UNMAP backend re= quest + * @dev: vhost device + * @ioc: QIOChannel for communication + * @hdr: vhost-user message header + * @payload: message payload containing unmapping details + * + * Handles VHOST_USER_BACKEND_SHMEM_UNMAP requests from the backend. Remov= es + * the specified memory mapping from the VirtIO shared memory region. This + * automatically unreferences the associated VhostUserShmemObject, which m= ay + * trigger its finalization and cleanup (munmap, close fd) if no other + * references exist. + * + * Returns: 0 on success, negative errno on failure + */ +static int +vhost_user_backend_handle_shmem_unmap(struct vhost_dev *dev, + QIOChannel *ioc, + VhostUserHeader *hdr, + VhostUserPayload *payload) +{ + VirtioSharedMemory *shmem =3D NULL; + VirtioSharedMemoryMapping *mmap =3D NULL; + VhostUserMMap *vu_mmap =3D &payload->mmap; + Error *local_err =3D NULL; + int ret =3D 0; + + if (QSIMPLEQ_EMPTY(&dev->vdev->shmem_list)) { + error_report("Device has no VIRTIO Shared Memory Regions. " + "Requested ID: %d", vu_mmap->shmid); + ret =3D -EFAULT; + goto send_reply; + } + + shmem =3D virtio_find_shmem_region(dev->vdev, vu_mmap->shmid); + if (!shmem) { + error_report("VIRTIO Shared Memory Region at " + "ID %d not found or uninitialized", vu_mmap->shmid); + ret =3D -EFAULT; + goto send_reply; + } + + if ((vu_mmap->shm_offset + vu_mmap->len) < vu_mmap->len || + (vu_mmap->shm_offset + vu_mmap->len) > memory_region_size(&shmem->= mr)) { + error_report("Bad offset/len for unmmap %" PRIx64 "+%" PRIx64, + vu_mmap->shm_offset, vu_mmap->len); + ret =3D -EFAULT; + goto send_reply; + } + + mmap =3D virtio_find_shmem_map(shmem, vu_mmap->shm_offset, vu_mmap->le= n); + if (!mmap) { + error_report("Shared memory mapping not found at offset %" PRIx64 + " with length %" PRIx64, + vu_mmap->shm_offset, vu_mmap->len); + ret =3D -EFAULT; + goto send_reply; + } + +send_reply: + if (hdr->flags & VHOST_USER_NEED_REPLY_MASK) { + payload->u64 =3D !!ret; + hdr->size =3D sizeof(payload->u64); + if (!vhost_user_send_resp(ioc, hdr, payload, &local_err)) { + error_report_err(local_err); + return -EFAULT; + } + } + + if (!ret && shmem && mmap) { + /* Free the MemoryRegion only after reply */ + virtio_del_shmem_map(shmem, vu_mmap->shm_offset, vu_mmap->len); + } + + return 0; +} + static void close_backend_channel(struct vhost_user *u) { g_source_destroy(u->backend_src); @@ -1933,6 +2151,21 @@ static gboolean backend_read(QIOChannel *ioc, GIOCon= dition condition, ret =3D vhost_user_backend_handle_shared_object_lookup(dev->opaque, &payload.obje= ct); break; + case VHOST_USER_BACKEND_SHMEM_MAP: + /* Handler manages its own response, check error and close connect= ion */ + reply_ack =3D false; + if (vhost_user_backend_handle_shmem_map(dev, ioc, &hdr, &payload, + fd ? fd[0] : -1) < 0) { + goto err; + } + break; + case VHOST_USER_BACKEND_SHMEM_UNMAP: + /* Handler manages its own response, check error and close connect= ion */ + reply_ack =3D false; + if (vhost_user_backend_handle_shmem_unmap(dev, ioc, &hdr, &payload= ) < 0) { + goto err; + } + break; default: error_report("Received unexpected msg type: %d.", hdr.request); ret =3D -EINVAL; @@ -3123,6 +3356,46 @@ void vhost_user_qmp_status(struct vhost_dev *dev, Vi= rtioStatus *status) qmp_decode_protocols(u->protocol_features); } =20 +static int vhost_user_get_shmem_config(struct vhost_dev *dev, + int *nregions, + uint64_t *memory_sizes, + Error **errp) +{ + int ret; + VhostUserMsg msg =3D { + .hdr.request =3D VHOST_USER_GET_SHMEM_CONFIG, + .hdr.flags =3D VHOST_USER_VERSION, + }; + + if (!vhost_user_has_protocol_feature(dev, + VHOST_USER_PROTOCOL_F_SHMEM)) { + *nregions =3D 0; + return 0; + } + + ret =3D vhost_user_write(dev, &msg, NULL, 0); + if (ret < 0) { + return ret; + } + + ret =3D vhost_user_read(dev, &msg); + if (ret < 0) { + return ret; + } + + if (msg.payload.shmem.nregions > VIRTIO_MAX_SHMEM_REGIONS) { + error_setg(errp, "Received too many shared memory regions: %d", + msg.payload.shmem.nregions); + return -EINVAL; + } + + *nregions =3D msg.payload.shmem.nregions; + memcpy(memory_sizes, + &msg.payload.shmem.memory_sizes, + sizeof(uint64_t) * VIRTIO_MAX_SHMEM_REGIONS); + return 0; +} + const VhostOps user_ops =3D { .backend_type =3D VHOST_BACKEND_TYPE_USER, .vhost_init =3D vhost_user_backend_init, @@ -3163,4 +3436,5 @@ const VhostOps user_ops =3D { .vhost_check_device_state =3D vhost_user_check_device_state, .vhost_phys_vring_addr =3D vhost_user_gpa_addresses, .vhost_phys_iotlb_msg =3D vhost_user_gpa_addresses, + .vhost_get_shmem_config =3D vhost_user_get_shmem_config, }; diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index ed58c1af9f..f4d86a3655 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -3119,6 +3119,173 @@ int virtio_save(VirtIODevice *vdev, QEMUFile *f) return ret; } =20 +VirtioSharedMemory *virtio_new_shmem_region(VirtIODevice *vdev, uint8_t sh= mid, uint64_t size) +{ + VirtioSharedMemory *elem; + g_autofree char *name =3D NULL; + + elem =3D g_new0(VirtioSharedMemory, 1); + elem->shmid =3D shmid; + + /* Initialize embedded MemoryRegion as container for shmem mappings */ + name =3D g_strdup_printf("virtio-shmem-%d", shmid); + memory_region_init(&elem->mr, OBJECT(vdev), name, size); + QTAILQ_INIT(&elem->mmaps); + QSIMPLEQ_INSERT_TAIL(&vdev->shmem_list, elem, entry); + return elem; +} + +VirtioSharedMemory *virtio_find_shmem_region(VirtIODevice *vdev, uint8_t s= hmid) +{ + VirtioSharedMemory *shmem, *next; + QSIMPLEQ_FOREACH_SAFE(shmem, &vdev->shmem_list, entry, next) { + if (shmem->shmid =3D=3D shmid) { + return shmem; + } + } + return NULL; +} + +static void virtio_shared_memory_mapping_instance_init(Object *obj) +{ + VirtioSharedMemoryMapping *mapping =3D VIRTIO_SHARED_MEMORY_MAPPING(ob= j); + + mapping->shmid =3D 0; + mapping->offset =3D 0; + mapping->len =3D 0; + mapping->mr =3D NULL; +} + +static void virtio_shared_memory_mapping_instance_finalize(Object *obj) +{ + VirtioSharedMemoryMapping *mapping =3D VIRTIO_SHARED_MEMORY_MAPPING(ob= j); + + /* Clean up MemoryRegion if it exists */ + if (mapping->mr) { + /* Unparent the MemoryRegion to trigger cleanup */ + object_unparent(OBJECT(mapping->mr)); + mapping->mr =3D NULL; + } +} + +VirtioSharedMemoryMapping *virtio_shared_memory_mapping_new(uint8_t shmid, + int fd, + uint64_t fd_of= fset, + uint64_t shm_o= ffset, + uint64_t len, + bool allow_wri= te) +{ + VirtioSharedMemoryMapping *mapping; + MemoryRegion *mr; + g_autoptr(GString) mr_name =3D g_string_new(NULL); + uint32_t ram_flags; + Error *local_err =3D NULL; + + if (len =3D=3D 0) { + error_report("Shared memory mapping size cannot be zero"); + return NULL; + } + + fd =3D dup(fd); + if (fd < 0) { + error_report("Failed to duplicate fd: %s", strerror(errno)); + return NULL; + } + + /* Determine RAM flags */ + ram_flags =3D RAM_SHARED; + if (!allow_write) { + ram_flags |=3D RAM_READONLY_FD; + } + + /* Create the VirtioSharedMemoryMapping */ + mapping =3D VIRTIO_SHARED_MEMORY_MAPPING( + object_new(TYPE_VIRTIO_SHARED_MEMORY_MAPPING)); + + /* Set up object properties */ + mapping->shmid =3D shmid; + mapping->offset =3D shm_offset; + mapping->len =3D len; + + /* Create MemoryRegion as a child of this object */ + mr =3D g_new0(MemoryRegion, 1); + g_string_printf(mr_name, "virtio-shmem-%d-%" PRIx64, shmid, shm_offset= ); + + /* Initialize MemoryRegion with file descriptor */ + if (!memory_region_init_ram_from_fd(mr, OBJECT(mapping), mr_name->str, + len, ram_flags, fd, fd_offset, + &local_err)) { + error_report_err(local_err); + g_free(mr); + close(fd); + object_unref(OBJECT(mapping)); + return NULL; + } + + mapping->mr =3D mr; + return mapping; +} + +int virtio_add_shmem_map(VirtioSharedMemory *shmem, + VirtioSharedMemoryMapping *mapping) +{ + if (!mapping) { + error_report("VirtioSharedMemoryMapping cannot be NULL"); + return -1; + } + if (!mapping->mr) { + error_report("VirtioSharedMemoryMapping has no MemoryRegion"); + return -1; + } + + /* Validate boundaries against the VIRTIO shared memory region */ + if (mapping->offset + mapping->len > memory_region_size(&shmem->mr)) { + error_report("Memory exceeds the shared memory boundaries"); + return -1; + } + + /* Add as subregion to the VIRTIO shared memory */ + memory_region_add_subregion(&shmem->mr, mapping->offset, mapping->mr); + + /* Add to the mapped regions list */ + QTAILQ_INSERT_TAIL(&shmem->mmaps, mapping, link); + + return 0; +} + +VirtioSharedMemoryMapping *virtio_find_shmem_map(VirtioSharedMemory *shmem, + hwaddr offset, uint64_t size) +{ + VirtioSharedMemoryMapping *mapping; + QTAILQ_FOREACH(mapping, &shmem->mmaps, link) { + if (mapping->offset =3D=3D offset && mapping->len =3D=3D size) { + return mapping; + } + } + return NULL; +} + +void virtio_del_shmem_map(VirtioSharedMemory *shmem, hwaddr offset, + uint64_t size) +{ + VirtioSharedMemoryMapping *mapping =3D virtio_find_shmem_map(shmem, of= fset, size); + if (mapping =3D=3D NULL) { + return; + } + + /* + * Remove from memory region first + */ + memory_region_del_subregion(&shmem->mr, mapping->mr); + + /* + * Remove from list and unref the mapping which will trigger automatic= cleanup + * when the reference count reaches zero. + */ + QTAILQ_REMOVE(&shmem->mmaps, mapping, link); + object_unref(OBJECT(mapping)); +} + /* A wrapper for use as a VMState .put function */ static int virtio_device_put(QEMUFile *f, void *opaque, size_t size, const VMStateField *field, JSONWriter *vmdes= c) @@ -3244,6 +3411,7 @@ int virtio_set_features_ex(VirtIODevice *vdev, const = uint64_t *features) void virtio_reset(VirtIODevice *vdev) { VirtioDeviceClass *k =3D VIRTIO_DEVICE_GET_CLASS(vdev); + VirtioSharedMemory *shmem; uint64_t features[VIRTIO_FEATURES_NU64S]; int i; =20 @@ -3283,6 +3451,15 @@ void virtio_reset(VirtIODevice *vdev) for (i =3D 0; i < VIRTIO_QUEUE_MAX; i++) { __virtio_queue_reset(vdev, i); } + + /* Mappings are removed to prevent stale fds from remaining open. */ + QSIMPLEQ_FOREACH(shmem, &vdev->shmem_list, entry) { + while (!QTAILQ_EMPTY(&shmem->mmaps)) { + VirtioSharedMemoryMapping *mapping =3D QTAILQ_FIRST(&shmem->mm= aps); + virtio_del_shmem_map(shmem, mapping->offset, + memory_region_size(mapping->mr)); + } + } } =20 static void virtio_device_check_notification_compatibility(VirtIODevice *v= dev, @@ -3606,6 +3783,7 @@ void virtio_init(VirtIODevice *vdev, uint16_t device_= id, size_t config_size) NULL, virtio_vmstate_change, vdev); vdev->device_endian =3D virtio_default_endian(); vdev->use_guest_notifier_mask =3D true; + QSIMPLEQ_INIT(&vdev->shmem_list); } =20 /* @@ -4117,11 +4295,25 @@ static void virtio_device_free_virtqueues(VirtIODev= ice *vdev) static void virtio_device_instance_finalize(Object *obj) { VirtIODevice *vdev =3D VIRTIO_DEVICE(obj); + VirtioSharedMemory *shmem; =20 virtio_device_free_virtqueues(vdev); =20 g_free(vdev->config); g_free(vdev->vector_queues); + while (!QSIMPLEQ_EMPTY(&vdev->shmem_list)) { + shmem =3D QSIMPLEQ_FIRST(&vdev->shmem_list); + while (!QTAILQ_EMPTY(&shmem->mmaps)) { + VirtioSharedMemoryMapping *mapping =3D QTAILQ_FIRST(&shmem->mm= aps); + virtio_del_shmem_map(shmem, mapping->offset, + memory_region_size(mapping->mr)); + } + + /* Clean up the embedded MemoryRegion */ + object_unparent(OBJECT(&shmem->mr)); + QSIMPLEQ_REMOVE_HEAD(&vdev->shmem_list, entry); + g_free(shmem); + } } =20 static const Property virtio_properties[] =3D { @@ -4487,9 +4679,18 @@ static const TypeInfo virtio_device_info =3D { .class_size =3D sizeof(VirtioDeviceClass), }; =20 +static const TypeInfo virtio_shared_memory_mapping_info =3D { + .name =3D TYPE_VIRTIO_SHARED_MEMORY_MAPPING, + .parent =3D TYPE_OBJECT, + .instance_size =3D sizeof(VirtioSharedMemoryMapping), + .instance_init =3D virtio_shared_memory_mapping_instance_init, + .instance_finalize =3D virtio_shared_memory_mapping_instance_finalize, +}; + static void virtio_register_types(void) { type_register_static(&virtio_device_info); + type_register_static(&virtio_shared_memory_mapping_info); } =20 type_init(virtio_register_types) diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index d9fde42558..3f745e3b67 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -99,6 +99,44 @@ enum virtio_device_endian { VIRTIO_DEVICE_ENDIAN_BIG, }; =20 +#define TYPE_VIRTIO_SHARED_MEMORY_MAPPING "virtio-shared-memory-mapping" +OBJECT_DECLARE_SIMPLE_TYPE(VirtioSharedMemoryMapping, VIRTIO_SHARED_MEMORY= _MAPPING) + +/** + * VirtioSharedMemoryMapping: + * @parent: Parent QOM object + * @shmid: VIRTIO Shared Memory Region ID + * @offset: Offset within the VIRTIO Shared Memory Region + * @len: Size of the mapping + * @mr: MemoryRegion associated with this shared memory mapping + * @link: List entry for the shared memory region's mapping list + * + * A QOM object that represents an individual file descriptor-based shared + * memory mapping within a VIRTIO Shared Memory Region. It manages the + * MemoryRegion lifecycle and file descriptor cleanup through QOM reference + * counting. When the object is unreferenced and its reference count drops + * to zero, it automatically cleans up the MemoryRegion and closes the file + * descriptor. + */ +struct VirtioSharedMemoryMapping { + Object parent; + + uint8_t shmid; + hwaddr offset; + uint64_t len; + MemoryRegion *mr; + QTAILQ_ENTRY(VirtioSharedMemoryMapping) link; +}; + +struct VirtioSharedMemory { + uint8_t shmid; + MemoryRegion mr; + QTAILQ_HEAD(, VirtioSharedMemoryMapping) mmaps; + QSIMPLEQ_ENTRY(VirtioSharedMemory) entry; +}; + +typedef struct VirtioSharedMemory VirtioSharedMemory; + /** * struct VirtIODevice - common VirtIO structure * @name: name of the device @@ -168,6 +206,8 @@ struct VirtIODevice */ EventNotifier config_notifier; bool device_iotlb_enabled; + /* Shared memory region for mappings. */ + QSIMPLEQ_HEAD(, VirtioSharedMemory) shmem_list; }; =20 struct VirtioDeviceClass { @@ -298,6 +338,100 @@ void virtio_notify(VirtIODevice *vdev, VirtQueue *vq); =20 int virtio_save(VirtIODevice *vdev, QEMUFile *f); =20 +/** + * virtio_new_shmem_region() - Create a new shared memory region + * @vdev: VirtIODevice + * @shmid: Shared memory ID + * @size: Size of the shared memory region + * + * Creates a new VirtioSharedMemory region for the given device and ID. + * The returned VirtioSharedMemory is owned by the VirtIODevice and will + * be automatically freed when the device is destroyed. The caller + * should not free the returned pointer. + * + * Returns: Pointer to the new VirtioSharedMemory region, or NULL on failu= re + */ +VirtioSharedMemory *virtio_new_shmem_region(VirtIODevice *vdev, uint8_t sh= mid, uint64_t size); + +/** + * virtio_find_shmem_region() - Find an existing shared memory region + * @vdev: VirtIODevice + * @shmid: Shared memory ID to find + * + * Finds an existing VirtioSharedMemory region by ID. The returned pointer + * is owned by the VirtIODevice and should not be freed by the caller. + * + * Returns: Pointer to the VirtioSharedMemory region, or NULL if not found + */ +VirtioSharedMemory *virtio_find_shmem_region(VirtIODevice *vdev, uint8_t s= hmid); + +/** + * virtio_shared_memory_mapping_new() - Create a new VirtioSharedMemoryMap= ping + * @shmid: VIRTIO Shared Memory Region ID + * @fd: File descriptor for the shared memory + * @fd_offset: Offset within the file descriptor + * @shm_offset: Offset within the VIRTIO Shared Memory Region + * @len: Size of the mapping + * @allow_write: Whether to allow write access to the mapping + * + * Creates a new VirtioSharedMemoryMapping that manages a shared memory ma= pping. + * The object will create a MemoryRegion using memory_region_init_ram_from= _fd() + * as a child object. When the object is finalized, it will automatically + * clean up the MemoryRegion and close the file descriptor. + * + * Return: A new VirtioSharedMemoryMapping on success, NULL on error. + */ +VirtioSharedMemoryMapping *virtio_shared_memory_mapping_new(uint8_t shmid, + int fd, + uint64_t fd_of= fset, + uint64_t shm_o= ffset, + uint64_t len, + bool allow_wri= te); + +/** + * virtio_add_shmem_map() - Add a memory mapping to a shared region + * @shmem: VirtioSharedMemory region + * @mapping: VirtioSharedMemoryMapping to add (transfers ownership) + * + * Adds a memory mapping to the shared memory region. The VirtioSharedMemo= ryMapping + * ownership is transferred to the shared memory region and will be automa= tically + * cleaned up through QOM reference counting when virtio_del_shmem_map() is + * called or when the shared memory region is destroyed. + * + * Returns: 0 on success, negative errno on failure + */ +int virtio_add_shmem_map(VirtioSharedMemory *shmem, + VirtioSharedMemoryMapping *mapping); + +/** + * virtio_find_shmem_map() - Find a memory mapping in a shared region + * @shmem: VirtioSharedMemory region + * @offset: Offset within the shared memory region + * @size: Size of the mapping to find + * + * Finds an existing memory mapping that covers the specified range. + * The returned VirtioSharedMemoryMapping is owned by the VirtioSharedMemo= ry + * region and should not be freed by the caller. + * + * Returns: Pointer to the VirtioSharedMemoryMapping, or NULL if not found + */ +VirtioSharedMemoryMapping *virtio_find_shmem_map(VirtioSharedMemory *shmem, + hwaddr offset, uint64_t size); + +/** + * virtio_del_shmem_map() - Remove a memory mapping from a shared region + * @shmem: VirtioSharedMemory region + * @offset: Offset of the mapping to remove + * @size: Size of the mapping to remove + * + * Removes a memory mapping from the shared memory region. This will + * automatically unref the associated VhostUserShmemObject, which may + * trigger its finalization and cleanup if no other references exist. + * The mapping's MemoryRegion will be properly unmapped and cleaned up. + */ +void virtio_del_shmem_map(VirtioSharedMemory *shmem, hwaddr offset, + uint64_t size); + extern const VMStateInfo virtio_vmstate_info; =20 #define VMSTATE_VIRTIO_DEVICE \ diff --git a/include/system/memory.h b/include/system/memory.h index 1edb38b07d..d5f8d8b349 100644 --- a/include/system/memory.h +++ b/include/system/memory.h @@ -1456,6 +1456,7 @@ bool memory_region_init_ram_from_file(MemoryRegion *m= r, const char *path, ram_addr_t offset, Error **errp); +#endif =20 /** * memory_region_init_ram_from_fd: Initialize RAM memory region with a @@ -1485,7 +1486,6 @@ bool memory_region_init_ram_from_fd(MemoryRegion *mr, int fd, ram_addr_t offset, Error **errp); -#endif =20 /** * memory_region_init_ram_ptr: Initialize RAM memory region from a diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvho= st-user/libvhost-user.c index 014d210748..d2df50e3d0 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -1592,6 +1592,76 @@ vu_rm_shared_object(VuDev *dev, unsigned char uuid[U= UID_LEN]) return vu_send_message(dev, &msg); } =20 +bool +vu_shmem_map(VuDev *dev, uint8_t shmid, uint64_t fd_offset, + uint64_t shm_offset, uint64_t len, uint64_t flags, int fd) +{ + VhostUserMsg vmsg =3D { + .request =3D VHOST_USER_BACKEND_SHMEM_MAP, + .size =3D sizeof(vmsg.payload.mmap), + .flags =3D VHOST_USER_VERSION, + .payload.mmap =3D { + .shmid =3D shmid, + .fd_offset =3D fd_offset, + .shm_offset =3D shm_offset, + .len =3D len, + .flags =3D flags, + }, + .fd_num =3D 1, + .fds[0] =3D fd, + }; + + if (!vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_SHMEM)) { + return false; + } + + if (vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_REPLY_ACK)) { + vmsg.flags |=3D VHOST_USER_NEED_REPLY_MASK; + } + + pthread_mutex_lock(&dev->backend_mutex); + if (!vu_message_write(dev, dev->backend_fd, &vmsg)) { + pthread_mutex_unlock(&dev->backend_mutex); + return false; + } + + /* Also unlocks the backend_mutex */ + return vu_process_message_reply(dev, &vmsg); +} + +bool +vu_shmem_unmap(VuDev *dev, uint8_t shmid, uint64_t shm_offset, uint64_t le= n) +{ + VhostUserMsg vmsg =3D { + .request =3D VHOST_USER_BACKEND_SHMEM_UNMAP, + .size =3D sizeof(vmsg.payload.mmap), + .flags =3D VHOST_USER_VERSION, + .payload.mmap =3D { + .shmid =3D shmid, + .fd_offset =3D 0, + .shm_offset =3D shm_offset, + .len =3D len, + }, + }; + + if (!vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_SHMEM)) { + return false; + } + + if (vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_REPLY_ACK)) { + vmsg.flags |=3D VHOST_USER_NEED_REPLY_MASK; + } + + pthread_mutex_lock(&dev->backend_mutex); + if (!vu_message_write(dev, dev->backend_fd, &vmsg)) { + pthread_mutex_unlock(&dev->backend_mutex); + return false; + } + + /* Also unlocks the backend_mutex */ + return vu_process_message_reply(dev, &vmsg); +} + static bool vu_set_vring_call_exec(VuDev *dev, VhostUserMsg *vmsg) { diff --git a/subprojects/libvhost-user/libvhost-user.h b/subprojects/libvho= st-user/libvhost-user.h index 2ffc58c11b..6a2d0f9fae 100644 --- a/subprojects/libvhost-user/libvhost-user.h +++ b/subprojects/libvhost-user/libvhost-user.h @@ -69,6 +69,8 @@ enum VhostUserProtocolFeature { /* Feature 16 is reserved for VHOST_USER_PROTOCOL_F_STATUS. */ /* Feature 17 reserved for VHOST_USER_PROTOCOL_F_XEN_MMAP. */ VHOST_USER_PROTOCOL_F_SHARED_OBJECT =3D 18, + /* Feature 19 is reserved for VHOST_USER_PROTOCOL_F_DEVICE_STATE */ + VHOST_USER_PROTOCOL_F_SHMEM =3D 20, VHOST_USER_PROTOCOL_F_MAX }; =20 @@ -127,6 +129,8 @@ typedef enum VhostUserBackendRequest { VHOST_USER_BACKEND_SHARED_OBJECT_ADD =3D 6, VHOST_USER_BACKEND_SHARED_OBJECT_REMOVE =3D 7, VHOST_USER_BACKEND_SHARED_OBJECT_LOOKUP =3D 8, + VHOST_USER_BACKEND_SHMEM_MAP =3D 9, + VHOST_USER_BACKEND_SHMEM_UNMAP =3D 10, VHOST_USER_BACKEND_MAX } VhostUserBackendRequest; =20 @@ -186,6 +190,23 @@ typedef struct VhostUserShared { unsigned char uuid[UUID_LEN]; } VhostUserShared; =20 +/* For the flags field of VhostUserMMap */ +#define VHOST_USER_FLAG_MAP_RW (1u << 0) + +typedef struct { + /* VIRTIO Shared Memory Region ID */ + uint8_t shmid; + uint8_t padding[7]; + /* File offset */ + uint64_t fd_offset; + /* Offset within the VIRTIO Shared Memory Region */ + uint64_t shm_offset; + /* Size of the mapping */ + uint64_t len; + /* Flags for the mmap operation, from VHOST_USER_FLAG_MAP_* */ + uint64_t flags; +} VhostUserMMap; + #define VU_PACKED __attribute__((packed)) =20 typedef struct VhostUserMsg { @@ -210,6 +231,7 @@ typedef struct VhostUserMsg { VhostUserVringArea area; VhostUserInflight inflight; VhostUserShared object; + VhostUserMMap mmap; } payload; =20 int fds[VHOST_MEMORY_BASELINE_NREGIONS]; @@ -593,6 +615,38 @@ bool vu_add_shared_object(VuDev *dev, unsigned char uu= id[UUID_LEN]); */ bool vu_rm_shared_object(VuDev *dev, unsigned char uuid[UUID_LEN]); =20 +/** + * vu_shmem_map: + * @dev: a VuDev context + * @shmid: VIRTIO Shared Memory Region ID + * @fd_offset: File offset + * @shm_offset: Offset within the VIRTIO Shared Memory Region + * @len: Size of the mapping + * @flags: Flags for the mmap operation + * @fd: A file descriptor + * + * Advertises a new mapping to be made in a given VIRTIO Shared Memory Reg= ion. + * + * Returns: TRUE on success, FALSE on failure. + */ +bool vu_shmem_map(VuDev *dev, uint8_t shmid, uint64_t fd_offset, + uint64_t shm_offset, uint64_t len, uint64_t flags, int f= d); + +/** + * vu_shmem_unmap: + * @dev: a VuDev context + * @shmid: VIRTIO Shared Memory Region ID + * @fd_offset: File offset + * @len: Size of the mapping + * + * The front-end un-mmaps a given range in the VIRTIO Shared Memory Region + * with the requested `shmid`. + * + * Returns: TRUE on success, FALSE on failure. + */ +bool vu_shmem_unmap(VuDev *dev, uint8_t shmid, uint64_t shm_offset, + uint64_t len); + /** * vu_queue_set_notification: * @dev: a VuDev context diff --git a/system/memory.c b/system/memory.c index 739ba11da6..96c13664fe 100644 --- a/system/memory.c +++ b/system/memory.c @@ -1652,6 +1652,20 @@ bool memory_region_init_ram_from_fd(MemoryRegion *mr= , Object *owner, false, errp); return memory_region_set_ram_block(mr, rb); } +#else +bool memory_region_init_ram_from_fd(MemoryRegion *mr, + Object *owner, + const char *name, + uint64_t size, + uint32_t ram_flags, + int fd, + ram_addr_t offset, + Error **errp) +{ + error_setg(errp, + "memory_region_init_ram_from_fd is not supported on this pl= atform"); + return false; +} #endif =20 static void memory_region_set_ram_ptr(MemoryRegion *mr, uint64_t size, --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464551; cv=none; d=zohomail.com; s=zohoarc; b=Tnwf8k/72BCvQ2JUSs0Kt97h+JhLNbg3VhZvY8jq3v7AIw52IXzmDVW+8ezcKR4J6dKI3+/n6M0BKeA0sXc+vgPCSVMaQ5zoXPMamjYycHD3Lrx9YQmEMdcg0c5QY26E0SGnVLjnn8VLMnT4w9VU6JDjns93g8DK86Ldc8NCsYc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464551; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=M4BImduj3c60I0euzQ/n3wljbD+0Z+LObGuPv1tHebA=; b=eCCCqQH6GfgmFwUwJKhtLdKYAG+VHD6NTa8pTzz1Dpisn2X9jW4GKrlaEVUYtWcu//mCRxowNsrjz5nH/xhCXgxJzFtppcIapDVvuNUUv3V9/eoGU88NcEpYMSVBqvTaSpyAZ/vkZipWWRivFGJqDioBG2QMESCDdzsAtSpJdgI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464551923412.2955473778359; Sun, 14 Jun 2026 12:15:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDR-0000LA-NW; Sun, 14 Jun 2026 15:09:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDE-0007iO-Ov for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:42 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDD-0002ho-BT for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:40 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-64-vsuLENsmPDKJyC4sud9qGA-1; Sun, 14 Jun 2026 15:09:37 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-45efa2f7009so1710484f8f.3 for ; Sun, 14 Jun 2026 12:09:37 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2cf5d9sm23858260f8f.32.2026.06.14.12.09.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464178; 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: in-reply-to:in-reply-to:references:references; bh=M4BImduj3c60I0euzQ/n3wljbD+0Z+LObGuPv1tHebA=; b=GkfRba1d2yDbOyv6pxyoG83cM5hQW0hnw6huZTW7rwkjJ0IKsJiGm+VNxsl5oTM5l7xjlk RBDpt5dD8q7/D0cG9BfoSEicEFOU6IdgATTcFuJPGyKOHgtZosesgQ2BMImjW0o8Ll11tA D4Wt6ypM2smd8O7ZG7S1bEYADQYIg4s= X-MC-Unique: vsuLENsmPDKJyC4sud9qGA-1 X-Mimecast-MFC-AGG-ID: vsuLENsmPDKJyC4sud9qGA_1781464176 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464176; x=1782068976; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=M4BImduj3c60I0euzQ/n3wljbD+0Z+LObGuPv1tHebA=; b=MclPO9k/AGKGzzAI/bIySfgtlLg6bPlGAVF9Ve2T5cSo7TUMsVfG1jXduyUOabv4eU 3bMwBOEkKTDUtiFHSU5LuZcIdc6tI+Vdayedw551qergA0LDUZ4P1R1PUNxSwMpeVwDF ekyNn5qW9hlIi5w3ONqSTX08vEuCNchYl6PhgYT2gFkLVgsc5NeQB9e8xL/36W8Pwswd yKWuwTwC4cPBGnkj2Gi7yXsUkgHGF156G5owvNRNuTFQRIrI760n8lysCz/fAuXsIGk1 bqi8zofbHFucX8u97eXEWPsxZR7Tk+gchbGjFdEq5r8M0jU2RWhzFOR8aok9/Oc4H3Vn BHRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464176; x=1782068976; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=M4BImduj3c60I0euzQ/n3wljbD+0Z+LObGuPv1tHebA=; b=K/RIIROfDs9Qy+WQu0DgIDccqG8v3tvnoag731P5sx/0URvizOL1GMMk33I2lL08E0 W5ov1MqWDRbAC7mYR+I+tDTQqylI2f+2KlrvBkyE1oYS3fu2j4HJezPmJGIKMbSyBM12 zA5OuzWZ12o+ia4ffz3c4XlSgpPp2psvXwATewQnSG4W+y+RyjoQwCcxAr+C0+VXCU1X SWQtfHt9cmBPYNTwOwtrJRjhikbWmrgBo0bMvZBla4fjSAWj8mezlGn1wxtO1RVlLzVC aGoH622YP5x0NcwQ8oV9k02Y4KSeaT8GTPoAG3LxLK3ItIT4kksudJPng+nFFo7E4omr aDfA== X-Gm-Message-State: AOJu0Yzr1kG96IsyOAFLcHeDkgoBCAER9mTSoF+y05zDk14MHPezzWDZ 0QolYH8zSrDXvcRlZCXoVc8N8rW7pDQtVaeqLRwCHiM/xkNXWX04aCLqEsZ6Pak7r1oR18yOf2+ r3Uq/lBQSRxaQ42J3wmK53kK2+Qyxa9D0WG+XX6rm+nthWsIzXsf/F9Dage/ZpqXhE0TY7e/8jt //zN5NgbDaDxkrnLx07cUpc1sqKTLOfUek6A== X-Gm-Gg: Acq92OHb7tH3cfY1u6J9/ASBHMTxPPLClNput4AmwXmPyo6b6hTaNeTorPnDxoviHDl PcWDBZhRV995KTBxD87ELv8bXMGKrOpI9TCUwgEetSDxOG2vfgYWQsr/O35oGMFDBM7SQb0GrZa 4egWnusWxehsOBCTQD1hiJ/7ovGCOTqICiLErI6uFO+tGICl8PrgrdCyqbSy11YZPuMlRYIlmWi 06ARCpyDDT4BEbUcVPH7z5xYSbfEdSJDJqigBU87PUnUx66j1qLknzXJWcuCAV/1+5IZaW+Qn13 6/5gPRO5WKkQqTCAuJJIcqnpvLUATIk7J7iVy7cgo4Bn0zKBTXbuPKXWgys8zk1UiVbwqmJwdMG QUIx90ITMA62uKQymhVzxAxHUdakEaFfWWw6BurUKa2c= X-Received: by 2002:a05:6000:178e:b0:460:25f3:b25a with SMTP id ffacd0b85a97d-46077f2d2abmr9193453f8f.34.1781464176301; Sun, 14 Jun 2026 12:09:36 -0700 (PDT) X-Received: by 2002:a05:6000:178e:b0:460:25f3:b25a with SMTP id ffacd0b85a97d-46077f2d2abmr9193424f8f.34.1781464175814; Sun, 14 Jun 2026 12:09:35 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:33 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Albert Esteve , Stefano Garzarella , David Hildenbrand , Stefan Hajnoczi , Pierrick Bouvier Subject: [PULL 092/106] vhost_user.rst: Align VhostUserMsg excerpt members Message-ID: <8d0e94927a80f02562e843cca61cf65cef32db5a.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464552383158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Albert Esteve Add missing members to the VhostUserMsg excerpt in the vhost-user spec documentation. Reviewed-by: Stefano Garzarella Reviewed-by: David Hildenbrand Reviewed-by: Stefan Hajnoczi Signed-off-by: Albert Esteve Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304165223.2166175-3-aesteve@redhat.com> --- docs/interop/vhost-user.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index e8554a3859..883b1e90a2 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -378,11 +378,15 @@ In QEMU the vhost-user message is implemented with th= e following struct: struct vhost_vring_state state; struct vhost_vring_addr addr; VhostUserMemory memory; + VhostUserMemRegMsg mem_reg; VhostUserLog log; struct vhost_iotlb_msg iotlb; VhostUserConfig config; + VhostUserCryptoSession session; VhostUserVringArea area; VhostUserInflight inflight; + VhostUserShared object; + VhostUserTransferDeviceState transfer_state; }; } QEMU_PACKED VhostUserMsg; =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464469; cv=none; d=zohomail.com; s=zohoarc; b=A+1xmrNAbC+LNIVmEE8VN2GX6MMaBRMbz/eM0Fva9cT22hovgepOSo5KJXBc+f9O2iXUV1SwDCmWH2BkCpWNkjQbfuPe+TJVDu8h25DzGm6MVohK0HEgxJ8oXlTPOGwM3IIrF/+R8/98kl9w4gq7rBGLwA5FrazGmZAC3AzIYzY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464469; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dxQiufrlju7WrdEUkSc4WpPk6ds42ZX5EDbbuJfT9OE=; b=gaKH0w7Q9hBnT9FXNbkVooYAQtV7TBmlJq0S566VBgxcNzFGM1krRaLynA4qthPiXdTNAJ26GmTepY/mD7N20ALy1mSWpqtCbIMoHu2Fogi87q1md5Fu3FRcJr2LGNpYi5hljUlxfFHS1IhmWkia8aNdNXvdds8bhwQippu2Sr0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464469935841.4684934762746; Sun, 14 Jun 2026 12:14:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDP-00009n-Jq; Sun, 14 Jun 2026 15:09:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDI-0007mJ-Kl for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:46 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDF-0002iE-V0 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:43 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-213-sgII0XexNkOi90w00nGBtQ-1; Sun, 14 Jun 2026 15:09:40 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490cc1ae292so15158465e9.1 for ; Sun, 14 Jun 2026 12:09:39 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922035b4absm184726005e9.11.2026.06.14.12.09.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464181; 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: in-reply-to:in-reply-to:references:references; bh=dxQiufrlju7WrdEUkSc4WpPk6ds42ZX5EDbbuJfT9OE=; b=H65Pu3kpbib9/GfBbDEwM7Xb1b5JmGafx1ckEUWyknys35jMzxWR+pnhU5Lv4oi8VsA8d1 BtkP2c8PJo1JcDy3FqUiFu0dOGnTyms9D4+bEzbrDN+PIdII2JeNuUFBU7GV29nZbHmcK2 xNFGkCXl53KBBm1qd/Tk4UIqO9vgb9w= X-MC-Unique: sgII0XexNkOi90w00nGBtQ-1 X-Mimecast-MFC-AGG-ID: sgII0XexNkOi90w00nGBtQ_1781464179 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464179; x=1782068979; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=dxQiufrlju7WrdEUkSc4WpPk6ds42ZX5EDbbuJfT9OE=; b=heKcja27/R6kWyBK2Lmn6baokQulB/hBmTop6nS0ULMWOxdZ0/ng07OWiLYuBWzvs3 6V8xax1Gq+5RfaluVmJ0vZ9dWhktaa5re2cqPF0wL0MYKNE9v0XGdK0dY5Yygy20dNGx 8pESDStl5cfL6TuTcbt71B0tGI0ckAoRZ+Ap1Ogn4GVupNO8BrF8tzvHEk+NwuLT1Ndh YJpZuSl7McSSFVhEx58g5HS8ec1hwbJeTgMima/IHaEqlH/SW7jtdkGzgHEeHk8gGKVR B5lT+0fo2FBjxarIBRDzFqPJXZ/qnajmWeHpGOrVrPsbOe39FiDAExTl0uOm4S0iPB9s O2Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464179; x=1782068979; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dxQiufrlju7WrdEUkSc4WpPk6ds42ZX5EDbbuJfT9OE=; b=bvy1FPoeVVNsY/nJiOhGIgQRrMwXzxBpcxWZn9G46lGRCaligWUMoawAE8T8NGzmUl jhTTufDPnBrPSsC433IogniD2I3/fFhJdx7AoBg/iZjZITxBsc/yiXvQsWSDHyNdOQuP RZLxJQ1HwkX7nWo4dMqkxLkvsHCRIoYe8s03kd/uYhdtouf/l2gEwjmf1JBqTQV0kIrt ZZUJSwlhhndHpc5DiIPp75Miyq4KRUbF/+CWF+jaPOcEymcmS2F6/+T8QVn1fCRLVb+G UdAAdeROu4lT9mnE4XIk5mlnbnaEVupn1bgMD5TAsyO4NGosoQ9Lk8d1E3ExCyyLDPjC Sv5g== X-Gm-Message-State: AOJu0YyLLRleOZ+5x11LvcuhTQ517rsC+qXz1kFHlL49N/fFtmkXkoOY K1G4OYWBRYo5/5MOBbbL+WRXKeUpU80EaOFtuEE8LE0yCTpUC/nRu3uMBe2yE61hnB4gL+tdIHU MU6CtSMMTbFmX+jpBRZh2m7enEqQ/v1pK018aTcDm86Cz18WJEVmJx0zGEQezjREsnVlvjd9KDi kwmzG4u26QuW16eXn/1oDx7lzO37Pwg3PFqQ== X-Gm-Gg: Acq92OGwT7p6g8kCMI9qwI500ZUoY69PrCd7vzA4Hq97rKdDeGlRaId4ZDiVQ89mFsw 5K3wXQlDc5e3uVpkrvQoOgfCz4qY8ImnS3eLt5DvZm3atkHVVjNNbr08rrdV19g9lHE7dz+1TPI PxSzBYSqBf7DYTM6N9LFZl8vuNdbNqj+XZlYxq5EHvjJnhsZEnrP78Za/JvZsbq8faaOJQkULZd Ly5ovTyUcZX8uccXL9VbSRHm6avUg/aTGguQYLoZHpxtjOvSeVc6oCRCnZ2VfQELEda7ICzWvH1 hOLek4nEK+W9kL404ppSEWWo08LAOaKPs268qA9hS9yrgwtIbmCVZJiMkJ/grRu6BECnBmR53Nk 60ulM7J/wwHG+Xc/Tcptm7KxcSNolMLiMO7ZmUpXqBCY= X-Received: by 2002:a05:600c:3542:b0:490:b4a8:e031 with SMTP id 5b1f17b1804b1-490ec480e65mr121660405e9.4.1781464178703; Sun, 14 Jun 2026 12:09:38 -0700 (PDT) X-Received: by 2002:a05:600c:3542:b0:490:b4a8:e031 with SMTP id 5b1f17b1804b1-490ec480e65mr121660105e9.4.1781464178158; Sun, 14 Jun 2026 12:09:38 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:36 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Albert Esteve , Stefano Garzarella , Alyssa Ross , Stefan Hajnoczi , Manos Pitsidianakis , Pierrick Bouvier Subject: [PULL 093/106] vhost_user.rst: Add SHMEM_MAP/_UNMAP to spec Message-ID: <588acb45c29f8c30f98b5cbafb9fd09cb932bd88.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464470279158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Albert Esteve Add SHMEM_MAP/_UNMAP request to the vhost-user spec documentation. Reviewed-by: Stefano Garzarella Reviewed-by: Alyssa Ross Reviewed-by: Stefan Hajnoczi Reviewed-by: Manos Pitsidianakis Signed-off-by: Albert Esteve Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304165223.2166175-4-aesteve@redhat.com> --- docs/interop/vhost-user.rst | 64 +++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index 883b1e90a2..4182d721ca 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -362,6 +362,28 @@ Device state transfer parameters In the future, additional phases might be added e.g. to allow iterative migration while the device is running. =20 +MMAP request +^^^^^^^^^^^^ + ++-------+---------+-----------+------------+-----+-------+ +| shmid | padding | fd_offset | shm_offset | len | flags | ++-------+---------+-----------+------------+-----+-------+ + +:shmid: a 8-bit shared memory region identifier + +:fd_offset: a 64-bit offset of this area from the start + of the supplied file descriptor + +:shm_offset: a 64-bit offset from the start of the + pointed shared memory region + +:len: a 64-bit size of the memory to map + +:flags: a 64-bit value: + + - 0: Pages are mapped read-only + - 1: Pages are mapped read-write + C structure ----------- =20 @@ -387,6 +409,7 @@ In QEMU the vhost-user message is implemented with the = following struct: VhostUserInflight inflight; VhostUserShared object; VhostUserTransferDeviceState transfer_state; + VhostUserMMap mmap; }; } QEMU_PACKED VhostUserMsg; =20 @@ -1083,6 +1106,7 @@ Protocol features #define VHOST_USER_PROTOCOL_F_DEVICE_STATE 19 #define VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIGHT 20 #define VHOST_USER_PROTOCOL_F_GPA_ADDRESSES 21 + #define VHOST_USER_PROTOCOL_F_SHMEM_MAP 22 =20 Front-end message types ----------------------- @@ -1904,6 +1928,46 @@ is sent by the front-end. when the operation is successful, or non-zero otherwise. Note that if the operation fails, no fd is sent to the backend. =20 +``VHOST_USER_BACKEND_SHMEM_MAP`` + :id: 9 + :equivalent ioctl: N/A + :request payload: fd and ``struct VhostUserMMap`` + :reply payload: N/A + + When the ``VHOST_USER_PROTOCOL_F_SHMEM`` protocol feature has been + successfully negotiated, this message can be submitted by the backends to + advertise a new mapping to be made in a given VIRTIO Shared Memory Regio= n. + Upon receiving the message, the front-end will mmap the given fd into the + VIRTIO Shared Memory Region with the requested ``shmid``. + + If ``VHOST_USER_PROTOCOL_F_REPLY_ACK`` is negotiated, and + back-end set the ``VHOST_USER_NEED_REPLY`` flag, the front-end + must respond with zero when operation is successfully completed, + or non-zero otherwise. + + Mapping over an already existing map is not allowed and requests shall f= ail. + Therefore, the memory range in the request must correspond with a valid, + free region of the VIRTIO Shared Memory Region. Also, note that mappings + consume resources and that the request can fail when there are no resour= ces + available. Lastly, mappings are automatically unmapped by the front-end + across device reset operation. + +``VHOST_USER_BACKEND_SHMEM_UNMAP`` + :id: 10 + :equivalent ioctl: N/A + :request payload: ``struct VhostUserMMap`` + :reply payload: N/A + + When the ``VHOST_USER_PROTOCOL_F_SHMEM`` protocol feature has been + successfully negotiated, this message can be submitted by the backends so + that the front-end un-mmaps a given range (``shm_offset``, ``len``) in t= he + VIRTIO Shared Memory Region with the requested ``shmid``. Note that the + given range shall correspond to the entirety of a valid mapped region. + + If ``VHOST_USER_PROTOCOL_F_REPLY_ACK`` is negotiated, and the back-end + sets the ``VHOST_USER_NEED_REPLY`` flag, the front-end must respond with + zero when operation is successfully completed, or non-zero otherwise. + .. _reply_ack: =20 VHOST_USER_PROTOCOL_F_REPLY_ACK --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464465; cv=none; d=zohomail.com; s=zohoarc; b=ZDC92JOokpuQnXaAD4UQNKCvnREKM0yFSPcbksU7dafhh3s0FNP509vJdOrUlD/8t7yaXxfgGDd/ufs/RjjuwxuvuGuf7ud06CRGhH9uAJ9Qpi5c1OChIuhTWMkjmEgBCFjNcyu8EyPaEdcuz4j6rNREhrmzczZd7o1dYbk4YBE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464465; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LeQdwvlxUcXinBqYKDGXgIIF+pdKo0MXbEyWkBYMIlM=; b=VGymlFbwDSHixzb8D53JG+9o6pifYdEuwSKy6z5gwBZm/BhiJneRO/Q5CRjjXVxFEFBinJnYw5xy+6zCANMwVsjMk7TWbdu2ot0KXpKDSd5YjTpSwr6uZQ4d/6+9COa3C1WAyPRF/+zKjIM3IpQhx+57hb7v7C7hNoQsluvzUtM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464465239515.0825727360706; Sun, 14 Jun 2026 12:14:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDQ-0000Ev-5j; Sun, 14 Jun 2026 15:09:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDJ-0007mM-Su for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:46 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDI-0002iV-69 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:45 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-288-JejFclSBNV-IaX8K98kwbg-1; Sun, 14 Jun 2026 15:09:42 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490e547f3cfso24344405e9.3 for ; Sun, 14 Jun 2026 12:09:42 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49220310a58sm210690175e9.4.2026.06.14.12.09.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464183; 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: in-reply-to:in-reply-to:references:references; bh=LeQdwvlxUcXinBqYKDGXgIIF+pdKo0MXbEyWkBYMIlM=; b=g9uToUj56+6+mwTarffOM97D5qTQhM8fgqUrwwXSNoCu4TFQBhjVnrxU0Kc8+Vlq8oHOl7 XrvH7qrJHKrAcGpyvYevzdJkUOaRksDOmXyE8hH4dozWdlnh9Og8fn+a7gJ3QZM4wYUW/h SfSQFLDVdxtfbEIIqSM2XbnTpjoFzfs= X-MC-Unique: JejFclSBNV-IaX8K98kwbg-1 X-Mimecast-MFC-AGG-ID: JejFclSBNV-IaX8K98kwbg_1781464181 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464181; x=1782068981; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=LeQdwvlxUcXinBqYKDGXgIIF+pdKo0MXbEyWkBYMIlM=; b=HMmQKvjtaFNsiFyMnFMOsyhD+kUBwDiMjUEEp6vw5kJXTdhtlghvhGczSZ4O0JqMeP gaogAqWb7bXrb4JJzaPkLLlOGoZ+C2f5R/g5Zvj81GedGg3BCWiGqbTsGLIDjFd8XXXH rjar9bycIpZay9l9n43QB5BSZ+HQvq8Hm+r1uIMDFs1AhzDW8mNvOAxa/F20p1ry2FAD eK///twBLbmrm3T0+7NFIx0iGY4nDracbi8iTypv4e3Q3oqhmxovxKdfXmyJz1HRRjw9 SC39OA0Ht8DRnPc/3KDMJkvQAH/KOtx4pRy0pU+NhBHsvEZrxhGtqtB4K1wgh6OAH0Za nB8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464181; x=1782068981; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LeQdwvlxUcXinBqYKDGXgIIF+pdKo0MXbEyWkBYMIlM=; b=oBxXaoG9cfUhCpOXGfg0NOPCDhNyARaUAaO9p1UXLJuBnYwjebpvkZj9Gt/HOKk9R0 246Wl6KuBekU01A47oo2Awv912GOftEAuK9LLOTMk3Hj6iPITRsA9P3bomDA58+fTrv5 SIye7TjguWgqxUJ3dLDZTl8aF7z1E0YzzqqaD9BgWPrSkPsZN3zuJtSJerLjHgNusjnV 2O1IV1cJAwe97QdEZEzUy6N0g+GtSvzNgIqtfd0D0SHX3zMTZsqWKqrIg70cciKIz0Zl 45gwVSyT2Z01hRk/qVAtzY/6ct+kye+CBq8KCbnqq1+5cliaLo2i4h8mzZXs5pxNMLKW Yzdw== X-Gm-Message-State: AOJu0YxoDrDBnAFCL2YUJLyflut2iygyGUTGOANDcXhjAYbEhyX4w0jd coJwApOohF22OdFdPdAewt93mbELBmzUXJPozqNlZLzDrzRXjrPvFQl6hZzsu5G9ATqeAEp1aUS O91EKLrsnbY1F/dSG8aTNAFL0yTuJUGWBbMexgCh6kUWJ+5OXmGGYbVoVzvqvhO2ZvjLXvWMU67 RrScaCem3Yo/nLxyYzPdhZUcaRQI7weCGXlw== X-Gm-Gg: Acq92OH57d0SKxiqbz8dBn41KcEkVcLI2saTWwynKSL24CDq2gJQdrtCfWynAhgbR0t RJj/nPWa7gopRiJ+m5DJ9jnVVW1yRgPA2483CeK+b4thtfU8ZtVtpo2GzqJvDQXCrjBef2+eXPL TyX7Uc4JnDmq0YPv1Ap2s2lK4NEbv3NQx6bSHqqr8v3c2H86XnEJaADuS4vv4FQp2AhEKI34VmA kaU/XaYNS857uRRtkWFtATgVuUM/uHA0SDIbtc++NdlQ54zYHwcTxwfxFP4CUjKrpxLdOHrgifd xyAWAL1hnCEvK+UnRImRJBA8+ALzXlenSD8Kb8r2aNTZPKSXFG0hNsJutqIx4z5Zempo6TIoIF2 mCa4XnwKaEhJ64K9wUqqdnray5eDgIeEYEem+Prm6IIg= X-Received: by 2002:a05:600c:820c:b0:490:5cd8:d213 with SMTP id 5b1f17b1804b1-490ec4d3407mr144348825e9.15.1781464180834; Sun, 14 Jun 2026 12:09:40 -0700 (PDT) X-Received: by 2002:a05:600c:820c:b0:490:5cd8:d213 with SMTP id 5b1f17b1804b1-490ec4d3407mr144348475e9.15.1781464180291; Sun, 14 Jun 2026 12:09:40 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:38 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Albert Esteve , Stefano Garzarella , Stefan Hajnoczi Subject: [PULL 094/106] vhost_user: Add frontend get_shmem_config command Message-ID: <458f80f661e51d09936efb53eaba7c0d81ba323c.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464466099158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Albert Esteve The frontend can use this command to retrieve VirtIO Shared Memory Regions configuration from the backend. The response contains the number of shared memory regions, their size, and shmid. This is useful when the frontend is unaware of specific backend type and configuration, for example, in the `vhost-user-device` case. Reviewed-by: Stefano Garzarella Reviewed-by: Stefan Hajnoczi Signed-off-by: Albert Esteve Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304165223.2166175-5-aesteve@redhat.com> --- include/hw/virtio/vhost-backend.h | 10 ++++++++++ include/hw/virtio/vhost-user.h | 1 + include/hw/virtio/virtio.h | 2 ++ subprojects/libvhost-user/libvhost-user.h | 4 +++- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/include/hw/virtio/vhost-backend.h b/include/hw/virtio/vhost-ba= ckend.h index 00881a0bd4..d878d7b733 100644 --- a/include/hw/virtio/vhost-backend.h +++ b/include/hw/virtio/vhost-backend.h @@ -162,6 +162,15 @@ typedef int (*vhost_set_device_state_fd_op)(struct vho= st_dev *dev, int *reply_fd, Error **errp); typedef int (*vhost_check_device_state_op)(struct vhost_dev *dev, Error **= errp); +/* + * Max regions is VIRTIO_MAX_SHMEM_REGIONS, so that is the maximum + * number of memory_sizes that will be accepted. + */ +typedef int (*vhost_get_shmem_config_op)(struct vhost_dev *dev, + int *nregions, + uint64_t *memory_sizes, + Error **errp); + =20 typedef struct VhostOps { VhostBackendType backend_type; @@ -220,6 +229,7 @@ typedef struct VhostOps { vhost_supports_device_state_op vhost_supports_device_state; vhost_set_device_state_fd_op vhost_set_device_state_fd; vhost_check_device_state_op vhost_check_device_state; + vhost_get_shmem_config_op vhost_get_shmem_config; } VhostOps; =20 int vhost_user_gpu_set_socket(struct vhost_dev *dev, int fd); diff --git a/include/hw/virtio/vhost-user.h b/include/hw/virtio/vhost-user.h index 5ab70dab7e..06c360af18 100644 --- a/include/hw/virtio/vhost-user.h +++ b/include/hw/virtio/vhost-user.h @@ -35,6 +35,7 @@ enum VhostUserProtocolFeature { VHOST_USER_PROTOCOL_F_DEVICE_STATE =3D 19, VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIGHT =3D 20, VHOST_USER_PROTOCOL_F_GPA_ADDRESSES =3D 21, + VHOST_USER_PROTOCOL_F_SHMEM =3D 22, VHOST_USER_PROTOCOL_F_MAX }; =20 diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index 3f745e3b67..c99cb19d88 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -82,6 +82,8 @@ typedef struct VirtQueueElement =20 #define VIRTIO_NO_VECTOR 0xffff =20 +#define VIRTIO_MAX_SHMEM_REGIONS 256 + /* special index value used internally for config irqs */ #define VIRTIO_CONFIG_IRQ_IDX -1 =20 diff --git a/subprojects/libvhost-user/libvhost-user.h b/subprojects/libvho= st-user/libvhost-user.h index 6a2d0f9fae..a534d70771 100644 --- a/subprojects/libvhost-user/libvhost-user.h +++ b/subprojects/libvhost-user/libvhost-user.h @@ -70,7 +70,9 @@ enum VhostUserProtocolFeature { /* Feature 17 reserved for VHOST_USER_PROTOCOL_F_XEN_MMAP. */ VHOST_USER_PROTOCOL_F_SHARED_OBJECT =3D 18, /* Feature 19 is reserved for VHOST_USER_PROTOCOL_F_DEVICE_STATE */ - VHOST_USER_PROTOCOL_F_SHMEM =3D 20, + /* Feature 20 is reserved for VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INF= LIGHT */ + /* Feature 21 is reserved for VHOST_USER_PROTOCOL_F_GPA_ADDRESSES */ + VHOST_USER_PROTOCOL_F_SHMEM =3D 22, VHOST_USER_PROTOCOL_F_MAX }; =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464320; cv=none; d=zohomail.com; s=zohoarc; b=SVy/AnlqO045lw95vK/j80oQMatzS0mxTx1FUexOzf7XrfP6Flpf6j/6xBlS9sWtEBD4rx1ZTQXHeZrK8qBAyHty5+ZFq0SLU3vLNNS36r5PVpmZKBlqpULDSd72VvYCKOPZLlIp03nCfCojYcEBFwkr74Jy/p5DlZy9BLebBMs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464320; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nFGMyc+0ZCdk1q8E2z0hqTjCrgd8ApTKlIJGppaxQvE=; b=bfVZV2IS1vErP3QBDSkpkLnLN3B8UftoLPDZeLqk4shP6FFSnDdr0PgZGjLfmaatJXNYYOPcXr9M5ghVUtIXxMl6ZKVfQVs8aZ1+VszNNm/KuagIwX6Of+iVN5Drr8asyO04cy34VXDMlBS+W2zrHyZ3Oy4jB/nFTlV37XuDGD8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464320494102.22513686531124; Sun, 14 Jun 2026 12:12:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDS-0000NH-4X; Sun, 14 Jun 2026 15:09:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDL-00083k-Om for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDJ-0002in-TS for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:47 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-230-dqBqso0hMIiXdFXNkweXZg-1; Sun, 14 Jun 2026 15:09:44 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-45eecec7667so1758809f8f.3 for ; Sun, 14 Jun 2026 12:09:44 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2b0d4fsm28704170f8f.24.2026.06.14.12.09.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464185; 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: in-reply-to:in-reply-to:references:references; bh=nFGMyc+0ZCdk1q8E2z0hqTjCrgd8ApTKlIJGppaxQvE=; b=d3C8V1X9dsKiaAIEIj169aq+42AnI4zmgcT6Xfjp1C5Vgu1KrIjZjQxrqvKUIUX7WHJ1g1 rwAa/soakPQ63fCctXC6DJrq7ol70p0tp3KGIe7A0nlGHK1hzoVJajzjb7rUHWdMX1RU3n 5IH4xIE0ryi2r724T1Hu2ueSr+98iQE= X-MC-Unique: dqBqso0hMIiXdFXNkweXZg-1 X-Mimecast-MFC-AGG-ID: dqBqso0hMIiXdFXNkweXZg_1781464183 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464183; x=1782068983; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=nFGMyc+0ZCdk1q8E2z0hqTjCrgd8ApTKlIJGppaxQvE=; b=YVXXLfMcVctkpIuwSzrANTvhSgdBcnBH06qQ5TR7WK6K+QoHCbKefQFQwayZdyNPlu Ze9axDNie0wQj6c2E1MF28QLiv3BXT0IQqEVGgSamtKREeeBjDY6Nxq/s7Lc0PBAqL4q 9qn+S50xuepqM3VuaY/xU8p/BjHXAc9qcvk5kad8e1jRrkHhtsi71T4l6MuQofCGnTKI bOgnBIfQckUzmEul0AEkXFo2nHlYjTnkr6hmXZWnbTurFvyWCftUwylTwpb1f2ABUVZA 1fIU9DFSV7FigwUf7Nd45EnuR94D6pvFgu7CHV4YiGe98hCWht505YEq5dqmMQA/r+1X hraA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464183; x=1782068983; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nFGMyc+0ZCdk1q8E2z0hqTjCrgd8ApTKlIJGppaxQvE=; b=Pje3VUlM6/t6udoSoQ4OOWQjG7prVNlGT2kt299+7hH6CZWZivdVco2Q0kQoX6de0E KblUtV3d+AVtoDscG+LDYMd9MvISEc1GbeYskvq2dza8xc2TSAPqbON8W2bkxy0Qi3gi uKt7uo+dbftiC97UIkuAOjfcRD/Wp9qUq2zoitOa39IBQCSgVC+oKE/i6HLjhGYPpTAt fjFAMuLI8LduFJsMa+GeJPN8iSCD3/z/uO500t2+bLMcig6BM0sGvUXNxN6Q0OS3a/eb V5ujgIYqODUCoKJb7T3FFKagWv0tlJMSUafyF0F69TP3G4BQ6Z/z1wKsYTNqJB/c7FON XGig== X-Gm-Message-State: AOJu0Yy4Y5LzUQ76hud8E0XR2grkgQbKmIPzI+b1kbII/u5DqEntZx7K +F4YpkgWBWlxWDuslN6Q8aj5eE1OCBPqS7Oe5DOPPeRRd2EDbCEaCSXKzDc0FOHqAXbW6yM9V6P POb607aJzb86DOb+3dGY4GJ0HIb3PGetNserCJt9v6qwJcwpodeliEl/xnf4fyAS8NOO0zK38xe SlT+tbwnCF6o6wBPC9TtEZvberF+OuJageRg== X-Gm-Gg: Acq92OGz2y0RFlbj618uJp6wiLhuKGRkEZOLw4Gn1b54I533g98jclFohv6MuXdqIho +q30YW0jyRCis09qos6svDDW4ksWtI2WakD3igfjoX+njAidkJsYl7dwj0golhQsU1/sDG57Rnz 5MWQKMaTdiLR6gSMwI9n4FRLZt2Di+ig33YA+qxSr9PCmmzfJl0MZydPQCzUXXw6pEnJUaZjtCT vGORNd3zwM3n4+OdGlRkaGt1CYCIRWnmku+fB3cWtvr4QjgB4MnfavoSO2geF4foQdCq7LZEq0m YE9uYeKylAKjIqBeHUraAFDdCtPJ6TGHONK2WnymQP+QuZDJYGP7FdnW1+WpK9HFXwMKLwyQWjp 3YCbbMoX3j5cUdw9CTqL7PbHgSnDJCT/+U5aWMnKGAMM= X-Received: by 2002:a05:6000:220d:b0:45e:ec47:aa10 with SMTP id ffacd0b85a97d-4606dbba154mr14980880f8f.32.1781464182867; Sun, 14 Jun 2026 12:09:42 -0700 (PDT) X-Received: by 2002:a05:6000:220d:b0:45e:ec47:aa10 with SMTP id ffacd0b85a97d-4606dbba154mr14980853f8f.32.1781464182348; Sun, 14 Jun 2026 12:09:42 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:40 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Albert Esteve , Stefano Garzarella , Alyssa Ross , Stefan Hajnoczi , Pierrick Bouvier Subject: [PULL 095/106] vhost_user.rst: Add GET_SHMEM_CONFIG message Message-ID: <060ed6a4bb4d50e3de257a29137e84843f069312.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464321473158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Albert Esteve Add GET_SHMEM_CONFIG vhost-user frontend message to the spec documentation. Reviewed-by: Stefano Garzarella Reviewed-by: Alyssa Ross Reviewed-by: Stefan Hajnoczi Signed-off-by: Albert Esteve Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304165223.2166175-6-aesteve@redhat.com> --- docs/interop/vhost-user.rst | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index 4182d721ca..c0ae4cba98 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -384,6 +384,22 @@ MMAP request - 0: Pages are mapped read-only - 1: Pages are mapped read-write =20 +VIRTIO Shared Memory Region configuration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++-------------+---------+------------+----+--------------+ +| num regions | padding | mem size 0 | .. | mem size 255 | ++-------------+---------+------------+----+--------------+ + +:num regions: a 32-bit number of regions + +:padding: 32-bit + +:mem size: an array of 256 64-bit fields representing the size of each + VIRTIO Shared Memory Region. ``num regions`` specifies the + number of valid regions (non-zero size). The array index + corresponds to the shared memory ID (shmid). + C structure ----------- =20 @@ -410,6 +426,7 @@ In QEMU the vhost-user message is implemented with the = following struct: VhostUserShared object; VhostUserTransferDeviceState transfer_state; VhostUserMMap mmap; + VhostUserShMemConfig shmem; }; } QEMU_PACKED VhostUserMsg; =20 @@ -1794,6 +1811,28 @@ Front-end message types Using this function requires prior negotiation of the ``VHOST_USER_PROTOCOL_F_DEVICE_STATE`` feature. =20 +``VHOST_USER_GET_SHMEM_CONFIG`` + :id: 44 + :equivalent ioctl: N/A + :request payload: N/A + :reply payload: ``struct VhostUserShMemConfig`` + + When the ``VHOST_USER_PROTOCOL_F_SHMEM`` protocol feature has been + successfully negotiated, this message can be submitted by the front-end + to gather the VIRTIO Shared Memory Region configuration. The back-end wi= ll + respond with the number of VIRTIO Shared Memory Regions it requires, and + each shared memory region size in an array. The shared memory IDs are + represented by the array index. The information returned shall comply + with the following rules: + + * The shared information will remain valid and unchanged for the entire + lifetime of the connection. + + * The Shared Memory Region size must be a multiple of the page size + supported by mmap(2). + + * The size may be 0 if the region is unused. + Back-end message types ---------------------- =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464551; cv=none; d=zohomail.com; s=zohoarc; b=GW0WrtO85/H6CJ07Oytn/oXjlOlUdYknNX4xOJDww+U2iCVQaFRugnduII0WKCYWIUnUUKi8HPMZArcy4qOhzPCX0rTOlQ+xr/qoUcFafvm0KJerP/Jp+j6ihNmJbDWItJl1mb3MZdCwUelB1drARN9r0U5Q7wUzg4sVCNZGPYU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464551; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bGcYn11R2LgZ0N8Eq0gBNse4cv0sy4gULFVLSiEvbYk=; b=kAQqEbpYHqijNqfmBEAb/8ao6EwWE65ml5QGzw2T9wDyg2ui2/Es4vyGPfN5Rq1CSdzkldsQNQRzTxQspVXQNC7sdqyKH9bKmcVjBU+6EPjMTejYkbLIffp81szC2/XXUMWp/0xoQVEd45Dv1z4/hFfd1wz+n6hSixudxgVQ2rg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464551944845.4028274620298; Sun, 14 Jun 2026 12:15:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDR-0000KW-8B; Sun, 14 Jun 2026 15:09:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDO-0008PT-Aq for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:50 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDM-0002kg-KW for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:50 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-327-bM7uY3HINim4RnTrWwV46w-1; Sun, 14 Jun 2026 15:09:46 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490addd42bbso13714125e9.3 for ; Sun, 14 Jun 2026 12:09:46 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922037055csm191285985e9.13.2026.06.14.12.09.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464187; 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: in-reply-to:in-reply-to:references:references; bh=bGcYn11R2LgZ0N8Eq0gBNse4cv0sy4gULFVLSiEvbYk=; b=Fs99KkAgw2J/4YhVjWnsMQgTT+FTg+GvW0cxaX1FjgwpWua5gvaAcjiZ0TuxwckMOY1tiu Dm7ZtxIbCnDUxf2UTpgKd3Yd+wtWBGnJaJFg/2tHUAeYYaLJHqa0NWYul8YfVKJT7ctJHE fpj7ji/NzcNZEHkC2NPOKN5Bgv6zitM= X-MC-Unique: bM7uY3HINim4RnTrWwV46w-1 X-Mimecast-MFC-AGG-ID: bM7uY3HINim4RnTrWwV46w_1781464185 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464185; x=1782068985; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=bGcYn11R2LgZ0N8Eq0gBNse4cv0sy4gULFVLSiEvbYk=; b=CNm5ONx/G0u5MOtMz8yQp84ZF89iObxDd+oP3H5EzcxuOkw0uILn4W0r7g0UYAoDRj Q4y8YGoS+ZmZaDRq3eQTrMcClg1ABQ9lptwIC/qaUvt3Z6wwny4wgjhKKvJj2D/8k5aB vynkQCu5cicggHaEkvMSsKcjh1vBOMx8aQiHIf1iGzxgoD7o89HS2Bx3a0PIKrVCPKoR qDz5TRaurbTv9k4uV9BPmKgGOelcZ3VBqxEcR6Rt6nm3g8zXeffs3ZXBmVIFbr+ALYTd CwylmQqnYU2kqjCT12SWWJRznnzL9dkORnoUAFFtVh8P0ba4Ls3ARnirwjaEh/UXfKAG BKdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464185; x=1782068985; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bGcYn11R2LgZ0N8Eq0gBNse4cv0sy4gULFVLSiEvbYk=; b=G56j7ZgEuF0ByCCQFO6sPYCkFQR6DpmtxjEu9Ujtwk+vCBawr+vZWBsh7KsMmpwhWB FEC2Y69cZoUl0FzUj+meyDGosP6fHiE++H+IpwU/ZyVZA5vCM4P5xPZXMyo6kwr+BOX2 LaGVur1e203kJmKpO0ch+NXYVP3UHDIYscoVH/B17nehgNbvuLgbWhxq28udHyiyMCAs 4rzM1djwyUxbc8S7kfQoCcjvSRIxBZucLZP0ED7P9DPlFjsU049A3ZKhVkw2Cea6hRgT UkT/gGvdBKNkK/aNXRd0HkKYQ0ht/WDRbLFf8LmHnwqovmWbX5TJ4T5Pc+XXdPZhscuZ dWWQ== X-Gm-Message-State: AOJu0Ywg4mjP72gfQIW4cmXWLfDpkIOrDy84+CeIBuf4HLCo2dpAEheh fWOw/iTOlPm/vNoHGeFmdlHzRBWKcFeA9sStgXJXWo+bCPu2GEvXy+6F5/SKuAqH4Q3Omn5S359 tNh3VBF6BPmO7aamUFK12OAYUUQtD62G0IyH+MBXcuNuBMqEEgNUkqbmXm1B0kYmC+wlPVE8GKM 2+yr89kh44vnNfhSopsAeA9ptD5CJ+OT8uRw== X-Gm-Gg: Acq92OG3HZs1Jn7wnwuxmAFUdLjDXSMNM9TsQjl+TkpNXezTcJzUMs5IJiOCJP+6CEK jdEAw2jChjO9qu/R7JFE2KufpxjKzHk4ffa+mdrLV124e3Um1x6PNFvDkeO3U/PWB3r3rtpOYNA 4o448gQNXJIVbdPOMGwaJbjjLAHzxkpFUVIs+hLtqOSrONWPokH/YC+EorWhocNtj7YRAQ7Evsk d4wWhYEqw2BDLjuBpNxV460gi7oV6ZKcetAoXWA3Kjlyg8OubTD9jlAsEJHdzQlowgrzXGLCaM3 N/vXK4RZZU2MEnI5mtQTsFZcKR176j331RMj4V2XA4jKQGbL2sKr+V/dly612tZBgAWv7bbn9Z2 vt4PfHVdaX+94O/MNHZUnrH1VMjkYU/2Y/PkIIwdzdBA= X-Received: by 2002:a05:600c:3512:b0:491:9969:739d with SMTP id 5b1f17b1804b1-4922011393fmr99586765e9.29.1781464185152; Sun, 14 Jun 2026 12:09:45 -0700 (PDT) X-Received: by 2002:a05:600c:3512:b0:491:9969:739d with SMTP id 5b1f17b1804b1-4922011393fmr99586505e9.29.1781464184493; Sun, 14 Jun 2026 12:09:44 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:42 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Albert Esteve , Stefano Garzarella , Stefan Hajnoczi Subject: [PULL 096/106] qmp: add shmem feature map Message-ID: <0578926e3a6ddaf011f00e41ee7e490b446518eb.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464552377158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Albert Esteve Add new vhost-user protocol VHOST_USER_PROTOCOL_F_SHMEM feature to feature map. Reviewed-by: Stefano Garzarella Reviewed-by: Stefan Hajnoczi Signed-off-by: Albert Esteve Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304165223.2166175-7-aesteve@redhat.com> --- hw/virtio/virtio-qmp.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/virtio/virtio-qmp.c b/hw/virtio/virtio-qmp.c index ae9be0a00f..57cc03828c 100644 --- a/hw/virtio/virtio-qmp.c +++ b/hw/virtio/virtio-qmp.c @@ -123,6 +123,9 @@ static const qmp_virtio_feature_map_t vhost_user_protoc= ol_map[] =3D { FEATURE_ENTRY(VHOST_USER_PROTOCOL_F_DEVICE_STATE, \ "VHOST_USER_PROTOCOL_F_DEVICE_STATE: Backend device state tran= sfer " "supported"), + FEATURE_ENTRY(VHOST_USER_PROTOCOL_F_SHMEM, \ + "VHOST_USER_PROTOCOL_F_SHMEM: Backend shared memory mappin= g " + "supported"), { -1, "" } }; =20 --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464234; cv=none; d=zohomail.com; s=zohoarc; b=T9W46vM0QdGqaAECpQGHSjNZJX1pJS4mjpt/nDoJJnzq2YlXca6D+RofRo5PlrtOFkqHDR5G/DYy5FXtZ3ag2sx1YgOgH19GnJcSiDNOMalw2XCBHLpoMCax5johOFqQo3O1Do7BgieSwKjJydE+iibdYHtaiXY4JQZxCVlBIB8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464234; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uYbQ6vGTUylKqc37+T6WR2Ax60xzKMG8Kdty/wQ3y5s=; b=BxaF5zwJwC50cvErTOFgpjaNIFCZq6St9qAHhD+Q5IRFqsJkDcb2EVDpUwrs9zqzhAhTtrJjy6Ru2vRs/qfNiHXy+ZIYgxDXDf+pboj+EJ+UosCMR+R1S5VS3gexkv6XHt/1S901Gs/OHDJyRs1iVXUKZStMUYlNiFLQdfr1f44= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464234629844.7935743403021; Sun, 14 Jun 2026 12:10:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDV-0000cg-SE; Sun, 14 Jun 2026 15:09:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDQ-0000HQ-Hz for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDO-0002kp-Jb for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:52 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-398-QhY8w5C_PKyq0fh4VBQVVg-1; Sun, 14 Jun 2026 15:09:48 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490c4f61a34so17535615e9.2 for ; Sun, 14 Jun 2026 12:09:48 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492203dd0b9sm181971825e9.15.2026.06.14.12.09.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464190; 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: in-reply-to:in-reply-to:references:references; bh=uYbQ6vGTUylKqc37+T6WR2Ax60xzKMG8Kdty/wQ3y5s=; b=iIs8vJON4Z9hdJlLgLS+5p4BAZ+Nspu7ZYrIpMq3ufTGhwwWe35kyuHhpa0In2ZefW4AJ7 +milPYPbZIMOz6ikpm0q8aMKeEeyOeitKS1UQydVEKEB8QzRDX7raA939vhyohEViqqbhR u7IQ5b4wqhk6fpcHUTWvWIGtLWZfL+s= X-MC-Unique: QhY8w5C_PKyq0fh4VBQVVg-1 X-Mimecast-MFC-AGG-ID: QhY8w5C_PKyq0fh4VBQVVg_1781464187 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464187; x=1782068987; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=uYbQ6vGTUylKqc37+T6WR2Ax60xzKMG8Kdty/wQ3y5s=; b=pVEPtbJ88uPqpv+8CqA0Zr3gXTHmsTiILwi/XwDzwG3WQtEbjy55iPU5umuJgkWXnx TiA4/2olWMbfY9Umlxxs0pJDuvIt2e0DwqoFc2kvjK/ZvtMHl57iwH+VgW5H1uAnDfLp cSb6jvzw9/70in48grCMI9RlHNmxQnieGiJ02bsjOQ/QNJvoeMkCJQ5oqFKWxDr6oiTH bO1R63EiI/i6uS/rvkknGUqcqGPBIvHAg4rvsW2CldxwyosbWipk0rWr1LbPBMZ/MkF+ IJZufZ2IgRSXH75oBwdNfLQlaJyX76u+wyIVokqAWnPHrmvcUxL0zM+B/83uoLxaW4FU YJ+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464187; x=1782068987; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uYbQ6vGTUylKqc37+T6WR2Ax60xzKMG8Kdty/wQ3y5s=; b=F+4kcHH3JJAfYqU5nZsXDJ+ZaSNGi/YwyG/I2TY2znEsUFyTWHEewbS4kXKvm60QjN L+jPjL4HaCJJ3BIFQQ1aOxGSMwro1JlDACknkNCArseNZ+WxUOegSjCDAeDPd4pjP0dr Fx4MT3dBGZEGuqIc0TXGwvgPJX1715FFoNK2Hvw00PkY/SGdh+7TuWTQ2UsJJ8d2dn0C SmSrwsY9QRg9G4lKtWeBnXy5qcJmaiGLNPRB1ze5S4Q3f8oO6mx2V6ejZPhzG4Trsg38 kHa+83IlxUI40Sn/s+9tFDEnkaq9ZdQylTHMFlsZVdjNErb71AegYpes1XmjY1Jjdrt9 715w== X-Gm-Message-State: AOJu0Yx8Q7YTNYqNbgJxnkcN8ppYTJcEDjDbWPz6v5XdoF1acACt0SCP hxtyS+eYj6yibT9kxA4ZwHpU9e531M1gz16sW6mJfXila/tTHKIZGwWmGb7Veg5F/8P2x6bSneD l5W3qbffehwv2LlXmsaK1NsPFc2MNkgoACRV8b3ZVHaXyeCykKG/VRzUnj5id7rs4zM1Rtalgge L96I6mNcfBKlYyeKUt/SYXeyVHRDdsYuRb6Q== X-Gm-Gg: Acq92OFsCbyolwTRGeT02TUGdKAPNps+qiViDGjcopZTRlTbUSfLTvvZv4yGfE0A2ye sRHYJKcz640/rumRRkG8WuEUmOxj0PTKR6gnLDeiDoy3NyQsIhvjR95s2cLSO2UpIaqGKipzqGv 9O3t6+YQLchI0FY8ZPmEAgubobViMHWcJfc63RH0Pi/Sv76+BzxirzSu40hZ26GOJxsO19TLv/y 7CXwMNl7HMl336LbEMBq/HetYhnx11mUdvyD0SeL6RxlOvkrfMJXPOFjzLUbk/Zui4zMIBhONSg FuFoBhaPS+6z/qvMQO91UDZk9DGD6LN51/AF5cltkcGZxHBuCuCtVRqTjyAljWpFiJx1chlDaV1 9S1jdj2+0lHo2jg0Z9D8mcc35Fzg9qc4FqmBdAsaE/wk= X-Received: by 2002:a05:600c:820c:b0:490:c2a3:3302 with SMTP id 5b1f17b1804b1-490ec526f4fmr143548945e9.35.1781464187206; Sun, 14 Jun 2026 12:09:47 -0700 (PDT) X-Received: by 2002:a05:600c:820c:b0:490:c2a3:3302 with SMTP id 5b1f17b1804b1-490ec526f4fmr143548635e9.35.1781464186641; Sun, 14 Jun 2026 12:09:46 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:44 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Albert Esteve , Stefano Garzarella , Stefan Hajnoczi , Alex =?utf-8?Q?Benn=C3=A9e?= Subject: [PULL 097/106] vhost-user-device: Add shared memory BAR Message-ID: <6608dca74ecfc3e59cdf876cb5490750f37d3706.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464235231158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Albert Esteve Add shared memory BAR support to vhost-user-device-pci to enable direct file mapping for VIRTIO Shared Memory Regions. The implementation creates a consolidated shared memory BAR that contains all VIRTIO Shared Memory Regions as subregions. Each region is configured with its proper shmid, size, and offset within the BAR. The number and size of regions are retrieved via VHOST_USER_GET_SHMEM_CONFIG message sent by vhost-user-base during realization after virtio_init(). Specifically, it uses BAR 4 to avoid conflicts, as it is currently unused. The shared memory BAR is only created when the backend supports VHOST_USER_PROTOCOL_F_SHMEM and has configured shared memory regions. This maintains backward compatibility with backends that do not support shared memory functionality. Reviewed-by: Stefano Garzarella Reviewed-by: Stefan Hajnoczi Signed-off-by: Albert Esteve Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260304165223.2166175-8-aesteve@redhat.com> --- hw/virtio/vhost-user-base.c | 46 ++++++++++++++++++++++++-- hw/virtio/vhost-user-test-device-pci.c | 42 +++++++++++++++++++++-- 2 files changed, 83 insertions(+), 5 deletions(-) diff --git a/hw/virtio/vhost-user-base.c b/hw/virtio/vhost-user-base.c index 8b62c6c36e..39b5e637fc 100644 --- a/hw/virtio/vhost-user-base.c +++ b/hw/virtio/vhost-user-base.c @@ -16,6 +16,7 @@ #include "hw/virtio/virtio-bus.h" #include "hw/virtio/vhost-user-base.h" #include "qemu/error-report.h" +#include "migration/blocker.h" =20 static void vub_start(VirtIODevice *vdev) { @@ -281,7 +282,8 @@ static void vub_device_realize(DeviceState *dev, Error = **errp) { VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VHostUserBase *vub =3D VHOST_USER_BASE(dev); - int ret; + uint64_t memory_sizes[VIRTIO_MAX_SHMEM_REGIONS]; + int i, ret, nregions, regions_processed =3D 0; =20 if (!vub->chardev.chr) { error_setg(errp, "vhost-user-base: missing chardev"); @@ -324,7 +326,7 @@ static void vub_device_realize(DeviceState *dev, Error = **errp) =20 /* Allocate queues */ vub->vqs =3D g_ptr_array_sized_new(vub->num_vqs); - for (int i =3D 0; i < vub->num_vqs; i++) { + for (i =3D 0; i < vub->num_vqs; i++) { g_ptr_array_add(vub->vqs, virtio_add_queue(vdev, vub->vq_size, vub_handle_output)); @@ -338,11 +340,49 @@ static void vub_device_realize(DeviceState *dev, Erro= r **errp) VHOST_BACKEND_TYPE_USER, 0, errp); =20 if (ret < 0) { - do_vhost_user_cleanup(vdev, vub); + goto err; + } + + ret =3D vub->vhost_dev.vhost_ops->vhost_get_shmem_config(&vub->vhost_d= ev, + &nregions, + memory_sizes, + errp); + + if (ret < 0) { + goto err; + } + + for (i =3D 0; i < VIRTIO_MAX_SHMEM_REGIONS && regions_processed < nreg= ions; i++) { + if (memory_sizes[i]) { + regions_processed++; + if (vub->vhost_dev.migration_blocker =3D=3D NULL) { + error_setg(&vub->vhost_dev.migration_blocker, + "Migration disabled: devices with VIRTIO Shared Mem= ory " + "Regions do not support migration yet."); + ret =3D migrate_add_blocker_normal( + &vub->vhost_dev.migration_blocker, + errp); + + if (ret < 0) { + goto err; + } + } + + if (memory_sizes[i] % qemu_real_host_page_size() !=3D 0) { + error_setg(errp, "Shared memory %d size must be a multiple= of " + "the host page size", i); + goto err; + } + + virtio_new_shmem_region(vdev, i, memory_sizes[i]); + } } =20 qemu_chr_fe_set_handlers(&vub->chardev, NULL, NULL, vub_event, NULL, dev, NULL, true); + return; +err: + do_vhost_user_cleanup(vdev, vub); } =20 static void vub_device_unrealize(DeviceState *dev) diff --git a/hw/virtio/vhost-user-test-device-pci.c b/hw/virtio/vhost-user-= test-device-pci.c index 7f6d751690..2106557ed8 100644 --- a/hw/virtio/vhost-user-test-device-pci.c +++ b/hw/virtio/vhost-user-test-device-pci.c @@ -12,10 +12,13 @@ #include "hw/virtio/vhost-user-base.h" #include "hw/virtio/virtio-pci.h" =20 +#define VIRTIO_DEVICE_PCI_SHMEM_BAR 4 + struct VHostUserDevicePCI { VirtIOPCIProxy parent_obj; =20 VHostUserBase vub; + MemoryRegion shmembar; }; =20 #define TYPE_VHOST_USER_TEST_DEVICE_PCI "vhost-user-test-device-pci-base" @@ -25,10 +28,45 @@ OBJECT_DECLARE_SIMPLE_TYPE(VHostUserDevicePCI, VHOST_US= ER_TEST_DEVICE_PCI) static void vhost_user_device_pci_realize(VirtIOPCIProxy *vpci_dev, Error = **errp) { VHostUserDevicePCI *dev =3D VHOST_USER_TEST_DEVICE_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&dev->vub); + DeviceState *dev_state =3D DEVICE(&dev->vub); + VirtIODevice *vdev =3D VIRTIO_DEVICE(dev_state); + VirtioSharedMemory *shmem; + uint64_t offset =3D 0, shmem_size =3D 0; =20 + /* Keep modern 64-bit BARs (2 slots) away from the shared memory BAR. = */ + vpci_dev->modern_mem_bar_idx =3D 2; vpci_dev->nvectors =3D 1; - qdev_realize(vdev, BUS(&vpci_dev->bus), errp); + if (!qdev_realize(dev_state, BUS(&vpci_dev->bus), errp)) { + return; + } + + QSIMPLEQ_FOREACH(shmem, &vdev->shmem_list, entry) { + if (memory_region_size(&shmem->mr) > UINT64_MAX - shmem_size) { + error_setg(errp, "Total shared memory required overflow"); + return; + } + shmem_size =3D shmem_size + memory_region_size(&shmem->mr); + } + if (shmem_size) { + if (vpci_dev->flags & VIRTIO_PCI_FLAG_MODERN_PIO_NOTIFY) { + error_setg(errp, "modern-pio-notify is not supported due to PC= I BAR layout limitations"); + return; + } + memory_region_init(&dev->shmembar, OBJECT(vpci_dev), + "vhost-device-pci-shmembar", shmem_size); + QSIMPLEQ_FOREACH(shmem, &vdev->shmem_list, entry) { + memory_region_add_subregion(&dev->shmembar, offset, &shmem->mr= ); + virtio_pci_add_shm_cap(vpci_dev, VIRTIO_DEVICE_PCI_SHMEM_BAR, + offset, memory_region_size(&shmem->mr), + shmem->shmid); + offset =3D offset + memory_region_size(&shmem->mr); + } + pci_register_bar(&vpci_dev->pci_dev, VIRTIO_DEVICE_PCI_SHMEM_BAR, + PCI_BASE_ADDRESS_SPACE_MEMORY | + PCI_BASE_ADDRESS_MEM_PREFETCH | + PCI_BASE_ADDRESS_MEM_TYPE_64, + &dev->shmembar); + } } =20 static void vhost_user_device_pci_class_init(ObjectClass *klass, --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464263; cv=none; d=zohomail.com; s=zohoarc; b=P7NY3a0/e28mwwquoMCHW8gnad9exaMzKxrUA7ZjNyVyP4ayuHuOzwWKqVC4txE2nZxoGZMeSojU5+1AqLwC7B7TJS1RX2KyKvNkw4hOz+tPO9Z74aXjc6B3aUwdHiN7XqIxbmOv/nazMcw5gk0o7rJsh4TzDxTYw72HvD5flf8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464263; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=K1a87ev5WzUSmrHocVk9epH7IkkDeogv22x3ZdbZKZs=; b=bixZSPRiQBtGz0bd9MxWpTy1UAVuhbBDA4cO5LU6K0dewZ3Zxf1Y3aD9K0/oGlRYPoMHASb57DeCXd9xKeMb5PsW+dVdrE8q8vGm8oW/K5wa42HMcVX1uV0nQizwHtSLsE6a4Z7iwgcot3u+Cf2qSxpw0e7bkVyDBevV6Kq/7IA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464263657453.1880554928705; Sun, 14 Jun 2026 12:11:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDV-0000UX-2V; Sun, 14 Jun 2026 15:09:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDS-0000NY-EO for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:54 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDQ-0002l8-SS for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:54 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-550-f0xkusDgOdSIfx2u64BV4w-1; Sun, 14 Jun 2026 15:09:51 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490d3f03883so22034205e9.1 for ; Sun, 14 Jun 2026 12:09:50 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492203d2449sm168855225e9.14.2026.06.14.12.09.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464192; 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: in-reply-to:in-reply-to:references:references; bh=K1a87ev5WzUSmrHocVk9epH7IkkDeogv22x3ZdbZKZs=; b=CmqXBUJxBeq4KyCS2et55W1DazKvWfs5okk/E2XxcFaZ4bsTg+R3YT+mPTLlAD0HFHeBdJ rbiyYXibZGuG6fwQZuBb0j1+zxsd7AXXX8KHKr/dRHAxoSPfbv3ugGdx0u6SQQCUagnkSZ t8ZbX+UXjjLgXiVcR151NMbtO4Uj12A= X-MC-Unique: f0xkusDgOdSIfx2u64BV4w-1 X-Mimecast-MFC-AGG-ID: f0xkusDgOdSIfx2u64BV4w_1781464190 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464190; x=1782068990; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=K1a87ev5WzUSmrHocVk9epH7IkkDeogv22x3ZdbZKZs=; b=hQTpPxqQjyHazRPbSnThP+3ZiBvJcX+NVVo8s90H8DC+gNdXsDFtfajC/er9zhzhuX mvQGokaoqsfnk82ws2cmm+uQBgnmib34wCxStAjq5vIbxu2S1xvWJLxFhAYRUPcGCHnw xcFJ5eCNv+MSq0ddfyEKqNX4eJ8tylRNi2R/F5Yu0IE1lLsLoxzgpW9SFohV5vweM2cr 3JcmU4FKof6Xe6WOGelnWANFg0IiFCXKNbNSLHklntgf0ICGGhdetbf6MLMuzDUOMbhT w/DzJ7jlbqToxQ79vGU+5Sa/aGc1DypKUe4NxdpegwbA7NenM/DF66G0h3p3XsFPH1aU /ShA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464190; x=1782068990; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=K1a87ev5WzUSmrHocVk9epH7IkkDeogv22x3ZdbZKZs=; b=CJWEzfTf+c+GRmmpJjitospmdnXPKpE5n+MIpV6VjWok6KkTJB+zeRciuCUagZk8df R9p1NqV+G6GP01RltLgm9a8kYdp8fyTIjcMvfoga21iypHvMUH9CSZT7zKE17p3gvxhQ v04WjwObzH6irq/YWyobwX/yzGro/6OeAblj2LXSZ0X3W5dz68tuinpNKW7KZzAp4EiA SnpDwhwncachTC9fbMQdGHGDXBDYqj0jysRFuksQkXz6xwDtqzEUgn1CS/ToXDW2XPvM sABxpfRoRxb3YG1dIzt6w4XblP2V+mrMqLhPgNOb6d0iCz2Y0MFcNj5Z8AYqDAuIrpu8 dFVQ== X-Gm-Message-State: AOJu0Yyzy7drqdgWjn+YPqDCX03VV/InjMI0hpOniv1U3z25iR9unxd1 dB2Wumau1TeggfSnCgoRMuZ6RA7mI/052iGqsnSvCebfD4ntMtM8rqfXBCTUhGjNJ/QWfK9NC8f ULkQt6CW866FK8BI1rMQdfuKJd5vY+0ichjqyabHMYFHs1NPKJwVwyX6MXzUjJsdk0DrL30f2TR TmxKrLtgXDGM7HFCY7BwUbs+f25B2ISKe8dA== X-Gm-Gg: Acq92OGbccluoJ5vy8/dwmq+fWHNB+bG9Dsq3NQj5Q9ufGebUUA8xoBQhxsqEuGABLj 6oz86esyM04vySSCH7GRHpp13wXNX2lF5kCEausMwjybVicnkpUnVGaf8EVs/ymnykqB4TQ4ERV qKkam94yAv53J4oIW6TatdrMe/CgU29kp1S4JecedsNjH4rP7h204QGoo6vOUBPwz+sJPOk0EdU gdO1/QHTMBYEapU5bIrz0bHYCc7PGfDOEPhpycJF7jTKsED1si35UvuYeLJzxTFHJ0qo2yIBkUa YUnL/1A/iEKaN+pxXGu+zo1mi+k0HIFLllusXRGVcEYeC0KzoLRq53gF2bUr8R2dO6tk5tMOQWP kSOax1s+ASYAGSM0OYVcqJ9WOY5snMnIXEyRn+quYXSo= X-Received: by 2002:a05:600c:8b44:b0:490:b65f:8b1 with SMTP id 5b1f17b1804b1-490ec4992b5mr139293685e9.5.1781464189721; Sun, 14 Jun 2026 12:09:49 -0700 (PDT) X-Received: by 2002:a05:600c:8b44:b0:490:b65f:8b1 with SMTP id 5b1f17b1804b1-490ec4992b5mr139293245e9.5.1781464189192; Sun, 14 Jun 2026 12:09:49 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:46 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alexandr Moshkov , Vladimir Sementsov-Ogievskiy , Stefan Hajnoczi , Raphael Norwitz , Stefano Garzarella , Pierrick Bouvier Subject: [PULL 098/106] vhost-user.rst: fix typo Message-ID: <480be4f43b208e585e68c300dcab924adf6765f4.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464265261158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Alexandr Moshkov Reviewed-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Stefan Hajnoczi Signed-off-by: Alexandr Moshkov Reviewed-by: Raphael Norwitz Message-Id: <20260330095226.158386-2-dtalexundeer@yandex-team.ru> --- docs/interop/vhost-user.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index c0ae4cba98..c83ae2accb 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -1329,7 +1329,7 @@ Front-end message types How to suspend an in-flight request depends on the implementation of the= back-end but it typically can be done by aborting or cancelling the underlying I/O request. The ``VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIGHT`` - protocol feature must only be neogotiated if + protocol feature must only be negotiated if ``VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD`` is also negotiated. =20 ``VHOST_USER_SET_VRING_KICK`` --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464343; cv=none; d=zohomail.com; s=zohoarc; b=BP/T/rjqcaV939/4Z1jypofCqqBl9ritVms7tnNPXlPTuhdoj6/MWFJlSx7tdZW8BYLxKQ2OnUKI4WbKELPlvS1Gbf2WIWVTsHC+ilvuMdxpoE0ZCqa2G/TJjeDvqLr27LvC5EddNiAxNaV8PtD7z+hlM72KisF+vFZLdd4Mceg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464343; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Bem3v21HI3Dj2XGuqU+Zt2bWvI5Rs5lCN0w9V2Qfknw=; b=ETERrg1UfJK3WQI13vkcmrnwLZXYXA2tQvaMn7w0vF2b1AMHAnn+RvQ82+hGuFvxw/5vORmxjrHJ+MrScMZKm0rna1CWjerKQUrWSm6ZXvNl+oN2x5QccnPnXWp6/RPQNU4dyeqWNsVoeJA8TOTtkE3T6oLIP/gGwJ0zFqHKj08= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178146434338845.757368649081286; Sun, 14 Jun 2026 12:12:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDX-0000pK-MT; Sun, 14 Jun 2026 15:09:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDU-0000UB-Sb for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:56 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDT-0002lU-7l for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:56 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-564-nRQMV8OMM56dpu1XhhZcMQ-1; Sun, 14 Jun 2026 15:09:53 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-45ef9437b7aso1475682f8f.0 for ; Sun, 14 Jun 2026 12:09:53 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2b1056sm27207478f8f.18.2026.06.14.12.09.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464194; 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: in-reply-to:in-reply-to:references:references; bh=Bem3v21HI3Dj2XGuqU+Zt2bWvI5Rs5lCN0w9V2Qfknw=; b=JuNqvZbSQZkwX6xWhDvJE9zxrvgkUSg7zTPRJa8TGjEIS6qvfdhxohSoFlFi1qNel5XN2A RpGlq1oA/gpqtMgr2ZrCZt1LH2QNjCrs2kY4sgx2rgBN5Tak2bcAE68NMwv3yzJEbJQNR6 EiNFFSZWHkfOpOwjr/mfQDqk1I8Ffuw= X-MC-Unique: nRQMV8OMM56dpu1XhhZcMQ-1 X-Mimecast-MFC-AGG-ID: nRQMV8OMM56dpu1XhhZcMQ_1781464192 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464192; x=1782068992; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=Bem3v21HI3Dj2XGuqU+Zt2bWvI5Rs5lCN0w9V2Qfknw=; b=CHGoJwH3YB0V+INUkpZeqKA5EFtBSIFOTBuzc+FM8CSF+4fnPMe7ifMj7nTpocEnpB DE1HeqKR6Yy0MQITjmQ8xUJ114GQdfYMLDmCWRm8+jaCQmcJKocI8R/zfjqiRM1igBvO L3LlRyQS9t5ezUU3ASftO7+2/+ORWj20bbP2wqtCZtqvR21w6f0q2cywAEM0gm4CG8pa 6XUWfcv8iG4ClVZw2YdTh2dmZxftJlI9Njf+oE/XjA4W44e3OxLHL66fwInaQ1Gqg62j Shvg73JeJLMu/878Gr9bJ27k+9whH9MFELDSHzmd6pA8m8Jl66RV46OhJue7ywcHf/Yc Bgww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464192; x=1782068992; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Bem3v21HI3Dj2XGuqU+Zt2bWvI5Rs5lCN0w9V2Qfknw=; b=DZI8QpX1wDdKRsWk35BZSFGBozu931XyPs5SKvoOOrxtsyZ0FnC9H1yMt2uaZGij0e HtrniJTPjO+ts1fG5Nt1K409CX5d/MG0E4HyMsNsbFDMY0W2xLxr0ww2898NArqC4trH uqQMMT/yHDcfRr/q4mvrxtgpB8imgpwlj32zSF8SG+NyHoVL2M/Q5FvKN2WbQJ7vaJFx kOYIOzGWvaDUQ/GwD79bE88zyygaKeepcjHlE/WNMEJ7WGNqO3nN9XpgzvA2i0e2Ayib Oh866A1B1S1sIUYsTMOyzHGOLB0QgV3PIxMrgcUvATvDN88Q9CuY4e93RHmR1LEULrEW V2HA== X-Gm-Message-State: AOJu0Yy+7wqA+mj7q0blXjfvmqP9ynZiXm8qRqHe7P5U6raUmkkimSW+ nqaQvRQP3S+qK/86ZWnVVc9uPeEmL3TPy9hr8iq3uBYp13tizISj/ppg1qIwNr/J1kNFWdGJAvZ S4r5pg40YU93BCSjqLqfQrIX/DYrYlK4kSTu17bPEGXN5l44rNuVBTVO9yopXJxPwKDtVV+Sm1N exVPlh45OhW7fEAMAOBZmbxPrY1GNSezmDzg== X-Gm-Gg: Acq92OHCwY+n0A5CeIpEoCXnLkds4GgagZimCVidIep8H7AcE5/Rncj1+Xgf+iZ4BRJ uWq9tW5L2KWTksyscL0Bf6gT2TbKZMO4a/OEZGJlAF683lUDFrZ4do6qnvdGPzcPV1Ggw/evklj aUyUdCRaWbV2TZXFa6tFB1TNf3vlTcfwMRHG8u04rGQCV+D2Rhq7MJJVlgx6vsuE4f0jFmXqHFK 0vO2CRHRz3fZDZIMcLdfMkEBg/0Aq8rJ/6orttHrUFgQQ/3UfFTY5D1V1vWw4XXc9DLS83Oy/F9 Y/yUIWz6zeXnAOBbMCFrISkjGF5jew/zWRe4PoPTk0P3FHLx3P0hLjFwZosYKxaV5gXjPa794fi aQDw0v2S9icpKPdpayBzmDd3XJpdDnrmiKya2Ls45m9w= X-Received: by 2002:a5d:5f44:0:b0:460:1c5b:f25f with SMTP id ffacd0b85a97d-4606db96c29mr16507321f8f.20.1781464192015; Sun, 14 Jun 2026 12:09:52 -0700 (PDT) X-Received: by 2002:a5d:5f44:0:b0:460:1c5b:f25f with SMTP id ffacd0b85a97d-4606db96c29mr16507276f8f.20.1781464191434; Sun, 14 Jun 2026 12:09:51 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:49 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Shiju Jose , Jonathan Cameron , Jonathan Cameron , linux-cxl@vger.kernel.org Subject: [PULL 099/106] hw/cxl: Fix handling of component ID to not assume it is a string Message-ID: <91beb27a4851fe47fe68a5f715af5db456b9d37d.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464343591158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shiju Jose Add following fixes, 1. Coverity reports a warning (CID 1645325) for use of strncpy() in handling of component ID. In cxl_create_mem_sparing_event_records(), fix handling of component ID to not assume it is a string by replacing strncpy with memcpy to solve this warning and copy the entire component ID data, which is 16 bytes. 2. In cxl_maintenance_insert(), - replace strncpy with memcpy to copy full data because component ID, which is 16 bytes data. - remove memset which is not required. Closes ("https://lore.kernel.org/qemu-devel/CAFEAcA_CsVe4TUVm3o_-BA4hXvi2xA= ThGX5T97amgTQKW_kiYA@mail.gmail.com/") Fixes: 5e5a86bab830("hw/cxl: Add support for Maintenance command and Post P= ackage Repair (PPR)") Reported-by: Peter Maydell Signed-off-by: Shiju Jose Reviewed-by: Michael S. Tsirkin Reviewed-by: Jonathan Cameron Signed-off-by: Michael S. Tsirkin Message-Id: <20260306101423.986-2-shiju.jose@huawei.com> --- hw/cxl/cxl-mailbox-utils.c | 4 ++-- hw/mem/cxl_type3.c | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index d8ba7e8625..6b16cc206f 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -1994,8 +1994,8 @@ static void cxl_create_mem_sparing_event_records(CXLT= ype3Dev *ct3d, stw_le_p(&event_rec.column, ent->column); event_rec.sub_channel =3D ent->sub_channel; if (ent->validity_flags & CXL_MSER_VALID_COMP_ID) { - strncpy((char *)event_rec.component_id, (char *)ent->component= _id, - sizeof(event_rec.component_id)); + memcpy(event_rec.component_id, ent->component_id, + sizeof(event_rec.component_id)); } } else if (sparing_pi) { event_rec.flags =3D CXL_MSER_FLAGS_QUERY_RESOURCES; diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index 4739239da3..3cb1096e16 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -1767,7 +1767,6 @@ static void cxl_maintenance_insert(CXLType3Dev *ct3d,= uint64_t dpa, } } m =3D g_new0(CXLMaintenance, 1); - memset(m, 0, sizeof(*m)); m->dpa =3D dpa; m->validity_flags =3D 0; =20 @@ -1804,8 +1803,7 @@ static void cxl_maintenance_insert(CXLType3Dev *ct3d,= uint64_t dpa, m->validity_flags |=3D CXL_MSER_VALID_SUB_CHANNEL; } if (component_id) { - strncpy((char *)m->component_id, component_id, - sizeof(m->component_id) - 1); + memcpy(m->component_id, component_id, sizeof(m->component_id)); m->validity_flags |=3D CXL_MSER_VALID_COMP_ID; if (has_comp_id_pldm && is_comp_id_pldm) { m->validity_flags |=3D CXL_MSER_VALID_COMP_ID_FORMAT; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464501; cv=none; d=zohomail.com; s=zohoarc; b=WHO36rWzo8lRMUd/WTB8oWmXPLCHwn0LOtMJ2MhepN1w1tv4Fe2Rj4jaUvmcKv9omIqjoKDQCTMEgW9Odm6NqaRt2dJQeynXKe6scBjAK/DMSNlULQYWs3iV5sKhyigSakfN/qW3w3/rJtCfE5Kq6YwEXmWdpQvqAMB7ons9Iag= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464501; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OdLmIBYj2TX81sVsFxeL3brQiveCFghfyugzGHZB+Qw=; b=Y9YAIkwCcsNeMsfIKynSq0eWhXeaXDVKozb8rwloUeFjXw38oWRLTg3daeD1eE5rezvHbOZvV4fvIlmiLFQtNnlncLv6aFKxqXz6PaLwhgeGqM47TVeDjWCSN0lM8dvOK4b+QEG0mn3TFfn+2Q1pBJ3c6eHovE+52GSWqV+jjUQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464501728879.3059224030203; Sun, 14 Jun 2026 12:15:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDZ-0000xI-45; Sun, 14 Jun 2026 15:10:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDX-0000m5-4n for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:59 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDV-0002lh-Jk for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:09:58 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-575-S5YVO2ChMH65DXRZyh_Fjg-1; Sun, 14 Jun 2026 15:09:55 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-46067399d5dso1145096f8f.2 for ; Sun, 14 Jun 2026 12:09:55 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2b0c10sm27660598f8f.21.2026.06.14.12.09.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464196; 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: in-reply-to:in-reply-to:references:references; bh=OdLmIBYj2TX81sVsFxeL3brQiveCFghfyugzGHZB+Qw=; b=B9mx61+BYJ4D8uJcK6LRWqydftOjEot4lu3VJu2ALkwhht1iT/3+uJkxsQvWIsosypwUpM OYAYa7dyX55Aj9Mj84dcTYoBIgZHWp94w/HwyT959CQ6icubk0mVVQdJkYgjlMj3JgaLrm zdR9GQxAZQZ+TTRfmHAGVXEmUPx+DyI= X-MC-Unique: S5YVO2ChMH65DXRZyh_Fjg-1 X-Mimecast-MFC-AGG-ID: S5YVO2ChMH65DXRZyh_Fjg_1781464194 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464194; x=1782068994; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=OdLmIBYj2TX81sVsFxeL3brQiveCFghfyugzGHZB+Qw=; b=M91crpalHVz6VZk2NDQnmWEA3ot0SO+Be5udSRphhiJ3iHanCxDEXDQ3IH2f0Fyas/ lZzeTVfkWj+ttEC2K/GOoaRyWSIvLyCwkrdhC8t7XZyp3cynNZaxOimL/ySHjlf5kVFG ZdsWzGtRvKD+Xscj4CKLnctxiRddSR6JWJPjiXTc17zbCp2l/zudJXlqtdpDIaTuRtqS nEUcgwtEKpXDEXq1DRXYXpsclqzf1RVqmswEpUAPpwrfZZZ5HyheKuWR18pMCDPxQhPh MY0fPpcOB7whcqGr88MKEUAMx+6mCcozyA+G7kbZUqnOz3Bd1BW4CLkN4fDYvYBVfkJe tE7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464194; x=1782068994; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OdLmIBYj2TX81sVsFxeL3brQiveCFghfyugzGHZB+Qw=; b=LcTMS5TIuQwbMLhsbuTCK4nGes7haT53rZaYynTLKMtBp+siSVyLXDJgDGJvjmpvnm EI4rfCWpMICeK17sHtDh+Zz781+rmSekNFnbW4yxNKRp+GplWlmGVkvM3S1Vt6uJ3ZpE CDC/fdqj3HqxHyMDeFaY7SVMBL17J21ors2uoVJkkwHTWh+mZmXWWKLd6taYvDPKsDvw cN3cs+S12BVmAOhQfO8qk4m23iXry+DJbtNTPYI0x2m5hNqacTMLeK61HtpG7an2xtzs kJl4P2Hnmox6gqPbz79/KjJpQ4x7amGIS1Z+qSi4jOOugrhH0NuuDJ47tEG3QCAq+wLn ChWQ== X-Gm-Message-State: AOJu0YxYwWWW4/aloPyLVoUjmuPFKIrmx2xzzg+ZI9cfoD9EPzoEHAbD dzLyATQxDlTph04NpnUjiOZWGhwo1nkEi1eqTqmiiIypxpKC72bSf844vsfIuFLrq+Twpa8swPc JiIdulNTiGaMLjO5jrjhOgOTHiVjbZkCR0uXXXjQMO3H3RDdgDeJLMba/hGJ5iekxsXbAl/C9PY /M3H1T4Nqh+7siB0ktjTZzvOZ+C7K4jkwwjQ== X-Gm-Gg: Acq92OHF69arAnnhO6454h9HgtOb1tZ2rmY+7Q/+fcW2dq3qdUdjET2Yf0/LxBTjJhx Q+B/WdF/RQlYPtDAZn5NVr/1upC/jFpp+DjKsclsmeaPNfGf3fPpdJVnUiD8jzQx+e6h2F+zBte wLZkQS7XZPR0v2FXHEVrWvBXvb3RHONPCTrrKIUS93e9sPkowgbfIUjWJkKqn8+kdZtzoIQP3Hc bXhVSP9WSFBY3hPjavUZlkwbxNe+c+g8MSFLpiPFaOtiAXrFRmuEXJKSWLR7JkYql28VCKAusTW zIj+YCQUHz3KW7Kn53pNJ4EbqKVlIs4/nV3eTGxHa60OrQs4aj0TQi1I87m8rCbke2DsQvBpIt+ q/492QiIu71AijmCmu2dP0gaF0b1jJL5JdwNGquaLh7A= X-Received: by 2002:a05:600c:5487:b0:490:ea8a:32da with SMTP id 5b1f17b1804b1-490ec509524mr135639905e9.26.1781464194231; Sun, 14 Jun 2026 12:09:54 -0700 (PDT) X-Received: by 2002:a05:600c:5487:b0:490:ea8a:32da with SMTP id 5b1f17b1804b1-490ec509524mr135639665e9.26.1781464193707; Sun, 14 Jun 2026 12:09:53 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:51 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Shiju Jose , Jonathan Cameron , Jonathan Cameron , linux-cxl@vger.kernel.org Subject: [PULL 100/106] hw/cxl: Add fixes in Post Package Repair (PPR) Message-ID: <37185e2cf15adfb36ddcee20c444ecccbe26be4d.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464502167158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shiju Jose Add following fixes to the commit: hw/cxl: Add support for Maintenance command and Post Package Repair (PPR). In cxl_perform_ppr(), remove and free the maintenance entry from QLIST if match is found and PPR operation is performed. Fixes: 5e5a86bab830("hw/cxl: Add support for Maintenance command and Post P= ackage Repair (PPR)") Signed-off-by: Shiju Jose Reviewed-by: Michael S. Tsirkin Reviewed-by: Jonathan Cameron Signed-off-by: Michael S. Tsirkin Message-Id: <20260306101423.986-3-shiju.jose@huawei.com> --- hw/cxl/cxl-mailbox-utils.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index 6b16cc206f..20e0b7e476 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -2068,6 +2068,8 @@ static void cxl_perform_ppr(CXLType3Dev *ct3d, uint64= _t dpa) CXL_MEMDEV_MAINT_SUBCLASS_CACHELINE_SPARIN= G, ent, NULL); } + QLIST_REMOVE(ent, node); + g_free(ent); break; } } --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464256; cv=none; d=zohomail.com; s=zohoarc; b=iQr3oONRMQxA0NsEYAJAAbWavP1sSUoL1VV8FBVwuk3o/zhgf4ZrXFTgEub9Ss9ZdLAZfiy61DQ2XQ+uNi4zbKASibz+uuSk8F0bR67flfLRh78b8SlkvHx76rBBhhQeQI2Hc5Dk0Snao60sDBcz0GXwZxxp2drQ8p5wkK5RvoI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464256; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jYAcvS/4tP50eAPxRPeklkaj31Ip6dr75MhaJLz1/xQ=; b=WlAVsC2RbmY4c7bXaSrVAu3b9g4VypPeCUZ9HKw+9iIPofje2bzovKp0LMeQVGKtRhxF7HEGnJwHc7QcFrovRsOQQci5Qxz3gcpNW0cOVYBrR6erOC2oWtaZ4orYRx0SPeH64CKak4TrTp0h+RThQjctLaMa14L2XxRFkXDRCAs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464256419414.0920715649296; Sun, 14 Jun 2026 12:10:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDa-00010w-I1; Sun, 14 Jun 2026 15:10:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDY-0000wn-Vk for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:10:00 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDX-0002lq-Cw for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:10:00 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-606-xv-TlYolPPWKBpXtvmgj5w-1; Sun, 14 Jun 2026 15:09:57 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490b37e1f47so18568765e9.0 for ; Sun, 14 Jun 2026 12:09:57 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922031b7d2sm197662505e9.5.2026.06.14.12.09.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464198; 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: in-reply-to:in-reply-to:references:references; bh=jYAcvS/4tP50eAPxRPeklkaj31Ip6dr75MhaJLz1/xQ=; b=aGelc79ek2pVlSXsVDpB0d+KyeJH+GSpRBWDE7pLJZvEs00FUX32oTmizs2BgtvAEWFAll ljZTts1lkkXB3TrFOPZB+ybiK1v0tcrMEz+s3nj+ODSxC7vc4MBUvNFi9Yf7vtdDsKsMZL ckc5iIVrlxVvcfCTyARfu+8MdeYlsak= X-MC-Unique: xv-TlYolPPWKBpXtvmgj5w-1 X-Mimecast-MFC-AGG-ID: xv-TlYolPPWKBpXtvmgj5w_1781464196 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464196; x=1782068996; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=jYAcvS/4tP50eAPxRPeklkaj31Ip6dr75MhaJLz1/xQ=; b=jUJGFFOdpGN0uGBI2YsRAa94lotZ3nbDf2SBZhzNuX1MoAnMmT716TzHW5lccxNVRK 0pgUh8QYrE5nsFXlNcfoINjlCquYvTjAgwK8Ljk9ZMFE5sxGE+/mlxTuVMPXJcipJqnF wLlnxEjX9aqpud8HMC6xQ8lurfvo+RkhI7qseC9PzWdJjxwZlXLbE6woVOAN4OyaZl4c kSeLgESpqtc4NqFPRTUZVEIpEQuxgH2K6D97+Whj48M72Q2ymGOBuq/yF0OAD24v+lEl u5QOrVh7MKuX1WAqFN3kgcvVPtOIPt8OBoXWLo6mI3W7xGj7iIyl28JsBCVc55KaYLHt /9kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464196; x=1782068996; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jYAcvS/4tP50eAPxRPeklkaj31Ip6dr75MhaJLz1/xQ=; b=MVupI2y1WdSEYeRZSY7BvMtqPPGHXNO+Isit5Z3VqcVm5Mbxrbj05jg+EmzP0mTzNl /hDKYsdW9re24l4qbWf4g7oO/HU9ynlV7Y+rynoMWlXSBO744RDDif7rb8enCzg7IkoS B3FNMGoSu6h0LZkVoKzzCyKYzhaabesre9UJIDs4ydFu6Jy29QEhXF8aXmsrgUYP71cU /Tv46ijrlgPAHMA7HyOO7SICD3mxAd0cvQ4a5DdoNg++cJ5htZVxIi5f4GlkAr47qre/ zN4TpFJ+7M/T3eRXnk7/WHxPRfbOwo+aWBHrAzt6LH6APNrCl+LClSwLnl2S+B4G6pFy rAZQ== X-Gm-Message-State: AOJu0YxoKnLFsr6iUgS2ezHU7Smw6wIMi+TATZ4OU0dmPr9vFefd8F0A TFWSeYkGsSMbyApOz6Bev9nv+JecaPvufhigTJarmRaukeUR3oEGHi0/A9N6JXp5xD5tdk7LZmK DiKSWQVnPttrOGnRkIKiAUbaVI+2H6Fr9vV46x5N1skruNeeXJxYj3iln2PUHzPpoVa8nqq7mrX PSqebZP6oZmWuCqzB73yZa3yU//246G4goYg== X-Gm-Gg: Acq92OEA9bhu1cgE2XZsB81WK65+6to6Wu2lT4FjpZWP6Kg3uDuIkjYROD1NMZNkhxp EglUxWed+jBkXBd7qjfGP/ToSThmlCpPIwkrdPUjUXE425HbWczz4dooTc6ok+/bzeaOmhdxcKN mrIhTM+YuZE+sntDnCggrwMksteShIL9aw81pvHy5NGWJv78fBjzrWKKcB214VMkBwOX0Z5dL4u 2JSu9cctFPkFHFV/5AtZ+HGwKags6VmmnedJbDeMNDBAZxcBULdJP9Ie2VThdxWrPH3eF2EXShg fCNjX5LULSx3tLp1Ud58xhokxOmQw7Q8AdNoztL3dTxWkXKekkxKn9nurT2tVGUsnxrsgxazJly KHYpPGXHl+jHhf57UNV4Xoni+dAHQysGgqsxh8hAfIZo= X-Received: by 2002:a05:600c:6214:b0:490:8fd1:72a with SMTP id 5b1f17b1804b1-49220086792mr86942585e9.3.1781464196189; Sun, 14 Jun 2026 12:09:56 -0700 (PDT) X-Received: by 2002:a05:600c:6214:b0:490:8fd1:72a with SMTP id 5b1f17b1804b1-49220086792mr86942285e9.3.1781464195722; Sun, 14 Jun 2026 12:09:55 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:53 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Shiju Jose , Jonathan Cameron , Jonathan Cameron , linux-cxl@vger.kernel.org Subject: [PULL 101/106] hw/cxl/events: Fix handling of component ID in event records generation to not assume it is a string Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464257256158501 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shiju Jose Fix handling of component ID in event records generation to not assume it is a string. Component ID in CXL events is 16 bytes data, but event record generation copy 15 bytes only from the qmp "component-id" field using strncpy. Replace strncpy with memcpy and copy the entire component ID data. Fixes: ea9b6d647f2f("hw/cxl/events: Add injection of General Media Events") Reviewed-by: Jonathan Cameron Signed-off-by: Shiju Jose Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260306101423.986-4-shiju.jose@huawei.com> --- hw/mem/cxl_type3.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index 3cb1096e16..03a5d1751f 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -1895,8 +1895,7 @@ void qmp_cxl_inject_general_media_event(const char *p= ath, CxlEventLog log, } =20 if (component_id) { - strncpy((char *)gem.component_id, component_id, - sizeof(gem.component_id) - 1); + memcpy(gem.component_id, component_id, sizeof(gem.component_id)); valid_flags |=3D CXL_GMER_VALID_COMPONENT; if (has_comp_id_pldm && is_comp_id_pldm) { valid_flags |=3D CXL_GMER_VALID_COMPONENT_ID_FORMAT; @@ -2066,8 +2065,7 @@ void qmp_cxl_inject_dram_event(const char *path, CxlE= ventLog log, } =20 if (component_id) { - strncpy((char *)dram.component_id, component_id, - sizeof(dram.component_id) - 1); + memcpy(dram.component_id, component_id, sizeof(dram.component_id)); valid_flags |=3D CXL_DRAM_VALID_COMPONENT; if (has_comp_id_pldm && is_comp_id_pldm) { valid_flags |=3D CXL_DRAM_VALID_COMPONENT_ID_FORMAT; @@ -2185,8 +2183,7 @@ void qmp_cxl_inject_memory_module_event(const char *p= ath, CxlEventLog log, corrected_persist_error_count); =20 if (component_id) { - strncpy((char *)module.component_id, component_id, - sizeof(module.component_id) - 1); + memcpy(module.component_id, component_id, sizeof(module.component_= id)); valid_flags |=3D CXL_MMER_VALID_COMPONENT; if (has_comp_id_pldm && is_comp_id_pldm) { valid_flags |=3D CXL_MMER_VALID_COMPONENT_ID_FORMAT; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464475; cv=none; d=zohomail.com; s=zohoarc; b=YHddphug/ctbMmnkv0AoI6clastzrk0jBxwZa2+oG+ejLWDlmwaieKxEAgNIWEo1Sr4HY1MxU47ir6i4zKBjwG3kLef7EkETznX9L4gkJabnK74cEaMJJ3TLoG2Vz44rDjrpeFTkLhrM4nvlgn38scIRbn2uzdC6prfExfhbMVw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464475; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/C87857Tl8XFyJTpzE0YZrg6mxeNYh3lpIo3oiRAqwg=; b=g3UTXMOMcWgw6cs+Yi7ltYy5Ehan9nZmK1XwiH+nvzTEUNN+dQpY05WR6Q3bYEcyv8AugFJJ8QpWBRyvn13tc3iV2wqMlJUJlmeV2YfhxxQ/EwOBGcRAMe3OwvP5DR8JQkUdK++fwsslusG+tZrh++KJLudaA/dkK6oxVxC/GQw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464475555844.0591844581072; Sun, 14 Jun 2026 12:14:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDd-00016x-5f; Sun, 14 Jun 2026 15:10:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDc-00014t-3N for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:10:04 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDa-0002m5-6e for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:10:03 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-149-PmFCdWNTN62okruGxTWWfw-1; Sun, 14 Jun 2026 15:10:00 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-46010392f89so2480661f8f.2 for ; Sun, 14 Jun 2026 12:09:59 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f26434dsm28020996f8f.1.2026.06.14.12.09.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464201; 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: in-reply-to:in-reply-to:references:references; bh=/C87857Tl8XFyJTpzE0YZrg6mxeNYh3lpIo3oiRAqwg=; b=WrombQG7wXQugfXPuMYCRGtMffMG8qzjFqQ3mXY7pR50dN9ZjY71VvdZAp5JAKdNTczwwY XuGFVRZ3TX6iyHUZfcvccr8fZ19/2/pAJSj/fDVJm47CoAClV3JNgCv/D6TcvzL/aXXbD9 rNDtNPW0aIihzE4U2wohOkWyn7Y93r8= X-MC-Unique: PmFCdWNTN62okruGxTWWfw-1 X-Mimecast-MFC-AGG-ID: PmFCdWNTN62okruGxTWWfw_1781464199 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464199; x=1782068999; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=/C87857Tl8XFyJTpzE0YZrg6mxeNYh3lpIo3oiRAqwg=; b=Qzycom121/45XhcnGV2EFXTE4Ymc8Qv2fyIFxKqdJH6Seo+Yy4lVF9B6k/tTZsiIzK PY+fkbeITl7aRjlreodg8+LfgJOLx+7VNT0l/lchGQjqbpVVJrbm/9FhCr/qjjmrcaNx X1rCNaovzRLoLO/sheAbf36kd5G81afdCnz2KNS3M46eN3qPwPE3XN6Fj/T45w08TJAd EkIR+NCjQ/rJYdTVt7I78ZHUyteJR0tXC+Z+v8Z9kDKbHud8UXCCqi4ui+Ed0WPLRaVR wIUUJ8bM3JpTUA+b63R3J6/pcumnm6FQ1Gbi5KidEL8d8nMliv95ciwixVayO6tCTDwn PMew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464199; x=1782068999; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/C87857Tl8XFyJTpzE0YZrg6mxeNYh3lpIo3oiRAqwg=; b=P5Ecs3159baW55NnNjJe1NhTGDOKe8MzbSWPUZ5jjGJuNT2+pReAmJYS+1UEvbkPdQ UeSv8DA6oAPT74xJlgDS2yrHyUAMHK67SJQs1oQD2N9Ns3H3Yj6XnnEPjqBlH5pgWUt4 OjUIZaNYWVeXLHEUVP+NCZGltJ8Co51cZ5c5Ye2AygjINImxVN7Qv5TCxeFodh1NPd+5 aZWFWkuqktwXhkkah7oXXekwYShVxNEvyYqaBnv75+WL2cPXYP+38dl+6P/7IkBEm53i 6sAsGH82xJMm6lmrx+eZTjCPDbu+IGPtx37ly35kuxxA3jU/QO6b3J2AmhLDpTUOwdzK GlYQ== X-Gm-Message-State: AOJu0Yy+BWwUHjBHQYqg+unncAxP+FFCQZx57Ndnobk5goBehxWnxlrz UXZi2+f7iF24SVh6fQrphc8ZbfuTSu1SF9cxDKaUfsTHXiC0Zz0lUtoIk9FNp+LdWr6oJWCEhz2 3qUY3x7VCuRsbtPXKg84YkonoryeUw14pECYjC3jQkVjItoVvkgTmcL4pmKtk04LY7W5rWTlWY8 qFbu7TnnB0BkVqJ22hJgeGHatEXCKAsgaSuw== X-Gm-Gg: Acq92OG1xkLV86l5ik5d4bgv2xY+tX3w0w+IM0NIgxyPT10hN0nlFF2mcmAep21US0p YIIQmDsMVlxSyp6goOLDhg2NPs9dG2QUpehtqV58dPiGxM85kPNnIr0NNv1qI2wgzo4/rxy1/UT ptw+RQqfRp5D1BaHbARsZyUjeWoaKx9t/JVwXSUjLtufay4jyf5MlHMkv6YRbGBMdWI2W+z9sV5 9d8PBf2LL+ibNcv8FpJnE8vUhrSpfUfnbHfeX2UXIJOo/XA659S+tH08NZfJw8QqYw/Z/0ww92R UAge2fOfVrOTbV9FZ00UYKoOWWpU8w68bCAPtkMjl6iNGHfEFIoGvzCPyXBfFUQNrokbL9/YgLu JpcX3dqPWLSEyHpWdrZJ3iQTO29xo56493eCBckSToHQ= X-Received: by 2002:a05:6000:4615:b0:43b:5b25:67f8 with SMTP id ffacd0b85a97d-4606dbdf91emr14863227f8f.20.1781464198613; Sun, 14 Jun 2026 12:09:58 -0700 (PDT) X-Received: by 2002:a05:6000:4615:b0:43b:5b25:67f8 with SMTP id ffacd0b85a97d-4606dbdf91emr14863187f8f.20.1781464197925; Sun, 14 Jun 2026 12:09:57 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:55 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Li Zhijian , Jonathan Cameron , Gregory Price , Alireza Sanaee , Jonathan Cameron , linux-cxl@vger.kernel.org Subject: [PULL 102/106] hw/cxl: Allow cxl_cfmws_find_device() to filter on whether interleaved paths are accepted Message-ID: <57d96c7b8527d60bca37c742ebe418040dbb2fcd.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464476153158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Alireza Sanaee via qemu development Extend cxl_cfmws_find_device() with a parameter that filters on whether the address lies in an interleaved range. For now all callers accept interleave configurations so no functional changes. Reviewed-by: Li Zhijian Reviewed-by: Jonathan Cameron Reviewed-by: Gregory Price Tested-by: Gregory Price Signed-off-by: Alireza Sanaee Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260318171918.146-3-alireza.sanaee@huawei.com> --- hw/cxl/cxl-host.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/hw/cxl/cxl-host.c b/hw/cxl/cxl-host.c index a94b893e99..2dc9f77007 100644 --- a/hw/cxl/cxl-host.c +++ b/hw/cxl/cxl-host.c @@ -104,7 +104,7 @@ void cxl_fmws_link_targets(Error **errp) } =20 static bool cxl_hdm_find_target(uint32_t *cache_mem, hwaddr addr, - uint8_t *target) + uint8_t *target, bool *interleaved) { int hdm_inc =3D R_CXL_HDM_DECODER1_BASE_LO - R_CXL_HDM_DECODER0_BASE_L= O; unsigned int hdm_count; @@ -138,6 +138,11 @@ static bool cxl_hdm_find_target(uint32_t *cache_mem, h= waddr addr, found =3D true; ig_enc =3D FIELD_EX32(ctrl, CXL_HDM_DECODER0_CTRL, IG); iw_enc =3D FIELD_EX32(ctrl, CXL_HDM_DECODER0_CTRL, IW); + + if (interleaved) { + *interleaved =3D iw_enc !=3D 0; + } + target_idx =3D (addr / cxl_decode_ig(ig_enc)) % (1 << iw_enc); =20 if (target_idx < 4) { @@ -157,7 +162,8 @@ static bool cxl_hdm_find_target(uint32_t *cache_mem, hw= addr addr, return found; } =20 -static PCIDevice *cxl_cfmws_find_device(CXLFixedWindow *fw, hwaddr addr) +static PCIDevice *cxl_cfmws_find_device(CXLFixedWindow *fw, hwaddr addr, + bool allow_interleave) { CXLComponentState *hb_cstate, *usp_cstate; PCIHostState *hb; @@ -165,9 +171,13 @@ static PCIDevice *cxl_cfmws_find_device(CXLFixedWindow= *fw, hwaddr addr) int rb_index; uint32_t *cache_mem; uint8_t target; - bool target_found; + bool target_found, interleaved; PCIDevice *rp, *d; =20 + if ((fw->num_targets > 1) && !allow_interleave) { + return NULL; + } + rb_index =3D (addr / cxl_decode_ig(fw->enc_int_gran)) % fw->num_target= s; hb =3D PCI_HOST_BRIDGE(fw->target_hbs[rb_index]->cxl_host_bridge); if (!hb || !hb->bus || !pci_bus_is_cxl(hb->bus)) { @@ -187,11 +197,16 @@ static PCIDevice *cxl_cfmws_find_device(CXLFixedWindo= w *fw, hwaddr addr) =20 cache_mem =3D hb_cstate->crb.cache_mem_registers; =20 - target_found =3D cxl_hdm_find_target(cache_mem, addr, &target); + target_found =3D cxl_hdm_find_target(cache_mem, addr, &target, + &interleaved); if (!target_found) { return NULL; } =20 + if (interleaved && !allow_interleave) { + return NULL; + } + rp =3D pcie_find_port_by_pn(hb->bus, target); if (!rp) { return NULL; @@ -223,11 +238,15 @@ static PCIDevice *cxl_cfmws_find_device(CXLFixedWindo= w *fw, hwaddr addr) =20 cache_mem =3D usp_cstate->crb.cache_mem_registers; =20 - target_found =3D cxl_hdm_find_target(cache_mem, addr, &target); + target_found =3D cxl_hdm_find_target(cache_mem, addr, &target, &interl= eaved); if (!target_found) { return NULL; } =20 + if (interleaved && !allow_interleave) { + return NULL; + } + d =3D pcie_find_port_by_pn(&PCI_BRIDGE(d)->sec_bus, target); if (!d) { return NULL; @@ -251,7 +270,7 @@ static MemTxResult cxl_read_cfmws(void *opaque, hwaddr = addr, uint64_t *data, CXLFixedWindow *fw =3D opaque; PCIDevice *d; =20 - d =3D cxl_cfmws_find_device(fw, addr + fw->base); + d =3D cxl_cfmws_find_device(fw, addr + fw->base, true); if (d =3D=3D NULL) { *data =3D 0; /* Reads to invalid address return poison */ @@ -268,7 +287,7 @@ static MemTxResult cxl_write_cfmws(void *opaque, hwaddr= addr, CXLFixedWindow *fw =3D opaque; PCIDevice *d; =20 - d =3D cxl_cfmws_find_device(fw, addr + fw->base); + d =3D cxl_cfmws_find_device(fw, addr + fw->base, true); if (d =3D=3D NULL) { /* Writes to invalid address are silent */ return MEMTX_OK; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464462; cv=none; d=zohomail.com; s=zohoarc; b=n3/RE9yl2BYfOO+RchuPKc0SPwBdXNyJUoMCcJYnA+BUdxHxsdaaY+ynVdj0FkLSipTyqMzy7EVSzqrmw5Bhe/MhwUel+OocNJnE0fPWR6Wdvi9KOxZoJPR7ZzOFpkazaw1wVfasfMLhMsqEKWBRk9IJ6FCLJ7GDqiYdLRkxejE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464462; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FFLyL6q6f1wgZeDPSCW9Y0Lt5P1U/oslDNetNFUEjzE=; b=niy0xB4SKQX6C08UEFffbcvw+pTLeeE9cD84CoYfCdMk3cZTvkxw+aQ85LRUf1GnGOaKmMjwlHbCidC8o5XizEcygCESTbZ2PfqufP3W0Y7BJ2roe42PqDbFFLQTlkuMRnJgIuCEIO/OKgSzjMu1vkIVLUcBHRj+/dm5hJ+HdoA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464462917866.287216050518; Sun, 14 Jun 2026 12:14:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDg-0001SZ-SD; Sun, 14 Jun 2026 15:10:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDf-0001KQ-EH for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:10:07 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDc-0002vL-Rf for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:10:07 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-179-0RyA6bxjPiiihpc_eHrPhg-1; Sun, 14 Jun 2026 15:10:02 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-45ef3aeeb41so1609162f8f.1 for ; Sun, 14 Jun 2026 12:10:01 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2c3782sm23716815f8f.25.2026.06.14.12.09.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:09:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464204; 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: in-reply-to:in-reply-to:references:references; bh=FFLyL6q6f1wgZeDPSCW9Y0Lt5P1U/oslDNetNFUEjzE=; b=al93ML8XWrGrC/V8BUkqDlfvvfGIWg1B9hzKqXqcTmaLuWA08XbXLfGHW/GdChr68TljrI IxDhUixczr8muN5Y0jtkc602isUb4GFnsNxHNE9KpqVHhkoC6PwLRLu9GEAHWGFq7pKSnW p190ySkq38BtTRY/fxslOJ/URH6XJBk= X-MC-Unique: 0RyA6bxjPiiihpc_eHrPhg-1 X-Mimecast-MFC-AGG-ID: 0RyA6bxjPiiihpc_eHrPhg_1781464201 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464201; x=1782069001; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=FFLyL6q6f1wgZeDPSCW9Y0Lt5P1U/oslDNetNFUEjzE=; b=lunR7vhi2bebF/BYaDnW1Sy8fd2w4HJ7pQFF1ksTEsG+Ux7WaUWt2MyI48GXWVxZEG r9k6vO6gRrO9hm9NeSiNvIGMz8sK1WA8/fyuZKP+4FG81LwFSuqmTqYvFtn/4UWl4stq K693AUoSg9aDGSrGbHrr+ADaUkY3WS2JbptOCxYi94C9XSt0cDDrO5j6TqtG8n77l+0O DzBJYE0wY7AWnm5tK2T+dSOHrt2phsRvu8ifJsHk2wDT4fmXVM/37g7edKfcHHcxRMHn pbtopc1BMub8i9OEKK/YDC6bq2P1TS004Z7vdVlwbYdS9W0lCUPndgg5kj6qnTU33+zy jcEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464201; x=1782069001; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FFLyL6q6f1wgZeDPSCW9Y0Lt5P1U/oslDNetNFUEjzE=; b=W1XY21XKGyBi6P26/w5xyxDlfdGklNleoG/mfoPZQyIlvGx3Ur4vkdFVSoICY7ljpM 3Vn5VK9QPIQQOygSu6J+x5y0h6DREm/r02kI+RcpKzgzMy+h3xaIxiu0QbQMdSZS8mYT 06D9lmdmz5gz+PnV/oZRl1usOvqdToFBnKabVTS6pC+mNXOzE0LEH0NGBe8eLxnXAaMY ed2mzf6OxqqFZAOsChDLq/QitwIC1pAtVC3uO2mJZO3e2dadMNXesEnQg8VnhnwCaw0/ WxhcN3nK9ke6RjdDH0HY+MDptEiY6VAAPpSdj8cakNbd97DDb5KPpfzh2/jVSne2OTs5 Mq+Q== X-Gm-Message-State: AOJu0YxqhCmSXMMaMl0OphYoQ5TfVjU/fDuDkbfdoFnvLtJiU/q66obF h025sET234C7/Lg/LhWts2ZODiPjaTmlQ7tSdgvSGSRYZnLAEnv+xAoOT6err64ZVqLXPGTo3RP 8Sw1IwdLyOll6yisR4FGgZAASi096hI3aHDs4H3j7L/Djnnh9hEDxTh2qdpjYkdA8Tk5VIja5+r bf50uX8mIHbEG1D8Jfu1SE00tfSqhpLEeAfw== X-Gm-Gg: Acq92OG67tJ1AamMktlDzsBDx3xy6FxsszeOhbblBZWlb5y/xDn2SeU7kG225zEq/3u sM8AT1aPZ4U7vCtBJJoBdMRJ9RjB7+GnDHVEENhJyvt53Urd8mq4F190D/Cj+Dvh+NGuFzmgotj EQF90WachZ8OlU1lusuUz1CunUK3MQ1iRRl738XDPSiXB6kxoy4chMww4C0YWd+q6tMB5PeQ6z0 MuxjuO23V5AHxvFgnSihbvDoapZNSg9nnzMcECTpITqKTiSVVvjt9rdgskkp25pbOQRnO3LrWhh o8+YEegKaUn/gUSPnA2OQyYVnU/zXbdhfCKxk2ap3FehFVcY+5/hvF0D6E3VDqUuz5iU5nq/OxL +VNVIdIpNGQG3EdWNfs1Dr8xN0gE1XUO92Zt+8yBjbkk= X-Received: by 2002:a05:6000:288f:b0:460:3234:4472 with SMTP id ffacd0b85a97d-4606dbe5c41mr14337382f8f.40.1781464200783; Sun, 14 Jun 2026 12:10:00 -0700 (PDT) X-Received: by 2002:a05:6000:288f:b0:460:3234:4472 with SMTP id ffacd0b85a97d-4606dbe5c41mr14337339f8f.40.1781464200165; Sun, 14 Jun 2026 12:10:00 -0700 (PDT) Date: Sun, 14 Jun 2026 15:09:58 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Li Zhijian , Jonathan Cameron , Gregory Price , Alireza Sanaee , Jonathan Cameron , linux-cxl@vger.kernel.org Subject: [PULL 103/106] hw/cxl: Add a performant (and correct) path for the non interleaved cases Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464464261158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Alireza Sanaee via qemu development The CXL address to device decoding logic is complex because of the need to correctly decode fine grained interleave. The current implementation prevents use with KVM where executed instructions may reside in that memory and gives very slow performance even in TCG. In many real cases non interleaved memory configurations are useful and for those we can use a more conventional memory region alias allowing similar performance to other memory in the system. Whether this fast path is applicable can be established once the full set of HDM decoders has been committed (in whatever order the guest decides to commit them). As such a check is performed on each commit/uncommit of HDM decoder to establish if the alias should be added or removed. Reviewed-by: Li Zhijian Co-developed-by: Jonathan Cameron Signed-off-by: Jonathan Cameron Reviewed-by: Gregory Price Tested-by: Gregory Price Signed-off-by: Alireza Sanaee Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260318171918.146-4-alireza.sanaee@huawei.com> --- hw/cxl/cxl-component-utils.c | 6 ++ hw/cxl/cxl-host.c | 201 +++++++++++++++++++++++++++++++++++ hw/mem/cxl_type3.c | 4 + include/hw/cxl/cxl.h | 1 + include/hw/cxl/cxl_device.h | 4 + 5 files changed, 216 insertions(+) diff --git a/hw/cxl/cxl-component-utils.c b/hw/cxl/cxl-component-utils.c index 07aabe331c..a624357978 100644 --- a/hw/cxl/cxl-component-utils.c +++ b/hw/cxl/cxl-component-utils.c @@ -143,6 +143,12 @@ static void dumb_hdm_handler(CXLComponentState *cxl_cs= tate, hwaddr offset, value =3D FIELD_DP32(value, CXL_HDM_DECODER0_CTRL, COMMITTED, 0); } stl_le_p((uint8_t *)cache_mem + offset, value); + + if (should_commit) { + cfmws_update_non_interleaved(true); + } else if (should_uncommit) { + cfmws_update_non_interleaved(false); + } } =20 static void bi_handler(CXLComponentState *cxl_cstate, hwaddr offset, diff --git a/hw/cxl/cxl-host.c b/hw/cxl/cxl-host.c index 2dc9f77007..7e744312f1 100644 --- a/hw/cxl/cxl-host.c +++ b/hw/cxl/cxl-host.c @@ -264,6 +264,207 @@ static PCIDevice *cxl_cfmws_find_device(CXLFixedWindo= w *fw, hwaddr addr, return d; } =20 +typedef struct CXLDirectPTState { + CXLType3Dev *ct3d; + hwaddr decoder_base; + hwaddr decoder_size; + hwaddr dpa_base; + unsigned int hdm_decoder_idx; +} CXLDirectPTState; + +static void cxl_fmws_direct_passthrough_setup(CXLDirectPTState *state, + CXLFixedWindow *fw) +{ + CXLType3Dev *ct3d =3D state->ct3d; + MemoryRegion *mr =3D NULL; + uint64_t vmr_size =3D 0, pmr_size =3D 0, offset =3D 0; + MemoryRegion *direct_mr; + g_autofree char *direct_mr_name; + unsigned int idx =3D state->hdm_decoder_idx; + + if (ct3d->hostvmem) { + MemoryRegion *vmr =3D host_memory_backend_get_memory(ct3d->hostvme= m); + + vmr_size =3D memory_region_size(vmr); + if (state->dpa_base < vmr_size) { + mr =3D vmr; + offset =3D state->dpa_base; + } + } + if (!mr && ct3d->hostpmem) { + MemoryRegion *pmr =3D host_memory_backend_get_memory(ct3d->hostpme= m); + + pmr_size =3D memory_region_size(pmr); + if (state->dpa_base - vmr_size < pmr_size) { + mr =3D pmr; + offset =3D state->dpa_base - vmr_size; + } + } + if (!mr) { + return; + } + + if (ct3d->direct_mr_fw[idx]) { + return; + } + + direct_mr =3D &ct3d->direct_mr[idx]; + direct_mr_name =3D g_strdup_printf("cxl-direct-mapping-alias-%u", idx); + if (!direct_mr_name) { + return; + } + + memory_region_init_alias(direct_mr, OBJECT(ct3d), direct_mr_name, mr, + offset, state->decoder_size); + memory_region_transaction_begin(); + memory_region_add_subregion(&fw->mr, + state->decoder_base - fw->base, direct_mr); + memory_region_transaction_commit(); + ct3d->direct_mr_fw[idx] =3D fw; +} + +static void cxl_fmws_direct_passthrough_remove(CXLType3Dev *ct3d, + uint64_t decoder_base, + unsigned int idx) +{ + CXLFixedWindow *owner_fw =3D ct3d->direct_mr_fw[idx]; + MemoryRegion *direct_mr =3D &ct3d->direct_mr[idx]; + + if (!owner_fw) { + return; + } + + if (!memory_region_is_mapped(direct_mr)) { + return; + } + + if (cxl_cfmws_find_device(owner_fw, decoder_base, false)) { + return; + } + + memory_region_transaction_begin(); + memory_region_del_subregion(&owner_fw->mr, direct_mr); + object_unparent(OBJECT(direct_mr)); + memory_region_transaction_commit(); + ct3d->direct_mr_fw[idx] =3D NULL; +} + +static int cxl_fmws_direct_passthrough(Object *obj, void *opaque) +{ + CXLDirectPTState *state =3D opaque; + CXLFixedWindow *fw; + + if (!object_dynamic_cast(obj, TYPE_CXL_FMW)) { + return 0; + } + + fw =3D CXL_FMW(obj); + + /* Verify not interleaved */ + if (!cxl_cfmws_find_device(fw, state->decoder_base, false)) { + return 0; + } + + cxl_fmws_direct_passthrough_setup(state, fw); + + return 0; +} + +static int update_non_interleaved(Object *obj, void *opaque) +{ + const int hdm_inc =3D R_CXL_HDM_DECODER1_BASE_LO - R_CXL_HDM_DECODER0_= BASE_LO; + bool commit =3D *(bool *)opaque; + CXLType3Dev *ct3d; + uint32_t *cache_mem; + unsigned int hdm_count, i; + int interleave_ways_dec; + uint32_t cap; + uint64_t dpa_base =3D 0; + + if (!object_dynamic_cast(obj, TYPE_CXL_TYPE3)) { + return 0; + } + + ct3d =3D CXL_TYPE3(obj); + cache_mem =3D ct3d->cxl_cstate.crb.cache_mem_registers; + cap =3D ldl_le_p(cache_mem + R_CXL_HDM_DECODER_CAPABILITY); + hdm_count =3D cxl_decoder_count_dec(FIELD_EX32(cap, + CXL_HDM_DECODER_CAPABILIT= Y, + DECODER_COUNT)); + for (i =3D 0; i < hdm_count; i++) { + uint64_t decoder_base, decoder_size, skip; + uint32_t hdm_ctrl, low, high; + int iw, committed; + + hdm_ctrl =3D ldl_le_p(cache_mem + R_CXL_HDM_DECODER0_CTRL + i * hd= m_inc); + committed =3D FIELD_EX32(hdm_ctrl, CXL_HDM_DECODER0_CTRL, COMMITTE= D); + + /* + * Optimization: Looking for a fully committed path; if the type 3= HDM + * decoder is not commmitted, it cannot lie on such a path. + */ + if (commit && !committed) { + return 0; + } + + low =3D ldl_le_p(cache_mem + R_CXL_HDM_DECODER0_DPA_SKIP_LO + + i * hdm_inc); + high =3D ldl_le_p(cache_mem + R_CXL_HDM_DECODER0_DPA_SKIP_HI + + i * hdm_inc); + skip =3D ((uint64_t)high << 32) | (low & 0xf0000000); + dpa_base +=3D skip; + + low =3D ldl_le_p(cache_mem + R_CXL_HDM_DECODER0_SIZE_LO + i * hdm_= inc); + high =3D ldl_le_p(cache_mem + R_CXL_HDM_DECODER0_SIZE_HI + i * hdm= _inc); + decoder_size =3D ((uint64_t)high << 32) | (low & 0xf0000000); + + low =3D ldl_le_p(cache_mem + R_CXL_HDM_DECODER0_BASE_LO + i * hdm_= inc); + high =3D ldl_le_p(cache_mem + R_CXL_HDM_DECODER0_BASE_HI + i * hdm= _inc); + decoder_base =3D ((uint64_t)high << 32) | (low & 0xf0000000); + + iw =3D FIELD_EX32(hdm_ctrl, CXL_HDM_DECODER0_CTRL, IW); + + if (iw =3D=3D 0) { + if (!commit) { + cxl_fmws_direct_passthrough_remove(ct3d, decoder_base, i); + } else { + CXLDirectPTState state =3D { + .ct3d =3D ct3d, + .decoder_base =3D decoder_base, + .decoder_size =3D decoder_size, + .dpa_base =3D dpa_base, + .hdm_decoder_idx =3D i, + }; + + object_child_foreach_recursive(object_get_root(), + cxl_fmws_direct_passthrough, + &state); + } + } + + interleave_ways_dec =3D cxl_interleave_ways_dec(iw, &error_fatal); + if (interleave_ways_dec =3D=3D 0) { + return 0; + } + + dpa_base +=3D decoder_size / interleave_ways_dec; + } + + return 0; +} + +void cfmws_update_non_interleaved(bool commit) +{ + /* + * Walk endpoints to find both committed and uncommitted decoders, + * then check if they are not interleaved (but the path is fully set u= p). + */ + object_child_foreach_recursive(object_get_root(), + update_non_interleaved, &commit); + + return; +} + static MemTxResult cxl_read_cfmws(void *opaque, hwaddr addr, uint64_t *dat= a, unsigned size, MemTxAttrs attrs) { diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index 03a5d1751f..cba05ec57d 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -427,6 +427,8 @@ static void hdm_decoder_commit(CXLType3Dev *ct3d, int w= hich) ctrl =3D FIELD_DP32(ctrl, CXL_HDM_DECODER0_CTRL, COMMITTED, 1); =20 stl_le_p(cache_mem + R_CXL_HDM_DECODER0_CTRL + which * hdm_inc, ctrl); + + cfmws_update_non_interleaved(true); } =20 static void hdm_decoder_uncommit(CXLType3Dev *ct3d, int which) @@ -442,6 +444,8 @@ static void hdm_decoder_uncommit(CXLType3Dev *ct3d, int= which) ctrl =3D FIELD_DP32(ctrl, CXL_HDM_DECODER0_CTRL, COMMITTED, 0); =20 stl_le_p(cache_mem + R_CXL_HDM_DECODER0_CTRL + which * hdm_inc, ctrl); + + cfmws_update_non_interleaved(false); } =20 static int ct3d_qmp_uncor_err_to_cxl(CxlUncorErrorType qmp_err) diff --git a/include/hw/cxl/cxl.h b/include/hw/cxl/cxl.h index 998f495a98..d8cd8359d2 100644 --- a/include/hw/cxl/cxl.h +++ b/include/hw/cxl/cxl.h @@ -71,4 +71,5 @@ CXLComponentState *cxl_usp_to_cstate(CXLUpstreamPort *usp= ); typedef struct CXLDownstreamPort CXLDownstreamPort; DECLARE_INSTANCE_CHECKER(CXLDownstreamPort, CXL_DSP, TYPE_CXL_DSP) =20 +void cfmws_update_non_interleaved(bool commit); #endif diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h index 393f312217..ba551fa5f9 100644 --- a/include/hw/cxl/cxl_device.h +++ b/include/hw/cxl/cxl_device.h @@ -685,6 +685,8 @@ typedef struct CXLSetFeatureInfo { size_t data_size; } CXLSetFeatureInfo; =20 +typedef struct CXLFixedWindow CXLFixedWindow; + struct CXLSanitizeInfo; =20 typedef struct CXLAlertConfig { @@ -712,6 +714,8 @@ struct CXLType3Dev { uint64_t sn; =20 /* State */ + MemoryRegion direct_mr[CXL_HDM_DECODER_COUNT]; + CXLFixedWindow *direct_mr_fw[CXL_HDM_DECODER_COUNT]; AddressSpace hostvmem_as; AddressSpace hostpmem_as; CXLComponentState cxl_cstate; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464494; cv=none; d=zohomail.com; s=zohoarc; b=kw62xuhuxviS0oqyBrqqHpe7Tk5gdYCJ0Tr4zN8sPNbheeJoDKWPJIi7Vsvaahy5BMxgZumy0NqDYhU6YWPt0dEFyjcnottiTj6RzAS+NKtQpw5pr1s0kTMf0d30vUnYKCkP5znMiG7N9iLHnxbPUBRFS0vhpiPG2vLJm6yR1XA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464494; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0FKrtKD3UbgNzo28PGrqkfe8bMWq9NWlfrneEsbjarY=; b=l6gExQAV0vC67lq5r4uIyl1Lcs+EUSGwodqm6sb681vEy/xqI6l4Z6VSxuPmHtW6WqawRW/3r+XtpKv+OKfNA2HDP1P2Tg1NrkVq7hc17kzWNS7FE3leZBQHRa1d8EY0GNlBh4Fksj8+icsI2OjYPmygrmOsgp+JdRFR9JFQQE0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464494783639.6343350793688; Sun, 14 Jun 2026 12:14:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDl-0001s0-2B; Sun, 14 Jun 2026 15:10:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDi-0001eU-Pf for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:10:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDg-0002ya-LS for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:10:10 -0400 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-81-qY3n3hK3P8GfRmUgI6-QRw-1; Sun, 14 Jun 2026 15:10:04 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490a767b782so15958345e9.2 for ; Sun, 14 Jun 2026 12:10:04 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490ea95b274sm272829555e9.1.2026.06.14.12.10.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:10:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464207; 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: in-reply-to:in-reply-to:references:references; bh=0FKrtKD3UbgNzo28PGrqkfe8bMWq9NWlfrneEsbjarY=; b=IEQ/yHKeMD4NJUlZbNFeoXDvATRz+4bzNRpZ3U1grLWaeZXcdfG/S41K96pSixDeK0CjCf 5je4Bl+7hETczM+kReLdePJ0aEjVU1r88v6RinCYIxqeBmsPmWVDCw5NswxJD+SWCKhwW0 Jp65M9sYg7UN6aAva9sPffOXDtVuX00= X-MC-Unique: qY3n3hK3P8GfRmUgI6-QRw-1 X-Mimecast-MFC-AGG-ID: qY3n3hK3P8GfRmUgI6-QRw_1781464203 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464203; x=1782069003; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=0FKrtKD3UbgNzo28PGrqkfe8bMWq9NWlfrneEsbjarY=; b=n3RrJnGhaJFEOETt0VK/Gh3CrkTLfJf6TOCvoOxCtwYcSsLrOT3NAs/o09sQaT2Maw LeoYZwXKIfsuEeCo528UJ8HJuzvLo+0tXrRJdc7pgO9uFMnsSciSh6QkAADbMbl5KqhL 7uQO/VxLUA4gUGWmH493zjkCG4ueAqFslu34ftOSJkBe/1ZEMF3QOpcf3dCkcuyXdwUK EfQxJ0m9M7jLUtZIKqmHFO89eq+icKeVHwetLFYGZtMh636rl6ffVVvrz5Irpi0zf1RO dX5SA60+k3mH4wrz3X85dT78ZzOYNVVqEn2XoEYhnIXhkK+XqCodqSf8uoRqgwU6noNO mYyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464203; x=1782069003; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0FKrtKD3UbgNzo28PGrqkfe8bMWq9NWlfrneEsbjarY=; b=QB71C0dRZRmRClJqdqsYaUlBIncYUgBLPYjJeRy8pnV05xlNyxQLmo83NJM84OSARA Iyit+739izKsE5+cyIf7NLHjt3i5eb99W06lOT3OajzLLyP2/8Bf7abgkXqg+h0RyZke KqypxlUfC6GodWF35ytdJNoHE3AYISX6m0TUE3RM/rUK+7AABVOOYeo8LI9/Q3Pjlct1 gr/WJjC0yOxPzy99bzjPPWOKwewJzM3BVGlewsOMa0RULVWPYA/ad+/MM9YekNBw0sbJ bAsBXkxGB4LrP5qTJA/l+EWWNU4S3uqrLZ+ZJISRYJyMRIBu2XyroIvocGmVhdf4MMTS OYGQ== X-Gm-Message-State: AOJu0Ywg6nABcZTVL1QbIanVxPxlayK4sypuOeNZh9nmQUvt06LmZ4BS eh01Xd3CL3Rcu+La+tw2KoTfYVQ2H4ebTDmY53lLJLsKzfi7y3gpTv4VyeN3GtXgSSWgY1q3ySp dO/rb/5pwsfWkbaABtWSUprdwjY5DPOOEUhOLaX5Lsye8vkrCxWSaz2HmeZA+h91vI0RPgMdZw6 Yvbv8YSI+woFRf7xzsJjaB8cAfUJq26oabBA== X-Gm-Gg: Acq92OE8MDXQe2nHrbtFqV32Zd26V1VPunKVBuq+L9/1268FCXMDZXPoBgpdSjWTBpu smPmaHNQDBiZrDQnYhYm+akGOMd9aXWBdplyuXazIoApG4Lut1j/zTJv0Utpiac2kSm2fyQlMou RPqWkAoo70RCDtSxLoY0NKyz6faq6wJMaAM6SuG+IjaE9PruLNkARo3s8Frfl8Po3LAy4KL2Ypm rLLQ3r3AUpTGVFgxkvpk4RRQHkhX+V0SiIAUakgqL2NjGXeHkkM1hjXIiSvXILT4367qLO5Iakb xvH4coKqVawROAq3n+wgqs5v/ptjgAgApDrH+RXm8iBnkpKjm2WdfbEWIB7yU1daFsGR68FNZvw 0jnBAkxI7UfKE6guHr5OrCPLBW7J6vdE+I+fTG052NZU= X-Received: by 2002:a05:600c:6214:b0:492:1e36:1fe8 with SMTP id 5b1f17b1804b1-4921e36204dmr101204795e9.36.1781464203192; Sun, 14 Jun 2026 12:10:03 -0700 (PDT) X-Received: by 2002:a05:600c:6214:b0:492:1e36:1fe8 with SMTP id 5b1f17b1804b1-4921e36204dmr101204465e9.36.1781464202594; Sun, 14 Jun 2026 12:10:02 -0700 (PDT) Date: Sun, 14 Jun 2026 15:10:00 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Junjie Cao , Zhenzhong Duan , Yi Liu , Jason Wang , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Paolo Bonzini , Richard Henderson Subject: [PULL 104/106] intel_iommu: fix guest-triggerable abort on oversized MMIO access Message-ID: <1d741b375300ad14066c74f7f2d3430114a5cf7f.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464496261158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Junjie Cao An 8-byte guest access to a 32-bit-only VT-d register hit assert(size =3D=3D 4) and aborted QEMU. Remove all 25 asserts. All 3 read-side and 18 of 22 write-side asserts are at non-8-aligned offsets (unreachable, rejected by memory_region_access_valid()) -- simply deleted. The remaining 4, all writes at 8-aligned offsets, are reachable: FECTL 0x38, IECTL 0xa0, IEADDR 0xa8, PECTL 0xe0. Truncating the high half via vtd_set_long() matches prior behavior; log under -d guest_errors since the VT-d spec is silent on oversized accesses to 32-bit registers, and add a comment so future maintainers don't delete the check as "harmless". min_access_size stays 4, so all size-based branches on 64-bit register pairs are preserved. Found by generic-fuzz (24 distinct crash seeds, all fixed). Suggested-by: Zhenzhong Duan Signed-off-by: Junjie Cao Reviewed-by: Michael S. Tsirkin Reviewed-by: Yi Liu Reviewed-by: Zhenzhong Duan Signed-off-by: Michael S. Tsirkin Message-Id: <20260514180703.85686-2-junjie.cao@intel.com> --- hw/i386/intel_iommu.c | 74 ++++++++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 25 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 8bb2a1e339..744cdfd2e6 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -21,6 +21,7 @@ =20 #include "qemu/osdep.h" #include "qemu/error-report.h" +#include "qemu/log.h" #include "qemu/main-loop.h" #include "qapi/error.h" #include "hw/core/sysbus.h" @@ -3659,7 +3660,6 @@ static uint64_t vtd_mem_read(void *opaque, hwaddr add= r, unsigned size) break; =20 case DMAR_RTADDR_REG_HI: - assert(size =3D=3D 4); val =3D vtd_get_quad_raw(s, DMAR_RTADDR_REG) >> 32; break; =20 @@ -3674,12 +3674,10 @@ static uint64_t vtd_mem_read(void *opaque, hwaddr a= ddr, unsigned size) break; =20 case DMAR_IQA_REG_HI: - assert(size =3D=3D 4); val =3D s->iq >> 32; break; =20 case DMAR_PEUADDR_REG: - assert(size =3D=3D 4); val =3D vtd_get_long_raw(s, DMAR_PEUADDR_REG); break; =20 @@ -3725,7 +3723,6 @@ static void vtd_mem_write(void *opaque, hwaddr addr, break; =20 case DMAR_CCMD_REG_HI: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); vtd_handle_ccmd_write(s); break; @@ -3741,13 +3738,11 @@ static void vtd_mem_write(void *opaque, hwaddr addr, break; =20 case DMAR_IOTLB_REG_HI: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); vtd_handle_iotlb_write(s); break; =20 case DMAR_PEUADDR_REG: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); break; =20 @@ -3761,27 +3756,35 @@ static void vtd_mem_write(void *opaque, hwaddr addr, break; =20 case DMAR_IVA_REG_HI: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); break; =20 /* Fault Status Register, 32-bit */ case DMAR_FSTS_REG: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); vtd_handle_fsts_write(s); break; =20 /* Fault Event Control Register, 32-bit */ case DMAR_FECTL_REG: - assert(size =3D=3D 4); + /* + * 32-bit register at an 8-byte-aligned offset: a well-formed + * 8-byte guest access reaches this handler. vtd_set_long() + * takes uint32_t and truncates the high half -- undefined per + * the VT-d spec but harmless here. Flag it under + * -d guest_errors so the guest-side bug surfaces. + */ + if (size !=3D 4) { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: invalid %u-byte access to 32-bit reg " + "addr=3D0x%" PRIx64 "\n", __func__, size, addr); + } vtd_set_long(s, addr, val); vtd_handle_fectl_write(s); break; =20 /* Fault Event Data Register, 32-bit */ case DMAR_FEDATA_REG: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); break; =20 @@ -3800,13 +3803,11 @@ static void vtd_mem_write(void *opaque, hwaddr addr, =20 /* Fault Event Upper Address Register, 32-bit */ case DMAR_FEUADDR_REG: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); break; =20 /* Protected Memory Enable Register, 32-bit */ case DMAR_PMEN_REG: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); break; =20 @@ -3820,7 +3821,6 @@ static void vtd_mem_write(void *opaque, hwaddr addr, break; =20 case DMAR_RTADDR_REG_HI: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); break; =20 @@ -3835,7 +3835,6 @@ static void vtd_mem_write(void *opaque, hwaddr addr, break; =20 case DMAR_IQT_REG_HI: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); /* 19:63 of IQT_REG is RsvdZ, do nothing here */ break; @@ -3851,39 +3850,57 @@ static void vtd_mem_write(void *opaque, hwaddr addr, break; =20 case DMAR_IQA_REG_HI: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); break; =20 /* Invalidation Completion Status Register, 32-bit */ case DMAR_ICS_REG: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); vtd_handle_ics_write(s); break; =20 /* Invalidation Event Control Register, 32-bit */ case DMAR_IECTL_REG: - assert(size =3D=3D 4); + /* + * 32-bit register at an 8-byte-aligned offset: a well-formed + * 8-byte guest access reaches this handler. vtd_set_long() + * takes uint32_t and truncates the high half -- undefined per + * the VT-d spec but harmless here. Flag it under + * -d guest_errors so the guest-side bug surfaces. + */ + if (size !=3D 4) { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: invalid %u-byte access to 32-bit reg " + "addr=3D0x%" PRIx64 "\n", __func__, size, addr); + } vtd_set_long(s, addr, val); vtd_handle_iectl_write(s); break; =20 /* Invalidation Event Data Register, 32-bit */ case DMAR_IEDATA_REG: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); break; =20 /* Invalidation Event Address Register, 32-bit */ case DMAR_IEADDR_REG: - assert(size =3D=3D 4); + /* + * 32-bit register at an 8-byte-aligned offset: a well-formed + * 8-byte guest access reaches this handler. vtd_set_long() + * takes uint32_t and truncates the high half -- undefined per + * the VT-d spec but harmless here. Flag it under + * -d guest_errors so the guest-side bug surfaces. + */ + if (size !=3D 4) { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: invalid %u-byte access to 32-bit reg " + "addr=3D0x%" PRIx64 "\n", __func__, size, addr); + } vtd_set_long(s, addr, val); break; =20 /* Invalidation Event Upper Address Register, 32-bit */ case DMAR_IEUADDR_REG: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); break; =20 @@ -3897,7 +3914,6 @@ static void vtd_mem_write(void *opaque, hwaddr addr, break; =20 case DMAR_FRCD_REG_0_1: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); break; =20 @@ -3912,7 +3928,6 @@ static void vtd_mem_write(void *opaque, hwaddr addr, break; =20 case DMAR_FRCD_REG_0_3: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); /* May clear bit 127 (Fault), update PPF */ vtd_update_fsts_ppf(s); @@ -3927,18 +3942,27 @@ static void vtd_mem_write(void *opaque, hwaddr addr, break; =20 case DMAR_IRTA_REG_HI: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); break; =20 case DMAR_PRS_REG: - assert(size =3D=3D 4); vtd_set_long(s, addr, val); vtd_handle_prs_write(s); break; =20 case DMAR_PECTL_REG: - assert(size =3D=3D 4); + /* + * 32-bit register at an 8-byte-aligned offset: a well-formed + * 8-byte guest access reaches this handler. vtd_set_long() + * takes uint32_t and truncates the high half -- undefined per + * the VT-d spec but harmless here. Flag it under + * -d guest_errors so the guest-side bug surfaces. + */ + if (size !=3D 4) { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: invalid %u-byte access to 32-bit reg " + "addr=3D0x%" PRIx64 "\n", __func__, size, addr); + } vtd_set_long(s, addr, val); vtd_handle_pectl_write(s); break; --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464590; cv=none; d=zohomail.com; s=zohoarc; b=AERHJ2JRaa8QtHqBbsVVh+YHvuCKgDGkaHNCEauvrD9buGvH1ZyCa2IoXeD51ZpcnmgapSc7ed+ctYOVX+wxvBAOlmZPwxeV2zRiuT5bKx7coCCRMboqriXv8tcZg6fL1SpV43FacHms3VW51SlVZYTbcOVlE7O6ZcnBQPj9wa0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464590; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OVFR5ZMMA9tW5EcU89K6NhXfWseK/D10CzlcrHs1uUE=; b=EtQsQaQoMhno3zTZl9BXjV+93W69dDa5v1muAiyYiWtgdz3I3MoeDadvWmytSHQwrmEiiBILn92m/dxAG3EHT+tPpdGNU+5qlXpweD8ba16YXAhWuWnoxcOmJFmUuxCft6d1queWQbSywj+0hxQV2pwSB6jzBec98Sp7Uik0Ns4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464590713361.9284413999568; Sun, 14 Jun 2026 12:16:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDm-0001wJ-36; Sun, 14 Jun 2026 15:10:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDi-0001em-R3 for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:10:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDh-0002yf-3D for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:10:10 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-49-UpyOhAsUNISVl0V8LN_wSQ-1; Sun, 14 Jun 2026 15:10:07 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490b7959b9fso25363255e9.2 for ; Sun, 14 Jun 2026 12:10:07 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-492203d08bcsm184331835e9.13.2026.06.14.12.10.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:10:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464208; 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=OVFR5ZMMA9tW5EcU89K6NhXfWseK/D10CzlcrHs1uUE=; b=XF3cMjwvY92h3hg85p4Rzl1lkMCcg0GgM3F5kOotbUv1MwVi0VZqRPgZgdYAt4G+gqCC05 9yXcyFdul2OixmStS2fBWZnhCgpdnT3j1MOQ9otX99kQ48vTm2PriAeAOHVtCfE4j9jcGC eTNzeqCoNIcEogNUWf7JbSJKNsgiN30= X-MC-Unique: UpyOhAsUNISVl0V8LN_wSQ-1 X-Mimecast-MFC-AGG-ID: UpyOhAsUNISVl0V8LN_wSQ_1781464206 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464206; x=1782069006; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=OVFR5ZMMA9tW5EcU89K6NhXfWseK/D10CzlcrHs1uUE=; b=R26UMC29TN/RNoaGxRcDQmmF6QHsGH8wrWbrn8BKZ9p3P/pIiq+bSpsc8vA5AnKGq9 LayDQCpF5NQIe7TIjI5vAwn/Sb0bR0cVqS8v6TJIEiD1l325lnSEu23G4DpSGh+u+y5q E0OkPHp+5gvSi32TPa9rW8p+7HhOBa6utscA8293ubO+Onerja3KX5na7TRA6Yy6qPbZ gOWrUyVJqqSv7XA8qSZVOz9xj2ZUgPNkfI7iPT5N89B78LGEo8Gj6EwIA7//m5pjOoMa wGQZOeuo6mzFpuydg9y2pMs5sc10uaQ8seQhyEPM2HfX+MF+WT27HclqX8+k+4Pzl1jS TwyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464206; x=1782069006; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=OVFR5ZMMA9tW5EcU89K6NhXfWseK/D10CzlcrHs1uUE=; b=kJvzpvdvSvX2/7+gzA0yMZFF8rMOj1PWYWg8FxEnDHlyAvXRAeZGl2ZMMZfa1B3QVG KTFPI1SeSG7SbIc1VIauMseHqxv0VOSFEAvpZ8dri9ylMZ+UsXr+yFA9qHyMmV0Mn26E S4MheYIqvO1VJ+91vhzaULW9Av2YHWuQ1CgueFgjs/HyaSsCEUWjZvk/yYT1LMtlAlmR Fm+mFnhuU5j6rf98u1BM1PZqWFPGxMsBTOsfso7G6e6ctsYUh7NpXh3NmaItBMVOnoMF UbgpUF/CriOEzyaTPBkJixnIpNA1hP+xwNbLMS0g+L4ou9F/YE3IKY2BJHOgt4HspYJp g+9Q== X-Gm-Message-State: AOJu0YxgPwSQASN5EnUdJsaHFsq6VJ3CIsejo+8Lv8fHWmvrTAVhq4/V GDouh8KflVbPfv4N2gOFR5pjHNR1K+HcrxbvBmxP8gRLViW1fHchw5lpvPrGoVLDzEbVBhioWdG g8vQ1bi/KmQXwgHlUFEGnXVgcV6Xl4q9Gp8VEBHYIz4U5Vi0L4Zwj/oEYLo9rjkC4LxRKxQSpbF IFIE++STnR7fpsNcFylBz6amROdmEH2hy/oA== X-Gm-Gg: Acq92OG6+I5tPV3pO4taA2YUslgwEKgMfVydCIeW1YIRJJeVm9eGZ51xjcjgHDqWEJF n0vFq5uAg6ys7i3w34jeHwntVE+h+mgfC6gdTjYs2s/+75p6lnTQyzWmwwA7AVAnsKqSFW8Xjg0 lgJm+QoSCQYTCKYXS8FrsAq2VJPVS1OeXJpGPaDQ0AD2G+YOoUwatwvarjscM78tuFb2PGPCMFO 2ujupDOt/ehmCd5minpNrZ0VUkuGTIM0DQY+GxjhoF5H6Y6tEhJ0cwuCKEUbmzSlt7XaXEpGY9X zczwpAvpXu6cE+yWxT5R8vx1cX8qqO/2GEif+Dr49QAlzJ3IixLXL9FVlzJwTLIQUFOjk6GJP+R yH9xxfN+m5Wu76/J5I0Eg1cprMDGHPELLm/4dGnBGj5w= X-Received: by 2002:a05:600c:a310:b0:490:e19b:bd99 with SMTP id 5b1f17b1804b1-490ec5021c2mr143426275e9.30.1781464205633; Sun, 14 Jun 2026 12:10:05 -0700 (PDT) X-Received: by 2002:a05:600c:a310:b0:490:e19b:bd99 with SMTP id 5b1f17b1804b1-490ec5021c2mr143425735e9.30.1781464205042; Sun, 14 Jun 2026 12:10:05 -0700 (PDT) Date: Sun, 14 Jun 2026 15:10:02 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Junjie Cao , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Yi Liu , Zhenzhong Duan , Jason Wang , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PULL 105/106] tests/qtest: add 8-byte MMIO access sweep for intel-iommu Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464592541158500 From: Junjie Cao Sweep every 4-byte-aligned offset in the VT-d MMIO register space with 8-byte reads and writes to verify that no register handler aborts on an oversized access. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Junjie Cao Reviewed-by: Michael S. Tsirkin Reviewed-by: Yi Liu Reviewed-by: Zhenzhong Duan Signed-off-by: Michael S. Tsirkin Message-Id: <20260514180703.85686-3-junjie.cao@intel.com> --- tests/qtest/intel-iommu-test.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/qtest/intel-iommu-test.c b/tests/qtest/intel-iommu-test.c index 30ee6524df..ef6e6eb8b6 100644 --- a/tests/qtest/intel-iommu-test.c +++ b/tests/qtest/intel-iommu-test.c @@ -17,11 +17,39 @@ #define ECAP_STAGE_1_FIXED1 (VTD_ECAP_QI | VTD_ECAP_IR | VTD_ECAP_IRO |= \ VTD_ECAP_MHMV | VTD_ECAP_SMTS | VTD_ECAP_FST= S) =20 +static inline uint32_t vtd_reg_readl(QTestState *s, uint64_t offset) +{ + return qtest_readl(s, Q35_HOST_BRIDGE_IOMMU_ADDR + offset); +} + static inline uint64_t vtd_reg_readq(QTestState *s, uint64_t offset) { return qtest_readq(s, Q35_HOST_BRIDGE_IOMMU_ADDR + offset); } =20 +static inline void vtd_reg_writeq(QTestState *s, uint64_t offset, + uint64_t value) +{ + qtest_writeq(s, Q35_HOST_BRIDGE_IOMMU_ADDR + offset, value); +} + +static void test_intel_iommu_8byte_access(void) +{ + QTestState *s; + uint64_t off; + + s =3D qtest_init("-M q35 -device intel-iommu"); + + for (off =3D 0; off < DMAR_REG_SIZE; off +=3D 4) { + vtd_reg_readq(s, off); + vtd_reg_writeq(s, off, 0); + } + + g_assert_cmpuint(vtd_reg_readl(s, DMAR_VER_REG), !=3D, 0); + + qtest_quit(s); +} + static void test_intel_iommu_stage_1(void) { uint8_t init_csr[DMAR_REG_SIZE]; /* register values */ @@ -58,6 +86,8 @@ static void test_intel_iommu_stage_1(void) int main(int argc, char **argv) { g_test_init(&argc, &argv, NULL); + qtest_add_func("/q35/intel-iommu/8byte-access", + test_intel_iommu_8byte_access); qtest_add_func("/q35/intel-iommu/stage-1", test_intel_iommu_stage_1); =20 return g_test_run(); --=20 MST From nobody Sun Jul 26 13:26:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781464506; cv=none; d=zohomail.com; s=zohoarc; b=DnrU/EAz/yRFolSTSoN5kvRC/mlrYGLrcJI7yScxkz8k7sq/uqHq8nFXiOZG9IwjerRptqJuMS4nvftSJdMcAXqGDfNL0zufyu0vYiSArK8S4slHK36fCvvUgxWwn6IU49ZYDJ/Be3yyV5Q8OpUL7ZZFAx1PJ50VdVnCt0h/lEk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781464506; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SBqy2nyXhPmWPOZD69Mk+la2XQBzGaVJdV3UtpUY4nk=; b=hd33AXrUXdps7nOWJYnFqnMQ/MEZySMDpTPjzwxPjMEOMuv0zCmWTrQ/IKoQJexhET3A95sfOkM5CVYhnKFxiYyw5TmCC4qS9AV0B2M+VxyMeNZ5mvlvjvQe0eSyd4g5Wl0n5ltEhy/708Wozw29o/kGNijx1/WkzemAdxdSU7o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781464506956686.6714532585064; Sun, 14 Jun 2026 12:15:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wYqDm-000247-Q3; Sun, 14 Jun 2026 15:10:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDk-0001rE-Lz for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:10:12 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wYqDi-0002yq-TO for qemu-devel@nongnu.org; Sun, 14 Jun 2026 15:10:12 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-318-PwYYRDazN0mZPSc88KtQug-1; Sun, 14 Jun 2026 15:10:09 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490b79e6b94so22241635e9.2 for ; Sun, 14 Jun 2026 12:10:08 -0700 (PDT) Received: from redhat.com (IGLD-80-230-85-71.inter.net.il. [80.230.85.71]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4606f2c3fcfsm23360807f8f.26.2026.06.14.12.10.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2026 12:10:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781464210; 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=SBqy2nyXhPmWPOZD69Mk+la2XQBzGaVJdV3UtpUY4nk=; b=Tfeq4+Mermn1GBqzcd1NR9qmDPGevSyC5k9GmKDahVv0J/WUGsS3KRYNi7TS6xh12r5dAG luPGHGL9XoXAaVnB1qwJ9Ig/aDwSXvBnuykjG0qmCM+BuXhLL1sRt9e3sGe9N50BH37fxc 3INvkPTVFSrNgvYhrKmuBYT7b+idBaE= X-MC-Unique: PwYYRDazN0mZPSc88KtQug-1 X-Mimecast-MFC-AGG-ID: PwYYRDazN0mZPSc88KtQug_1781464208 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781464208; x=1782069008; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=SBqy2nyXhPmWPOZD69Mk+la2XQBzGaVJdV3UtpUY4nk=; b=f6z9yTQ2aLzjjM5whoH157YhomScm7MzrPAUNfBa8t7/geL9SeRbEFVM3Cak3KppOG ZGM8uKW9iMvj/0WmgR/Imy96IM6LTj7ir7qAAJ3mIm6UknQytBHBC2DYroX8wstaj+N3 ShqV8YBxeidB6G2s7Y1m6bl1RsvfBprA/0hEjz3FwEao/fIOEmpqUj9g3mX+y6eXapr4 di7LQjIoLpqyrWjZu+D2/MbjN7XKuPgh/TsbgwRMiRn0Rht/arXRf4wSuH1qf9d1AxRw aoxGqyS2tUL1uJuwnrP3bh4Q2/PLHB4Xn698JuwKUp4Q2l8/Tw3ro6eqFxNICD5x3Lef zkAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781464208; x=1782069008; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=SBqy2nyXhPmWPOZD69Mk+la2XQBzGaVJdV3UtpUY4nk=; b=sWr8QuvgBYzy9bAM8uCxhUTYZP0l0lBzTmW4GH87U3uE26AZ4/wmraSEAYSBit6UCn LxaD3EQ1f7dAODbpre0CWW9TU61hknnf8azExDb/fshm1hQzLRNqDskdCETcIwEJc1xm BuDnW+vSIX26ZNplVp/X+6ALI4JXVZy1BGevNiVWby2+BXeIhmMt14OlQoGGTxNvjCDr ZmAphDvCqvhvINpj4tl2QrxU6Bh9sDVrlB+Run1KmVKKQn4fKGlWbci+j8tSEdI+BrvX XIAEzMgCo5NlE6ZG0FlH1RWr/yNtxbWXhw3c7mgCcaKgYPnVzt6+EF0Cc4hBxHU7Mqeq y15w== X-Gm-Message-State: AOJu0Ywq4dAMX4d2jfurI73aHRT7IYwVI6KLMfIE6zQcg47YIL58RMKF qG8BP4L9q+r1vubzwNSxjU7Tyq2tD1mNLeqopGpSVZ3+1vTlylywMaEHsWFIErnGLdnMP536Cqg U+vGLWPpnkByNZNCJ9i6c1XuCHN2sQ/SB8xT/dHTPUA5u8huVz82dVlHWWQ7kSdnBIG1qCLX1nd gVigfT+EOeYzPZaJ7yuhtZe1yID9ls3g6/iQ== X-Gm-Gg: Acq92OE4OLFDirMmA8T7aaQbq3xr7/v1Z6R1d7NFn7lbGkUC+lJIvms5n7WWjhjK2/M vIyeh6O+t/uY+QYO44Ds/zFoVfwDsc6hF8NG526HrMkRO1wLt94rbCkubAW6ZuKhL64K1gTyp9U 3iqT8ftBOnuu3fR9g/JUZoK26nDHvwkhqay1sxQg65uI8vovR4Er7JoDZwwY0JLAmtKwSL9xSB5 vay9ppKPW8ixV/Jw4NH6bQnuadFii3a2CFnilCbwaB3FOtxMd8MaOlKCQEsLF/HcSooJkSUQOjF lwi1mzQu2ukwwT7h09f9+TIxapQoVdS6pD0B9lz6/2E7jTg/7z1+5t2iYJLZ9HIiZp6zHh3uoqb rZ+4PUZw/JIkCKyC8U/ti+SBrr1ll8Ynx57sBhkcj1es= X-Received: by 2002:a05:600c:4fc5:b0:490:e5c1:b8b9 with SMTP id 5b1f17b1804b1-490ec3388c8mr144461765e9.0.1781464207684; Sun, 14 Jun 2026 12:10:07 -0700 (PDT) X-Received: by 2002:a05:600c:4fc5:b0:490:e5c1:b8b9 with SMTP id 5b1f17b1804b1-490ec3388c8mr144461505e9.0.1781464207177; Sun, 14 Jun 2026 12:10:07 -0700 (PDT) Date: Sun, 14 Jun 2026 15:10:05 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Quan Sun , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Paolo Bonzini , Fam Zheng , Stefano Garzarella Subject: [PULL 106/106] hw/scsi/vhost-scsi: fix build with older kernel headers Message-ID: <31dbba011d0f3a21432d0629fae0b4885f2eed25.1781463125.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty X-Mutt-Fcc: =sent Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1781464509119158500 From: Quan Sun On build hosts with kernel headers older than 6.0, the system's does not define struct vhost_vring_worker or struct vhost_worker_state, causing compilation of vhost-scsi.c to fail: error: storage size of 'vq_worker' isn't known Fix by including standard-headers/linux/vhost_types.h before the system's , matching the existing pattern used in hw/virtio/vhost-backend.c. QEMU's bundled header provides the struct definitions, and its include guard prevents redefinition when the system header pulls in its own vhost_types.h. Signed-off-by: Quan Sun Reviewed-by: Michael S. Tsirkin Message-Id: <20260525182730.4098543-1-Quan.Sun@windriver.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Michael S. Tsirkin --- hw/scsi/vhost-scsi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c index 859888fdba..657403cad0 100644 --- a/hw/scsi/vhost-scsi.c +++ b/hw/scsi/vhost-scsi.c @@ -15,6 +15,7 @@ */ =20 #include "qemu/osdep.h" +#include "standard-headers/linux/vhost_types.h" #include #include #include "qapi/error.h" --=20 MST