All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xiaolei Wang <xiaolei.wang@windriver.com>
To: andrew@lunn.ch, hkallweit1@gmail.com, linux@armlinux.org.uk,
	davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
	pabeni@redhat.com
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Phy with reset-gpio fails to read phy id during kexec -e
Date: Wed, 16 Jul 2025 15:55:30 +0800	[thread overview]
Message-ID: <ab95299d-d986-4e2b-9464-44e3467556e3@windriver.com> (raw)

Hi

During kexec -e, I found that the network card did not work when loading 
the kernel.

I found that some phys used reset-gpios. When kexec -e is running,

the network port will do_ifdown, and phy_detach() will be called at

this time, which will call phy_device_reset(phydev, 1); to keep phy in

reset state.

After loading the kernel, since phy is always in reset state, the mdio

controller fails to access phy id. Therefore, if phy uses reset-gpios

during kexec -e, the network port will not work. However, I have not

found a better solution. Can anyone give some suggestions?


kexec -e:

phy is always in reset state

   pca953x_gpio_set_value+0x8c/0xf8
   gpiochip_set+0x60/0x12c
   gpiod_set_raw_value_commit+0xe8/0x1e4
   gpiod_set_value_nocheck+0x58/0xe4
   gpiod_set_value_cansleep+0x4c/0xa8
   mdio_device_reset+0x48/0x158
   phy_detach+0x144/0x258
   phy_disconnect+0x54/0x74
   fec_enet_close+0x58/0x218

After loading kernel, reading phy id will report an error:

      mdio_bus 42890000.ethernet-1: MDIO device at address 2 is missing

   __of_mdiobus_parse_phys+0x260/0x338
   __of_mdiobus_register+0x118/0x28c
   fec_probe+0x173c/0x199c


thanks

xiaolei



             reply	other threads:[~2025-07-16  8:20 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-16  7:55 Xiaolei Wang [this message]
2025-07-16 10:51 ` Phy with reset-gpio fails to read phy id during kexec -e Russell King (Oracle)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ab95299d-d986-4e2b-9464-44e3467556e3@windriver.com \
    --to=xiaolei.wang@windriver.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hkallweit1@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.