lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <6ed334ea-3670-4620-8653-baf70de145f1@lunn.ch>
Date:   Fri, 11 Aug 2023 22:59:24 +0200
From:   Andrew Lunn <andrew@...n.ch>
To:     Alfred Lee <l00g33k@...il.com>
Cc:     netdev@...r.kernel.org, f.fainelli@...il.com, olteanv@...il.com,
        davem@...emloft.net, edumazet@...gle.com, kuba@...nel.org,
        pabeni@...hat.com, sgarzare@...hat.com, AVKrasnov@...rdevices.ru,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH net] net: dsa: mv88e6xxx: Wait for EEPROM done before HW
 reset

On Fri, Aug 11, 2023 at 01:30:20PM -0700, Alfred Lee wrote:
> If the switch is reset during active EEPROM transactions, as in
> just after an SoC reset after power up, the I2C bus transaction
> may be cut short leaving the EEPROM internal I2C state machine
> in the wrong state. When the switch is reset again, the bad
> state machine state may result in data being read from the wrong
> memory location causing the switch to enter unexpect mode
> rendering it inoperational.
> 
> Fixes: 8abbffd27ced ("net: dsa: mv88e6xxx: Wait for EEPROM done after HW
> reset")
> Signed-off-by: Alfred Lee <l00g33k@...il.com>
> ---
> drivers/net/dsa/mv88e6xxx/chip.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/
> chip.c
> index c7d51a539451..7af2f08a62f1 100644
> --- a/drivers/net/dsa/mv88e6xxx/chip.c
> +++ b/drivers/net/dsa/mv88e6xxx/chip.c
> @@ -3034,6 +3034,14 @@ static void mv88e6xxx_hardware_reset(struct
> mv88e6xxx_chip *chip)
> /* If there is a GPIO connected to the reset pin, toggle it */
> if (gpiod) {
> + /* If the switch has just been reset and not yet completed
> + * loading EEPROM, the reset may interrupt the I2C transaction
> + * mid-byte, causing the first EEPROM read after the reset
> + * from the wrong location resulting in the switch booting
> + * to wrong mode and inoperable.
> + */
> + mv88e6xxx_g1_wait_eeprom_done(chip);
> +
> gpiod_set_value_cansleep(gpiod, 1);
> usleep_range(10000, 20000);
> gpiod_set_value_cansleep(gpiod, 0);

Hi Alfred

It looks like all the white spacing in the email has been
destroyed. Please check your mail configuration. You might want to
email the patch to only yourself, and then make sure it cleanly
applies via 'git am'

    Andrew

---
pw-bot: cr

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ