Message ID | 20250217163713.211949-1-thierry.reding@gmail.com (mailing list archive) |
---|---|
Headers | show
Return-Path: <linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org> X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 726C5C021AA for <linux-arm-kernel@archiver.kernel.org>; Mon, 17 Feb 2025 17:48:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=yiZt2i6xSOw8eOJOYff501csDZIGzCac6UOW2wl3hpw=; b=0FW4ncmUc/QOz1F233BT+qGNP/ Sd08k6ZLyBN+j+lPBo7vj9RQ2xnr1fU2zHTACVadYdvnVJGJyNyFRKWa/hO0ATSL3790mphIJk3/1 uDOxQaY2iUrqwYAnBAlv/h5yEnNkVe9fB5mpcPlzISiHdczAEIH4gXQSmWlqwvBpmOlGBwNqRsfL1 ZNwpJFvHEXwXDq7UAkse2Mwz9mKi6Xr5qAwWq9Myb/blYJi/byETMspoPkJA9o6My5FKA3n1iQiCv PNr92B7x1vmqrnpFtskfpyRzWfoZE5mGzKseFffBRJvQPnjw25n4PdO0lSFQGWc1XNFpjcvaU4bq1 7Syrgosg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tk5EY-00000005Vgp-3ciw; Mon, 17 Feb 2025 17:48:42 +0000 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tk47W-00000005I56-2aye; Mon, 17 Feb 2025 16:37:23 +0000 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-4393dc02b78so30359175e9.3; Mon, 17 Feb 2025 08:37:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739810240; x=1740415040; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=yiZt2i6xSOw8eOJOYff501csDZIGzCac6UOW2wl3hpw=; b=LTMO3hmUC5BFC5Qhkne5Zceyx6qvRxd1PAv0fE3L9NaoaxFWd6oOFZZwmQARL+Trbz XRe/azREOpIaW9YGvS6ygheY7T03E2jQpblwSQLOyn45KykUbYvCV6GRwJ6SO9cRbN1s n683Z8eHLfZdjcujjNcq+kZBnkeJ2/zQyDNpxvPp5bAXrtCgOQzz37GtknSnIuV7gIze F/wCfhkknd01KHJo0aHLxgrYlg/GbZARMbYCmzWsioWts30TSNSIWd7keKutDjnCJrQY Dmwu7DVIyoGklPQ9yao1mUvCzjNxe2iF2dee6k5255q678aeMLADlnpugs7T5OOArhOJ gOnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739810240; x=1740415040; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=yiZt2i6xSOw8eOJOYff501csDZIGzCac6UOW2wl3hpw=; b=hgNMitiB9aeFF4La9enyY5uJYtMVmqdEMf9JutmBzdAepq4hNvcRPtF3xqhDhzDhXR /InuvrvffsHpGEcCJ0Drs+3EVmh7c7LkR9QUBe8Um7GrSsmrRribPW7V0kCs8cHer/k6 p4jzhIYZB7ky8AGP2pA7d7oRRg6nUOrWUVWZIhzrmfpZJa2/FObu4ON0CuSEcY0xxgbW pjWvVeXuJCmRuQxfLaiBPWqf1Yzvzdewwk2VEwlqTuRL/e15jsFoY3CBCAgZlpzItjDE djd21ftCXcBXQFxNRAQDyxpGgLIH5yKrPO2qSWNgQGr5yHX12Qg5nZRYeIOnOE2qEDe6 my9g== X-Forwarded-Encrypted: i=1; AJvYcCUP13zl2B8yeaWPXMLySeaIIJB09yKSBwNSsIbeR4hvJQGNuK5Oip73LEGpjyZp5y393l/z86/Gf4ZOgss=@lists.infradead.org, AJvYcCWDvAjb8n2sQyZjizC+3pY4Gjjb8gQQWPVm0+1Ipg9RbBWGhbFkNGnPFvQaLQfZhTwf2UPVdh6faCJgDQsz2bnI@lists.infradead.org X-Gm-Message-State: AOJu0YwI9O2FVMR02GVxJn+GfzSoIkX/dQ1nzr5NgbUnQhu29LYNaxmR /Dbc86YW3ohN8Qa7gXYaQH9T3s1lwKiqIxcrT0Mri27DsNWChU6yNGmUCw== X-Gm-Gg: ASbGncu5L0aGCzkHqe/zM6YOenW/3qAkRCjNVhmh76MoTT+l25oLejbJeKQsWpWPn/n JG26AHKzVNeQmKmyK4hD9m7y9+Cy9KDMo16sxLnTPFpFmqmGxgAQDsSJgh1Q3TtsHdbZbybkPba DlENAG4iGqCRol2DhZTCGt3huCeWnnS6tk9NkY58URbIc8/FCBtMsNBP9fsy1uhNmTwWsQCYRGW HwziwTxi3sv+H7k3HEe8wGqmsGWHmy0TgY47Wi8563X/CD6fVy1pHfkTHktwNC4eBBpzqo0FtLJ ELa0cjOqXrTBmRVSlvLpWhj8Fa6qY01pBoKgl6GlxXAR6N5tyteVpQjTci0c3+nr1shGiZG71KK XUNMs3zg= X-Google-Smtp-Source: AGHT+IFZaRz1DpftXgns+QX0TjkeJRpqUCBrHv7Z6/192+MAz8sD7WUt6O+3frJRvsZQb4k9gj7a7g== X-Received: by 2002:a05:600c:4f56:b0:439:3c71:16be with SMTP id 5b1f17b1804b1-4396e6f66a1mr101592005e9.13.1739810240075; Mon, 17 Feb 2025 08:37:20 -0800 (PST) Received: from localhost (p200300e41f22a600f22f74fffe1f3a53.dip0.t-ipconnect.de. [2003:e4:1f22:a600:f22f:74ff:fe1f:3a53]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-439880fbd6fsm24614705e9.18.2025.02.17.08.37.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Feb 2025 08:37:18 -0800 (PST) From: Thierry Reding <thierry.reding@gmail.com> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mips@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-sh@vger.kernel.org, linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 0/7] syscore: Pass context data to callbacks Date: Mon, 17 Feb 2025 17:37:06 +0100 Message-ID: <20250217163713.211949-1-thierry.reding@gmail.com> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250217_083722_658520_5644BA10 X-CRM114-Status: GOOD ( 14.38 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: <linux-arm-kernel.lists.infradead.org> List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-arm-kernel>, <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> List-Post: <mailto:linux-arm-kernel@lists.infradead.org> List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org |
Series |
syscore: Pass context data to callbacks
|
expand
|
From: Thierry Reding <treding@nvidia.com> Hi, Something that's been bugging me over the years is how some drivers have had to adopt file-scoped variables to pass data into something like the syscore operations. This is often harmless, but usually leads to drivers not being able to deal with multiple instances, or additional frameworks or data structures needing to be created to handle multiple instances. This series proposes to "objectify" struct syscore_ops by passing a pointer to struct syscore_ops to the syscore callbacks. Implementations of these callbacks can then make use of container_of() to get access to contextual data that struct syscore_ops was embedded in. This elegantly avoids the need for file-scoped, singleton variables, by tying syscore to individual instances. Patch 1 contains the bulk of these changes. It's fairly intrusive because it does the conversion of the function signature all in one patch. An alternative would've been to introduce new callbacks such that these changes could be staged in. However, the amount of changes here are not quite numerous enough to justify that, in my opinion, and syscore isn't very frequently used, so the risk of another user getting added while this is merged is rather small. All in all I think merging this in one go is the simplest way. Patches 2-7 are conversions of some existing drivers to take advantage of this new parameter and tie the code to per-instance data. Given that the recipient list for this is huge, I'm limiting this to Greg (because it's at the core a... core change) and a set of larger lists for architectures and subsystems that are impacted. Thanks, Thierry Thierry Reding (7): syscore: Pass context data to callbacks MIPS: Embed syscore_ops in PCI context bus: mvebu-mbus: Embed syscore_ops in mbus context clk: ingenic: tcu: Embed syscore_ops in TCU context clk: mvebu: Embed syscore_ops in clock context irqchip/irq-imx-gpcv2: Embed syscore_ops in chip context soc/tegra: pmc: Derive PMC context from syscore ops arch/arm/mach-exynos/mcpm-exynos.c | 4 +- arch/arm/mach-exynos/suspend.c | 14 +++--- arch/arm/mach-pxa/irq.c | 4 +- arch/arm/mach-pxa/mfp-pxa2xx.c | 4 +- arch/arm/mach-pxa/mfp-pxa3xx.c | 4 +- arch/arm/mach-pxa/smemc.c | 4 +- arch/arm/mach-s3c/irq-pm-s3c64xx.c | 4 +- arch/arm/mach-s5pv210/pm.c | 2 +- arch/arm/mach-versatile/integrator_ap.c | 4 +- arch/arm/mm/cache-b15-rac.c | 4 +- arch/loongarch/kernel/smp.c | 4 +- arch/mips/alchemy/common/dbdma.c | 4 +- arch/mips/alchemy/common/irq.c | 8 ++-- arch/mips/alchemy/common/usb.c | 4 +- arch/mips/pci/pci-alchemy.c | 28 ++++++------ arch/powerpc/platforms/cell/spu_base.c | 2 +- arch/powerpc/platforms/powermac/pic.c | 4 +- arch/powerpc/sysdev/fsl_lbc.c | 4 +- arch/powerpc/sysdev/fsl_pci.c | 4 +- arch/powerpc/sysdev/ipic.c | 4 +- arch/powerpc/sysdev/mpic.c | 4 +- arch/powerpc/sysdev/mpic_timer.c | 2 +- arch/sh/mm/pmb.c | 2 +- arch/x86/events/amd/ibs.c | 4 +- arch/x86/hyperv/hv_init.c | 4 +- arch/x86/kernel/amd_gart_64.c | 2 +- arch/x86/kernel/apic/apic.c | 4 +- arch/x86/kernel/apic/io_apic.c | 9 +++- arch/x86/kernel/cpu/aperfmperf.c | 6 +-- arch/x86/kernel/cpu/intel_epb.c | 8 ++-- arch/x86/kernel/cpu/mce/core.c | 6 +-- arch/x86/kernel/cpu/microcode/core.c | 7 ++- arch/x86/kernel/cpu/mtrr/legacy.c | 4 +- arch/x86/kernel/cpu/umwait.c | 2 +- arch/x86/kernel/i8237.c | 2 +- arch/x86/kernel/i8259.c | 6 +-- arch/x86/kernel/kvm.c | 4 +- drivers/acpi/pci_link.c | 2 +- drivers/acpi/sleep.c | 4 +- drivers/base/firmware_loader/main.c | 2 +- drivers/base/syscore.c | 8 ++-- drivers/bus/mvebu-mbus.c | 24 +++++----- drivers/clk/at91/pmc.c | 4 +- drivers/clk/imx/clk-vf610.c | 4 +- drivers/clk/ingenic/pm.c | 4 +- drivers/clk/ingenic/tcu.c | 54 +++++++++++------------ drivers/clk/mvebu/common.c | 25 +++++++---- drivers/clk/rockchip/clk-rk3288.c | 4 +- drivers/clk/samsung/clk-s5pv210-audss.c | 4 +- drivers/clk/samsung/clk.c | 4 +- drivers/clk/tegra/clk-tegra210.c | 4 +- drivers/clocksource/timer-armada-370-xp.c | 4 +- drivers/cpuidle/cpuidle-psci.c | 4 +- drivers/gpio/gpio-mxc.c | 4 +- drivers/gpio/gpio-pxa.c | 4 +- drivers/hv/vmbus_drv.c | 4 +- drivers/iommu/amd/init.c | 4 +- drivers/iommu/intel/iommu.c | 4 +- drivers/irqchip/exynos-combiner.c | 6 ++- drivers/irqchip/irq-armada-370-xp.c | 4 +- drivers/irqchip/irq-bcm7038-l1.c | 4 +- drivers/irqchip/irq-gic-v3-its.c | 4 +- drivers/irqchip/irq-i8259.c | 4 +- drivers/irqchip/irq-imx-gpcv2.c | 33 ++++++-------- drivers/irqchip/irq-loongson-eiointc.c | 4 +- drivers/irqchip/irq-loongson-htpic.c | 2 +- drivers/irqchip/irq-loongson-htvec.c | 4 +- drivers/irqchip/irq-loongson-pch-lpc.c | 4 +- drivers/irqchip/irq-loongson-pch-pic.c | 4 +- drivers/irqchip/irq-mchp-eic.c | 4 +- drivers/irqchip/irq-mst-intc.c | 4 +- drivers/irqchip/irq-mtk-cirq.c | 4 +- drivers/irqchip/irq-renesas-rzg2l.c | 4 +- drivers/irqchip/irq-sa11x0.c | 4 +- drivers/irqchip/irq-sifive-plic.c | 4 +- drivers/irqchip/irq-sun6i-r.c | 10 ++--- drivers/irqchip/irq-tegra.c | 4 +- drivers/irqchip/irq-vic.c | 4 +- drivers/leds/trigger/ledtrig-cpu.c | 6 +-- drivers/macintosh/via-pmu.c | 4 +- drivers/power/reset/sc27xx-poweroff.c | 2 +- drivers/sh/clk/core.c | 2 +- drivers/sh/intc/core.c | 4 +- drivers/soc/bcm/brcmstb/biuctrl.c | 4 +- drivers/soc/tegra/pmc.c | 7 ++- drivers/thermal/intel/intel_hfi.c | 4 +- drivers/xen/xen-acpi-processor.c | 2 +- include/linux/syscore_ops.h | 6 +-- kernel/cpu_pm.c | 4 +- kernel/irq/generic-chip.c | 6 +-- kernel/irq/pm.c | 2 +- kernel/printk/printk.c | 2 +- kernel/time/sched_clock.c | 14 +++++- kernel/time/timekeeping.c | 14 +++++- virt/kvm/kvm_main.c | 6 +-- 95 files changed, 302 insertions(+), 267 deletions(-)