rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Rust e1000 driver (Intel Ethernet adapter)
@ 2022-09-19  1:38 FUJITA Tomonori
  2022-09-19  1:59 ` Alex Gaynor
  2022-10-23  7:06 ` FUJITA Tomonori
  0 siblings, 2 replies; 9+ messages in thread
From: FUJITA Tomonori @ 2022-09-19  1:38 UTC (permalink / raw)
  To: rust-for-linux

Hi,

I've implemented Rust e1000 driver (Intel Ethernet adapter):

https://github.com/fujita/rust-e1000

There are many places to use the C bindings directly for now. I try to
clean up and push abstractions for NIC drivers (DMA, PCI, network,
etc).

I can ping on QEMU. Needs a bit more work for real hardware.

Thanks,

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Rust e1000 driver (Intel Ethernet adapter)
  2022-09-19  1:38 Rust e1000 driver (Intel Ethernet adapter) FUJITA Tomonori
@ 2022-09-19  1:59 ` Alex Gaynor
  2022-09-28 14:31   ` Geert Stappers
  2022-10-23  7:06 ` FUJITA Tomonori
  1 sibling, 1 reply; 9+ messages in thread
From: Alex Gaynor @ 2022-09-19  1:59 UTC (permalink / raw)
  To: FUJITA Tomonori; +Cc: rust-for-linux

That's great to see. Thanks for your work on this and looking forward
to seeing the pull requests!

Alex


On Sun, Sep 18, 2022 at 9:57 PM FUJITA Tomonori <tomo@exabit.dev> wrote:
>
> Hi,
>
> I've implemented Rust e1000 driver (Intel Ethernet adapter):
>
> https://github.com/fujita/rust-e1000
>
> There are many places to use the C bindings directly for now. I try to
> clean up and push abstractions for NIC drivers (DMA, PCI, network,
> etc).
>
> I can ping on QEMU. Needs a bit more work for real hardware.
>
> Thanks,



-- 
All that is necessary for evil to succeed is for good people to do nothing.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Rust e1000 driver (Intel Ethernet adapter)
  2022-09-19  1:59 ` Alex Gaynor
@ 2022-09-28 14:31   ` Geert Stappers
  2022-09-28 15:24     ` Miguel Ojeda
  0 siblings, 1 reply; 9+ messages in thread
From: Geert Stappers @ 2022-09-28 14:31 UTC (permalink / raw)
  To: Alex Gaynor, FUJITA Tomonori, rust-for-linux

On Sun, Sep 18, 2022 at 09:59:02PM -0400, Alex Gaynor wrote:
> On Sun, Sep 18, 2022 at 9:57 PM FUJITA Tomonori <tomo@exabit.dev> wrote:
> >
> > Hi,
> >
> > I've implemented Rust e1000 driver (Intel Ethernet adapter):
> >
> > https://github.com/fujita/rust-e1000
> >
> > There are many places to use the C bindings directly for now. I try to
> > clean up and push abstractions for NIC drivers (DMA, PCI, network,
> > etc).
> >
> > I can ping on QEMU. Needs a bit more work for real hardware.
> >
> > Thanks,
> 
> That's great to see. Thanks for your work on this and looking forward
> to seeing the pull requests!
> 

Where to look for such merge request?



Long version of my question:

I can't tell how many hurdles there will be
nor how large (time consuming) the hurdles will be
for:

  * git clone a modified version of a modified version of Linux kernel
  * git clone the  rust-e1000 at the right place
  * build "rust for linux"
  * start qemu with correct parameters
  * find out that existing e1000 driver is NOT in the way
  * see it working myself


Myself and probably others nearby the swimming pool
not knowning how nice the swimming water is.


Groeten
Geert Stappers
-- 
Silence is hard to parse

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Rust e1000 driver (Intel Ethernet adapter)
  2022-09-28 14:31   ` Geert Stappers
@ 2022-09-28 15:24     ` Miguel Ojeda
  2022-09-28 16:35       ` Geert Stappers
  0 siblings, 1 reply; 9+ messages in thread
From: Miguel Ojeda @ 2022-09-28 15:24 UTC (permalink / raw)
  To: Geert Stappers; +Cc: Alex Gaynor, FUJITA Tomonori, rust-for-linux

On Wed, Sep 28, 2022 at 4:49 PM Geert Stappers <stappers@stappers.nl> wrote:
>
> Where to look for such merge request?

Tomonori has been sending nice PRs for a while -- you can look them up
using the author filter in GitHub, for instance.

>   * git clone a modified version of a modified version of Linux kernel
>   * git clone the  rust-e1000 at the right place

I would expect the branch to contain whatever is needed, thus you
should only need to clone/fetch/checkout a single branch, i.e. without
having to do merges.

>   * build "rust for linux"
>   * start qemu with correct parameters
>   * find out that existing e1000 driver is NOT in the way

Those are pretty standard steps, though I guess you could prepare a
container or VM image with everything ready if you need it for demo
purposes.

Cheers,
Miguel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Rust e1000 driver (Intel Ethernet adapter)
  2022-09-28 15:24     ` Miguel Ojeda
@ 2022-09-28 16:35       ` Geert Stappers
  2022-09-28 16:46         ` Miguel Ojeda
  2022-09-29  6:57         ` FUJITA Tomonori
  0 siblings, 2 replies; 9+ messages in thread
From: Geert Stappers @ 2022-09-28 16:35 UTC (permalink / raw)
  To: Miguel Ojeda, Alex Gaynor, FUJITA Tomonori, rust-for-linux

On Wed, Sep 28, 2022 at 05:24:23PM +0200, Miguel Ojeda wrote:
> On Wed, Sep 28, 2022 at 4:49 PM Geert Stappers wrote:
> >
> > Where to look for such merge request?
> 
> Tomonori has been sending nice PRs for a while -- you can look them up
> using the author filter in GitHub, for instance.

At https://github.com/Rust-for-Linux/linux/pulls/fujita
are two open Merge Requests  (no closed MRs).
 

My original question has been answered, thanks.


Summary of text below:
| } } Should I jump in the swimming pool?
| } Yes, the water temperature is fine
| It looks very cold to me


> >   * git clone a modified version of a modified version of Linux kernel
> >   * git clone the  rust-e1000 at the right place
> 
> I would expect the branch to contain whatever is needed, thus you
> should only need to clone/fetch/checkout a single branch, i.e. without
> having to do merges.
 
README.md at https://github.com/fujita/rust-e1000 hints,
hints me, "this part should be inserted in another source tree".


> >   * build "rust for linux"
> >   * start qemu with correct parameters
> >   * find out that existing e1000 driver is NOT in the way
> 
> Those are pretty standard steps, though I guess you could prepare a
> container or VM image with everything ready if you need it for demo
> purposes.

Time will tell which smart[*] questions will be asked.

 
Groeten
Geert Stappers

[*] http://www.catb.org/~esr/faqs/smart-questions.html
-- 
Silence is hard to parse

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Rust e1000 driver (Intel Ethernet adapter)
  2022-09-28 16:35       ` Geert Stappers
@ 2022-09-28 16:46         ` Miguel Ojeda
  2022-09-29  6:36           ` FUJITA Tomonori
  2022-09-29  6:57         ` FUJITA Tomonori
  1 sibling, 1 reply; 9+ messages in thread
From: Miguel Ojeda @ 2022-09-28 16:46 UTC (permalink / raw)
  To: Geert Stappers; +Cc: Alex Gaynor, FUJITA Tomonori, rust-for-linux

On Wed, Sep 28, 2022 at 6:35 PM Geert Stappers <stappers@stappers.nl> wrote:
>
> My original question has been answered, thanks.

My pleasure!

> README.md at https://github.com/fujita/rust-e1000 hints,
> hints me, "this part should be inserted in another source tree".

I don't see the quote you mention, but from a quick look it seems he
decided to develop the driver side as an out-of-tree module, with the
abstractions in the Linux one.

While that requires to clone both repos, you don't need to move files
between them: compiling the out-of-tree module after the main repo
should work.

Tomonori can probably clarify more...

Cheers,
Miguel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Rust e1000 driver (Intel Ethernet adapter)
  2022-09-28 16:46         ` Miguel Ojeda
@ 2022-09-29  6:36           ` FUJITA Tomonori
  0 siblings, 0 replies; 9+ messages in thread
From: FUJITA Tomonori @ 2022-09-29  6:36 UTC (permalink / raw)
  To: stappers, miguel.ojeda.sandonis; +Cc: alex.gaynor, tomo, rust-for-linux

Hi,

On Wed, 28 Sep 2022 18:46:59 +0200
Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> wrote:

>> README.md at https://github.com/fujita/rust-e1000 hints,
>> hints me, "this part should be inserted in another source tree".
> 
> I don't see the quote you mention, but from a quick look it seems he
> decided to develop the driver side as an out-of-tree module, with the
> abstractions in the Linux one.
> 
> While that requires to clone both repos, you don't need to move files
> between them: compiling the out-of-tree module after the main repo
> should work.

Yeah, it's just an out-of-tree module. After compiling my
Rust-for-Linux tree:

https://github.com/fujita/linux/tree/rust-e1000

should be easy to compile rust-e1000 repo. No need to move the code to
somewhere.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Rust e1000 driver (Intel Ethernet adapter)
  2022-09-28 16:35       ` Geert Stappers
  2022-09-28 16:46         ` Miguel Ojeda
@ 2022-09-29  6:57         ` FUJITA Tomonori
  1 sibling, 0 replies; 9+ messages in thread
From: FUJITA Tomonori @ 2022-09-29  6:57 UTC (permalink / raw)
  To: stappers; +Cc: miguel.ojeda.sandonis, alex.gaynor, tomo, rust-for-linux

Hi,

On Wed, 28 Sep 2022 18:35:14 +0200
Geert Stappers <stappers@stappers.nl> wrote:

>> > Where to look for such merge request?
>> 
>> Tomonori has been sending nice PRs for a while -- you can look them up
>> using the author filter in GitHub, for instance.
> 
> At https://github.com/Rust-for-Linux/linux/pulls/fujita
> are two open Merge Requests  (no closed MRs).

Note that they are just the first step. Once the PCI PR is merged,
I'll send more. I need to finish my half-baked code (DMA, iomem,
network, etc) and send PRs.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Rust e1000 driver (Intel Ethernet adapter)
  2022-09-19  1:38 Rust e1000 driver (Intel Ethernet adapter) FUJITA Tomonori
  2022-09-19  1:59 ` Alex Gaynor
@ 2022-10-23  7:06 ` FUJITA Tomonori
  1 sibling, 0 replies; 9+ messages in thread
From: FUJITA Tomonori @ 2022-10-23  7:06 UTC (permalink / raw)
  To: tomo; +Cc: rust-for-linux

Hey,

On Mon, 19 Sep 2022 10:38:20 +0900 (JST)
FUJITA Tomonori <tomo@exabit.dev> wrote:

> I've implemented Rust e1000 driver (Intel Ethernet adapter):
> 
> https://github.com/fujita/rust-e1000
> 
> There are many places to use the C bindings directly for now. I try to
> clean up and push abstractions for NIC drivers (DMA, PCI, network,
> etc).

Removed all unsafe for the C bindings now. I implemented abstraction
APIs (PCI, DMA, network, etc) for minimum functionality of the driver.

Pull requests aren't merged yet. You can try the driver with my kernel
tree:

https://github.com/fujita/linux/tree/rust-e1000

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2022-10-23  7:06 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-19  1:38 Rust e1000 driver (Intel Ethernet adapter) FUJITA Tomonori
2022-09-19  1:59 ` Alex Gaynor
2022-09-28 14:31   ` Geert Stappers
2022-09-28 15:24     ` Miguel Ojeda
2022-09-28 16:35       ` Geert Stappers
2022-09-28 16:46         ` Miguel Ojeda
2022-09-29  6:36           ` FUJITA Tomonori
2022-09-29  6:57         ` FUJITA Tomonori
2022-10-23  7:06 ` FUJITA Tomonori

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).