{"id":2215471,"url":"http://patchwork.ozlabs.org/api/covers/2215471/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-pci/cover/20260324165633.4583-1-ilpo.jarvinen@linux.intel.com/","project":{"id":28,"url":"http://patchwork.ozlabs.org/api/projects/28/?format=json","name":"Linux PCI development","link_name":"linux-pci","list_id":"linux-pci.vger.kernel.org","list_email":"linux-pci@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260324165633.4583-1-ilpo.jarvinen@linux.intel.com>","list_archive_url":null,"date":"2026-03-24T16:56:23","name":"[00/10] PCI: Improve head free space usage","submitter":{"id":83553,"url":"http://patchwork.ozlabs.org/api/people/83553/?format=json","name":"Ilpo Järvinen","email":"ilpo.jarvinen@linux.intel.com"},"mbox":"http://patchwork.ozlabs.org/project/linux-pci/cover/20260324165633.4583-1-ilpo.jarvinen@linux.intel.com/mbox/","series":[{"id":497318,"url":"http://patchwork.ozlabs.org/api/series/497318/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-pci/list/?series=497318","date":"2026-03-24T16:56:23","name":"PCI: Improve head free space usage","version":1,"mbox":"http://patchwork.ozlabs.org/series/497318/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/covers/2215471/comments/","headers":{"Return-Path":"\n <linux-pci+bounces-50929-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=R8JWN8wR;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-50929-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.b=\"R8JWN8wR\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=198.175.65.13","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.intel.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=linux.intel.com"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fgGXV3gmxz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 04:01:30 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id A53C8303CC22\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 24 Mar 2026 16:58:30 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id A65533BC661;\n\tTue, 24 Mar 2026 16:58:29 +0000 (UTC)","from mgamail.intel.com (mgamail.intel.com [198.175.65.13])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 9F56C37BE6B;\n\tTue, 24 Mar 2026 16:58:26 +0000 (UTC)","from orviesa008.jf.intel.com ([10.64.159.148])\n  by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 24 Mar 2026 09:58:25 -0700","from ijarvine-mobl1.ger.corp.intel.com (HELO localhost)\n ([10.245.244.217])\n  by orviesa008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 24 Mar 2026 09:58:15 -0700"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774371509; cv=none;\n b=Fdr/D0xLF3Ja6EjiiZ7NTK97HpVX04tDKHpmgIKzxfiWqRHAFCtv1GXfuQqnjT/H9mtPmO+HPCIY/xqn4dMlaU2uR7GwIQqh+jhI4vyNGPWjMjL+eK8p+a/0ufguEVY9QpSBM0l02fYuzyBbAzPEapfKv0V/nhKJy+2PYY3Az1M=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774371509; c=relaxed/simple;\n\tbh=AVKqbcBAH58YtvbtTvUhV6tMedua8892v/x7yCDldr8=;\n\th=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Content-Type;\n b=U0vw+pusbKAm23CIdPa0XRLwuYI67n6kbZgzsVmiXhEqcGuWkoavWEklCL3p71LYeZ03fd/ZkoW+r8OSPTPS/RwjZnPwGDaMQ5I46Oo33LsmZtgn/zZLnmYmDxX6HL2naijhTNXH+dA6E2dhh+6/crCbikcbk6kPfJ3A6EhzJDw=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.intel.com;\n spf=pass smtp.mailfrom=linux.intel.com;\n dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.b=R8JWN8wR; arc=none smtp.client-ip=198.175.65.13","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n  t=1774371507; x=1805907507;\n  h=from:to:cc:subject:date:message-id:mime-version:\n   content-transfer-encoding;\n  bh=AVKqbcBAH58YtvbtTvUhV6tMedua8892v/x7yCDldr8=;\n  b=R8JWN8wR3mMZgajMDJfTk7tF2WeGZPt8s1lVqLa4U34eHcwFVrzd8yWD\n   QP4zMpT+Le9rT6/MxT8XVQUGK34+w4hWoXnechYNxg8bS4bUzvAsYrWmy\n   KSs2OjfSWlxarirO1fc3C/bHvZx6a3cy0YUJpP2VqR/vplMLTcsUAUtpY\n   hvCeUGyzd3DilI58UcA7ad9s4QmK4HumRSSoh3NiHKewHTASjNgDYv4SZ\n   t8AhPEMy+SOnYZxUTATVy+W4yD8/Y3XjGoT4dBC06Kg1NnuC01A91LC4m\n   d4EPiD0Srp8qjgpGdZk+ZauiVmICQXoIoTqyeBlMaeskmVzNSSZ3PUaMM\n   Q==;","X-CSE-ConnectionGUID":["FmR9B8xUQV2VisUKgez5WA==","aesm43ZmRSeKftw4Z5hIbQ=="],"X-CSE-MsgGUID":["tl/rrci+RRSHChXkrnOI1g==","C08Qc1D5Q9Gv1bbEQjAQVQ=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11739\"; a=\"86471499\"","E=Sophos;i=\"6.23,138,1770624000\";\n   d=\"scan'208\";a=\"86471499\"","E=Sophos;i=\"6.23,138,1770624000\";\n   d=\"scan'208\";a=\"224421853\""],"X-ExtLoop1":"1","From":"=?utf-8?q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>","To":"linux-pci@vger.kernel.org,\n\tBjorn Helgaas <bhelgaas@google.com>,\n\tGuenter Roeck <linux@roeck-us.net>,\n\tlinux-alpha@vger.kernel.org,\n\tlinux-arm-kernel@lists.infradead.org,\n\tlinux-m68k@lists.linux-m68k.org,\n\tlinux-mips@vger.kernel.org,\n\tlinux-parisc@vger.kernel.org,\n\tlinuxppc-dev@lists.ozlabs.org,\n\tlinux-s390@vger.kernel.org,\n\tlinux-sh@vger.kernel.org,\n\tRussell King <linux@armlinux.org.uk>,\n\tGeert Uytterhoeven <geert@linux-m68k.org>,\n\tThomas Bogendoerfer <tsbogend@alpha.franken.de>,\n\t\"James E.J. Bottomley\" <James.Bottomley@HansenPartnership.com>,\n\tHelge Deller <deller@gmx.de>,\n\tMichael Ellerman <mpe@ellerman.id.au>,\n\tThomas Gleixner <tglx@kernel.org>,\n\tIngo Molnar <mingo@redhat.com>,\n\tBorislav Petkov <bp@alien8.de>,\n\tDave Hansen <dave.hansen@linux.intel.com>,\n\t\"H. Peter Anvin\" <hpa@zytor.com>,\n\tChris Zankel <chris@zankel.net>,\n\tMax Filippov <jcmvbkbc@gmail.com>,\n\tMadhavan Srinivasan <maddy@linux.ibm.com>,\n\tYoshinori Sato <ysato@users.sourceforge.jp>,\n\tRich Felker <dalias@libc.org>,\n\tJohn Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>","Cc":"linux-kernel@vger.kernel.org,\n =?utf-8?q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>","Subject":"[PATCH 00/10] PCI: Improve head free space usage","Date":"Tue, 24 Mar 2026 18:56:23 +0200","Message-Id":"<20260324165633.4583-1-ilpo.jarvinen@linux.intel.com>","X-Mailer":"git-send-email 2.39.5","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit"},"content":"Hi all,\n\nThis series attempts to take advantage of free head space (the free\nspace before the aligned start address) in order to generally produce a\ntighter packing of the resources/bridge windows.\n\nThe recent changes to the resource fitting algorithm caused resource\nallocation failures in some cases where a bridge window that is sized\nto be gapless could no longer be assigned. The previous algorithm left\na huge gaps which allowed it to place the remainder (non-aligning part\nof the size) before the start address of used for the gapless fit,\nwhereas the new gapless approach always had to place the remainder\nafter the aligning part of the resources. There is not always space\nfor the remainder triggering those failures (e.g., when the aligning\npart must be placed at the top of the window).\n\nThis series attempts to allow placing the remainder once again before\nthe aligning part, but now without leaving huge gaps to retain the\nbenefits of the gapless bridge windows. The approach is somewhat hacky\nbut should work thanks to PCI resources fundamentally consisting only\npower-of-two atoms.\n\nThere maybe cases where architecture would not want to do such\nrelocation. This series adds the relocation to arch\npcibios_align_resource() functions to allow all of them taking\nadvantage of the better resource packing but if somebody objects doing\nthis relocation for a particular arch, I can remove it, please just let\nme know (this relocation doesn't seem critical unless there are\nregressions).\n\nIlpo Järvinen (10):\n  resource: Add __resource_contains_unbound() for internal contains\n    checks\n  resource: Pass full extent of empty space to resource_alignf CB\n  resource: Rename 'tmp' variable to 'full_avail'\n  ARM/PCI: Remove unnecessary second application of align\n  am68k/PCI: Remove unnecessary second application of align\n  MIPS: PCI: Remove unnecessary second application of align\n  parisc/PCI: Cleanup align handling\n  PCI: Rename window_alignment() to pci_min_window_alignment()\n  PCI: Align head space better\n  PCI: Fix alignment calculation for resource size larger than align\n\n arch/alpha/kernel/pci.c          |  1 +\n arch/arm/kernel/bios32.c         |  9 ++++---\n arch/m68k/kernel/pcibios.c       |  8 +++++--\n arch/mips/pci/pci-generic.c      |  8 ++++---\n arch/mips/pci/pci-legacy.c       |  3 +++\n arch/parisc/kernel/pci.c         | 17 ++++++++------\n arch/powerpc/kernel/pci-common.c |  6 ++++-\n arch/s390/pci/pci.c              |  1 +\n arch/sh/drivers/pci/pci.c        |  6 ++++-\n arch/x86/pci/i386.c              |  5 +++-\n arch/xtensa/kernel/pci.c         |  3 +++\n drivers/pci/pci.h                |  3 +++\n drivers/pci/setup-bus.c          | 15 ++++++++----\n drivers/pci/setup-res.c          | 40 +++++++++++++++++++++++++++++++-\n drivers/pcmcia/rsrc_nonstatic.c  |  3 ++-\n include/linux/ioport.h           | 22 +++++++++++++++---\n include/linux/pci.h              | 12 +++++++---\n kernel/resource.c                | 33 +++++++++++++-------------\n 18 files changed, 149 insertions(+), 46 deletions(-)\n\n\nbase-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f"}