* [PATCH v5 00/11] PCI: Drop duplicated tracking of a pci_dev's bound driver
@ 2021-09-29 8:52 Uwe Kleine-König
2021-09-29 8:53 ` [PATCH v5 07/11] PCI: Replace pci_dev::driver usage that gets the driver name Uwe Kleine-König
0 siblings, 1 reply; 5+ messages in thread
From: Uwe Kleine-König @ 2021-09-29 8:52 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: Christoph Hellwig, linux-pci, kernel, Alexander Duyck,
Alexander Shishkin, Andrew Donnellan, Andy Shevchenko,
Arnaldo Carvalho de Melo, Arnd Bergmann, Benjamin Herrenschmidt,
Bjorn Helgaas, Borislav Petkov, Boris Ostrovsky, David S. Miller,
Fiona Trahe, Frederic Barrat, Giovanni Cabiddu,
Greg Kroah-Hartman, Herbert Xu, H. Peter Anvin, Ido Schimmel,
Ingo Molnar, Jack Xu, Jakub Kicinski, Jesse Brandeburg,
Jiri Olsa, Jiri Pirko, Juergen Gross, Konrad Rzeszutek Wilk,
Marco Chiappero, Mark Rutland, Mathias Nyman, Michael Buesch,
Michael Ellerman, Namhyung Kim, Oliver O'Halloran,
Paul Mackerras, Peter Zijlstra, Rafał Miłecki,
Russell Currey, Salil Mehta, Sathya Prakash, Simon Horman,
Sreekanth Reddy, Stefano Stabellini, Suganath Prabu Subramani,
Taras Chornyi, Thomas Gleixner, Tomaszx Kowalik, Vadym Kochan,
Wojciech Ziemba, Yisen Zhuang, Zhou Wang, linux-crypto,
linux-kernel, linux-perf-users, linuxppc-dev, linux-scsi,
linux-usb, linux-wireless, MPT-FusionLinux.pdl, netdev,
oss-drivers, qat-linux, x86, xen-devel
Hello,
this is v5 of the quest to drop the "driver" member from struct pci_dev
which tracks the same data (apart from a constant offset) as dev.driver.
Changes since v4:
- split some changes out of "PCI: replace pci_dev::driver usage that
gets the driver name" and reworked them a bit as suggested by Bjorn.
- Add a line break in
drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c to please
checkpatch --strict and Simon Horman.
- Fixed a build problem in "crypto: qat - simplify adf_enable_aer()",
thanks to Giovanni Cabiddu for spotting and a suggested fix.
I didn't replace :: by . as suggested by Bjorn as I'm unsure if his
preference is stronger than mine.
This patch stack survived an allmodconfig build on arm64, m68k, powerpc,
riscv, s390, sparc64 and x86_64 on top of v5.15-rc3.
Best regards
Uwe
Uwe Kleine-König (11):
PCI: Simplify pci_device_remove()
PCI: Drop useless check from pci_device_probe()
xen/pci: Drop some checks that are always true
bcma: simplify reference to the driver's name
powerpc/eeh: Don't use driver member of struct pci_dev and further
cleanups
ssb: Simplify determination of driver name
PCI: Replace pci_dev::driver usage that gets the driver name
scsi: message: fusion: Remove unused parameter of mpt_pci driver's
probe()
crypto: qat - simplify adf_enable_aer()
PCI: Replace pci_dev::driver usage by pci_dev::dev.driver
PCI: Drop duplicated tracking of a pci_dev's bound driver
arch/powerpc/include/asm/ppc-pci.h | 5 --
arch/powerpc/kernel/eeh.c | 8 +++
arch/powerpc/kernel/eeh_driver.c | 10 +--
arch/x86/events/intel/uncore.c | 2 +-
arch/x86/kernel/probe_roms.c | 2 +-
drivers/bcma/host_pci.c | 6 +-
drivers/crypto/hisilicon/qm.c | 2 +-
drivers/crypto/qat/qat_4xxx/adf_drv.c | 7 +--
drivers/crypto/qat/qat_c3xxx/adf_drv.c | 7 +--
drivers/crypto/qat/qat_c62x/adf_drv.c | 7 +--
drivers/crypto/qat/qat_common/adf_aer.c | 10 +--
.../crypto/qat/qat_common/adf_common_drv.h | 3 +-
drivers/crypto/qat/qat_dh895xcc/adf_drv.c | 7 +--
drivers/message/fusion/mptbase.c | 7 +--
drivers/message/fusion/mptbase.h | 2 +-
drivers/message/fusion/mptctl.c | 4 +-
drivers/message/fusion/mptlan.c | 2 +-
drivers/misc/cxl/guest.c | 24 ++++---
drivers/misc/cxl/pci.c | 30 +++++----
.../ethernet/hisilicon/hns3/hns3_ethtool.c | 2 +-
.../ethernet/marvell/prestera/prestera_pci.c | 2 +-
drivers/net/ethernet/mellanox/mlxsw/pci.c | 2 +-
.../ethernet/netronome/nfp/nfp_net_ethtool.c | 3 +-
drivers/pci/iov.c | 25 +++++---
drivers/pci/pci-driver.c | 45 ++++++-------
drivers/pci/pci.c | 4 +-
drivers/pci/pcie/err.c | 36 ++++++-----
drivers/pci/xen-pcifront.c | 63 +++++++++----------
drivers/ssb/pcihost_wrapper.c | 6 +-
drivers/usb/host/xhci-pci.c | 2 +-
include/linux/pci.h | 1 -
31 files changed, 161 insertions(+), 175 deletions(-)
Range-diff against v4:
1: 8d064bbc74b0 = 1: c2b53ab26a6b PCI: Simplify pci_device_remove()
2: 966b49c308b4 = 2: 2c733e1d5186 PCI: Drop useless check from pci_device_probe()
3: ce710d6e8a1b = 3: 547ca5a7aa16 xen/pci: Drop some checks that are always true
-: ------------ > 4: 40eb07353844 bcma: simplify reference to the driver's name
-: ------------ > 5: bab59c1dff6d powerpc/eeh: Don't use driver member of struct pci_dev and further cleanups
-: ------------ > 6: abd70de9782d ssb: Simplify determination of driver name
4: 3e4e6994a59d ! 7: 735845bd26b9 PCI: replace pci_dev::driver usage that gets the driver name
@@ Metadata
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
## Commit message ##
- PCI: replace pci_dev::driver usage that gets the driver name
+ PCI: Replace pci_dev::driver usage that gets the driver name
struct pci_dev::driver holds (apart from a constant offset) the same
data as struct pci_dev::dev->driver. With the goal to remove struct
@@ Commit message
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
- ## arch/powerpc/include/asm/ppc-pci.h ##
-@@ arch/powerpc/include/asm/ppc-pci.h: void eeh_sysfs_remove_device(struct pci_dev *pdev);
-
- static inline const char *eeh_driver_name(struct pci_dev *pdev)
- {
-- return (pdev && pdev->driver) ? pdev->driver->name : "<null>";
-+ if (pdev) {
-+ const char *drvstr = dev_driver_string(&pdev->dev);
-+
-+ if (strcmp(drvstr, ""))
-+ return drvstr;
-+ }
-+
-+ return "<null>";
- }
-
- #endif /* CONFIG_EEH */
-
- ## drivers/bcma/host_pci.c ##
-@@ drivers/bcma/host_pci.c: static int bcma_host_pci_probe(struct pci_dev *dev,
- if (err)
- goto err_kfree_bus;
-
-- name = dev_name(&dev->dev);
-- if (dev->driver && dev->driver->name)
-- name = dev->driver->name;
-+ name = dev_driver_string(&dev->dev);
-+ if (!strcmp(name, ""))
-+ name = dev_name(&dev->dev);
-+
- err = pci_request_regions(dev, name);
- if (err)
- goto err_pci_disable;
-
## drivers/crypto/hisilicon/qm.c ##
@@ drivers/crypto/hisilicon/qm.c: static int qm_alloc_uacce(struct hisi_qm *qm)
};
@@ drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c: nfp_get_drvinfo(struct nfp
char nsp_version[ETHTOOL_FWVERS_LEN] = {};
- strlcpy(drvinfo->driver, pdev->driver->name, sizeof(drvinfo->driver));
-+ strlcpy(drvinfo->driver, dev_driver_string(&pdev->dev), sizeof(drvinfo->driver));
++ strlcpy(drvinfo->driver, dev_driver_string(&pdev->dev),
++ sizeof(drvinfo->driver));
nfp_net_get_nspinfo(app, nsp_version);
snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version),
"%s %s %s %s", vnic_version, nsp_version,
-
- ## drivers/ssb/pcihost_wrapper.c ##
-@@ drivers/ssb/pcihost_wrapper.c: static int ssb_pcihost_probe(struct pci_dev *dev,
- err = pci_enable_device(dev);
- if (err)
- goto err_kfree_ssb;
-- name = dev_name(&dev->dev);
-- if (dev->driver && dev->driver->name)
-- name = dev->driver->name;
-+
-+ name = dev_driver_string(&dev->dev);
-+ if (*name == '\0')
-+ name = dev_name(&dev->dev);
-+
- err = pci_request_regions(dev, name);
- if (err)
- goto err_pci_disable;
5: 574b743327b8 = 8: 1e58019165b9 scsi: message: fusion: Remove unused parameter of mpt_pci driver's probe()
6: 674c6efd3dab ! 9: dea72a470141 crypto: qat - simplify adf_enable_aer()
@@ drivers/crypto/qat/qat_4xxx/adf_drv.c: static struct pci_driver adf_driver = {
.probe = adf_probe,
.remove = adf_remove,
.sriov_configure = adf_sriov_configure,
-+ .err_handler = adf_err_handler,
++ .err_handler = &adf_err_handler,
};
module_pci_driver(adf_driver);
@@ drivers/crypto/qat/qat_c3xxx/adf_drv.c: static struct pci_driver adf_driver = {
.probe = adf_probe,
.remove = adf_remove,
.sriov_configure = adf_sriov_configure,
-+ .err_handler = adf_err_handler,
++ .err_handler = &adf_err_handler,
};
static void adf_cleanup_pci_dev(struct adf_accel_dev *accel_dev)
@@ drivers/crypto/qat/qat_c62x/adf_drv.c: static struct pci_driver adf_driver = {
.probe = adf_probe,
.remove = adf_remove,
.sriov_configure = adf_sriov_configure,
-+ .err_handler = adf_err_handler,
++ .err_handler = &adf_err_handler,
};
static void adf_cleanup_pci_dev(struct adf_accel_dev *accel_dev)
@@ drivers/crypto/qat/qat_common/adf_common_drv.h: void adf_ae_fw_release(struct ad
int adf_ae_stop(struct adf_accel_dev *accel_dev);
-int adf_enable_aer(struct adf_accel_dev *accel_dev);
++extern const struct pci_error_handlers adf_err_handler;
+void adf_enable_aer(struct adf_accel_dev *accel_dev);
void adf_disable_aer(struct adf_accel_dev *accel_dev);
void adf_reset_sbr(struct adf_accel_dev *accel_dev);
@@ drivers/crypto/qat/qat_dh895xcc/adf_drv.c: static struct pci_driver adf_driver =
.probe = adf_probe,
.remove = adf_remove,
.sriov_configure = adf_sriov_configure,
-+ .err_handler = adf_err_handler,
++ .err_handler = &adf_err_handler,
};
static void adf_cleanup_pci_dev(struct adf_accel_dev *accel_dev)
7: 0e022deb0f75 = 10: b4165dda38ea PCI: Replace pci_dev::driver usage by pci_dev::dev.driver
8: edd9d24df02a = 11: d93a138bd7ab PCI: Drop duplicated tracking of a pci_dev's bound driver
base-commit: 5816b3e6577eaa676ceb00a848f0fd65fe2adc29
--
2.30.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v5 07/11] PCI: Replace pci_dev::driver usage that gets the driver name
2021-09-29 8:52 [PATCH v5 00/11] PCI: Drop duplicated tracking of a pci_dev's bound driver Uwe Kleine-König
@ 2021-09-29 8:53 ` Uwe Kleine-König
2021-09-29 10:17 ` Simon Horman
2021-09-29 14:44 ` Ido Schimmel
0 siblings, 2 replies; 5+ messages in thread
From: Uwe Kleine-König @ 2021-09-29 8:53 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: Christoph Hellwig, linux-pci, kernel, Michael Ellerman,
Benjamin Herrenschmidt, Paul Mackerras, Rafał Miłecki,
Zhou Wang, Herbert Xu, David S. Miller, Yisen Zhuang,
Salil Mehta, Jakub Kicinski, Vadym Kochan, Taras Chornyi,
Jiri Pirko, Ido Schimmel, Simon Horman, Michael Buesch,
Oliver O'Halloran, Jesse Brandeburg, Alexander Duyck,
linuxppc-dev, linux-kernel, linux-wireless, linux-crypto, netdev,
oss-drivers
struct pci_dev::driver holds (apart from a constant offset) the same
data as struct pci_dev::dev->driver. With the goal to remove struct
pci_dev::driver to get rid of data duplication replace getting the
driver name by dev_driver_string() which implicitly makes use of struct
pci_dev::dev->driver.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
drivers/crypto/hisilicon/qm.c | 2 +-
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 2 +-
drivers/net/ethernet/marvell/prestera/prestera_pci.c | 2 +-
drivers/net/ethernet/mellanox/mlxsw/pci.c | 2 +-
drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c | 3 ++-
5 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/crypto/hisilicon/qm.c b/drivers/crypto/hisilicon/qm.c
index 369562d34d66..8f361e54e524 100644
--- a/drivers/crypto/hisilicon/qm.c
+++ b/drivers/crypto/hisilicon/qm.c
@@ -3085,7 +3085,7 @@ static int qm_alloc_uacce(struct hisi_qm *qm)
};
int ret;
- ret = strscpy(interface.name, pdev->driver->name,
+ ret = strscpy(interface.name, dev_driver_string(&pdev->dev),
sizeof(interface.name));
if (ret < 0)
return -ENAMETOOLONG;
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
index 7ea511d59e91..f279edfce3f1 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
@@ -606,7 +606,7 @@ static void hns3_get_drvinfo(struct net_device *netdev,
return;
}
- strncpy(drvinfo->driver, h->pdev->driver->name,
+ strncpy(drvinfo->driver, dev_driver_string(&h->pdev->dev),
sizeof(drvinfo->driver));
drvinfo->driver[sizeof(drvinfo->driver) - 1] = '\0';
diff --git a/drivers/net/ethernet/marvell/prestera/prestera_pci.c b/drivers/net/ethernet/marvell/prestera/prestera_pci.c
index a250d394da38..a8f007f6dad2 100644
--- a/drivers/net/ethernet/marvell/prestera/prestera_pci.c
+++ b/drivers/net/ethernet/marvell/prestera/prestera_pci.c
@@ -720,7 +720,7 @@ static int prestera_fw_load(struct prestera_fw *fw)
static int prestera_pci_probe(struct pci_dev *pdev,
const struct pci_device_id *id)
{
- const char *driver_name = pdev->driver->name;
+ const char *driver_name = dev_driver_string(&pdev->dev);
struct prestera_fw *fw;
int err;
diff --git a/drivers/net/ethernet/mellanox/mlxsw/pci.c b/drivers/net/ethernet/mellanox/mlxsw/pci.c
index 13b0259f7ea6..8f306364f7bf 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/pci.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/pci.c
@@ -1876,7 +1876,7 @@ static void mlxsw_pci_cmd_fini(struct mlxsw_pci *mlxsw_pci)
static int mlxsw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{
- const char *driver_name = pdev->driver->name;
+ const char *driver_name = dev_driver_string(&pdev->dev);
struct mlxsw_pci *mlxsw_pci;
int err;
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c
index 0685ece1f155..1de076f55740 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c
@@ -202,7 +202,8 @@ nfp_get_drvinfo(struct nfp_app *app, struct pci_dev *pdev,
{
char nsp_version[ETHTOOL_FWVERS_LEN] = {};
- strlcpy(drvinfo->driver, pdev->driver->name, sizeof(drvinfo->driver));
+ strlcpy(drvinfo->driver, dev_driver_string(&pdev->dev),
+ sizeof(drvinfo->driver));
nfp_net_get_nspinfo(app, nsp_version);
snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version),
"%s %s %s %s", vnic_version, nsp_version,
--
2.30.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v5 07/11] PCI: Replace pci_dev::driver usage that gets the driver name
2021-09-29 8:53 ` [PATCH v5 07/11] PCI: Replace pci_dev::driver usage that gets the driver name Uwe Kleine-König
@ 2021-09-29 10:17 ` Simon Horman
2021-09-29 14:44 ` Ido Schimmel
1 sibling, 0 replies; 5+ messages in thread
From: Simon Horman @ 2021-09-29 10:17 UTC (permalink / raw)
To: Uwe Kleine-König
Cc: Bjorn Helgaas, Christoph Hellwig, linux-pci, kernel,
Michael Ellerman, Benjamin Herrenschmidt, Paul Mackerras,
Rafał Miłecki, Zhou Wang, Herbert Xu, David S. Miller,
Yisen Zhuang, Salil Mehta, Jakub Kicinski, Vadym Kochan,
Taras Chornyi, Jiri Pirko, Ido Schimmel, Michael Buesch,
Oliver O'Halloran, Jesse Brandeburg, Alexander Duyck,
linuxppc-dev, linux-kernel, linux-wireless, linux-crypto, netdev,
oss-drivers
On Wed, Sep 29, 2021 at 10:53:02AM +0200, Uwe Kleine-König wrote:
> struct pci_dev::driver holds (apart from a constant offset) the same
> data as struct pci_dev::dev->driver. With the goal to remove struct
> pci_dev::driver to get rid of data duplication replace getting the
> driver name by dev_driver_string() which implicitly makes use of struct
> pci_dev::dev->driver.
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
> drivers/crypto/hisilicon/qm.c | 2 +-
> drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 2 +-
> drivers/net/ethernet/marvell/prestera/prestera_pci.c | 2 +-
> drivers/net/ethernet/mellanox/mlxsw/pci.c | 2 +-
> drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c | 3 ++-
> 5 files changed, 6 insertions(+), 5 deletions(-)
Thanks Uwe.
For NFP:
Acked-by: Simon Horman <simon.horman@corigine.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v5 07/11] PCI: Replace pci_dev::driver usage that gets the driver name
2021-09-29 8:53 ` [PATCH v5 07/11] PCI: Replace pci_dev::driver usage that gets the driver name Uwe Kleine-König
2021-09-29 10:17 ` Simon Horman
@ 2021-09-29 14:44 ` Ido Schimmel
2021-09-29 15:21 ` Ido Schimmel
1 sibling, 1 reply; 5+ messages in thread
From: Ido Schimmel @ 2021-09-29 14:44 UTC (permalink / raw)
To: Uwe Kleine-König
Cc: Bjorn Helgaas, Christoph Hellwig, linux-pci, kernel,
Michael Ellerman, Benjamin Herrenschmidt, Paul Mackerras,
Rafał Miłecki, Zhou Wang, Herbert Xu, David S. Miller,
Yisen Zhuang, Salil Mehta, Jakub Kicinski, Vadym Kochan,
Taras Chornyi, Jiri Pirko, Simon Horman, Michael Buesch,
Oliver O'Halloran, Jesse Brandeburg, Alexander Duyck,
linuxppc-dev, linux-kernel, linux-wireless, linux-crypto, netdev,
oss-drivers
On Wed, Sep 29, 2021 at 10:53:02AM +0200, Uwe Kleine-König wrote:
> struct pci_dev::driver holds (apart from a constant offset) the same
> data as struct pci_dev::dev->driver. With the goal to remove struct
> pci_dev::driver to get rid of data duplication replace getting the
> driver name by dev_driver_string() which implicitly makes use of struct
> pci_dev::dev->driver.
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
For mlxsw:
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Tested-by: Ido Schimmel <idosch@nvidia.com>
Thanks
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v5 07/11] PCI: Replace pci_dev::driver usage that gets the driver name
2021-09-29 14:44 ` Ido Schimmel
@ 2021-09-29 15:21 ` Ido Schimmel
0 siblings, 0 replies; 5+ messages in thread
From: Ido Schimmel @ 2021-09-29 15:21 UTC (permalink / raw)
To: Ido Schimmel, u.kleine-koenig
Cc: Bjorn Helgaas, Christoph Hellwig, linux-pci, kernel,
Michael Ellerman, Benjamin Herrenschmidt, Paul Mackerras,
Rafał Miłecki, Zhou Wang, Herbert Xu, David S. Miller,
Yisen Zhuang, Salil Mehta, Jakub Kicinski, Vadym Kochan,
Taras Chornyi, Jiri Pirko, Simon Horman, Michael Buesch,
Oliver O'Halloran, Jesse Brandeburg, Alexander Duyck,
linuxppc-dev, linux-kernel, linux-wireless, linux-crypto, netdev,
oss-drivers
On Wed, Sep 29, 2021 at 05:44:51PM +0300, Ido Schimmel wrote:
> On Wed, Sep 29, 2021 at 10:53:02AM +0200, Uwe Kleine-König wrote:
> > struct pci_dev::driver holds (apart from a constant offset) the same
> > data as struct pci_dev::dev->driver. With the goal to remove struct
> > pci_dev::driver to get rid of data duplication replace getting the
> > driver name by dev_driver_string() which implicitly makes use of struct
> > pci_dev::dev->driver.
> >
> > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
>
> For mlxsw:
>
> Reviewed-by: Ido Schimmel <idosch@nvidia.com>
> Tested-by: Ido Schimmel <idosch@nvidia.com>
>
> Thanks
Actually, I found out that after loading and executing another kernel
(or the same one) via kexec I get this splat [1].
[1]
BUG: unable to handle page fault for address: ffffffffffffffc8
#PF: supervisor read access in kernel mode
#PF: error_code(0x0000) - not-present page
PGD 6e40c067 P4D 6e40c067 PUD 6e40e067 PMD 0
Oops: 0000 [#1] SMP
CPU: 0 PID: 786 Comm: kexec Not tainted 5.15.0-rc2-custom-45114-g6b0effa5a61f #112
Hardware name: Mellanox Technologies Ltd. MSN3700/VMOD0005, BIOS 5.11 01/06/2019
RIP: 0010:pci_device_shutdown+0x16/0x40
Code: 01 00 31 d2 4c 89 e7 89 c6 e8 36 ce 01 00 41 89 c5 eb bb 90 55 48 8d af 40 ff ff ff 53 48 8b 47 68 48 89 fb 48 83 f8 78 74 0e <48> 8b 40 c8 48 85 c0 74
05 48 89 ef ff d0 80 3d 35 81 b7 01 00 74
RSP: 0018:ffff95fec0d37db8 EFLAGS: 00010297
RAX: 0000000000000000 RBX: ffff8d70c0f1f0c0 RCX: 0000000000000004
RDX: ffff8d7115a03a00 RSI: 0000000000000206 RDI: ffff8d70c0f1f0c0
RBP: ffff8d70c0f1f000 R08: 0000000000000002 R09: 0000000000000502
R10: 0000000000000000 R11: 0000000000000006 R12: ffff8d70c0f1f0c0
R13: ffff8d70c0f1f140 R14: 00000000fee1dead R15: 0000000000000000
FS: 00007fd3089e0b80(0000) GS:ffff8d7237c00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffffffffffffffc8 CR3: 0000000155abb001 CR4: 00000000003706f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
device_shutdown+0x12e/0x180
kernel_kexec+0x52/0xb0
__do_sys_reboot+0x1c0/0x210
do_syscall_64+0x35/0x80
entry_SYSCALL_64_after_hwframe+0x44/0xae
RIP: 0033:0x7fd308afd557
Code: 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 89 fa be 69 19 12 28 bf ad de e1 fe b8 a9 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 01
c3 48 8b 15 f1 a8 0c 00 f7 d8 64 89 02 b8
RSP: 002b:00007fff7d01e0a8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a9
RAX: ffffffffffffffda RBX: 00005606db11d380 RCX: 00007fd308afd557
RDX: 0000000045584543 RSI: 0000000028121969 RDI: 00000000fee1dead
RBP: 0000000000000000 R08: 0000000000000007 R09: 00007fd308bc8a60
R10: 0000000000000021 R11: 0000000000000246 R12: 0000000000000003
R13: 00007fff7d01e1f0 R14: 00005606db11d8c0 R15: 00000000ffffffff
Modules linked in:
CR2: ffffffffffffffc8
---[ end trace 0cb0bc633a6fde3e ]---
Where:
(gdb) l *(pci_device_shutdown+0x16)
0xffffffff8156abf6 is in pci_device_shutdown (drivers/pci/pci-driver.c:496).
491 struct pci_dev *pci_dev = to_pci_dev(dev);
492 struct pci_driver *drv = to_pci_driver(pci_dev->dev.driver);
493
494 pm_runtime_resume(dev);
495
496 if (drv && drv->shutdown)
497 drv->shutdown(pci_dev);
498
499 /*
500 * If this is a kexec reboot, turn off Bus Master bit on the
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-09-29 15:22 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-29 8:52 [PATCH v5 00/11] PCI: Drop duplicated tracking of a pci_dev's bound driver Uwe Kleine-König
2021-09-29 8:53 ` [PATCH v5 07/11] PCI: Replace pci_dev::driver usage that gets the driver name Uwe Kleine-König
2021-09-29 10:17 ` Simon Horman
2021-09-29 14:44 ` Ido Schimmel
2021-09-29 15:21 ` Ido Schimmel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).