Received: by 2002:ab2:6816:0:b0:1f9:5764:f03e with SMTP id t22csp2183537lqo; Sun, 19 May 2024 18:26:14 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVYGHUeP5BY5hGuC2wjzBFs0oeV8i/3f97CVaRQHAqj7RX/yt0QZfpBe9J5vSwfaO1pSFrfI1j3RRoKfPtA+ELSBestre/QyXSh4LTXBQ== X-Google-Smtp-Source: AGHT+IGLXaRAzQfTx4iaAp0aaepOxd4LoaG6n9F3Biyc/7yafyi6xjSW1DeEQgB90+invjLUf5oI X-Received: by 2002:a5d:5448:0:b0:34f:c7c8:5a12 with SMTP id ffacd0b85a97d-3504a73e7eemr22246802f8f.40.1716168373927; Sun, 19 May 2024 18:26:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1716168373; cv=pass; d=google.com; s=arc-20160816; b=DY8zgOrU1CeIdxKIhRIwJuiET401VUSqWeY8YmgNkyIseQvENZz9DRAujtc0baFOq3 +xWeJkKP7So3mszCeSkTql0YnuSMVJioW94oDWk/lT+aS/DPofhyZHPpdYzuYiUEIKHS dIlCPgg8eYCxw8D0n1e++6z3bjp9nyMWAC8h7dKGreVftqThISfoC8ffX+V/nB/JJ40d +18FbWCD/J6EZM24PJm2jpTtfGmz5heOyvVkXFM0eabb0J7Md4qEsf8EmeCj2MDPMjZ2 +3QoXbHuakDMkJvNByGCadyshN9W4XQQxFk/1dozCTDtMoSVhXsegF7NSt5bK80Tv5+v rsmQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:cc:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id:dkim-signature; bh=SGOpDDLD/aAlOziN+kzv/NW+j5wavNUV+GyifgwrXSU=; fh=oj0MC99jJmXr9VOxYru8PCxqsxVpffpkkk/RjcP5DFo=; b=Qot263eRzIoVVhiDn8mLifrzcOUYgpUG2K893XfQIALpykGbFgo7VhA6SwHtSp3R5a r6O32H5ZEbudUWmEEUo2yInnbbMEq5KiJRoWK+GEeXl5kepnKD++jpHgBUokD39HE1kz 5jt2ccLis38tncQ5h8UsdJkupkOLwz9zmxG7h9fKuT6/Ke8LSM47C5u2AS0Z9qiValSf olIUoqEe/IrzPa7dGxDFxYcG4NHojMoa4DcU2uYDhLt4H7CMooLFvevv9cK9RlwtrNf4 tWKFEWLRepjd5WFbBci6azI+LtzWj0D5E/e3LmquNdIEkifnvcyCLWOAFk/mTZjtQXE+ PKdQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=iKaxybCj; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-183322-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-183322-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id a640c23a62f3a-a5a1797be18si1264474266b.217.2024.05.19.18.26.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 May 2024 18:26:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-183322-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=iKaxybCj; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-183322-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-183322-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id A83FC1F21673 for ; Mon, 20 May 2024 01:26:13 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BA18D746E; Mon, 20 May 2024 01:26:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="iKaxybCj" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 925DA367 for ; Mon, 20 May 2024 01:26:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716168365; cv=none; b=FgjH5e43d6Ymc2juwRnvsiOgn97k6r1x9OBnW2vm547mw5M82CBeRu8U532wrMDWvuDz9MfOZ/70W2tZ0iMffBuBGPGNV5yyL+OC8+1f+y2VHc+Sj3tp1RuoPqBaibPRpM+jG4i0Dsbdzm2q3cBLsbE16cCKUnvjG1wuaxf6HoI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716168365; c=relaxed/simple; bh=TtwtjcXrrA11KTveXffexyVsNN0b1pCRGDvph290NUQ=; h=Message-ID:Date:MIME-Version:Cc:Subject:To:References:From: In-Reply-To:Content-Type; b=Tp7XDYyHMVrCvDmrM+ewDlAdIb4w0kn9dKBq/UNP5pbxhi2kk5DgA3ojcuo4t3tRwEP9h7hDQ05ToMR1wMiZYHDdCa7UZXimxR9VQ/kEF8cP+NUcLUJ8H5zdFVyFPT7ObC5yAbERlA0W/iM0+OaQNAKMdtGb51L/MCa4aGDwyNM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=iKaxybCj; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1716168364; x=1747704364; h=message-id:date:mime-version:cc:subject:to:references: from:in-reply-to:content-transfer-encoding; bh=TtwtjcXrrA11KTveXffexyVsNN0b1pCRGDvph290NUQ=; b=iKaxybCj5OqAkxvTzBC7AXSpbhYxkGxiT5dvqURUO3348U9qR/AXeptN K9/Q+BxLb+zBoh5XdscFlbMSaQSiZImeiVpt0e8878EFSr5IuKRImim8w 0JfEjT+arQ2VpokWiw1+7zE9aoBZH2Jn/rWzavBz+c1uvxv3DHE8NYgXb Ez1o7WS/WrUDbLkrMZEf4Cu1tXrzmGJs0H86KQPfhR5HHy1epwIoq5rDa LKpeUFG4NtdUnTYTl2K1y4C45fMKu6N0JCzxejW0eo/sh1eScblLAgGYZ 86fttRji4l6wn/+mC591j5xucuYLLsxbGMMB5dx0XNdoWw4jSpT8g0I1c Q==; X-CSE-ConnectionGUID: GuknArGuStW0lYxIE6r0tA== X-CSE-MsgGUID: NOqtds/cSQmQsKjXxG1/gw== X-IronPort-AV: E=McAfee;i="6600,9927,11077"; a="12498183" X-IronPort-AV: E=Sophos;i="6.08,174,1712646000"; d="scan'208";a="12498183" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 May 2024 18:26:04 -0700 X-CSE-ConnectionGUID: SI+sGxD1SaWg/GFY7brOWg== X-CSE-MsgGUID: db5ZHzgxSsuIxnX9A7ZDYQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,174,1712646000"; d="scan'208";a="36786047" Received: from unknown (HELO [10.239.159.127]) ([10.239.159.127]) by fmviesa005.fm.intel.com with ESMTP; 19 May 2024 18:26:01 -0700 Message-ID: <79bacf16-dfa6-42c7-b02d-117985e38472@linux.intel.com> Date: Mon, 20 May 2024 09:24:09 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Cc: baolu.lu@linux.intel.com, "iommu@lists.linux.dev" , "virtualization@lists.linux-foundation.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH v5 5/9] iommufd: Add iommufd fault object To: "Tian, Kevin" , Jason Gunthorpe , Joerg Roedel , Will Deacon , Robin Murphy , Jean-Philippe Brucker , Nicolin Chen , "Liu, Yi L" , Jacob Pan , Joel Granados References: <20240430145710.68112-1-baolu.lu@linux.intel.com> <20240430145710.68112-6-baolu.lu@linux.intel.com> Content-Language: en-US From: Baolu Lu In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 5/15/24 4:37 PM, Tian, Kevin wrote: >> +static ssize_t iommufd_fault_fops_write(struct file *filep, const char __user >> *buf, >> + size_t count, loff_t *ppos) >> +{ >> + size_t response_size = sizeof(struct iommu_hwpt_page_response); >> + struct iommufd_fault *fault = filep->private_data; >> + struct iommu_hwpt_page_response response; >> + struct iommufd_device *idev = NULL; >> + struct iopf_group *group; >> + size_t done = 0; >> + int rc; >> + >> + if (*ppos || count % response_size) >> + return -ESPIPE; >> + >> + mutex_lock(&fault->mutex); >> + while (count > done) { >> + rc = copy_from_user(&response, buf + done, response_size); >> + if (rc) >> + break; >> + >> + if (!idev || idev->obj.id != response.dev_id) >> + idev = container_of(iommufd_get_object(fault->ictx, >> + response.dev_id, >> + >> IOMMUFD_OBJ_DEVICE), >> + struct iommufd_device, obj); >> + if (IS_ERR(idev)) >> + break; >> + >> + group = xa_erase(&idev->faults, response.cookie); >> + if (!group) >> + break; > is 'continue' better? If we can't find a matched iopf group here, it means userspace provided something wrong. The current logic is that we stop here and tell userspace that only part of the faults have been responded to and it should retry the remaining responses with the right message. Best regards, baolu