Received: by 2002:a05:7412:2a8c:b0:e2:908c:2ebd with SMTP id u12csp1203545rdh; Mon, 25 Sep 2023 06:20:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHv3vTs/oTYiMlOWpa0395dOeByL3vPSgzacSL2s5zV2Vdzq6kCcNlFW1BkEAO66XKFVPP7 X-Received: by 2002:a05:6a00:2e93:b0:690:2ad9:1436 with SMTP id fd19-20020a056a002e9300b006902ad91436mr6127266pfb.7.1695648005845; Mon, 25 Sep 2023 06:20:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695648005; cv=none; d=google.com; s=arc-20160816; b=Nsa66Xdc6YbuFnvWdgNxe7t71r0lOs429Zu5NN55ZUYnMVEmlS/U6E2fwE33NkjLSk OfSd5ZAulyINjvfQIbW3f8j2pNtCsR21bZ0mTKHIq7lNcHqFagQjaXSwOet3q14M/rZU MCi0D9uPueRmzpdoecngbi7ispzxAS6ARHtPvnV/ZcOWthmQD52CEQHlNy4LJGbPn7qv J9yqGlOc0M/QiNQsb2YZNfj6iLixGNZjKhFF5eS9Yzh1FHva5Iajgll5bkUPPCkh93ea 0lng8n0H0BjVNjWG6ISsBwY+Z8DkQCH4q5YkZB6PvIpmQjGvPoMn/FUTU3mMDmCqRgRq OBCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=DoGn44BzX6ZY68l2FxlZH5WyTP8l4dhTQI+yyDgyBno=; fh=6CnY0PDFv7SwsuLWtHYOQERiNjiEarqHOImF33gov24=; b=LNgrXIn1RCLU2TmI4SO4TV2ajERy/TxZxavdZhFL6bEIQ+ta1yN7td34kbQ2r/JgZQ OyZehvaUXS5Fjk/1xLFu6IvpqfMpx/J2WYKxDxP+2NAOrz0k6iizaOid8c55nyMYcbTg HIGqMgaW6GGS7m8NOzCvn88Iw5jvQU95P3HXkX1NFETwx7epmxljrpgbi0NyHF6Ad+1v DCt+JXMi9vcaqOsdwlbG0U4Rjz86hu/G0oClieJufqRExo8YBCCcpdBUIyxFKdn/maOV 8+qMP7JorpxvQNPE+u2mHfbuE+avk5FFmnyoA6wQNJaynFTZMfPqF/6vEODjBqGD7Beh KIbA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id cj15-20020a056a00298f00b0068e2d888713si9858932pfb.167.2023.09.25.06.20.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Sep 2023 06:20:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 2DDD2802573B; Mon, 25 Sep 2023 06:08:06 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231627AbjIYNIE (ORCPT + 99 others); Mon, 25 Sep 2023 09:08:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49346 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231603AbjIYNIC (ORCPT ); Mon, 25 Sep 2023 09:08:02 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 485019F for ; Mon, 25 Sep 2023 06:07:55 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id DEE8CDA7; Mon, 25 Sep 2023 06:08:32 -0700 (PDT) Received: from [10.57.0.188] (unknown [10.57.0.188]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 832CE3F5A1; Mon, 25 Sep 2023 06:07:53 -0700 (PDT) Message-ID: Date: Mon, 25 Sep 2023 14:07:50 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH v2 1/2] iommu/virtio: Make use of ops->iotlb_sync_map Content-Language: en-GB To: Jason Gunthorpe Cc: Jean-Philippe Brucker , Niklas Schnelle , Joerg Roedel , Will Deacon , virtualization@lists.linux-foundation.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org References: <20230918-viommu-sync-map-v2-0-f33767f6cf7a@linux.ibm.com> <20230918-viommu-sync-map-v2-1-f33767f6cf7a@linux.ibm.com> <20230919081519.GA3860249@myrica> <20230919144649.GT13795@ziepe.ca> <20230922075719.GB1361815@myrica> <20230922124130.GD13795@ziepe.ca> <900b644e-6e21-1038-2252-3dc86cbf0a32@arm.com> <20230922162714.GH13795@ziepe.ca> <123c53c3-d259-9c20-9aa6-0c216d7eb3c0@arm.com> <20230922233309.GI13795@ziepe.ca> From: Robin Murphy In-Reply-To: <20230922233309.GI13795@ziepe.ca> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-3.4 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Mon, 25 Sep 2023 06:08:06 -0700 (PDT) On 2023-09-23 00:33, Jason Gunthorpe wrote: > On Fri, Sep 22, 2023 at 07:07:40PM +0100, Robin Murphy wrote: > >> virtio isn't setting ops->pgsize_bitmap for the sake of direct mappings >> either; it sets it once it's discovered any instance, since apparently it's >> assuming that all instances must support identical page sizes, and thus once >> it's seen one it can work "normally" per the core code's assumptions. It's >> also I think the only driver which has a "finalise" bodge but *can* still >> properly support map-before-attach, by virtue of having to replay mappings >> to every new endpoint anyway. > > Well it can't quite do that since it doesn't know the geometry - it > all is sort of guessing and hoping it doesn't explode on replay. If it > knows the geometry it wouldn't need finalize... I think it's entirely reasonable to assume that any direct mappings specified for a device are valid for that device and its IOMMU. However, in the particular case of virtio, it really shouldn't ever have direct mappings anyway, since even if the underlying hardware did have any, the host can enforce the actual direct-mapping aspect itself, and just present them as unusable regions to the guest. >>> What do you think about something like this to replace >>> iommu_create_device_direct_mappings(), that does enforce things >>> properly? >> >> I fail to see how that would make any practical difference. Either the >> mappings can be correctly set up in a pagetable *before* the relevant device >> is attached to that pagetable, or they can't (if the driver doesn't have >> enough information to be able to do so) and we just have to really hope >> nothing blows up in the race window between attaching the device to an empty >> pagetable and having a second try at iommu_create_device_direct_mappings(). >> That's a driver-level issue and has nothing to do with pgsize_bitmap either >> way. > > Except we don't detect this in the core code correctly, that is my > point. We should detect the aperture conflict, not pgsize_bitmap to > check if it is the first or second try. Again, that's irrelevant. It can only be about whether the actual ->map_pages call succeeds or not. A driver could well know up-front that all instances support the same pgsize_bitmap and aperture, and set both at ->domain_alloc time, yet still be unable to handle an actual mapping without knowing which instance(s) that needs to interact with (e.g. omap-iommu). Thanks, Robin.