|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/5] pci: switch pci_conf_{read/write} to use pci_sbdf_t
On 10/05/2019 17:10, Roger Pau Monne wrote:
> pci_dev already uses pci_sbdf_t, so propagate the usage of the type to
> pci_conf functions in order to shorten the calls when made from a
> pci_dev struct.
>
> No functional change intended.
>
> Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
> ---
> Cc: Jan Beulich <jbeulich@xxxxxxxx>
> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
> Cc: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> Cc: Julien Grall <julien.grall@xxxxxxx>
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> Cc: Tim Deegan <tim@xxxxxxx>
> Cc: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx>
> Cc: Brian Woods <brian.woods@xxxxxxx>
> Cc: Kevin Tian <kevin.tian@xxxxxxxxx>
> ---
> xen/arch/x86/cpu/amd.c | 27 ++--
> xen/arch/x86/dmi_scan.c | 9 +-
> xen/arch/x86/mm.c | 2 +-
> xen/arch/x86/msi.c | 177 +++++++++------------
> xen/arch/x86/oprofile/op_model_athlon.c | 12 +-
> xen/arch/x86/x86_64/mmconf-fam10h.c | 13 +-
> xen/arch/x86/x86_64/mmconfig-shared.c | 26 +--
> xen/arch/x86/x86_64/pci.c | 32 ++--
> xen/drivers/acpi/reboot.c | 8 +-
> xen/drivers/char/ehci-dbgp.c | 75 +++++----
> xen/drivers/char/ns16550.c | 80 +++++-----
> xen/drivers/passthrough/amd/iommu_detect.c | 3 +-
> xen/drivers/passthrough/amd/iommu_init.c | 26 +--
> xen/drivers/passthrough/ats.h | 4 +-
> xen/drivers/passthrough/pci.c | 106 +++++-------
> xen/drivers/passthrough/vtd/dmar.c | 18 ++-
> xen/drivers/passthrough/vtd/quirks.c | 69 ++++----
> xen/drivers/passthrough/x86/ats.c | 15 +-
> xen/drivers/pci/pci.c | 43 +++--
> xen/drivers/video/vga.c | 21 +--
> xen/drivers/vpci/header.c | 53 ++----
> xen/drivers/vpci/msi.c | 6 +-
> xen/drivers/vpci/msix.c | 12 +-
> xen/drivers/vpci/vpci.c | 42 ++---
> xen/include/xen/pci.h | 29 ++--
> 25 files changed, 444 insertions(+), 464 deletions(-)
>
> diff --git a/xen/arch/x86/cpu/amd.c b/xen/arch/x86/cpu/amd.c
> index e19a5ead3e..014d88925c 100644
> --- a/xen/arch/x86/cpu/amd.c
> +++ b/xen/arch/x86/cpu/amd.c
> @@ -417,15 +417,21 @@ static void disable_c1_ramping(void)
> int node, nr_nodes;
>
> /* Read the number of nodes from the first Northbridge. */
> - nr_nodes = ((pci_conf_read32(0, 0, 0x18, 0x0, 0x60)>>4)&0x07)+1;
> + nr_nodes = ((pci_conf_read32(PCI_SBDF_T(0, 0, 0x18, 0),
> + 0x60)>>4)&0x07)+1;
This looks suspiciously like it wants to use MASK_EXTR()
> for (node = 0; node < nr_nodes; node++) {
> + const pci_sbdf_t sbdf = {
> + .dev = 0x18 + node,
> + .func = 0x3
> + };
What is wrong with something like:
pci_sbdf_t pci = PCI_SBDF_T(0, 0, 0x18 + node, 3);
IMO, the resulting code would be more logical to read as
pci_conf_read8(pci, ...) (or perhaps dev?). sbdf it a little awkward.
> +
> /* PMM7: bus=0, dev=0x18+node, function=0x3, register=0x87. */
> - pmm7 = pci_conf_read8(0, 0, 0x18+node, 0x3, 0x87);
> + pmm7 = pci_conf_read8(sbdf, 0x87);
> /* Invalid read means we've updated every Northbridge. */
> if (pmm7 == 0xFF)
> break;
> pmm7 &= 0xFC; /* clear pmm7[1:0] */
> - pci_conf_write8(0, 0, 0x18+node, 0x3, 0x87, pmm7);
> + pci_conf_write8(sbdf, 0x87, pmm7);
> printk ("AMD: Disabling C1 Clock Ramping Node #%x\n", node);
> }
> }
> @@ -696,8 +702,13 @@ static void init_amd(struct cpuinfo_x86 *c)
>
> if (c->x86 == 0x16 && c->x86_model <= 0xf) {
> if (c == &boot_cpu_data) {
> - l = pci_conf_read32(0, 0, 0x18, 0x3, 0x58);
> - h = pci_conf_read32(0, 0, 0x18, 0x3, 0x5c);
> + const pci_sbdf_t sbdf = {
> + .dev = 0x18,
> + .func = 0x3,
> + };
> +
> + l = pci_conf_read32(sbdf, 0x58);
> + h = pci_conf_read32(sbdf, 0x5c);
> if ((l & 0x1f) | (h & 0x1))
> printk(KERN_WARNING
> "Applying workaround for erratum 792:
> %s%s%s\n",
> @@ -706,12 +717,10 @@ static void init_amd(struct cpuinfo_x86 *c)
> (h & 0x1) ? "clearing D18F3x5C[0]" : "");
>
> if (l & 0x1f)
> - pci_conf_write32(0, 0, 0x18, 0x3, 0x58,
> - l & ~0x1f);
> + pci_conf_write32(sbdf, 0x58, l & ~0x1f);
>
> if (h & 0x1)
> - pci_conf_write32(0, 0, 0x18, 0x3, 0x5c,
> - h & ~0x1);
> + pci_conf_write32(sbdf, 0x5c, h & ~0x1);
> }
>
> rdmsrl(MSR_AMD64_LS_CFG, value);
> diff --git a/xen/arch/x86/dmi_scan.c b/xen/arch/x86/dmi_scan.c
> index fcdf2d3952..59557fa57b 100644
> --- a/xen/arch/x86/dmi_scan.c
> +++ b/xen/arch/x86/dmi_scan.c
> @@ -468,16 +468,19 @@ static __init int broken_toshiba_keyboard(struct
> dmi_blacklist *d)
> static int __init ich10_bios_quirk(struct dmi_system_id *d)
> {
> u32 port, smictl;
> + const pci_sbdf_t sbdf = {
> + .dev = 0x1f,
> + };
>
> - if ( pci_conf_read16(0, 0, 0x1f, 0, PCI_VENDOR_ID) != 0x8086 )
> + if ( pci_conf_read16(sbdf, PCI_VENDOR_ID) != 0x8086 )
> return 0;
>
> - switch ( pci_conf_read16(0, 0, 0x1f, 0, PCI_DEVICE_ID) ) {
> + switch ( pci_conf_read16(sbdf, PCI_DEVICE_ID) ) {
> case 0x3a14:
> case 0x3a16:
> case 0x3a18:
> case 0x3a1a:
> - port = (pci_conf_read16(0, 0, 0x1f, 0, 0x40) & 0xff80) + 0x30;
> + port = (pci_conf_read16(sbdf, 0x40) & 0xff80) + 0x30;
> smictl = inl(port);
> /* turn off LEGACY_USB{,2}_EN if enabled */
> if ( smictl & 0x20008 )
> diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
> index 45fadbab61..37d8141ed2 100644
> --- a/xen/arch/x86/mm.c
> +++ b/xen/arch/x86/mm.c
> @@ -5984,7 +5984,7 @@ const struct platform_bad_page *__init
> get_platform_badpages(unsigned int *array
> }
>
> *array_size = ARRAY_SIZE(snb_bad_pages);
> - igd_id = pci_conf_read32(0, 0, 2, 0, 0);
> + igd_id = pci_conf_read32(PCI_SBDF_T(0, 0, 2, 0), 0);
> if ( IS_SNB_GFX(igd_id) )
> return snb_bad_pages;
>
> diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
> index f30f592ee2..ad4a72d56b 100644
> --- a/xen/arch/x86/msi.c
> +++ b/xen/arch/x86/msi.c
> @@ -124,29 +124,20 @@ static void msix_put_fixmap(struct arch_msix *msix, int
> idx)
>
> static bool memory_decoded(const struct pci_dev *dev)
> {
> - uint8_t bus, slot, func;
> + pci_sbdf_t sbdf = dev->sbdf;
>
> - if ( !dev->info.is_virtfn )
> + if ( dev->info.is_virtfn )
> {
> - bus = dev->sbdf.bus;
> - slot = dev->sbdf.dev;
> - func = dev->sbdf.func;
> - }
> - else
> - {
> - bus = dev->info.physfn.bus;
> - slot = PCI_SLOT(dev->info.physfn.devfn);
> - func = PCI_FUNC(dev->info.physfn.devfn);
> + sbdf.bus = dev->info.physfn.bus;
> + sbdf.extfunc = dev->info.physfn.devfn;
> }
>
> - return !!(pci_conf_read16(dev->sbdf.seg, bus, slot, func, PCI_COMMAND) &
> - PCI_COMMAND_MEMORY);
> + return !!(pci_conf_read16(sbdf, PCI_COMMAND) & PCI_COMMAND_MEMORY);
Can drop the !! and brackets.
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |