Hi,

On 12/05/2020 06:54:29+0100, Guillaume Tucker wrote:
> Please see the bisection report below about a boot failure.
> 
> Reports aren't automatically sent to the public while we're
> trialing new bisection features on kernelci.org but this one
> looks valid.
> 
> It appears to be due to the fact that the network interface is
> failing to get brought up:
> 
> [  114.385000] Waiting up to 10 more seconds for network.
> [  124.355000] Sending DHCP requests ...#
> ..#
> .#
>  timed out!
> [  212.355000] IP-Config: Reopening network devices...
> [  212.365000] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
> #
> 
> 
> I guess the board would boot fine without network if it didn't
> have ip=dhcp in the command line, so it's not strictly a kernel
> boot failure but still an ethernet issue.
> 

I think the resolution of this issue is
99f81afc139c6edd14d77a91ee91685a414a1c66. If this is taken, then I think
f5aba91d7f186cba84af966a741a0346de603cd4 should also be backported.


> There wasn't any failure reported by kernelci on linux-4.9.y so
> maybe this patch was applied by mistake on linux-4.4.y but I
> haven't investigated enough to prove this.
> 
> Thanks,
> Guillaume
> 
> 
> On 10/05/2020 18:27, kernelci.org bot wrote:
> > * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> > * This automated bisection report was sent to you on the basis  *
> > * that you may be involved with the breaking commit it has      *
> > * found.  No manual investigation has been done to verify it,   *
> > * and the root cause of the problem may be somewhere else.      *
> > *                                                               *
> > * If you do send a fix, please include this trailer:            *
> > *   Reported-by: "kernelci.org bot" <b...@kernelci.org>          *
> > *                                                               *
> > * Hope this helps!                                              *
> > * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> > 
> > stable/linux-4.4.y bisection: baseline.login on at91-sama5d4_xplained
> > 
> > Summary:
> >   Start:      e157447efd85b Linux 4.4.223
> >   Plain log:  
> > https://storage.kernelci.org/stable/linux-4.4.y/v4.4.223/arm/multi_v7_defconfig/gcc-8/lab-baylibre/baseline-at91-sama5d4_xplained.txt
> >   HTML log:   
> > https://storage.kernelci.org/stable/linux-4.4.y/v4.4.223/arm/multi_v7_defconfig/gcc-8/lab-baylibre/baseline-at91-sama5d4_xplained.html
> >   Result:     0d1951fa23ba0 net: phy: Avoid polling PHY with 
> > PHY_IGNORE_INTERRUPTS
> > 
> > Checks:
> >   revert:     PASS
> >   verify:     PASS
> > 
> > Parameters:
> >   Tree:       stable
> >   URL:        
> > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
> >   Branch:     linux-4.4.y
> >   Target:     at91-sama5d4_xplained
> >   CPU arch:   arm
> >   Lab:        lab-baylibre
> >   Compiler:   gcc-8
> >   Config:     multi_v7_defconfig
> >   Test case:  baseline.login
> > 
> > Breaking commit found:
> > 
> > -------------------------------------------------------------------------------
> > commit 0d1951fa23ba0d35a4c5498ff28d1c5206d6fcdd
> > Author: Florian Fainelli <f.faine...@gmail.com>
> > Date:   Mon Jan 18 19:33:06 2016 -0800
> > 
> >     net: phy: Avoid polling PHY with PHY_IGNORE_INTERRUPTS
> >     
> >     commit d5c3d84657db57bd23ecd58b97f1c99dd42a7b80 upstream.
> >     
> >     Commit 2c7b49212a86 ("phy: fix the use of PHY_IGNORE_INTERRUPT") changed
> >     a hunk in phy_state_machine() in the PHY_RUNNING case which was not
> >     needed. The change essentially makes the PHY library treat PHY devices
> >     with PHY_IGNORE_INTERRUPT to keep polling for the PHY device, even
> >     though the intent is not to do it.
> >     
> >     Fix this by reverting that specific hunk, which makes the PHY state
> >     machine wait for state changes, and stay in the PHY_RUNNING state for as
> >     long as needed.
> >     
> >     Fixes: 2c7b49212a86 ("phy: fix the use of PHY_IGNORE_INTERRUPT")
> >     Signed-off-by: Florian Fainelli <f.faine...@gmail.com>
> >     Signed-off-by: David S. Miller <da...@davemloft.net>
> >     Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
> > 
> > diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
> > index 7d2cf015c5e76..b242bec834f4b 100644
> > --- a/drivers/net/phy/phy.c
> > +++ b/drivers/net/phy/phy.c
> > @@ -912,10 +912,10 @@ void phy_state_machine(struct work_struct *work)
> >             phydev->adjust_link(phydev->attached_dev);
> >             break;
> >     case PHY_RUNNING:
> > -           /* Only register a CHANGE if we are polling or ignoring
> > -            * interrupts and link changed since latest checking.
> > +           /* Only register a CHANGE if we are polling and link changed
> > +            * since latest checking.
> >              */
> > -           if (!phy_interrupt_is_valid(phydev)) {
> > +           if (phydev->irq == PHY_POLL) {
> >                     old_link = phydev->link;
> >                     err = phy_read_status(phydev);
> >                     if (err)
> > @@ -1015,8 +1015,13 @@ void phy_state_machine(struct work_struct *work)
> >     dev_dbg(&phydev->dev, "PHY state change %s -> %s\n",
> >             phy_state_to_str(old_state), phy_state_to_str(phydev->state));
> >  
> > -   queue_delayed_work(system_power_efficient_wq, &phydev->state_queue,
> > -                      PHY_STATE_TIME * HZ);
> > +   /* Only re-schedule a PHY state machine change if we are polling the
> > +    * PHY, if PHY_IGNORE_INTERRUPT is set, then we will be moving
> > +    * between states from phy_mac_interrupt()
> > +    */
> > +   if (phydev->irq == PHY_POLL)
> > +           queue_delayed_work(system_power_efficient_wq, 
> > &phydev->state_queue,
> > +                              PHY_STATE_TIME * HZ);
> >  }
> >  
> >  void phy_mac_interrupt(struct phy_device *phydev, int new_link)
> > -------------------------------------------------------------------------------
> > 
> > 
> > Git bisection log:
> > 
> > -------------------------------------------------------------------------------
> > git bisect start
> > # good: [b63f449e18b130fdc372b9717e72c19b83fc4876] Linux 4.4.222
> > git bisect good b63f449e18b130fdc372b9717e72c19b83fc4876
> > # bad: [e157447efd85bb2e6f8deaabbb62663bccd9bad2] Linux 4.4.223
> > git bisect bad e157447efd85bb2e6f8deaabbb62663bccd9bad2
> > # bad: [5733a9f4a3df384097c92c532aed34bc698a9acd] net: dsa: slave: fix 
> > of-node leak and phy priority
> > git bisect bad 5733a9f4a3df384097c92c532aed34bc698a9acd
> > # good: [1ce6993b857318a4b8c674b1bbaaf79aced34136] net/mlx5e: Fix blue 
> > flame quota logic
> > git bisect good 1ce6993b857318a4b8c674b1bbaaf79aced34136
> > # good: [c32532162f8ea4beed50a20cf4f9b205c75fe1b1] serial: samsung: Fix 
> > possible out of bounds access on non-DT platform
> > git bisect good c32532162f8ea4beed50a20cf4f9b205c75fe1b1
> > # good: [25e8aad6f491da6ae330148da09585371a3790f2] Revert "ACPI / LPSS: 
> > allow to use specific PM domain during ->probe()"
> > git bisect good 25e8aad6f491da6ae330148da09585371a3790f2
> > # good: [2f3e56e4b6020812350190f1cada230d790ce0e8] powerpc/tm: Fix stack 
> > pointer corruption in __tm_recheckpoint()
> > git bisect good 2f3e56e4b6020812350190f1cada230d790ce0e8
> > # bad: [0d1951fa23ba0d35a4c5498ff28d1c5206d6fcdd] net: phy: Avoid polling 
> > PHY with PHY_IGNORE_INTERRUPTS
> > git bisect bad 0d1951fa23ba0d35a4c5498ff28d1c5206d6fcdd
> > # good: [4ebef63e925e37f5de2f9da8fc86a545e4e0b945] sctp: fix the transports 
> > round robin issue when init is retransmitted
> > git bisect good 4ebef63e925e37f5de2f9da8fc86a545e4e0b945
> > # good: [c175435fdf50c81ca2b6576f090cba31c3489209] NFC: nci: memory leak in 
> > nci_core_conn_create()
> > git bisect good c175435fdf50c81ca2b6576f090cba31c3489209
> > # first bad commit: [0d1951fa23ba0d35a4c5498ff28d1c5206d6fcdd] net: phy: 
> > Avoid polling PHY with PHY_IGNORE_INTERRUPTS
> > -------------------------------------------------------------------------------
> > 
> 

-- 
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

Reply via email to