From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qt1-f171.google.com (mail-qt1-f171.google.com [209.85.160.171]) (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 4D6ED3E2AAD for ; Thu, 4 Jun 2026 14:13:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780582384; cv=none; b=GAIomw398P068F12kWJ6d2prFu5ksyyRcRxcrRfjkpBS7u5WlDq1Us7YtYAfDbIkpIC/pXQYCsuRCf/gqtMVWs1HvSyYCqs0upGAKPZb5droEg5ZHiKuwJdzpEZ2F8IZHF2WyEL6d6tTGyh3fA9C8yokWQiyXpE6qn6Y3G9QJe0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780582384; c=relaxed/simple; bh=gpdnwV2DnbeS2Luujuh3pWY+HT/ULmOQY1sUF7OfAQU=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=My849IitQT7ik2Xdvc2SC/hKqidEYFF+JjjOrS5/9Z7Wb3SiNZklvJCL2R21ROP9J/fLARI9TWdhaTSxa3pFY029xI6Stgaj8VBUSQ4u6/NN31b0ulamLRGkkXVDZ5guzxEx875W3JNhZoWO/2LqHxKIW8NI0Jdf83J4/s7b+nI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ziepe.ca; spf=pass smtp.mailfrom=ziepe.ca; dkim=pass (2048-bit key) header.d=ziepe.ca header.i=@ziepe.ca header.b=c67tRG3B; arc=none smtp.client-ip=209.85.160.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ziepe.ca Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ziepe.ca Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ziepe.ca header.i=@ziepe.ca header.b="c67tRG3B" Received: by mail-qt1-f171.google.com with SMTP id d75a77b69052e-5174a3a025aso7113281cf.3 for ; Thu, 04 Jun 2026 07:13:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; t=1780582381; x=1781187181; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=6SN06MWYgnamNhN1ZWgRIcR80dI4EtU2wUgYpm//Klo=; b=c67tRG3B3PAGKlTxgPGjuzy6sp7oF3VdFIH+8eW5D3ETaVXhpD9bmHa9E40giBNASg sXWlqXBf7AGX5d798/dw44Pd9Z76mpCs8vDhSRyMPTfezHcfxQCZVowz2qgDuV6TjVoy Ykwk2xDUyZFZo5IuX2m6OvED3jgkNYNeEpkbeaSe6+DSqqhj4R/dCwOllSdjFuhwFzKk dg6aQPuWyzFnSVC0U91Nz8bU4sws190YXgGP14qkC7o6/08mUbzj36wErfK8bX4ML5I/ R/TdkeUUGkrYbZvJJ7telR5Gak+6d9sq6zqAK4O/7/ibdfxNJhZtY89blfWXhTQ3cmo9 pAiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780582381; x=1781187181; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6SN06MWYgnamNhN1ZWgRIcR80dI4EtU2wUgYpm//Klo=; b=oTSLQN9BqGjEr4eBJ7tot5aLQEVFKVyLOpoyT0MTdZubV85x8eLMiHRRt3C3AH15yl 5OFQuA+UC48Hngdl0jyxSzWAvHeGrs+Fhq84dHKO2OUjdL5XNeJKf7MzpZlqUQ+K+yuo p7jtc8+qlvb7HSN2hXgQYcCL0+fBIgzSBJkw500xAlWI1a+lRm79obMpY4Jc3rXWH2ed 6A6I4yFF3hKTGl0bc8eda6POv5KXOA6xFbHT31X2qfPl4uGqUCV/cH1e7xonvng8VtXv D6tVaPlW7RHFk1guiGFbASgUAMB8cKygoORuD8IbFsQzpjUu5FW35GnDrN1NbPsOQtHH QSGw== X-Forwarded-Encrypted: i=1; AFNElJ+CFEKwmNtt/Nq777QeWzJj7JccQsgEpDPA7YJKq8fdMYuwMkzC6mLwwuk4oQiQfddU403DFBLdj/04cRM=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+bu7ngOt1Bb8HJzucaziEVF3Vr/CtNLLVAviTjUQ0qN+xVyB6 J61pQZZH1oxZCJljxOmH74JqJqqj4EwmBwRqoGJyui3XTAf1l2PRlhBEU04ogClCPFARw6AXT+P 9JBVU X-Gm-Gg: Acq92OGPq5HHC6y7QFV9MEuArdJsLa8e9T0n3Jdl6ylGCQMBUdnQrC+O78fgiVtEX0z xOoYJMDnt7dOXiLobq9eCbEViaASMNW0qjOYghxWYEeFlGwBSuazpxOw/SkUS88968QNvDi2xu5 w3WochNJfKdrOX6sWssbvnpgPg84ii6wd6z02s+cEWC9Zwh9fjyJfR5SO+IyUT3yo4gUJJZV/dF X8kEFGQBjLM11VuZy7zzZGNXTBKzJmREBxPDg6J0MXfan5HkMd9yG7ZUdZ3C5ZvnuDFo6PNo1hO nZacSUW6L5dCuhviNl3tMG7Cgm13WJGTxnmn4v+tu5nXxEB1+4WU2+uZ39K4tMRgHFMbJB5hmoR B7PI/g7FtNhCd3d2j/YLse8oEETPec6b4q/bQAkdlnNCcWYlF3d5bAOenAp1nBespyz1Bborcxf o69xU0Ek6OZMYldHmHy+8SUo3va9Akh8Nf9k8rOtnmuXbfX6Tmhxq01KyaNHoHMlLqKCUDg7n4D IXwXJsLq0MJy7AGFH9Lq88UJCI= X-Received: by 2002:a05:622a:598c:b0:517:1465:9167 with SMTP id d75a77b69052e-51778696c8emr120221011cf.28.1780582380950; Thu, 04 Jun 2026 07:13:00 -0700 (PDT) Received: from ziepe.ca (crbknf0213w-47-54-130-67.pppoe-dynamic.high-speed.nl.bellaliant.net. [47.54.130.67]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-51775df4dd6sm52447511cf.27.2026.06.04.07.13.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 07:13:00 -0700 (PDT) Received: from jgg by wakko with local (Exim 4.97) (envelope-from ) id 1wV8od-00000008HC1-3PHn; Thu, 04 Jun 2026 11:12:59 -0300 Date: Thu, 4 Jun 2026 11:12:59 -0300 From: Jason Gunthorpe To: Baolu Lu Cc: Guanghui Feng , adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Subject: Re: [PATCH v3 05/32] iommu/generic_pt: implement iova_to_phys_length Message-ID: <20260604141259.GW2487554@ziepe.ca> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-6-guanghuifeng@linux.alibaba.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: On Thu, Jun 04, 2026 at 11:30:37AM +0800, Baolu Lu wrote: > > -static __always_inline int __do_iova_to_phys(struct pt_range *range, void *arg, > > - unsigned int level, > > - struct pt_table_p *table, > > - pt_level_fn_t descend_fn) > > +struct iova_to_phys_length_data { > > + pt_oaddr_t phys; > > + size_t length; > > +}; > > + > > +static __always_inline int __do_iova_to_phys_length(struct pt_range *range, > > + void *arg, unsigned int level, > > + struct pt_table_p *table, > > + pt_level_fn_t descend_fn) > > { > > struct pt_state pts = pt_init(range, level, table); > > - pt_oaddr_t *res = arg; > > + struct iova_to_phys_length_data *data = arg; > > + unsigned int entry_lg2sz; > > + size_t entry_sz; > > + pt_oaddr_t expected_oa; > > switch (pt_load_single_entry(&pts)) { > > case PT_ENTRY_EMPTY: > > @@ -159,45 +167,77 @@ static __always_inline int __do_iova_to_phys(struct pt_range *range, void *arg, > > case PT_ENTRY_TABLE: > > return pt_descend(&pts, arg, descend_fn); > > case PT_ENTRY_OA: > > - *res = pt_entry_oa_exact(&pts); > > - return 0; > > + break; > > } > > - return -ENOENT; > > + > > + data->phys = pt_entry_oa_exact(&pts); > > + entry_lg2sz = pt_entry_oa_lg2sz(&pts); > > + entry_sz = log2_to_int(entry_lg2sz); > > + > > + /* Start with the full mapping size of the first entry */ > > + data->length = entry_sz; > > data->length doesn't account for iova offset. Is this by design? We > should document this clearly somewhere. That's defintaely a mistake, the phys has to be offset by the iova in all cases, it is part of the API. Also add kunits tests to the iommupt selftest to cover various scenarios please. Also this doesn't look quite right, the walk should look more like unmap where we just walk and stop walking when we hit a physical address discontiguity. The stop point defines the result length. Jason