From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f202.google.com (mail-dy1-f202.google.com [74.125.82.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F1E42375F62 for ; Sat, 30 May 2026 21:26:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.202 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780176376; cv=none; b=FTgsil3G+1BqwHEv34ToW3JiC6mFeUQEBjsWIs5Gml6zue14XiXWHezv5yKd0ky8l/uVTNC/GrrFHX+aozgrFcLmdTWgaIgm12dmGm+tfHj60m4iJwBdm2ozbwrtke17eN4y+xdtbsFkIXyNVfcAXAWeiWpvFw60pPksIXOALLs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780176376; c=relaxed/simple; bh=FKeXBMG4Cj7Cyt3ypaR9eRSU6jdrCpJQcLrE7d8WCyk=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=EJ6LYJRAPVKJPLtKFLlqK45nlSp0y7HUfJo8KX06RKqjXQAVCz0BjcMFKYFuMpwPnl955Qhcc1YqDviMe2QK8tvvhnHPqJ65sHnU1+rK03REyO57P50HeHkWS0m9ZMS9mZ1h1pwtFa13Phbjz9KIw4qCLipel7aW0KawnQMdmKk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--wnliu.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=Stv/VU86; arc=none smtp.client-ip=74.125.82.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--wnliu.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Stv/VU86" Received: by mail-dy1-f202.google.com with SMTP id 5a478bee46e88-304df51ff3eso2862710eec.0 for ; Sat, 30 May 2026 14:26:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780176374; x=1780781174; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=FKeXBMG4Cj7Cyt3ypaR9eRSU6jdrCpJQcLrE7d8WCyk=; b=Stv/VU865UaRb7g+CpwB7bJEL3Xar82CM/9AVY+k13EVq8pB0mFRwINK5tUEnmYFOE ucEiXwpLzbSx049qaQUS/0U3GAi4cwbmmbhjuKVwJw0rlbZWQq1Z2iMbnuZmVUbOxzcV GW+IDuKjrgV46JDF8o1wuyikVdCckMGhS75P0N2BxnsKDYVfvPeQU1C7KmV7mm3XW61u nOAeR+Whau9LkiCdewjTzEsR2QNmcYoZ2xiSmvhrCPd0EPD80rB0HowS2nnUyjW1veYH iNsBVw7p0xOCZOmWqJ/j0Ta8RKqXUu5Br0+uLpIpiBSs73ghCV1KZ5OPII2Dbm4r3NRK U+0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780176374; x=1780781174; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=FKeXBMG4Cj7Cyt3ypaR9eRSU6jdrCpJQcLrE7d8WCyk=; b=IvupHZ7079o6a/YrVj/JbH1GSIlFv5wtpRCwCsuac+rgzBud3bvS9kJmbb6xdCkJwC MBJf5qUwC/3/z+J2WgLwtrclGkvrTC8xAov5FcgoGC4moKM9QDxPFvA+Fausc2lTpdzT SdRgQCYCDCWVp0YvDPxL4cnY9hlOt7D8ixSGxoI3TKeMC3LmbrBB9FzMZ1K7aE85iF4/ NBq6VOj6eKNsljJCpeSspeCpWhhvTH1H85hI4lB/zQsii1DjwaHk0TOCbn/JEzDkp7LP Cl7mkduTMi+0gC5wGSY4Y54EumrI/w8VWc3t9TZTmXKunu8kVT4pDC+BqzR3aRV6DX+t yR7w== X-Forwarded-Encrypted: i=1; AFNElJ+8WVIfuyDpiiIha3LdQF6tBnivK+bl76dQeOrh/0+lMB0ppSuycu2ls5w5KQ3VGn3uv+pYhpzkYcGUfSU=@vger.kernel.org X-Gm-Message-State: AOJu0YzSZJtBbaMKTrYs8SgZOfIjF4lTFFEf3kT7iXRMFkyDWnNdgoMU gvi8aS3ZMIgSOC1SW873GvNY+cyn3ai3ZPVbpGHuwYvP0rrOJDKU9N3YmHEXphTgmECb9D5Q6WO NvA== X-Received: from dybts9.prod.google.com ([2002:a05:7300:f589:b0:303:9bd4:479a]) (user=wnliu job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7301:290b:b0:2ed:e12:3769 with SMTP id 5a478bee46e88-304fa6b6007mr2483916eec.31.1780176373775; Sat, 30 May 2026 14:26:13 -0700 (PDT) Date: Sat, 30 May 2026 21:26:12 +0000 In-Reply-To: <20260528051738.596013-14-suravee.suthikulpanit@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260528051738.596013-14-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.54.0.823.g6e5bcc1fc9-goog Message-ID: <20260530212613.3060363-1-wnliu@google.com> Subject: Re: [PATCH v2 13/26] iommu/amd: Add helper functions to manage DevID / DomID mapping tables From: Weinan Liu To: suravee.suthikulpanit@amd.com Cc: chriscli@google.com, dantuluris@google.com, iommu@lists.linux.dev, jay.chen@amd.com, jgg@nvidia.com, jon.grimm@amd.com, joro@8bytes.org, kevin.tian@intel.com, kpsingh@google.com, linux-kernel@vger.kernel.org, nicolinc@nvidia.com, sairaj.arunkodilkar@amd.com, santosh.shukla@amd.com, vasant.hegde@amd.com, wnliu@google.com, wvw@google.com, yi.l.liu@intel.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, May 27, 2026 at 10:19=E2=80=AFPM Suravee Suthikulpanit wrote: > diff --git a/drivers/iommu/amd/iommufd.c b/drivers/iommu/amd/iommufd.c > index 42307ae71b24..efa9e1f49550 100644 > --- a/drivers/iommu/amd/iommufd.c > +++ b/drivers/iommu/amd/iommufd.c > @@ -83,6 +83,10 @@ int amd_iommufd_viommu_init(struct iommufd_viommu *vio= mmu, struct iommu_domain * > =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Reset vIOMMU MMIOs to initialize the vIOMM= U */ > =C2=A0 =C2=A0 =C2=A0 =C2=A0 iommu_reset_vmmio(iommu, aviommu->gid); > > + =C2=A0 =C2=A0 =C2=A0 ret =3D amd_viommu_init_one(iommu, aviommu); > + =C2=A0 =C2=A0 =C2=A0 if (ret) > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto err_init; > + > =C2=A0 =C2=A0 =C2=A0 =C2=A0 ret =3D iommu_copy_struct_to_user(user_data, = &data, > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 IOMMU_VI= OMMU_TYPE_AMD, > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 reserved= ); > @@ -120,6 +124,7 @@ static void amd_iommufd_viommu_destroy(struct iommufd= _viommu *viommu) > =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (aviommu->vfmmio_mmap_offset) > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 iommufd_viommu_de= stroy_mmap(&aviommu->core, aviommu->vfmmio_mmap_offset); > =C2=A0 =C2=A0 =C2=A0 =C2=A0 amd_iommu_gid_free(iommu, aviommu->gid); > + =C2=A0 =C2=A0 =C2=A0 amd_viommu_uninit_one(iommu, aviommu); > =C2=A0} > The finalization order should be the reverse of the initialization order. If amd_iommu_gid_free() is called before amd_viommu_uninit_one(), the gid c= ould be reallocated to a new vIOMMU instance before the cleanup is complete. Please consider moving amd_viommu_uninit_one() before the GID free call. > diff --git a/drivers/iommu/amd/viommu.c b/drivers/iommu/amd/viommu.c > index 6dcb02b12a28..3636093732ce 100644 > --- a/drivers/iommu/amd/viommu.c > +++ b/drivers/iommu/amd/viommu.c > + [...] > +void amd_viommu_uninit_one(struct amd_iommu *iommu, struct amd_iommu_vio= mmu *aviommu) > +{ > + =C2=A0 =C2=A0 =C2=A0 pr_debug("%s: gid=3D%u\n", __func__, aviommu->gid)= ; > + > + =C2=A0 =C2=A0 =C2=A0 free_private_vm_region(iommu, &aviommu->devid_tabl= e, > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0VIOMMU_DEVID_MAPPING_BASE, > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0VIOMMU_DEVID_MAPPING_ENTRY_SIZE, > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0aviommu->gid); > + =C2=A0 =C2=A0 =C2=A0 free_private_vm_region(iommu, &aviommu->domid_tabl= e, > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0VIOMMU_DOMID_MAPPING_BASE, > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0VIOMMU_DOMID_MAPPING_ENTRY_SIZE, > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0aviommu->gid); > +} > +