Skip to content

Commit a336bea

Browse files
committed
refactor: Allow rtl8139 feature on all architectures
Signed-off-by: Jens Reidel <adrian@travitia.xyz>
1 parent 02da5be commit a336bea

File tree

8 files changed

+39
-63
lines changed

8 files changed

+39
-63
lines changed

src/config.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ pub(crate) const USER_STACK_SIZE: usize = 0x0010_0000;
88
all(
99
not(any(
1010
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
11-
all(target_arch = "x86_64", feature = "rtl8139"),
11+
feature = "rtl8139",
1212
)),
1313
feature = "virtio-net",
1414
),

src/drivers/mod.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub mod pci;
1313
#[cfg(any(
1414
all(
1515
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
16-
not(all(target_arch = "x86_64", feature = "rtl8139")),
16+
not(feature = "rtl8139"),
1717
feature = "virtio-net",
1818
),
1919
feature = "fuse",
@@ -39,12 +39,12 @@ pub(crate) type InterruptHandlerQueue = VecDeque<fn()>;
3939
pub mod error {
4040
#[cfg(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")))]
4141
use crate::drivers::net::gem::GEMError;
42-
#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
42+
#[cfg(feature = "rtl8139")]
4343
use crate::drivers::net::rtl8139::RTL8139Error;
4444
#[cfg(any(
4545
all(
4646
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
47-
not(all(target_arch = "x86_64", feature = "rtl8139")),
47+
not(feature = "rtl8139"),
4848
feature = "virtio-net",
4949
),
5050
feature = "fuse",
@@ -55,7 +55,7 @@ pub mod error {
5555

5656
#[cfg(any(
5757
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
58-
all(target_arch = "x86_64", feature = "rtl8139"),
58+
feature = "rtl8139",
5959
feature = "virtio-net",
6060
feature = "fuse",
6161
feature = "vsock",
@@ -66,15 +66,15 @@ pub mod error {
6666
#[cfg(any(
6767
all(
6868
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
69-
not(all(target_arch = "x86_64", feature = "rtl8139")),
69+
not(feature = "rtl8139"),
7070
feature = "virtio-net",
7171
),
7272
feature = "fuse",
7373
feature = "vsock",
7474
feature = "console",
7575
))]
7676
InitVirtioDevFail(VirtioError),
77-
#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
77+
#[cfg(feature = "rtl8139")]
7878
InitRTL8139DevFail(RTL8139Error),
7979
#[cfg(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")))]
8080
InitGEMDevFail(GEMError),
@@ -83,7 +83,7 @@ pub mod error {
8383
#[cfg(any(
8484
all(
8585
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
86-
not(all(target_arch = "x86_64", feature = "rtl8139")),
86+
not(feature = "rtl8139"),
8787
feature = "virtio-net",
8888
),
8989
feature = "fuse",
@@ -96,7 +96,7 @@ pub mod error {
9696
}
9797
}
9898

99-
#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
99+
#[cfg(feature = "rtl8139")]
100100
impl From<RTL8139Error> for DriverError {
101101
fn from(err: RTL8139Error) -> Self {
102102
DriverError::InitRTL8139DevFail(err)
@@ -112,7 +112,7 @@ pub mod error {
112112

113113
#[cfg(any(
114114
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
115-
all(target_arch = "x86_64", feature = "rtl8139"),
115+
feature = "rtl8139",
116116
feature = "virtio-net",
117117
feature = "fuse",
118118
feature = "vsock",
@@ -129,7 +129,7 @@ pub mod error {
129129
feature = "gem-net",
130130
not(feature = "pci"),
131131
)),
132-
not(all(target_arch = "x86_64", feature = "rtl8139")),
132+
not(feature = "rtl8139"),
133133
feature = "virtio-net",
134134
),
135135
feature = "fuse",
@@ -139,7 +139,7 @@ pub mod error {
139139
DriverError::InitVirtioDevFail(ref err) => {
140140
write!(f, "Virtio driver failed: {err:?}")
141141
}
142-
#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
142+
#[cfg(feature = "rtl8139")]
143143
DriverError::InitRTL8139DevFail(ref err) => {
144144
write!(f, "RTL8139 driver failed: {err:?}")
145145
}

src/drivers/net/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
pub mod gem;
33
#[cfg(not(any(
44
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
5-
all(target_arch = "x86_64", feature = "rtl8139"),
5+
feature = "rtl8139",
66
feature = "virtio-net",
77
)))]
88
pub mod loopback;
9-
#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
9+
#[cfg(feature = "rtl8139")]
1010
pub mod rtl8139;
1111
#[cfg(all(
1212
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
13-
not(all(target_arch = "x86_64", feature = "rtl8139")),
13+
not(feature = "rtl8139"),
1414
feature = "virtio-net",
1515
))]
1616
pub mod virtio;
@@ -36,7 +36,7 @@ pub(crate) trait NetworkDriver: Driver + smoltcp::phy::Device {
3636
/// or environment variables.
3737
#[cfg(any(
3838
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
39-
all(target_arch = "x86_64", feature = "rtl8139"),
39+
feature = "rtl8139",
4040
feature = "virtio-net",
4141
))]
4242
pub(crate) fn mtu() -> u16 {
@@ -69,7 +69,7 @@ cfg_if::cfg_if! {
6969
} else if #[cfg(all(
7070
feature = "pci",
7171
any(
72-
all(target_arch = "x86_64", feature = "rtl8139"),
72+
feature = "rtl8139",
7373
feature = "virtio-net",
7474
),
7575
))] {

src/drivers/pci.rs

Lines changed: 11 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -23,28 +23,19 @@ use crate::console::IoDevice;
2323
use crate::drivers::console::{VirtioConsoleDriver, VirtioUART};
2424
#[cfg(feature = "fuse")]
2525
use crate::drivers::fs::virtio_fs::VirtioFsDriver;
26-
#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
26+
#[cfg(feature = "rtl8139")]
2727
use crate::drivers::net::rtl8139::{self, RTL8139Driver};
28-
#[cfg(all(
29-
not(all(target_arch = "x86_64", feature = "rtl8139")),
30-
feature = "virtio-net",
31-
))]
28+
#[cfg(all(not(feature = "rtl8139"), feature = "virtio-net",))]
3229
use crate::drivers::net::virtio::VirtioNetDriver;
3330
#[cfg(any(
34-
all(
35-
feature = "virtio-net",
36-
not(all(target_arch = "x86_64", feature = "rtl8139")),
37-
),
31+
all(feature = "virtio-net", not(feature = "rtl8139"),),
3832
feature = "fuse",
3933
feature = "vsock",
4034
feature = "console",
4135
))]
4236
use crate::drivers::virtio::transport::pci as pci_virtio;
4337
#[cfg(any(
44-
all(
45-
feature = "virtio-net",
46-
not(all(target_arch = "x86_64", feature = "rtl8139")),
47-
),
38+
all(feature = "virtio-net", not(feature = "rtl8139"),),
4839
feature = "fuse",
4940
feature = "vsock",
5041
feature = "console",
@@ -54,10 +45,7 @@ use crate::drivers::virtio::transport::pci::VirtioDriver;
5445
use crate::drivers::vsock::VirtioVsockDriver;
5546
#[allow(unused_imports)]
5647
use crate::drivers::{Driver, InterruptHandlerQueue};
57-
#[cfg(any(
58-
all(target_arch = "x86_64", feature = "rtl8139"),
59-
feature = "virtio-net",
60-
))]
48+
#[cfg(any(feature = "rtl8139", feature = "virtio-net",))]
6149
use crate::executor::device::NETWORK_DEVICE;
6250
use crate::init_cell::InitCell;
6351

@@ -441,10 +429,7 @@ pub(crate) fn get_interrupt_handlers() -> HashMap<InterruptLine, InterruptHandle
441429
}
442430
}
443431

444-
#[cfg(any(
445-
all(target_arch = "x86_64", feature = "rtl8139"),
446-
feature = "virtio-net",
447-
))]
432+
#[cfg(any(feature = "rtl8139", feature = "virtio-net",))]
448433
if let Some(device) = NETWORK_DEVICE.lock().as_ref() {
449434
handlers
450435
.entry(device.get_interrupt_number())
@@ -455,13 +440,10 @@ pub(crate) fn get_interrupt_handlers() -> HashMap<InterruptLine, InterruptHandle
455440
handlers
456441
}
457442

458-
#[cfg(all(
459-
not(all(target_arch = "x86_64", feature = "rtl8139")),
460-
feature = "virtio-net",
461-
))]
443+
#[cfg(all(not(feature = "rtl8139"), feature = "virtio-net"))]
462444
pub(crate) type NetworkDevice = VirtioNetDriver;
463445

464-
#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
446+
#[cfg(feature = "rtl8139")]
465447
pub(crate) type NetworkDevice = RTL8139Driver;
466448

467449
#[cfg(feature = "console")]
@@ -501,19 +483,13 @@ pub(crate) fn init() {
501483
);
502484

503485
#[cfg(any(
504-
all(
505-
feature = "virtio-net",
506-
not(all(target_arch = "x86_64", feature = "rtl8139")),
507-
),
486+
all(feature = "virtio-net", not(feature = "rtl8139"),),
508487
feature = "fuse",
509488
feature = "vsock",
510489
feature = "console",
511490
))]
512491
match pci_virtio::init_device(adapter) {
513-
#[cfg(all(
514-
not(all(target_arch = "x86_64", feature = "rtl8139")),
515-
feature = "virtio-net",
516-
))]
492+
#[cfg(all(not(feature = "rtl8139"), feature = "virtio-net",))]
517493
Ok(VirtioDriver::Network(drv)) => *crate::executor::device::NETWORK_DEVICE.lock() = Some(drv),
518494

519495
#[cfg(feature = "console")]
@@ -537,7 +513,7 @@ pub(crate) fn init() {
537513
}
538514

539515
// Searching for Realtek RTL8139, which is supported by Qemu
540-
#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
516+
#[cfg(feature = "rtl8139")]
541517
for adapter in PCI_DEVICES.finalize().iter().filter(|x| {
542518
let (vendor_id, device_id) = x.id();
543519
vendor_id == 0x10ec && (0x8138..=0x8139).contains(&device_id)

src/drivers/virtio/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub mod error {
1313
pub use crate::drivers::fs::virtio_fs::error::VirtioFsError;
1414
#[cfg(all(
1515
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
16-
not(all(target_arch = "x86_64", feature = "rtl8139")),
16+
not(feature = "rtl8139"),
1717
feature = "virtio-net",
1818
))]
1919
pub use crate::drivers::net::virtio::error::VirtioNetError;
@@ -36,7 +36,7 @@ pub mod error {
3636
DevNotSupported(u16),
3737
#[cfg(all(
3838
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
39-
not(all(target_arch = "x86_64", feature = "rtl8139")),
39+
not(feature = "rtl8139"),
4040
feature = "virtio-net",
4141
))]
4242
NetDriver(VirtioNetError),
@@ -94,7 +94,7 @@ pub mod error {
9494
}
9595
#[cfg(all(
9696
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
97-
not(all(target_arch = "x86_64", feature = "rtl8139")),
97+
not(feature = "rtl8139"),
9898
feature = "virtio-net",
9999
))]
100100
VirtioError::NetDriver(net_error) => match net_error {

src/drivers/virtio/transport/pci.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use crate::drivers::error::DriverError;
2828
use crate::drivers::fs::virtio_fs::VirtioFsDriver;
2929
#[cfg(all(
3030
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
31-
not(all(target_arch = "x86_64", feature = "rtl8139")),
31+
not(feature = "rtl8139"),
3232
feature = "virtio-net",
3333
))]
3434
use crate::drivers::net::virtio::VirtioNetDriver;
@@ -813,7 +813,7 @@ pub(crate) fn init_device(
813813
match id {
814814
#[cfg(all(
815815
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
816-
not(all(target_arch = "x86_64", feature = "rtl8139")),
816+
not(feature = "rtl8139"),
817817
feature = "virtio-net",
818818
))]
819819
virtio::Id::Net => match VirtioNetDriver::init(device) {
@@ -896,7 +896,7 @@ pub(crate) fn init_device(
896896
pub(crate) enum VirtioDriver {
897897
#[cfg(all(
898898
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
899-
not(all(target_arch = "x86_64", feature = "rtl8139")),
899+
not(feature = "rtl8139"),
900900
feature = "virtio-net",
901901
))]
902902
Network(VirtioNetDriver),

src/executor/device.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use crate::drivers::net::NetworkDriver;
2222
cfg_if! {
2323
if #[cfg(any(
2424
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
25-
all(target_arch = "x86_64", feature = "rtl8139"),
25+
feature = "rtl8139",
2626
feature = "virtio-net",
2727
))] {
2828
use hermit_sync::SpinMutex;
@@ -40,7 +40,7 @@ impl<'a> NetworkInterface<'a> {
4040
cfg_if! {
4141
if #[cfg(any(
4242
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
43-
all(target_arch = "x86_64", feature = "rtl8139"),
43+
feature = "rtl8139",
4444
feature = "virtio-net",
4545
))] {
4646
#[cfg_attr(feature = "trace", expect(unused_mut))]
@@ -100,7 +100,7 @@ impl<'a> NetworkInterface<'a> {
100100
cfg_if! {
101101
if #[cfg(any(
102102
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
103-
all(target_arch = "x86_64", feature = "rtl8139"),
103+
feature = "rtl8139",
104104
feature = "virtio-net",
105105
))] {
106106
#[cfg_attr(feature = "trace", expect(unused_mut))]

src/executor/network.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ pub(crate) enum NetworkState<'a> {
4141

4242
#[cfg(any(
4343
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
44-
all(target_arch = "x86_64", feature = "rtl8139"),
44+
feature = "rtl8139",
4545
feature = "virtio-net",
4646
))]
4747
pub(crate) fn network_handler() {
@@ -339,7 +339,7 @@ impl<'a> NetworkInterface<'a> {
339339

340340
#[cfg(any(
341341
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
342-
all(target_arch = "x86_64", feature = "rtl8139"),
342+
feature = "rtl8139",
343343
feature = "virtio-net",
344344
))]
345345
fn handle_interrupt(&mut self) {

0 commit comments

Comments
 (0)