Message ID | 20240315100748.2913882-3-shaojijie@huawei.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | There are some bugfix for the HNS3 ethernet driver | expand |
On Fri, Mar 15, 2024 at 06:07:47PM +0800, Jijie Shao wrote: > From: Yonglong Liu <liuyonglong@huawei.com> > > The devlink reload process will access the hardware resources, > but the register operation is before the hardware initialize > done, so, if process the devlink reload during initializetion, typo: initializetion -> initialization Moreover, I would suggest to fix the syntax of that description because it seems to be not obvious. e.g. the register operation is done before the hardware is initialized (but I may not get your intention) > may lead the kernel crash. This patch check whether the NIC is -> may lead to kernel crash > initialized to fix the problem. Maybe just: "Fix this by adding the check if the NIC initialization check" ? > > Fixes: b741269b2759 ("net: hns3: add support for registering devlink for PF") > Signed-off-by: Yonglong Liu <liuyonglong@huawei.com> > Signed-off-by: Jijie Shao <shaojijie@huawei.com> > --- > drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c > index 9a939c0b217f..80db4f7b05f6 100644 > --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c > +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c > @@ -40,8 +40,9 @@ static int hclge_devlink_reload_down(struct devlink *devlink, bool netns_change, > struct pci_dev *pdev = hdev->pdev; > int ret; > > - if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state)) { > - dev_err(&pdev->dev, "reset is handling\n"); > + if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state) || > + !test_bit(HCLGE_STATE_NIC_REGISTERED, &hdev->state)) { > + dev_err(&pdev->dev, "reset is handling or driver removed\n"); > return -EBUSY; > } > > -- > 2.30.0 > > Thanks, Michal
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c index 9a939c0b217f..80db4f7b05f6 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c @@ -40,8 +40,9 @@ static int hclge_devlink_reload_down(struct devlink *devlink, bool netns_change, struct pci_dev *pdev = hdev->pdev; int ret; - if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state)) { - dev_err(&pdev->dev, "reset is handling\n"); + if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state) || + !test_bit(HCLGE_STATE_NIC_REGISTERED, &hdev->state)) { + dev_err(&pdev->dev, "reset is handling or driver removed\n"); return -EBUSY; }