From nobody Fri Nov 14 23:28:02 2025 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=1759692066; cv=none; d=zohomail.com; s=zohoarc; b=b5y3Sb9And1G4M9hxQSKjC3ld8lp0zjXNHmEujGRUX5ovysthT13P1DHjcMm3R9VgVyrzBA/FLOsJiJ702pkvGyYzYc9pqN9r1FW44pB6QBUUqClo6Iu3HX2zLqQOVmMAyiXDZ3PTrutehLIFa2+XMZXjt3VpULW4al1MGbEvpc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759692066; 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=u2jYeKWljJsB48uGOgCkPK+8PjN3Wtr/wWTKXDzpU98=; b=nItAZhpF1nqGnXG9jpzTpVCp1wd9G7QRwH78OCYN0igAzGblM3Ot9eGl/uUpLzCbLae77Sd/6GC3+3DlX6om1UM56tmlUyx73m10D0hlKt70cv4EPO53OimbVgi8Bo/2Pt0dCp2zdr9JPH8ZuuUhi0xMemLqv+hM7Y8QeCFqd9U= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1759692066260714.64695733117; Sun, 5 Oct 2025 12:21:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v5UFB-0000t5-3o; Sun, 05 Oct 2025 15:18:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v5UEl-000090-48 for qemu-devel@nongnu.org; Sun, 05 Oct 2025 15:17:39 -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 1v5UEj-0006Wt-Ak for qemu-devel@nongnu.org; Sun, 05 Oct 2025 15:17:38 -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-GsVZPDbvMeGZcOGS7Ldcpw-1; Sun, 05 Oct 2025 15:17:33 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-3f030846a41so2461426f8f.2 for ; Sun, 05 Oct 2025 12:17:33 -0700 (PDT) Received: from redhat.com ([2a0d:6fc0:1518:6900:b69a:73e1:9698:9cd3]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e675c67f7sm96952125e9.2.2025.10.05.12.17.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Oct 2025 12:17:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1759691854; 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=u2jYeKWljJsB48uGOgCkPK+8PjN3Wtr/wWTKXDzpU98=; b=Mla1nz9Htn7fF5UmdFoAEjnW7WMJSXIaGxAgI+m4TblhdC5NCgbPYDkTJDnh8WxCXpq+3n KrNvubmGBTkWV/ZBNAs8ZE00O5JfuxM2XauIFg6Qo8FXABGjUlvgP0hPo5YFII3OT8BL4R ytAqrKo65dOVbCJFK+IhB6k1Qr5S0eM= X-MC-Unique: GsVZPDbvMeGZcOGS7Ldcpw-1 X-Mimecast-MFC-AGG-ID: GsVZPDbvMeGZcOGS7Ldcpw_1759691852 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759691852; x=1760296652; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=u2jYeKWljJsB48uGOgCkPK+8PjN3Wtr/wWTKXDzpU98=; b=tN/zNiARdwB+nUfvr3HDFSJtqvSxunZq/joq2HblvAEOf7Nd6TSsuTatQwkhaElA2f GCJeQSO0f7Lz1y+teK2HGUWhEw1xiK3Z0L8e9WgcbPql6kiOZ/gdSR4cGdT0XaIN6aQs yCwm7USOEKTjIVJCK00Evp37qv7Jd+4NbmW6pHWe/XtkRc9hiWjBO0TAdKdBiDaa2EGA 9QqEVvqVhsjdzgacDiy8iXI6vgK+qdkFPpx5aoBpCbgB10TiO7uHSNt4QZ8AO5z/InkW 4N+dIqkXh1nStznvwBvon9yWH0Q/EWQHSdGEJx250VkDr7g8Xfx50GAch0sFMNwlAi1Z e3fA== X-Gm-Message-State: AOJu0YzUTrKpUIf/9VHECzk0ORuO7/A8IqMQFTCxMQt6vMqxWjwR3R4H Hy8H6yDCFnn9Q/rGuXE/rbwYgS4oItgd1Zd3HuPJBGDff0Jq1n730XHu7VAfiVRWiruYGb4SuFS XwuvlDhUmxC1OXe8xAHEUaYvAAoE3RdR37Y2KmHajYfSCU14GrPeq9mn54TckdrksQ1slRrWSLH UrJ6u9tvEB2Fps0xp4WaW31JBtEoR6JhldJw== X-Gm-Gg: ASbGncsnWFSlAt9Ghs04jiR20p436saywMdqxtjVrsbTg2UZAp8Ie2C6JE7rH8s+6RA NfY7alB35Nq4Lv1Ctki1DbBvAyg7ke6WRquFihbcAOlecKTm1BADDXc7c+kef3muOPNmM1PnxRA aRVb9w1QfP6nJiXLHmMVBqea9FJiqMMPdppZr5O+O+3EO03LclWCc+q10R19/jQp3jFg3hXvgpk tBt4Nn7DejTMEgpIdmrZvQt0yRhlS09TElOvp6qSdSEI9jV2S84kL75U56pySJ4P3Hc09wlZMcV LsCG6xI5pQhGX+KfYlmqEewM7lIfV7b40cM1MRY= X-Received: by 2002:a05:600c:354f:b0:45b:868e:7f7f with SMTP id 5b1f17b1804b1-46e711640e1mr80744855e9.17.1759691851886; Sun, 05 Oct 2025 12:17:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGuTQKS+MaJPeSfqQqdkX41c2QDNE+YwNQJeMbK9ztQlLBQiNCSMn+pImwr9wOwWYLX2aVhaA== X-Received: by 2002:a05:600c:354f:b0:45b:868e:7f7f with SMTP id 5b1f17b1804b1-46e711640e1mr80744605e9.17.1759691851398; Sun, 05 Oct 2025 12:17:31 -0700 (PDT) Date: Sun, 5 Oct 2025 15:17:28 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , CLEMENT MATHIEU--DRIF , Jason Wang , Yi Liu , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Marcel Apfelbaum Subject: [PULL 39/75] intel_iommu: Declare PRI constants and structures Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 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=lists.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.43, 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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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: 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: 1759692069515116600 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: CLEMENT MATHIEU--DRIF Signed-off-by: Clement Mathieu--Drif Reviewed-by: Michael S. Tsirkin Message-ID: <20250901111630.1018573-4-clement.mathieu--drif@eviden.com> Signed-off-by: Michael S. Tsirkin --- hw/i386/intel_iommu_internal.h | 49 ++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index 360e937989..04a8d4c769 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -190,6 +190,7 @@ #define VTD_ECAP_EIM (1ULL << 4) #define VTD_ECAP_PT (1ULL << 6) #define VTD_ECAP_SC (1ULL << 7) +#define VTD_ECAP_PRS (1ULL << 29) #define VTD_ECAP_MHMV (15ULL << 20) #define VTD_ECAP_SRS (1ULL << 31) #define VTD_ECAP_PSS (7ULL << 35) /* limit: MemTxAttrs::pid= */ @@ -376,6 +377,18 @@ union VTDInvDesc { }; typedef union VTDInvDesc VTDInvDesc; =20 +/* Page Request Descriptor */ +union VTDPRDesc { + struct { + uint64_t lo; + uint64_t hi; + }; + struct { + uint64_t val[4]; + }; +}; +typedef union VTDPRDesc VTDPRDesc; + /* Masks for struct VTDInvDesc */ #define VTD_INV_DESC_ALL_ONE -1ULL #define VTD_INV_DESC_TYPE(val) ((((val) >> 5) & 0x70ULL) | \ @@ -389,6 +402,7 @@ typedef union VTDInvDesc VTDInvDesc; #define VTD_INV_DESC_PIOTLB 0x6 /* PASID-IOTLB Invalidate Desc= */ #define VTD_INV_DESC_PC 0x7 /* PASID-cache Invalidate Desc= */ #define VTD_INV_DESC_DEV_PIOTLB 0x8 /* PASID-based-DIOTLB inv_desc= */ +#define VTD_INV_DESC_PGRESP 0x9 /* Page Group Response Desc */ #define VTD_INV_DESC_NONE 0 /* Not an Invalidate Descripto= r */ =20 /* Masks for Invalidation Wait Descriptor*/ @@ -440,6 +454,15 @@ typedef union VTDInvDesc VTDInvDesc; #define VTD_INV_DESC_PASID_DEVICE_IOTLB_RSVD_VAL0 0xfff000000000f000ULL #define VTD_INV_DESC_PASID_DEVICE_IOTLB_RSVD_VAL1 0x7feULL =20 +/* Mask for Page Group Response Descriptor */ +#define VTD_INV_DESC_PGRESP_RSVD_HI 0xfffffffffffff003ULL +#define VTD_INV_DESC_PGRESP_RSVD_LO 0xfff00000000001e0ULL +#define VTD_INV_DESC_PGRESP_PP(val) (((val) >> 4) & 0x1ULL) +#define VTD_INV_DESC_PGRESP_RC(val) (((val) >> 12) & 0xfULL) +#define VTD_INV_DESC_PGRESP_RID(val) (((val) >> 16) & 0xffffULL) +#define VTD_INV_DESC_PGRESP_PASID(val) (((val) >> 32) & 0xfffffUL= L) +#define VTD_INV_DESC_PGRESP_PRGI(val) (((val) >> 3) & 0x1ffULL) + /* Rsvd field masks for spte */ #define VTD_SPTE_SNP 0x800ULL =20 @@ -491,6 +514,31 @@ typedef union VTDInvDesc VTDInvDesc; #define VTD_INV_DESC_PIOTLB_RSVD_VAL0 0xfff000000000f1c0ULL #define VTD_INV_DESC_PIOTLB_RSVD_VAL1 0xf80ULL =20 +/* Page Request Descriptor */ +/* For the low 64-bit of 128-bit */ +#define VTD_PRD_TYPE (1ULL) +#define VTD_PRD_PP(val) (((val) & 1ULL) << 8) +#define VTD_PRD_RID(val) (((val) & 0xffffULL) << 16) +#define VTD_PRD_PASID(val) (((val) & 0xfffffULL) << 32) +#define VTD_PRD_EXR(val) (((val) & 1ULL) << 52) +#define VTD_PRD_PMR(val) (((val) & 1ULL) << 53) +/* For the high 64-bit of 128-bit */ +#define VTD_PRD_RDR(val) ((val) & 1ULL) +#define VTD_PRD_WRR(val) (((val) & 1ULL) << 1) +#define VTD_PRD_LPIG(val) (((val) & 1ULL) << 2) +#define VTD_PRD_PRGI(val) (((val) & 0x1ffULL) << 3) +#define VTD_PRD_ADDR(val) ((val) & 0xfffffffffffff000ULL) + +/* Page Request Queue constants */ +#define VTD_PQA_ENTRY_SIZE 32 /* Size of an entry in bytes */ +/* Page Request Queue masks */ +#define VTD_PQA_ADDR 0xfffffffffffff000ULL /* PR queue address = */ +#define VTD_PQA_SIZE 0x7ULL /* PR queue size */ +#define VTD_PR_STATUS_PPR 1UL /* Pending page request */ +#define VTD_PR_STATUS_PRO 2UL /* Page request overflow */ +#define VTD_PR_PECTL_IP 0x40000000UL /* PR control interrup pendin= g */ +#define VTD_PR_PECTL_IM 0x80000000UL /* PR control interrup mask */ + /* Information about page-selective IOTLB invalidate */ struct VTDIOTLBPageInvInfo { uint16_t domain_id; @@ -550,6 +598,7 @@ typedef struct VTDRootEntry VTDRootEntry; #define VTD_SM_CONTEXT_ENTRY_RID2PASID_MASK 0xfffff #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 /* PASID Table Related Definitions */ #define VTD_PASID_DIR_BASE_ADDR_MASK (~0xfffULL) --=20 MST