[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ec7267b5-ae77-4c4a-94f8-aa933c87a9a2@lunn.ch>
Date: Wed, 2 Oct 2024 14:31:07 +0200
From: Andrew Lunn <andrew@...n.ch>
To: FUJITA Tomonori <fujita.tomonori@...il.com>
Cc: aliceryhl@...gle.com, netdev@...r.kernel.org,
rust-for-linux@...r.kernel.org, hkallweit1@...il.com,
tmgross@...ch.edu, ojeda@...nel.org, alex.gaynor@...il.com,
gary@...yguo.net, bjorn3_gh@...tonmail.com, benno.lossin@...ton.me,
a.hindborg@...sung.com
Subject: Re: [PATCH net-next v1 2/2] net: phy: qt2025: wait until PHY becomes
ready
On Wed, Oct 02, 2024 at 10:13:39AM +0000, FUJITA Tomonori wrote:
> On Tue, 1 Oct 2024 14:48:06 +0200
> Andrew Lunn <andrew@...n.ch> wrote:
>
> > I generally point developers at iopoll.h, because developers nearly
> > always get this sort of polling for something to happen wrong.
>
> Ah, I had forgotten about iopoll.h. Make senses. I'll try implement an
> equivalent in Rust.
There are some subtleties involved with PHYs, which is why we have our
own wrapper around the macros in iopoll.h:
https://elixir.bootlin.com/linux/v6.11.1/source/include/linux/phy.h#L1288
Normally an IO operation cannot fail. But PHYs are different, a read
could return -EOPNOTSUPP, -EIO, -ETIMEDOUT etc. That needs to be take
into account and checked before evaluating the condition.
So you might need to think about something similar for Rust. A generic
read_poll_timeout() and a phy_read_poll_timeout() built on top of it.
This is a worthwhile set of helpers to have, since the bugs in this
are nothing to do with memory safety, but plain simple logic bugs,
which Rust itself is unlikely to help with.
Andrew
Powered by blists - more mailing lists