The only slightly tricky merge conflict was the netdevsim because the mutex locking fix overlapped a lot of driver reload reorganization. The rest were (relatively) trivial in nature.
Showing the changes to include/linux (20 of 623 files). Show all
Unified · Split
| @@ -13,6 +13,7 @@ · 12 unmodified lines | |||
| 13 | #include <linux/completion.h> | 13 | #include <linux/completion.h> |
| 14 | #include <linux/kobject.h> | 14 | #include <linux/kobject.h> |
| 15 | #include <linux/notifier.h> | 15 | #include <linux/notifier.h> |
| 16 | #include <linux/pm_qos.h> | ||
| 16 | #include <linux/spinlock.h> | 17 | #include <linux/spinlock.h> |
| 17 | #include <linux/sysfs.h> | 18 | #include <linux/sysfs.h> |
| 18 | 19 | ||
| @@ -76,8 +77,10 @@ struct cpufreq_policy { · 57 unmodified lines | |||
| 76 | struct work_struct update; /* if update_policy() needs to be | 77 | struct work_struct update; /* if update_policy() needs to be |
| 77 | * called, but you're in IRQ context */ | 78 | * called, but you're in IRQ context */ |
| 78 | 79 | ||
| 79 | struct dev_pm_qos_request *min_freq_req; | 80 | struct freq_constraints constraints; |
| 80 | struct dev_pm_qos_request *max_freq_req; | 81 | struct freq_qos_request *min_freq_req; |
| 82 | struct freq_qos_request *max_freq_req; | ||
| 83 | |||
| 81 | struct cpufreq_frequency_table *freq_table; | 84 | struct cpufreq_frequency_table *freq_table; |
| 82 | enum cpufreq_table_sorting freq_table_sorted; | 85 | enum cpufreq_table_sorting freq_table_sorted; |
| 83 | 86 | ||
| @@ -204,6 +204,12 @@ static inline int ddebug_dyndbg_module_param_cb(char *param, char *val, · 203 unmodified lines | |||
| 204 | do { if (0) printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__); } while (0) | 204 | do { if (0) printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__); } while (0) |
| 205 | #define dynamic_dev_dbg(dev, fmt, ...) \ | 205 | #define dynamic_dev_dbg(dev, fmt, ...) \ |
| 206 | do { if (0) dev_printk(KERN_DEBUG, dev, fmt, ##__VA_ARGS__); } while (0) | 206 | do { if (0) dev_printk(KERN_DEBUG, dev, fmt, ##__VA_ARGS__); } while (0) |
| 207 | #define dynamic_hex_dump(prefix_str, prefix_type, rowsize, \ | ||
| 208 | groupsize, buf, len, ascii) \ | ||
| 209 | do { if (0) \ | ||
| 210 | print_hex_dump(KERN_DEBUG, prefix_str, prefix_type, \ | ||
| 211 | rowsize, groupsize, buf, len, ascii); \ | ||
| 212 | } while (0) | ||
| 207 | #endif | 213 | #endif |
| 208 | 214 | ||
| 209 | #endif | 215 | #endif |
| @@ -1579,9 +1579,22 @@ char *efi_convert_cmdline(efi_system_table_t *sys_table_arg, · 1578 unmodified lines | |||
| 1579 | efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg, | 1579 | efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg, |
| 1580 | struct efi_boot_memmap *map); | 1580 | struct efi_boot_memmap *map); |
| 1581 | 1581 | ||
| 1582 | efi_status_t efi_low_alloc_above(efi_system_table_t *sys_table_arg, | ||
| 1583 | unsigned long size, unsigned long align, | ||
| 1584 | unsigned long *addr, unsigned long min); | ||
| 1585 | |||
| 1586 | static inline | ||
| 1582 | efi_status_t efi_low_alloc(efi_system_table_t *sys_table_arg, | 1587 | efi_status_t efi_low_alloc(efi_system_table_t *sys_table_arg, |
| 1583 | unsigned long size, unsigned long align, | 1588 | unsigned long size, unsigned long align, |
| 1584 | unsigned long *addr); | 1589 | unsigned long *addr) |
| 1590 | { | ||
| 1591 | /* | ||
| 1592 | * Don't allocate at 0x0. It will confuse code that | ||
| 1593 | * checks pointers against NULL. Skip the first 8 | ||
| 1594 | * bytes so we start at a nice even number. | ||
| 1595 | */ | ||
| 1596 | return efi_low_alloc_above(sys_table_arg, size, align, addr, 0x8); | ||
| 1597 | } | ||
| 1585 | 1598 | ||
| 1586 | efi_status_t efi_high_alloc(efi_system_table_t *sys_table_arg, | 1599 | efi_status_t efi_high_alloc(efi_system_table_t *sys_table_arg, |
| 1587 | unsigned long size, unsigned long align, | 1600 | unsigned long size, unsigned long align, |
| @@ -1592,7 +1605,8 @@ efi_status_t efi_relocate_kernel(efi_system_table_t *sys_table_arg, · 4 unmodified lines | |||
| 1592 | unsigned long image_size, | 1605 | unsigned long image_size, |
| 1593 | unsigned long alloc_size, | 1606 | unsigned long alloc_size, |
| 1594 | unsigned long preferred_addr, | 1607 | unsigned long preferred_addr, |
| 1595 | unsigned long alignment); | 1608 | unsigned long alignment, |
| 1609 | unsigned long min_addr); | ||
| 1596 | 1610 | ||
| 1597 | efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, | 1611 | efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, |
| 1598 | efi_loaded_image_t *image, | 1612 | efi_loaded_image_t *image, |
| @@ -18,8 +18,6 @@ extern struct module __this_module; · 17 unmodified lines | |||
| 18 | #define THIS_MODULE ((struct module *)0) | 18 | #define THIS_MODULE ((struct module *)0) |
| 19 | #endif | 19 | #endif |
| 20 | 20 | ||
| 21 | #define NS_SEPARATOR "." | ||
| 22 | |||
| 23 | #ifdef CONFIG_MODVERSIONS | 21 | #ifdef CONFIG_MODVERSIONS |
| 24 | /* Mark the CRC weak since genksyms apparently decides not to | 22 | /* Mark the CRC weak since genksyms apparently decides not to |
| 25 | * generate a checksums for some symbols */ | 23 | * generate a checksums for some symbols */ |
| @@ -48,11 +46,11 @@ extern struct module __this_module; · 22 unmodified lines | |||
| 48 | * absolute relocations that require runtime processing on relocatable | 46 | * absolute relocations that require runtime processing on relocatable |
| 49 | * kernels. | 47 | * kernels. |
| 50 | */ | 48 | */ |
| 51 | #define __KSYMTAB_ENTRY_NS(sym, sec, ns) \ | 49 | #define __KSYMTAB_ENTRY_NS(sym, sec) \ |
| 52 | __ADDRESSABLE(sym) \ | 50 | __ADDRESSABLE(sym) \ |
| 53 | asm(" .section \"___ksymtab" sec "+" #sym "\", \"a\" \n" \ | 51 | asm(" .section \"___ksymtab" sec "+" #sym "\", \"a\" \n" \ |
| 54 | " .balign 4 \n" \ | 52 | " .balign 4 \n" \ |
| 55 | "__ksymtab_" #ns NS_SEPARATOR #sym ": \n" \ | 53 | "__ksymtab_" #sym ": \n" \ |
| 56 | " .long " #sym "- . \n" \ | 54 | " .long " #sym "- . \n" \ |
| 57 | " .long __kstrtab_" #sym "- . \n" \ | 55 | " .long __kstrtab_" #sym "- . \n" \ |
| 58 | " .long __kstrtabns_" #sym "- . \n" \ | 56 | " .long __kstrtabns_" #sym "- . \n" \ |
| @@ -74,16 +72,14 @@ struct kernel_symbol { · 15 unmodified lines | |||
| 74 | int namespace_offset; | 72 | int namespace_offset; |
| 75 | }; | 73 | }; |
| 76 | #else | 74 | #else |
| 77 | #define __KSYMTAB_ENTRY_NS(sym, sec, ns) \ | 75 | #define __KSYMTAB_ENTRY_NS(sym, sec) \ |
| 78 | static const struct kernel_symbol __ksymtab_##sym##__##ns \ | 76 | static const struct kernel_symbol __ksymtab_##sym \ |
| 79 | asm("__ksymtab_" #ns NS_SEPARATOR #sym) \ | ||
| 80 | __attribute__((section("___ksymtab" sec "+" #sym), used)) \ | 77 | __attribute__((section("___ksymtab" sec "+" #sym), used)) \ |
| 81 | __aligned(sizeof(void *)) \ | 78 | __aligned(sizeof(void *)) \ |
| 82 | = { (unsigned long)&sym, __kstrtab_##sym, __kstrtabns_##sym } | 79 | = { (unsigned long)&sym, __kstrtab_##sym, __kstrtabns_##sym } |
| 83 | 80 | ||
| 84 | #define __KSYMTAB_ENTRY(sym, sec) \ | 81 | #define __KSYMTAB_ENTRY(sym, sec) \ |
| 85 | static const struct kernel_symbol __ksymtab_##sym \ | 82 | static const struct kernel_symbol __ksymtab_##sym \ |
| 86 | asm("__ksymtab_" #sym) \ | ||
| 87 | __attribute__((section("___ksymtab" sec "+" #sym), used)) \ | 83 | __attribute__((section("___ksymtab" sec "+" #sym), used)) \ |
| 88 | __aligned(sizeof(void *)) \ | 84 | __aligned(sizeof(void *)) \ |
| 89 | = { (unsigned long)&sym, __kstrtab_##sym, NULL } | 85 | = { (unsigned long)&sym, __kstrtab_##sym, NULL } |
| @@ -115,7 +111,7 @@ struct kernel_symbol { · 25 unmodified lines | |||
| 115 | static const char __kstrtabns_##sym[] \ | 111 | static const char __kstrtabns_##sym[] \ |
| 116 | __attribute__((section("__ksymtab_strings"), used, aligned(1))) \ | 112 | __attribute__((section("__ksymtab_strings"), used, aligned(1))) \ |
| 117 | = #ns; \ | 113 | = #ns; \ |
| 118 | __KSYMTAB_ENTRY_NS(sym, sec, ns) | 114 | __KSYMTAB_ENTRY_NS(sym, sec) |
| 119 | 115 | ||
| 120 | #define ___EXPORT_SYMBOL(sym, sec) \ | 116 | #define ___EXPORT_SYMBOL(sym, sec) \ |
| 121 | ___export_symbol_common(sym, sec); \ | 117 | ___export_symbol_common(sym, sec); \ |
| @@ -1103,7 +1103,6 @@ static inline void bpf_get_prog_name(const struct bpf_prog *prog, char *sym) · 1102 unmodified lines | |||
| 1103 | 1103 | ||
| 1104 | #endif /* CONFIG_BPF_JIT */ | 1104 | #endif /* CONFIG_BPF_JIT */ |
| 1105 | 1105 | ||
| 1106 | void bpf_prog_kallsyms_del_subprogs(struct bpf_prog *fp); | ||
| 1107 | void bpf_prog_kallsyms_del_all(struct bpf_prog *fp); | 1106 | void bpf_prog_kallsyms_del_all(struct bpf_prog *fp); |
| 1108 | 1107 | ||
| 1109 | #define BPF_ANC BIT(15) | 1108 | #define BPF_ANC BIT(15) |
| @@ -325,6 +325,29 @@ static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags) · 324 unmodified lines | |||
| 325 | return !!(gfp_flags & __GFP_DIRECT_RECLAIM); | 325 | return !!(gfp_flags & __GFP_DIRECT_RECLAIM); |
| 326 | } | 326 | } |
| 327 | 327 | ||
| 328 | /** | ||
| 329 | * gfpflags_normal_context - is gfp_flags a normal sleepable context? | ||
| 330 | * @gfp_flags: gfp_flags to test | ||
| 331 | * | ||
| 332 | * Test whether @gfp_flags indicates that the allocation is from the | ||
| 333 | * %current context and allowed to sleep. | ||
| 334 | * | ||
| 335 | * An allocation being allowed to block doesn't mean it owns the %current | ||
| 336 | * context. When direct reclaim path tries to allocate memory, the | ||
| 337 | * allocation context is nested inside whatever %current was doing at the | ||
| 338 | * time of the original allocation. The nested allocation may be allowed | ||
| 339 | * to block but modifying anything %current owns can corrupt the outer | ||
| 340 | * context's expectations. | ||
| 341 | * | ||
| 342 | * %true result from this function indicates that the allocation context | ||
| 343 | * can sleep and use anything that's associated with %current. | ||
| 344 | */ | ||
| 345 | static inline bool gfpflags_normal_context(const gfp_t gfp_flags) | ||
| 346 | { | ||
| 347 | return (gfp_flags & (__GFP_DIRECT_RECLAIM | __GFP_MEMALLOC)) == | ||
| 348 | __GFP_DIRECT_RECLAIM; | ||
| 349 | } | ||
| 350 | |||
| 328 | #ifdef CONFIG_HIGHMEM | 351 | #ifdef CONFIG_HIGHMEM |
| 329 | #define OPT_ZONE_HIGHMEM ZONE_HIGHMEM | 352 | #define OPT_ZONE_HIGHMEM ZONE_HIGHMEM |
| 330 | #else | 353 | #else |
| @@ -29,7 +29,6 @@ struct macvlan_dev { · 28 unmodified lines | |||
| 29 | netdev_features_t set_features; | 29 | netdev_features_t set_features; |
| 30 | enum macvlan_mode mode; | 30 | enum macvlan_mode mode; |
| 31 | u16 flags; | 31 | u16 flags; |
| 32 | int nest_level; | ||
| 33 | unsigned int macaddr_count; | 32 | unsigned int macaddr_count; |
| 34 | #ifdef CONFIG_NET_POLL_CONTROLLER | 33 | #ifdef CONFIG_NET_POLL_CONTROLLER |
| 35 | struct netpoll *netpoll; | 34 | struct netpoll *netpoll; |
| @@ -223,6 +223,7 @@ struct team { · 222 unmodified lines | |||
| 223 | atomic_t count_pending; | 223 | atomic_t count_pending; |
| 224 | struct delayed_work dw; | 224 | struct delayed_work dw; |
| 225 | } mcast_rejoin; | 225 | } mcast_rejoin; |
| 226 | struct lock_class_key team_lock_key; | ||
| 226 | long mode_priv[TEAM_MODE_PRIV_LONGS]; | 227 | long mode_priv[TEAM_MODE_PRIV_LONGS]; |
| 227 | }; | 228 | }; |
| 228 | 229 | ||
| @@ -182,7 +182,6 @@ struct vlan_dev_priv { · 181 unmodified lines | |||
| 182 | #ifdef CONFIG_NET_POLL_CONTROLLER | 182 | #ifdef CONFIG_NET_POLL_CONTROLLER |
| 183 | struct netpoll *netpoll; | 183 | struct netpoll *netpoll; |
| 184 | #endif | 184 | #endif |
| 185 | unsigned int nest_level; | ||
| 186 | }; | 185 | }; |
| 187 | 186 | ||
| 188 | static inline struct vlan_dev_priv *vlan_dev_priv(const struct net_device *dev) | 187 | static inline struct vlan_dev_priv *vlan_dev_priv(const struct net_device *dev) |
| @@ -221,11 +220,6 @@ extern void vlan_vids_del_by_dev(struct net_device *dev, · 32 unmodified lines | |||
| 221 | 220 | ||
| 222 | extern bool vlan_uses_dev(const struct net_device *dev); | 221 | extern bool vlan_uses_dev(const struct net_device *dev); |
| 223 | 222 | ||
| 224 | static inline int vlan_get_encap_level(struct net_device *dev) | ||
| 225 | { | ||
| 226 | BUG_ON(!is_vlan_dev(dev)); | ||
| 227 | return vlan_dev_priv(dev)->nest_level; | ||
| 228 | } | ||
| 229 | #else | 223 | #else |
| 230 | static inline struct net_device * | 224 | static inline struct net_device * |
| 231 | __vlan_find_dev_deep_rcu(struct net_device *real_dev, | 225 | __vlan_find_dev_deep_rcu(struct net_device *real_dev, |
| @@ -295,11 +289,6 @@ static inline bool vlan_uses_dev(const struct net_device *dev) · 63 unmodified lines | |||
| 295 | { | 289 | { |
| 296 | return false; | 290 | return false; |
| 297 | } | 291 | } |
| 298 | static inline int vlan_get_encap_level(struct net_device *dev) | ||
| 299 | { | ||
| 300 | BUG(); | ||
| 301 | return 0; | ||
| 302 | } | ||
| 303 | #endif | 292 | #endif |
| 304 | 293 | ||
| 305 | /** | 294 | /** |
| @@ -1545,9 +1545,8 @@ struct mlx5_ifc_extended_dest_format_bits { · 1544 unmodified lines | |||
| 1545 | }; | 1545 | }; |
| 1546 | 1546 | ||
| 1547 | union mlx5_ifc_dest_format_struct_flow_counter_list_auto_bits { | 1547 | union mlx5_ifc_dest_format_struct_flow_counter_list_auto_bits { |
| 1548 | struct mlx5_ifc_dest_format_struct_bits dest_format_struct; | 1548 | struct mlx5_ifc_extended_dest_format_bits extended_dest_format; |
| 1549 | struct mlx5_ifc_flow_counter_list_bits flow_counter_list; | 1549 | struct mlx5_ifc_flow_counter_list_bits flow_counter_list; |
| 1550 | u8 reserved_at_0[0x40]; | ||
| 1551 | }; | 1550 | }; |
| 1552 | 1551 | ||
| 1553 | struct mlx5_ifc_fte_match_param_bits { | 1552 | struct mlx5_ifc_fte_match_param_bits { |
| @@ -1431,7 +1431,6 @@ struct net_device_ops { · 1430 unmodified lines | |||
| 1431 | void (*ndo_dfwd_del_station)(struct net_device *pdev, | 1431 | void (*ndo_dfwd_del_station)(struct net_device *pdev, |
| 1432 | void *priv); | 1432 | void *priv); |
| 1433 | 1433 | ||
| 1434 | int (*ndo_get_lock_subclass)(struct net_device *dev); | ||
| 1435 | int (*ndo_set_tx_maxrate)(struct net_device *dev, | 1434 | int (*ndo_set_tx_maxrate)(struct net_device *dev, |
| 1436 | int queue_index, | 1435 | int queue_index, |
| 1437 | u32 maxrate); | 1436 | u32 maxrate); |
| @@ -1659,6 +1658,8 @@ enum netdev_priv_flags { · 221 unmodified lines | |||
| 1659 | * @perm_addr: Permanent hw address | 1658 | * @perm_addr: Permanent hw address |
| 1660 | * @addr_assign_type: Hw address assignment type | 1659 | * @addr_assign_type: Hw address assignment type |
| 1661 | * @addr_len: Hardware address length | 1660 | * @addr_len: Hardware address length |
| 1661 | * @upper_level: Maximum depth level of upper devices. | ||
| 1662 | * @lower_level: Maximum depth level of lower devices. | ||
| 1662 | * @neigh_priv_len: Used in neigh_alloc() | 1663 | * @neigh_priv_len: Used in neigh_alloc() |
| 1663 | * @dev_id: Used to differentiate devices that share | 1664 | * @dev_id: Used to differentiate devices that share |
| 1664 | * the same link layer address | 1665 | * the same link layer address |
| @@ -1768,9 +1769,13 @@ enum netdev_priv_flags { · 103 unmodified lines | |||
| 1768 | * @phydev: Physical device may attach itself | 1769 | * @phydev: Physical device may attach itself |
| 1769 | * for hardware timestamping | 1770 | * for hardware timestamping |
| 1770 | * @sfp_bus: attached &struct sfp_bus structure. | 1771 | * @sfp_bus: attached &struct sfp_bus structure. |
| 1771 | * | 1772 | * @qdisc_tx_busylock_key: lockdep class annotating Qdisc->busylock |
| 1772 | * @qdisc_tx_busylock: lockdep class annotating Qdisc->busylock spinlock | 1773 | spinlock |
| 1773 | * @qdisc_running_key: lockdep class annotating Qdisc->running seqcount | 1774 | * @qdisc_running_key: lockdep class annotating Qdisc->running seqcount |
| 1775 | * @qdisc_xmit_lock_key: lockdep class annotating | ||
| 1776 | * netdev_queue->_xmit_lock spinlock | ||
| 1777 | * @addr_list_lock_key: lockdep class annotating | ||
| 1778 | * net_device->addr_list_lock spinlock | ||
| 1774 | * | 1779 | * |
| 1775 | * @proto_down: protocol port state information can be sent to the | 1780 | * @proto_down: protocol port state information can be sent to the |
| 1776 | * switch driver and used to set the phys state of the | 1781 | * switch driver and used to set the phys state of the |
| @@ -1885,6 +1890,8 @@ struct net_device { · 108 unmodified lines | |||
| 1885 | unsigned char perm_addr[MAX_ADDR_LEN]; | 1890 | unsigned char perm_addr[MAX_ADDR_LEN]; |
| 1886 | unsigned char addr_assign_type; | 1891 | unsigned char addr_assign_type; |
| 1887 | unsigned char addr_len; | 1892 | unsigned char addr_len; |
| 1893 | unsigned char upper_level; | ||
| 1894 | unsigned char lower_level; | ||
| 1888 | unsigned short neigh_priv_len; | 1895 | unsigned short neigh_priv_len; |
| 1889 | unsigned short dev_id; | 1896 | unsigned short dev_id; |
| 1890 | unsigned short dev_port; | 1897 | unsigned short dev_port; |
| @@ -2055,8 +2062,10 @@ struct net_device { · 164 unmodified lines | |||
| 2055 | #endif | 2062 | #endif |
| 2056 | struct phy_device *phydev; | 2063 | struct phy_device *phydev; |
| 2057 | struct sfp_bus *sfp_bus; | 2064 | struct sfp_bus *sfp_bus; |
| 2058 | struct lock_class_key *qdisc_tx_busylock; | 2065 | struct lock_class_key qdisc_tx_busylock_key; |
| 2059 | struct lock_class_key *qdisc_running_key; | 2066 | struct lock_class_key qdisc_running_key; |
| 2067 | struct lock_class_key qdisc_xmit_lock_key; | ||
| 2068 | struct lock_class_key addr_list_lock_key; | ||
| 2060 | bool proto_down; | 2069 | bool proto_down; |
| 2061 | unsigned wol_enabled:1; | 2070 | unsigned wol_enabled:1; |
| 2062 | }; | 2071 | }; |
| @@ -2134,23 +2143,6 @@ static inline void netdev_for_each_tx_queue(struct net_device *dev, · 71 unmodified lines | |||
| 2134 | f(dev, &dev->_tx[i], arg); | 2143 | f(dev, &dev->_tx[i], arg); |
| 2135 | } | 2144 | } |
| 2136 | 2145 | ||
| 2137 | #define netdev_lockdep_set_classes(dev) \ | ||
| 2138 | { \ | ||
| 2139 | static struct lock_class_key qdisc_tx_busylock_key; \ | ||
| 2140 | static struct lock_class_key qdisc_running_key; \ | ||
| 2141 | static struct lock_class_key qdisc_xmit_lock_key; \ | ||
| 2142 | static struct lock_class_key dev_addr_list_lock_key; \ | ||
| 2143 | unsigned int i; \ | ||
| 2144 | \ | ||
| 2145 | (dev)->qdisc_tx_busylock = &qdisc_tx_busylock_key; \ | ||
| 2146 | (dev)->qdisc_running_key = &qdisc_running_key; \ | ||
| 2147 | lockdep_set_class(&(dev)->addr_list_lock, \ | ||
| 2148 | &dev_addr_list_lock_key); \ | ||
| 2149 | for (i = 0; i < (dev)->num_tx_queues; i++) \ | ||
| 2150 | lockdep_set_class(&(dev)->_tx[i]._xmit_lock, \ | ||
| 2151 | &qdisc_xmit_lock_key); \ | ||
| 2152 | } | ||
| 2153 | |||
| 2154 | u16 netdev_pick_tx(struct net_device *dev, struct sk_buff *skb, | 2146 | u16 netdev_pick_tx(struct net_device *dev, struct sk_buff *skb, |
| 2155 | struct net_device *sb_dev); | 2147 | struct net_device *sb_dev); |
| 2156 | struct netdev_queue *netdev_core_pick_tx(struct net_device *dev, | 2148 | struct netdev_queue *netdev_core_pick_tx(struct net_device *dev, |
| @@ -3155,6 +3147,7 @@ static inline void netif_stop_queue(struct net_device *dev) · 998 unmodified lines | |||
| 3155 | } | 3147 | } |
| 3156 | 3148 | ||
| 3157 | void netif_tx_stop_all_queues(struct net_device *dev); | 3149 | void netif_tx_stop_all_queues(struct net_device *dev); |
| 3150 | void netdev_update_lockdep_key(struct net_device *dev); | ||
| 3158 | 3151 | ||
| 3159 | static inline bool netif_tx_queue_stopped(const struct netdev_queue *dev_queue) | 3152 | static inline bool netif_tx_queue_stopped(const struct netdev_queue *dev_queue) |
| 3160 | { | 3153 | { |
| @@ -4072,16 +4065,6 @@ static inline void netif_addr_lock(struct net_device *dev) · 911 unmodified lines | |||
| 4072 | spin_lock(&dev->addr_list_lock); | 4065 | spin_lock(&dev->addr_list_lock); |
| 4073 | } | 4066 | } |
| 4074 | 4067 | ||
| 4075 | static inline void netif_addr_lock_nested(struct net_device *dev) | ||
| 4076 | { | ||
| 4077 | int subclass = SINGLE_DEPTH_NESTING; | ||
| 4078 | |||
| 4079 | if (dev->netdev_ops->ndo_get_lock_subclass) | ||
| 4080 | subclass = dev->netdev_ops->ndo_get_lock_subclass(dev); | ||
| 4081 | |||
| 4082 | spin_lock_nested(&dev->addr_list_lock, subclass); | ||
| 4083 | } | ||
| 4084 | |||
| 4085 | static inline void netif_addr_lock_bh(struct net_device *dev) | 4068 | static inline void netif_addr_lock_bh(struct net_device *dev) |
| 4086 | { | 4069 | { |
| 4087 | spin_lock_bh(&dev->addr_list_lock); | 4070 | spin_lock_bh(&dev->addr_list_lock); |
| @@ -4342,6 +4325,16 @@ int netdev_master_upper_dev_link(struct net_device *dev, · 254 unmodified lines | |||
| 4342 | struct netlink_ext_ack *extack); | 4325 | struct netlink_ext_ack *extack); |
| 4343 | void netdev_upper_dev_unlink(struct net_device *dev, | 4326 | void netdev_upper_dev_unlink(struct net_device *dev, |
| 4344 | struct net_device *upper_dev); | 4327 | struct net_device *upper_dev); |
| 4328 | int netdev_adjacent_change_prepare(struct net_device *old_dev, | ||
| 4329 | struct net_device *new_dev, | ||
| 4330 | struct net_device *dev, | ||
| 4331 | struct netlink_ext_ack *extack); | ||
| 4332 | void netdev_adjacent_change_commit(struct net_device *old_dev, | ||
| 4333 | struct net_device *new_dev, | ||
| 4334 | struct net_device *dev); | ||
| 4335 | void netdev_adjacent_change_abort(struct net_device *old_dev, | ||
| 4336 | struct net_device *new_dev, | ||
| 4337 | struct net_device *dev); | ||
| 4345 | void netdev_adjacent_rename_links(struct net_device *dev, char *oldname); | 4338 | void netdev_adjacent_rename_links(struct net_device *dev, char *oldname); |
| 4346 | void *netdev_lower_dev_get_private(struct net_device *dev, | 4339 | void *netdev_lower_dev_get_private(struct net_device *dev, |
| 4347 | struct net_device *lower_dev); | 4340 | struct net_device *lower_dev); |
| @@ -4353,7 +4346,6 @@ void netdev_lower_state_changed(struct net_device *lower_dev, · 5 unmodified lines | |||
| 4353 | extern u8 netdev_rss_key[NETDEV_RSS_KEY_LEN] __read_mostly; | 4346 | extern u8 netdev_rss_key[NETDEV_RSS_KEY_LEN] __read_mostly; |
| 4354 | void netdev_rss_key_fill(void *buffer, size_t len); | 4347 | void netdev_rss_key_fill(void *buffer, size_t len); |
| 4355 | 4348 | ||
| 4356 | int dev_get_nest_level(struct net_device *dev); | ||
| 4357 | int skb_checksum_help(struct sk_buff *skb); | 4349 | int skb_checksum_help(struct sk_buff *skb); |
| 4358 | int skb_crc32c_csum_help(struct sk_buff *skb); | 4350 | int skb_crc32c_csum_help(struct sk_buff *skb); |
| 4359 | int skb_csum_hwoffload_help(struct sk_buff *skb, | 4351 | int skb_csum_hwoffload_help(struct sk_buff *skb, |
| @@ -292,7 +292,7 @@ struct pmu { · 291 unmodified lines | |||
| 292 | * -EBUSY -- @event is for this PMU but PMU temporarily unavailable | 292 | * -EBUSY -- @event is for this PMU but PMU temporarily unavailable |
| 293 | * -EINVAL -- @event is for this PMU but @event is not valid | 293 | * -EINVAL -- @event is for this PMU but @event is not valid |
| 294 | * -EOPNOTSUPP -- @event is for this PMU, @event is valid, but not supported | 294 | * -EOPNOTSUPP -- @event is for this PMU, @event is valid, but not supported |
| 295 | * -EACCESS -- @event is for this PMU, @event is valid, but no privilidges | 295 | * -EACCES -- @event is for this PMU, @event is valid, but no privileges |
| 296 | * | 296 | * |
| 297 | * 0 -- @event is for this PMU and valid | 297 | * 0 -- @event is for this PMU and valid |
| 298 | * | 298 | * |
| @@ -51,7 +51,10 @@ struct sdma_script_start_addrs { · 50 unmodified lines | |||
| 51 | /* End of v2 array */ | 51 | /* End of v2 array */ |
| 52 | s32 zcanfd_2_mcu_addr; | 52 | s32 zcanfd_2_mcu_addr; |
| 53 | s32 zqspi_2_mcu_addr; | 53 | s32 zqspi_2_mcu_addr; |
| 54 | s32 mcu_2_ecspi_addr; | ||
| 54 | /* End of v3 array */ | 55 | /* End of v3 array */ |
| 56 | s32 mcu_2_zqspi_addr; | ||
| 57 | /* End of v4 array */ | ||
| 55 | }; | 58 | }; |
| 56 | 59 | ||
| 57 | /** | 60 | /** |
| @@ -34,8 +34,6 @@ enum pm_qos_flags_status { · 33 unmodified lines | |||
| 34 | #define PM_QOS_RESUME_LATENCY_NO_CONSTRAINT PM_QOS_LATENCY_ANY | 34 | #define PM_QOS_RESUME_LATENCY_NO_CONSTRAINT PM_QOS_LATENCY_ANY |
| 35 | #define PM_QOS_RESUME_LATENCY_NO_CONSTRAINT_NS PM_QOS_LATENCY_ANY_NS | 35 | #define PM_QOS_RESUME_LATENCY_NO_CONSTRAINT_NS PM_QOS_LATENCY_ANY_NS |
| 36 | #define PM_QOS_LATENCY_TOLERANCE_DEFAULT_VALUE 0 | 36 | #define PM_QOS_LATENCY_TOLERANCE_DEFAULT_VALUE 0 |
| 37 | #define PM_QOS_MIN_FREQUENCY_DEFAULT_VALUE 0 | ||
| 38 | #define PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE (-1) | ||
| 39 | #define PM_QOS_LATENCY_TOLERANCE_NO_CONSTRAINT (-1) | 37 | #define PM_QOS_LATENCY_TOLERANCE_NO_CONSTRAINT (-1) |
| 40 | 38 | ||
| 41 | #define PM_QOS_FLAG_NO_POWER_OFF (1 << 0) | 39 | #define PM_QOS_FLAG_NO_POWER_OFF (1 << 0) |
| @@ -54,8 +52,6 @@ struct pm_qos_flags_request { · 12 unmodified lines | |||
| 54 | enum dev_pm_qos_req_type { | 52 | enum dev_pm_qos_req_type { |
| 55 | DEV_PM_QOS_RESUME_LATENCY = 1, | 53 | DEV_PM_QOS_RESUME_LATENCY = 1, |
| 56 | DEV_PM_QOS_LATENCY_TOLERANCE, | 54 | DEV_PM_QOS_LATENCY_TOLERANCE, |
| 57 | DEV_PM_QOS_MIN_FREQUENCY, | ||
| 58 | DEV_PM_QOS_MAX_FREQUENCY, | ||
| 59 | DEV_PM_QOS_FLAGS, | 55 | DEV_PM_QOS_FLAGS, |
| 60 | }; | 56 | }; |
| 61 | 57 | ||
| @@ -97,14 +93,10 @@ struct pm_qos_flags { · 35 unmodified lines | |||
| 97 | struct dev_pm_qos { | 93 | struct dev_pm_qos { |
| 98 | struct pm_qos_constraints resume_latency; | 94 | struct pm_qos_constraints resume_latency; |
| 99 | struct pm_qos_constraints latency_tolerance; | 95 | struct pm_qos_constraints latency_tolerance; |
| 100 | struct pm_qos_constraints min_frequency; | ||
| 101 | struct pm_qos_constraints max_frequency; | ||
| 102 | struct pm_qos_flags flags; | 96 | struct pm_qos_flags flags; |
| 103 | struct dev_pm_qos_request *resume_latency_req; | 97 | struct dev_pm_qos_request *resume_latency_req; |
| 104 | struct dev_pm_qos_request *latency_tolerance_req; | 98 | struct dev_pm_qos_request *latency_tolerance_req; |
| 105 | struct dev_pm_qos_request *flags_req; | 99 | struct dev_pm_qos_request *flags_req; |
| 106 | struct dev_pm_qos_request *min_frequency_req; | ||
| 107 | struct dev_pm_qos_request *max_frequency_req; | ||
| 108 | }; | 100 | }; |
| 109 | 101 | ||
| 110 | /* Action requested to pm_qos_update_target */ | 102 | /* Action requested to pm_qos_update_target */ |
| @@ -199,10 +191,6 @@ static inline s32 dev_pm_qos_read_value(struct device *dev, · 88 unmodified lines | |||
| 199 | switch (type) { | 191 | switch (type) { |
| 200 | case DEV_PM_QOS_RESUME_LATENCY: | 192 | case DEV_PM_QOS_RESUME_LATENCY: |
| 201 | return PM_QOS_RESUME_LATENCY_NO_CONSTRAINT; | 193 | return PM_QOS_RESUME_LATENCY_NO_CONSTRAINT; |
| 202 | case DEV_PM_QOS_MIN_FREQUENCY: | ||
| 203 | return PM_QOS_MIN_FREQUENCY_DEFAULT_VALUE; | ||
| 204 | case DEV_PM_QOS_MAX_FREQUENCY: | ||
| 205 | return PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE; | ||
| 206 | default: | 194 | default: |
| 207 | WARN_ON(1); | 195 | WARN_ON(1); |
| 208 | return 0; | 196 | return 0; |
| @@ -267,4 +255,48 @@ static inline s32 dev_pm_qos_raw_resume_latency(struct device *dev) · 58 unmodified lines | |||
| 267 | } | 255 | } |
| 268 | #endif | 256 | #endif |
| 269 | 257 | ||
| 258 | #define FREQ_QOS_MIN_DEFAULT_VALUE 0 | ||
| 259 | #define FREQ_QOS_MAX_DEFAULT_VALUE (-1) | ||
| 260 | |||
| 261 | enum freq_qos_req_type { | ||
| 262 | FREQ_QOS_MIN = 1, | ||
| 263 | FREQ_QOS_MAX, | ||
| 264 | }; | ||
| 265 | |||
| 266 | struct freq_constraints { | ||
| 267 | struct pm_qos_constraints min_freq; | ||
| 268 | struct blocking_notifier_head min_freq_notifiers; | ||
| 269 | struct pm_qos_constraints max_freq; | ||
| 270 | struct blocking_notifier_head max_freq_notifiers; | ||
| 271 | }; | ||
| 272 | |||
| 273 | struct freq_qos_request { | ||
| 274 | enum freq_qos_req_type type; | ||
| 275 | struct plist_node pnode; | ||
| 276 | struct freq_constraints *qos; | ||
| 277 | }; | ||
| 278 | |||
| 279 | static inline int freq_qos_request_active(struct freq_qos_request *req) | ||
| 280 | { | ||
| 281 | return !IS_ERR_OR_NULL(req->qos); | ||
| 282 | } | ||
| 283 | |||
| 284 | void freq_constraints_init(struct freq_constraints *qos); | ||
| 285 | |||
| 286 | s32 freq_qos_read_value(struct freq_constraints *qos, | ||
| 287 | enum freq_qos_req_type type); | ||
| 288 | |||
| 289 | int freq_qos_add_request(struct freq_constraints *qos, | ||
| 290 | struct freq_qos_request *req, | ||
| 291 | enum freq_qos_req_type type, s32 value); | ||
| 292 | int freq_qos_update_request(struct freq_qos_request *req, s32 new_value); | ||
| 293 | int freq_qos_remove_request(struct freq_qos_request *req); | ||
| 294 | |||
| 295 | int freq_qos_add_notifier(struct freq_constraints *qos, | ||
| 296 | enum freq_qos_req_type type, | ||
| 297 | struct notifier_block *notifier); | ||
| 298 | int freq_qos_remove_notifier(struct freq_constraints *qos, | ||
| 299 | enum freq_qos_req_type type, | ||
| 300 | struct notifier_block *notifier); | ||
| 301 | |||
| 270 | #endif | 302 | #endif |
| @@ -105,6 +105,7 @@ enum lockdown_reason { · 104 unmodified lines | |||
| 105 | LOCKDOWN_NONE, | 105 | LOCKDOWN_NONE, |
| 106 | LOCKDOWN_MODULE_SIGNATURE, | 106 | LOCKDOWN_MODULE_SIGNATURE, |
| 107 | LOCKDOWN_DEV_MEM, | 107 | LOCKDOWN_DEV_MEM, |
| 108 | LOCKDOWN_EFI_TEST, | ||
| 108 | LOCKDOWN_KEXEC, | 109 | LOCKDOWN_KEXEC, |
| 109 | LOCKDOWN_HIBERNATION, | 110 | LOCKDOWN_HIBERNATION, |
| 110 | LOCKDOWN_PCI_ACCESS, | 111 | LOCKDOWN_PCI_ACCESS, |
| @@ -1354,7 +1354,8 @@ static inline __u32 skb_get_hash_flowi6(struct sk_buff *skb, const struct flowi6 · 1353 unmodified lines | |||
| 1354 | return skb->hash; | 1354 | return skb->hash; |
| 1355 | } | 1355 | } |
| 1356 | 1356 | ||
| 1357 | __u32 skb_get_hash_perturb(const struct sk_buff *skb, u32 perturb); | 1357 | __u32 skb_get_hash_perturb(const struct sk_buff *skb, |
| 1358 | const siphash_key_t *perturb); | ||
| 1358 | 1359 | ||
| 1359 | static inline __u32 skb_get_hash_raw(const struct sk_buff *skb) | 1360 | static inline __u32 skb_get_hash_raw(const struct sk_buff *skb) |
| 1360 | { | 1361 | { |
| @@ -1494,6 +1495,19 @@ static inline int skb_queue_empty(const struct sk_buff_head *list) · 133 unmodified lines | |||
| 1494 | return list->next == (const struct sk_buff *) list; | 1495 | return list->next == (const struct sk_buff *) list; |
| 1495 | } | 1496 | } |
| 1496 | 1497 | ||
| 1498 | /** | ||
| 1499 | * skb_queue_empty_lockless - check if a queue is empty | ||
| 1500 | * @list: queue head | ||
| 1501 | * | ||
| 1502 | * Returns true if the queue is empty, false otherwise. | ||
| 1503 | * This variant can be used in lockless contexts. | ||
| 1504 | */ | ||
| 1505 | static inline bool skb_queue_empty_lockless(const struct sk_buff_head *list) | ||
| 1506 | { | ||
| 1507 | return READ_ONCE(list->next) == (const struct sk_buff *) list; | ||
| 1508 | } | ||
| 1509 | |||
| 1510 | |||
| 1497 | /** | 1511 | /** |
| 1498 | * skb_queue_is_last - check if skb is the last entry in the queue | 1512 | * skb_queue_is_last - check if skb is the last entry in the queue |
| 1499 | * @list: queue head | 1513 | * @list: queue head |
| @@ -1847,9 +1861,11 @@ static inline void __skb_insert(struct sk_buff *newsk, · 347 unmodified lines | |||
| 1847 | struct sk_buff *prev, struct sk_buff *next, | 1861 | struct sk_buff *prev, struct sk_buff *next, |
| 1848 | struct sk_buff_head *list) | 1862 | struct sk_buff_head *list) |
| 1849 | { | 1863 | { |
| 1850 | newsk->next = next; | 1864 | /* see skb_queue_empty_lockless() for the opposite READ_ONCE() */ |
| 1851 | newsk->prev = prev; | 1865 | WRITE_ONCE(newsk->next, next); |
| 1852 | next->prev = prev->next = newsk; | 1866 | WRITE_ONCE(newsk->prev, prev); |
| 1867 | WRITE_ONCE(next->prev, newsk); | ||
| 1868 | WRITE_ONCE(prev->next, newsk); | ||
| 1853 | list->qlen++; | 1869 | list->qlen++; |
| 1854 | } | 1870 | } |
| 1855 | 1871 | ||
| @@ -1860,11 +1876,11 @@ static inline void __skb_queue_splice(const struct sk_buff_head *list, · 4 unmodified lines | |||
| 1860 | struct sk_buff *first = list->next; | 1876 | struct sk_buff *first = list->next; |
| 1861 | struct sk_buff *last = list->prev; | 1877 | struct sk_buff *last = list->prev; |
| 1862 | 1878 | ||
| 1863 | first->prev = prev; | 1879 | WRITE_ONCE(first->prev, prev); |
| 1864 | prev->next = first; | 1880 | WRITE_ONCE(prev->next, first); |
| 1865 | 1881 | ||
| 1866 | last->next = next; | 1882 | WRITE_ONCE(last->next, next); |
| 1867 | next->prev = last; | 1883 | WRITE_ONCE(next->prev, last); |
| 1868 | } | 1884 | } |
| 1869 | 1885 | ||
| 1870 | /** | 1886 | /** |
| @@ -2005,8 +2021,8 @@ static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list) · 134 unmodified lines | |||
| 2005 | next = skb->next; | 2021 | next = skb->next; |
| 2006 | prev = skb->prev; | 2022 | prev = skb->prev; |
| 2007 | skb->next = skb->prev = NULL; | 2023 | skb->next = skb->prev = NULL; |
| 2008 | next->prev = prev; | 2024 | WRITE_ONCE(next->prev, prev); |
| 2009 | prev->next = next; | 2025 | WRITE_ONCE(prev->next, next); |
| 2010 | } | 2026 | } |
| 2011 | 2027 | ||
| 2012 | /** | 2028 | /** |
| @@ -263,7 +263,7 @@ struct ucred { · 262 unmodified lines | |||
| 263 | #define PF_MAX AF_MAX | 263 | #define PF_MAX AF_MAX |
| 264 | 264 | ||
| 265 | /* Maximum queue length specifiable by listen. */ | 265 | /* Maximum queue length specifiable by listen. */ |
| 266 | #define SOMAXCONN 128 | 266 | #define SOMAXCONN 4096 |
| 267 | 267 | ||
| 268 | /* Flags we can use with send/ and recv. | 268 | /* Flags we can use with send/ and recv. |
| 269 | Added those for 1003.1g not all are supported yet | 269 | Added those for 1003.1g not all are supported yet |
| @@ -64,6 +64,11 @@ static inline int xprt_setup_backchannel(struct rpc_xprt *xprt, · 63 unmodified lines | |||
| 64 | return 0; | 64 | return 0; |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | static inline void xprt_destroy_backchannel(struct rpc_xprt *xprt, | ||
| 68 | unsigned int max_reqs) | ||
| 69 | { | ||
| 70 | } | ||
| 71 | |||
| 67 | static inline bool svc_is_backchannel(const struct svc_rqst *rqstp) | 72 | static inline bool svc_is_backchannel(const struct svc_rqst *rqstp) |
| 68 | { | 73 | { |
| 69 | return false; | 74 | return false; |
| @@ -196,9 +196,9 @@ struct bin_attribute { · 195 unmodified lines | |||
| 196 | .size = _size, \ | 196 | .size = _size, \ |
| 197 | } | 197 | } |
| 198 | 198 | ||
| 199 | #define __BIN_ATTR_WO(_name) { \ | 199 | #define __BIN_ATTR_WO(_name, _size) { \ |
| 200 | .attr = { .name = __stringify(_name), .mode = 0200 }, \ | 200 | .attr = { .name = __stringify(_name), .mode = 0200 }, \ |
| 201 | .store = _name##_store, \ | 201 | .write = _name##_write, \ |
| 202 | .size = _size, \ | 202 | .size = _size, \ |
| 203 | } | 203 | } |
| 204 | 204 | ||
| @@ -48,7 +48,6 @@ struct virtio_vsock_sock { · 47 unmodified lines | |||
| 48 | 48 | ||
| 49 | struct virtio_vsock_pkt { | 49 | struct virtio_vsock_pkt { |
| 50 | struct virtio_vsock_hdr hdr; | 50 | struct virtio_vsock_hdr hdr; |
| 51 | struct work_struct work; | ||
| 52 | struct list_head list; | 51 | struct list_head list; |
| 53 | /* socket refcnt not held, only use for cancellation */ | 52 | /* socket refcnt not held, only use for cancellation */ |
| 54 | struct vsock_sock *vsk; | 53 | struct vsock_sock *vsk; |