Received: by 2002:a05:6512:3d0e:0:0:0:0 with SMTP id d14csp4152lfv; Tue, 12 Apr 2022 14:56:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwv5gsgvjMzPgTNYIqkw00g6RddhEHu5A7n6TF7FQUjhS5qBofT2E2PG6haTXWezoFj3Xkt X-Received: by 2002:a17:90b:3a82:b0:1cb:9ba8:56a5 with SMTP id om2-20020a17090b3a8200b001cb9ba856a5mr7307999pjb.16.1649800585291; Tue, 12 Apr 2022 14:56:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649800585; cv=none; d=google.com; s=arc-20160816; b=fW1NPcVTVbc2npxAK2dLphfC3A2hORatVOB4xdjwgi502GnK1+2A29wk1oyoIDQZGd QKFeEm8TDjV3V2UftJ32fNLpYrl3bpVOHna4M4Mk5dCM3jaIIkPvqjGUlH05liWun7zO l0YReKZgcAb5tckY4LDZoc1AwQfsmoaSckdL5KMIpulJ2WjVIMfFHBN1LhydVBhBwxxO jJcKldujhdbv8k5dM/EU1b40+8y3k39fCSTP85mVDShyUtfgkYkUsnMHiHgf0Uu7j9zi yOrFWZoQYvE2qwXK5UXjwUv5HeBcxLi+8tioQj55zzeg8UYj5RpEHbzfE1vWQTTJRn0W hruA== 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 :message-id:date:subject:cc:to:from; bh=t/WI30N+pbVZnEsspkId5nik5zpAamA1FRmO0GHM2LQ=; b=Q5ufCgi0hqlCBIyD+plpAcYWIZBSfctui0TkcoOssBa3XWDuvM8Hy9RbKkHumiNArJ NlI0v3B5OXlAwznpBpoCFPL59qgAeUcDyF1DtQkQV/gtFTMFJVGfPMIEJUOjHYVZMH60 FLHYhslCaKmmXK7xkOfymLkswgaUVFcW4h8Y3XmsU5DyN5SA4ZTFxk0RgvTResi6Ly8O 0YbnB5raNIvOrzdPv3t1eT3VNA+59JS7AjBCBROpS98dFSxE2T2j2htS7tG33TdagJ06 Q6RC+U7LXh3TMJVMEqeJWjiRQ4gTKqBAGelR1i1xY9DHk/E0feTLE9f3nb7097dk+k7B LgRg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id oa3-20020a17090b1bc300b001cbabeffd61si5095128pjb.154.2022.04.12.14.56.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 14:56:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (out1.vger.email [IPv6:2620:137:e000::1:20]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id A1B9812A8C6; Tue, 12 Apr 2022 13:49:36 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1356988AbiDLPak (ORCPT + 99 others); Tue, 12 Apr 2022 11:30:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57350 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230501AbiDLPai (ORCPT ); Tue, 12 Apr 2022 11:30:38 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id E92FE1D307 for ; Tue, 12 Apr 2022 08:28:19 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B3B4713D5; Tue, 12 Apr 2022 08:28:19 -0700 (PDT) Received: from e121345-lin.cambridge.arm.com (e121345-lin.cambridge.arm.com [10.1.196.40]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 11A413F70D; Tue, 12 Apr 2022 08:28:18 -0700 (PDT) From: Robin Murphy To: maz@kernel.org, tglx@linutronix.de Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH] irqchip/gic-v3: Claim iomem resources Date: Tue, 12 Apr 2022 16:28:15 +0100 Message-Id: X-Mailer: git-send-email 2.28.0.dirty MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no 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 As a simple quality-of-life tweak, claim our MMIO regions when mapping them, such that the GIC shows up in /proc/iomem. No effort is spent on trying to release them, since frankly if the GIC fails to probe then it's never getting a second try anyway. Signed-off-by: Robin Murphy --- I briefly looked at doing the same for GICv2, but quickly decided that GICv2 isn't interesting enough to be worth the (greater) bother... Lightly tested with ACPI. --- drivers/irqchip/irq-gic-v3.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c index b252d5534547..9815b692a47a 100644 --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c @@ -1980,10 +1980,10 @@ static int __init gic_of_init(struct device_node *node, struct device_node *pare u32 nr_redist_regions; int err, i; - dist_base = of_iomap(node, 0); - if (!dist_base) { + dist_base = of_io_request_and_map(node, 0, "GICD"); + if (IS_ERR(dist_base)) { pr_err("%pOF: unable to map gic dist registers\n", node); - return -ENXIO; + return PTR_ERR(dist_base); } err = gic_validate_dist_version(dist_base); @@ -2007,8 +2007,8 @@ static int __init gic_of_init(struct device_node *node, struct device_node *pare int ret; ret = of_address_to_resource(node, 1 + i, &res); - rdist_regs[i].redist_base = of_iomap(node, 1 + i); - if (ret || !rdist_regs[i].redist_base) { + rdist_regs[i].redist_base = of_io_request_and_map(node, 1 + i, "GICR"); + if (ret || IS_ERR(rdist_regs[i].redist_base)) { pr_err("%pOF: couldn't map region %d\n", node, i); err = -ENODEV; goto out_unmap_rdist; @@ -2034,7 +2034,7 @@ static int __init gic_of_init(struct device_node *node, struct device_node *pare out_unmap_rdist: for (i = 0; i < nr_redist_regions; i++) - if (rdist_regs[i].redist_base) + if (rdist_regs[i].redist_base && !IS_ERR(rdist_regs[i].redist_base)) iounmap(rdist_regs[i].redist_base); kfree(rdist_regs); out_unmap_dist: @@ -2081,6 +2081,7 @@ gic_acpi_parse_madt_redist(union acpi_subtable_headers *header, pr_err("Couldn't map GICR region @%llx\n", redist->base_address); return -ENOMEM; } + request_mem_region(redist->base_address, redist->length, "GICR"); gic_acpi_register_redist(redist->base_address, redist_base); return 0; @@ -2103,6 +2104,7 @@ gic_acpi_parse_madt_gicc(union acpi_subtable_headers *header, redist_base = ioremap(gicc->gicr_base_address, size); if (!redist_base) return -ENOMEM; + request_mem_region(gicc->gicr_base_address, size, "GICR"); gic_acpi_register_redist(gicc->gicr_base_address, redist_base); return 0; @@ -2304,6 +2306,7 @@ gic_acpi_init(union acpi_subtable_headers *header, const unsigned long end) pr_err("Unable to map GICD registers\n"); return -ENOMEM; } + request_mem_region(dist->base_address, ACPI_GICV3_DIST_MEM_SIZE, "GICD"); err = gic_validate_dist_version(acpi_data.dist_base); if (err) { -- 2.28.0.dirty