diff --git a/repos/pc/src/drivers/nic/pc/dep.list b/repos/pc/src/drivers/nic/pc/dep.list index c14b6d711a..41ba4e666b 100644 --- a/repos/pc/src/drivers/nic/pc/dep.list +++ b/repos/pc/src/drivers/nic/pc/dep.list @@ -36,6 +36,10 @@ drivers/net/ethernet/intel/e1000e/manage.h drivers/net/ethernet/intel/e1000e/nvm.h drivers/net/ethernet/intel/e1000e/phy.h drivers/net/ethernet/intel/e1000e/regs.h +drivers/net/ethernet/realtek/r8169.h +drivers/net/ethernet/realtek/r8169_firmware.h +drivers/net/phy/mdio-boardinfo.h +drivers/net/phy/swphy.h include/asm-generic/asm-prototypes.h include/asm-generic/bitops/fls64.h include/asm-generic/div64.h @@ -60,6 +64,7 @@ include/linux/etherdevice.h include/linux/ethtool_netlink.h include/linux/filter.h include/linux/firmware.h +include/linux/gpio/driver.h include/linux/icmpv6.h include/linux/if_arp.h include/linux/if_macvlan.h @@ -69,23 +74,32 @@ include/linux/inet.h include/linux/inetdevice.h include/linux/ip.h include/linux/ipv6_route.h +include/linux/irqchip/chained_irq.h include/linux/kcov.h include/linux/mpls.h include/linux/netfilter.h include/linux/netfilter_netdev.h include/linux/netpoll.h include/linux/nvmem-consumer.h +include/linux/of_gpio.h +include/linux/of_mdio.h include/linux/of_net.h +include/linux/phy_fixed.h +include/linux/phy_led_triggers.h include/linux/phylink.h +include/linux/pinctrl/pinconf-generic.h +include/linux/pinctrl/pinctrl.h include/linux/platform_data/dsa.h include/linux/pps_kernel.h include/linux/proc_ns.h +include/linux/pse-pd/pse.h include/linux/ptp_classify.h include/linux/ptp_clock_kernel.h include/linux/rcupdate_trace.h include/linux/rhashtable.h include/linux/sctp.h include/linux/set_memory.h +include/linux/sfp.h include/linux/skb_array.h include/linux/sock_diag.h include/linux/wireless.h @@ -134,6 +148,7 @@ include/net/xdp_sock_drv.h include/net/xfrm.h include/net/xsk_buff_pool.h include/trace/events/fib.h +include/trace/events/mdio.h include/trace/events/napi.h include/trace/events/neigh.h include/trace/events/net.h diff --git a/repos/pc/src/drivers/nic/pc/dummies.c b/repos/pc/src/drivers/nic/pc/dummies.c index d7e59f7412..859571944e 100644 --- a/repos/pc/src/drivers/nic/pc/dummies.c +++ b/repos/pc/src/drivers/nic/pc/dummies.c @@ -35,6 +35,14 @@ int sysfs_add_file_to_group(struct kobject * kobj,const struct attribute * attr, return 0; } +#include + +int sysfs_create_link_nowarn(struct kobject * kobj,struct kobject * target,const char * name) +{ + lx_emul_trace(__func__); + return 0; +} + #include int proc_alloc_inum(unsigned int * inum) @@ -249,14 +257,6 @@ int pci_enable_device_mem(struct pci_dev *dev) #include -int pci_select_bars(struct pci_dev *dev, unsigned long flags) -{ - lx_emul_trace(__func__); - return 0; -} - -#include - int pci_request_selected_regions(struct pci_dev *dev, int, const char *res_name) { lx_emul_trace(__func__); @@ -345,3 +345,48 @@ void pci_clear_master(struct pci_dev *dev) { lx_emul_trace(__func__); } + + +#include + +int pcim_set_mwi(struct pci_dev * dev) +{ + lx_emul_trace(__func__); + return 0; +} + + +#include + +void iommu_device_unuse_default_domain(struct device * dev) +{ + lx_emul_trace(__func__); +} + + +#include + +int pcim_iomap_regions(struct pci_dev * pdev,int mask,const char * name) +{ + lx_emul_trace(__func__); + return 0; +} + + +#include + +int request_firmware(const struct firmware ** firmware_p,const char * name,struct device * device) +{ + lx_emul_trace(__func__); + return -1; +} + + +#include + +int net_ratelimit(void) +{ + lx_emul_trace(__func__); + /* suppress */ + return 0; +} diff --git a/repos/pc/src/drivers/nic/pc/lx_emul.c b/repos/pc/src/drivers/nic/pc/lx_emul.c index e0a73cbe9c..18083915ad 100644 --- a/repos/pc/src/drivers/nic/pc/lx_emul.c +++ b/repos/pc/src/drivers/nic/pc/lx_emul.c @@ -12,6 +12,7 @@ */ #include +#include unsigned long __FIXADDR_TOP = 0xfffff000; @@ -158,3 +159,81 @@ int pcie_capability_read_word(struct pci_dev *dev, int pos, u16 *val) printk("%s: unexpected read at %x\n", __func__, pos); return -1; } + + +static unsigned long *_pci_iomap_table; + +void __iomem * const * pcim_iomap_table(struct pci_dev * pdev) +{ + unsigned i; + + if (!_pci_iomap_table) + _pci_iomap_table = kzalloc(sizeof (unsigned long*) * 6, GFP_KERNEL); + + if (!_pci_iomap_table) + return NULL; + + for (i = 0; i < 6; i++) { + struct resource *r = &pdev->resource[i]; + unsigned long phys_addr = r->start; + unsigned long size = r->end - r->start; + + if (!(r->flags & IORESOURCE_MEM)) + continue; + + if (!phys_addr || !size) + continue; + + _pci_iomap_table[i] = + (unsigned long)lx_emul_io_mem_map(phys_addr, size); + } + + return (void const *)_pci_iomap_table; +} + + +int pci_select_bars(struct pci_dev *dev, unsigned long flags) +{ + int bars = 0; + unsigned long const *table; + unsigned i; + + if (!(flags & IORESOURCE_MEM)) + return 0; + + /* misuse 'pcim_iomap_table()' for querying I/O mem */ + table = (unsigned long const *)pcim_iomap_table(dev); + + for (i = 0; i < 6; i++) + if (table[i]) + bars |= (1 << i); + + return bars; +} + + +int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs, + unsigned int max_vecs, unsigned int flags, + struct irq_affinity *aff_desc) +{ + if ((flags & PCI_IRQ_LEGACY) && min_vecs == 1 && dev->irq) + return 1; + return -ENOSPC; +} + + +int pci_irq_vector(struct pci_dev *dev, unsigned int nr) +{ + if (WARN_ON_ONCE(nr > 0)) + return -EINVAL; + return dev->irq; +} + + +#include + +void *dmam_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle, + gfp_t gfp, unsigned long attrs) +{ + return dma_alloc_attrs(dev, size, dma_handle, gfp, attrs); +} diff --git a/repos/pc/src/drivers/nic/pc/spec/x86_32/generated_dummies.c b/repos/pc/src/drivers/nic/pc/spec/x86_32/generated_dummies.c index d2af97c325..93e6eb65a8 100644 --- a/repos/pc/src/drivers/nic/pc/spec/x86_32/generated_dummies.c +++ b/repos/pc/src/drivers/nic/pc/spec/x86_32/generated_dummies.c @@ -1,7 +1,7 @@ /* * \brief Dummy definitions of Linux Kernel functions * \author Automatically generated file - do no edit - * \date 2023-06-05 + * \date 2023-06-22 */ #include @@ -171,6 +171,11 @@ void bust_spinlocks(int yes) } +#include + +u8 const byte_rev_table[256] = {}; + + #include void console_flush_on_panic(enum con_flush_mode mode) @@ -211,6 +216,14 @@ void cpu_latency_qos_remove_request(struct pm_qos_request * req) } +#include + +int device_create_managed_software_node(struct device * dev,const struct property_entry * properties,const struct software_node * parent) +{ + lx_emul_trace_and_stop(__func__); +} + + #include void do_trace_netlink_extack(const char * msg) @@ -243,6 +256,30 @@ void emergency_restart(void) } +#include + +int ethnl_cable_test_alloc(struct phy_device * phydev,u8 cmd) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void ethnl_cable_test_finished(struct phy_device * phydev) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void ethnl_cable_test_free(struct phy_device * phydev) +{ + lx_emul_trace_and_stop(__func__); +} + + #include void ethtool_convert_legacy_u32_to_link_mode(unsigned long * dst,u32 legacy_u32) @@ -410,14 +447,6 @@ long __sched io_schedule_timeout(long timeout) struct io_tlb_mem io_tlb_default_mem; -#include - -void iommu_device_unuse_default_domain(struct device * dev) -{ - lx_emul_trace_and_stop(__func__); -} - - #include void irq_work_tick(void) @@ -540,14 +569,6 @@ int mii_nway_restart(struct mii_if_info * mii) } -#include - -int net_ratelimit(void) -{ - lx_emul_trace_and_stop(__func__); -} - - #include bool netlink_strict_get_check(struct sk_buff * skb) @@ -619,6 +640,14 @@ int pci_set_power_state(struct pci_dev * dev,pci_power_t state) } +#include + +int pci_status_get_and_clear_errors(struct pci_dev * pdev) +{ + lx_emul_trace_and_stop(__func__); +} + + #include int pci_wake_from_d3(struct pci_dev * dev,bool enable) @@ -627,6 +656,14 @@ int pci_wake_from_d3(struct pci_dev * dev,bool enable) } +#include + +int pci_write_config_byte(const struct pci_dev * dev,int where,u8 val) +{ + lx_emul_trace_and_stop(__func__); +} + + #include int pcie_capability_clear_and_set_word(struct pci_dev * dev,int pos,u16 clear,u16 set) @@ -643,6 +680,14 @@ int pcie_capability_write_word(struct pci_dev * dev,int pos,u16 val) } +#include + +int pcie_set_readrq(struct pci_dev * dev,int rq) +{ + lx_emul_trace_and_stop(__func__); +} + + #include int pcix_get_mmrbc(struct pci_dev * dev) @@ -704,6 +749,14 @@ void proc_free_inum(unsigned int inum) enum reboot_mode reboot_mode; +#include + +void release_firmware(const struct firmware * fw) +{ + lx_emul_trace_and_stop(__func__); +} + + #include struct rhash_lock_head __rcu ** rht_bucket_nested(const struct bucket_table * tbl,unsigned int hash) diff --git a/repos/pc/src/drivers/nic/pc/spec/x86_32/source.list b/repos/pc/src/drivers/nic/pc/spec/x86_32/source.list index 8125a3fb7e..f9868d1e25 100644 --- a/repos/pc/src/drivers/nic/pc/spec/x86_32/source.list +++ b/repos/pc/src/drivers/nic/pc/spec/x86_32/source.list @@ -25,6 +25,21 @@ drivers/net/ethernet/intel/e1000e/nvm.c drivers/net/ethernet/intel/e1000e/param.c drivers/net/ethernet/intel/e1000e/phy.c drivers/net/ethernet/intel/e1000e/ptp.c +drivers/net/ethernet/realtek/r8169_firmware.c +drivers/net/ethernet/realtek/r8169_main.c +drivers/net/ethernet/realtek/r8169_phy_config.c +drivers/net/phy/fixed_phy.c +drivers/net/phy/linkmode.c +drivers/net/phy/mdio-boardinfo.c +drivers/net/phy/mdio_bus.c +drivers/net/phy/mdio_device.c +drivers/net/phy/mdio_devres.c +drivers/net/phy/phy-c45.c +drivers/net/phy/phy-core.c +drivers/net/phy/phy.c +drivers/net/phy/phy_device.c +drivers/net/phy/realtek.c +drivers/net/phy/swphy.c drivers/pci/pci-driver.c kernel/irq/chip.c kernel/irq/devres.c diff --git a/repos/pc/src/drivers/nic/pc/spec/x86_64/generated_dummies.c b/repos/pc/src/drivers/nic/pc/spec/x86_64/generated_dummies.c index d5c53d3f69..dc01e06b6b 100644 --- a/repos/pc/src/drivers/nic/pc/spec/x86_64/generated_dummies.c +++ b/repos/pc/src/drivers/nic/pc/spec/x86_64/generated_dummies.c @@ -1,7 +1,7 @@ /* * \brief Dummy definitions of Linux Kernel functions * \author Automatically generated file - do no edit - * \date 2023-06-06 + * \date 2023-06-21 */ #include @@ -171,6 +171,11 @@ void bust_spinlocks(int yes) } +#include + +u8 const byte_rev_table[256] = {}; + + #include void console_flush_on_panic(enum con_flush_mode mode) @@ -219,6 +224,14 @@ __sum16 csum_ipv6_magic(const struct in6_addr * saddr,const struct in6_addr * da } +#include + +int device_create_managed_software_node(struct device * dev,const struct property_entry * properties,const struct software_node * parent) +{ + lx_emul_trace_and_stop(__func__); +} + + #include void do_trace_netlink_extack(const char * msg) @@ -251,6 +264,30 @@ void emergency_restart(void) } +#include + +int ethnl_cable_test_alloc(struct phy_device * phydev,u8 cmd) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void ethnl_cable_test_finished(struct phy_device * phydev) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void ethnl_cable_test_free(struct phy_device * phydev) +{ + lx_emul_trace_and_stop(__func__); +} + + #include void ethtool_convert_legacy_u32_to_link_mode(unsigned long * dst,u32 legacy_u32) @@ -413,14 +450,6 @@ long __sched io_schedule_timeout(long timeout) struct io_tlb_mem io_tlb_default_mem; -#include - -void iommu_device_unuse_default_domain(struct device * dev) -{ - lx_emul_trace_and_stop(__func__); -} - - #include void irq_work_tick(void) @@ -543,14 +572,6 @@ int mii_nway_restart(struct mii_if_info * mii) } -#include - -int net_ratelimit(void) -{ - lx_emul_trace_and_stop(__func__); -} - - #include bool netlink_strict_get_check(struct sk_buff * skb) @@ -622,6 +643,14 @@ int pci_set_power_state(struct pci_dev * dev,pci_power_t state) } +#include + +int pci_status_get_and_clear_errors(struct pci_dev * pdev) +{ + lx_emul_trace_and_stop(__func__); +} + + #include int pci_wake_from_d3(struct pci_dev * dev,bool enable) @@ -630,6 +659,14 @@ int pci_wake_from_d3(struct pci_dev * dev,bool enable) } +#include + +int pci_write_config_byte(const struct pci_dev * dev,int where,u8 val) +{ + lx_emul_trace_and_stop(__func__); +} + + #include int pcie_capability_clear_and_set_word(struct pci_dev * dev,int pos,u16 clear,u16 set) @@ -646,6 +683,14 @@ int pcie_capability_write_word(struct pci_dev * dev,int pos,u16 val) } +#include + +int pcie_set_readrq(struct pci_dev * dev,int rq) +{ + lx_emul_trace_and_stop(__func__); +} + + #include int pcix_get_mmrbc(struct pci_dev * dev) @@ -707,6 +752,14 @@ void proc_free_inum(unsigned int inum) enum reboot_mode reboot_mode; +#include + +void release_firmware(const struct firmware * fw) +{ + lx_emul_trace_and_stop(__func__); +} + + #include struct rhash_lock_head __rcu ** rht_bucket_nested(const struct bucket_table * tbl,unsigned int hash) diff --git a/repos/pc/src/drivers/nic/pc/spec/x86_64/source.list b/repos/pc/src/drivers/nic/pc/spec/x86_64/source.list index ec31131695..efd5331985 100644 --- a/repos/pc/src/drivers/nic/pc/spec/x86_64/source.list +++ b/repos/pc/src/drivers/nic/pc/spec/x86_64/source.list @@ -28,6 +28,21 @@ drivers/net/ethernet/intel/e1000e/nvm.c drivers/net/ethernet/intel/e1000e/param.c drivers/net/ethernet/intel/e1000e/phy.c drivers/net/ethernet/intel/e1000e/ptp.c +drivers/net/ethernet/realtek/r8169_firmware.c +drivers/net/ethernet/realtek/r8169_main.c +drivers/net/ethernet/realtek/r8169_phy_config.c +drivers/net/phy/fixed_phy.c +drivers/net/phy/linkmode.c +drivers/net/phy/mdio-boardinfo.c +drivers/net/phy/mdio_bus.c +drivers/net/phy/mdio_device.c +drivers/net/phy/mdio_devres.c +drivers/net/phy/phy-c45.c +drivers/net/phy/phy-core.c +drivers/net/phy/phy.c +drivers/net/phy/phy_device.c +drivers/net/phy/realtek.c +drivers/net/phy/swphy.c drivers/pci/pci-driver.c kernel/irq/chip.c kernel/irq/devres.c