Cover Letter Detail
Show a cover letter.
GET /api/1.2/covers/2234783/?format=api
{ "id": 2234783, "url": "http://patchwork.ozlabs.org/api/1.2/covers/2234783/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/cover/20260508043543.217179-1-kwilczynski@kernel.org/", "project": { "id": 2, "url": "http://patchwork.ozlabs.org/api/1.2/projects/2/?format=api", "name": "Linux PPC development", "link_name": "linuxppc-dev", "list_id": "linuxppc-dev.lists.ozlabs.org", "list_email": "linuxppc-dev@lists.ozlabs.org", "web_url": "https://github.com/linuxppc/wiki/wiki", "scm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git", "webscm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/", "list_archive_url": "https://lore.kernel.org/linuxppc-dev/", "list_archive_url_format": "https://lore.kernel.org/linuxppc-dev/{}/", "commit_url_format": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id={}" }, "msgid": "<20260508043543.217179-1-kwilczynski@kernel.org>", "list_archive_url": "https://lore.kernel.org/linuxppc-dev/20260508043543.217179-1-kwilczynski@kernel.org/", "date": "2026-05-08T04:35:19", "name": "[v7,00/24] PCI: Convert all dynamic sysfs attributes to static", "submitter": { "id": 86709, "url": "http://patchwork.ozlabs.org/api/1.2/people/86709/?format=api", "name": "Krzysztof Wilczyński", "email": "kwilczynski@kernel.org" }, "mbox": "http://patchwork.ozlabs.org/project/linuxppc-dev/cover/20260508043543.217179-1-kwilczynski@kernel.org/mbox/", "series": [ { "id": 503322, "url": "http://patchwork.ozlabs.org/api/1.2/series/503322/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=503322", "date": "2026-05-08T04:35:20", "name": "PCI: Convert all dynamic sysfs attributes to static", "version": 7, "mbox": "http://patchwork.ozlabs.org/series/503322/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/2234783/comments/", "headers": { "Return-Path": "\n <linuxppc-dev+bounces-20584-incoming=patchwork.ozlabs.org@lists.ozlabs.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linuxppc-dev@lists.ozlabs.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=hCAM4YSw;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=112.213.38.117; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-20584-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)", "lists.ozlabs.org;\n arc=none smtp.remote-ip=172.105.4.254", "lists.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org", "lists.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=hCAM4YSw;\n\tdkim-atps=neutral", "lists.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org\n (client-ip=172.105.4.254; helo=tor.source.kernel.org;\n envelope-from=kwilczynski@kernel.org; receiver=lists.ozlabs.org)" ], "Received": [ "from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1 raw public key)\n server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gBbsW2TT0z1yM4\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 08 May 2026 14:35:58 +1000 (AEST)", "from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4gBbsS5wxrz2xwH;\n\tFri, 08 May 2026 14:35:56 +1000 (AEST)", "from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4gBbsN0WLQz2xPb\n\tfor <linuxppc-dev@lists.ozlabs.org>; Fri, 08 May 2026 14:35:51 +1000 (AEST)", "from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])\n\tby tor.source.kernel.org (Postfix) with ESMTP id 10B7B600AE;\n\tFri, 8 May 2026 04:35:49 +0000 (UTC)", "by smtp.kernel.org (Postfix) with ESMTPSA id 6E429C2BCB0;\n\tFri, 8 May 2026 04:35:45 +0000 (UTC)" ], "ARC-Seal": "i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1778214956;\n\tcv=none;\n b=P+hMn9goHfSbOUdSPf+VwV0jQOm/waRSne76Q2pyXrf8iM7l3n6Z0k42HiQA7wetl+tfR31zc1CeS4msj/vYS/lM2Bu7b1niDDhszdoUEYsqvkeoE/lgXPC+JBQQDu/5Y/aQpcBzhypc/YxzO1dFlFzPxpjwcXXr3zh5dN7f4SjES/M9rkCqfbXXIcWHuGnmPxLWn2YUQSbQfu1+ZhDK3oKYyj2Z2pbvItsteT9QP4UoHra9Vq5btubUABKHBkxtrBqgJcXcBLEFGvCJQbfm0haWqnC6uGznkf1xIW0C6KRVWPy/30fbGAk5ND3CFaT4tnp242oMOTc7cHPWRWGqzA==", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1778214956; c=relaxed/relaxed;\n\tbh=o81ANJPDRQQHE46EmXcEzhNnFbkEoKkXGa+TopafS2o=;\n\th=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type;\n b=SFxGLBh8NHuzo74R4bXSdXcKNN6ynC6iANk6gPTvHrwLDarTUDOcg7o1WF7jtWVkOOhz8GRfplqaPTfxnHaBQquu2n7PiWGbxjAlspJHgr1ZqSah2Bmk4NoGCLEYr/LNevWuHTyK0ABTro+82ZCEkAwnZz0CQOGOp08DqBl7JdBdfVH2gcPd0a635uBjvI6VSSQfGpPOKGthzf2aX9jXZ1LtE+iKDoVr/BmDCRDKBZlPhGTcwjwAfirCUfKxCfC5d9wLIm8zAtid1JUvVOjtHpQwIANOUV2zlW257Da7MaIBn2MDNVu1RDJNOkLGlOYvOE8kw2EnoBOKs1H1duqLaQ==", "ARC-Authentication-Results": "i=1; lists.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org;\n dkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=hCAM4YSw; dkim-atps=neutral;\n spf=pass (client-ip=172.105.4.254; helo=tor.source.kernel.org;\n envelope-from=kwilczynski@kernel.org;\n receiver=lists.ozlabs.org) smtp.mailfrom=kernel.org", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1778214948;\n\tbh=L5IVCLmebtoVabNgoZlJQXA8WZVntrHmMT+E5piotwM=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=hCAM4YSwxWA5jRhKmnStsbk/bzQwycwL66hoqKd7rRNgJELMTvfXZUFg1lpN4gg+r\n\t ggi7cbiey1a32Ncz2LqGNmerwJDd7vzh0Vjz+CTz88f1tnsgmvOZ2roB4X2wfu5kCm\n\t efEWlEhAP6Y4ezAIQVdxcMvsc7Pk/dC5hQo+9BdF0Yqp/6SQXlwu4NEjMd9j/AodN1\n\t VPHYhv8GgoR5YyBDBt9ydFecrov6U+kq+yRQ/e+e4ONeXS7G0uVi/sRBWY+crn9Ydm\n\t au1rTxseNpppj946g5oxlqSC0XuNQ7PggZs+jWrLoOAL6GLGGvSYWI9Frac7USiFi3\n\t 9sLRLVCRdTC3A==", "From": "=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>", "To": "Bjorn Helgaas <bhelgaas@google.com>", "Cc": "Bjorn Helgaas <helgaas@kernel.org>,\n Manivannan Sadhasivam <mani@kernel.org>,\n Lorenzo Pieralisi <lpieralisi@kernel.org>,\n Alex Williamson <alex@shazbot.org>, Magnus Lindholm <linmag7@gmail.com>,\n Matt Turner <mattst88@gmail.com>,\n Richard Henderson <richard.henderson@linaro.org>,\n Christophe Leroy <chleroy@kernel.org>,\n Madhavan Srinivasan <maddy@linux.ibm.com>,\n Michael Ellerman <mpe@ellerman.id.au>, Nicholas Piggin <npiggin@gmail.com>,\n Dexuan Cui <decui@microsoft.com>,\n =?utf-8?q?Krzysztof_Ha=C5=82asa?= <khalasa@piap.pl>,\n Lukas Wunner <lukas@wunner.de>, \"Oliver O'Halloran\" <oohall@gmail.com>,\n Saurabh Singh Sengar <ssengar@microsoft.com>,\n Shuan He <heshuan@bytedance.com>, Srivatsa Bhat <srivatsabhat@microsoft.com>,\n\t=?utf-8?q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,\n linux-pci@vger.kernel.org, linux-alpha@vger.kernel.org,\n linuxppc-dev@lists.ozlabs.org", "Subject": "[PATCH v7 00/24] PCI: Convert all dynamic sysfs attributes to static", "Date": "Fri, 8 May 2026 04:35:19 +0000", "Message-ID": "<20260508043543.217179-1-kwilczynski@kernel.org>", "X-Mailer": "git-send-email 2.54.0", "X-Mailing-List": "linuxppc-dev@lists.ozlabs.org", "List-Id": "<linuxppc-dev.lists.ozlabs.org>", "List-Help": "<mailto:linuxppc-dev+help@lists.ozlabs.org>", "List-Owner": "<mailto:linuxppc-dev+owner@lists.ozlabs.org>", "List-Post": "<mailto:linuxppc-dev@lists.ozlabs.org>", "List-Archive": "<https://lore.kernel.org/linuxppc-dev/>,\n <https://lists.ozlabs.org/pipermail/linuxppc-dev/>", "List-Subscribe": "<mailto:linuxppc-dev+subscribe@lists.ozlabs.org>,\n <mailto:linuxppc-dev+subscribe-digest@lists.ozlabs.org>,\n <mailto:linuxppc-dev+subscribe-nomail@lists.ozlabs.org>", "List-Unsubscribe": "<mailto:linuxppc-dev+unsubscribe@lists.ozlabs.org>", "Precedence": "list", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "X-Spam-Status": "No, score=-0.6 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,\n\tDKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS\n\tautolearn=disabled version=4.0.1 OzLabs 8", "X-Spam-Checker-Version": "SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org" }, "content": "Hello,\n\nThis series converts every dynamically allocated PCI sysfs attribute to\na static const definition. After the full series, pci_sysfs_init() and\nsysfs_initialized are gone, and every sysfs file is created by the\ndriver model at device_add() time.\n\nCurrently, the PCI resource files (resourceN, resourceN_wc) and the\nlegacy bus files (legacy_io, legacy_mem) are created dynamically\nfrom two unsynchronised paths:\n\nPath A: late_initcall\n\n pci_sysfs_init() (late_initcall)\n sysfs_initialized = 1\n for_each_pci_dev()\n pci_create_sysfs_dev_files()\n sysfs_create_bin_file() (resourceN, resourceN_wc)\n pci_find_next_bus()\n pci_create_legacy_files()\n sysfs_create_bin_file() (legacy_io, legacy_mem)\n\nPath B: device registration / hotplug\n\n pci_bus_add_devices()\n pci_bus_add_device()\n pci_create_sysfs_dev_files()\n if (!sysfs_initialized) <- only guard\n return\n sysfs_create_bin_file() (resourceN, resourceN_wc)\n\nOn most ACPI systems this does not race because PCI enumeration\ncompletes at subsys_initcall time, before pci_sysfs_init() runs:\n\n subsys_initcall (level 4):\n acpi_pci_root_add()\n pci_bus_add_device()\n pci_create_sysfs_dev_files()\n if (!sysfs_initialized) <- variable not yet set\n return -EACCES\n\n late_initcall (level 7):\n pci_sysfs_init()\n sysfs_initialized = 1\n for_each_pci_dev()\n pci_create_sysfs_dev_files() <- creates the files, no race\n\nOn Devicetree platforms the host controller is a platform driver that\nprobes via the driver model, often on a workqueue, and overlaps with the\nlate_initcall:\n\n CPU 0 (late_initcall) CPU 1 (driver probe)\n --------------------------- ----------------------------\n pci_sysfs_init()\n sysfs_initialized = 1\n for_each_pci_dev() pci_bus_add_device()\n pci_create_sysfs_dev_files() pci_create_sysfs_dev_files()\n sysfs_create_bin_file() sysfs_create_bin_file()\n -> \"duplicate filename\"\n\nThe same happens on ACPI when probing is asynchronous (hv_pci on\nAzure, RISC-V with ACPI).\n\nThe duplicate causes sysfs_create_bin_file() to fail with -EEXIST.\npci_create_resource_files() then calls pci_remove_resource_files() in\nits error unwind, tearing down files the other thread created and\nstill references through pdev->res_attr[]. This has caused kernel\npanics on i.MX6 and boot failures on other platforms.\n\nSeveral different fixes have been proposed over the years: reordering\nthe sysfs_initialized assignment, adding locks, checking\npci_dev_is_added(), setting pdev->res_attr[] to NULL after kfree\n(which only prevents a double-free on the teardown path, not the\nerror unwind removing the other thread's files). None would address the\nroot cause.\n\nThis has been reported a few times:\n\n - https://lore.kernel.org/linux-pci/20250702155112.40124-1-heshuan@bytedance.com/\n - https://lore.kernel.org/linux-pci/b51519d6-ce45-4b6d-8135-c70169bd110e@h-partners.com/\n - https://lore.kernel.org/linux-pci/1702093576-30405-1-git-send-email-ssengar@linux.microsoft.com/\n - https://lore.kernel.org/linux-pci/SY0P300MB04687548090B73E40AF97D8897B82@SY0P300MB0468.AUSP300.PROD.OUTLOOK.COM/\n - https://lore.kernel.org/linux-pci/20230105174736.GA1154719@bhelgaas/\n - https://lore.kernel.org/linux-pci/m3eebg9puj.fsf@t19.piap.pl/\n - https://lore.kernel.org/linux-pci/20200716110423.xtfyb3n6tn5ixedh@pali/\n - https://lore.kernel.org/linux-pci/1366196798-15929-1-git-send-email-artem.savkov@gmail.com/\n - https://bugzilla.kernel.org/show_bug.cgi?id=215515\n - https://bugzilla.kernel.org/show_bug.cgi?id=216888\n\nWith static attributes the driver model creates sysfs entries once per\ndevice at device_add() time, under the device lock, eliminating the\nlate_initcall iteration and the race along with it.\n\n\tKrzysztof\n\n---\nChanges in v7:\n https://lore.kernel.org/linux-pci/20260422161407.118748-1-kwilczynski@kernel.org/\n\n - Addded Alex Williamson (author of the resource resize sysfs\n attributes) to the list of recipients for visibility.\n - Split pci_llseek_resource() into pci_llseek_resource() and\n pci_llseek_resource_legacy() since legacy attributes operate\n on a struct pci_bus where to_pci_dev() would be invalid,\n as per Bjorn Helgaas' feedback.\n - Moved each llseek variant inside its respective #ifdef guard\n during the corresponding dynamic-to-static conversion commit,\n dropping the __maybe_unused annotations.\n - Extended the WARN macro removal to also cover __legacy_mmap_fits().\n - Updated commit message of patch 18, so that it correctly mentions\n pci_stop_dev() rather than pci_stop_bus_device().\n - Updated commit message of patch 24 to clarify the indirect\n relationship between ReBAR and the HAVE_PCI_MMAP and/or\n ARCH_GENERIC_PCI_MMAP_RESOURCE guards.\n\nChanges in v6:\n https://lore.kernel.org/linux-pci/20260416180107.777065-1-kwilczynski@kernel.org/\n\n - Fixed commit message for patch 13, removing reference to\n pci_resource_flags() which was no longer changed there.\n - Added a new patch (24) to move the BAR resource resize\n (ReBAR) support behind existing PCI mmap #ifdef guard,\n so that the code is not included on architectures that\n do not support resource resizing (i.e., Alpha, etc.).\n\nChanges in v5:\n https://lore.kernel.org/linux-pci/20260411080148.471335-1-kwilczynski@kernel.org/\n \n - Added new Tested-by, Reviewed-by, and Acked-by tags.\n - Used the existing _io function names in the static macro\n definitions, deferring the rename to the conversion commit\n where it belongs, to avoid a forward reference across\n commits. This was reported by Sashiko, see:\n https://sashiko.dev/#/patchset/20260411080148.471335-1-kwilczynski%40kernel.org?part=6\n - Folded the __resource_resize_store() conversion into the\n main static attributes commit so the resize path is never\n broken between commits. This was reported by Sashiko, see:\n https://sashiko.dev/#/patchset/20260410055040.39233-1-kwilczynski%40kernel.org?part=6\n https://sashiko.dev/#/patchset/20260411080148.471335-1-kwilczynski%40kernel.org?part=7\n - Dropped the unnecessary parentheses cleanup from the Alpha\n BAR index commit, as the line is replaced two commits later\n anyway, as per Ilpo Järvinen's feedback.\n - Squashed the Alpha accessor macro and cleanup commits into\n one, using pci_resource_is_mem() directly instead of the\n intermediate pci_resource_flags() step, as per Ilpo\n Järvinen's feedback.\n - Moved the raw literal conversion in pci_create_legacy_files()\n into the macro definition commit, so the macros and their\n usage are introduced together, as per Ilpo Järvinen's\n feedback.\n - Removed unnecessary backslash line continuation from the\n ternary in pci_mmap_legacy_page_range().\n - Kept pci_resource_len() for visibility checks instead of\n resource_assigned(). The static is_visible() callback\n runs at device_add() time during the PCI enumeration,\n before the pci_assign_unassigned_bus_resources() populates\n res->parent, as such, resource_assigned() returned false\n for every BAR, hiding all resource files. This is related\n to review feedback from Ilpo Järvinen.\n\nChanges in v4:\n https://lore.kernel.org/linux-pci/20260410055040.39233-1-kwilczynski@kernel.org/\n\n - Added new Reviewed-by tags.\n - Added pci_resource_is_io() and pci_resource_is_mem() helpers\n for resource type checks, replacing the open-coded bitwise\n flag tests in pci_mmap_resource(), pci_resource_io(), and\n Alpha's pci_mmap_resource(), as per Ilpo Järvinen's\n suggestion.\n - Split the __pci_mmap_fits() cleanup into two patches. An\n overflow fix for zero-length BARs, which now includes a\n Fixes: tag referencing the original Alpha PCI sysfs commit,\n and the WARN macro removal is a separate cleanup as per Ilpo\n Järvinen's suggestion.\n - Added a missing Fixes: tag to the Alpha lockdown check,\n referencing the commit that added the check to the generic\n path but missed Alpha's implementation.\n - Added PCI_LEGACY_IO_SIZE and PCI_LEGACY_MEM_SIZE macros to\n replace the raw literals used for legacy address space sizes.\n These are used in both Alpha's pci_mmap_legacy_page_range()\n and the static legacy attribute definitions, as per Ilpo\n Järvinen's suggestion.\n - Replaced sysfs_update_groups() in the BAR resize path with\n sysfs_remove_groups() before the resize and sysfs_create_groups()\n after, restoring the original teardown before BAR resize\n ordering. This was reported by Sashiko, see:\n https://sashiko.dev/#/patchset/20260410055040.39233-1-kwilczynski%40kernel.org?part=7\n - Defined pci_dev_resource_attr_groups as a NULL macro when\n HAVE_PCI_MMAP and ARCH_GENERIC_PCI_MMAP_RESOURCE are both\n absent, so the resize path compiles unconditionally without\n #ifdef guards in the function body. This was reported by\n Sashiko, see:\n https://sashiko.dev/#/patchset/20260410055040.39233-1-kwilczynski%40kernel.org?part=7\n - Moved the pci_legacy_has_sparse() prototype into the patch\n that introduces the function, alongside the existing\n pci_adjust_legacy_attr() declaration, to fix a bisection\n issue where Alpha would warn on -Wmissing-prototypes.\n This was reported by Sashiko, see:\n https://sashiko.dev/#/patchset/20260410055040.39233-1-kwilczynski%40kernel.org?part=18\n\nChanges in v3:\n https://lore.kernel.org/linux-pci/20210910202623.2293708-1-kw@linux.com/\n\n - Updated for modern kernel releases and expanded scope. The\n v2 only covered the generic resource files. This version\n also converts Alpha's sparse/dense resource files and the\n legacy bus attributes, removing pci_sysfs_init() entirely.\n - Split the single macro definition into three distinct ones\n (per I/O, UC, and WC), to make sure that each carries only\n the callbacks its resource type needs.\n - Updated to use the new .bin_size callback, as the attributes\n are const, to replace using a->size directly, which was not\n ideal. This required changes to pci_llseek_resource(), to\n ensure that it would work for device and bus-level attributes.\n - Updated the __resource_resize_store() to include CAP_SYS_ADMIN\n capabilities check.\n - Added the security_locked_down() check to Alpha's\n pci_mmap_resource(), to align with other architectures.\n\nChanges in v2:\n https://lore.kernel.org/linux-pci/20210825212255.878043-1-kw@linux.com/\n\n - Refactored code so that the macros, helpers and internal\n functions can be used to correctly leverage the read(),\n write() and mmap() callbacks rather than to use the\n .is_bin_visible() callback to set up sysfs objects\n internals as this is not supported.\n - Refactored some if-statements to check for a resource\n flag first, and then call either arch_can_pci_mmap_io()\n or arch_can_pci_mmap_wc(), plus store result of testing\n for IORESOURCE_MEM and IORESOURCE_PREFETCH flags into\n a boolean variable, as per Bjorn Helgaas' suggestion.\n - Renamed pci_read_resource_io() and pci_write_resource_io()\n callbacks so that these are not specifically tied to I/O\n BARs read() and write() operations also as per Bjorn\n Helgaas' suggestion.\n - Updated style for code handling bitwise operations to\n match the style that is preferred as per Bjorn Helgaas'\n suggestion.\n - Updated commit messages adding more details about the\n implementation as requested by Bjorn Helgaas.\n\nKrzysztof Wilczyński (24):\n PCI/sysfs: Use PCI resource accessor macros\n PCI: Add pci_resource_is_io() and pci_resource_is_mem() helpers\n PCI/sysfs: Only allow supported resource types in I/O and MMIO helpers\n PCI/sysfs: Split pci_llseek_resource() for device and legacy\n attributes\n PCI/sysfs: Add CAP_SYS_ADMIN check to __resource_resize_store()\n PCI/sysfs: Add static PCI resource attribute macros\n PCI/sysfs: Convert PCI resource files to static attributes\n PCI/sysfs: Warn about BAR resize failure in __resource_resize_store()\n PCI/sysfs: Add stubs for pci_{create,remove}_sysfs_dev_files()\n PCI/sysfs: Limit pci_sysfs_init() late_initcall compile scope\n alpha/PCI: Add security_locked_down() check to pci_mmap_resource()\n alpha/PCI: Use BAR index in sysfs attr->private instead of resource\n pointer\n alpha/PCI: Use PCI resource accessor macros\n alpha/PCI: Fix __pci_mmap_fits() overflow for zero-length BARs\n alpha/PCI: Remove WARN from __pci_mmap_fits() and __legacy_mmap_fits()\n alpha/PCI: Add static PCI resource attribute macros\n alpha/PCI: Convert resource files to static attributes\n PCI/sysfs: Remove pci_{create,remove}_sysfs_dev_files()\n PCI: Add macros for legacy I/O and memory address space sizes\n alpha/PCI: Compute legacy size in pci_mmap_legacy_page_range()\n PCI/sysfs: Add __weak pci_legacy_has_sparse() helper\n PCI/sysfs: Convert legacy I/O and memory attributes to static\n definitions\n PCI/sysfs: Remove pci_create_legacy_files() and pci_sysfs_init()\n PCI/sysfs: Limit BAR resize attribute scope to platforms with PCI mmap\n\n arch/alpha/include/asm/pci.h | 13 +-\n arch/alpha/kernel/pci-sysfs.c | 385 +++++++++++----------\n arch/powerpc/include/asm/pci.h | 2 -\n drivers/pci/bus.c | 1 -\n drivers/pci/pci-sysfs.c | 592 +++++++++++++++++++--------------\n drivers/pci/pci.h | 16 +-\n drivers/pci/probe.c | 6 -\n drivers/pci/remove.c | 3 -\n include/linux/pci.h | 39 ++-\n 9 files changed, 589 insertions(+), 468 deletions(-)" }