Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp1996543pxb; Thu, 16 Sep 2021 22:53:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw3k/lH226zxOEMV26e3puLl62pFJH14ttWH85krPqxp0Kh4y6N+qftniIAE8MWayVX4U76 X-Received: by 2002:a50:be8f:: with SMTP id b15mr10788721edk.200.1631858021907; Thu, 16 Sep 2021 22:53:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631858021; cv=none; d=google.com; s=arc-20160816; b=zKdatDgAZcl5mrDPO7ucXHuGVfsftvwco8brxIQ7fD/GGkr+FvsXnOs4QX4T8LJ6w/ DidDYPwGuCMtIqN4uoF6CbxMXGywEh8UguqbOG51NqOuUfFTZXUUESWGqGeBUOETOhK9 kpUzE/o60F364Z58GIMn3Q38UPxgAVeUZzhwNwitq4oRKTr+YQ5z5W2r24jeJj9R950D ra2kHQ2if6+dGw6Lgx0h/LcCJlorgdUYhy1ZDl5qfZwo4EBoy28ZCwS4zrUTvhDzZqux DABRZX56vOBhl07QhOmxrhG34EjbM36NdlqUD89mU7F3MFkGAXz7fYp0+mfgMA5s/pwM BKIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=dMdYSH8yHZ1KdMOhwOuuE+SL6YgkkXhlg3PLd/C/J7I=; b=hAfG9S8LNo7AIEXRkqKCDYs28shIRoNOddVBfxUwkmFrAyMd3yS/T3PzJwZ4m9eaP7 tCFJZRMLHfVWMCEG13J9ZBZO49WVFCBwH4qKzj4McGbgw70sV06iYRABuJagnOKxly5Y q2p+8NvwvUIaAaxfNcNNekgxJ4MOPa4zBXXXCSz2JRw+xVYpDO0Hei289yloTa0Xa8yt s0xGoxHRCCQR0+ev6AKsnZuqzultgLCVI6dvoj2tTwmyZX/csEDf9Wc7NfF/p6te4yNv YcnGUYRV2H6oFet+920N0Nlycnx/weI51X0Pm2AHuzKok97IqYIBdIoeEEiXCVIey1qk 17CA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=xiXdyMWy; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; 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=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f14si5625360edq.321.2021.09.16.22.53.18; Thu, 16 Sep 2021 22:53:41 -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=@suse.de header.s=susede2_rsa header.b=xiXdyMWy; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; 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=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244218AbhIPSSo (ORCPT + 99 others); Thu, 16 Sep 2021 14:18:44 -0400 Received: from smtp-out1.suse.de ([195.135.220.28]:54278 "EHLO smtp-out1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242609AbhIPSR0 (ORCPT ); Thu, 16 Sep 2021 14:17:26 -0400 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 36002223E4; Thu, 16 Sep 2021 18:16:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1631816164; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dMdYSH8yHZ1KdMOhwOuuE+SL6YgkkXhlg3PLd/C/J7I=; b=xiXdyMWyIZhzyai4Dle9GImcw6OLbUV9wcSdAhL9We20zQoEiE6aV7zY3aLtnvIDGckiFS ndybaEFZLsucNIWdlfH8TfSeJKkZ0Ri7B2Tmh/ldrcCeo8EcFrd96nuwSGZKxNY3vwvcyd UTQa9hwRxzMpw55XTCQ64lkR+ZDVE6o= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1631816164; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dMdYSH8yHZ1KdMOhwOuuE+SL6YgkkXhlg3PLd/C/J7I=; b=Y4XSCKyYoBbKGiL4dQ6LY5T/sKsvhySvG1O14vD2n8HEwCH5f3i890wBHUm6u/LhThd7j0 LDN0Ht9ZXQ79xWBg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id E9AE113F79; Thu, 16 Sep 2021 18:16:03 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 4HwaOOOJQ2FleQAAMHmgww (envelope-from ); Thu, 16 Sep 2021 18:16:03 +0000 From: Thomas Zimmermann To: airlied@redhat.com, airlied@linux.ie, daniel@ffwll.ch, hdegoede@redhat.com, marcan@marcan.st, maz@kernel.org, akpm@linux-foundation.org, npiggin@gmail.com, thunder.leizhen@huawei.com, gregkh@linuxfoundation.org Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Thomas Zimmermann Subject: [PATCH 1/5] lib: devres: Add managed arch_phys_wc_add() Date: Thu, 16 Sep 2021 20:15:57 +0200 Message-Id: <20210916181601.9146-2-tzimmermann@suse.de> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210916181601.9146-1-tzimmermann@suse.de> References: <20210916181601.9146-1-tzimmermann@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add devm_arch_phys_wc_add() as managed wrapper around arch_phys_wc_add(). Useful for several grahpics drivers that set framebuffer memory to write combining. Signed-off-by: Thomas Zimmermann --- include/linux/io.h | 2 ++ lib/devres.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/include/linux/io.h b/include/linux/io.h index 9595151d800d..fcd8ea79c5df 100644 --- a/include/linux/io.h +++ b/include/linux/io.h @@ -132,6 +132,8 @@ static inline int arch_phys_wc_index(int handle) #endif #endif +int devm_arch_phys_wc_add(struct device *dev, unsigned long base, unsigned long size); + enum { /* See memremap() kernel-doc for usage description... */ MEMREMAP_WB = 1 << 0, diff --git a/lib/devres.c b/lib/devres.c index b0e1c6702c71..24d4d849ff67 100644 --- a/lib/devres.c +++ b/lib/devres.c @@ -528,3 +528,39 @@ void pcim_iounmap_regions(struct pci_dev *pdev, int mask) } EXPORT_SYMBOL(pcim_iounmap_regions); #endif /* CONFIG_PCI */ + +static void devm_arch_phys_ac_add_release(struct device *dev, void *res) +{ + arch_phys_wc_del(*((int *)res)); +} + +/** + * devm_arch_phys_wc_add - Managed arch_phys_wc_add() + * @dev: Managed device + * @base: Memory base address + * @size: Size of memory range + * + * Adds a WC MTRR using arch_phys_wc_add() and sets up a release callback. + * See arch_phys_wc_add() for more information. + */ +int devm_arch_phys_wc_add(struct device *dev, unsigned long base, unsigned long size) +{ + int *mtrr; + int ret; + + mtrr = devres_alloc(devm_arch_phys_ac_add_release, sizeof(*mtrr), GFP_KERNEL); + if (!mtrr) + return -ENOMEM; + + ret = arch_phys_wc_add(base, size); + if (ret < 0) { + devres_free(mtrr); + return ret; + } + + *mtrr = ret; + devres_add(dev, mtrr); + + return ret; +} +EXPORT_SYMBOL(devm_arch_phys_wc_add); -- 2.33.0