From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dl1-f73.google.com (mail-dl1-f73.google.com [74.125.82.73]) (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 69B10363C75 for ; Tue, 31 Mar 2026 05:55:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.73 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774936544; cv=none; b=Cd8SGVS+x+MKym0PsKG+nVXyk9SVtZ8w/dA25HGYn9NwCbRd2L0gsF1t9onW6vKPLIfqRnCTQNdtnN048c1TxAA96wkzSSJES3LIy986bFURqJecMsZYrtcwiUxskXUuEtufkF75uTgJpZmxuSB8esGRjPsjEImcNURW1XBonlM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774936544; c=relaxed/simple; bh=Us3p7gsh3vgmiFwekh/N5fLl7d4FgE11q029LGFnB84=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=B7+YRy8cVTEIgtrurF3y4PGf8hijUophneLfNbTnTcTmEvR5a+k/BLczI9YV2q6DBKhQWomqBfuDEGfZzwVZgN8zE+e56IwNLvaorR+hp4iWj9bNZA4zMlK1AnZu8GIKxZiNH+h9StSbv/UfkY6a4n3eqxb83uqKDLvvfHhnRSA= 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=IzwrSlwE; arc=none smtp.client-ip=74.125.82.73 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="IzwrSlwE" Received: by mail-dl1-f73.google.com with SMTP id a92af1059eb24-1276e71652fso6092025c88.0 for ; Mon, 30 Mar 2026 22:55:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1774936541; x=1775541341; 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=kYSGInLTZLFG+/28natEtFPklhZk/pthoTi7nrdmuJM=; b=IzwrSlwEjVaI5iPeYRglelszxb8KyZZ12xc9HOO8NJ7W+M1yDAjrdf9GDbNTXi5NLL RTnKeXeb/YecYUeE/vdi7V1hxKJtIFcsbKg2RzGy4PDCgg6e2P8hV7QRU5xDRWwzztKO AVq1qfZG4XhVoxIRa3uYHPsgouNFdPsq86nIXCo5VJNmOx7WkXbwm+k96hpSlzM1HXHx vxlcaXRJ2T2nVWQqjk1NPfaD7IJakKqtXgauf7zNo2rFHXkEB8PhAbBtOURb8Uj0DnPa MhXNNI8PxF64UIfsG7Q3VweMlG5z6IIkmjq133NCingCP1Di7mjnJtGAKo0YMw3Vb76V BTzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774936541; x=1775541341; 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=kYSGInLTZLFG+/28natEtFPklhZk/pthoTi7nrdmuJM=; b=NbtlpuiqtulZId1GR4RwX3A333V9UVJ3kcn5gGu57GN1fZJ0yn2szLE0PcWY9eyhsl 2K19gKf8DY8D0Jk5+oF/bGZgNecw9tq/VMCa7xuQU2Rp5oEbZNVt8r4n1Jm69taGhIDh /EULluxp0cqt70qOjdPxgzW9n8IKL2C75ZW82DyuvzH0rbRZXHVMExd869aYnD/In6wX 1CQ4bvdDKJA0UgNiE9pcRRtt9nBFsLOx1zxOaMyzl6/l0A9Kk5obP5rzg9W02vfHAX2z mAIG3rDOYXGzQh8wH7+6qlaZwFruYQgobQgk0s6r5ECQLhvPjKoMN6LrAx1kLCig7AAV wkUw== X-Forwarded-Encrypted: i=1; AJvYcCUkz+aMNVmZYT70ThFKQBFe3cwngWLY9EM7Tr4a0R7Wm4+NVjR17CDfKN0wuPtZO7113sCS4XsajwQ+wKs=@vger.kernel.org X-Gm-Message-State: AOJu0YwZ8qSs9wtTxz8ddwtHdUm2YP5ah4fgjE4Ze55Okkd+O5302J3C l+kitURuLUzYDYgu8LmlJnvkQBynRSgICQLkLDHd4aPUBVj5zoaWWhbuN34W6ult09Pnndy39Rl VtA== X-Received: from dled11-n1.prod.google.com ([2002:a05:701b:42cb:10b0:12a:c265:1a7c]) (user=wnliu job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7022:62b:b0:128:d1c9:3633 with SMTP id a92af1059eb24-12ab287d5ecmr7468853c88.13.1774936541122; Mon, 30 Mar 2026 22:55:41 -0700 (PDT) Date: Tue, 31 Mar 2026 05:55:39 +0000 In-Reply-To: <20260330084206.9251-8-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: <20260330084206.9251-8-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.53.0.1018.g2bb0e51243-goog Message-ID: <20260331055539.4026383-1-wnliu@google.com> Subject: Re: [PATCH 07/22] iommu/amd: Add support for AMD vIOMMU VF MMIO region 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 Mon, Mar 30, 2026 at 1:43=E2=80=AFAM Suravee Suthikulpanit wrote: > > diff --git a/drivers/iommu/amd/iommufd.c b/drivers/iommu/amd/iommufd.c > index 6fba5d9b1310..5dcd3fc3ba99 100644 > --- a/drivers/iommu/amd/iommufd.c > +++ b/drivers/iommu/amd/iommufd.c > @@ -66,11 +69,21 @@ int amd_iommufd_viommu_init(struct iommufd_viommu *vi= ommu, struct iommu_domain * > return aviommu->gid; > pr_debug("%s: gid=3D%#x", __func__, aviommu->gid); > > + page_base =3D amd_viommu_get_vfmmio_addr(iommu, aviommu->gid); According to the below implementation and prototype, amd_viommu_get_vfmmio_= addr() won't return negative value. > + if (page_base <=3D 0) > + return -ENODEV; goto err_out here as well to avoid leaking the gid allocated above. > + > + ret =3D iommufd_viommu_alloc_mmap(&aviommu->core, > + page_base, SZ_4K, > + (unsigned long *)&data.out_vfmmio= _mmap_offset); > + if (ret) > + goto err_out; > + > ret =3D iommu_copy_struct_to_user(user_data, &data, > IOMMU_VIOMMU_TYPE_AMD, > reserved); > if (ret) > - goto err_out; > + goto free_mmap; > > viommu->ops =3D &amd_viommu_ops; > > @@ -79,6 +92,8 @@ int amd_iommufd_viommu_init(struct iommufd_viommu *viom= mu, struct iommu_domain * > spin_unlock_irqrestore(&pdom->lock, flags); > > return 0; > +free_mmap: > + iommufd_viommu_destroy_mmap(&aviommu->core, data.out_vfmmio_mmap_= offset); > err_out: > amd_iommu_gid_free(aviommu->gid); > return ret; > diff --git a/drivers/iommu/amd/viommu.c b/drivers/iommu/amd/viommu.c > > +/* > + * Returns VF MMIO BAR offset for the give guest ID which will be > + * mapped to guest vIOMMU 3rd 4K MMIO address > + */ > +u64 amd_viommu_get_vfmmio_addr(struct amd_iommu *iommu, u16 gid) > +{ > + /* TODO: Add check for sVIOMMU and set gid[bit 15] */ > + return iommu->vf_base_phys + gid * VIOMMU_VF_MMIO_ENTRY_SIZE; > +} > +EXPORT_SYMBOL(amd_viommu_get_vfmmio_addr);