diff --git a/repos/dde_linux/fec.list b/repos/dde_linux/fec.list index 9f83f66c2..1ad83228b 100644 --- a/repos/dde_linux/fec.list +++ b/repos/dde_linux/fec.list @@ -2,8 +2,13 @@ linux-x.x.x/drivers/net/ethernet/freescale/fec.h linux-x.x.x/drivers/net/ethernet/freescale/fec_main.c linux-x.x.x/drivers/net/ethernet/freescale/fec_ptp.c linux-x.x.x/drivers/net/phy/mdio_bus.c +linux-x.x.x/drivers/net/phy/mdio_device.c +linux-x.x.x/drivers/net/phy/mdio-boardinfo.c +linux-x.x.x/drivers/net/phy/mdio-boardinfo.h linux-x.x.x/drivers/net/phy/phy_device.c linux-x.x.x/drivers/net/phy/phy.c +linux-x.x.x/drivers/net/phy/phy-c45.c +linux-x.x.x/drivers/net/phy/phy-core.c linux-x.x.x/drivers/net/phy/at803x.c linux-x.x.x/net/core/skbuff.c linux-x.x.x/net/ethernet/eth.c @@ -14,21 +19,26 @@ linux-x.x.x/include/asm-generic/bitops/__fls.h linux-x.x.x/include/asm-generic/bitops/ffs.h linux-x.x.x/include/asm-generic/bitops/fls.h linux-x.x.x/include/asm-generic/bitops/fls64.h +linux-x.x.x/include/linux/cgroup-defs.h linux-x.x.x/include/linux/errqueue.h +linux-x.x.x/include/linux/ethtool.h linux-x.x.x/include/linux/fec.h linux-x.x.x/include/linux/gpio/consumer.h linux-x.x.x/include/linux/if_ether.h linux-x.x.x/include/linux/list.h linux-x.x.x/include/linux/list_nulls.h linux-x.x.x/include/linux/log2.h +linux-x.x.x/include/linux/mdio.h linux-x.x.x/include/linux/mii.h linux-x.x.x/include/linux/mod_devicetable.h linux-x.x.x/include/linux/net.h linux-x.x.x/include/linux/netdev_features.h linux-x.x.x/include/linux/phy.h linux-x.x.x/include/linux/ptp_clock_kernel.h +linux-x.x.x/include/linux/rbtree.h linux-x.x.x/include/linux/rculist.h linux-x.x.x/include/linux/rculist_nulls.h +linux-x.x.x/include/linux/refcount.h linux-x.x.x/include/linux/skbuff.h linux-x.x.x/include/linux/socket.h linux-x.x.x/include/linux/timecounter.h diff --git a/repos/dde_linux/patches/fec_ndev_owner.patch b/repos/dde_linux/patches/fec_ndev_owner.patch new file mode 100644 index 000000000..2667139eb --- /dev/null +++ b/repos/dde_linux/patches/fec_ndev_owner.patch @@ -0,0 +1,34 @@ +diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c +index 74664a6..38cc18a 100644 +--- a/drivers/net/phy/phy_device.c ++++ b/drivers/net/phy/phy_device.c +@@ -944,7 +944,10 @@ EXPORT_SYMBOL(phy_attached_print); + int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, + u32 flags, phy_interface_t interface) + { ++#if 0 ++ /* 'driver' has not been set yet on Genode */ + struct module *ndev_owner = dev->dev.parent->driver->owner; ++#endif + struct mii_bus *bus = phydev->mdio.bus; + struct device *d = &phydev->mdio.dev; + bool using_genphy = false; +@@ -955,7 +958,7 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, + * our own module->refcnt here, otherwise we would not be able to + * unload later on. + */ +- if (ndev_owner != bus->owner && !try_module_get(bus->owner)) { ++ if (/*ndev_owner != bus->owner &&*/ !try_module_get(bus->owner)) { + dev_err(&dev->dev, "failed to get the bus module\n"); + return -EIO; + } +@@ -1060,7 +1063,9 @@ error_module_put: + module_put(d->driver->owner); + error_put_device: + put_device(d); ++#if 0 + if (ndev_owner != bus->owner) ++#endif + module_put(bus->owner); + return err; + } diff --git a/repos/dde_linux/patches/fec_tv64.patch b/repos/dde_linux/patches/fec_tv64.patch deleted file mode 100644 index 3decced6c..000000000 --- a/repos/dde_linux/patches/fec_tv64.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/include/net/sock.h b/include/net/sock.h -index 14d3c07..818a1d1 100644 ---- a/include/net/sock.h -+++ b/include/net/sock.h -@@ -2148,8 +2148,8 @@ sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *skb) - */ - if (sock_flag(sk, SOCK_RCVTSTAMP) || - (sk->sk_tsflags & SOF_TIMESTAMPING_RX_SOFTWARE) || -- (kt.tv64 && sk->sk_tsflags & SOF_TIMESTAMPING_SOFTWARE) || -- (hwtstamps->hwtstamp.tv64 && -+ (kt && sk->sk_tsflags & SOF_TIMESTAMPING_SOFTWARE) || -+ (hwtstamps->hwtstamp && - (sk->sk_tsflags & SOF_TIMESTAMPING_RAW_HARDWARE))) - __sock_recv_timestamp(msg, sk, skb); - else -diff --git a/net/core/skbuff.c b/net/core/skbuff.c -index b2df375..02c065f 100644 ---- a/net/core/skbuff.c -+++ b/net/core/skbuff.c -@@ -4212,7 +4212,7 @@ EXPORT_SYMBOL(skb_try_coalesce); - */ - void skb_scrub_packet(struct sk_buff *skb, bool xnet) - { -- skb->tstamp.tv64 = 0; -+ skb->tstamp = 0; - skb->pkt_type = PACKET_HOST; - skb->skb_iif = 0; - skb->ignore_df = 0; diff --git a/repos/dde_linux/patches/fec_tx_bounce_dma.patch b/repos/dde_linux/patches/fec_tx_bounce_dma.patch index 4b0b4ee77..1d6f0817e 100644 --- a/repos/dde_linux/patches/fec_tx_bounce_dma.patch +++ b/repos/dde_linux/patches/fec_tx_bounce_dma.patch @@ -1,11 +1,11 @@ diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c -index b2a3220..18629c6 100644 +index d4604bc..3f72629 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c -@@ -2825,7 +2825,7 @@ fec_enet_alloc_txq_buffers(struct net_device *ndev, unsigned int queue) +@@ -2798,7 +2798,7 @@ fec_enet_alloc_txq_buffers(struct net_device *ndev, unsigned int queue) txq = fep->tx_queue[queue]; - bdp = txq->tx_bd_base; - for (i = 0; i < txq->tx_ring_size; i++) { + bdp = txq->bd.base; + for (i = 0; i < txq->bd.ring_size; i++) { - txq->tx_bounce[i] = kmalloc(FEC_ENET_TX_FRSIZE, GFP_KERNEL); + txq->tx_bounce[i] = kmalloc(FEC_ENET_TX_FRSIZE, GFP_KERNEL | GFP_LX_DMA); if (!txq->tx_bounce[i]) diff --git a/repos/dde_linux/ports/dde_linux.hash b/repos/dde_linux/ports/dde_linux.hash index 6fe905347..914809fc3 100644 --- a/repos/dde_linux/ports/dde_linux.hash +++ b/repos/dde_linux/ports/dde_linux.hash @@ -1 +1 @@ -4832c9de27d57c6e6eb3c04a6ff6be61b0237216 +aa28d681fc4c5c74f8e287608db1aedcb5cc35fc diff --git a/repos/dde_linux/ports/dde_linux.port b/repos/dde_linux/ports/dde_linux.port index bd72fdf76..ac25d38e6 100644 --- a/repos/dde_linux/ports/dde_linux.port +++ b/repos/dde_linux/ports/dde_linux.port @@ -109,9 +109,9 @@ HASH_INPUT += $(REP_DIR)/lxip.list # Freescale Ethernet controller # SRC_DIR_FEC := src/drivers/nic/fec -VERSION_FEC := 4.4.3 +VERSION_FEC := 4.16.3 URL(fec) := https://www.kernel.org/pub/linux/kernel/v4.x/linux-$(VERSION_FEC).tar.xz -SHA(fec) := 0b379cb19bbd7e38fc5a9a000ea927db55cce519a7400ec7fa705c581a6491dd +SHA(fec) := 0d6971a81da97e38b974c5eba31a74803bfe41aabc46d406c3acda56306c81a3 DIR(fec) := $(SRC_DIR_FEC) TAR_OPT(fec) := --strip-components=1 --files-from - < <(sed 's/-x.x.x/-$(VERSION_FEC)/g' $(REP_DIR)/fec.list) HASH_INPUT += $(REP_DIR)/fec.list @@ -209,6 +209,6 @@ PATCH_OPT(patches/intel_fb_hotplug.patch) := -p1 -d$(SRC_DIR_INTEL_FB) # Freescale NIC PATCH_OPT(patches/fec_skbuff_cast.patch) := -p1 -d$(SRC_DIR_FEC) PATCH_OPT(patches/fec_tx_bounce_dma.patch) := -p1 -d$(SRC_DIR_FEC) -PATCH_OPT(patches/fec_tv64.patch) := -p1 -d$(SRC_DIR_FEC) +PATCH_OPT(patches/fec_ndev_owner.patch) := -p1 -d$(SRC_DIR_FEC) # vi: set ft=make : diff --git a/repos/dde_linux/src/drivers/nic/fec/dummy.c b/repos/dde_linux/src/drivers/nic/fec/dummy.c index d0a1aee5a..6284a723d 100644 --- a/repos/dde_linux/src/drivers/nic/fec/dummy.c +++ b/repos/dde_linux/src/drivers/nic/fec/dummy.c @@ -5,6 +5,16 @@ #include #include +void bus_unregister(struct bus_type *bus) +{ + TRACE_AND_STOP; +} + +void class_unregister(struct class *cls) +{ + TRACE_AND_STOP; +} + size_t copy_from_user(void *to, void const *from, size_t len) { TRACE_AND_STOP; @@ -45,6 +55,11 @@ void dma_free_coherent(struct device * d, size_t size, void *vaddr, dma_addr_t b TRACE_AND_STOP; } +void driver_unregister(struct device_driver *drv) +{ + TRACE_AND_STOP; +} + void dst_release(struct dst_entry *dst) { TRACE_AND_STOP; @@ -61,6 +76,17 @@ void eth_hw_addr_random(struct net_device *dev) TRACE_AND_STOP; } +void ethtool_convert_legacy_u32_to_link_mode(unsigned long *dst, u32 legacy_u32) +{ + TRACE_AND_STOP; +} + +bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32, + const unsigned long *src) +{ + TRACE_AND_STOP; +} + u32 ethtool_op_get_link(struct net_device * d) { TRACE_AND_STOP; @@ -89,12 +115,22 @@ void free_netdev(struct net_device * d) TRACE_AND_STOP; } +void free_uid(struct user_struct *dummy) +{ + TRACE_AND_STOP; +} + bool gfp_pfmemalloc_allowed(gfp_t g) { TRACE_AND_STOP; return -1; } +bool gfpflags_allow_blocking(const gfp_t gfp_flags) +{ + TRACE_AND_STOP; +} + int in_irq(void) { TRACE_AND_STOP; @@ -113,11 +149,31 @@ void *kmap_atomic(struct page *page) return NULL; } +const char *kobject_name(const struct kobject *kobj) +{ + TRACE_AND_STOP; +} + void kunmap_atomic(void *addr) { TRACE_AND_STOP; } +void might_sleep() +{ + TRACE_AND_STOP; +} + +void mm_unaccount_pinned_pages(struct mmpin *mmp) +{ + TRACE_AND_STOP; +} + +void module_put(struct module *mod) +{ + TRACE_AND_STOP; +} + void netif_tx_disable(struct net_device *dev) { TRACE_AND_STOP; @@ -158,18 +214,53 @@ struct timespec64 ns_to_timespec64(const s64 nsec) return ret; } +int of_device_uevent_modalias(struct device *dev, struct kobj_uevent_env *env) +{ + TRACE_AND_STOP; +} + +int of_mdio_parse_addr(struct device *dev, const struct device_node *np) +{ + TRACE_AND_STOP; +} + struct device_node *of_node_get(struct device_node *node) { TRACE_AND_STOP; return NULL; } +void of_phy_deregister_fixed_link(struct device_node *np) +{ + TRACE_AND_STOP; +} + int of_phy_register_fixed_link(struct device_node *np) { TRACE_AND_STOP; return -1; } +bool of_property_read_bool(const struct device_node *np, const char *propname) +{ + TRACE_AND_STOP; +} + +void phy_led_triggers_unregister(struct phy_device *phy) +{ + TRACE_AND_STOP; +} + +void pm_runtime_disable(struct device *dev) +{ + TRACE_AND_STOP; +} + +int pm_runtime_put(struct device *dev) +{ + TRACE_AND_STOP; +} + void ptp_clock_event(struct ptp_clock *ptp, struct ptp_clock_event *event) { TRACE_AND_STOP; @@ -187,12 +278,6 @@ int ptp_clock_unregister(struct ptp_clock *ptp) return -1; } -int regulator_disable(struct regulator *r) -{ - TRACE_AND_STOP; - return -1; -} - bool page_is_pfmemalloc(struct page *page) { TRACE_AND_STOP; @@ -214,6 +299,52 @@ void read_unlock_bh(rwlock_t * l) TRACE_AND_STOP; } +int regulator_disable(struct regulator *r) +{ + TRACE_AND_STOP; + return -1; +} + +int request_threaded_irq(unsigned int irq, irq_handler_t handler, + irq_handler_t thread_fn, + unsigned long flags, const char *name, void *dev) +{ + TRACE_AND_STOP; +} + +void sk_free(struct sock *sk) +{ + TRACE_AND_STOP; +} + +void sock_efree(struct sk_buff *skb) +{ + TRACE_AND_STOP; +} + +int strcmp(const char *s1, const char *s2) +{ + TRACE_AND_STOP; + return -1; +} + +char *strncpy(char *dst, const char *src, size_t s) +{ + TRACE_AND_STOP; +} + +int sysfs_create_link_nowarn(struct kobject *kobj, + struct kobject *target, + const char *name) +{ + TRACE_AND_STOP; +} + +void sysfs_remove_link(struct kobject *kobj, const char *name) +{ + TRACE_AND_STOP; +} + unsigned int tcp_hdrlen(const struct sk_buff *skb) { TRACE_AND_STOP; @@ -252,42 +383,15 @@ void unregister_netdev(struct net_device * d) TRACE_AND_STOP; } +void usleep_range(unsigned long min, unsigned long max) +{ + TRACE_AND_STOP; +} + void __vlan_hwaccel_put_tag(struct sk_buff *skb, __be16 vlan_proto, u16 vlan_tci) { TRACE_AND_STOP; } -void module_put(struct module *mod) -{ - TRACE_AND_STOP; -} - -void put_device(struct device *dev) -{ - TRACE_AND_STOP; -} - -int strcmp(const char *s1, const char *s2) -{ - TRACE_AND_STOP; - return -1; -} - -void class_unregister(struct class *cls) -{ - TRACE_AND_STOP; -} - -void bus_unregister(struct bus_type *bus) -{ - TRACE_AND_STOP; -} - -void driver_unregister(struct device_driver *drv) -{ - TRACE_AND_STOP; -} - struct user_namespace init_user_ns; int sysctl_tstamp_allow_data; - diff --git a/repos/dde_linux/src/drivers/nic/fec/lx_emul.cc b/repos/dde_linux/src/drivers/nic/fec/lx_emul.cc index e60e6e23d..9a0c2ea14 100644 --- a/repos/dde_linux/src/drivers/nic/fec/lx_emul.cc +++ b/repos/dde_linux/src/drivers/nic/fec/lx_emul.cc @@ -436,6 +436,7 @@ const struct of_device_id *of_match_device(const struct of_device_id *matches, return nullptr; } + void * devm_ioremap_resource(struct device *dev, struct resource *res) { Fec * fec = (Fec*) dev->plat_dev->dev.of_node; @@ -674,15 +675,15 @@ struct page *alloc_pages(gfp_t gfp_mask, unsigned int order) } -void *__alloc_page_frag(struct page_frag_cache *, unsigned int const fragsz, - gfp_t const gfp_mask) +void *page_frag_alloc(struct page_frag_cache *, unsigned int const fragsz, + gfp_t const gfp_mask) { struct page *page = allocate_pages(gfp_mask, fragsz); return page ? page->addr : page; } -void __free_page_frag(void *addr) +void page_frag_free(void *addr) { struct page *page = Addr_to_page_mapping::remove((unsigned long)addr); @@ -693,6 +694,7 @@ void __free_page_frag(void *addr) kfree(page); } + int driver_register(struct device_driver *drv) { new (Lx::Malloc::mem()) Driver(drv); @@ -899,9 +901,10 @@ bool napi_schedule_prep(struct napi_struct *n) } -void napi_complete(struct napi_struct *n) +bool napi_complete_done(struct napi_struct *n, int work_done) { clear_bit(NAPI_STATE_SCHED, &n->state); + return true; } @@ -982,7 +985,7 @@ static int of_mdiobus_register_phy(Fec::Mdio::Phy & ph, struct mii_bus *mdio) if (!phy || IS_ERR(phy)) return 1; phy->irq = ph.gpio_irq; - phy->dev.of_node = (device_node*) &ph; + phy->mdio.dev.of_node = (device_node*) &ph; /* All data is now stored in the phy struct; * register it */ @@ -1129,10 +1132,23 @@ u64 timecounter_read(struct timecounter *tc) return nsec; } + /********************* ** DUMMY FUNCTIONS ** *********************/ +int bus_register(struct bus_type *bus) +{ + TRACE; + return 0; +} + +int class_register(struct class_ *cls) +{ + TRACE; + return 0; +} + void clk_disable_unprepare(struct clk * c) { TRACE; @@ -1144,6 +1160,12 @@ int clk_prepare_enable(struct clk * c) return 0; } +int device_bind_driver(struct device *dev) +{ + TRACE; + return 0; +} + void device_initialize(struct device *dev) { TRACE; @@ -1155,107 +1177,46 @@ int device_init_wakeup(struct device *dev, bool val) return 0; } +int device_set_wakeup_enable(struct device *dev, bool enable) +{ + TRACE; + return 0; +} + struct regulator *__must_check devm_regulator_get(struct device *dev, const char *id) { TRACE; return nullptr; } -struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, unsigned int index) -{ - TRACE; - return nullptr; -} - -bool of_phy_is_fixed_link(struct device_node *np) -{ - TRACE; - return 0; -} - -int pinctrl_pm_select_default_state(struct device *dev) -{ - TRACE; - return -1; -} - -int pinctrl_pm_select_sleep_state(struct device *dev) -{ - TRACE; - return -1; -} - -struct resource *platform_get_resource(struct platform_device * d, unsigned r1, unsigned r2) -{ - TRACE; - return nullptr; -} - -void pm_runtime_enable(struct device *dev) +void dma_sync_single_for_cpu(struct device *dev, dma_addr_t addr, size_t size, + enum dma_data_direction dir) { TRACE; } -void pm_runtime_get_noresume(struct device *dev) +void dma_sync_single_for_device(struct device *dev, dma_addr_t addr, + size_t size, enum dma_data_direction dir) { TRACE; } -int pm_runtime_set_active(struct device *dev) -{ - TRACE; - return 0; -} - -void pm_runtime_set_autosuspend_delay(struct device *dev, int delay) -{ - TRACE; -} - -void pm_runtime_use_autosuspend(struct device *dev) -{ - TRACE; -} - -struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info, struct device *parent) -{ - TRACE; - return (ptp_clock*)0xdeadbeef; -} - -int regulator_enable(struct regulator * d) -{ - TRACE; - return 0; -} - -int class_register(struct class_ *cls) -{ - TRACE; - return 0; -} - -int try_module_get(struct module *mod) -{ - TRACE; - return -1; -} - struct device *get_device(struct device *dev) { TRACE; return dev; } -int device_bind_driver(struct device *dev) +struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, unsigned int index) { TRACE; - return 0; + return nullptr; } -void netif_tx_start_all_queues(struct net_device *dev) +bool netdev_uses_dsa(struct net_device *dev) { TRACE; + return false; } void netif_tx_lock_bh(struct net_device *dev) @@ -1263,18 +1224,7 @@ void netif_tx_lock_bh(struct net_device *dev) TRACE; } -int device_set_wakeup_enable(struct device *dev, bool enable) -{ - TRACE; - return 0; -} - -void trace_consume_skb(struct sk_buff * sb) -{ - TRACE; -} - -void trace_kfree_skb(struct sk_buff * sb, void * p) +void netif_tx_start_all_queues(struct net_device *dev) { TRACE; } @@ -1289,22 +1239,17 @@ void netif_wake_queue(struct net_device * d) TRACE; } -bool netdev_uses_dsa(struct net_device *dev) +const void *of_get_mac_address(struct device_node *np) { TRACE; - return false; + return nullptr; } -void dma_sync_single_for_device(struct device *dev, dma_addr_t addr, - size_t size, enum dma_data_direction dir) -{ - TRACE; -} +int of_machine_is_compatible(const char *compat) -void dma_sync_single_for_cpu(struct device *dev, dma_addr_t addr, size_t size, - enum dma_data_direction dir) { TRACE; + return 0; } void of_node_put(struct device_node *node) @@ -1312,12 +1257,102 @@ void of_node_put(struct device_node *node) TRACE; } -const void *of_get_mac_address(struct device_node *np) +bool of_phy_is_fixed_link(struct device_node *np) +{ + TRACE; + return 0; +} + +void phy_led_trigger_change_speed(struct phy_device *phy) +{ + TRACE; +} + +int phy_led_triggers_register(struct phy_device *phy) +{ + TRACE; + return -1; +} + +int pinctrl_pm_select_default_state(struct device *dev) +{ + TRACE; + return -1; +} + +int pinctrl_pm_select_sleep_state(struct device *dev) +{ + TRACE; + return -1; +} + +int platform_get_irq_byname(struct platform_device *dev, const char *name) +{ + TRACE; + return -1; +} + +struct resource *platform_get_resource(struct platform_device * d, unsigned r1, unsigned r2) { TRACE; return nullptr; } +int platform_irq_count(struct platform_device *dev) +{ + TRACE; + return 0; +} + +void pm_runtime_enable(struct device *dev) +{ + TRACE; +} + +void pm_runtime_get_noresume(struct device *dev) +{ + TRACE; +} + +int pm_runtime_set_active(struct device *dev) +{ + TRACE; + return 0; +} + +void pm_runtime_use_autosuspend(struct device *dev) +{ + TRACE; +} + +void pm_runtime_set_autosuspend_delay(struct device *dev, int delay) +{ + TRACE; +} + +struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info, struct device *parent) +{ + TRACE; + return (ptp_clock*)0xdeadbeef; +} + +void put_device(struct device *dev) +{ + TRACE; +} + +int regulator_enable(struct regulator * d) +{ + TRACE; + return 0; +} + +int request_module(const char *fmt, ...) +{ + TRACE; + return 0; +} + void rtnl_lock(void) { TRACE; @@ -1328,16 +1363,36 @@ void rtnl_unlock(void) TRACE; } -int request_module(const char *fmt, ...) +void secpath_reset(struct sk_buff *skb) { TRACE; - return 0; } -int bus_register(struct bus_type *bus) +int sysfs_create_link(struct kobject *kobj, struct kobject *target, const char *name) { TRACE; - return 0; + return -1; +} + +void trace_consume_skb(struct sk_buff * sb) +{ + TRACE; +} + +void trace_kfree_skb(struct sk_buff * sb, void * p) +{ + TRACE; +} + +void trace_mdio_access(void *dummy, ...) +{ + TRACE; +} + +int try_module_get(struct module *mod) +{ + TRACE; + return -1; } } diff --git a/repos/dde_linux/src/drivers/nic/fec/lx_emul.h b/repos/dde_linux/src/drivers/nic/fec/lx_emul.h index c376188eb..685e04125 100644 --- a/repos/dde_linux/src/drivers/nic/fec/lx_emul.h +++ b/repos/dde_linux/src/drivers/nic/fec/lx_emul.h @@ -19,10 +19,43 @@ #include +#include #include #include #include +static inline void __read_once_size(const volatile void *p, void *res, int size) +{ + switch (size) { + case 1: *(__u8 *)res = *(volatile __u8 *)p; break; + case 2: *(__u16 *)res = *(volatile __u16 *)p; break; + case 4: *(__u32 *)res = *(volatile __u32 *)p; break; + case 8: *(__u64 *)res = *(volatile __u64 *)p; break; + default: + barrier(); + __builtin_memcpy((void *)res, (const void *)p, size); + barrier(); + } +} + +#ifdef __cplusplus +#define READ_ONCE(x) \ +({ \ + barrier(); \ + x; \ +}) +#else +#define READ_ONCE(x) \ +({ \ + union { typeof(x) __val; char __c[1]; } __u; \ + __read_once_size(&(x), __u.__c, sizeof(x)); \ + __u.__val; \ +}) +#endif + + +#include + void lx_backtrace(void); #define DEBUG_LINUX_PRINTK 0 @@ -59,8 +92,6 @@ typedef int clockid_t; enum { PAGE_SHIFT = 12 }; enum { HZ = 100UL, }; -struct list_head; - typedef __u16 __le16; typedef __u32 __le32; typedef __u64 __le64; @@ -129,7 +160,6 @@ enum { __GFP_REPEAT = 0x00000400u, }; -#include #include #include #include @@ -138,6 +168,7 @@ enum { #include #include #include +#include enum { ETH_HLEN = 14, @@ -206,11 +237,6 @@ static inline s64 timespec64_to_ns(const struct timespec64 *ts) ktime_t ns_to_ktime(u64 ns); -struct device_node -{ - const char * full_name; -}; - struct device; struct device_driver; @@ -220,6 +246,7 @@ struct bus_type const struct attribute_group **dev_groups; int (*match)(struct device *dev, struct device_driver *drv); + int (*uevent)(struct device *dev, struct kobj_uevent_env *env); int (*probe)(struct device *dev); const struct dev_pm_ops *pm; @@ -255,6 +282,7 @@ struct platform_device; struct device { char name[32]; struct device * parent; + struct kobject kobj; struct device_driver *driver; void * platform_data; void * driver_data; @@ -263,7 +291,8 @@ struct device { struct bus_type *bus; struct class *class; struct device_node *of_node; - struct platform_device * plat_dev; + struct fwnode_handle *fwnode; + struct platform_device *plat_dev; }; struct platform_device { @@ -358,6 +387,7 @@ struct net_device netdev_features_t features; struct net_device_stats stats; netdev_features_t hw_features; + int ifindex; const struct net_device_ops *netdev_ops; const struct ethtool_ops *ethtool_ops; const struct header_ops *header_ops; @@ -365,7 +395,10 @@ struct net_device unsigned int priv_flags; unsigned short hard_header_len; unsigned long mtu; + unsigned int min_mtu; + unsigned long max_mtu; unsigned short type; + unsigned char min_header_len; unsigned char addr_len; struct netdev_hw_addr_list mc; unsigned char *dev_addr; @@ -373,7 +406,7 @@ struct net_device unsigned long tx_queue_len; int watchdog_timeo; struct timer_list watchdog_timer; - struct device dev; + struct device dev; u16 gso_max_segs; struct phy_device *phydev; }; @@ -427,8 +460,6 @@ static inline int rcu_read_lock_bh_held(void) { return 1; } unsigned int jiffies_to_usecs(const unsigned long j); -struct rb_node {}; - #define __aligned(x) __attribute__((aligned(x))) #define kmemcheck_bitfield_begin(name) @@ -602,7 +633,10 @@ bool netif_queue_stopped(const struct net_device *dev); #define CONFIG_ARM 1 #define CONFIG_ARCH_MXC 1 +#define CONFIG_DEBUG_LOCK_ALLOC 1 +#define CONFIG_MDIO_DEVICE 1 #define CONFIG_OF_MDIO 1 +#define CONFIG_PHYLIB 1 #define CONFIG_PTP_1588_CLOCK 1 void rtnl_lock(void); @@ -617,26 +651,7 @@ void netif_tx_unlock_bh(struct net_device *dev); void napi_enable(struct napi_struct *n); void napi_disable(struct napi_struct *n); -static inline void __read_once_size(const volatile void *p, void *res, int size) -{ - switch (size) { - case 1: *(__u8 *)res = *(volatile __u8 *)p; break; - case 2: *(__u16 *)res = *(volatile __u16 *)p; break; - case 4: *(__u32 *)res = *(volatile __u32 *)p; break; - case 8: *(__u64 *)res = *(volatile __u64 *)p; break; - default: - barrier(); - __builtin_memcpy((void *)res, (const void *)p, size); - barrier(); - } -} - -#define READ_ONCE(x) \ -({ \ - union { typeof(x) __val; char __c[1]; } __u; \ - __read_once_size(&(x), __u.__c, sizeof(x)); \ - __u.__val; \ -}) +#define __randomize_layout extern unsigned long find_next_bit(const unsigned long *addr, unsigned long size, unsigned long offset); @@ -669,12 +684,6 @@ gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb); void dma_sync_single_for_device(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir); -bool napi_schedule_prep(struct napi_struct *n); - -void __napi_schedule(struct napi_struct *n); - -void napi_complete(struct napi_struct *n); - void *dev_get_platdata(const struct device *dev); int is_valid_ether_addr(const u8 *); @@ -710,6 +719,473 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np); struct resource *platform_get_resource(struct platform_device *, unsigned, unsigned); +/******************************* + ** asm-generic/atomic-long.h ** + *******************************/ + +static inline int atomic_long_cmpxchg(atomic_long_t *v, long old, long n) { + return cmpxchg(&v->counter, old, n); } + +/************************ + ** linux/capability.h ** + ************************/ + +bool capable(int); + +/************************* + ** linux/cgroup-defs.h ** + *************************/ + +struct cgroup; + +/****************** + ** linux/cred.h ** + ******************/ + +struct user_struct *current_user(); + +/******************* + ** linux/delay.h ** + *******************/ + +void usleep_range(unsigned long min, unsigned long max); + +/************************* + ** linux/etherdevice.h ** + *************************/ + +static inline void ether_addr_copy(u8 *dst, const u8 *src) +{ + *(u32 *)dst = *(const u32 *)src; + *(u16 *)(dst+ 4) = *(const u16 *)(src + 4); +} + +/********************* + ** linux/ethtool.h ** + *********************/ + +struct ethtool_link_ksettings; + +/**************** + ** linux/fs.h ** + ****************/ + +typedef struct { + size_t written; + size_t count; + union { + char __user *buf; + void *data; + } arg; + int error; +} read_descriptor_t; + +/******************** + ** linux/fwnode.h ** + ********************/ + +struct fwnode_handle { int dummy; }; + +/********************** + ** linux/mm_types.h ** + **********************/ + +struct page_frag_cache +{ + bool pfmemalloc; +}; + +/***************** + ** linux/gfp.h ** + *****************/ + +void *page_frag_alloc(struct page_frag_cache *nc, + unsigned int fragsz, gfp_t gfp_mask); + +void page_frag_free(void *addr); + +/********************* + ** linux/if_vlan.h ** + *********************/ + +static inline bool eth_type_vlan(__be16 ethertype) { return false; } + +/*********************** + ** linux/interrupt.h ** + ***********************/ + +#define IRQF_SHARED 0x00000080 +#define IRQF_ONESHOT 0x00002000 + +int request_threaded_irq(unsigned int irq, irq_handler_t handler, + irq_handler_t thread_fn, + unsigned long flags, const char *name, void *dev); + +/********************* + ** linux/lockdep.h ** + *********************/ + +struct lockdep_map { }; + +#define mutex_release(l, n, i) + +/***************************** + ** linux/mod_devicetable.h ** + *****************************/ + +#define MDIO_NAME_SIZE 32 + +/************************ + ** linux/memcontrol.h ** + ************************/ + +struct mem_cgroup; + +#define mem_cgroup_sockets_enabled 0 + +static inline bool mem_cgroup_under_socket_pressure(struct mem_cgroup *memcg) { + return false; } + +/*********************** + ** linux/netdevice.h ** + ***********************/ + +void __napi_schedule(struct napi_struct *n); + +typedef struct sk_buff **(*gro_receive_t)(struct sk_buff **, struct sk_buff *); + +struct sk_buff **call_gro_receive(gro_receive_t cb, struct sk_buff **head, struct sk_buff *skb); + +void dev_consume_skb_any(struct sk_buff *skb); + +bool napi_complete_done(struct napi_struct *n, int work_done); + +bool napi_schedule_prep(struct napi_struct *n); + +void skb_gro_flush_final(struct sk_buff *skb, struct sk_buff **pp, int flush); + +/**************** + ** linux/of.h ** + ****************/ + +struct device_node +{ + const char * full_name; + struct fwnode_handle fwnode; +}; + +#define of_fwnode_handle(node) \ + ({ \ + typeof(node) __of_fwnode_handle_node = (node); \ + \ + __of_fwnode_handle_node ? \ + &__of_fwnode_handle_node->fwnode : NULL; \ + }) + +int of_machine_is_compatible(const char *compat); + +bool of_property_read_bool(const struct device_node *np, const char *propname); + +/*********************** + ** linux/of_device.h ** + ***********************/ + +int of_device_uevent_modalias(struct device *dev, struct kobj_uevent_env *env); + +/********************* + ** linux/of_mdio.h ** + *********************/ + +int of_mdio_parse_addr(struct device *dev, const struct device_node *np); + +void of_phy_deregister_fixed_link(struct device_node *np); + +/***************** + ** linux/pci.h ** + *****************/ + +int dev_is_pci(struct device *dev); + +struct pci_dev; + +struct device_node * pci_device_to_OF_node(const struct pci_dev *pdev); + +#define to_pci_dev(n) NULL + +/****************************** + ** linux/phy_led_triggers.h ** + ******************************/ + +void phy_led_trigger_change_speed(struct phy_device *phy); + +int phy_led_triggers_register(struct phy_device *phy); + +void phy_led_triggers_unregister(struct phy_device *phy); + +/***************************** + ** linux/platform_device.h ** + *****************************/ + +int platform_get_irq_byname(struct platform_device *dev, const char *name); + +int platform_irq_count(struct platform_device *); + +/************************ + ** linux/pm_runtime.h ** + ************************/ + +void pm_runtime_disable(struct device *dev); + +int pm_runtime_put(struct device *dev); + +/********************* + ** linux/preempt.h ** + *********************/ + +#define in_task() (1) + +/********************** + ** linux/rcupdate.h ** + **********************/ + +#define rcu_assign_pointer(p, v) (p = v); + +#define rcu_dereference_protected(p, c) p + +/************************* + ** linux/scatterlist.h ** + *************************/ + +#define sg_is_last(sg) ((sg)->page_link & 0x02) + +/************************** + ** linux/sched/signal.h ** + **************************/ + +unsigned long rlimit(unsigned int limit); + +/************************ + ** linux/sched/user.h ** + ************************/ + +struct user_struct +{ + atomic_long_t locked_vm; +}; + +void free_uid(struct user_struct *); + +struct user_struct *get_uid(struct user_struct *u); + +/****************** + ** linux/sctp.h ** + ******************/ + +struct sctphdr +{ + unsigned unused; +}; + +struct kmem_cache *kmem_cache_create_usercopy(const char *name, size_t size, + size_t align, slab_flags_t flags, + size_t useroffset, size_t usersize, + void (*ctor)(void *)); + +/****************** + ** linux/slab.h ** + ******************/ + +void *kcalloc(size_t n, size_t size, gfp_t flags); + +void kmem_cache_free_bulk(struct kmem_cache *, size_t, void **); + +/********************** + ** linux/spinlock.h ** + **********************/ + +int spin_is_locked(spinlock_t *lock); + +/******************** + ** linux/stddef.h ** + ********************/ + +#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER)) + +/******************* + ** linux/sysfs.h ** + *******************/ + +int sysfs_create_link(struct kobject *kobj, struct kobject *target, const char *name); + +int sysfs_create_link_nowarn(struct kobject *kobj, struct kobject *target, const char *name); + +void sysfs_remove_link(struct kobject *kobj, const char *name); + +/************************* + ** linux/thread_info.h ** + *************************/ + +static inline void check_object_size(const void *ptr, unsigned long n, + bool to_user) { } + +void __bad_copy_from(void); +void __bad_copy_to(void); + +static inline void copy_overflow(int size, unsigned long count) +{ + WARN(1, "Buffer overflow detected (%d < %lu)!\n", size, count); +} + +static __always_inline bool +check_copy_size(const void *addr, size_t bytes, bool is_source) +{ + int sz = __compiletime_object_size(addr); + if (unlikely(sz >= 0 && sz < bytes)) { + if (!__builtin_constant_p(bytes)) + copy_overflow(sz, bytes); + else if (is_source) + __bad_copy_from(); + else + __bad_copy_to(); + return false; + } + check_object_size(addr, bytes, is_source); + return true; +} + +/**************************** + ** linux/user_namespace.h ** + ****************************/ + +struct user_namespace { }; + +/******************** + ** linux/uidgid.h ** + ********************/ + +kuid_t make_kuid(struct user_namespace *from, uid_t uid); + +/***************** + ** linux/uio.h ** + *****************/ + +struct kvec +{ + void *iov_base; + size_t iov_len; +}; + +bool _copy_from_iter_full(void *addr, size_t bytes, struct iov_iter *i); + +static __always_inline __must_check +bool copy_from_iter_full(void *addr, size_t bytes, struct iov_iter *i) +{ + if (unlikely(!check_copy_size(addr, bytes, false))) + return false; + else + return _copy_from_iter_full(addr, bytes, i); +} + +bool copy_from_iter_full_nocache(void *addr, size_t bytes, struct iov_iter *i); + +bool csum_and_copy_from_iter_full(void *addr, size_t bytes, __wsum *csum, struct iov_iter *i); + +/****************** + ** linux/wait.h ** + ******************/ + +bool wq_has_sleeper(struct wait_queue_head *wq_head); + +/******************** + ** net/checksum.h ** + ********************/ + +static inline __wsum +csum_block_sub(__wsum csum, __wsum csum2, int offset) +{ + return csum_block_add(csum, ~csum2, offset); +} + +static inline __wsum csum_unfold(__sum16 n) +{ + return (__force __wsum)n; +} + +/************************** + ** net/flow_dissector.h ** + **************************/ + +#define FLOW_DISSECTOR_F_PARSE_1ST_FRAG BIT(0) + +/************************* + ** net/net_namespace.h ** + *************************/ + +struct net; + +/****************** + ** net/l3mdev.h ** + ******************/ + +int l3mdev_master_ifindex_by_index(struct net *net, int ifindex); + +/********************* + ** net/pkt_sched.h ** + *********************/ + +#define DEFAULT_TX_QUEUE_LEN 1000 + +/*********************** + ** soc/imx/cpuidle.h ** + ***********************/ + +static inline void imx6q_cpuidle_fec_irqs_used(void) { } +static inline void imx6q_cpuidle_fec_irqs_unused(void) { } + +/************************* + ** trace/events/mdio.h ** + *************************/ + +void trace_mdio_access(void *dummy, ...); + +/********************************* + ** uapi/asm-generic/resource.h ** + *********************************/ + +# define RLIMIT_MEMLOCK 8 /* max locked-in-memory address space */ + +/***************************** + ** uapi/linux/capability.h ** + *****************************/ + +#define CAP_IPC_LOCK 14 + +/************************* + ** uapi/linux/kernel.h ** + *************************/ + +#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) + +/****************************** + ** uapi/linux/libc-compat.h ** + ******************************/ + +#define __UAPI_DEF_IF_IFMAP 1 +#define __UAPI_DEF_IF_IFNAMSIZ 1 +#define __UAPI_DEF_IF_IFREQ 1 +#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1 + +/************************ + ** uapi/linux/types.h ** + ************************/ + +typedef unsigned __poll_t; + +/************************/ + +#define DECLARE_BITMAP(name,bits) \ + unsigned long name[BITS_TO_LONGS(bits)] + #include #include #include @@ -727,30 +1203,6 @@ bool device_may_wakeup(struct device *dev); int enable_irq_wake(unsigned int irq); int disable_irq_wake(unsigned int irq); -struct ethtool_ops { - int(*get_settings)(struct net_device *, struct ethtool_cmd *); - int(*set_settings)(struct net_device *, struct ethtool_cmd *); - void(*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *); - int(*get_regs_len)(struct net_device *); - void(*get_regs)(struct net_device *, struct ethtool_regs *, void *); - void(*get_wol)(struct net_device *, struct ethtool_wolinfo *); - int(*set_wol)(struct net_device *, struct ethtool_wolinfo *); - int(*nway_reset)(struct net_device *); - u32(*get_link)(struct net_device *); - int(*get_coalesce)(struct net_device *, struct ethtool_coalesce *); - int(*set_coalesce)(struct net_device *, struct ethtool_coalesce *); - void(*get_pauseparam)(struct net_device *, struct ethtool_pauseparam*); - int(*set_pauseparam)(struct net_device *, struct ethtool_pauseparam*); - void(*get_strings)(struct net_device *, u32 stringset, u8 *); - void(*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *); - int(*get_sset_count)(struct net_device *, int); - int(*get_ts_info)(struct net_device *, struct ethtool_ts_info *); - int(*get_tunable)(struct net_device *, - const struct ethtool_tunable *, void *); - int(*set_tunable)(struct net_device *, - const struct ethtool_tunable *, const void *); -}; - u32 ethtool_op_get_link(struct net_device *); void *dma_alloc_coherent(struct device *, size_t, dma_addr_t *, gfp_t); @@ -764,10 +1216,6 @@ int pinctrl_pm_select_sleep_state(struct device *dev); void netif_tx_disable(struct net_device *dev); -#include - -#define rcu_assign_pointer(p, v) (p = v); - #include #define netdev_hw_addr_list_for_each(ha, l) \ @@ -899,8 +1347,6 @@ typedef int rwlock_t; bool gfp_pfmemalloc_allowed(gfp_t); -struct user_namespace {}; - struct cred { struct user_namespace * user_ns; }; @@ -909,7 +1355,10 @@ struct file { const struct cred * f_cred; }; -struct net; +struct net +{ + struct user_namespace * user_ns; +}; struct percpu_counter { s64 count; @@ -975,9 +1424,6 @@ struct net *dev_net(const struct net_device *dev); #define read_pnet(pnet) (&init_net) -#define DECLARE_BITMAP(name,bits) \ - unsigned long name[BITS_TO_LONGS(bits)] - void bitmap_fill(unsigned long *dst, int nbits); void bitmap_zero(unsigned long *dst, int nbits); @@ -1041,7 +1487,10 @@ void page_counter_uncharge(struct page_counter *counter, unsigned long nr_pages) enum { UNDER_LIMIT, SOFT_LIMIT, OVER_LIMIT }; -struct inode {}; +struct inode +{ + kuid_t i_uid; +}; struct vm_area_struct; @@ -1097,11 +1546,6 @@ struct page *virt_to_head_page(const void *x); typeof(type) name #define this_cpu_ptr(ptr) ptr -struct page_frag_cache -{ - bool pfmemalloc; -}; - void *__alloc_page_frag(struct page_frag_cache *nc, unsigned int fragsz, gfp_t gfp_mask); unsigned long local_irq_save(unsigned long flags); @@ -1170,7 +1614,10 @@ void sg_mark_end(struct scatterlist *sg); void sg_set_buf(struct scatterlist *, const void *, unsigned int); void sg_set_page(struct scatterlist *, struct page *, unsigned int, unsigned int); -struct inet_skb_parm { }; +struct inet_skb_parm +{ + int iif; +}; enum { IPPROTO_IP = 0, @@ -1374,10 +1821,6 @@ struct device_node *of_get_next_available_child(const struct device_node *node, for (child = of_get_next_available_child(parent, NULL); child != NULL; \ child = of_get_next_available_child(parent, child)) -u32 mmd_eee_cap_to_ethtool_sup_t(u16 eee_cap); -u32 mmd_eee_adv_to_ethtool_adv_t(u16 eee_adv); -u16 ethtool_adv_to_mmd_eee_adv_t(u32 adv); - int driver_register(struct device_driver *drv); void driver_unregister(struct device_driver *drv); @@ -1401,9 +1844,10 @@ static inline bool is_multicast_ether_addr_64bits(const u8 addr[6+2]) static inline bool ether_addr_equal_64bits(const u8 addr1[6+2], const u8 addr2[6+2]) { - u64 fold = (*(const u64 *)addr1) ^ (*(const u64 *)addr2); + const u16 *a = (const u16 *)addr1; + const u16 *b = (const u16 *)addr2; - return (fold << 16) == 0; + return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) == 0; } static inline bool eth_proto_is_802_3(__be16 proto) @@ -1483,6 +1927,7 @@ void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp); struct pm_qos_request {}; #define dma_wmb() __asm__ __volatile__ ("dmb oshst" : : : "memory") + #include #endif /* _SRC__DRIVERS__NIC__FEC__LX_EMUL_H_ */ diff --git a/repos/dde_linux/src/drivers/nic/fec/target.mk b/repos/dde_linux/src/drivers/nic/fec/target.mk index 82651bfe0..117aa615f 100644 --- a/repos/dde_linux/src/drivers/nic/fec/target.mk +++ b/repos/dde_linux/src/drivers/nic/fec/target.mk @@ -29,16 +29,17 @@ CC_C_OPT += -std=gnu89 # # Reduce build noise of compiling contrib code # -CC_OPT_fec_ptp = -Wno-unused-but-set-variable -Wno-unused-variable \ - -Wno-maybe-uninitialized -Wno-uninitialized -CC_OPT_fec_main = -Wno-unused-but-set-variable -Wno-unused-variable \ - -Wno-pointer-sign -Wno-int-conversion -Wno-unused-function \ - -Wno-uninitialized -CC_OPT_skbuff = -Wno-pointer-sign -Wno-int-conversion -Wno-uninitialized -CC_OPT_mdio_bus = -Wno-implicit-int -Wno-unused-function -Wno-pointer-sign -CC_OPT_eth = -Wno-pointer-sign -Wno-unused-function -CC_OPT_phy = -Wno-unused-function -Wno-unused-but-set-variable -CC_OPT_at803x = -Wno-unused-variable +CC_OPT_fec_ptp = -Wno-unused-but-set-variable -Wno-unused-variable \ + -Wno-maybe-uninitialized -Wno-uninitialized +CC_OPT_fec_main = -Wno-unused-but-set-variable -Wno-unused-variable \ + -Wno-pointer-sign -Wno-int-conversion -Wno-unused-function \ + -Wno-uninitialized +CC_OPT_skbuff = -Wno-pointer-sign -Wno-int-conversion -Wno-uninitialized +CC_OPT_mdio_bus = -Wno-implicit-int -Wno-unused-function -Wno-pointer-sign +CC_OPT_eth = -Wno-pointer-sign -Wno-unused-function +CC_OPT_phy = -Wno-unused-function -Wno-unused-but-set-variable +CC_OPT_phy_device = -Wno-unused-function +CC_OPT_at803x = -Wno-unused-variable vpath %.c $(LX_CONTRIB_DIR)/drivers/net/ethernet/freescale vpath %.c $(LX_CONTRIB_DIR)/drivers/net/phy diff --git a/repos/dde_linux/src/drivers/usb/dummies.c b/repos/dde_linux/src/drivers/usb/dummies.c index 2510b2509..2650596cb 100644 --- a/repos/dde_linux/src/drivers/usb/dummies.c +++ b/repos/dde_linux/src/drivers/usb/dummies.c @@ -258,7 +258,7 @@ int atomic_notifier_chain_unregister(struct atomic_notifier_head *nh, *********************/ int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...) { TRACE; return 0; } -char *kobject_name(const struct kobject *kobj) { TRACE; return 0; } +const char *kobject_name(const struct kobject *kobj) { TRACE; return 0; } char *kobject_get_path(struct kobject *kobj, gfp_t gfp_mask) { TRACE; return 0; } diff --git a/repos/dde_linux/src/drivers/usb_host/dummies.c b/repos/dde_linux/src/drivers/usb_host/dummies.c index a15795c73..a3eda534e 100644 --- a/repos/dde_linux/src/drivers/usb_host/dummies.c +++ b/repos/dde_linux/src/drivers/usb_host/dummies.c @@ -231,7 +231,7 @@ int atomic_notifier_chain_unregister(struct atomic_notifier_head *nh, *********************/ int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...) { TRACE; return 0; } -char *kobject_name(const struct kobject *kobj) { TRACE; return 0; } +const char *kobject_name(const struct kobject *kobj) { TRACE; return 0; } char *kobject_get_path(struct kobject *kobj, gfp_t gfp_mask) { TRACE; return 0; } diff --git a/repos/dde_linux/src/include/lx_emul/compiler.h b/repos/dde_linux/src/include/lx_emul/compiler.h index a4d67a69b..896bd7da7 100644 --- a/repos/dde_linux/src/include/lx_emul/compiler.h +++ b/repos/dde_linux/src/include/lx_emul/compiler.h @@ -70,6 +70,10 @@ #define smp_read_barrier_depends() do { } while (0) #define smp_store_mb(var, value) do { WRITE_ONCE(var, value); barrier(); } while (0) +#ifndef __compiletime_object_size +# define __compiletime_object_size(obj) -1 +#endif + /************************** ** linux/compiler-gcc.h ** **************************/ @@ -78,6 +82,8 @@ #define __packed __attribute__((packed)) #endif +#define __weak __attribute__((weak)) + #define __aligned(x) __attribute__((aligned(x))) #define uninitialized_var(x) x = x diff --git a/repos/dde_linux/src/include/lx_emul/kernel.h b/repos/dde_linux/src/include/lx_emul/kernel.h index 5a687d351..cbb5aa69b 100644 --- a/repos/dde_linux/src/include/lx_emul/kernel.h +++ b/repos/dde_linux/src/include/lx_emul/kernel.h @@ -26,6 +26,7 @@ #define __is_defined(x) ___is_defined(x) #define IS_BUILTIN(option) __is_defined(option) #define IS_ENABLED(option) IS_BUILTIN(option) +#define IS_REACHABLE(option) IS_BUILTIN(option) /******************** ** linux/kernel.h ** diff --git a/repos/dde_linux/src/include/lx_emul/kobject.h b/repos/dde_linux/src/include/lx_emul/kobject.h index 2ed0ab345..8f6f580a8 100644 --- a/repos/dde_linux/src/include/lx_emul/kobject.h +++ b/repos/dde_linux/src/include/lx_emul/kobject.h @@ -52,6 +52,6 @@ struct kobj_uevent_env; int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...); void kobject_put(struct kobject *); -char *kobject_name(const struct kobject *kobj); +const char *kobject_name(const struct kobject *kobj); char *kobject_get_path(struct kobject *kobj, gfp_t gfp_mask); struct kobject * kobject_create_and_add(const char *, struct kobject *);