From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qv1-f54.google.com (mail-qv1-f54.google.com [209.85.219.54]) (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 7407817993 for ; Wed, 3 Jun 2026 01:11:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780449099; cv=none; b=OkTMQlPsKNylI6WhahuSGzsFAJ4YEb4NoOkG9CVjHROmVimC9+63+c46gwF/URI0kChplArLrGn6/toF+KvA6tH9d63N8tu/P2orsxSAiYzbcmGohQz/+zGbNHnJBe6aEthg+NID4hvrCvyMc5Xjg8assJ2FgrfumYyLoAM9W6A= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780449099; c=relaxed/simple; bh=Mo+6uIwlljg7HEKWxoRbh7QUYcSwJ8ALJpeg6fpri34=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=rKMAcTid7+759dYnO8ClFPcHH2TjGByiEoWgfPzHbPvbpVBGoAHggqxkFikJIvh2HXIaOnRWO5CifKbk9EeNOanCTy+ifz9K4O0Wxv5zMO9N6aiU7dJlrmteqncnvjb1iW+zoFyl7tPxfS9s45XzmpU8f4dro/mNx6Hnp0xqDyQ= 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=DOnBB6U1; arc=none smtp.client-ip=209.85.219.54 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="DOnBB6U1" Received: by mail-qv1-f54.google.com with SMTP id 6a1803df08f44-8cce22e029cso2011366d6.0 for ; Tue, 02 Jun 2026 18:11:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; t=1780449097; x=1781053897; 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=OkcXxIwae3ZkBqRFobExjF5BmBij71a6Agx7B+x/coo=; b=DOnBB6U1Rg2PNCKs9kDlHSd4c8Zgs7IaWdvgKEC4rFYZpdzVDug79o3cijBA216PDK zPLzzAdVpzl6+a72LdkwZWQ+b26+OUNstNz1SJWHIBMzzxc/nE2CvQXN6oDsM5ljDafG ne1srcVCOrL7H6E1cJos1Kvle4jDss55FNX9V455LcC/Wxjz/tDygEWa/2CReq0jR60x f7yZgO3e4+PjLFupkADsw7HPT+jSF7YJvZnp+E9eyDJU6oOUcF77JUbM1o2IrYUWNOrH WDGFOM9UHI6Zgkxf5bgexMqYso5jpK7WiHguYkD2LZAVWPt6VRbC3/8Oi1QglGInhFQx gdwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780449097; x=1781053897; 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=OkcXxIwae3ZkBqRFobExjF5BmBij71a6Agx7B+x/coo=; b=UaDfQF1S15Vb1w1KidCCP1HTF6ujkwC3JOfzwUQioknoNjToUPlh6d6o3lSqVV+nE2 l0T31urQr9em5hcIivkbZlnsHb589XKPVZjhUWlqsYHes/1BMYokbcoqQ4HZHhIyyt66 o1IeLpbPy8ge/ISStYtxo3GV9nmcBiyfdnwvu1NKs1hzypRKEs0Vob3l4ebidPjL7v6m hTXhWPfk1YoRvAFvZC6aKQM4PoEG3pR1pdae+EAwjQEQQsXk63xS6i2YxYoNx55lf/0Q pjJHrIzyA1NoZPFIbp1bZAS6BnawkkDCTJnnvsuC8hHVbMLUnkdhOyPBLCX4poMrxuM6 rmlA== X-Forwarded-Encrypted: i=1; AFNElJ/81WsLmbE3/KNY8ggeY4v1lxB3bBc8sxPaptFawFWmBMQ3GsVEh5PgqPikh8GAYlINLZY49P2nMEj+gBA=@vger.kernel.org X-Gm-Message-State: AOJu0Yx9uIz8w7xUN4wkh8xux2cQzFaus0CIp7zz7M5xU0ckfcPnQVSN udpDwSRBO+A14pqIxt816jQY+sbPjhYRCQyaH2aczUaKBkDO9k/mqptYadyl4rlc4zk= X-Gm-Gg: Acq92OFGoG5RBZ9RdY7RmekfkFFM+72jqHEd1QKy/hiGcJsJQ7LIg6aJBxXQpAn9POr TtxyJGiH+e12kmKnAMPAO5My4g3DdQJEASu/wSBJsck0Nwlznbdn9pW5keqN5nX1Z3pyNT5MaA9 y1HXsjcm6HuE10YAdPaaA6Cuebt5/pv6WVKU91T+UOjZFWlQBAy3nVuMc9USBoctJYAbrPlH9lt Xk9dCrvKeriZ+1njtNw4LwUVo8sEPt0W3q6ZSNp8yYBs50/joQKOf8fBMaPU5ouauTv48N4bZtl 5O5r6CNHSlO72k+nhgASnR9h6yxNrJhOVXPRgC3B++guFwhmOXwsrt24HEnadjAcY4bw0Y7/6lc tPFbI9CuzfLmN8IEOYAdUyvcLaipgahvJXgFoce1g0dQdCzey1GGMutn2LyzlVgqkxMZPw4G4A5 fCd6ZRvmcI8dTccQph1hEoXGJHpiCrwYQTRs9puqjwlLw5uUjS5nlUpcEfCQFHPaWg7Aap8tG1C SvaSERi9JDEI0Nc5Un0cldCnaw= X-Received: by 2002:a05:620a:31a9:b0:911:c5c0:d5f2 with SMTP id af79cd13be357-9158b5cbe4dmr170236985a.1.1780449097421; Tue, 02 Jun 2026 18:11:37 -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 af79cd13be357-9158a009fb2sm107640685a.5.2026.06.02.18.11.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 18:11:36 -0700 (PDT) Received: from jgg by wakko with local (Exim 4.97) (envelope-from ) id 1wUa8u-00000004yOx-1sfF; Tue, 02 Jun 2026 22:11:36 -0300 Date: Tue, 2 Jun 2026 22:11:36 -0300 From: Jason Gunthorpe To: Guanghui Feng Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.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, alikernel-developer@linux.alibaba.com Subject: Re: [PATCH v2 05/30] iommu/generic_pt: implement iova_to_phys_length Message-ID: <20260603011136.GR2487554@ziepe.ca> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-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: <20260602104637.1219810-6-guanghuifeng@linux.alibaba.com> On Tue, Jun 02, 2026 at 06:46:12PM +0800, Guanghui Feng wrote: > +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; > > switch (pt_load_single_entry(&pts)) { > case PT_ENTRY_EMPTY: > @@ -159,45 +164,53 @@ 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); > + data->length = log2_to_int(pt_entry_oa_lg2sz(&pts)); I really do want this to accumulate the contiguous length if we are changing things like this. As I said before only iommufd needs to do this, the other drivers don't have to, but the wrapper should take care to give a consistent result so we don't have callers open coding another inefficient loop on top. vfio and iommufd should call it exactly once and then move on. Jason