From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790172995; cv=none; d=zohomail.com; s=zohoarc; b=SN3tR1zD/b/MJncO/QD5VP1wwkX3of+YOxbXJ9bd8ws9inkfE537lz8RxZCNo1aUrgEjtv2NAh2i1bIVeOJBCnD0K+YSbXfs6yBW29DJ1Rc+0gTspFE1s/lPuIER6EVPCDl5L6Dy6fiWBIqxUH+IFUml0XdTV87flwSUDqXmlXs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790172995; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bAYeAYaWL8yxEIWEW4KkE9OfTrRyrN2oieXC0sNnVsc=; b=cnbigczoqP31PiGDuysQ+9i+NKn5bejXUpylI8j8KiCRHJBZJxLR3HL7eDBrzGOCMSwjXYG2ldbqWTpquBLCGN2oOzj6Y3ihnBafMd+9FruBHYzfMn3y92CQ6iZKK201gHEmG/Qc0IIXhJsICkD1FLFvgC/w+MnVEqlxREN6jBM= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790172995409701.6043682102994; Wed, 23 Sep 2026 07:16:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nkz-0007fg-89; Wed, 23 Sep 2026 10:15: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 1x9Nkw-0007eK-Hb; Wed, 23 Sep 2026 10:15:30 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nku-0005v0-JN; Wed, 23 Sep 2026 10:15:30 -0400 Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8ZZno2940636; Wed, 23 Sep 2026 14:15:24 GMT Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskdvba6d-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:24 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCSo7i008014; Wed, 23 Sep 2026 14:15:23 GMT Received: from smtprelay05.dal12v.mail.ibm.com ([172.16.1.7]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gvbe1sb1n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:23 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay05.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFMT332375442 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:22 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 329A95805C; Wed, 23 Sep 2026 14:15:22 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8342F58059; Wed, 23 Sep 2026 14:15:21 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:21 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=bAYeAYaWL8yxEIWEW 4KkE9OfTrRyrN2oieXC0sNnVsc=; b=ETFKPGBNkb+ZGBPWbadMFPR/FyFOguV2K 4ZNoaBRoH2nDBItK5p4IPV2ksyroWXzN4hUU11f+FArhIDf2jaVNHLIgTjR1aaVA 9Bx0cz5HPJCyEkxwJX0MF+EN+zmNaPgmTgAseL5R2/Lt/zaCFkQTBmJcC5v8cMX7 jTT1OV+66p7OZrj2QM7mMAdAdd49eqkuKj9HCDeG+DEU518NPD7ApKj4pRZCrC/C y2+bJy/NiJcqS+82xILxfbRgdntIZ+JI8u3zofpm+ngSO/5tBzlqZjoJBY2NujtZ K9hwrRY3NZuI27HZ05Xk4P8tO4PeWe/ap1IuDHfd4hAIZx5OTL6pQ== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 01/16] s390x/pci: implement IOMMU replay Date: Wed, 23 Sep 2026 09:15:03 -0500 Message-Id: <20260923141518.960364-2-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: MGy8GuPOzInytWn-i08VqM5VFOvt8CHB X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX2+1jKaAEyrjR VtlEoJ20p5qqQFpKcXp+ChVqlUp2ZNkRic+7sERsn/RAxsfXaOtwcsI158Rw2G+3hiI8MEGQ2Qf +YbjYSShc2iFj+LWao+iRAh/2QsIg68= X-Authority-Analysis: v=2.4 cv=FLiOVOos c=1 sm=1 tr=0 ts=6ab3defc cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=uoNow8biE-CX8mucm5YA:9 X-Proofpoint-GUID: MGy8GuPOzInytWn-i08VqM5VFOvt8CHB X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX1gdCpp2xrJgX PC4rmy6iXyZ4mxJ7+I6zVk6kiNAzR57aN1PH7h9PnjZumLK69/srRXHCGbmQ4BVYrLQD1kko47s jXKeJ+RSDuVmqeQDKQFNtyZnmke73TSUjra9vYH2Gg+Nmpel5x+StZPtjR9fNUMa9EB0DSeMOGv 44PU6sF94b7bE6vCz6LP/BgQh0ROgx37L6jgI4jf3sPP9UPp45QM7kkxCdDMUyOmXORZrRqUtXC tPJqqrkYIhBodZBjYx+2WPumza9w9Boedok7Q51omftrxKPDaPoAjM+chRTy1SsjxpJVnP2u9YW DGveFWY2bvPoASl4HAnMVLJBnjDkmG0qXMlngXwkwfXxCOruTUsCkYLX7bkqZMtVYMG2ZY/e/6j cnFc8OGFbXbDD650w6iZhTRZNpVEHvwNF425Xq5fzujiB0TO1Amf2S/spRTGG3G1HXdScQ4YscZ Gr51PzCON4586hiaTCA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 impostorscore=0 phishscore=0 spamscore=0 clxscore=1015 suspectscore=0 bulkscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.158.5; envelope-from=kshk@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790172998064158500 Content-Type: text/plain; charset="utf-8" From: Matthew Rosato There are a few scenarios where IOMMU replay can potentially be needed for zPCI device, namely VFIO device reset scenarios where the guest continues running and expects the contents of its IOMMU to be replayed upon IOAT re-registration and migration scenarios where the destination must reconstruct the IOMMU on the destination. zPCI migration is not supported yet, but the IOMMU replay function is implemented so that it can be called both from IOMMUMemoryRegionClass now and migration post_load later. Signed-off-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy Reviewed-by: Farhan Ali --- hw/s390x/s390-pci-bus.c | 68 +++++++++++++++++++++++++++++--- hw/s390x/s390-pci-inst.c | 4 +- include/hw/s390x/s390-pci-inst.h | 1 + 3 files changed, 65 insertions(+), 8 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index eff980fdfe..10b417a779 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -593,14 +593,70 @@ err: return ret; } =20 -static void s390_pci_iommu_replay(IOMMUMemoryRegion *iommu, +static void s390_pci_ioat_replay(S390PCIIOMMU *iommu) +{ + S390PCIBusDevice *pbdev =3D iommu->pbdev; + S390IOTLBEntry entry; + uint16_t error =3D 0; + uint32_t dma_avail; + hwaddr curr, end; + + curr =3D iommu->pba; + end =3D iommu->pal; + + if (iommu->dm_mr || !pbdev) { + /* If direct mapping is used, there are no guest tables to replay = */ + return; + } + + if (iommu->dma_limit) { + dma_avail =3D iommu->dma_limit->avail; + } else { + dma_avail =3D 1; + } + + while (curr < end) { + error =3D s390_guest_io_table_walk(iommu->g_iota, curr, &entry); + if (error) { + pbdev->state =3D ZPCI_FS_ERROR; + s390_pci_generate_error_event(error, pbdev->fh, pbdev->fid, cu= rr, + 0); + error_report("Failure to walk table during iommu remap"); + return; + } + + curr +=3D entry.len; + if (entry.perm !=3D IOMMU_NONE) { + while (entry.iova < curr && entry.iova < end) { + if (dma_avail > 0) { + dma_avail =3D s390_pci_update_iotlb(iommu, &entry); + } else { + /* + * There is no reliable method to request the guest to + * release mappings other than in response to a RPCIT + * instruction; generate a permanent error condition a= nd + * require the device to be completely re-initialized = from + * the guest side. + */ + pbdev->state =3D ZPCI_FS_ERROR; + s390_pci_generate_error_event(ERR_EVENT_PERMERR, pbdev= ->fh, + pbdev->fid, 0, 0); + error_report("DMA mappings exhausted: iommu remap fail= ed"); + return; + } + entry.iova +=3D TARGET_PAGE_SIZE; + entry.translated_addr +=3D TARGET_PAGE_SIZE; + } + } + } +} + +static void s390_pci_iommu_replay(IOMMUMemoryRegion *mr, IOMMUNotifier *notifier) { - /* It's impossible to plug a pci device on s390x that already has iommu - * mappings which need to be replayed, that is due to the "one iommu p= er - * zpci device" construct. But when we support migration of vfio-pci - * devices in future, we need to revisit this. - */ + S390PCIIOMMU *iommu =3D container_of(mr, S390PCIIOMMU, iommu_mr); + + s390_pci_ioat_replay(iommu); } =20 static S390PCIIOMMU *s390_pci_get_iommu(S390pciState *s, PCIBus *bus, diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index b7de23c7d2..37ca70dcf1 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -630,8 +630,8 @@ int pcistg_service_call(S390CPU *cpu, uint8_t r1, uint8= _t r2, uintptr_t ra) return 0; } =20 -static uint32_t s390_pci_update_iotlb(S390PCIIOMMU *iommu, - S390IOTLBEntry *entry) +uint32_t s390_pci_update_iotlb(S390PCIIOMMU *iommu, + S390IOTLBEntry *entry) { S390IOTLBEntry *cache =3D g_hash_table_lookup(iommu->iotlb, &entry->io= va); IOMMUTLBEvent event =3D { diff --git a/include/hw/s390x/s390-pci-inst.h b/include/hw/s390x/s390-pci-i= nst.h index 5cb8da540b..c782990e3b 100644 --- a/include/hw/s390x/s390-pci-inst.h +++ b/include/hw/s390x/s390-pci-inst.h @@ -111,6 +111,7 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uint6= 4_t fiba, uint8_t ar, int stpcifc_service_call(S390CPU *cpu, uint8_t r1, uint64_t fiba, uint8_t = ar, uintptr_t ra); void fmb_timer_free(S390PCIBusDevice *pbdev); +uint32_t s390_pci_update_iotlb(S390PCIIOMMU *iommu, S390IOTLBEntry *entry); =20 #define ZPCI_IO_BAR_MIN 0 #define ZPCI_IO_BAR_MAX 5 --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790172996; cv=none; d=zohomail.com; s=zohoarc; b=ASlnsbzyb/Q0E+INj5maxlJW9UAy6ZIBqbYlnRkU/CWcCk5C6mO39qq09E1Dntatld6oS5Usx0MhJMZ5YTnzq9q7HrlAPpLQOcUceUMAz5QEYPFNIpOO7ynzisttGJDg73algWCppYg/EjuzweIs4NR40Lzm6I7Saud4mMlQHJU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790172996; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dztpV4sHbP6jXWmT6PTrhJ71EXX91O3F0lfOYDQfLz8=; b=hBDzx49HKRm14ZoifHc+4Rv6ncb+oHe2bJq/c4h7GVloz9esUx6l0FSMTodHOwlQKPJlERzzh7eV10LDhXsm2RzJ379w58YZg5LcL9h7jgo4QADgJ4OB9Lm63IPp8n/L4vDYq7z+cHC83G09kRFSXSwu7r2u8Qoihsz347gIJ74= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790172996373545.9136526275896; Wed, 23 Sep 2026 07:16:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nkz-0007gF-FB; Wed, 23 Sep 2026 10:15: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 1x9Nkw-0007eV-Nf; Wed, 23 Sep 2026 10:15:30 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nku-0005v1-ME; Wed, 23 Sep 2026 10:15:30 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8ZNff2908705; Wed, 23 Sep 2026 14:15:25 GMT Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskg2kts2-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:24 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCFq4A2891629; Wed, 23 Sep 2026 14:15:24 GMT Received: from smtprelay06.dal12v.mail.ibm.com ([172.16.1.8]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4gu5bkhawy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:24 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay06.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFNRB11993616 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:23 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id ECF7A5805C; Wed, 23 Sep 2026 14:15:22 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 48D7B58058; Wed, 23 Sep 2026 14:15:22 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:22 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=dztpV4sHbP6jXWmT6 PTrhJ71EXX91O3F0lfOYDQfLz8=; b=WV3nmUHcvcC67jeWxRQkp/hXeVdDDxmDV bPK41GKltf+QnfUUOLAk7Q/HXFcMGYXfc9yvanErQIozDH77l9YqN1JrBOyeCA7J 3VRTjgkBihzFD9pp74OoJe6FcsuBAac9qLX0/g7bqUo9nkh5WU0/Z/qYPHAoglq5 ObEUAlaWjFFPPt04m8YL8SaXFc9V0IMBJRQnxygg0zvYkn9fK1nGK4WttwnTVzug NrRfvpW9n+W99F7xKZXbLyZOwPF4kA9Y6OSPRF/IP4vUTNlJzZRFkTyhoLtqMROL d2cir+fIqPkAq4WXyNw41RtKklzmW4X4js30QZkN+bT1I2JRBFIlg== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 02/16] s390x/pci: Create function to contain translation status check Date: Wed, 23 Sep 2026 09:15:04 -0500 Message-Id: <20260923141518.960364-3-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: MwcGE19ZsAXCfxPmFF7ALgff5Jvro9u5 X-Authority-Analysis: v=2.4 cv=I43w19gg c=1 sm=1 tr=0 ts=6ab3defc cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=aCv-BzsnQx_gTHabB28A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfXw7iW6bELodXV Nghn3LqbIght+KIvZjtUCXYerMDI1ybtbvMZpcACQHqowfsN/5YRrsWNa0gqda8n1TS5eIqOfUI XqkfuWarFM4kuX32RaAu5sGu+ojFevuGch68xOiL0F7pBlaAqv3jA8lNDukWb53bpL/NasvtBA3 ko0jgr8aaJ1Dnm14MPrPSSpzsXwcx4khraMp7Got+vvaLqM8WAEzoyaM2uqve9V/OblRPrObw3t sBZkXmx1/+yj5bRbGposMfp+eSLdngPwAwAtG+PvxJlucNHp0OnIgEAsBb8XKq1XUtPEfb5vqjH 0RXdQloInsBoQzrzeLWUCsKszYfzkrnDu5i9TNRLc+QbtdY5trEv9k6XNGQuCp53Rvxx2VEky4V DIAPokeek8T/7pkqXXIcJ1lWR9rogAcUgXCgrtA0EegN2XNnLmAXoIOdDPqTI5YRa6kbMUfNjfe 1Zx+GbwUKB/f3QnhTVw== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfXznAE9PRJzsi0 3KZKqrqxeybnYeh+AN5KyIRKfd2bS6F3TbJsK2XziBdTDI5DDhTSIdbOXnY6hsDCid6ki/igtnc XK1NMVc7fVnxAS/GMRtjrPiGJ2gCf58= X-Proofpoint-GUID: MwcGE19ZsAXCfxPmFF7ALgff5Jvro9u5 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.156.1; envelope-from=kshk@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790172998024158500 Content-Type: text/plain; charset="utf-8" Make it more clear what the bit means, and the new function will be called from yet another place in the future. Reviewed-by: Christian Borntraeger Reviewed-by: Matthew Rosato Reviewed-by: Farhan Ali Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-inst.c | 7 ++++++- include/hw/s390x/s390-pci-bus.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index 37ca70dcf1..00a847f493 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -1021,6 +1021,11 @@ int pci_dereg_irqs(S390PCIBusDevice *pbdev) return 0; } =20 +bool s390_pci_is_translation_enabled(uint64_t g_iota) +{ + return ((g_iota >> 11) & 0x1) !=3D 0; /* "T" bit */ +} + static int reg_ioat(CPUS390XState *env, S390PCIBusDevice *pbdev, ZpciFib f= ib, uintptr_t ra) { @@ -1029,7 +1034,7 @@ static int reg_ioat(CPUS390XState *env, S390PCIBusDev= ice *pbdev, ZpciFib fib, uint64_t pal =3D ldq_be_p(&fib.pal); uint64_t g_iota =3D ldq_be_p(&fib.iota); uint8_t dt =3D (g_iota >> 2) & 0x7; - uint8_t t =3D (g_iota >> 11) & 0x1; + bool t =3D s390_pci_is_translation_enabled(g_iota); =20 pba &=3D ~0xfff; pal |=3D 0xfff; diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index 9228523ce8..eb15cb8b2d 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -390,6 +390,7 @@ int pci_chsc_sei_nt2_get_event(void *res); int pci_chsc_sei_nt2_have_event(void); void s390_pci_sclp_configure(SCCB *sccb); void s390_pci_sclp_deconfigure(SCCB *sccb); +bool s390_pci_is_translation_enabled(uint64_t g_iota); void s390_pci_iommu_enable(S390PCIIOMMU *iommu); void s390_pci_iommu_direct_map_enable(S390PCIIOMMU *iommu); void s390_pci_iommu_disable(S390PCIIOMMU *iommu); --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790173007; cv=none; d=zohomail.com; s=zohoarc; b=mKSImn1XaDHrSzlXDeSMGQmvhWtea55Jk/E8Fm3DwaY+OC/Kr23eVEc2vHcJXbhtGhp7yR88ofcd8jYKpZ2B8lSl2hk4ClA8SxxCt78R2pJkpw5SVhac+sDkOzyqC+m/gmHkv2g65IU11eKarHwoWHqxmIMJSgwB3YOeLnOCXms= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790173007; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9BK6ZKqqogsiR1guHaTUccIjJ/PgjujuLN/O9iXIf90=; b=XJ8m78NsxTCqclnLczqWaPwgA1YrIQ3QTpyGctSc0ygm2492CJ7IGWOPxxy8bASahmvU/kqWgPcLbL0Js06hJZJrEy7ApDEZf/uqIkM8lywOjVjPGfDOPdYWzq3u8GeDNwdO0u2Z0dADKxZUFvU+BdtPc+7n16tqGGvep/Y6T8Y= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790173007113836.6415381581637; Wed, 23 Sep 2026 07:16:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nlg-0007oN-3x; Wed, 23 Sep 2026 10:16: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 1x9Nky-0007fb-Ic; Wed, 23 Sep 2026 10:15:32 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nkw-0005vD-5O; Wed, 23 Sep 2026 10:15:32 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8ZXmQ2907148; Wed, 23 Sep 2026 14:15:26 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskgsbrpg-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:26 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCro0a007937; Wed, 23 Sep 2026 14:15:25 GMT Received: from smtprelay06.dal12v.mail.ibm.com ([172.16.1.8]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gvbt2s7gc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:25 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay06.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFNHL11993620 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:24 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B527A5805B; Wed, 23 Sep 2026 14:15:23 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0F85958058; Wed, 23 Sep 2026 14:15:23 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:22 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=9BK6ZKqqogsiR1guH aTUccIjJ/PgjujuLN/O9iXIf90=; b=fZ/C1/fpKylvvTEJty/D0hm0crDRdPylo jtW46pohgflpxuP+4CM2uHFoiASq1I0jvqp27WiPnbb27zkmiIBIonucBY1EdeOS bQwnqHtQ9E/qWhCybvQ30t710wPmJmr7wwC8wW4s/5G4GLYcOqsrDv/jPzj8GNDT J5T53wBFvQwBxKkL/rSvvdIa2utqN7kHEA3JcKqSU89BfW2XWfbJ85zvHm6lId7b EmKlysyTmZ/Pi0zBxSSZ2UACNwpIlnOV48N4rG0/q92wDe793aDxEsZ2AhMWfvWP wLF+nElstRl4RI4ybE5Klp7Y51rI6nzDpGXAGW+v93Ao0CMgS9lrg== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 03/16] s390x/pci: Move iommu_mr from S390PCIIOMMU to S390PCIBusDevice Date: Wed, 23 Sep 2026 09:15:05 -0500 Message-Id: <20260923141518.960364-4-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=V/XoQuni c=1 sm=1 tr=0 ts=6ab3defe cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=n4sMxHAKvM-efvCv8lMA:9 X-Proofpoint-ORIG-GUID: 6Iu0hHj-ylTBiaC6MZw_GetAs-uGftLw X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfXwB2ImG5hqQ7t 4uFw3BM9+M7x/QoOvKT2+2VMam8gcx2+8r0rpsULlej2dEX7fHQ3bTnWdqfo564P4xtkzLmHn3Z 8LCeR4ych5mOagf2a29A5FJc089tuaiuQIH49U2qUf5VqN0JIsTOQF7n7QMvS7JcVNP+3cR6/sy kEyaOQd9VpVLZ2h1cL1RUHh2zjdzahaS0FFTyNuDF3soxb09Sr5FCFvqH47Iuk0cq2zfwW5zB8v pSPubc46MpeLULXQ3zqrYjDCHBzO3DsgWyhjYcLEfJem9HYZQ8mhuybGNJRCsZKsl3pUObzX0Kp irpS3Q+UmrwdhUIMJ10YgTzG1pcJAVz1Ys2e6sTWbcbnqkFp6oZM4YsIFK+bkQzT5YSAs6q5kx4 O+yhxTNt6Y4PgYVmJru930WFL1UN6NFeTWOXGyWv3wRU4vdd8KrydCloLaoDTiZ013j2ANaVR7v SfAgtvRN+cNm3wnjWLg== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX+C49th0ISL6G 2ZI4CT51Jc44e1HayJv5x8Kqx1+UqKJI66TR6FxWo08JuebMYEVvqJVkX9jpEx7+7f03nhm0f8y st1OiCDGNkymsh5070mkXSY4xvsZ4SQ= X-Proofpoint-GUID: 6Iu0hHj-ylTBiaC6MZw_GetAs-uGftLw X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.156.1; envelope-from=kshk@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790173008144158500 Content-Type: text/plain; charset="utf-8" This field is only used when S390PCIBusDevice exists, so it can be moved there to simplify S390PCIIOMMU towards a structure that contains only the IOMMU container information needed by the PCI layer for a given slot. Reviewed-by: Farhan Ali Reviewed-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-bus.c | 35 +++++++++++++++++--------------- hw/s390x/s390-pci-inst.c | 28 +++++++++++++------------ include/hw/s390x/s390-pci-bus.h | 6 +++--- include/hw/s390x/s390-pci-inst.h | 4 ++-- 4 files changed, 39 insertions(+), 34 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 10b417a779..b6a03bcc6a 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -207,7 +207,7 @@ void s390_pci_sclp_deconfigure(SCCB *sccb) pci_dereg_irqs(pbdev); } if (pbdev->iommu->enabled) { - pci_dereg_ioat(pbdev->iommu); + pci_dereg_ioat(pbdev); } pbdev->state =3D ZPCI_FS_STANDBY; rc =3D SCLP_RC_NORMAL_COMPLETION; @@ -539,7 +539,8 @@ uint16_t s390_guest_io_table_walk(uint64_t g_iota, hwad= dr addr, static IOMMUTLBEntry s390_translate_iommu(IOMMUMemoryRegion *mr, hwaddr ad= dr, IOMMUAccessFlags flag, int iommu= _idx) { - S390PCIIOMMU *iommu =3D container_of(mr, S390PCIIOMMU, iommu_mr); + S390PCIBusDevice *pbdev =3D container_of(mr, S390PCIBusDevice, iommu_m= r); + S390PCIIOMMU *iommu =3D pbdev->iommu; S390IOTLBEntry *entry; uint64_t iova =3D addr & TARGET_PAGE_MASK; uint16_t error =3D 0; @@ -593,18 +594,18 @@ err: return ret; } =20 -static void s390_pci_ioat_replay(S390PCIIOMMU *iommu) +static void s390_pci_ioat_replay(S390PCIBusDevice *pbdev) { - S390PCIBusDevice *pbdev =3D iommu->pbdev; S390IOTLBEntry entry; uint16_t error =3D 0; uint32_t dma_avail; hwaddr curr, end; + S390PCIIOMMU *iommu =3D pbdev->iommu; =20 curr =3D iommu->pba; end =3D iommu->pal; =20 - if (iommu->dm_mr || !pbdev) { + if (iommu->dm_mr) { /* If direct mapping is used, there are no guest tables to replay = */ return; } @@ -629,7 +630,7 @@ static void s390_pci_ioat_replay(S390PCIIOMMU *iommu) if (entry.perm !=3D IOMMU_NONE) { while (entry.iova < curr && entry.iova < end) { if (dma_avail > 0) { - dma_avail =3D s390_pci_update_iotlb(iommu, &entry); + dma_avail =3D s390_pci_update_iotlb(pbdev, &entry); } else { /* * There is no reliable method to request the guest to @@ -654,9 +655,9 @@ static void s390_pci_ioat_replay(S390PCIIOMMU *iommu) static void s390_pci_iommu_replay(IOMMUMemoryRegion *mr, IOMMUNotifier *notifier) { - S390PCIIOMMU *iommu =3D container_of(mr, S390PCIIOMMU, iommu_mr); + S390PCIBusDevice *pbdev =3D container_of(mr, S390PCIBusDevice, iommu_m= r); =20 - s390_pci_ioat_replay(iommu); + s390_pci_ioat_replay(pbdev); } =20 static S390PCIIOMMU *s390_pci_get_iommu(S390pciState *s, PCIBus *bus, @@ -778,19 +779,20 @@ static const MemoryRegionOps s390_msi_ctrl_ops =3D { .endianness =3D DEVICE_LITTLE_ENDIAN, }; =20 -void s390_pci_iommu_enable(S390PCIIOMMU *iommu) +void s390_pci_iommu_enable(S390PCIBusDevice *pbdev) { + S390PCIIOMMU *iommu =3D pbdev->iommu; /* * The iommu region is initialized against a 0-mapped address space, * so the smallest IOMMU region we can define runs from 0 to the end * of the PCI address space. */ char *name =3D g_strdup_printf("iommu-s390-%04x", iommu->pbdev->uid); - memory_region_init_iommu(&iommu->iommu_mr, sizeof(iommu->iommu_mr), + memory_region_init_iommu(&pbdev->iommu_mr, sizeof(pbdev->iommu_mr), TYPE_S390_IOMMU_MEMORY_REGION, OBJECT(&iommu-= >mr), name, iommu->pal + 1); iommu->enabled =3D true; - memory_region_add_subregion(&iommu->mr, 0, MEMORY_REGION(&iommu->iommu= _mr)); + memory_region_add_subregion(&iommu->mr, 0, MEMORY_REGION(&pbdev->iommu= _mr)); g_free(name); } =20 @@ -816,8 +818,9 @@ void s390_pci_iommu_direct_map_enable(S390PCIIOMMU *iom= mu) iommu->dm_mr); } =20 -void s390_pci_iommu_disable(S390PCIIOMMU *iommu) +void s390_pci_iommu_disable(S390PCIBusDevice *pbdev) { + S390PCIIOMMU *iommu =3D pbdev->iommu; iommu->enabled =3D false; g_hash_table_remove_all(iommu->iotlb); if (iommu->dm_mr) { @@ -827,8 +830,8 @@ void s390_pci_iommu_disable(S390PCIIOMMU *iommu) iommu->dm_mr =3D NULL; } else { memory_region_del_subregion(&iommu->mr, - MEMORY_REGION(&iommu->iommu_mr)); - object_unparent(OBJECT(&iommu->iommu_mr)); + MEMORY_REGION(&pbdev->iommu_mr)); + object_unparent(OBJECT(&pbdev->iommu_mr)); } } =20 @@ -1427,7 +1430,7 @@ static void s390_pcihost_reset(DeviceState *dev) pci_dereg_irqs(pbdev); } if (pbdev->iommu->enabled) { - pci_dereg_ioat(pbdev->iommu); + pci_dereg_ioat(pbdev); } pbdev->state =3D ZPCI_FS_STANDBY; s390_pci_perform_unplug(pbdev); @@ -1568,7 +1571,7 @@ static void s390_pci_device_reset(DeviceState *dev) pci_dereg_irqs(pbdev); } if (pbdev->iommu->enabled) { - pci_dereg_ioat(pbdev->iommu); + pci_dereg_ioat(pbdev); } =20 fmb_timer_free(pbdev); diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index 00a847f493..0772f04cc2 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -630,9 +630,10 @@ int pcistg_service_call(S390CPU *cpu, uint8_t r1, uint= 8_t r2, uintptr_t ra) return 0; } =20 -uint32_t s390_pci_update_iotlb(S390PCIIOMMU *iommu, +uint32_t s390_pci_update_iotlb(S390PCIBusDevice *pbdev, S390IOTLBEntry *entry) { + S390PCIIOMMU *iommu =3D pbdev->iommu; S390IOTLBEntry *cache =3D g_hash_table_lookup(iommu->iotlb, &entry->io= va); IOMMUTLBEvent event =3D { .type =3D entry->perm ? IOMMU_NOTIFIER_MAP : IOMMU_NOTIFIER_UNMAP, @@ -662,7 +663,7 @@ uint32_t s390_pci_update_iotlb(S390PCIIOMMU *iommu, =20 event.type =3D IOMMU_NOTIFIER_UNMAP; event.entry.perm =3D IOMMU_NONE; - memory_region_notify_iommu(&iommu->iommu_mr, 0, event); + memory_region_notify_iommu(&pbdev->iommu_mr, 0, event); event.type =3D IOMMU_NOTIFIER_MAP; event.entry.perm =3D entry->perm; } @@ -680,13 +681,13 @@ uint32_t s390_pci_update_iotlb(S390PCIIOMMU *iommu, * All associated iotlb entries have already been cleared, trigger the * unmaps. */ - memory_region_notify_iommu(&iommu->iommu_mr, 0, event); + memory_region_notify_iommu(&pbdev->iommu_mr, 0, event); =20 out: return iommu->dma_limit ? iommu->dma_limit->avail : 1; } =20 -static void s390_pci_batch_unmap(S390PCIIOMMU *iommu, uint64_t iova, +static void s390_pci_batch_unmap(S390PCIBusDevice *pbdev, uint64_t iova, uint64_t len) { uint64_t remain =3D len, start =3D iova, end =3D start + len - 1, mask= , size; @@ -704,7 +705,7 @@ static void s390_pci_batch_unmap(S390PCIIOMMU *iommu, u= int64_t iova, size =3D mask + 1; event.entry.iova =3D start; event.entry.addr_mask =3D mask; - memory_region_notify_iommu(&iommu->iommu_mr, 0, event); + memory_region_notify_iommu(&pbdev->iommu_mr, 0, event); start +=3D size; remain -=3D size; } @@ -801,14 +802,14 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint= 8_t r2, uintptr_t ra) coalesce +=3D entry.len; } else if (coalesce > 0) { /* Unleash the coalesced unmap before processing a new map */ - s390_pci_batch_unmap(iommu, iova, coalesce); + s390_pci_batch_unmap(pbdev, iova, coalesce); coalesce =3D 0; } =20 start +=3D entry.len; while (entry.iova < start && entry.iova < end) { if (dma_avail > 0 || entry.perm =3D=3D IOMMU_NONE) { - dma_avail =3D s390_pci_update_iotlb(iommu, &entry); + dma_avail =3D s390_pci_update_iotlb(pbdev, &entry); entry.iova +=3D TARGET_PAGE_SIZE; entry.translated_addr +=3D TARGET_PAGE_SIZE; } else { @@ -824,7 +825,7 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_= t r2, uintptr_t ra) } if (coalesce) { /* Unleash the coalesced unmap before finishing rpcit */ - s390_pci_batch_unmap(iommu, iova, coalesce); + s390_pci_batch_unmap(pbdev, iova, coalesce); coalesce =3D 0; } if (again && dma_avail > 0) @@ -1059,7 +1060,7 @@ static int reg_ioat(CPUS390XState *env, S390PCIBusDev= ice *pbdev, ZpciFib fib, iommu->g_iota =3D g_iota; =20 if (t) { - s390_pci_iommu_enable(iommu); + s390_pci_iommu_enable(pbdev); } else { s390_pci_iommu_direct_map_enable(iommu); } @@ -1067,9 +1068,10 @@ static int reg_ioat(CPUS390XState *env, S390PCIBusDe= vice *pbdev, ZpciFib fib, return 0; } =20 -void pci_dereg_ioat(S390PCIIOMMU *iommu) +void pci_dereg_ioat(S390PCIBusDevice *pbdev) { - s390_pci_iommu_disable(iommu); + S390PCIIOMMU *iommu =3D pbdev->iommu; + s390_pci_iommu_disable(pbdev); iommu->pba =3D 0; iommu->pal =3D 0; iommu->g_iota =3D 0; @@ -1293,7 +1295,7 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uin= t64_t fiba, uint8_t ar, cc =3D ZPCI_PCI_LS_ERR; s390_set_status_code(env, r1, ZPCI_MOD_ST_SEQUENCE); } else { - pci_dereg_ioat(pbdev->iommu); + pci_dereg_ioat(pbdev); } break; case ZPCI_MOD_FC_REREG_IOAT: @@ -1304,7 +1306,7 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uin= t64_t fiba, uint8_t ar, cc =3D ZPCI_PCI_LS_ERR; s390_set_status_code(env, r1, ZPCI_MOD_ST_SEQUENCE); } else { - pci_dereg_ioat(pbdev->iommu); + pci_dereg_ioat(pbdev); if (reg_ioat(env, pbdev, fib, ra)) { cc =3D ZPCI_PCI_LS_ERR; s390_set_status_code(env, r1, ZPCI_MOD_ST_INSUF_RES); diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index eb15cb8b2d..a71f562dfc 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -276,7 +276,6 @@ struct S390PCIIOMMU { S390PCIBusDevice *pbdev; AddressSpace as; MemoryRegion mr; - IOMMUMemoryRegion iommu_mr; MemoryRegion *dm_mr; bool enabled; uint64_t g_iota; @@ -354,6 +353,7 @@ struct S390PCIBusDevice { S390MsixInfo msix; AdapterRoutes routes; S390PCIIOMMU *iommu; + IOMMUMemoryRegion iommu_mr; MemoryRegion msix_notify_mr; IndAddr *summary_ind; IndAddr *indicator; @@ -391,9 +391,9 @@ int pci_chsc_sei_nt2_have_event(void); void s390_pci_sclp_configure(SCCB *sccb); void s390_pci_sclp_deconfigure(SCCB *sccb); bool s390_pci_is_translation_enabled(uint64_t g_iota); -void s390_pci_iommu_enable(S390PCIIOMMU *iommu); +void s390_pci_iommu_enable(S390PCIBusDevice *pbdev); void s390_pci_iommu_direct_map_enable(S390PCIIOMMU *iommu); -void s390_pci_iommu_disable(S390PCIIOMMU *iommu); +void s390_pci_iommu_disable(S390PCIBusDevice *pbdev); void s390_pci_generate_error_event(uint16_t pec, uint32_t fh, uint32_t fid, uint64_t faddr, uint32_t e); uint16_t s390_guest_io_table_walk(uint64_t g_iota, hwaddr addr, diff --git a/include/hw/s390x/s390-pci-inst.h b/include/hw/s390x/s390-pci-i= nst.h index c782990e3b..38268c256e 100644 --- a/include/hw/s390x/s390-pci-inst.h +++ b/include/hw/s390x/s390-pci-inst.h @@ -99,7 +99,7 @@ typedef struct ZpciFib { } QEMU_PACKED ZpciFib; =20 int pci_dereg_irqs(S390PCIBusDevice *pbdev); -void pci_dereg_ioat(S390PCIIOMMU *iommu); +void pci_dereg_ioat(S390PCIBusDevice *pbdev); int clp_service_call(S390CPU *cpu, uint8_t r2, uintptr_t ra); int pcilg_service_call(S390CPU *cpu, uint8_t r1, uint8_t r2, uintptr_t ra); int pcistg_service_call(S390CPU *cpu, uint8_t r1, uint8_t r2, uintptr_t ra= ); @@ -111,7 +111,7 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uint6= 4_t fiba, uint8_t ar, int stpcifc_service_call(S390CPU *cpu, uint8_t r1, uint64_t fiba, uint8_t = ar, uintptr_t ra); void fmb_timer_free(S390PCIBusDevice *pbdev); -uint32_t s390_pci_update_iotlb(S390PCIIOMMU *iommu, S390IOTLBEntry *entry); +uint32_t s390_pci_update_iotlb(S390PCIBusDevice *pbdev, S390IOTLBEntry *en= try); =20 #define ZPCI_IO_BAR_MIN 0 #define ZPCI_IO_BAR_MAX 5 --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790173000; cv=none; d=zohomail.com; s=zohoarc; b=NJueJRwZC/ohvmUfFD6Re+gT8pLkdHHonbrMEsBW7t+uP7nrKUF+7cQKlUgm2pahi8bXvh86vpFa1LHW6V4jKWl6dRW30pOi9FdjQa9wx24trA56Frnq9MNGZjDt4G4zBvqKZ6lW9TbZlND3pXrQyPO8QMy1HgV/1r8YudvQHCw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790173000; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=370oi7erpzbA5pBwtzgl9MF+hjpJBIEDmH4vLh3CXKY=; b=JkRUI4mKCMnmXzu2t+jXwAMpjcqjM3WbLumHXEMzG2j09t11umvcvR8lSCRkI4JcXncOIfTGcXDS5MWRqqVYWFNJT2tWSIHHbi5gvhPUxFUcioyVKQrwSXzdQtAEKR6dI4/QN8Sd2VDQ92xDc80LRacuAFTur/xunNsEL8OzbMY= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790172999864852.1359976626787; Wed, 23 Sep 2026 07:16:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nl0-0007hD-Ts; Wed, 23 Sep 2026 10:15:35 -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 1x9Nky-0007fQ-3y; Wed, 23 Sep 2026 10:15:32 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nkw-0005vF-5k; Wed, 23 Sep 2026 10:15:31 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8a4gU2908100; Wed, 23 Sep 2026 14:15:26 GMT Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskgsbrpk-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:26 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCMxFC008049; Wed, 23 Sep 2026 14:15:25 GMT Received: from smtprelay07.dal12v.mail.ibm.com ([172.16.1.9]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4gvb6qhbvj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:25 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay07.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFOrg23462604 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:24 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7CCD85805B; Wed, 23 Sep 2026 14:15:24 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CBA8D58058; Wed, 23 Sep 2026 14:15:23 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:23 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=370oi7erpzbA5pBwt zgl9MF+hjpJBIEDmH4vLh3CXKY=; b=cfrgkdLFmDGoGUBfmfH93GOzveymGxLrT R52OVZjHFc/ggHaSBoiAM2PCP/QDrH7P+ZNofUUYsA6hLt3h5yQIoRfhHJ739bPv EQBlwinpw1bxs5/skY1/isrNF2qE/2R8ICGmw8SlG9MRuBuo/itqIEp3BRqZlRJr sSIK4Ls+w2rT1uHlA73E9la2/d81wfkFn8XK0K2QK7YaW/qBYv7dFkmauEWEqoIZ MhQZCU/o0NaAtijvHrlqkmvVjobaYPh+f4UvCGe1TYGCDgMBHxi8uvmXEvn8CfBE hnurOhKUa7oA4IsRI06kEGpmp2qxMXT7sRv1TpCSSINoAp1isWN9w== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 04/16] s390x/pci: Move dm_mr from S390PCIIOMMU to S390PCIBusDevice Date: Wed, 23 Sep 2026 09:15:06 -0500 Message-Id: <20260923141518.960364-5-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=V/XoQuni c=1 sm=1 tr=0 ts=6ab3defe cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=jDWEBKAz6ZLYevfwb9sA:9 X-Proofpoint-ORIG-GUID: vb9mb8wRLV86VXgHYc7xUN0TMn-f9eAB X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX2NppeVQoy+CW yun0xd+bfKcDZOUVeOiO+MCpW9f5OGfzH26QFv6S2HEtExc5hFe4V7uGBP2wMqccoD4UG06mWDw ilFfrXL9SYEc/Lyem65fzkzEL2JCHdeGWG3Fo8XTzG9gsanUXWwzOLmsmOKcLWnQw5e5EHRe/Bk VXcWy/qyrUFUOlvtpCi3dwR6/geESHzODA4BkkUKOBLMDuo11oh29A3o303LPXHQPvowjwOwSBp w/PRK5Z28t9O9LD3dMPqQPPqEXMzuY0Y7pQ9LsvR3IAfZiUfohD4d1pwxQg3RikG1cAke7IgGWY OnR7/CCAjnC8viAEYk3/VovInjErPFB45P4eVfcjP+yTz7jbGkFVPsI4cdtzrCMd93c8l1srfpn eXnjgtMQZ+y8lids1SMy3+TJcmPeHqQwJLpRVwUhE0fHpL7NsMHF6LDErPsVVgcMLHAtNwcJXst AdIXK3jzmHP5b8kLEHA== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX8PTMT6eQ+PuJ zr13CRfna21L36T/SyLRyyVX8EbUrXiug4tWmRdyg191EmYh/y0nEhlJgAfX4nUxWXMkpwt+kBL oIp4/NdjLybs0HbQeJsknZcvjobqTq4= X-Proofpoint-GUID: vb9mb8wRLV86VXgHYc7xUN0TMn-f9eAB X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.156.1; envelope-from=kshk@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790173001892158500 Content-Type: text/plain; charset="utf-8" This field is only used when S390PCIBusDevice exists, so it can be moved there to simplify to simplify S390PCIIOMMU towards a structure that contains only the IOMMU container information needed by the PCI layer for a given slot. Reviewed-by: Farhan Ali Reviewed-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-bus.c | 21 +++++++++++---------- hw/s390x/s390-pci-inst.c | 2 +- include/hw/s390x/s390-pci-bus.h | 4 ++-- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index b6a03bcc6a..e1b47f3914 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -605,7 +605,7 @@ static void s390_pci_ioat_replay(S390PCIBusDevice *pbde= v) curr =3D iommu->pba; end =3D iommu->pal; =20 - if (iommu->dm_mr) { + if (pbdev->dm_mr) { /* If direct mapping is used, there are no guest tables to replay = */ return; } @@ -796,8 +796,9 @@ void s390_pci_iommu_enable(S390PCIBusDevice *pbdev) g_free(name); } =20 -void s390_pci_iommu_direct_map_enable(S390PCIIOMMU *iommu) +void s390_pci_iommu_direct_map_enable(S390PCIBusDevice *pbdev) { + S390PCIIOMMU *iommu =3D pbdev->iommu; MachineState *ms =3D MACHINE(qdev_get_machine()); S390CcwMachineState *s390ms =3D S390_CCW_MACHINE(ms); =20 @@ -809,13 +810,13 @@ void s390_pci_iommu_direct_map_enable(S390PCIIOMMU *i= ommu) g_autofree char *name =3D g_strdup_printf("iommu-dm-s390-%04x", iommu->pbdev->uid); =20 - iommu->dm_mr =3D g_malloc0(sizeof(*iommu->dm_mr)); - memory_region_init_alias(iommu->dm_mr, OBJECT(&iommu->mr), name, + pbdev->dm_mr =3D g_malloc0(sizeof(*pbdev->dm_mr)); + memory_region_init_alias(pbdev->dm_mr, OBJECT(&iommu->mr), name, get_system_memory(), 0, s390_get_memory_limit(s390ms)); iommu->enabled =3D true; memory_region_add_subregion(&iommu->mr, iommu->pbdev->zpci_fn.sdma, - iommu->dm_mr); + pbdev->dm_mr); } =20 void s390_pci_iommu_disable(S390PCIBusDevice *pbdev) @@ -823,11 +824,11 @@ void s390_pci_iommu_disable(S390PCIBusDevice *pbdev) S390PCIIOMMU *iommu =3D pbdev->iommu; iommu->enabled =3D false; g_hash_table_remove_all(iommu->iotlb); - if (iommu->dm_mr) { - memory_region_del_subregion(&iommu->mr, iommu->dm_mr); - object_unparent(OBJECT(iommu->dm_mr)); - g_free(iommu->dm_mr); - iommu->dm_mr =3D NULL; + if (pbdev->dm_mr) { + memory_region_del_subregion(&iommu->mr, pbdev->dm_mr); + object_unparent(OBJECT(pbdev->dm_mr)); + g_free(pbdev->dm_mr); + pbdev->dm_mr =3D NULL; } else { memory_region_del_subregion(&iommu->mr, MEMORY_REGION(&pbdev->iommu_mr)); diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index 0772f04cc2..582e93a741 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -1062,7 +1062,7 @@ static int reg_ioat(CPUS390XState *env, S390PCIBusDev= ice *pbdev, ZpciFib fib, if (t) { s390_pci_iommu_enable(pbdev); } else { - s390_pci_iommu_direct_map_enable(iommu); + s390_pci_iommu_direct_map_enable(pbdev); } =20 return 0; diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index a71f562dfc..f310672584 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -276,7 +276,6 @@ struct S390PCIIOMMU { S390PCIBusDevice *pbdev; AddressSpace as; MemoryRegion mr; - MemoryRegion *dm_mr; bool enabled; uint64_t g_iota; uint64_t pba; @@ -354,6 +353,7 @@ struct S390PCIBusDevice { AdapterRoutes routes; S390PCIIOMMU *iommu; IOMMUMemoryRegion iommu_mr; + MemoryRegion *dm_mr; MemoryRegion msix_notify_mr; IndAddr *summary_ind; IndAddr *indicator; @@ -392,7 +392,7 @@ void s390_pci_sclp_configure(SCCB *sccb); void s390_pci_sclp_deconfigure(SCCB *sccb); bool s390_pci_is_translation_enabled(uint64_t g_iota); void s390_pci_iommu_enable(S390PCIBusDevice *pbdev); -void s390_pci_iommu_direct_map_enable(S390PCIIOMMU *iommu); +void s390_pci_iommu_direct_map_enable(S390PCIBusDevice *pbdev); void s390_pci_iommu_disable(S390PCIBusDevice *pbdev); void s390_pci_generate_error_event(uint16_t pec, uint32_t fh, uint32_t fid, uint64_t faddr, uint32_t e); --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790173026; cv=none; d=zohomail.com; s=zohoarc; b=LdL3qp0v8smTYCwgE5Me9HGPpE5pi7K09stgOom0zGrqWZOseq2l/jprNZ3jTYXB3LkTm4W/dvejOI3c416XXFv1TErTk/0+vzJFJunvH+gblZUZpE9lVBwKw9nvgAz7HiZDPnRdFZjQu4R4vdyWCCmvQ1/kZH2K2Nz7tz3MxUY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790173026; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Qsv22XMFOF5yhoG8ReOO9gO1TPfKC3by84RZhK3tG88=; b=Eaw8Z8kzVsbJR9lDl0fVh7AANI2j+tvt/g1a2edARqdVE2vnAirSzHBdyPniyNJoKHLFkSyQdKDhwDdiHd9SIsaSCYEneS9anvB+kIS3yc6r3XgO8RZf9bev/DqmIgFEAHhnSl0RHsuiJCeo/2TlaGCgycEQhYZ6Wn3OQTSjYMA= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790173026770110.0221992256703; Wed, 23 Sep 2026 07:17:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9NlE-0007ks-VI; Wed, 23 Sep 2026 10:15: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 1x9Nky-0007fd-NR; Wed, 23 Sep 2026 10:15:32 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nkw-0005vS-SW; Wed, 23 Sep 2026 10:15:32 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8aExj2908183; Wed, 23 Sep 2026 14:15:27 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskgsbrpm-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:27 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCpc6K007699; Wed, 23 Sep 2026 14:15:26 GMT Received: from smtprelay01.wdc07v.mail.ibm.com ([172.16.1.68]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gvbt2s7gh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:26 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay01.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFP4g56295840 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:25 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4408B58059; Wed, 23 Sep 2026 14:15:25 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 938EB58058; Wed, 23 Sep 2026 14:15:24 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:24 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=Qsv22XMFOF5yhoG8R eOO9gO1TPfKC3by84RZhK3tG88=; b=UXSHTG5mirjrfaqrPVb45+Dak9wEYLtbu mWzepYewfD7ocR72M+KK9L8zFjZwYov0kFZln3AzPbqGlJS4V79OZ3TlX6Sz0JP9 U5RSeegv+FmwLMRt13TL+4V64BPVonKY1iACDeoNFYbtI8uPOFwG4zaAECEejKEu aHQqUxFoZyz/uNqbvqA9CJbiekeYmBtRS6DVah9T8HssyFYNFrMSMRexfEHpeLVh UJB91CNS8JYWOOM9YEMbAiQZ0/jl+ww8lWvX7utHBj8YYJiIOjvvHV18ZTfJToYZ Rfb1/osBAdVZ26j0fX3dwEed5Zoh7RquqX8CIC6nSQa39Dv6n3/eg== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 05/16] s390x/pci: Move iotlb from S390PCIIOMMU to S390PCIBusDevice Date: Wed, 23 Sep 2026 09:15:07 -0500 Message-Id: <20260923141518.960364-6-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=V/XoQuni c=1 sm=1 tr=0 ts=6ab3deff cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=aa0cxrGLn-JNQd9UaooA:9 X-Proofpoint-ORIG-GUID: bvm3NPdi73kHoPNgk8fLuWiFriYunMvT X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfXznstAyH0f7aQ MeBSs6uUjCq9NO3BKrBhUnFMPiwCZ0pEfuw8h8TB4T59Zuya8XNFXZBp6bdoHtMvb+fWcd/ca6r BjDPNUoLMBhR8jLEAvRyHmFGNUosp/VnGbNw64A/c6f2j32MN2UqEZ6D6sG0d2A1bHHP2YiudTL MNNH0Z3zsa4QudOfhpka1OjD01Eeer9fQ8cZlJgPfEzd5ttoWnag2PL/Y9oz5kRktCSVRqaUXmd H1CVnTLNcqGC27lmJgvuFlYVwXPO8zIHiw2JA5eNYuHljvS0NqudhLItFHiQd0PeFSY8l3GYA56 jKZFkyJYiWgZA+ZpKNR19qnlWOjnEKB/zQpxf2Vw0BWPSPVBcJAGa4PtyCfKLYyE8rUji9UFUqD v5BD0sGF2BE8FWutCRBzpVholBOxzfIBO992txP8c1Qbhu/okmdJ+WJTR9j0Fv6PxMTkuNnTzjM suAa8YJS21G/NFC5fqQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX1ayLvUkn2y7D 4z9ohCh3qzIwSpPm0/pAVzIWlv2pLQ5USFFwT+iBUKH7ClGtNDJHbieG5A5o9rVwPVfw7VioUOC ctOuxZteG5HjrxQ2wRr5lLS8Sd7cu+o= X-Proofpoint-GUID: bvm3NPdi73kHoPNgk8fLuWiFriYunMvT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.156.1; envelope-from=kshk@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790173028077158500 Content-Type: text/plain; charset="utf-8" This field is only used when S390PCIBusDevice exists, so it can be moved there to simplify S390PCIIOMMU towards a structure that contains only the IOMMU container information needed by the PCI layer for a given slot. Reviewed-by: Farhan Ali Reviewed-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-bus.c | 10 +++++----- hw/s390x/s390-pci-inst.c | 6 +++--- include/hw/s390x/s390-pci-bus.h | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index e1b47f3914..7c1aa260be 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -570,7 +570,7 @@ static IOMMUTLBEntry s390_translate_iommu(IOMMUMemoryRe= gion *mr, hwaddr addr, goto err; } =20 - entry =3D g_hash_table_lookup(iommu->iotlb, &iova); + entry =3D g_hash_table_lookup(pbdev->iotlb, &iova); if (entry) { ret.iova =3D entry->iova; ret.translated_addr =3D entry->translated_addr; @@ -687,8 +687,6 @@ static S390PCIIOMMU *s390_pci_get_iommu(S390pciState *s= , PCIBus *bus, PCI_FUNC(devfn)); memory_region_init(&iommu->mr, OBJECT(iommu), mr_name, UINT64_MAX); address_space_init(&iommu->as, &iommu->mr, as_name); - iommu->iotlb =3D g_hash_table_new_full(g_int64_hash, g_int64_equal, - NULL, g_free); table->iommu[PCI_SLOT(devfn)] =3D iommu; =20 g_free(mr_name); @@ -823,7 +821,7 @@ void s390_pci_iommu_disable(S390PCIBusDevice *pbdev) { S390PCIIOMMU *iommu =3D pbdev->iommu; iommu->enabled =3D false; - g_hash_table_remove_all(iommu->iotlb); + g_hash_table_remove_all(pbdev->iotlb); if (pbdev->dm_mr) { memory_region_del_subregion(&iommu->mr, pbdev->dm_mr); object_unparent(OBJECT(pbdev->dm_mr)); @@ -847,7 +845,6 @@ static void s390_pci_iommu_free(S390pciState *s, PCIBus= *bus, int32_t devfn) } =20 table->iommu[PCI_SLOT(devfn)] =3D NULL; - g_hash_table_destroy(iommu->iotlb); /* * An attached PCI device may have memory listeners, eg. VFIO PCI. * The associated subregion will already have been unmapped in @@ -1269,6 +1266,8 @@ static void s390_pcihost_plug(HotplugHandler *hotplug= _dev, DeviceState *dev, /* the allocated idx is actually getting used */ s->next_idx =3D (pbdev->idx + 1) & FH_MASK_INDEX; pbdev->fh =3D pbdev->idx; + pbdev->iotlb =3D g_hash_table_new_full(g_int64_hash, g_int64_equal, + NULL, g_free); QTAILQ_INSERT_TAIL(&s->zpci_devs, pbdev, link); g_hash_table_insert(s->zpci_table, &pbdev->idx, pbdev); } else { @@ -1311,6 +1310,7 @@ static void s390_pcihost_unplug(HotplugHandler *hotpl= ug_dev, DeviceState *dev, if (pbdev->iommu && pbdev->iommu->dma_limit) { s390_pci_end_dma_count(s, pbdev->iommu->dma_limit); } + g_hash_table_destroy(pbdev->iotlb); qdev_unrealize(dev); } } diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index 582e93a741..f648afb401 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -634,7 +634,7 @@ uint32_t s390_pci_update_iotlb(S390PCIBusDevice *pbdev, S390IOTLBEntry *entry) { S390PCIIOMMU *iommu =3D pbdev->iommu; - S390IOTLBEntry *cache =3D g_hash_table_lookup(iommu->iotlb, &entry->io= va); + S390IOTLBEntry *cache =3D g_hash_table_lookup(pbdev->iotlb, &entry->io= va); IOMMUTLBEvent event =3D { .type =3D entry->perm ? IOMMU_NOTIFIER_MAP : IOMMU_NOTIFIER_UNMAP, .entry =3D { @@ -650,7 +650,7 @@ uint32_t s390_pci_update_iotlb(S390PCIBusDevice *pbdev, if (!cache) { goto out; } - g_hash_table_remove(iommu->iotlb, &entry->iova); + g_hash_table_remove(pbdev->iotlb, &entry->iova); inc_dma_avail(iommu); /* Don't notify the iommu yet, maybe we can bundle contiguous unma= ps */ goto out; @@ -673,7 +673,7 @@ uint32_t s390_pci_update_iotlb(S390PCIBusDevice *pbdev, cache->translated_addr =3D entry->translated_addr; cache->len =3D TARGET_PAGE_SIZE; cache->perm =3D entry->perm; - g_hash_table_replace(iommu->iotlb, &cache->iova, cache); + g_hash_table_replace(pbdev->iotlb, &cache->iova, cache); dec_dma_avail(iommu); } =20 diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index f310672584..d9bafd6859 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -281,7 +281,6 @@ struct S390PCIIOMMU { uint64_t pba; uint64_t pal; uint64_t max_dma_limit; - GHashTable *iotlb; S390PCIDMACount *dma_limit; }; =20 @@ -354,6 +353,7 @@ struct S390PCIBusDevice { S390PCIIOMMU *iommu; IOMMUMemoryRegion iommu_mr; MemoryRegion *dm_mr; + GHashTable *iotlb; MemoryRegion msix_notify_mr; IndAddr *summary_ind; IndAddr *indicator; --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790172995; cv=none; d=zohomail.com; s=zohoarc; b=VCtnNao9m4dsWL2jieqG1QYni8etSrb/gh6+AJfgr2w10vXCQ4mWrzIStR6E2pUAWHsOzmqlba3w8zYrzpw1P+ksATJRBbZ/TQXzLT1UpUkfGNv0xtvBsEAQ6SXhwCN4RhKdkVVUQ2lGbG10q/bMqx9iAeX5xW8T7X0iHpBnQgM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790172995; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xMXCHhZYF61f2K1Aclw98qMc5Gqt6dZMA58X/9fVyUo=; b=aIFd1DV9h7q1Z/o5QNvwnEvqjlg7mBzYPueik7tf8g4Gj7mtPidsMKnMhBedGji3kkVMEdsHN4OPnwqf6IUalFRzTXN0XbIkJ8l699Gu1xjYPgDFGyoaArFewy+/ca15MZuVQH8wAxSjv7bB2x9UlVLInVIoreL7Tf+HKtDhyuU= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790172995442305.94085684195625; Wed, 23 Sep 2026 07:16:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9NlG-0007lM-IW; Wed, 23 Sep 2026 10:15: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 1x9Nkz-0007gI-HQ; Wed, 23 Sep 2026 10:15:33 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nkx-0005vn-ER; Wed, 23 Sep 2026 10:15:33 -0400 Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8ZbaO1729597; Wed, 23 Sep 2026 14:15:27 GMT Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskgqk80j-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:27 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCPFDf007841; Wed, 23 Sep 2026 14:15:27 GMT Received: from smtprelay02.wdc07v.mail.ibm.com ([172.16.1.69]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gvbe1sb25-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:27 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay02.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFQgj32309798 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:26 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 090975805C; Wed, 23 Sep 2026 14:15:26 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5A60658058; Wed, 23 Sep 2026 14:15:25 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:25 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=xMXCHhZYF61f2K1Ac lw98qMc5Gqt6dZMA58X/9fVyUo=; b=Uab41aD7LeVrHt7FD8FvcOvDBrX0+YeSB oVTSIiJ/Ou9IgLwYy6aaok8tFtSRBrt89yCgyYJXUC3gghfR+WWc4TH9Ng+ssOdX WEGhNgUmShHrcGJPvNCV30fxqhd5bir75XtfQ+8CeM2W3uGRF9pcu7mRjcmLiGLm RmtLuwk18RoL9bp6E2C+CdxUCt/OraF03CDp3HMwRJS7b5RcGDbY90OJeGoAUgXV peZHpLny+eHwUGZsKUs62zilrHGDhR0M1Bcx98FKraYauO6Apy28Xz9aszrZUP3w EIYi0QkQoqm/1IE6DtBxaFVpqKzV5/pWo4bolaTFz+4q6uDrr+Ung== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 06/16] s390x/pci: Remove a ptr to S390PCIBusDevice from S390PCIIOMMU Date: Wed, 23 Sep 2026 09:15:08 -0500 Message-Id: <20260923141518.960364-7-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=G+OJgNk5 c=1 sm=1 tr=0 ts=6ab3deff cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=yINFAIt2aqTEABBYJGoA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX/5qEIiSd+ZCG vn0Drkr4hNZeaIIM7nImtH3wT9JwGsoY+aqQdxcF1J53Q8jbqTbTd0Dp+RAuFoxFhxbar9cP0bS +wZVxDGNDWhrTIOLFr91iPsVxdNJICodlkVI5QY2XGtPWz0PAgcXU/CD4Rz4n4sh8Wl925Rx2Z9 UA20NM3UtPcnI+rIBfiNamnDZPpl99QZbPC14C4pMf1fsG0HNH1J8E2zCZZWbhhbFKQ5qCQp8p9 vR566IukhzWhqXFl2LZT7un+W7KDCTnElcPXECZn7NIzQLceuwZgRN5660PWopWNdgioH3yu+Ul LkWhcsNemA6NtehnlsYlv4ty/IIiAL5D+OBpewd2IChfEfS8wHPISS5Aj8J8rMLCEMvPCy7msyN BpiUIE2sRnZlw4hXk+dP2x/NM/KtBT5bhpl6haGqThnTFnGdslPENRp0WEDHDRn8XPIJyZEfA3U Gp7yoSOkfbyzianCTPQ== X-Proofpoint-ORIG-GUID: 2W1eMU3xfiPc0JUy3tKZpID90YBXWhb1 X-Proofpoint-GUID: 2W1eMU3xfiPc0JUy3tKZpID90YBXWhb1 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX3ecZ2VxMWzFm lmz0E2LHiQDwtuxY+kF80w1gEuroJ9/4CCSQRvyYcBtannSMUlMx7KSRbcwIP7Qy8oRTPkm6ZJc 2CSnuuY0DG+PmFlAkWZ8Dw0K+9YLgoI= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 phishscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 priorityscore=1501 clxscore=1015 spamscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.158.5; envelope-from=kshk@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790172998052158500 Content-Type: text/plain; charset="utf-8" This pointer is no longer used, after fields were moved from S390PCIIOMMU to S390PCIBusDevice. Reviewed-by: Farhan Ali Reviewed-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-bus.c | 15 +++++++-------- include/hw/s390x/s390-pci-bus.h | 1 - 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 7c1aa260be..10e0c3324a 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -552,7 +552,7 @@ static IOMMUTLBEntry s390_translate_iommu(IOMMUMemoryRe= gion *mr, hwaddr addr, .perm =3D IOMMU_NONE, }; =20 - switch (iommu->pbdev->state) { + switch (pbdev->state) { case ZPCI_FS_ENABLED: case ZPCI_FS_BLOCKED: if (!iommu->enabled) { @@ -587,9 +587,9 @@ static IOMMUTLBEntry s390_translate_iommu(IOMMUMemoryRe= gion *mr, hwaddr addr, } err: if (error) { - iommu->pbdev->state =3D ZPCI_FS_ERROR; - s390_pci_generate_error_event(error, iommu->pbdev->fh, - iommu->pbdev->fid, addr, 0); + pbdev->state =3D ZPCI_FS_ERROR; + s390_pci_generate_error_event(error, pbdev->fh, + pbdev->fid, addr, 0); } return ret; } @@ -785,7 +785,7 @@ void s390_pci_iommu_enable(S390PCIBusDevice *pbdev) * so the smallest IOMMU region we can define runs from 0 to the end * of the PCI address space. */ - char *name =3D g_strdup_printf("iommu-s390-%04x", iommu->pbdev->uid); + char *name =3D g_strdup_printf("iommu-s390-%04x", pbdev->uid); memory_region_init_iommu(&pbdev->iommu_mr, sizeof(pbdev->iommu_mr), TYPE_S390_IOMMU_MEMORY_REGION, OBJECT(&iommu-= >mr), name, iommu->pal + 1); @@ -806,14 +806,14 @@ void s390_pci_iommu_direct_map_enable(S390PCIBusDevic= e *pbdev) * IOVA X + SDMA. VFIO will handle pinning via its memory listener. */ g_autofree char *name =3D g_strdup_printf("iommu-dm-s390-%04x", - iommu->pbdev->uid); + pbdev->uid); =20 pbdev->dm_mr =3D g_malloc0(sizeof(*pbdev->dm_mr)); memory_region_init_alias(pbdev->dm_mr, OBJECT(&iommu->mr), name, get_system_memory(), 0, s390_get_memory_limit(s390ms)); iommu->enabled =3D true; - memory_region_add_subregion(&iommu->mr, iommu->pbdev->zpci_fn.sdma, + memory_region_add_subregion(&iommu->mr, pbdev->zpci_fn.sdma, pbdev->dm_mr); } =20 @@ -1205,7 +1205,6 @@ static void s390_pcihost_plug(HotplugHandler *hotplug= _dev, DeviceState *dev, =20 pbdev->pdev =3D pdev; pbdev->iommu =3D s390_pci_get_iommu(s, pci_get_bus(pdev), pdev->de= vfn); - pbdev->iommu->pbdev =3D pbdev; pbdev->state =3D ZPCI_FS_DISABLED; set_pbdev_info(pbdev); =20 diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index d9bafd6859..fcaaf19512 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -273,7 +273,6 @@ typedef struct S390PCIDMACount { =20 struct S390PCIIOMMU { Object parent_obj; - S390PCIBusDevice *pbdev; AddressSpace as; MemoryRegion mr; bool enabled; --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790173094; cv=none; d=zohomail.com; s=zohoarc; b=dxcWjkeYF8K2tmMx6+9reKcgbD/Ak8jIGYwtFfBqzA2ropKcSR0n69XBZViBw/2YS9S+joHMloUNs3L9FI77YY3TtniMRxGGL65Ty+psu9/8+xpbjg749qb45mkHHVkNz9sA2YKBBMBHAtKHyO1uWWRRRtUArxNJrb+PPQ7Fsqo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790173094; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lK6qda7IZST5uk5vDl89q1Rcj9/sZ2jxX93G5MnVN1c=; b=XxWpJ2ePlkrALHqGpH2CnhMih/7XCXBI5m5rkk8TNGqereX/nMvnqxhluwTbzdNiFKgQRlXo2zcRdGz2z10rsFlKBGUxXh9sSNxmi8tt9hGnRppPoU/CJp4G4LneyK1eFPLcFWtKa0hLaYaedBIjgmMFX1DYR2VUUYiub5zgx1Y= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790173094748565.433197636529; Wed, 23 Sep 2026 07:18:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nlp-0007yh-Gj; Wed, 23 Sep 2026 10:16: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 1x9Nl0-0007hG-Oa; Wed, 23 Sep 2026 10:15:35 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nky-0005w1-PN; Wed, 23 Sep 2026 10:15:34 -0400 Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8ZgrG1030882; Wed, 23 Sep 2026 14:15:29 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gske1urxp-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:28 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCp1Po007936; Wed, 23 Sep 2026 14:15:28 GMT Received: from smtprelay02.wdc07v.mail.ibm.com ([172.16.1.69]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gvbt2s7gq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:28 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay02.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFQ3629491762 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:26 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C3B0F5805C; Wed, 23 Sep 2026 14:15:26 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1F4E058058; Wed, 23 Sep 2026 14:15:26 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:26 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=lK6qda7IZST5uk5vD l89q1Rcj9/sZ2jxX93G5MnVN1c=; b=P6sN+9G7gAR1BdEOU0Bps5Tx0KnVgHJVn XwsUQAD3xhza+PqRdDR1MgLTl+yAaaT3UuNIkTshfOgguGrXE7FOON94crnuAP+E gatXf7r2Y8oRtUIy0SELUOZjKXenCkxEww2Yc6ZZao8ZyR36XR3lGcTvrNVjs0tw v3EQvkgMVZx/5fTOKwMyCih9g0VPm97gnWYrX84M51nnARevGNB3dJ2OZcicXizD tywlVhrq9F84TjdOLu3FlcMCcSGZDMMNHVjg9ufkQv3Jku+pTDrLWfkGSIxjJRI7 xMWXBZrLQYJ6wNNST4LxB527mxoxR5paqq1rO/elslHNkyrR3ynZw== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 07/16] s390x/pci: Move/rename enabled from S390PCIIOMMU to S390PCIBusDevice Date: Wed, 23 Sep 2026 09:15:09 -0500 Message-Id: <20260923141518.960364-8-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: rUY4UqWo3oG3_M3sKqyDKC7KVV-aWYI_ X-Authority-Analysis: v=2.4 cv=EOCTQFZC c=1 sm=1 tr=0 ts=6ab3df01 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=i0DCopz73FH-yKe2uwYA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfXyXAnwE1oFtZz GBKA9pkH6l9CVY1vYd3n+lYoi2O7gwrWv1wFUO4nYfoMVUe5O1/l72f0I5YvxMks9STQEMB6Jqh WBvQr5KC1PSSqP4pJ7RF+YZkAJ//eto= X-Proofpoint-GUID: rUY4UqWo3oG3_M3sKqyDKC7KVV-aWYI_ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX8qakKpb//j/a 7vn7mWmtmEE4B4VG0pNJyZJKmR24AVRuJAAZMYovnwArn9N+lR3TD2zFsfFH+oRsmjBhEY7fSDV f7/vzfYrNDMfreM2w3beYOxorq0skywONL7SkAaJZUksz8AfAS43HKRAUG9/UrOBoQcQCviDqJH hEPCZJwBLQiULyaEgUJJ6OFrPpJmpFYVT3gljTg/FLfoxMhXyEJrdDD93kNecPSVAPmoA1k+9Gv x6UOVrAT5UB07rjb2Nl0Yav6MZCaE+nQcX1J2GVL5lbN0GaTasfCtxK3skJV+AjxN/KP7ilJQmv 2k/ZRcrmAkLmGlafpMQ6J83o3L2v92evWaOBlXwcseKe5PjzKOW8thy42qryp5H9AfPADU75/q0 d4bChJfue3BoFGG/8FJ2dxjvoJ5EnCPgQurWZvsvRi1yhXu+D3A33FCFcU5JgPIoyrEd9w5cIbV BRrPHnANogxxhzMSttw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 phishscore=0 priorityscore=1501 clxscore=1015 spamscore=0 adultscore=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.156.1; envelope-from=kshk@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790173096557158500 Content-Type: text/plain; charset="utf-8" This field is only used when S390PCIBusDevice exists, so it can be moved there to simplify S390PCIIOMMU towards a structure that contains only the I= OMMU container information needed by the PCI layer for a given slot. This also allows to save/restore this field during migration. Reviewed-by: Farhan Ali Reviewed-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-bus.c | 14 +++++++------- hw/s390x/s390-pci-inst.c | 8 ++++---- include/hw/s390x/s390-pci-bus.h | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 10e0c3324a..ee05447084 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -206,7 +206,7 @@ void s390_pci_sclp_deconfigure(SCCB *sccb) } else if (pbdev->summary_ind) { pci_dereg_irqs(pbdev); } - if (pbdev->iommu->enabled) { + if (pbdev->iommu_enabled) { pci_dereg_ioat(pbdev); } pbdev->state =3D ZPCI_FS_STANDBY; @@ -555,7 +555,7 @@ static IOMMUTLBEntry s390_translate_iommu(IOMMUMemoryRe= gion *mr, hwaddr addr, switch (pbdev->state) { case ZPCI_FS_ENABLED: case ZPCI_FS_BLOCKED: - if (!iommu->enabled) { + if (!pbdev->iommu_enabled) { return ret; } break; @@ -789,7 +789,7 @@ void s390_pci_iommu_enable(S390PCIBusDevice *pbdev) memory_region_init_iommu(&pbdev->iommu_mr, sizeof(pbdev->iommu_mr), TYPE_S390_IOMMU_MEMORY_REGION, OBJECT(&iommu-= >mr), name, iommu->pal + 1); - iommu->enabled =3D true; + pbdev->iommu_enabled =3D true; memory_region_add_subregion(&iommu->mr, 0, MEMORY_REGION(&pbdev->iommu= _mr)); g_free(name); } @@ -812,7 +812,7 @@ void s390_pci_iommu_direct_map_enable(S390PCIBusDevice = *pbdev) memory_region_init_alias(pbdev->dm_mr, OBJECT(&iommu->mr), name, get_system_memory(), 0, s390_get_memory_limit(s390ms)); - iommu->enabled =3D true; + pbdev->iommu_enabled =3D true; memory_region_add_subregion(&iommu->mr, pbdev->zpci_fn.sdma, pbdev->dm_mr); } @@ -820,7 +820,7 @@ void s390_pci_iommu_direct_map_enable(S390PCIBusDevice = *pbdev) void s390_pci_iommu_disable(S390PCIBusDevice *pbdev) { S390PCIIOMMU *iommu =3D pbdev->iommu; - iommu->enabled =3D false; + pbdev->iommu_enabled =3D false; g_hash_table_remove_all(pbdev->iotlb); if (pbdev->dm_mr) { memory_region_del_subregion(&iommu->mr, pbdev->dm_mr); @@ -1429,7 +1429,7 @@ static void s390_pcihost_reset(DeviceState *dev) } else if (pbdev->summary_ind) { pci_dereg_irqs(pbdev); } - if (pbdev->iommu->enabled) { + if (pbdev->iommu_enabled) { pci_dereg_ioat(pbdev); } pbdev->state =3D ZPCI_FS_STANDBY; @@ -1570,7 +1570,7 @@ static void s390_pci_device_reset(DeviceState *dev) } else if (pbdev->summary_ind) { pci_dereg_irqs(pbdev); } - if (pbdev->iommu->enabled) { + if (pbdev->iommu_enabled) { pci_dereg_ioat(pbdev); } =20 diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index f648afb401..7081be4619 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -1279,7 +1279,7 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uin= t64_t fiba, uint8_t ar, if (dmaas !=3D 0) { cc =3D ZPCI_PCI_LS_ERR; s390_set_status_code(env, r1, ZPCI_MOD_ST_DMAAS_INVAL); - } else if (pbdev->iommu->enabled) { + } else if (pbdev->iommu_enabled) { cc =3D ZPCI_PCI_LS_ERR; s390_set_status_code(env, r1, ZPCI_MOD_ST_SEQUENCE); } else if (reg_ioat(env, pbdev, fib, ra)) { @@ -1291,7 +1291,7 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uin= t64_t fiba, uint8_t ar, if (dmaas !=3D 0) { cc =3D ZPCI_PCI_LS_ERR; s390_set_status_code(env, r1, ZPCI_MOD_ST_DMAAS_INVAL); - } else if (!pbdev->iommu->enabled) { + } else if (!pbdev->iommu_enabled) { cc =3D ZPCI_PCI_LS_ERR; s390_set_status_code(env, r1, ZPCI_MOD_ST_SEQUENCE); } else { @@ -1302,7 +1302,7 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uin= t64_t fiba, uint8_t ar, if (dmaas !=3D 0) { cc =3D ZPCI_PCI_LS_ERR; s390_set_status_code(env, r1, ZPCI_MOD_ST_DMAAS_INVAL); - } else if (!pbdev->iommu->enabled) { + } else if (!pbdev->iommu_enabled) { cc =3D ZPCI_PCI_LS_ERR; s390_set_status_code(env, r1, ZPCI_MOD_ST_SEQUENCE); } else { @@ -1432,7 +1432,7 @@ int stpcifc_service_call(S390CPU *cpu, uint8_t r1, ui= nt64_t fiba, uint8_t ar, /* fallthrough */ case ZPCI_FS_ENABLED: fib.fc |=3D 0x80; - if (pbdev->iommu->enabled) { + if (pbdev->iommu_enabled) { fib.fc |=3D 0x10; } if (!(fh & FH_MASK_ENABLE)) { diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index fcaaf19512..24f6e60786 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -275,7 +275,6 @@ struct S390PCIIOMMU { Object parent_obj; AddressSpace as; MemoryRegion mr; - bool enabled; uint64_t g_iota; uint64_t pba; uint64_t pal; @@ -350,6 +349,7 @@ struct S390PCIBusDevice { S390MsixInfo msix; AdapterRoutes routes; S390PCIIOMMU *iommu; + bool iommu_enabled; IOMMUMemoryRegion iommu_mr; MemoryRegion *dm_mr; GHashTable *iotlb; --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790173100; cv=none; d=zohomail.com; s=zohoarc; b=Bz2CDci03ReU23yRyWmJWc2uAOWfY6YFDrrPIp7qT4eVfuROSpHPWYhrUQVWkAcf5Qh66HmvhVGrLIG54V+3b6Ma5ZDH7Id1OhChj5MxTdHHeGme+cPlZrfSt4IIdhJA5zYM3E0Y92cPE1274kJhLe4ddBqsE73r36vM3vzuJa8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790173100; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pltYl5lwWV7V/bm42aAWVKyb7sYVZXFX0MS9y26rjI0=; b=SBHl7JjQJFNSNbpbsdYbne2Ozv1KWKvBwIwvcBKpy9afd8NBg1NEQLEm8vemifGZk8d3StR6AW8kKEQNjTPfKNjpguJjJvMALMdtkJmFkerbukwytiwlX7tkK4NVoijOQBP6eWXvnTt4DOCIEq6Yi6DR+6L1/9cDA0ZtlJTB+78= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790173100042239.6110081416083; Wed, 23 Sep 2026 07:18:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nlq-00081Z-Cr; Wed, 23 Sep 2026 10:16:26 -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 1x9Nl6-0007iX-QT; Wed, 23 Sep 2026 10:15:44 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nl2-0005wq-Eh; Wed, 23 Sep 2026 10:15:38 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8ZXjf2908837; Wed, 23 Sep 2026 14:15:31 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskg2ktsk-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:30 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCpcLM005735; Wed, 23 Sep 2026 14:15:29 GMT Received: from smtprelay03.wdc07v.mail.ibm.com ([172.16.1.70]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gvbu8s78g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:29 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay03.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEEilq7996074 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:14:44 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8AB2D5805B; Wed, 23 Sep 2026 14:15:27 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DA89B58058; Wed, 23 Sep 2026 14:15:26 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:26 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=pltYl5lwWV7V/bm42 aAWVKyb7sYVZXFX0MS9y26rjI0=; b=OjMZxm4L3h565kxJ6TTKU2DYb36ZnPvoY /aFmuGDEr/pYgvihtIgwklkb8YpiPJGajxYwtJr3o/fgfOotqWftpJrs5gDhY4hK BXQLpGHreA1zWDzHFnjdhYyN37IGvGVj2eewOnmyspbOwFimOxkdjjeSr+Gvk411 kG+31gvvInaGDj0AqFjZokaIgoAz+LM04QQD/Yx44FmbuG1YvGpj1u4jMcfmLPeD lUrUT++zJ33LZ80c5UH59x6jI9TO/CveVSdl3i+cSSeLoavq/tHhU41QY9uKg1WO 7KHW5jchyBj+85GEKJmZhfN5XIyMY7t5VGqsch2uf6uIibKUibj2A== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 08/16] s390x/pci: Move dma_limit from S390PCIIOMMU to S390PCIBusDevice Date: Wed, 23 Sep 2026 09:15:10 -0500 Message-Id: <20260923141518.960364-9-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: FRr4sIWGvvbFH4-BfFWad5ogTkmwePbk X-Authority-Analysis: v=2.4 cv=I43w19gg c=1 sm=1 tr=0 ts=6ab3df02 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=WVqpMwhuJbQVQ5-U79kA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX2rl3xjk2jh1T LjtBlVZdGsg9n0ESXeX/SBjNjgckKE17SqV1v21qwR+ol0/py1tqSNqdZfVrVeogtrBH870Plqu fbjvXpaHCSr5q39rCXtOlJDG/XucmGf2IrBiOgqA3S09NYRQnaw0DPPiFMa5QCSk8c3HGqfmalB 6pM7gv4u4lT2i/7VyWo1dYnxa3iuuOzPYY47rZA3WFWtb6LCJ6XtgQie49pPeXeWED53b4+eZrN dc6h2Hiyg3TtC+HyeM661n4QqxVr2yZxHAP20DKvjnWNVnkTeTHRFrc4TXYRVxbx0IXEaUmho1b UOwh26UG8ktT4mAdvuiU7Pgeo+4mOXe9zU9uzuQTgs4yy55/QR42JnMGFSsx/6mSHQQ9jBHzTjb WRQLELlwbkDazV7Q0ywBOYTW1sqtnoXCBK7VcRIZfkJkKlQQZOnzLFoSImESUXuZ5j39RaNWx+T D9FX5A0pDcwWUxQ4WPQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX2JC+Nv/RNZr7 mvadCArkIXl0OCbvtyW8TfNadVkOlLsV0RnWqKz9Ds8fEh7/NpZRRBr2TIbNQjLMZMHN3Pve7fk umiMKQU05SvRJOXF4n7T7qYLeeTywZg= X-Proofpoint-GUID: FRr4sIWGvvbFH4-BfFWad5ogTkmwePbk X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.156.1; envelope-from=kshk@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790173100538158500 Content-Type: text/plain; charset="utf-8" This field is only used when S390PCIBusDevice exists, so it can be moved there to simplify S390PCIIOMMU towards a structure that contains only the IOMMU container information needed by the PCI layer for a given slot. Reviewed-by: Farhan Ali Reviewed-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-bus.c | 10 +++++----- hw/s390x/s390-pci-inst.c | 23 +++++++++++------------ include/hw/s390x/s390-pci-bus.h | 2 +- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index ee05447084..ad4f527430 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -610,8 +610,8 @@ static void s390_pci_ioat_replay(S390PCIBusDevice *pbde= v) return; } =20 - if (iommu->dma_limit) { - dma_avail =3D iommu->dma_limit->avail; + if (pbdev->dma_limit) { + dma_avail =3D pbdev->dma_limit->avail; } else { dma_avail =3D 1; } @@ -1228,7 +1228,7 @@ static void s390_pcihost_plug(HotplugHandler *hotplug= _dev, DeviceState *dev, pbdev->forwarding_assist =3D false; } } - pbdev->iommu->dma_limit =3D s390_pci_start_dma_count(s, pbdev); + pbdev->dma_limit =3D s390_pci_start_dma_count(s, pbdev); /* Fill in CLP information passed via the vfio region */ s390_pci_get_clp_info(pbdev); if (!pbdev->interp) { @@ -1306,8 +1306,8 @@ static void s390_pcihost_unplug(HotplugHandler *hotpl= ug_dev, DeviceState *dev, pbdev->fid =3D 0; QTAILQ_REMOVE(&s->zpci_devs, pbdev, link); g_hash_table_remove(s->zpci_table, &pbdev->idx); - if (pbdev->iommu && pbdev->iommu->dma_limit) { - s390_pci_end_dma_count(s, pbdev->iommu->dma_limit); + if (pbdev->dma_limit) { + s390_pci_end_dma_count(s, pbdev->dma_limit); } g_hash_table_destroy(pbdev->iotlb); qdev_unrealize(dev); diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index 7081be4619..dc52da41b5 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -28,17 +28,17 @@ =20 #include "trace.h" =20 -static inline void inc_dma_avail(S390PCIIOMMU *iommu) +static inline void inc_dma_avail(S390PCIBusDevice *pbdev) { - if (iommu->dma_limit) { - iommu->dma_limit->avail++; + if (pbdev->dma_limit) { + pbdev->dma_limit->avail++; } } =20 -static inline void dec_dma_avail(S390PCIIOMMU *iommu) +static inline void dec_dma_avail(S390PCIBusDevice *pbdev) { - if (iommu->dma_limit) { - iommu->dma_limit->avail--; + if (pbdev->dma_limit) { + pbdev->dma_limit->avail--; } } =20 @@ -633,7 +633,6 @@ int pcistg_service_call(S390CPU *cpu, uint8_t r1, uint8= _t r2, uintptr_t ra) uint32_t s390_pci_update_iotlb(S390PCIBusDevice *pbdev, S390IOTLBEntry *entry) { - S390PCIIOMMU *iommu =3D pbdev->iommu; S390IOTLBEntry *cache =3D g_hash_table_lookup(pbdev->iotlb, &entry->io= va); IOMMUTLBEvent event =3D { .type =3D entry->perm ? IOMMU_NOTIFIER_MAP : IOMMU_NOTIFIER_UNMAP, @@ -651,7 +650,7 @@ uint32_t s390_pci_update_iotlb(S390PCIBusDevice *pbdev, goto out; } g_hash_table_remove(pbdev->iotlb, &entry->iova); - inc_dma_avail(iommu); + inc_dma_avail(pbdev); /* Don't notify the iommu yet, maybe we can bundle contiguous unma= ps */ goto out; } else { @@ -674,7 +673,7 @@ uint32_t s390_pci_update_iotlb(S390PCIBusDevice *pbdev, cache->len =3D TARGET_PAGE_SIZE; cache->perm =3D entry->perm; g_hash_table_replace(pbdev->iotlb, &cache->iova, cache); - dec_dma_avail(iommu); + dec_dma_avail(pbdev); } =20 /* @@ -684,7 +683,7 @@ uint32_t s390_pci_update_iotlb(S390PCIBusDevice *pbdev, memory_region_notify_iommu(&pbdev->iommu_mr, 0, event); =20 out: - return iommu->dma_limit ? iommu->dma_limit->avail : 1; + return pbdev->dma_limit ? pbdev->dma_limit->avail : 1; } =20 static void s390_pci_batch_unmap(S390PCIBusDevice *pbdev, uint64_t iova, @@ -761,8 +760,8 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_= t r2, uintptr_t ra) } =20 iommu =3D pbdev->iommu; - if (iommu->dma_limit) { - dma_avail =3D iommu->dma_limit->avail; + if (pbdev->dma_limit) { + dma_avail =3D pbdev->dma_limit->avail; } else { dma_avail =3D 1; } diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index 24f6e60786..126a50c98b 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -279,7 +279,6 @@ struct S390PCIIOMMU { uint64_t pba; uint64_t pal; uint64_t max_dma_limit; - S390PCIDMACount *dma_limit; }; =20 typedef struct S390PCIIOMMUTable { @@ -353,6 +352,7 @@ struct S390PCIBusDevice { IOMMUMemoryRegion iommu_mr; MemoryRegion *dm_mr; GHashTable *iotlb; + S390PCIDMACount *dma_limit; MemoryRegion msix_notify_mr; IndAddr *summary_ind; IndAddr *indicator; --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790172996; cv=none; d=zohomail.com; s=zohoarc; b=Q1BQnV4LRASjXimxq+l10+k2yZZZrgk/pqntiSqQLi2IR0Cq7xipwsKvlKVswulDGnwlgbiaHkF9ymqu2ObxJVx/DxkAGDOuuyKdqOO52UMcIVKHZOpfp9Wzeb+g+DGsyEiPmX5E86eyqbHK3HouAL6V69gm9YIA3E6ua2X1yxc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790172996; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Mkz/yDDmhQPp29Ok9p/9oSsXjFEyn86PqLErF/k+nuQ=; b=WHbXVHrpxcl3dZMPcm14RlW3CvXSTlElRAT58miyZv5MsMrGrYyNyUYG4Tk55lT/go2RPDJExn9Q9VMBH0qfzQIxT5OJfRtZnAqFNAj5Py62iZcZAY8+iG2x66zQoy97pYWuXZcWO6PDwOClUSBf1RR/xFB+YzBg3MQMaBh3kDE= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17901729964001004.3473181562438; Wed, 23 Sep 2026 07:16:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9NlG-0007lJ-HC; Wed, 23 Sep 2026 10:15: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 1x9Nl3-0007hc-Oj; Wed, 23 Sep 2026 10:15:43 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nl1-0005wo-TT; Wed, 23 Sep 2026 10:15:37 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8aMdV2910406; Wed, 23 Sep 2026 14:15:32 GMT Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskg2ktsr-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:31 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCPFDg007841; Wed, 23 Sep 2026 14:15:31 GMT Received: from smtprelay03.dal12v.mail.ibm.com ([172.16.1.5]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gvbe1sb2c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:31 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay03.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFTVG21430858 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:29 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 782BD58059; Wed, 23 Sep 2026 14:15:29 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A17A95805E; Wed, 23 Sep 2026 14:15:27 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:27 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=Mkz/yDDmhQPp29Ok9 p/9oSsXjFEyn86PqLErF/k+nuQ=; b=GT6jxM/eNSITRVcHzZ4snZLguD9DWi9wN 8zpPjMI2TSEDkH5e8KS1hI3sUsAIJZZHOnHjtWrEqU41fy654HZYBThC82Laytj+ vA2Ep7jN1NKSQ8X0GE1fZ5Rf5VkrSdV9joQHXb8oMEXs5JztvDcY44kgcy4ULHWG aCPHcck54UqHTWEH4dq7aek55v51/mjXGTOT2aVMkJuPmKqDaXucPnSMvupRfywc L9L8d+tV5biQEEZ22H8ynE2snp7lBtdPszfdNX9CDhIFJINLwcqOybwY3ItPxHMI jz+xyDr1pQT4OipV/9aa8yzpkMlFQosCRT/5H9A2xmtkpr1Nxgatg== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 09/16] s390x/pci: Move g_iota from S390PCIIOMMU to S390PCIBusDevice Date: Wed, 23 Sep 2026 09:15:11 -0500 Message-Id: <20260923141518.960364-10-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: NSgpYDzULOXhuoAe7EHyd-8MF9LuYZe- X-Authority-Analysis: v=2.4 cv=I43w19gg c=1 sm=1 tr=0 ts=6ab3df04 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=eCYPC3wdSG4xViznilUA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX9X7U8KJhDQT4 OmgeYM84u2LH10MlMDdoD2fEabLDX2L0f48ACs0jN0DDYyFxfegipX7dKmPgA1EXvtnbaw6YKAR RBC0x4ZKTzTeHx8whXZRYP+sP5D3NMJZIcX/Act0MUY1AOkx6SwbX6iYLHeGJ+pOn7tjHFYHoow W/BcJXHxKi4Rz8hdvBdu/U4JavEeAonNrSEC+xVOsoUSKCKhsnIAkjVdL7SmmWLEIkFVzHHZd+v tNiEorQkXO9lTLvHbhP901fh7sKWRpVA2KA2qt3uuzgs0KOTY63XJ8hljvZIV5jno5KbbrpMTIZ zY0I9oZ7eheA89srEP667aA0itMZG13X7YJKOvHJXD81M6qveNAX/Mt5QEK0DDs1aLeWt5S6dDU 227dnIZqGlmWFccZ0BtJ/LlqSeV+hi/OFzuTFcPUXNHoAfoDa6MlygFzl2MWSBprIwNnl+mm8kp 97mqaifPvqINEDUW2bQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX+qYhPjXj+BCi zIPPxR4S2MXqweryJCRKRi33F3NwFIpFFDuTk7aw5GBvtcnehLot+9DxAFf1UORC06QehN+5XEZ HmZqQ4jznyVQad8Jguy98uP2SPcqUrg= X-Proofpoint-GUID: NSgpYDzULOXhuoAe7EHyd-8MF9LuYZe- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.156.1; envelope-from=kshk@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790172998053158500 Content-Type: text/plain; charset="utf-8" This field is only used when S390PCIBusDevice exists, so it can be moved there to simplify S390PCIIOMMU towards a structure that contains only the IOMMU container information needed by the PCI layer for a given slot. This also allows to save/restore this field during migration. Reviewed-by: Farhan Ali Reviewed-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-bus.c | 2 +- hw/s390x/s390-pci-inst.c | 10 +++++----- include/hw/s390x/s390-pci-bus.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index ad4f527430..ec54eb64a6 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -617,7 +617,7 @@ static void s390_pci_ioat_replay(S390PCIBusDevice *pbde= v) } =20 while (curr < end) { - error =3D s390_guest_io_table_walk(iommu->g_iota, curr, &entry); + error =3D s390_guest_io_table_walk(pbdev->g_iota, curr, &entry); if (error) { pbdev->state =3D ZPCI_FS_ERROR; s390_pci_generate_error_event(error, pbdev->fh, pbdev->fid, cu= rr, diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index dc52da41b5..22b477ab38 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -765,7 +765,7 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_= t r2, uintptr_t ra) } else { dma_avail =3D 1; } - if (!iommu->g_iota) { + if (!pbdev->g_iota) { error =3D ERR_EVENT_INVALAS; goto err; } @@ -785,7 +785,7 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_= t r2, uintptr_t ra) start =3D sstart; again =3D false; while (start < end) { - error =3D s390_guest_io_table_walk(iommu->g_iota, start, &entry); + error =3D s390_guest_io_table_walk(pbdev->g_iota, start, &entry); if (error) { break; } @@ -1056,7 +1056,7 @@ static int reg_ioat(CPUS390XState *env, S390PCIBusDev= ice *pbdev, ZpciFib fib, =20 iommu->pba =3D pba; iommu->pal =3D pal; - iommu->g_iota =3D g_iota; + pbdev->g_iota =3D g_iota; =20 if (t) { s390_pci_iommu_enable(pbdev); @@ -1073,7 +1073,7 @@ void pci_dereg_ioat(S390PCIBusDevice *pbdev) s390_pci_iommu_disable(pbdev); iommu->pba =3D 0; iommu->pal =3D 0; - iommu->g_iota =3D 0; + pbdev->g_iota =3D 0; } =20 void fmb_timer_free(S390PCIBusDevice *pbdev) @@ -1446,7 +1446,7 @@ int stpcifc_service_call(S390CPU *cpu, uint8_t r1, ui= nt64_t fiba, uint8_t ar, =20 stq_be_p(&fib.pba, pbdev->iommu->pba); stq_be_p(&fib.pal, pbdev->iommu->pal); - stq_be_p(&fib.iota, pbdev->iommu->g_iota); + stq_be_p(&fib.iota, pbdev->g_iota); stq_be_p(&fib.aibv, pbdev->routes.adapter.ind_addr); stq_be_p(&fib.aisb, pbdev->routes.adapter.summary_addr); stq_be_p(&fib.fmb_addr, pbdev->fmb_addr); diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index 126a50c98b..a7d1f1ade2 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -275,7 +275,6 @@ struct S390PCIIOMMU { Object parent_obj; AddressSpace as; MemoryRegion mr; - uint64_t g_iota; uint64_t pba; uint64_t pal; uint64_t max_dma_limit; @@ -352,6 +351,7 @@ struct S390PCIBusDevice { IOMMUMemoryRegion iommu_mr; MemoryRegion *dm_mr; GHashTable *iotlb; + uint64_t g_iota; S390PCIDMACount *dma_limit; MemoryRegion msix_notify_mr; IndAddr *summary_ind; --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790173094; cv=none; d=zohomail.com; s=zohoarc; b=XRqlfh8/FgRVwOYrqGGaNRJYlABBlX3undO5L7x1DcwWwhrYDiCfdzeJGx7Xs/MUxHO5E5fFRPEKUKlhweXFwWClsJ0laEwdXMt/LmWyhNOd2pcOje8UfaIA1fZtUxcm/SDN4EmZOvkkR2APJs9bSRaPqNdKvLHyvIQs89+q410= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790173094; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5msSFBZFSz3QiEZHqquXq9/jt6MRDepF1uzVOiQ7gzw=; b=R6Z5YBvklZpQuItMpOQUQOe6Y2sg3WNj7BvbnLOi/vsfDX8vcL0fpqdGUaaAwLG5KOmLmZGn1JyR4xY9x+MCU5vGPA1Heb1Av1IwMj53L/f2RrDhVcxEFPTiodibYh/lYrWuYrdiFj9VJSQjFhQo0LiQGOUa6L8CZuLiu+mspPM= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790173094967823.5965322950339; Wed, 23 Sep 2026 07:18:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nlp-0007zW-Sn; Wed, 23 Sep 2026 10:16: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 1x9Nl6-0007iU-QQ; Wed, 23 Sep 2026 10:15:44 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nl2-0005ws-FS; Wed, 23 Sep 2026 10:15:38 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8Zqrm2909163; Wed, 23 Sep 2026 14:15:32 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskg2ktss-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:32 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68ND0IIh006054; Wed, 23 Sep 2026 14:15:31 GMT Received: from smtprelay04.wdc07v.mail.ibm.com ([172.16.1.71]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gvbu8s78m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:31 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay04.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFUqU28967492 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:30 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3D8445805B; Wed, 23 Sep 2026 14:15:30 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8E3175805D; Wed, 23 Sep 2026 14:15:29 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:29 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=5msSFBZFSz3QiEZHq quXq9/jt6MRDepF1uzVOiQ7gzw=; b=EQl30WtOn0AY3bT4ndNFzOL0n+r0cZNC9 TU794kwRC09GcM0ucUlUsIrtoKVbUIQjQn0pQhcIb15xadpyFVx8lElMaBhgVD8j oX9CwP1icpFxPTc9ybXj0qljZTL0IDHzgb/b5IaSBrJQBwxYxaGBOUM8Zeln31Y1 dFcyaAiZJIcXAewsfpnYI+3IViAEFH457uHwRZG51e6YyTXrcR4MBoa5ev3vamed /xJssOw7a83fk50wGrXt6zSGf8ayJRldAUsNtnkCJrbNNN9XMhsJH4ZRLx08qt9/ Hb63kVJ9aAXtau63FXmbmmIzdrN10gs9dqRnw+iM6Dxj1KECYIHRg== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 10/16] s390x/pci: Move pba from S390PCIIOMMU to S390PCIBusDevice Date: Wed, 23 Sep 2026 09:15:12 -0500 Message-Id: <20260923141518.960364-11-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: twLXKwjVFoBrqBtkgGN6Kt19Az0DJfnL X-Authority-Analysis: v=2.4 cv=I43w19gg c=1 sm=1 tr=0 ts=6ab3df04 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=THYS1zffzJpO_GefUMYA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfXxDxt30/PzDiW iAyGFKT/vMI9NkUIa1LUab27d0rH7WiirNPOQFM+zrRWXknBPpJNfZOBhaQl/7cifE/F35fWhyG 9UQZCXVZYxj225Rq+PK+X1SMXj04no5h4EOhrTVjYVkAYkO+q6frGXizrF8x6w7hSqz21H8FmPa GMpBkg0MvIikdy6QVK6hTiNtmLlwvFegO/NGMoa1OisZHHoFisG760m6oOR1fJ13nxilOOMKdf/ WiEnja6TXwpbR5M7nOYdNTxL6fn5aa81yHq7mp2gCtpugaXkpnCuke0oRJEm451VQdxOcWNniVI peez2R7/6B4uJPTr5IoEgQAP+EMv8Ki1NmuAkSGT4gXq+7vIaa9u1dgqLIKcJyKJDKGYDX1r8PN 3M+0md7ZMiUWAYaFLprni4AtmRSDZZbSol8a5863/Ix9j0ciDioxWplE0LJqnXUiXieUc3BG09E qJAn8tbV4mUfDfNxH0g== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX7fUVYNcvII4n 62XnqojKCUkSUGDIzc+6cFfM533uMLcqzPwPDHCd8qJohA5SwRPC5RA3sXHKqRpI0DA8D6UuAxs 0zt7VV5wgdgrl/kJFAGKs35Z72cdkBw= X-Proofpoint-GUID: twLXKwjVFoBrqBtkgGN6Kt19Az0DJfnL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.156.1; envelope-from=kshk@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790173096538158500 Content-Type: text/plain; charset="utf-8" This field is only used when S390PCIBusDevice exists, so it can be moved there to simplify S390PCIIOMMU towards a structure that contains only the IOMMU container information needed by the PCI layer for a given slot. This also allows to save/restore this field during migration. Reviewed-by: Farhan Ali Reviewed-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-bus.c | 4 ++-- hw/s390x/s390-pci-inst.c | 10 +++++----- include/hw/s390x/s390-pci-bus.h | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index ec54eb64a6..6cf54b8ab6 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -565,7 +565,7 @@ static IOMMUTLBEntry s390_translate_iommu(IOMMUMemoryRe= gion *mr, hwaddr addr, =20 trace_s390_pci_iommu_xlate(addr); =20 - if (addr < iommu->pba || addr > iommu->pal) { + if (addr < pbdev->pba || addr > iommu->pal) { error =3D ERR_EVENT_OORANGE; goto err; } @@ -602,7 +602,7 @@ static void s390_pci_ioat_replay(S390PCIBusDevice *pbde= v) hwaddr curr, end; S390PCIIOMMU *iommu =3D pbdev->iommu; =20 - curr =3D iommu->pba; + curr =3D pbdev->pba; end =3D iommu->pal; =20 if (pbdev->dm_mr) { diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index 22b477ab38..aa2bc98254 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -770,7 +770,7 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_= t r2, uintptr_t ra) goto err; } =20 - if (end < start || end < iommu->pba || start > iommu->pal) { + if (end < start || end < pbdev->pba || start > iommu->pal) { error =3D ERR_EVENT_OORANGE; goto err; } @@ -778,7 +778,7 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_= t r2, uintptr_t ra) * If the specified range at least partially overlaps the registered * aperture, clamp the request to the aperture and ignore the rest. */ - sstart =3D MAX(start, iommu->pba); + sstart =3D MAX(start, pbdev->pba); end =3D MIN(end, iommu->pal + 1); =20 retry: @@ -1054,7 +1054,7 @@ static int reg_ioat(CPUS390XState *env, S390PCIBusDev= ice *pbdev, ZpciFib fib, return -EINVAL; } =20 - iommu->pba =3D pba; + pbdev->pba =3D pba; iommu->pal =3D pal; pbdev->g_iota =3D g_iota; =20 @@ -1071,7 +1071,7 @@ void pci_dereg_ioat(S390PCIBusDevice *pbdev) { S390PCIIOMMU *iommu =3D pbdev->iommu; s390_pci_iommu_disable(pbdev); - iommu->pba =3D 0; + pbdev->pba =3D 0; iommu->pal =3D 0; pbdev->g_iota =3D 0; } @@ -1444,7 +1444,7 @@ int stpcifc_service_call(S390CPU *cpu, uint8_t r1, ui= nt64_t fiba, uint8_t ar, return 0; } =20 - stq_be_p(&fib.pba, pbdev->iommu->pba); + stq_be_p(&fib.pba, pbdev->pba); stq_be_p(&fib.pal, pbdev->iommu->pal); stq_be_p(&fib.iota, pbdev->g_iota); stq_be_p(&fib.aibv, pbdev->routes.adapter.ind_addr); diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index a7d1f1ade2..42f39a5cf0 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -275,7 +275,6 @@ struct S390PCIIOMMU { Object parent_obj; AddressSpace as; MemoryRegion mr; - uint64_t pba; uint64_t pal; uint64_t max_dma_limit; }; @@ -352,6 +351,7 @@ struct S390PCIBusDevice { MemoryRegion *dm_mr; GHashTable *iotlb; uint64_t g_iota; + uint64_t pba; S390PCIDMACount *dma_limit; MemoryRegion msix_notify_mr; IndAddr *summary_ind; --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790173060; cv=none; d=zohomail.com; s=zohoarc; b=C8QOXKpbsgCQ8zuk/QfONjDjAC+TG9z/g+ty5ogTUVL76kR5azoTu0LDjJEL2m7ndOW3fc0OkYJKAQAOMmX2DTJBlhwuz6X4AJw4FpRxCLjJHRU6e3j6SFlVJSrK4rcQAMK1zsgcw1FT+WlcQVonWHRbWGGcMQTlspMT7J5OZ00= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790173060; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OiYmCo37OvfJw+al7hdGi1UbPHqW0rJGezY3AISwDj8=; b=mnUdsr1fp2Ok+PQwCccCLUf4Ho1FaACNezr1vZAnkjuQoOBtwI3klUGep3hjdzn24H1DqrEmrM8ZDkfTAdrFUUV3z0aVbDViUrQ+qAz49vZeKlDjHXt2b1Nz6p10QI4E8aF0kOg1wmDx9UhXEpHlbRU0MONMLmlbzIIp8GXTKHI= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 179017306014595.10787807278837; Wed, 23 Sep 2026 07:17:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nlq-00080F-1L; Wed, 23 Sep 2026 10:16:26 -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 1x9NlF-0007lF-Hf; Wed, 23 Sep 2026 10:15:49 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nl3-0005x8-KE; Wed, 23 Sep 2026 10:15:41 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8ZX7d2907145; Wed, 23 Sep 2026 14:15:34 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskgsbrq2-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:33 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCLick008504; Wed, 23 Sep 2026 14:15:32 GMT Received: from smtprelay05.wdc07v.mail.ibm.com ([172.16.1.72]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4gvb8jsbfh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:32 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay05.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFVnC28705404 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:31 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 036F65805E; Wed, 23 Sep 2026 14:15:31 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5403B5805D; Wed, 23 Sep 2026 14:15:30 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:30 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=OiYmCo37OvfJw+al7 hdGi1UbPHqW0rJGezY3AISwDj8=; b=VI7qM7wpc9KRxZSYPQDOm09QD7vishn8k pmpW3mLgPRbbWpDXEZU0xF9Edc96V2jN6uKbJGg1CWzj8mSDa134P2l2IL5jFXkv SYWqoULIdjm07tAQfmfy1PoNsShoffZuy8JRo57+niydeh5vmueQ9JYMkvzHmObM 7V/aV/sx0TNxRi0GWlXcbj+9Z67186bwOdKiy2d1Hs3r/5KqovKQLuyhELeeylJM lUbeBUilQwuRjyh0BxMmJBtS/blowBiJVa9PEOXKggZOk/lVJ4G78+6gtTiLkusq m5SE0A/6zyH9Ih7fwkKxOM2jEvsu9tYmH6viw2zUjR5r+dQdZ7OHQ== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 11/16] s390x/pci: Move pal from S390PCIIOMMU to S390PCIBusDevice Date: Wed, 23 Sep 2026 09:15:13 -0500 Message-Id: <20260923141518.960364-12-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=V/XoQuni c=1 sm=1 tr=0 ts=6ab3df05 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=WfwOUNX5pORHP_P-vIkA:9 X-Proofpoint-ORIG-GUID: 3b1IICAId6i-LRrS8r2VUWKWdhF37zWE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX2Lh8hWg9j+Q5 ELjhu5ZWRKGDcyhS4+V0vgiIp3KYPQRhauZ/DEX/80RXnhk+Un59tNBIz5lKMZD8Ghd1cA314O8 XZ8N1Y1ksdbsDZNOrIWzHMMN7Gt8DVR4fIa/anTWLcbWXyi6mh7Fsc3pgAJbFQMTnQdc79QKWt8 qE93rsnF/FsSHsa0Bamtjznzid9nzMTrU+m/4fnGixVIjTerkxgcMd3hH3AvRqawhSn6SEqsv1H oex1RiiDhJjiMTh9xAvzPhp9Z6MgjvIGWnTF+MeVZsG1TyIdhUidj+x74LpcQ9YzgcTzDsgHQlB EJabiXRdCxV2/PnVf7t09lGoldjsKs4poajPf7gt0ABZJpPVmYHoyyFvhE7kjX8x72jzFgNL2Nh pcUmaDoj0JMvbwF6zx2Lp72d+4UfD2gn6zJZdeFKcHeTWokosGYEjLm0Juotny6Taggr1BiWSue YN+AKdd6nLgnT76XwIA== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfXw2u6Tt5HABIE a53XKd9xAzfBa5ZllW5StcyNvJtgUToXGu53BzqHPgeL9HTsgX+dFdW3rBleagRldXTMYy0g5Wh 7G64ltt7qyPfqYiHtlmVME4wkpzoVIE= X-Proofpoint-GUID: 3b1IICAId6i-LRrS8r2VUWKWdhF37zWE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.156.1; envelope-from=kshk@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790173062286158500 Content-Type: text/plain; charset="utf-8" This field is only used when S390PCIBusDevice exists, so it can be moved there to simplify S390PCIIOMMU towards a structure that contains only the IOMMU container information needed by the PCI layer for a given slot. This also allows to save/restore this field during migration. Reviewed-by: Farhan Ali Reviewed-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-bus.c | 8 +++----- hw/s390x/s390-pci-inst.c | 14 +++++--------- include/hw/s390x/s390-pci-bus.h | 2 +- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 6cf54b8ab6..79bef96c4d 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -540,7 +540,6 @@ static IOMMUTLBEntry s390_translate_iommu(IOMMUMemoryRe= gion *mr, hwaddr addr, IOMMUAccessFlags flag, int iommu= _idx) { S390PCIBusDevice *pbdev =3D container_of(mr, S390PCIBusDevice, iommu_m= r); - S390PCIIOMMU *iommu =3D pbdev->iommu; S390IOTLBEntry *entry; uint64_t iova =3D addr & TARGET_PAGE_MASK; uint16_t error =3D 0; @@ -565,7 +564,7 @@ static IOMMUTLBEntry s390_translate_iommu(IOMMUMemoryRe= gion *mr, hwaddr addr, =20 trace_s390_pci_iommu_xlate(addr); =20 - if (addr < pbdev->pba || addr > iommu->pal) { + if (addr < pbdev->pba || addr > pbdev->pal) { error =3D ERR_EVENT_OORANGE; goto err; } @@ -600,10 +599,9 @@ static void s390_pci_ioat_replay(S390PCIBusDevice *pbd= ev) uint16_t error =3D 0; uint32_t dma_avail; hwaddr curr, end; - S390PCIIOMMU *iommu =3D pbdev->iommu; =20 curr =3D pbdev->pba; - end =3D iommu->pal; + end =3D pbdev->pal; =20 if (pbdev->dm_mr) { /* If direct mapping is used, there are no guest tables to replay = */ @@ -788,7 +786,7 @@ void s390_pci_iommu_enable(S390PCIBusDevice *pbdev) char *name =3D g_strdup_printf("iommu-s390-%04x", pbdev->uid); memory_region_init_iommu(&pbdev->iommu_mr, sizeof(pbdev->iommu_mr), TYPE_S390_IOMMU_MEMORY_REGION, OBJECT(&iommu-= >mr), - name, iommu->pal + 1); + name, pbdev->pal + 1); pbdev->iommu_enabled =3D true; memory_region_add_subregion(&iommu->mr, 0, MEMORY_REGION(&pbdev->iommu= _mr)); g_free(name); diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index aa2bc98254..f93db10c81 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -717,7 +717,6 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_= t r2, uintptr_t ra) uint32_t fh; uint16_t error =3D 0; S390PCIBusDevice *pbdev; - S390PCIIOMMU *iommu; S390IOTLBEntry entry; hwaddr start, end, sstart; uint32_t dma_avail; @@ -759,7 +758,6 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_= t r2, uintptr_t ra) break; } =20 - iommu =3D pbdev->iommu; if (pbdev->dma_limit) { dma_avail =3D pbdev->dma_limit->avail; } else { @@ -770,7 +768,7 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_= t r2, uintptr_t ra) goto err; } =20 - if (end < start || end < pbdev->pba || start > iommu->pal) { + if (end < start || end < pbdev->pba || start > pbdev->pal) { error =3D ERR_EVENT_OORANGE; goto err; } @@ -779,7 +777,7 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_= t r2, uintptr_t ra) * aperture, clamp the request to the aperture and ignore the rest. */ sstart =3D MAX(start, pbdev->pba); - end =3D MIN(end, iommu->pal + 1); + end =3D MIN(end, pbdev->pal + 1); =20 retry: start =3D sstart; @@ -1029,7 +1027,6 @@ bool s390_pci_is_translation_enabled(uint64_t g_iota) static int reg_ioat(CPUS390XState *env, S390PCIBusDevice *pbdev, ZpciFib f= ib, uintptr_t ra) { - S390PCIIOMMU *iommu =3D pbdev->iommu; uint64_t pba =3D ldq_be_p(&fib.pba); uint64_t pal =3D ldq_be_p(&fib.pal); uint64_t g_iota =3D ldq_be_p(&fib.iota); @@ -1055,7 +1052,7 @@ static int reg_ioat(CPUS390XState *env, S390PCIBusDev= ice *pbdev, ZpciFib fib, } =20 pbdev->pba =3D pba; - iommu->pal =3D pal; + pbdev->pal =3D pal; pbdev->g_iota =3D g_iota; =20 if (t) { @@ -1069,10 +1066,9 @@ static int reg_ioat(CPUS390XState *env, S390PCIBusDe= vice *pbdev, ZpciFib fib, =20 void pci_dereg_ioat(S390PCIBusDevice *pbdev) { - S390PCIIOMMU *iommu =3D pbdev->iommu; s390_pci_iommu_disable(pbdev); pbdev->pba =3D 0; - iommu->pal =3D 0; + pbdev->pal =3D 0; pbdev->g_iota =3D 0; } =20 @@ -1445,7 +1441,7 @@ int stpcifc_service_call(S390CPU *cpu, uint8_t r1, ui= nt64_t fiba, uint8_t ar, } =20 stq_be_p(&fib.pba, pbdev->pba); - stq_be_p(&fib.pal, pbdev->iommu->pal); + stq_be_p(&fib.pal, pbdev->pal); stq_be_p(&fib.iota, pbdev->g_iota); stq_be_p(&fib.aibv, pbdev->routes.adapter.ind_addr); stq_be_p(&fib.aisb, pbdev->routes.adapter.summary_addr); diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index 42f39a5cf0..1f5d8d4bd4 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -275,7 +275,6 @@ struct S390PCIIOMMU { Object parent_obj; AddressSpace as; MemoryRegion mr; - uint64_t pal; uint64_t max_dma_limit; }; =20 @@ -352,6 +351,7 @@ struct S390PCIBusDevice { GHashTable *iotlb; uint64_t g_iota; uint64_t pba; + uint64_t pal; S390PCIDMACount *dma_limit; MemoryRegion msix_notify_mr; IndAddr *summary_ind; --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790172997; cv=none; d=zohomail.com; s=zohoarc; b=i5Q0Cc/riswxPtMsyq+EofCUpUlqcuRBX4ArtPlP0o+RsaGyKP6oDmm+WchFLCwfYXxpKkJ6re53ehfSoEBuBgeYEVARlfreqhww64k4KYxgs38938fwSDViiak36N+Xz9w/iLTQbVigVHggQ617KpvqsM+K0MygIsMpX41x/cE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790172997; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rux/H3LAdtYio6jAJmWWbniXXpuMoyoF5/Z26HUjjSU=; b=F/7uCWdz65jnOYuXEnsGcT3zgLGMvmpcuOWpkmO9xZvoWOpY7gGBuj5ZcRoZWxYQRe1KxlBQkdXwmBdxGp/S6q7cnBfI6z7LmgWCPmXjRt5TgRpnwXgkD4EP994E/gTBqRLbLHX565hsInfCDW7DU9ZgcHn+RIr1O74oTARPZ38= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790172997573656.4095397161434; Wed, 23 Sep 2026 07:16:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nls-00084M-W8; Wed, 23 Sep 2026 10:16:29 -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 1x9Nlc-0007pA-QA; Wed, 23 Sep 2026 10:16:16 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9NlW-0005xA-6i; Wed, 23 Sep 2026 10:16:09 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8Zg2Q2908998; Wed, 23 Sep 2026 14:15:34 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskg2ktsw-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:34 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCSZ8X008421; Wed, 23 Sep 2026 14:15:33 GMT Received: from smtprelay05.wdc07v.mail.ibm.com ([172.16.1.72]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4gvb8jsbfj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:33 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay05.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFVQA27525654 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:31 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BD9055805B; Wed, 23 Sep 2026 14:15:31 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 19EA358058; Wed, 23 Sep 2026 14:15:31 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:31 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=rux/H3LAdtYio6jAJ mWWbniXXpuMoyoF5/Z26HUjjSU=; b=VCu1++c+8YFtZqtlQTez+uYarZLbJdRWa oan22ATkxIDuNElIk6V8ZFG4LNSbkpQIiQqiunsF4h8BAp0MBa3Teu46ZUu5fQyN Via94Lai5wP8LhVKN2QZ2m7WWBdTKEbuYxbKGLbTFuK9OobqiU5FnzSSkoiHprEi 7vtvu3yJNvBUKRzyQ6vYU7/ik4rY85puR2HFl6ktJfsZJ1HJb2EN7cdIO4EpoDXu d7Jsyftcl3MQQnJYqY+q1faylXZNdaYa5gQw1xG/U7SBUu0st0xzEEOU38W96h6c apnPsCCT8EfsJRgsKxWPxPg2iZ5meZAHl+L9TI1VNVOTrsqIUYccQ== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 12/16] s390x/pci: Move max_dma_limit from S390PCIIOMMU to S390PCIBusDevice Date: Wed, 23 Sep 2026 09:15:14 -0500 Message-Id: <20260923141518.960364-13-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: R4VrbnValn0Fqw5jGDsqHbF3y_s6VvNZ X-Authority-Analysis: v=2.4 cv=I43w19gg c=1 sm=1 tr=0 ts=6ab3df06 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=wu6SjTzT1SSAPCv-QiYA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX3dzFnOpra7Sk kZI7tj88Y/PjjP8w+49gpwgW2yAYsaautyu8GSIiyV82ZQKRHo0nwZUgdTOY0Z4EYnBHJytRV7Z vXqlG1vRY/wZ1qerG6qUeRGIgT/MkVMxQlRXTpeYxFHZ0BpJX/jP9gAu04s1iuMZ1afoMK3m+OV xN66I7vbBcYJ3wR65Jgz6MBrAncw3ss8nFNQMugpQraJ2gqkcY1YGfyfnGQmnYtOHZv14eGKmC/ hr6Cbu72mNEaf0OW0iFsBfuMEzGS2OU/Po9yjQ50V4rCif5W3mXNgeeYMoDUDI6RspRVDvdi2y0 cWhrPGvJWtgQ8vxl3G8GZdn5sRIYe0+XOWhzzj5jSHBatbUsoaLRwt50aw1y0vGYqrp0ce4k7Se izfJgRfF+60yJSEqvSKyaesg1B3vvXb+ADKL0xkEYuism5fdzHGx65N2tDSVDoJUq+hP6tq51rz 1XOizKh9ndI9mZLFDbw== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX5G2sd9A1c/UB AB8a3qA2qQCBV++pi7XeRpejIc9CleZBNvGe8m9xwXQ6v/xovCn/vwGIT5Sect0GXazRK5x7woM /MVcO0W4sytQsgJIoC0Nvjs6B4hBiTg= X-Proofpoint-GUID: R4VrbnValn0Fqw5jGDsqHbF3y_s6VvNZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.156.1; envelope-from=kshk@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790173000102158500 Content-Type: text/plain; charset="utf-8" This field is only used when S390PCIBusDevice exists, so it can be moved there to simplify S390PCIIOMMU towards a structure that contains only the IOMMU container information needed by the PCI layer for a given slot. Reviewed-by: Farhan Ali Reviewed-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-vfio.c | 4 ++-- include/hw/s390x/s390-pci-bus.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/s390x/s390-pci-vfio.c b/hw/s390x/s390-pci-vfio.c index db6de00bd2..a035ba5b2c 100644 --- a/hw/s390x/s390-pci-vfio.c +++ b/hw/s390x/s390-pci-vfio.c @@ -90,7 +90,7 @@ S390PCIDMACount *s390_pci_start_dma_count(S390pciState *s, cnt->users =3D 1; cnt->avail =3D avail; QTAILQ_INSERT_TAIL(&s->zpci_dma_limit, cnt, link); - pbdev->iommu->max_dma_limit =3D avail; + pbdev->max_dma_limit =3D avail; return cnt; } =20 @@ -152,7 +152,7 @@ static void s390_pci_read_base(S390PCIBusDevice *pbdev, * to request that the guest free DMA mappings as necessary. */ if (!pbdev->rtr_avail) { - vfio_size =3D pbdev->iommu->max_dma_limit << qemu_target_page_bits= (); + vfio_size =3D pbdev->max_dma_limit << qemu_target_page_bits(); if (vfio_size > 0 && vfio_size < cap->end_dma - cap->start_dma + 1= ) { pbdev->zpci_fn.edma =3D cap->start_dma + vfio_size - 1; } diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index 1f5d8d4bd4..e3cbee2695 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -275,7 +275,6 @@ struct S390PCIIOMMU { Object parent_obj; AddressSpace as; MemoryRegion mr; - uint64_t max_dma_limit; }; =20 typedef struct S390PCIIOMMUTable { @@ -352,6 +351,7 @@ struct S390PCIBusDevice { uint64_t g_iota; uint64_t pba; uint64_t pal; + uint64_t max_dma_limit; S390PCIDMACount *dma_limit; MemoryRegion msix_notify_mr; IndAddr *summary_ind; --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790173063; cv=none; d=zohomail.com; s=zohoarc; b=XYtVIrsv3yQhjevnbB2gIyOnFTPUfT8wh1k/c1eQTs16v/vg9rnz7fzPHtfpm7H4hT/fjFs3teNcH3/5BgBKzFp9qQt7SdNUMR45NP01yJU8uUrZg41g3+Ztp+pDc4u35Z03TSsoSA8poaso+0EYG+nrx/msM1oBW9cFMfyGW3I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790173063; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0m0WUDXe06nwq+OXo7togFOkqAO12zTw+7OtM+Ejk2g=; b=Txa1tZ+FFtL+K/HSZcD1tCcw2wwWoaRMpzMFKERRBrtL1q+Cr5JQkXfrKHYcZB7xZPrZczNaqxEoHp6d5CSM3H/R9Nl1fZ6lR1n9pLccaL5kOaO6+gctC8AL+u98cMMTb1H88yL1T0yv7VnxvlCNUr0BRQiI3/dXBI6nStiLcPU= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790173063151358.46948895281105; Wed, 23 Sep 2026 07:17:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nlq-00082w-QU; Wed, 23 Sep 2026 10:16:26 -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 1x9NlF-0007lE-HT; Wed, 23 Sep 2026 10:15:49 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nl6-0005xF-Qq; Wed, 23 Sep 2026 10:15:48 -0400 Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8ZdYp2742247; Wed, 23 Sep 2026 14:15:34 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gske1kbwp-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:34 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCtY1k005698; Wed, 23 Sep 2026 14:15:33 GMT Received: from smtprelay06.wdc07v.mail.ibm.com ([172.16.1.73]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gvbu8s78n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:33 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay06.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFWFH15336180 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:32 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8F50E5805D; Wed, 23 Sep 2026 14:15:32 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D4B5B58058; Wed, 23 Sep 2026 14:15:31 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:31 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=0m0WUDXe06nwq+OXo 7togFOkqAO12zTw+7OtM+Ejk2g=; b=L+trrFvRoQ3yjGaQb/jVZyJGFwEJzxzhn lJP6MQzDo/KnAn9FIzSnUqYoBZlcxzXRW9tBgUXbof0cJ33Q/zQb4PVCwnkJQ/0U 2YcORAk5QbXWUybOdPjyFe7x04YxNEwSlAXA655x9lp+VGryYN90vlK7w4aEyEHz 9fYeG51EnH5lN1fkS6rBTHrUnV5hZUmgpWzxkqRIMhITng9nFYj7SVJjOQTdHbTl uDQg/ATlqpJ4LQn1NjLeZtdCWAQprdU/35pxlurzlmlbF1Ds55Fg5Tyfqiye14DH zAPJHoXszO03FAR18+DKdUT+nPcplXnbIWoyjZXHC5uofeSGBePOQ== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 13/16] s390x/pci: Add a comment explaining S390PCIIOMMU purpose Date: Wed, 23 Sep 2026 09:15:15 -0500 Message-Id: <20260923141518.960364-14-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: YK7bQ-72wH56xRFWSbPQ8p12wMgFdYWh X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX2ZOL1ffcp5b4 XqR1Gqu9yXCzZc+ar7XRfvbEyUgClEs65k2wtWeuO+ZfMG9KF9ozqbNwry/gjMp4Me/Y0AO5ACY gxy81VoBGDfe3ekBoc2ujyr7WfHJoXFhGcyPx8YEw3a2PxYdR9tNOBUnR8RdQpbKOd/fTNZgGxt ZXBrv91xrwTCNnqqkXN+bCwCAXVsmLSkiu/QZAs5mI+/OoHLLkTe80mzs0CustQp6bqLEJ12YwU YgXgmY+c/GMbiGNFbLmSJaBG7aGuQPKuEP6nKGrFKCXk8WtPKmEvL3MiNW1PtSfPcFHBcaCgk4O z8rI7pJrm38iDBimGG2x8YcY0aX0lwjFozPoEe7eUaW5F6Zzx1+lAlmj03ldmlwXQmg33YXvd8P LzMh6cdzt/vfjXG28C+NJzsT57wy7P4I+yvesk8+OTBerB929EFhDQz39XEbSR9tNZpaoqkSBf0 pqR+k2EcgBlebf9t4gQ== X-Authority-Analysis: v=2.4 cv=O/KsLx9W c=1 sm=1 tr=0 ts=6ab3df06 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=LipbnPdcSf65HfI7a3AA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX5yI/VCiVlD3P X2V2vL5vnUehtydxECyHFC0Fiufijg7kKCxS5WwNBAVfiwQ6lV1sHPQBDyurbDkcTl1CsDPDxQX pV8jpp93S1RIlTqfzOeXekj4paDU13M= X-Proofpoint-GUID: YK7bQ-72wH56xRFWSbPQ8p12wMgFdYWh X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 phishscore=0 impostorscore=0 suspectscore=0 bulkscore=0 priorityscore=1501 lowpriorityscore=0 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.158.5; envelope-from=kshk@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790173064343158500 Content-Type: text/plain; charset="utf-8" Now that S390PCIIOMMU had been reduced to only the IOMMU container information needed by the PCI layer for the associated slot, add a comment explaining the purpose of the structure. Reviewed-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy --- include/hw/s390x/s390-pci-bus.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index e3cbee2695..0a59be1fd0 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -271,6 +271,14 @@ typedef struct S390PCIDMACount { QTAILQ_ENTRY(S390PCIDMACount) link; } S390PCIDMACount; =20 +/* + * This structure holds the AddressSpace for a PCI device slot. It must be + * allocated before PCIDevice registration completes, specifically to sati= sfy + * the get_address_space IOMMU callback invoked by do_pci_register_device(= ). + * The root MemoryRegion is otherwise empty; DMA translations only become + * functional once the guest configures the device, at which point + * s390_pci_iommu_enable() registers the zPCI translation subregions benea= th it. + */ struct S390PCIIOMMU { Object parent_obj; AddressSpace as; --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790173019; cv=none; d=zohomail.com; s=zohoarc; b=QYPKgqXK+i+nZ3CyJBglJ5NKVAQZAM2nShtCYtZUzhI7ajDZpgEJ5VctnDYECXTgPgrwn6rMkqi9B35A+SJXnNN43E26GdkO0x2l8nYqfSLZHhabANx9WOmhNwKSOOZyDPVRvVZAfuOBjiOUYH++11ZfWbPtRkqZIliwVJaKi5U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790173019; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=iN02cPUFYxDL/APWGrAnklAVDDr234tyjmOsedzmKeQ=; b=GetQgqo3tQghArFsU58dA/ake17mGHNXZTkxDrTkTRj2UwlrIdzV7vGRfErcMaaUJg0Cjs+dusMgNykD4sztTy4z57rhtAL5d2GslDSrUA7pPr9bESC2+/EeKO/uG+9/GZqdZCRZW8LaZucHIjrFT96V539yKjoE/EQJpDpfcTM= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790173019869608.0519523069561; Wed, 23 Sep 2026 07:16:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nm2-0008AS-Uq; Wed, 23 Sep 2026 10:16:40 -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 1x9Nlc-0007pB-QY; Wed, 23 Sep 2026 10:16:16 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9NlX-0005xT-AW; Wed, 23 Sep 2026 10:16:10 -0400 Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8Zomn1031364; Wed, 23 Sep 2026 14:15:36 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gske1ury6-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:35 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCSPbR008222; Wed, 23 Sep 2026 14:15:35 GMT Received: from smtprelay07.wdc07v.mail.ibm.com ([172.16.1.74]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4gvb8jsbfn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:35 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay07.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFXMc13173404 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:33 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 563935805B; Wed, 23 Sep 2026 14:15:33 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A5CED58058; Wed, 23 Sep 2026 14:15:32 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:32 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=iN02cPUFYxDL/APWG rAnklAVDDr234tyjmOsedzmKeQ=; b=ASOFmo4wj6oWaqyC5ezjCjIafoZ+ROom4 do1YxIyzqVojGG7rvxYn9SsKP3N8eZ15AxDuGQsl2iDWLwFk1fPDqImWlkE66qpY zMuJUySCH5zBs8ImiSTZcAYDGZnvtMo+BwDvVFSUAy8BWYI5R3aYUj3rPsBsUFJI uKDawzkYBuYYwaJ5kI8OVxxCn+3JNraZY6Y17yAolnA7U9yIS1Hgr8UECoFqsI3t GbOlcvt6h6Z2jpw+Oyc4UQ7t2hLT1jW3fPL7GRwB8ONs9BKF0zZnZ9/xKCdGaskP VyvA0wgeaFwZi2IXWocRULdO/EH2jghHlp17K8IRbQ+8U1enh91Pw== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 14/16] s390x/pci: Factor ioat sanity checks into a separate function Date: Wed, 23 Sep 2026 09:15:16 -0500 Message-Id: <20260923141518.960364-15-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: ptm-BY7PVzDAsEGzdp0s0XSLrGHNzLTc X-Authority-Analysis: v=2.4 cv=EOCTQFZC c=1 sm=1 tr=0 ts=6ab3df07 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=wW6n-Ahcx9W_GWn2IWgA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX73ShJC8KGw2C rwopV61qGrZ5Ocl16Xg5x6hYW6DPE1ENmuznE0FwgnLTW2gmVqjCNlAKVJ1OozmKrOtQ8guVusK GJaER0wy9PAvvT0X/nPKGAwNha9oxio= X-Proofpoint-GUID: ptm-BY7PVzDAsEGzdp0s0XSLrGHNzLTc X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfXxXGQuPeoymLn BxKomS4zjq/YUPmUzmIFstIb+rrfUkPz4pgcjcvbGF1juq0JKcXXqMpa8fxziscIMtawaKlWs6L Ah+8yyDTSEbK5UKcnqbPXlgEJaodMU1KKnMcm0LJPaRVibBlOyTlSR5GGS/+fnxvzxL3iwyj94Z 7TTZGbr33ala06ubnPK9L8/Z96jdpa1jG/ae8Uw2rkrC+nYLWso72zw2IR737vgcdHFuXxsMnle 6JiPQuM3duacbpkKXsO8DDB0PNSHyrktm1hmk1sTiEOc/wpldIhq3MdxHGfiXTtW2VfTkEiB9Ap jIlEcYRckngukYP6XN/EwM6sTf4xXvGTCFV+IyUzhDIU5bWMAlw4WMuzvyZO14RDPCjfqEdbgxR FEaxTM/SJiRiHNrDVotHazmKUjzlKWeNNZ1h672fUHlbufpSdH3gSptpzvbkXtSU/X9vmz3eQEW xeX3StTHI7KWxAUnGvg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 phishscore=0 priorityscore=1501 clxscore=1015 spamscore=0 adultscore=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.156.1; envelope-from=kshk@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790173022123158500 Content-Type: text/plain; charset="utf-8" Extract the pba, pal and g_iota checks from reg_ioat() into a function. Make it external so that it can also be used in a follow up change. Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-inst.c | 44 ++++++++++++++++++++++---------- include/hw/s390x/s390-pci-inst.h | 2 ++ 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index f93db10c81..cc55804473 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -1024,31 +1024,47 @@ bool s390_pci_is_translation_enabled(uint64_t g_iot= a) return ((g_iota >> 11) & 0x1) !=3D 0; /* "T" bit */ } =20 +bool s390_pci_ioat_validate(S390PCIBusDevice *pbdev, uint64_t pba, + uint64_t pal, uint64_t g_iota, Error **errp) +{ + uint8_t dt =3D (g_iota >> 2) & 0x7; + bool t =3D s390_pci_is_translation_enabled(g_iota); + + if (pba > pal || pba < pbdev->zpci_fn.sdma || pal > pbdev->zpci_fn.edm= a) { + return false; + } + /* currently we only support designation type 1 with translation */ + if (t && dt !=3D ZPCI_IOTA_RTTO) { + error_setg(errp, "unsupported ioat dt %d t %d", dt, t); + return false; + } + if (!t && !pbdev->rtr_avail) { + error_setg(errp, "relaxed translation not allowed"); + return false; + } + return true; +} + static int reg_ioat(CPUS390XState *env, S390PCIBusDevice *pbdev, ZpciFib f= ib, uintptr_t ra) { uint64_t pba =3D ldq_be_p(&fib.pba); uint64_t pal =3D ldq_be_p(&fib.pal); uint64_t g_iota =3D ldq_be_p(&fib.iota); - uint8_t dt =3D (g_iota >> 2) & 0x7; bool t =3D s390_pci_is_translation_enabled(g_iota); =20 pba &=3D ~0xfff; pal |=3D 0xfff; - if (pba > pal || pba < pbdev->zpci_fn.sdma || pal > pbdev->zpci_fn.edm= a) { - s390_program_interrupt(env, PGM_OPERAND, ra); - return -EINVAL; - } + { + Error *err =3D NULL; =20 - /* currently we only support designation type 1 with translation */ - if (t && dt !=3D ZPCI_IOTA_RTTO) { - error_report("unsupported ioat dt %d t %d", dt, t); - s390_program_interrupt(env, PGM_OPERAND, ra); - return -EINVAL; - } else if (!t && !pbdev->rtr_avail) { - error_report("relaxed translation not allowed"); - s390_program_interrupt(env, PGM_OPERAND, ra); - return -EINVAL; + if (!s390_pci_ioat_validate(pbdev, pba, pal, g_iota, &err)) { + if (err) { + error_report_err(err); + } + s390_program_interrupt(env, PGM_OPERAND, ra); + return -EINVAL; + } } =20 pbdev->pba =3D pba; diff --git a/include/hw/s390x/s390-pci-inst.h b/include/hw/s390x/s390-pci-i= nst.h index 38268c256e..3493d2ced0 100644 --- a/include/hw/s390x/s390-pci-inst.h +++ b/include/hw/s390x/s390-pci-inst.h @@ -100,6 +100,8 @@ typedef struct ZpciFib { =20 int pci_dereg_irqs(S390PCIBusDevice *pbdev); void pci_dereg_ioat(S390PCIBusDevice *pbdev); +bool s390_pci_ioat_validate(S390PCIBusDevice *pbdev, uint64_t pba, + uint64_t pal, uint64_t g_iota, Error **errp); int clp_service_call(S390CPU *cpu, uint8_t r2, uintptr_t ra); int pcilg_service_call(S390CPU *cpu, uint8_t r1, uint8_t r2, uintptr_t ra); int pcistg_service_call(S390CPU *cpu, uint8_t r1, uint8_t r2, uintptr_t ra= ); --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790173071; cv=none; d=zohomail.com; s=zohoarc; b=dz6Mjb29nZZemy58CySx5YYu9QzZAkTvxJKK68VljHCebmAq1Crufsh73UpQuTFBUvo1z20R62MrfpjYNaQvffKvzIGGFANrYB8Yb8TYESIwMTzE1xrtoNIVkGnsDC4oSR+1G2dw1gcmL5Mgdi8KXUEha/v18lFqHqDuKGQvBYk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790173071; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KZG0KHk12S7Gvb99NDfJFN90RI0bwPR8TMA8vJ86XeI=; b=JiOOxfqHXovyBbb39XG0GYUhuNgFxOWv1Ug3Q96CLuZTQOoPyJqjiUEnENGfSSm38L+NEBDvqiPyZ3e4Q/3OUEQXESnC/L8qT1OlfomBi4/gU90Tj+96mvKYmSzde6Pvc+IYR9D1OnimId0Mdt+a20Uutlr/8THd4GWG3Eh5l5k= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790173071394236.36942353764243; Wed, 23 Sep 2026 07:17:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nls-000840-SG; Wed, 23 Sep 2026 10:16:28 -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 1x9Nlf-0007pD-HK; Wed, 23 Sep 2026 10:16:16 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9NlX-0005xc-Ac; Wed, 23 Sep 2026 10:16:12 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8ZbfK2907160; Wed, 23 Sep 2026 14:15:37 GMT Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskgsbrqe-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:36 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCLbOg008030; Wed, 23 Sep 2026 14:15:35 GMT Received: from smtprelay04.dal12v.mail.ibm.com ([172.16.1.6]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gvbe1sb2q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:35 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay04.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFYgj51052896 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:34 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 279FC58059; Wed, 23 Sep 2026 14:15:34 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6D76758058; Wed, 23 Sep 2026 14:15:33 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:33 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=KZG0KHk12S7Gvb99N DfJFN90RI0bwPR8TMA8vJ86XeI=; b=Xf95k5sjBdRRyM1Haf4FCU/M0KMK8IPfQ bgna15juQGY06tJq6HKzkmFgn2g6CrmQFMsjQ/jSiVINTA0fi0yGqkO/yswfDEcf /Z7dxJIso9zmztFbAgvoP3XRRwSUd3nC7h+U7aGbK3eq+QXM1KFOJUYWd6lk1B3w Z6sbrTXSjKQugPqkis6jt43b4oDun/H1SG+MOO5GVZio1jI4O9IED1hfq7rPMxl0 QJJD5ukJhq8D0ou02mFLTUMpluG7xt0aJEgI5GU5Y0QXVMSHwaZt6BsXJ3hFxZUK NmtqOhZNOUiKWywYtpmRuCLcgvQF2MglSCN664h6vQ71lozez7n5A== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 15/16] s390x/pci: Implement migration for emulated devices Date: Wed, 23 Sep 2026 09:15:17 -0500 Message-Id: <20260923141518.960364-16-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=V/XoQuni c=1 sm=1 tr=0 ts=6ab3df08 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=waVumpEa8DGoQk7sNJYA:9 X-Proofpoint-ORIG-GUID: py3fNrRErbk3nLAfL9grV7BRZ01h21Dd X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX5qhVYvCLam1q 6zY3a5fXxd3uXb1+60Q8A8NVZchXjNvHq9SFhyovrMNLPeUx+BoFYEma21upZEM2/DRUItm1UD9 PWbBqlKEwoXoRoTjfu73NmDfBi6ExcHElJvLIDfcPRDlycbZ0AOiG5eOOjMP6qyChlGQA4Nq9rN U2cQl+oXhyqMUFlYsRJdHG3o2Q8TZ2uayVKm9oj0U4RhXSw7b7KkBPjssF3Oaatizvd8ndWbdwM i2jxSrRL1qZVSuZPL2vzw7OweOEOpJKvuHKIHoWrjAEfqijjLzuUAtH4mSh17Z0p2Z4AkRD2SCq wkJy660PZv0arvG0jAruMHvM4xe3o6OL60BdTyXWlqWlLoI1sv2qgU/MOqHT8QajmfBN//mrxlV rZOpTx1sNBX5UUu9s+Z4lur0P80IlixLw+glD4m/SyyWhvq8EBS0skDi5aKK4xcU8r5PvLvXRxN MfPhefxWz0eG5h6gdbA== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX6m4yqE6/R+B1 hxiogt8trB+M6fCPpMjLDMtSy8ucM3R/iaUfiFqEm+OR4N3aOYuMfgQlfOiRLPXFj0aoBUp+cu9 g2rURhBcFT4U129RekU94mMRqs6EfuI= X-Proofpoint-GUID: py3fNrRErbk3nLAfL9grV7BRZ01h21Dd X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.156.1; envelope-from=kshk@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790173072397158500 Content-Type: text/plain; charset="utf-8" Implement zPCI device state migration, consequently enabling migration of VMs that have emulated PCI devices, whether virtio or not. Migration is allowed for devices whose function handle has the FH_SHM_EMUL bit set. For these devices QEMU will save and restore the state of its zPCI emulator. This will enable emulated PCI migration starting with s390-ccw-virtio-11.2. Passthrough devices will continue to block migration. Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-bus.c | 307 ++++++++++++++++++++++++++++++- hw/s390x/s390-pci-inst.c | 2 +- hw/s390x/s390-virtio-ccw.c | 4 + include/hw/s390x/s390-pci-bus.h | 13 ++ include/hw/s390x/s390-pci-inst.h | 1 + 5 files changed, 319 insertions(+), 8 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 79bef96c4d..41d43974cf 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -26,6 +26,8 @@ #include "hw/pci/pci_bridge.h" #include "hw/pci/msi.h" #include "exec/cpu-common.h" +#include "migration/blocker.h" +#include "migration/vmstate.h" #include "qemu/error-report.h" #include "qemu/module.h" #include "system/physmem.h" @@ -922,6 +924,8 @@ static void set_pbdev_info(S390PCIBusDevice *pbdev) pbdev->pci_group =3D s390_group_find(ZPCI_DEFAULT_FN_GRP); } =20 +static const VMStateDescription vmstate_s390_pcihost; + static void s390_pcihost_realize(DeviceState *dev, Error **errp) { PCIBus *b; @@ -956,6 +960,7 @@ static void s390_pcihost_realize(DeviceState *dev, Erro= r **errp) s390_pci_init_default_group(); css_register_io_adapters(CSS_IO_ADAPTER_PCI, true, false, S390_ADAPTER_SUPPRESSIBLE, errp); + vmstate_register(VMSTATE_IF(dev), 0, &vmstate_s390_pcihost, s); s390_pcihost_kvm_realize(); } =20 @@ -1134,12 +1139,47 @@ static int s390_pci_interp_plug(S390pciState *s, S3= 90PCIBusDevice *pbdev) return 0; } =20 +static int s390_set_zpci_migration_blocker(S390PCIBusDevice *pbdev, + S390pciState *s, Error **errp) +{ + if (s->zpci_migr_enabled) { + return 0; + } + error_setg(&pbdev->zpci_migr_blocker, + "Migration blocked on this machine type by zPCI device " + "uid %d", pbdev->uid); + return migrate_add_blocker(&pbdev->zpci_migr_blocker, errp); +} + +static void s390_clear_zpci_migration_blocker(S390PCIBusDevice *pbdev) +{ + migrate_del_blocker(&pbdev->zpci_migr_blocker); +} + +static int s390_set_passthrough_migration_blocker(S390PCIBusDevice *pbdev, + Error **errp) +{ + if (pbdev->fh & FH_SHM_EMUL) { + return 0; + } + error_setg(&pbdev->passthrough_migr_blocker, + "Migration blocked by passthrough zPCI device uid %d", + pbdev->uid); + return migrate_add_blocker(&pbdev->passthrough_migr_blocker, errp); +} + +static void s390_clear_passthrough_migration_blocker(S390PCIBusDevice *pbd= ev) +{ + migrate_del_blocker(&pbdev->passthrough_migr_blocker); +} + static void s390_pcihost_plug(HotplugHandler *hotplug_dev, DeviceState *de= v, Error **errp) { S390pciState *s =3D S390_PCI_HOST_BRIDGE(hotplug_dev); PCIDevice *pdev =3D NULL; S390PCIBusDevice *pbdev =3D NULL; + bool auto_pbdev =3D false; int rc; =20 if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_BRIDGE)) { @@ -1199,6 +1239,7 @@ static void s390_pcihost_plug(HotplugHandler *hotplug= _dev, DeviceState *dev, if (!pbdev) { return; } + auto_pbdev =3D true; } =20 pbdev->pdev =3D pdev; @@ -1218,7 +1259,7 @@ static void s390_pcihost_plug(HotplugHandler *hotplug= _dev, DeviceState *dev, if (rc) { error_setg(errp, "Plug failed for zPCI device in " "interpretation mode: %d", rc); - return; + goto err_unlink_pbdev; } } else { trace_s390_pcihost("zPCI interpretation missing"); @@ -1247,16 +1288,46 @@ static void s390_pcihost_plug(HotplugHandler *hotpl= ug_dev, DeviceState *dev, pbdev->rtr_avail =3D false; } =20 + if (s390_set_passthrough_migration_blocker(pbdev, errp) !=3D 0) { + goto err_unlink_pbdev; + } + if (s390_pci_msix_init(pbdev) && !pbdev->interp) { error_setg(errp, "MSI-X support is mandatory " "in the S390 architecture"); - return; + s390_clear_passthrough_migration_blocker(pbdev); + goto err_unlink_pbdev; } =20 if (dev->hotplugged) { s390_pci_generate_plug_event(HP_EVENT_TO_CONFIGURED , pbdev->fh, pbdev->fid); } + return; + +err_unlink_pbdev: + if (pbdev->pft =3D=3D ZPCI_PFT_ISM) { + notifier_remove(&pbdev->shutdown_notifier); + } + if (pbdev->dma_limit) { + s390_pci_end_dma_count(s, pbdev->dma_limit); + pbdev->dma_limit =3D NULL; + } + pbdev->fh &=3D ~FH_MASK_SHM; + pbdev->iommu =3D NULL; + pbdev->pdev =3D NULL; + pbdev->state =3D ZPCI_FS_RESERVED; + if (auto_pbdev) { + QTAILQ_REMOVE(&s->zpci_devs, pbdev, link); + if (g_hash_table_lookup(s->zpci_table, &pbdev->idx) =3D=3D pbd= ev) { + g_hash_table_remove(s->zpci_table, &pbdev->idx); + } + g_hash_table_destroy(pbdev->iotlb); + s390_clear_zpci_migration_blocker(pbdev); + qdev_unrealize(DEVICE(pbdev)); + object_unparent(OBJECT(pbdev)); + } + return; } else if (object_dynamic_cast(OBJECT(dev), TYPE_S390_PCI_DEVICE)) { pbdev =3D S390_PCI_DEVICE(dev); =20 @@ -1267,6 +1338,12 @@ static void s390_pcihost_plug(HotplugHandler *hotplu= g_dev, DeviceState *dev, NULL, g_free); QTAILQ_INSERT_TAIL(&s->zpci_devs, pbdev, link); g_hash_table_insert(s->zpci_table, &pbdev->idx, pbdev); + if (s390_set_zpci_migration_blocker(pbdev, s, errp) !=3D 0) { + g_hash_table_remove(s->zpci_table, &pbdev->idx); + QTAILQ_REMOVE(&s->zpci_devs, pbdev, link); + g_hash_table_destroy(pbdev->iotlb); + return; + } } else { g_assert_not_reached(); } @@ -1289,6 +1366,8 @@ static void s390_pcihost_unplug(HotplugHandler *hotpl= ug_dev, DeviceState *dev, return; } =20 + s390_clear_passthrough_migration_blocker(pbdev); + s390_pci_generate_plug_event(HP_EVENT_STANDBY_TO_RESERVED, pbdev->fh, pbdev->fid); bus =3D pci_get_bus(pci_dev); @@ -1308,6 +1387,7 @@ static void s390_pcihost_unplug(HotplugHandler *hotpl= ug_dev, DeviceState *dev, s390_pci_end_dma_count(s, pbdev->dma_limit); } g_hash_table_destroy(pbdev->iotlb); + s390_clear_zpci_migration_blocker(pbdev); qdev_unrealize(dev); } } @@ -1443,6 +1523,72 @@ static void s390_pcihost_reset(DeviceState *dev) pci_for_each_device_under_bus(bus, s390_pci_enumerate_bridge, s); } =20 +/* + * TYPE_S390_PCI_HOST_BRIDGE device state migration is registered via + * vmstate_register() rather than dc->vmsd because dc->vmsd is already ass= igned + * by our base, TYPE_PCI_HOST_BRIDGE, to &vmstate_pcihost which migrates + * PCIHostState.config_reg. There is no mechanism to add a subclass vmsd t= o the + * parent's. + */ +static bool vmstate_s390_pcihost_needed(void *opaque) +{ + S390pciState *s =3D S390_PCI_HOST_BRIDGE(opaque); + return s->zpci_migr_enabled; +} + +static bool vmstate_s390_pcihost_pending_sei_needed(void *opaque) +{ + S390pciState *s =3D S390_PCI_HOST_BRIDGE(opaque); + return s->zpci_migr_enabled && !QTAILQ_EMPTY(&s->pending_sei); +} + +/* Per-element descriptor for pending_sei list */ +static const VMStateDescription vmstate_sei_container =3D { + .name =3D "s390_sei_container", + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT32(fid, SeiContainer), + VMSTATE_UINT32(fh, SeiContainer), + VMSTATE_UINT8(cc, SeiContainer), + VMSTATE_UINT16(pec, SeiContainer), + VMSTATE_UINT64(faddr, SeiContainer), + VMSTATE_UINT32(e, SeiContainer), + VMSTATE_END_OF_LIST() + } +}; + +static const VMStateDescription vmstate_s390_pcihost_pending_sei =3D { + .name =3D TYPE_S390_PCI_HOST_BRIDGE "/pending-sei", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D vmstate_s390_pcihost_pending_sei_needed, + .fields =3D (const VMStateField[]) { + VMSTATE_QTAILQ_V(pending_sei, S390pciState, 1, + vmstate_sei_container, SeiContainer, link), + VMSTATE_END_OF_LIST() + } +}; + +static const VMStateDescription vmstate_s390_pcihost =3D { + .name =3D TYPE_S390_PCI_HOST_BRIDGE, + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D vmstate_s390_pcihost_needed, + .fields =3D (const VMStateField[]) { + VMSTATE_END_OF_LIST() + }, + .subsections =3D (const VMStateDescription * const []) { + &vmstate_s390_pcihost_pending_sei, + NULL + } +}; + +static const Property phb_props[] =3D { + DEFINE_PROP_BOOL("x-zpci-migr-enabled", S390pciState, + zpci_migr_enabled, true), +}; + static void s390_pcihost_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -1456,6 +1602,7 @@ static void s390_pcihost_class_init(ObjectClass *klas= s, const void *data) hc->unplug_request =3D s390_pcihost_unplug_request; hc->unplug =3D s390_pcihost_unplug; msi_nonbroken =3D true; + device_class_set_props(dc, phb_props); } =20 static const TypeInfo s390_pcihost_info =3D { @@ -1469,10 +1616,33 @@ static const TypeInfo s390_pcihost_info =3D { } }; =20 +/* Return a unique bus "path" for zpci device */ +static char *s390_pci_bus_get_dev_path(DeviceState *dev) +{ + S390PCIBusDevice *pbdev =3D S390_PCI_DEVICE(dev); + return g_strdup_printf("uid-%04x", pbdev->uid); +} + +static void s390_pcibus_class_init(ObjectClass *oc, const void *data) +{ + BusClass *bc =3D BUS_CLASS(oc); + bc->get_dev_path =3D s390_pci_bus_get_dev_path; +} + static const TypeInfo s390_pcibus_info =3D { .name =3D TYPE_S390_PCI_BUS, .parent =3D TYPE_BUS, .instance_size =3D sizeof(S390PCIBus), + /* + * Implement get_dev_path() to provide each zpci device with a unique + * stable UID-based bus "path". The "path" is used as part of idstr in= the + * migration stream, making idstr unique and instance_id always 0. + * For migration to succeed, (idstr+instance_id) must match those gene= rated + * during QEMU start. Without unique idstr, QEMU will generate variable + * instance_id to distinguish devices, and that instance_id can change + * if a device is unplugged and plugged back, preventing migration. + */ + .class_init =3D s390_pcibus_class_init, }; =20 static uint16_t s390_pci_generate_uid(S390pciState *s) @@ -1618,13 +1788,136 @@ static const Property s390_pci_device_properties[]= =3D { true), }; =20 -static const VMStateDescription s390_pci_device_vmstate =3D { - .name =3D TYPE_S390_PCI_DEVICE, +static int s390_pci_device_pre_load(void *opaque) +{ + S390PCIBusDevice *pbdev =3D S390_PCI_DEVICE(opaque); + S390PCIBusDevice *found_pbdev; + /* - * TODO: add state handling here, so migration works at least with - * emulated pci devices on s390x + * Because state loading can change pbdev->idx make sure pbdev is remo= ved + * from the table before that happens. The table type used stores a po= inter + * to pbdev->idx and becomes corrupt if idx is changed from outside. B= ut be + * careful to not remove instead another pbdev whose state might have = been + * loaded earlier and that got assigned this idx value and had therefo= re + * already replaced our pbdev in the table. post_load() will reinsert = our + * pbdev into the table. (found_pbdev could even be 0 if a previous + * vmstate_load_vmsd() on this device failed before reaching post_load= ().) */ - .unmigratable =3D 1, + found_pbdev =3D g_hash_table_lookup(s390_get_phb()->zpci_table, &pbdev= ->idx); + if (found_pbdev =3D=3D pbdev) { + g_hash_table_remove(s390_get_phb()->zpci_table, &pbdev->idx); + } + + return 0; +} + +static bool s390_pci_device_post_load_errp(void *opaque, int version_id, + Error **errp) +{ + S390PCIBusDevice *pbdev =3D S390_PCI_DEVICE(opaque); + + pbdev->zpci_fn.fid =3D pbdev->fid; + pbdev->zpci_fn.uid =3D pbdev->uid; + + /* + * Now that pbdev->idx has been loaded, use it to place pbdev back into + * the table. This may replace a different not-yet-state-loaded pbdev, + * but pre_load() handles this case. + */ + g_hash_table_replace(s390_get_phb()->zpci_table, &pbdev->idx, pbdev); + + /* + * Regenerate IOMMU state, including IOTLB contents and QEMU memory re= gions. + */ + if (pbdev->iommu_enabled) { + if (!pbdev->iommu) { + error_setg(errp, "iommu is NULL"); + return false; + } + if (!s390_pci_ioat_validate(pbdev, pbdev->pba, pbdev->pal, + pbdev->g_iota, errp)) { + if (*errp) { + error_prepend(errp, "invalid pba, pal or g_iota in migrati= on stream: "); + } else { + error_setg(errp, "invalid pba, pal or g_iota in migration = stream"); + } + return false; + } + if (s390_pci_is_translation_enabled(pbdev->g_iota)) { + s390_pci_iommu_enable(pbdev); + s390_pci_ioat_replay(pbdev); + } else { + /* TODO: unreachable until vfio passthrough migration is enabl= ed */ + s390_pci_iommu_direct_map_enable(pbdev); + } + } + + /* + * Guest sets fmb_addr by mpcifc.ZPCI_MOD_FC_SET_MEASURE instruction, + * whose handler consequently starts fmb_timer. We may need to restart= it. + */ + if (pbdev->fmb_addr) { + if (pbdev->fmb_timer) { + error_setg(errp, "fmb_timer is not NULL"); + return false; + } + if (!pbdev->pci_group) { + error_setg(errp, "pci_group is NULL"); + return false; + } + pbdev->fmb_timer =3D timer_new_ms(QEMU_CLOCK_VIRTUAL, + fmb_update, pbdev); + timer_mod(pbdev->fmb_timer, + qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + + pbdev->pci_group->zpci_group.mui); + } + return true; +} + +static const VMStateDescription s390_pci_device_vmstate =3D { + .name =3D TYPE_S390_PCI_DEVICE, + .version_id =3D 1, + .minimum_version_id =3D 1, + .priority =3D MIG_PRI_IOMMU, + .pre_load =3D s390_pci_device_pre_load, + .post_load_errp =3D s390_pci_device_post_load_errp, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT32(state, S390PCIBusDevice), + VMSTATE_UINT16(uid, S390PCIBusDevice), + VMSTATE_UINT32(idx, S390PCIBusDevice), + VMSTATE_UINT32(fh, S390PCIBusDevice), + VMSTATE_UINT32(fid, S390PCIBusDevice), + VMSTATE_BOOL(fid_defined, S390PCIBusDevice), + VMSTATE_UINT64(fmb_addr, S390PCIBusDevice), + VMSTATE_UINT32(fmb.format, S390PCIBusDevice), + VMSTATE_UINT32(fmb.sample, S390PCIBusDevice), + VMSTATE_UINT64(fmb.last_update, S390PCIBusDevice), + VMSTATE_UINT64_ARRAY(fmb.counter, S390PCIBusDevice, + ARRAY_SIZE(((S390PCIBusDevice *)0)->fmb.counter)), + VMSTATE_UINT64(fmb.fmt0.dma_rbytes, S390PCIBusDevice), + VMSTATE_UINT64(fmb.fmt0.dma_wbytes, S390PCIBusDevice), + VMSTATE_UINT8(isc, S390PCIBusDevice), + VMSTATE_UINT16(noi, S390PCIBusDevice), + VMSTATE_UINT8(sum, S390PCIBusDevice), + VMSTATE_UINT8(pft, S390PCIBusDevice), + VMSTATE_UINT64(routes.adapter.ind_addr, S390PCIBusDevice), + VMSTATE_UINT64(routes.adapter.summary_addr, S390PCIBusDevice), + VMSTATE_UINT64(routes.adapter.ind_offset, S390PCIBusDevice), + VMSTATE_UINT32(routes.adapter.summary_offset, S390PCIBusDevice), + VMSTATE_UINT32(routes.adapter.adapter_id, S390PCIBusDevice), + VMSTATE_BOOL(iommu_enabled, S390PCIBusDevice), + VMSTATE_UINT64(g_iota, S390PCIBusDevice), + VMSTATE_UINT64(pba, S390PCIBusDevice), + VMSTATE_UINT64(pal, S390PCIBusDevice), + VMSTATE_PTR_TO_IND_ADDR(summary_ind, S390PCIBusDevice), + VMSTATE_PTR_TO_IND_ADDR(indicator, S390PCIBusDevice), + VMSTATE_BOOL(unplug_requested, S390PCIBusDevice), + VMSTATE_BOOL(interp, S390PCIBusDevice), + VMSTATE_BOOL(forwarding_assist, S390PCIBusDevice), + VMSTATE_BOOL(aif, S390PCIBusDevice), + VMSTATE_BOOL(rtr_avail, S390PCIBusDevice), + VMSTATE_END_OF_LIST() + } }; =20 static void s390_pci_device_class_init(ObjectClass *klass, const void *dat= a) diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index cc55804473..962910327b 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -1138,7 +1138,7 @@ static int fmb_do_update(S390PCIBusDevice *pbdev, int= offset, uint64_t val, return ret; } =20 -static void fmb_update(void *opaque) +void fmb_update(void *opaque) { S390PCIBusDevice *pbdev =3D opaque; int64_t t =3D qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL); diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 17266779a6..db0b49375e 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -1005,12 +1005,16 @@ static void ccw_machine_11_1_instance_options(Machi= neState *machine) static void ccw_machine_11_1_class_options(MachineClass *mc) { S390CcwMachineClass *s390mc =3D S390_CCW_MACHINE_CLASS(mc); + static GlobalProperty compat[] =3D { + { TYPE_S390_PCI_HOST_BRIDGE, "x-zpci-migr-enabled", "off" }, + }; =20 s390mc->use_certs =3D false; s390mc->use_secure =3D false; =20 ccw_machine_11_2_class_options(mc); compat_props_add(mc->compat_props, hw_compat_11_1, hw_compat_11_1_len); + compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat)); } DEFINE_CCW_MACHINE(11, 1); =20 diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bu= s.h index 0a59be1fd0..d310a46e8f 100644 --- a/include/hw/s390x/s390-pci-bus.h +++ b/include/hw/s390x/s390-pci-bus.h @@ -337,6 +337,8 @@ struct S390PCIBusDevice { uint16_t uid; uint32_t idx; uint32_t fh; + Error *zpci_migr_blocker; /* machines 11.1 or older */ + Error *passthrough_migr_blocker; uint32_t fid; bool fid_defined; uint64_t fmb_addr; @@ -385,11 +387,22 @@ struct S390pciState { S390PCIBus *bus; GHashTable *iommu_table; GHashTable *zpci_table; + /* + * pending_sei is the zPCI payload queue drained by CHSC SEI (one + * SeiContainer per instruction execution). It is the zPCI-layer + * counterpart of ChannelSubSys.pending_crws, which carries the + * architectural CRW notifications that prompt the guest to issue + * CHSC SEI in the first place. pending_crws is migrated by + * vmstate_css; pending_sei is migrated by vmstate_s390_pcihost_pendin= g_sei + * in s390-pci-bus.c so that the two queues remain consistent on the + * destination. + */ QTAILQ_HEAD(, SeiContainer) pending_sei; QTAILQ_HEAD(, S390PCIBusDevice) zpci_devs; QTAILQ_HEAD(, S390PCIDMACount) zpci_dma_limit; QTAILQ_HEAD(, S390PCIGroup) zpci_groups; uint8_t next_sim_grp; + bool zpci_migr_enabled; }; =20 S390pciState *s390_get_phb(void); diff --git a/include/hw/s390x/s390-pci-inst.h b/include/hw/s390x/s390-pci-i= nst.h index 3493d2ced0..e31497069b 100644 --- a/include/hw/s390x/s390-pci-inst.h +++ b/include/hw/s390x/s390-pci-inst.h @@ -113,6 +113,7 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uint6= 4_t fiba, uint8_t ar, int stpcifc_service_call(S390CPU *cpu, uint8_t r1, uint64_t fiba, uint8_t = ar, uintptr_t ra); void fmb_timer_free(S390PCIBusDevice *pbdev); +void fmb_update(void *opaque); uint32_t s390_pci_update_iotlb(S390PCIBusDevice *pbdev, S390IOTLBEntry *en= try); =20 #define ZPCI_IO_BAR_MIN 0 --=20 2.34.1 From nobody Sat Sep 26 19:59:33 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1790173094; cv=none; d=zohomail.com; s=zohoarc; b=dyKDEniGaDlC3QfPgDLC5hl5Rf9dbgZxb8/zxQ2x+Obq3aPakwxXRFg96/vDEAH4oIl+awRE2dGQFUY9PkhJlgp7JDAlCxtx56Rm3Ei1GquxtSF/xeFMMTUbtXFgxfyKNtmH1cEFjNd9THokyVpcFFdXxLs8CveSUWSOiwOuOig= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790173094; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=W+f+JO2e8qxZ3Zvx4oLm4IpAwBrGrJrZTq4c5akzEZ8=; b=aWilCAze8YoIVhhm4tuN9bU6b4IujAScbHRnASOQLbnn6X48ChE9oVIEopEy0j0Eox7rniNwTL9hptuGd0Gy05rS7aPVBHRSWqge0QvvAHJzYH2Ob85hkUiIP7loD9GP9NyxurDm4qPHXdeBcUhV76AOWJ+aj9zgdoonty55tpA= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790173094351923.2872058086799; Wed, 23 Sep 2026 07:18:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x9Nlq-00082P-Ok; Wed, 23 Sep 2026 10:16:26 -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 1x9NlG-0007mL-Ml; Wed, 23 Sep 2026 10:15:52 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x9Nl6-0005xY-VI; Wed, 23 Sep 2026 10:15:50 -0400 Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8ZWGo2940615; Wed, 23 Sep 2026 14:15:37 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gskdvba78-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:36 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.11/8.18.1.11) with ESMTP id 68NCvOX7008037; Wed, 23 Sep 2026 14:15:36 GMT Received: from smtprelay04.dal12v.mail.ibm.com ([172.16.1.6]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gvbt2s7h4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 14:15:36 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay04.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 68NEFZgd46465314 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 23 Sep 2026 14:15:35 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E21CE58059; Wed, 23 Sep 2026 14:15:34 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3E31D5805B; Wed, 23 Sep 2026 14:15:34 +0000 (GMT) Received: from WIN-DU0DFC9G5VV.atx-us.ibm.com (unknown [9.16.60.171]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 23 Sep 2026 14:15:34 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=W+f+JO2e8qxZ3Zvx4 oLm4IpAwBrGrJrZTq4c5akzEZ8=; b=UrWhBOEGPiaUecE4hJJeKQH6IFMfz5FJj 4AzOfygHNkJJkp5876tqsKV0MWuRHf8C0c+OoJEc9Ho6oJMhIUJYQpXwp+fYtk5d h/2Jub3aW5aA75/s6jQ9obpl4fruJwHgFt8fucqIqWYISO0TWm2nPJFl2UZPROfq NuXKMkYFX/JCah1GAEaGmwdKbCXnhypbkyVz3cAeWYcWiZoOJRRAKnutCsQJ6VBT j/Ug1s+aQ6ahXtEIYwFfSNakmNHOmWsgOsEAFpWa8ikkDCxrLsT2sWb+k0naDPvp vxYqwm+AB/LAtv0MeP2kmU7dRWa07HjkZ7dDssjXxRZaAqLdeH9Ig== From: Konstantin Shkolnyy To: mjrosato@linux.ibm.com Cc: alifm@linux.ibm.com, farman@linux.ibm.com, richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org, cohuck@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com, qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Konstantin Shkolnyy Subject: [PATCH v10 16/16] s390x/pci: Create function to contain fmb_timer start Date: Wed, 23 Sep 2026 09:15:18 -0500 Message-Id: <20260923141518.960364-17-kshk@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260923141518.960364-1-kshk@linux.ibm.com> References: <20260923141518.960364-1-kshk@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: 3vaDSj-DSI_TmNOSXB6AwH8pxz_TlQDg X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfXwFZhRIGShvwY HIj1hu6UzJ6rfVh+Nalsdbrg8SO27MHD0q+Gh05NQ8I/qxzM3b5V2W7oKV4NssRHlCWYUGGR6TJ ONwPLk7K29Kf0h3W4Hfih0EbWF8RWQc= X-Authority-Analysis: v=2.4 cv=FLiOVOos c=1 sm=1 tr=0 ts=6ab3df08 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=Q_XnuvSB35syRjF9fnEA:9 X-Proofpoint-GUID: 3vaDSj-DSI_TmNOSXB6AwH8pxz_TlQDg X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDA1NiBTYWx0ZWRfX5euA7D2y50C4 wO3SU7TTEw3JwxltJ/C+dDzLW1n+zYjr3Eb1WcOdLZwpDfKaAjnrMtPgZ5TIxFnad3G3xh4/SC4 2VfX58O/OUnWUwwxSJq1MGFKoit0eKhfauzpsEhk2SXZtCjd1AX44ifuBgubmXz18KzvzbBCyHy xMBB5doKM8hsJy03Rbcv4ZHgylboBEd4Sm+DZU/sibQxBCKC91op003b8pi2WSleBzl2FjcvyVc 8Z3hdvazt6Hh8pG+Tr9FKyjaICAaqzrBsIwWIdKfa/fhtBmXLrsu/oYvD1/bHXTR7uloksECWIH HiEONyZ1mH0P2rIdXJTlFCTKrfkY3MORwVXb0fUcB/SNJYBKTuBnmzhvl6yGqKFbw87bU8uCUbr YULf4ZTSXBTrq+A8d3co65AGsTMDB0KDxQHtFxz0RknznjasnRJu8kZY2z2YAlv2GSqubfsfx0e x0a30+UGz3T08mHbG9A== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 impostorscore=0 phishscore=0 spamscore=0 clxscore=1015 suspectscore=0 bulkscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230056 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=148.163.158.5; envelope-from=kshk@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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 @ibm.com) X-ZM-MESSAGEID: 1790173096489158500 Content-Type: text/plain; charset="utf-8" fmb_timer is now started in 3 different places. The new function will encapsulate that to make sure mui is added in all cases. Reviewed-by: Matthew Rosato Signed-off-by: Konstantin Shkolnyy --- hw/s390x/s390-pci-bus.c | 5 ++--- hw/s390x/s390-pci-inst.c | 14 ++++++++++---- include/hw/s390x/s390-pci-inst.h | 1 + 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 41d43974cf..be170698f6 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -1867,9 +1867,8 @@ static bool s390_pci_device_post_load_errp(void *opaq= ue, int version_id, } pbdev->fmb_timer =3D timer_new_ms(QEMU_CLOCK_VIRTUAL, fmb_update, pbdev); - timer_mod(pbdev->fmb_timer, - qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + - pbdev->pci_group->zpci_group.mui); + s390_pci_schedule_fmb_timer(pbdev, + qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL)); } return true; } diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index 962910327b..8162d79fa0 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -1138,9 +1138,16 @@ static int fmb_do_update(S390PCIBusDevice *pbdev, in= t offset, uint64_t val, return ret; } =20 +void s390_pci_schedule_fmb_timer(S390PCIBusDevice *pbdev, uint64_t start) +{ + timer_mod(pbdev->fmb_timer, start + pbdev->pci_group->zpci_group.mui); +} + void fmb_update(void *opaque) { S390PCIBusDevice *pbdev =3D opaque; + + /* Must be read before updating U bit */ int64_t t =3D qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL); int i; =20 @@ -1177,7 +1184,7 @@ void fmb_update(void *opaque) sizeof(pbdev->fmb.last_update))) { return; } - timer_mod(pbdev->fmb_timer, t + pbdev->pci_group->zpci_group.mui); + s390_pci_schedule_fmb_timer(pbdev, t); } =20 static int mpcifc_reg_int_interp(S390PCIBusDevice *pbdev, ZpciFib *fib) @@ -1370,9 +1377,8 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uin= t64_t fiba, uint8_t ar, timer_del(pbdev->fmb_timer); } pbdev->fmb_addr =3D fmb_addr; - timer_mod(pbdev->fmb_timer, - qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + - pbdev->pci_group->zpci_group.mui); + s390_pci_schedule_fmb_timer(pbdev, + qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL)); break; } default: diff --git a/include/hw/s390x/s390-pci-inst.h b/include/hw/s390x/s390-pci-i= nst.h index e31497069b..0c27e5bcfb 100644 --- a/include/hw/s390x/s390-pci-inst.h +++ b/include/hw/s390x/s390-pci-inst.h @@ -114,6 +114,7 @@ int stpcifc_service_call(S390CPU *cpu, uint8_t r1, uint= 64_t fiba, uint8_t ar, uintptr_t ra); void fmb_timer_free(S390PCIBusDevice *pbdev); void fmb_update(void *opaque); +void s390_pci_schedule_fmb_timer(S390PCIBusDevice *pbdev, uint64_t start); uint32_t s390_pci_update_iotlb(S390PCIBusDevice *pbdev, S390IOTLBEntry *en= try); =20 #define ZPCI_IO_BAR_MIN 0 --=20 2.34.1