Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp2422239pxu; Fri, 9 Oct 2020 17:25:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxcdOQaiZa38OZuOT69o7lnYmi6Bp8d3tV7mxInvKBsjz76ELBqLtG4LsioPeLnNq5RVfA8 X-Received: by 2002:a50:9b5b:: with SMTP id a27mr1887846edj.374.1602289527760; Fri, 09 Oct 2020 17:25:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602289527; cv=none; d=google.com; s=arc-20160816; b=axRLMYZeJJTqvLaxHpQaNe32niiYcdPhMZjrInortizCDepKkaFiR3y5SbMoBdMCiK /nrBQJtMlVYOPBi2Kz1bU329n9Uw8d7VJjq2lLiOmEs3JI0U6tWnednXNraiK6kRd2jS ZbLWatbiUPAKTVLxmzH7Pi10NU3VcXKGm9lcyb0OV8ZeZO0PoPivPM1kXYaDBnX2RZEF ZbPAdvJ+yNW4z8Be3FPuNapnAWyzTCN+RWns51RYuMAyzTTITneSDz3zzkMikMX2t3+W 5MPsuhtOa+6nVPoYuPIe1lOJKypqEgkI7wb9//gMCL2Ylh8XYumDjGEe87YCQy24WLn8 19eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=oVIvf//qjy+hkVJdi59awFrM6IZJ9JvpO2cbPx+MdNs=; b=VXgYFSeuHHKt9WIIXnnlso5yOpWF4nYmAgRY4hhRCfHDPCl2qKH9iXwk8z0iBOfpUC vIZCvE/vQFvNe3s6Ej09f6fO6LHH3owzQ+HjtdAFm9uOe4TdDTuHF0VJfk0N9P2laCzG XrUywjrOPpOXFYEpZtWc3lWCu57sdNUftF7+VgYvsEilivIWs/PHauwJa6ZaSN5pzp7R twa1dV9M31XG0MFLlQ5Mnh4hntd5egLhOBDEkNMhf6Ot/FRMQtNTwVQXzWSWYdgeLWyv 9HExlYxr5ITHhOqjYvf1+TmTx8fUe4X0TF8xaqzUZUkh2su4dPLEAJiog894L/rVtenO O00w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel-com.20150623.gappssmtp.com header.s=20150623 header.b=iLTsuWlJ; 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 i7si1603506edr.448.2020.10.09.17.25.04; Fri, 09 Oct 2020 17:25:27 -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; dkim=pass header.i=@intel-com.20150623.gappssmtp.com header.s=20150623 header.b=iLTsuWlJ; 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 S2390419AbgJIS3J (ORCPT + 99 others); Fri, 9 Oct 2020 14:29:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390412AbgJIS3H (ORCPT ); Fri, 9 Oct 2020 14:29:07 -0400 Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 350BFC0613D8 for ; Fri, 9 Oct 2020 11:29:07 -0700 (PDT) Received: by mail-ed1-x542.google.com with SMTP id g4so10390907edk.0 for ; Fri, 09 Oct 2020 11:29:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=oVIvf//qjy+hkVJdi59awFrM6IZJ9JvpO2cbPx+MdNs=; b=iLTsuWlJpjQ9lEPve4/i/wPKY7/WDc/EpLX4/nS4Vs7XATh36CjNusW0cAwcZzYVKB zc2lO4Dz7JRsbYqzp49bDWt7Nj2zjd+nQ3ChgcqgyusxmNzv8xBi0X9an51ub82xSMED ypIlohpfnHirbuqkE/mXCCbfP8pd5KhfDsovroGKCzUs8q45yo4Fd6/w1fPvA40p9Zsk Fhj1k3kJxsDCiab+2o7o95nm9iELSt9Olz0BwNfHJpYbcdvZw4q4VKPfH3rzH+ZSLvin 8ENlmZNYLWdWLsvLquEHYWK2U/S9AfZj3u8X6XmfQJoqlt/05+soeGykQWGSaZLnN0RZ i9tQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=oVIvf//qjy+hkVJdi59awFrM6IZJ9JvpO2cbPx+MdNs=; b=YpuvNJYtx7NHpi3LHbJjD6Axelp1XeOxExc7sge7Tm7wnjsTLztVwDaH+im1rDGtre Dqmbt/+VMU4dCTsvo/LzD2BM/mX47NuCiGkXNN+iZsojP1zyv41uK22Vl9td4Qn3RPjf 94q9VgEF8MKrrmxDD06uKoYVHh9F3kWMCWQSW7MVTCmGVL9XGJBZfaTAl/Rr0dMQ/0c6 sPpb2YXe2sJ2Pk3AARmifiTA7YBI4kMHD7Cwgfjlk4Juogpzp2Xc9MUZHJt7sg/LAUQm dDpSVFkRGk7DPnYD0RsjKcrv77bnjilm8qpGDlqkx7spa+1vbtdlSNsH+dFPVHP/Z5LX wi9g== X-Gm-Message-State: AOAM531R0zdAj59wELpcV89PqlaefFumMParCU5bZjaPbIoDXqi1ht5z 1gV+jvBBlxwD04S9ZU33dIreFmONcgT1M3hqY//qsw== X-Received: by 2002:a50:d0d0:: with SMTP id g16mr559132edf.18.1602268145655; Fri, 09 Oct 2020 11:29:05 -0700 (PDT) MIME-Version: 1.0 References: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> <20201009075934.3509076-15-daniel.vetter@ffwll.ch> <20201009123109.GO5177@ziepe.ca> <20201009143209.GS5177@ziepe.ca> In-Reply-To: <20201009143209.GS5177@ziepe.ca> From: Dan Williams Date: Fri, 9 Oct 2020 11:28:54 -0700 Message-ID: Subject: Re: [PATCH v2 14/17] resource: Move devmem revoke code to resource framework To: Jason Gunthorpe Cc: Daniel Vetter , DRI Development , LKML , KVM list , Linux MM , Linux ARM , linux-samsung-soc , "open list:DMA BUFFER SHARING FRAMEWORK" , linux-s390 , Daniel Vetter , Kees Cook , Andrew Morton , John Hubbard , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Jan Kara , Arnd Bergmann , Greg Kroah-Hartman , David Hildenbrand , "Rafael J. Wysocki" Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Oct 9, 2020 at 7:32 AM Jason Gunthorpe wrote: > > On Fri, Oct 09, 2020 at 04:24:45PM +0200, Daniel Vetter wrote: > > On Fri, Oct 9, 2020 at 2:31 PM Jason Gunthorpe wrote: > > > > > > On Fri, Oct 09, 2020 at 09:59:31AM +0200, Daniel Vetter wrote: > > > > > > > +struct address_space *iomem_get_mapping(void) > > > > +{ > > > > + return iomem_inode->i_mapping; > > > > > > This should pair an acquire with the release below > > > > > > > + /* > > > > + * Publish /dev/mem initialized. > > > > + * Pairs with smp_load_acquire() in revoke_iomem(). > > > > + */ > > > > + smp_store_release(&iomem_inode, inode); > > > > > > However, this seems abnormal, initcalls rarely do this kind of stuff > > > with global data.. > > > > > > The kernel crashes if this fs_initcall is raced with > > > iomem_get_mapping() due to the unconditional dereference, so I think > > > it can be safely switched to a simple assignment. > > > > Ah yes I checked this all, but forgot to correctly annotate the > > iomem_get_mapping access. For reference, see b34e7e298d7a ("/dev/mem: > > Add missing memory barriers for devmem_inode"). > > Oh yikes, so revoke_iomem can run concurrently during early boot, > tricky. It runs early because request_mem_region() can run before fs_initcall. Rather than add an unnecessary lock just arrange for the revoke to be skipped before the inode is initialized. The expectation is that any early resource reservations will block future userspace mapping attempts.