Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp2478304pxb; Mon, 19 Apr 2021 06:43:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzgQgU3WEvK9IhRAXyZGucGyy4XmEG+HOYuxSs7Sql2WR9QwVt5tX9lDW0CwS5SH0elasrU X-Received: by 2002:a65:4887:: with SMTP id n7mr11841712pgs.14.1618839817058; Mon, 19 Apr 2021 06:43:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618839817; cv=none; d=google.com; s=arc-20160816; b=UVMXzR6GQNZsiCvz4DO0xQZOs2C2u4F1m4+tu4qS9Ek06pNM6x268IeusGWrUzCgFx jIDYbD6VN+O89BzE/5xgIb52Wh7BBrxPz72tf+Sh8uNio/uKXhJpBh1MeUMM+mqHCy1c 4quCvPJl6Pif5oUk4SNSfnsLtIOBoSeMbUOpDCjWS2Vw+i6GosQOiWr437qJBHn2UKct b+8BFpPyqWx21ayOJY60smO2ioiwAomwz0iWpeExkDvEospussySsgJkBcfw8L+QErlx BGh4KhUKvX00L6TY/tThS2bxwafmKXoDcUZ8+bW8vH7MOYvKhgv2TjoTyu/FnsyuGP3t 8bwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:subject:from :references:to:cc:ironport-sdr:ironport-sdr; bh=CI74qH9jlUkBzBoKz0gAPjasFcn8bNq9W2zBzn/rjMw=; b=eKZqrrfa68hS9EYgtmGo+RHfb9WT/3X5rv1zmlLXgPqQLi7vo3SfDN5JsJw6YNLZX3 Rz9HhjIhg4yqoF5P1V3vGPR+ahOn0c2CHEGoauJSYF55jM90mqZwW/bNtJi1oMojy2s9 FmpOtFmj38sMJP+3NOL/vi4l2ss/50gRakcT2KhKrRWqkre9mLjxfcSc/QYo2WBCdMDW 8wSyta4rSC2GXb9R26Nm9G5zRlaEqSHakcNmIgBDxIfekX2+E5emntTW5lH/kESRLBkm bnMwAIBDADnott4QYN/MlzEXcCqnC655g0tH+W8a/aSNz2UMyFwu7A0sNY6u9P6sWhiD 321A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e4si21378157pga.276.2021.04.19.06.43.24; Mon, 19 Apr 2021 06:43:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243225AbhDSNkR (ORCPT + 99 others); Mon, 19 Apr 2021 09:40:17 -0400 Received: from mga11.intel.com ([192.55.52.93]:64501 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242316AbhDSNe2 (ORCPT ); Mon, 19 Apr 2021 09:34:28 -0400 IronPort-SDR: 9TMB7mZEonMgeSRguQJkN4ixEpxJ6n5VJdiYqypKiXAzxwAz2qTZgd/bQnemdrgFyy4YzyCzUa PFwVFGkgMk5A== X-IronPort-AV: E=McAfee;i="6200,9189,9959"; a="192137388" X-IronPort-AV: E=Sophos;i="5.82,234,1613462400"; d="scan'208";a="192137388" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Apr 2021 06:33:55 -0700 IronPort-SDR: 0i+wEhGbCQP8Avpf0xm0vMRCRN4QY7mcaZHGnZjD6+zAPyurprhJLO6MMtOQfxvnKw4hGQi5iT gQehU6KPWmxA== X-IronPort-AV: E=Sophos;i="5.82,234,1613462400"; d="scan'208";a="426512252" Received: from blu2-mobl3.ccr.corp.intel.com (HELO [10.254.210.121]) ([10.254.210.121]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Apr 2021 06:33:51 -0700 Cc: baolu.lu@linux.intel.com, Alex Williamson , Cornelia Huck , Kirti Wankhede , wanghaibin.wang@huawei.com, jiangkunkun@huawei.com, yuzenghui@huawei.com, lushenming@huawei.com To: Keqian Zhu , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux-foundation.org, Robin Murphy , Will Deacon , Joerg Roedel , Yi Sun , Jean-Philippe Brucker , Jonathan Cameron , Tian Kevin References: <20210413085457.25400-1-zhukeqian1@huawei.com> <20210413085457.25400-3-zhukeqian1@huawei.com> <491da550-dc54-42e6-ac91-13d411575fad@huawei.com> From: Lu Baolu Subject: Re: [PATCH v3 02/12] iommu: Add iommu_split_block interface Message-ID: Date: Mon, 19 Apr 2021 21:33:48 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 MIME-Version: 1.0 In-Reply-To: <491da550-dc54-42e6-ac91-13d411575fad@huawei.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Keqian, On 2021/4/19 17:32, Keqian Zhu wrote: >>> +EXPORT_SYMBOL_GPL(iommu_split_block); >> Do you really have any consumers of this interface other than the dirty >> bit tracking? If not, I don't suggest to make this as a generic IOMMU >> interface. >> >> There is an implicit requirement for such interfaces. The >> iommu_map/unmap(iova, size) shouldn't be called at the same time. >> Currently there's no such sanity check in the iommu core. A poorly >> written driver could mess up the kernel by misusing this interface. > Yes, I don't think up a scenario except dirty tracking. > > Indeed, we'd better not make them as a generic interface. > > Do you have any suggestion that underlying iommu drivers can share these code but > not make it as a generic iommu interface? > > I have a not so good idea. Make the "split" interfaces as a static function, and > transfer the function pointer to start_dirty_log. But it looks weird and inflexible. I understand splitting/merging super pages is an optimization, but not a functional requirement. So is it possible to let the vendor iommu driver decide whether splitting super pages when starting dirty bit tracking and the opposite operation during when stopping it? The requirement for upper layer is that starting/stopping dirty bit tracking and mapping/unmapping are mutually exclusive. > > On the other hand, if a driver calls map/unmap with split/merge at the same time, > it's a bug of driver, it should follow the rule. > Best regards, baolu