lkml.org 
[lkml]   [2021]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v7 3/8] PCI: Remove reset_fn field from pci_dev
    Date
    reset_fn field is used to indicate whether the device supports any reset
    mechanism or not. Remove the use of reset_fn in favor of new reset_methods
    array which can be used to keep track of all supported reset mechanisms of
    a device and their ordering.

    The octeon driver is incorrectly using
    reset_fn field to detect if the device supports FLR or not. Use
    pcie_reset_flr() to probe whether it supports FLR or not.

    Reviewed-by: Alex Williamson <alex.williamson@redhat.com>
    Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
    Co-developed-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Amey Narkhede <ameynarkhede03@gmail.com>
    ---
    drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 2 +-
    drivers/pci/pci-sysfs.c | 2 +-
    drivers/pci/pci.c | 6 +++---
    drivers/pci/probe.c | 1 -
    drivers/pci/quirks.c | 2 +-
    drivers/pci/remove.c | 1 -
    include/linux/pci.h | 1 -
    7 files changed, 6 insertions(+), 9 deletions(-)

    diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
    index 516f166ce..336d149ee 100644
    --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
    +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
    @@ -526,7 +526,7 @@ static void octeon_destroy_resources(struct octeon_device *oct)
    oct->irq_name_storage = NULL;
    }
    /* Soft reset the octeon device before exiting */
    - if (oct->pci_dev->reset_fn)
    + if (!pcie_reset_flr(oct->pci_dev, 1))
    octeon_pci_flr(oct);
    else
    cn23xx_vf_ask_pf_to_do_flr(oct);
    diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
    index beb8d1f4f..316f70c3e 100644
    --- a/drivers/pci/pci-sysfs.c
    +++ b/drivers/pci/pci-sysfs.c
    @@ -1367,7 +1367,7 @@ static umode_t pci_dev_reset_attr_is_visible(struct kobject *kobj,
    {
    struct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));

    - if (!pdev->reset_fn)
    + if (!pci_reset_supported(pdev))
    return 0;

    return a->mode;
    diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
    index 39a9ea8bb..2302aa421 100644
    --- a/drivers/pci/pci.c
    +++ b/drivers/pci/pci.c
    @@ -5232,7 +5232,7 @@ int pci_reset_function(struct pci_dev *dev)
    {
    int rc;

    - if (!dev->reset_fn)
    + if (!pci_reset_supported(dev))
    return -ENOTTY;

    pci_dev_lock(dev);
    @@ -5268,7 +5268,7 @@ int pci_reset_function_locked(struct pci_dev *dev)
    {
    int rc;

    - if (!dev->reset_fn)
    + if (!pci_reset_supported(dev))
    return -ENOTTY;

    pci_dev_save_and_disable(dev);
    @@ -5291,7 +5291,7 @@ int pci_try_reset_function(struct pci_dev *dev)
    {
    int rc;

    - if (!dev->reset_fn)
    + if (!pci_reset_supported(dev))
    return -ENOTTY;

    if (!pci_dev_trylock(dev))
    diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
    index 8cf532681..90fd4f61f 100644
    --- a/drivers/pci/probe.c
    +++ b/drivers/pci/probe.c
    @@ -2405,7 +2405,6 @@ static void pci_init_capabilities(struct pci_dev *dev)

    pcie_report_downtraining(dev);
    pci_init_reset_methods(dev);
    - dev->reset_fn = pci_reset_supported(dev);
    }

    /*
    diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
    index f977ba79a..e86cf4a3b 100644
    --- a/drivers/pci/quirks.c
    +++ b/drivers/pci/quirks.c
    @@ -5589,7 +5589,7 @@ static void quirk_reset_lenovo_thinkpad_p50_nvgpu(struct pci_dev *pdev)

    if (pdev->subsystem_vendor != PCI_VENDOR_ID_LENOVO ||
    pdev->subsystem_device != 0x222e ||
    - !pdev->reset_fn)
    + !pci_reset_supported(pdev))
    return;

    if (pci_enable_device_mem(pdev))
    diff --git a/drivers/pci/remove.c b/drivers/pci/remove.c
    index dd12c2fcc..4c54c7505 100644
    --- a/drivers/pci/remove.c
    +++ b/drivers/pci/remove.c
    @@ -19,7 +19,6 @@ static void pci_stop_dev(struct pci_dev *dev)
    pci_pme_active(dev, false);

    if (pci_dev_is_added(dev)) {
    - dev->reset_fn = 0;

    device_release_driver(&dev->dev);
    pci_proc_detach_device(dev);
    diff --git a/include/linux/pci.h b/include/linux/pci.h
    index 0955246f8..6e9bc4f9c 100644
    --- a/include/linux/pci.h
    +++ b/include/linux/pci.h
    @@ -429,7 +429,6 @@ struct pci_dev {
    unsigned int state_saved:1;
    unsigned int is_physfn:1;
    unsigned int is_virtfn:1;
    - unsigned int reset_fn:1;
    unsigned int is_hotplug_bridge:1;
    unsigned int shpc_managed:1; /* SHPC owned by shpchp */
    unsigned int is_thunderbolt:1; /* Thunderbolt controller */
    --
    2.31.1
    \
     
     \ /
      Last update: 2021-06-08 07:51    [W:4.148 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site