Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp3391853rwb; Sun, 9 Oct 2022 04:28:49 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7r1TqRQtsjPeZywcdggnaSpzylT0SfAlFoDZSmWgXDdtzDRGODw1QgM2L+k/UWTmQjqjR/ X-Received: by 2002:a63:5a44:0:b0:431:fa3a:f92c with SMTP id k4-20020a635a44000000b00431fa3af92cmr12653344pgm.471.1665314929680; Sun, 09 Oct 2022 04:28:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665314929; cv=none; d=google.com; s=arc-20160816; b=WULeomb60Xv6lgbGjoJQtj54FBd8MGXLvA39vWqSFrtn8XZEWI+HBKJbodWKtUND7m D/PKsPHVBWH/uoKg8iE9PWTfallAIkLZ4SOvDsN1RX3W7SABby7JPjA8sDwYWR0S/4Cs MDrEShmccKPZHdh2eUfe/Y73xGmou7YLymThDD0qxdXsg9lILP1ZeAtXG6nl+/4hISpt 3+UKRcHicFbYUGPLRR4di3TE4XgHL67bSs0ZoSdaxPDt9jKZxlqyyCekUxO8FkMAAGHP 2dEoaHUGmD941eB4YReK2MTmC0t58UForYKfo+7kFOZVEKPIA7ZSheJWRNe+wPovjkw7 Aztg== 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; bh=+shEiQhHXH9NvLeUIkuIHtH61AWuIik634uQg6vXtDM=; b=Mg0hs/KsqQiHvZHVqQLbEdJkRY0mroiOReSZPRGDiHu6cpiZdSpG3UHaDtzwpZONmn 6r9CGoAGHsjxAVnTHgBR5FgTwGksm5+cBF8tBdNL+U/eIBL/9/VSg++uR1gb7BQomMxh HWADiIbtFi88aUNG52XfbXAiyvkmOKinjDXAGELgfe/m4yCOXumdTf31TxVAjnV67Mxg +Z3j9McaPLJs8j0A8hDPsu2paHhxAroBlIr9sRs8pxuSkHo6oN2pApDIraYZMLUw91EN IdLDg1GMloQqCyVkQmihL1Ui+y+ixw6mTYF9JyGuuEgwlDjJrqB5IoP2OWCw7DlO19n1 gxhA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=L6fXkFSv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j11-20020a056a00130b00b005366f65ca62si8603279pfu.268.2022.10.09.04.28.37; Sun, 09 Oct 2022 04:28:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=L6fXkFSv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229459AbiJIKbm (ORCPT + 99 others); Sun, 9 Oct 2022 06:31:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38730 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229711AbiJIKbj (ORCPT ); Sun, 9 Oct 2022 06:31:39 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A987C2DA8A for ; Sun, 9 Oct 2022 03:31:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1665311495; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+shEiQhHXH9NvLeUIkuIHtH61AWuIik634uQg6vXtDM=; b=L6fXkFSv3wEnlKyN6yjhL5jcXMt7u5tYzfi/9YLEzLOL+Io8vFYVYOr742u3XZysl6Sdki V/swRjmu4bz2DPNClxfdRsRYwwBh2F/eCA3ubu1tN6WnvQcf1lyPkQitJbcCh/po7L7aCK dbF4FNZOShVOfwXG/0lb6dfBBTBVBhw= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-103-OTdYuyZvM66icShuEcJGmw-1; Sun, 09 Oct 2022 06:31:32 -0400 X-MC-Unique: OTdYuyZvM66icShuEcJGmw-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7F6853C0257E; Sun, 9 Oct 2022 10:31:31 +0000 (UTC) Received: from MiWiFi-R3L-srv.redhat.com (ovpn-12-36.pek2.redhat.com [10.72.12.36]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8351740D298B; Sun, 9 Oct 2022 10:31:24 +0000 (UTC) From: Baoquan He To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, akpm@linux-foundation.org, hch@infradead.org, agordeev@linux.ibm.com, wangkefeng.wang@huawei.com, christophe.leroy@csgroup.eu, schnelle@linux.ibm.com, David.Laight@ACULAB.COM, shorne@gmail.com, bhe@redhat.com, Brian Cain , Mark Brown , Linus Walleij , linux-hexagon@vger.kernel.org Subject: [PATCH v3 01/11] hexagon: mm: Convert to GENERIC_IOREMAP Date: Sun, 9 Oct 2022 18:31:04 +0800 Message-Id: <20221009103114.149036-2-bhe@redhat.com> In-Reply-To: <20221009103114.149036-1-bhe@redhat.com> References: <20221009103114.149036-1-bhe@redhat.com> MIME-Version: 1.0 Content-type: text/plain Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, 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 By taking GENERIC_IOREMAP method, the generic ioremap_prot() and iounmap() are visible and available to arch. Arch only needs to provide implementation of arch_ioremap() or arch_iounmap() if there's arch specific handling needed in its ioremap() or iounmap(). This change will simplify implementation by removing duplicated codes with generic ioremap() and iounmap(), and has the equivalent functioality. For hexagon, the current ioremap() and iounmap() are the same as generic version. After taking GENERIC_IOREMAP way, the old ioremap() and iounmap() can be completely removed. Signed-off-by: Baoquan He Cc: Brian Cain Cc: Mark Brown Cc: Linus Walleij Cc: linux-hexagon@vger.kernel.org --- v2->v3: Rewrite patch log. Put it at the beginning of patchset since it doesn't introduce new arch_ioremap()/arch_iounmap(). arch/hexagon/Kconfig | 1 + arch/hexagon/include/asm/io.h | 9 +++++-- arch/hexagon/mm/ioremap.c | 44 ----------------------------------- 3 files changed, 8 insertions(+), 46 deletions(-) delete mode 100644 arch/hexagon/mm/ioremap.c diff --git a/arch/hexagon/Kconfig b/arch/hexagon/Kconfig index 54eadf265178..17afffde1a7f 100644 --- a/arch/hexagon/Kconfig +++ b/arch/hexagon/Kconfig @@ -25,6 +25,7 @@ config HEXAGON select NEED_SG_DMA_LENGTH select NO_IOPORT_MAP select GENERIC_IOMAP + select GENERIC_IOREMAP select GENERIC_SMP_IDLE_THREAD select STACKTRACE_SUPPORT select GENERIC_CLOCKEVENTS_BROADCAST diff --git a/arch/hexagon/include/asm/io.h b/arch/hexagon/include/asm/io.h index 46a099de85b7..dcd9cbbf5934 100644 --- a/arch/hexagon/include/asm/io.h +++ b/arch/hexagon/include/asm/io.h @@ -170,8 +170,13 @@ static inline void writel(u32 data, volatile void __iomem *addr) #define writew_relaxed __raw_writew #define writel_relaxed __raw_writel -void __iomem *ioremap(unsigned long phys_addr, unsigned long size); -#define ioremap_uc(X, Y) ioremap((X), (Y)) +/* + * I/O memory mapping functions. + */ +#define _PAGE_IOREMAP (_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE | \ + (__HEXAGON_C_DEV << 6)) + +#define ioremap_uc(addr, size) ioremap((addr), (size)) #define __raw_writel writel diff --git a/arch/hexagon/mm/ioremap.c b/arch/hexagon/mm/ioremap.c deleted file mode 100644 index 255c5b1ee1a7..000000000000 --- a/arch/hexagon/mm/ioremap.c +++ /dev/null @@ -1,44 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * I/O remap functions for Hexagon - * - * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved. - */ - -#include -#include -#include - -void __iomem *ioremap(unsigned long phys_addr, unsigned long size) -{ - unsigned long last_addr, addr; - unsigned long offset = phys_addr & ~PAGE_MASK; - struct vm_struct *area; - - pgprot_t prot = __pgprot(_PAGE_PRESENT|_PAGE_READ|_PAGE_WRITE - |(__HEXAGON_C_DEV << 6)); - - last_addr = phys_addr + size - 1; - - /* Wrapping not allowed */ - if (!size || (last_addr < phys_addr)) - return NULL; - - /* Rounds up to next page size, including whole-page offset */ - size = PAGE_ALIGN(offset + size); - - area = get_vm_area(size, VM_IOREMAP); - addr = (unsigned long)area->addr; - - if (ioremap_page_range(addr, addr+size, phys_addr, prot)) { - vunmap((void *)addr); - return NULL; - } - - return (void __iomem *) (offset + addr); -} - -void iounmap(const volatile void __iomem *addr) -{ - vunmap((void *) ((unsigned long) addr & PAGE_MASK)); -} -- 2.34.1