Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp1997468pxb; Thu, 16 Sep 2021 22:55:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwJFc4L8FSDn6FrFckKUc2KHfaaHKBKPecnFJU68TZ+R5+1ICz0TnNqcpqDd9gvxAFsgvp9 X-Received: by 2002:a17:906:4f97:: with SMTP id o23mr10126424eju.418.1631858155584; Thu, 16 Sep 2021 22:55:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631858155; cv=none; d=google.com; s=arc-20160816; b=j8h5j3F7cVdVl9kkvQvnz1tuxBbHL5nkdAwE6+2XomvsIOujIxDkieQ31dSeve/5Ji yHYBZ+AZxNDkURuN401IWkaN8EoeQeHYa+b3X73EUJHCyM4eo6e4YkuO7SyBS+Dn/uqJ wKQkMV7zaoHDvXJT5Gk4oktFMFK/l5UOpAGFZ4vpp7KLO3y5U4/kLf9SK8c1bUI74hcC c9fsDCIuhe0AecUBYSEBOL/wNf0z2DcsEa4z467b8K7URDMjTClYZv8tqC2IN1Icl5oo WiuhlOIgIlAQIAZn6+yUbDynoPJiPZqcJvqDIevaPmd0S7tzmSVrhPD+4vbZx7Y+kRS/ +tXA== 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=X5jWyntKao/5/t7BXjsuPe0qf6PhsdqVWHUX41cSqV8=; b=pd0u4xOh2dkFz6QaJ+DPgDY9jz4L6jJ6zZ79ndJeol8L2ZR1Z9pnd5aZcPgrm9LA9s 2X11pm8vWr+FMd6pFAcnbIIWVITNnoCssGYrhhncwRUIs7gfuw7Ov1a3GwesG7RnddUt VFfH47XrP0C1IViRZINVhrV7GT9yNPnB1GdQnROqlCbqTeIMNV7Xh+v9RPzqywjqiMt8 420sqDftYSvjljsqGkNStqUdJoYYPJd3/Lc7iI5047xEiaEpottsjC/S1YT/LiUtp6nz ju9UR39bIidF91iKT6bRGtDyAFrnD7HpVfC+9+odz+AdcXv0g93CWUezNxNjm9ww61o3 28nw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=QsDxTcWU; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=um+qbOU9; 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 w5si5739898edr.146.2021.09.16.22.55.30; Thu, 16 Sep 2021 22:55:55 -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=QsDxTcWU; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=um+qbOU9; 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 S1344197AbhIPSSv (ORCPT + 99 others); Thu, 16 Sep 2021 14:18:51 -0400 Received: from smtp-out1.suse.de ([195.135.220.28]:54312 "EHLO smtp-out1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242633AbhIPSR0 (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 7C323223E7; 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=X5jWyntKao/5/t7BXjsuPe0qf6PhsdqVWHUX41cSqV8=; b=QsDxTcWUPVm71MKVOp7upKy5w7yLwFyodAu5vullxKqogX6yF5N7NLP0+dastxIeF586R9 7tH7so5zuV6tEBNwFksuIR9JvjMRNc/+dlrr9HS4CsZ8r5Q9S2L0maAZzR2Hg2HvTP/TX7 x4ACZS26Y1xeyP7bPDtsHjY41d5l0sw= 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=X5jWyntKao/5/t7BXjsuPe0qf6PhsdqVWHUX41cSqV8=; b=um+qbOU96VBrhaTdUOJ+9+MdC0Xzkhfdu8X1tob+24YQ6wNX+yhwSCC4WuGllx4yrf8Xo+ xuRYRjjGztnhqbDA== 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 3CADD13D67; Thu, 16 Sep 2021 18:16:04 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id wEPaDeSJQ2FleQAAMHmgww (envelope-from ); Thu, 16 Sep 2021 18:16:04 +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 2/5] lib: devres: Add managed arch_io_reserve_memtype_wc() Date: Thu, 16 Sep 2021 20:15:58 +0200 Message-Id: <20210916181601.9146-3-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_io_reserve_memtype_wc() as managed wrapper around arch_io_reserve_memtype_wc(). Useful for several grahpics drivers that set framebuffer memory to write combining. Signed-off-by: Thomas Zimmermann --- include/linux/io.h | 3 +++ lib/devres.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/include/linux/io.h b/include/linux/io.h index fcd8ea79c5df..5fc800390fe4 100644 --- a/include/linux/io.h +++ b/include/linux/io.h @@ -168,4 +168,7 @@ static inline void arch_io_free_memtype_wc(resource_size_t base, } #endif +int devm_arch_io_reserve_memtype_wc(struct device *dev, resource_size_t start, + resource_size_t size); + #endif /* _LINUX_IO_H */ diff --git a/lib/devres.c b/lib/devres.c index 24d4d849ff67..14664bbb4875 100644 --- a/lib/devres.c +++ b/lib/devres.c @@ -564,3 +564,49 @@ int devm_arch_phys_wc_add(struct device *dev, unsigned long base, unsigned long return ret; } EXPORT_SYMBOL(devm_arch_phys_wc_add); + +struct arch_io_reserve_memtype_wc_devres { + resource_size_t start; + resource_size_t size; +}; + +static void devm_arch_io_free_memtype_wc_release(struct device *dev, void *res) +{ + const struct arch_io_reserve_memtype_wc_devres *this = res; + + arch_io_free_memtype_wc(this->start, this->size); +} + +/** + * devm_arch_io_reserve_memtype_wc - Managed arch_io_reserve_memtype_wc() + * @dev: Managed device + * @start: Memory base address + * @size: Size of memory range + * + * Reserves a memory range with WC caching using arch_io_reserve_memtype_wc() + * and sets up a release callback See arch_io_reserve_memtype_wc() for more + * information. + */ +int devm_arch_io_reserve_memtype_wc(struct device *dev, resource_size_t start, + resource_size_t size) +{ + struct arch_io_reserve_memtype_wc_devres *dr; + int ret; + + dr = devres_alloc(devm_arch_io_free_memtype_wc_release, sizeof(*dr), GFP_KERNEL); + if (!dr) + return -ENOMEM; + + ret = arch_io_reserve_memtype_wc(start, size); + if (ret < 0) { + devres_free(dr); + return ret; + } + + dr->start = start; + dr->size = size; + devres_add(dev, dr); + + return ret; +} +EXPORT_SYMBOL(devm_arch_io_reserve_memtype_wc); -- 2.33.0