From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.9 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E0C77C43461 for ; Thu, 17 Sep 2020 14:39:08 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7CD802223C for ; Thu, 17 Sep 2020 14:39:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="GFTFOf9K" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7CD802223C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 03F196B0037; Thu, 17 Sep 2020 10:39:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F32816B0055; Thu, 17 Sep 2020 10:39:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E48856B005A; Thu, 17 Sep 2020 10:39:07 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0190.hostedemail.com [216.40.44.190]) by kanga.kvack.org (Postfix) with ESMTP id CEB7D6B0037 for ; Thu, 17 Sep 2020 10:39:07 -0400 (EDT) Received: from smtpin16.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 99C2A180AD822 for ; Thu, 17 Sep 2020 14:39:07 +0000 (UTC) X-FDA: 77272810734.16.view18_261244927123 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin16.hostedemail.com (Postfix) with ESMTP id 64AC2100E6903 for ; Thu, 17 Sep 2020 14:39:07 +0000 (UTC) X-HE-Tag: view18_261244927123 X-Filterd-Recvd-Size: 4504 Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by imf04.hostedemail.com (Postfix) with ESMTP for ; Thu, 17 Sep 2020 14:39:06 +0000 (UTC) Received: by mail-wr1-f68.google.com with SMTP id m6so2379435wrn.0 for ; Thu, 17 Sep 2020 07:39:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=blq2eWz1TJY2NfaOXXK0EtWvwOCukS98JLYvKkk93sM=; b=GFTFOf9KQo9OYFZDXVIhEsIqyfD0L+/FflZiDJdF9RcHJ5dOvFWQzNepjcs7Ivc/ma QWd66lW5nQX7igMeeWoP1qZ61ZaEvQuOkN5I/O8d8sP+nemrwyPJETg9H7nPSP5rRuf0 e5JebqaoNMJe8Uy9S/AutgpgQOycEmMXKtwlJX+xi7JV8+igu0AY+sAmYUNhi8hN36ui H1WDDLMZP1vYQSjlYBEuWqXwOHjA4+I4Dt7fueOmsgmQgq3AgKAA6nOinN/7Frj0gPfr sG5RYsh7UJEHIx/Y+JtEkzG/HmRUtBA2mp8PUlAJNxRN23FixjhML1gh1Fg5/Af1sAVs coTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=blq2eWz1TJY2NfaOXXK0EtWvwOCukS98JLYvKkk93sM=; b=b22BLehPASx6Q5jgwpbVuV2RVq75A7VFNgMkB2rYeVI3BBgtFC4mIZZkALBa51DbIF XZn/dcTpy3hOA3A5Q/AZxNNOLpRceV8OuE5hNgble3MYQq1NZIkCJWB0csSdgpccYr4p jUXVI+tRI/hGEW3ILQdHYkUgO2qMfEjpX3gPdG4gWRpYFuyz9rJBkgUVuilBGzlg5ZME u0qNRycfD2USCqyyNHxRyVbkDm7FAip0poy49IpB9fAYGfSIwrnrN34mqIkgSZ7iREhP mb8mLJ27VMQwml+CDf2SQ3/QsLtEXZQ5e5Bb8B+hdiTACQtMfzfQQO+3A5c8sabu9HEb AHZQ== X-Gm-Message-State: AOAM5308DwZncArBMYeydQZJ4cuA6t9LXV5AcZrGPv0HiCVVg3s4LlMa 1o4sitntzQSlbGoK7zSNCAHb2g== X-Google-Smtp-Source: ABdhPJwT7jNG6KNnNsiF2CoCm68Ve7JQv1AJXwjyTV/nuEqz1zbskGeAhcfQ5nK/wfDSAhXGLzRoww== X-Received: by 2002:a5d:470f:: with SMTP id y15mr32317774wrq.420.1600353545804; Thu, 17 Sep 2020 07:39:05 -0700 (PDT) Received: from myrica ([2001:1715:4e26:a7e0:116c:c27a:3e7f:5eaf]) by smtp.gmail.com with ESMTPSA id m10sm11033383wmi.9.2020.09.17.07.39.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2020 07:39:05 -0700 (PDT) Date: Thu, 17 Sep 2020 16:38:46 +0200 From: Jean-Philippe Brucker To: Auger Eric Cc: iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, fenghua.yu@intel.com, catalin.marinas@arm.com, robin.murphy@arm.com, zhangfei.gao@linaro.org, will@kernel.org Subject: Re: [PATCH RESEND v9 09/13] iommu/arm-smmu-v3: Seize private ASID Message-ID: <20200917143846.GD134903@myrica> References: <20200817171558.325917-1-jean-philippe@linaro.org> <20200817171558.325917-10-jean-philippe@linaro.org> <7a67022c-a33a-5ea1-1bfb-4154d83ca009@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7a67022c-a33a-5ea1-1bfb-4154d83ca009@redhat.com> X-Rspamd-Queue-Id: 64AC2100E6903 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam01 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, Sep 07, 2020 at 06:41:11PM +0200, Auger Eric wrote: > > +/* > > + * Try to reserve this ASID in the SMMU. If it is in use, try to steal it from > > + * the private entry. Careful here, we may be modifying the context tables of > > + * another SMMU! > Not sure I got what you meant by this comment. That comment does need refreshing: /* * Check if the CPU ASID is available on the SMMU side. If a private context * descriptor is using it, try to replace it. */ > > + */ > > static struct arm_smmu_ctx_desc * > > arm_smmu_share_asid(struct mm_struct *mm, u16 asid) > > { > > + int ret; > > + u32 new_asid; > > struct arm_smmu_ctx_desc *cd; > > + struct arm_smmu_device *smmu; > > + struct arm_smmu_domain *smmu_domain; > > > > cd = xa_load(&arm_smmu_asid_xa, asid); > > if (!cd) > > @@ -27,8 +36,31 @@ arm_smmu_share_asid(struct mm_struct *mm, u16 asid) > > return cd; > > } > > > > - /* Ouch, ASID is already in use for a private cd. */ > > - return ERR_PTR(-EBUSY); > > + smmu_domain = container_of(cd, struct arm_smmu_domain, s1_cfg.cd); > > + smmu = smmu_domain->smmu; > > + > > + ret = xa_alloc(&arm_smmu_asid_xa, &new_asid, cd, > > + XA_LIMIT(1, 1 << smmu->asid_bits), GFP_KERNEL); > XA_LIMIT(1, (1 << smmu->asid_bits) - 1), GFP_KERNEL) Good catch Thanks, Jean