[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 0/5] Small PCI refactoring
- To: xen-devel@xxxxxxxxxxxxxxxxxxxx
- From: Teddy Astie <teddy.astie@xxxxxxxxxx>
- Date: Mon, 18 May 2026 19:20:15 +0200
- Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Feedback-ID"
- Autocrypt: addr=teddy.astie@xxxxxxxxxx; keydata= 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 x9fhaZEsniw8/bYgC3igkk5YJiOa
- Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Jason Andryuk <jason.andryuk@xxxxxxx>
- Delivery-date: Mon, 18 May 2026 17:20:37 +0000
- Feedback-id: default:8631fc262581453bbf619ec5b2062170:Sweego
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
Le 18/05/2026 à 17:22, Teddy Astie a écrit :
The goal of this series is to make some refactoring of some
pci primitives to improve codegen and make code less verbose.
A big chunk of it is converting many places where (seg, bus, dev, fn)
is split into multiples variables and convert it into being just
pci_sbdf_t, in particular in some PCI function parameters to reduce
parameter count which usually translate into less registers to pass
to the function. Moreover, we also avoid translating back and forth
between pci_sbdf_t and individual (seg, bus, dev, fn).
Latest patch attempts to improve codegen of pci_conf_{read,write}N()
by making them inline specialized variants of pci_mmcfg_{read,write}()
in order to eliminate a particular `switch (len)` at compile time.
No intended functional change, aside some parts of the codebase that will
now correctly handle PCI segment when parsed while it was previously
ignored (e.g dbgp).
Bloat-o-meter is pretty telling
add/remove: 4/2 grow/shrink: 11/14 up/down: 529/-1470 (-941)
Function old new delta
pci_mmcfg_base - 106 +106
parse_pci_sbdf_seg - 88 +88
parse_pci_sbdf - 85 +85
pci_dev_base - 56 +56
pci_conf_read16 92 118 +26
pci_conf_read8 92 117 +25
ehci_dbgp_init 629 652 +23
pci_conf_read32 94 116 +22
pci_conf_write32 88 109 +21
symbols_names 106435 106452 +17
symbols_sorted_offsets 59672 59688 +16
pci_conf_write16 94 109 +15
pci_conf_write8 94 108 +14
reserve_unity_map_for_device 434 445 +11
symbols_offsets 31920 31924 +4
mmcfg_intercept_write 194 193 -1
add_one_user_rmrr 653 644 -9
__find_dbgp 87 60 -27
pci_device_detect 89 55 -34
pci_mmcfg_write 197 152 -45
_scan_pci_devices 286 241 -45
parse_ivrs_ioapic 292 235 -57
parse_rmrr_param 484 420 -64
register_one_rmrr 389 324 -65
parse_ivrs_hpet 249 184 -65
parse_ivmd_param 651 570 -81
acpi_parse_dmar 2625 2520 -105
get_virt 106 - -106
pci_mmcfg_read 189 - -189
ns16550_init 3205 3002 -203
acpi_parse_dev_scope 1465 1091 -374
Teddy Astie (5):
pci: Introduce parse_pci_sbdf{_seg}()
vtd: Use pci_sbdf_t in acpi_parse_dev_scope()
pci: Use pci_sbdf_t in pci_device_detect()
pci: Parse into pci_sbdf_t directly
RFC: pci: Migrate pci_mmcfg_{read,write}() to pci.c
xen/arch/x86/pv/ro-page-fault.c | 3 +-
xen/arch/x86/x86_64/mmconfig.h | 43 --------
xen/arch/x86/x86_64/mmconfig_64.c | 106 ++++----------------
xen/arch/x86/x86_64/pci.c | 122 +++++++++++++++++++++--
xen/drivers/char/ehci-dbgp.c | 35 +++----
xen/drivers/char/ns16550.c | 24 ++---
xen/drivers/char/xhci-dbc.c | 6 +-
xen/drivers/passthrough/amd/iommu_acpi.c | 26 ++---
xen/drivers/passthrough/pci.c | 16 +--
xen/drivers/passthrough/vtd/dmar.c | 80 ++++++---------
xen/drivers/pci/pci.c | 18 ++++
xen/include/xen/pci.h | 11 +-
12 files changed, 243 insertions(+), 247 deletions(-)
There are some issues with our mail provider for the cover letter and
some whitespace issues in one of the patch, will resend tomorrow
(hopefully correctly this time).
Teddy
Attachment:
OpenPGP_0x660FA9D102CBCFD0.asc
Description: OpenPGP public key
Attachment:
OpenPGP_signature.asc
Description: OpenPGP digital signature
|