History

Merge branch 'kvm-tsx-ctrl' into HEAD

Paolo Bonzini committed 6 years ago

Commit 46f4f0a2 parents 14edff8 b07a5c5928 files · +13793 −4763Browse files

Showing the changes to include/linux (31 of 928 files). Show all

Unified · Split

31 files
  1. include/linux/bpf.h +2 −2
  2. include/linux/cpu.h +7 −23
  3. include/linux/cpufreq.h +5 −2
  4. include/linux/dynamic_debug.h +6 −0
  5. include/linux/efi.h +16 −2
  6. include/linux/export.h +5 −9
  7. include/linux/filter.h +0 −1
  8. include/linux/gfp.h +23 −0
  9. include/linux/idr.h +1 −1
  10. include/linux/if_macvlan.h +0 −1
  11. include/linux/if_team.h +1 −0
  12. include/linux/if_vlan.h +0 −11
  13. include/linux/kvm_host.h +7 −0
  14. include/linux/mlx5/mlx5_ifc.h +1 −2
  15. include/linux/mm.h +0 −5
  16. include/linux/mm_types.h +5 −0
  17. include/linux/netdevice.h +27 −34
  18. include/linux/page-flags.h +18 −2
  19. include/linux/perf_event.h +1 −1
  20. include/linux/platform_data/dma-imx-sdma.h +3 −0
  21. include/linux/pm_qos.h +44 −12
  22. include/linux/radix-tree.h +0 −18
  23. include/linux/reset-controller.h +2 −2
  24. include/linux/reset.h +1 −1
  25. include/linux/security.h +1 −0
  26. include/linux/skbuff.h +26 −10
  27. include/linux/skmsg.h +6 −3
  28. include/linux/socket.h +1 −1
  29. include/linux/sunrpc/bc_xprt.h +5 −0
  30. include/linux/sysfs.h +2 −2
  31. include/linux/virtio_vsock.h +0 −1
include/linux/bpf.h+2−2
@@ -656,11 +656,11 @@ void bpf_map_put_with_uref(struct bpf_map *map); · 655 unmodified lines
656656 void bpf_map_put(struct bpf_map *map);
657657 int bpf_map_charge_memlock(struct bpf_map *map, u32 pages);
658658 void bpf_map_uncharge_memlock(struct bpf_map *map, u32 pages);
659−int bpf_map_charge_init(struct bpf_map_memory *mem, size_t size);
659+int bpf_map_charge_init(struct bpf_map_memory *mem, u64 size);
660660 void bpf_map_charge_finish(struct bpf_map_memory *mem);
661661 void bpf_map_charge_move(struct bpf_map_memory *dst,
662662 struct bpf_map_memory *src);
663−void *bpf_map_area_alloc(size_t size, int numa_node);
663+void *bpf_map_area_alloc(u64 size, int numa_node);
664664 void bpf_map_area_free(void *base);
665665 void bpf_map_init_from_attr(struct bpf_map *map, union bpf_attr *attr);
666666
include/linux/cpu.h+7−23
@@ -59,6 +59,11 @@ extern ssize_t cpu_show_l1tf(struct device *dev, · 58 unmodified lines
5959 struct device_attribute *attr, char *buf);
6060 extern ssize_t cpu_show_mds(struct device *dev,
6161 struct device_attribute *attr, char *buf);
62+extern ssize_t cpu_show_tsx_async_abort(struct device *dev,
63+ struct device_attribute *attr,
64+ char *buf);
65+extern ssize_t cpu_show_itlb_multihit(struct device *dev,
66+ struct device_attribute *attr, char *buf);
6267
6368 extern __printf(4, 5)
6469 struct device *cpu_device_create(struct device *parent, void *drvdata,
@@ -213,28 +218,7 @@ static inline int cpuhp_smt_enable(void) { return 0; } · 148 unmodified lines
213218 static inline int cpuhp_smt_disable(enum cpuhp_smt_control ctrlval) { return 0; }
214219 #endif
215220
216−/*
217− * These are used for a global "mitigations=" cmdline option for toggling
218− * optional CPU mitigations.
219− */
220−enum cpu_mitigations {
221− CPU_MITIGATIONS_OFF,
222− CPU_MITIGATIONS_AUTO,
223− CPU_MITIGATIONS_AUTO_NOSMT,
224−};
225−
226−extern enum cpu_mitigations cpu_mitigations;
227−
228−/* mitigations=off */
229−static inline bool cpu_mitigations_off(void)
230−{
231− return cpu_mitigations == CPU_MITIGATIONS_OFF;
232−}
233−
234−/* mitigations=auto,nosmt */
235−static inline bool cpu_mitigations_auto_nosmt(void)
236−{
237− return cpu_mitigations == CPU_MITIGATIONS_AUTO_NOSMT;
238−}
221+extern bool cpu_mitigations_off(void);
222+extern bool cpu_mitigations_auto_nosmt(void);
239223
240224 #endif /* _LINUX_CPU_H_ */
include/linux/cpufreq.h+5−2
@@ -13,6 +13,7 @@ · 12 unmodified lines
1313 #include <linux/completion.h>
1414 #include <linux/kobject.h>
1515 #include <linux/notifier.h>
16+#include <linux/pm_qos.h>
1617 #include <linux/spinlock.h>
1718 #include <linux/sysfs.h>
1819
@@ -76,8 +77,10 @@ struct cpufreq_policy { · 57 unmodified lines
7677 struct work_struct update; /* if update_policy() needs to be
7778 * called, but you're in IRQ context */
7879
79− struct dev_pm_qos_request *min_freq_req;
80− struct dev_pm_qos_request *max_freq_req;
80+ struct freq_constraints constraints;
81+ struct freq_qos_request *min_freq_req;
82+ struct freq_qos_request *max_freq_req;
83+
8184 struct cpufreq_frequency_table *freq_table;
8285 enum cpufreq_table_sorting freq_table_sorted;
8386
include/linux/dynamic_debug.h+6−0
@@ -204,6 +204,12 @@ static inline int ddebug_dyndbg_module_param_cb(char *param, char *val, · 203 unmodified lines
204204 do { if (0) printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__); } while (0)
205205 #define dynamic_dev_dbg(dev, fmt, ...) \
206206 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)
207213 #endif
208214
209215 #endif
include/linux/efi.h+16−2
@@ -1579,9 +1579,22 @@ char *efi_convert_cmdline(efi_system_table_t *sys_table_arg, · 1578 unmodified lines
15791579 efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg,
15801580 struct efi_boot_memmap *map);
15811581
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
15821587 efi_status_t efi_low_alloc(efi_system_table_t *sys_table_arg,
15831588 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+}
15851598
15861599 efi_status_t efi_high_alloc(efi_system_table_t *sys_table_arg,
15871600 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
15921605 unsigned long image_size,
15931606 unsigned long alloc_size,
15941607 unsigned long preferred_addr,
1595− unsigned long alignment);
1608+ unsigned long alignment,
1609+ unsigned long min_addr);
15961610
15971611 efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg,
15981612 efi_loaded_image_t *image,
include/linux/export.h+5−9
@@ -18,8 +18,6 @@ extern struct module __this_module; · 17 unmodified lines
1818 #define THIS_MODULE ((struct module *)0)
1919 #endif
2020
21−#define NS_SEPARATOR "."
22−
2321 #ifdef CONFIG_MODVERSIONS
2422 /* Mark the CRC weak since genksyms apparently decides not to
2523 * generate a checksums for some symbols */
@@ -48,11 +46,11 @@ extern struct module __this_module; · 22 unmodified lines
4846 * absolute relocations that require runtime processing on relocatable
4947 * kernels.
5048 */
51−#define __KSYMTAB_ENTRY_NS(sym, sec, ns) \
49+#define __KSYMTAB_ENTRY_NS(sym, sec) \
5250 __ADDRESSABLE(sym) \
5351 asm(" .section \"___ksymtab" sec "+" #sym "\", \"a\" \n" \
5452 " .balign 4 \n" \
55− "__ksymtab_" #ns NS_SEPARATOR #sym ": \n" \
53+ "__ksymtab_" #sym ": \n" \
5654 " .long " #sym "- . \n" \
5755 " .long __kstrtab_" #sym "- . \n" \
5856 " .long __kstrtabns_" #sym "- . \n" \
@@ -74,16 +72,14 @@ struct kernel_symbol { · 15 unmodified lines
7472 int namespace_offset;
7573 };
7674 #else
77−#define __KSYMTAB_ENTRY_NS(sym, sec, ns) \
78− static const struct kernel_symbol __ksymtab_##sym##__##ns \
79− asm("__ksymtab_" #ns NS_SEPARATOR #sym) \
75+#define __KSYMTAB_ENTRY_NS(sym, sec) \
76+ static const struct kernel_symbol __ksymtab_##sym \
8077 __attribute__((section("___ksymtab" sec "+" #sym), used)) \
8178 __aligned(sizeof(void *)) \
8279 = { (unsigned long)&sym, __kstrtab_##sym, __kstrtabns_##sym }
8380
8481 #define __KSYMTAB_ENTRY(sym, sec) \
8582 static const struct kernel_symbol __ksymtab_##sym \
86− asm("__ksymtab_" #sym) \
8783 __attribute__((section("___ksymtab" sec "+" #sym), used)) \
8884 __aligned(sizeof(void *)) \
8985 = { (unsigned long)&sym, __kstrtab_##sym, NULL }
@@ -115,7 +111,7 @@ struct kernel_symbol { · 25 unmodified lines
115111 static const char __kstrtabns_##sym[] \
116112 __attribute__((section("__ksymtab_strings"), used, aligned(1))) \
117113 = #ns; \
118− __KSYMTAB_ENTRY_NS(sym, sec, ns)
114+ __KSYMTAB_ENTRY_NS(sym, sec)
119115
120116 #define ___EXPORT_SYMBOL(sym, sec) \
121117 ___export_symbol_common(sym, sec); \
include/linux/filter.h+0−1
@@ -1099,7 +1099,6 @@ static inline void bpf_get_prog_name(const struct bpf_prog *prog, char *sym) · 1098 unmodified lines
10991099
11001100 #endif /* CONFIG_BPF_JIT */
11011101
1102−void bpf_prog_kallsyms_del_subprogs(struct bpf_prog *fp);
11031102 void bpf_prog_kallsyms_del_all(struct bpf_prog *fp);
11041103
11051104 #define BPF_ANC BIT(15)
include/linux/gfp.h+23−0
@@ -325,6 +325,29 @@ static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags) · 324 unmodified lines
325325 return !!(gfp_flags & __GFP_DIRECT_RECLAIM);
326326 }
327327
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+
328351 #ifdef CONFIG_HIGHMEM
329352 #define OPT_ZONE_HIGHMEM ZONE_HIGHMEM
330353 #else
include/linux/idr.h+1−1
@@ -185,7 +185,7 @@ static inline void idr_preload_end(void) · 184 unmodified lines
185185 * is convenient for a "not found" value.
186186 */
187187 #define idr_for_each_entry(idr, entry, id) \
188− for (id = 0; ((entry) = idr_get_next(idr, &(id))) != NULL; ++id)
188+ for (id = 0; ((entry) = idr_get_next(idr, &(id))) != NULL; id += 1U)
189189
190190 /**
191191 * idr_for_each_entry_ul() - Iterate over an IDR's elements of a given type.
include/linux/if_macvlan.h+0−1
@@ -29,7 +29,6 @@ struct macvlan_dev { · 28 unmodified lines
2929 netdev_features_t set_features;
3030 enum macvlan_mode mode;
3131 u16 flags;
32− int nest_level;
3332 unsigned int macaddr_count;
3433 #ifdef CONFIG_NET_POLL_CONTROLLER
3534 struct netpoll *netpoll;
include/linux/if_team.h+1−0
@@ -223,6 +223,7 @@ struct team { · 222 unmodified lines
223223 atomic_t count_pending;
224224 struct delayed_work dw;
225225 } mcast_rejoin;
226+ struct lock_class_key team_lock_key;
226227 long mode_priv[TEAM_MODE_PRIV_LONGS];
227228 };
228229
include/linux/if_vlan.h+0−11
@@ -182,7 +182,6 @@ struct vlan_dev_priv { · 181 unmodified lines
182182 #ifdef CONFIG_NET_POLL_CONTROLLER
183183 struct netpoll *netpoll;
184184 #endif
185− unsigned int nest_level;
186185 };
187186
188187 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
221220
222221 extern bool vlan_uses_dev(const struct net_device *dev);
223222
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−}
229223 #else
230224 static inline struct net_device *
231225 __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
295289 {
296290 return false;
297291 }
298−static inline int vlan_get_encap_level(struct net_device *dev)
299−{
300− BUG();
301− return 0;
302−}
303292 #endif
304293
305294 /**
include/linux/kvm_host.h+7−0
@@ -985,6 +985,7 @@ int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu); · 984 unmodified lines
985985 void kvm_vcpu_kick(struct kvm_vcpu *vcpu);
986986
987987 bool kvm_is_reserved_pfn(kvm_pfn_t pfn);
988+bool kvm_is_zone_device_pfn(kvm_pfn_t pfn);
988989
989990 struct kvm_irq_ack_notifier {
990991 struct hlist_node link;
@@ -1401,4 +1402,10 @@ static inline int kvm_arch_vcpu_run_pid_change(struct kvm_vcpu *vcpu) · 410 unmodified lines
14011402 }
14021403 #endif /* CONFIG_HAVE_KVM_VCPU_RUN_PID_CHANGE */
14031404
1405+typedef int (*kvm_vm_thread_fn_t)(struct kvm *kvm, uintptr_t data);
1406+
1407+int kvm_vm_create_worker_thread(struct kvm *kvm, kvm_vm_thread_fn_t thread_fn,
1408+ uintptr_t data, const char *name,
1409+ struct task_struct **thread_ptr);
1410+
14041411 #endif
include/linux/mlx5/mlx5_ifc.h+1−2
@@ -1545,9 +1545,8 @@ struct mlx5_ifc_extended_dest_format_bits { · 1544 unmodified lines
15451545 };
15461546
15471547 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;
15491549 struct mlx5_ifc_flow_counter_list_bits flow_counter_list;
1550− u8 reserved_at_0[0x40];
15511550 };
15521551
15531552 struct mlx5_ifc_fte_match_param_bits {
include/linux/mm.h+0−5
@@ -695,11 +695,6 @@ static inline void *kvcalloc(size_t n, size_t size, gfp_t flags) · 694 unmodified lines
695695
696696 extern void kvfree(const void *addr);
697697
698−static inline atomic_t *compound_mapcount_ptr(struct page *page)
699−{
700− return &page[1].compound_mapcount;
701−}
702−
703698 static inline int compound_mapcount(struct page *page)
704699 {
705700 VM_BUG_ON_PAGE(!PageCompound(page), page);
include/linux/mm_types.h+5−0
@@ -221,6 +221,11 @@ struct page { · 220 unmodified lines
221221 #endif
222222 } _struct_page_alignment;
223223
224+static inline atomic_t *compound_mapcount_ptr(struct page *page)
225+{
226+ return &page[1].compound_mapcount;
227+}
228+
224229 /*
225230 * Used for sizing the vmemmap region on some architectures
226231 */
include/linux/netdevice.h+27−34
@@ -925,6 +925,7 @@ struct dev_ifalias { · 924 unmodified lines
925925 struct devlink;
926926 struct tlsdev_ops;
927927
928+
928929 /*
929930 * This structure defines the management hooks for network devices.
930931 * The following hooks can be defined; unless noted otherwise, they are
@@ -1421,7 +1422,6 @@ struct net_device_ops { · 490 unmodified lines
14211422 void (*ndo_dfwd_del_station)(struct net_device *pdev,
14221423 void *priv);
14231424
1424− int (*ndo_get_lock_subclass)(struct net_device *dev);
14251425 int (*ndo_set_tx_maxrate)(struct net_device *dev,
14261426 int queue_index,
14271427 u32 maxrate);
@@ -1649,6 +1649,8 @@ enum netdev_priv_flags { · 221 unmodified lines
16491649 * @perm_addr: Permanent hw address
16501650 * @addr_assign_type: Hw address assignment type
16511651 * @addr_len: Hardware address length
1652+ * @upper_level: Maximum depth level of upper devices.
1653+ * @lower_level: Maximum depth level of lower devices.
16521654 * @neigh_priv_len: Used in neigh_alloc()
16531655 * @dev_id: Used to differentiate devices that share
16541656 * the same link layer address
@@ -1758,9 +1760,13 @@ enum netdev_priv_flags { · 103 unmodified lines
17581760 * @phydev: Physical device may attach itself
17591761 * for hardware timestamping
17601762 * @sfp_bus: attached &struct sfp_bus structure.
1761− *
1762− * @qdisc_tx_busylock: lockdep class annotating Qdisc->busylock spinlock
1763− * @qdisc_running_key: lockdep class annotating Qdisc->running seqcount
1763+ * @qdisc_tx_busylock_key: lockdep class annotating Qdisc->busylock
1764+ spinlock
1765+ * @qdisc_running_key: lockdep class annotating Qdisc->running seqcount
1766+ * @qdisc_xmit_lock_key: lockdep class annotating
1767+ * netdev_queue->_xmit_lock spinlock
1768+ * @addr_list_lock_key: lockdep class annotating
1769+ * net_device->addr_list_lock spinlock
17641770 *
17651771 * @proto_down: protocol port state information can be sent to the
17661772 * switch driver and used to set the phys state of the
@@ -1875,6 +1881,8 @@ struct net_device { · 108 unmodified lines
18751881 unsigned char perm_addr[MAX_ADDR_LEN];
18761882 unsigned char addr_assign_type;
18771883 unsigned char addr_len;
1884+ unsigned char upper_level;
1885+ unsigned char lower_level;
18781886 unsigned short neigh_priv_len;
18791887 unsigned short dev_id;
18801888 unsigned short dev_port;
@@ -2045,8 +2053,10 @@ struct net_device { · 164 unmodified lines
20452053 #endif
20462054 struct phy_device *phydev;
20472055 struct sfp_bus *sfp_bus;
2048− struct lock_class_key *qdisc_tx_busylock;
2049− struct lock_class_key *qdisc_running_key;
2056+ struct lock_class_key qdisc_tx_busylock_key;
2057+ struct lock_class_key qdisc_running_key;
2058+ struct lock_class_key qdisc_xmit_lock_key;
2059+ struct lock_class_key addr_list_lock_key;
20502060 bool proto_down;
20512061 unsigned wol_enabled:1;
20522062 };
@@ -2124,23 +2134,6 @@ static inline void netdev_for_each_tx_queue(struct net_device *dev, · 71 unmodified lines
21242134 f(dev, &dev->_tx[i], arg);
21252135 }
21262136
2127−#define netdev_lockdep_set_classes(dev) \
2128−{ \
2129− static struct lock_class_key qdisc_tx_busylock_key; \
2130− static struct lock_class_key qdisc_running_key; \
2131− static struct lock_class_key qdisc_xmit_lock_key; \
2132− static struct lock_class_key dev_addr_list_lock_key; \
2133− unsigned int i; \
2134− \
2135− (dev)->qdisc_tx_busylock = &qdisc_tx_busylock_key; \
2136− (dev)->qdisc_running_key = &qdisc_running_key; \
2137− lockdep_set_class(&(dev)->addr_list_lock, \
2138− &dev_addr_list_lock_key); \
2139− for (i = 0; i < (dev)->num_tx_queues; i++) \
2140− lockdep_set_class(&(dev)->_tx[i]._xmit_lock, \
2141− &qdisc_xmit_lock_key); \
2142−}
2143−
21442137 u16 netdev_pick_tx(struct net_device *dev, struct sk_buff *skb,
21452138 struct net_device *sb_dev);
21462139 struct netdev_queue *netdev_core_pick_tx(struct net_device *dev,
@@ -3139,6 +3132,7 @@ static inline void netif_stop_queue(struct net_device *dev) · 992 unmodified lines
31393132 }
31403133
31413134 void netif_tx_stop_all_queues(struct net_device *dev);
3135+void netdev_update_lockdep_key(struct net_device *dev);
31423136
31433137 static inline bool netif_tx_queue_stopped(const struct netdev_queue *dev_queue)
31443138 {
@@ -4056,16 +4050,6 @@ static inline void netif_addr_lock(struct net_device *dev) · 911 unmodified lines
40564050 spin_lock(&dev->addr_list_lock);
40574051 }
40584052
4059−static inline void netif_addr_lock_nested(struct net_device *dev)
4060−{
4061− int subclass = SINGLE_DEPTH_NESTING;
4062−
4063− if (dev->netdev_ops->ndo_get_lock_subclass)
4064− subclass = dev->netdev_ops->ndo_get_lock_subclass(dev);
4065−
4066− spin_lock_nested(&dev->addr_list_lock, subclass);
4067−}
4068−
40694053 static inline void netif_addr_lock_bh(struct net_device *dev)
40704054 {
40714055 spin_lock_bh(&dev->addr_list_lock);
@@ -4329,6 +4313,16 @@ int netdev_master_upper_dev_link(struct net_device *dev, · 257 unmodified lines
43294313 struct netlink_ext_ack *extack);
43304314 void netdev_upper_dev_unlink(struct net_device *dev,
43314315 struct net_device *upper_dev);
4316+int netdev_adjacent_change_prepare(struct net_device *old_dev,
4317+ struct net_device *new_dev,
4318+ struct net_device *dev,
4319+ struct netlink_ext_ack *extack);
4320+void netdev_adjacent_change_commit(struct net_device *old_dev,
4321+ struct net_device *new_dev,
4322+ struct net_device *dev);
4323+void netdev_adjacent_change_abort(struct net_device *old_dev,
4324+ struct net_device *new_dev,
4325+ struct net_device *dev);
43324326 void netdev_adjacent_rename_links(struct net_device *dev, char *oldname);
43334327 void *netdev_lower_dev_get_private(struct net_device *dev,
43344328 struct net_device *lower_dev);
@@ -4340,7 +4334,6 @@ void netdev_lower_state_changed(struct net_device *lower_dev, · 5 unmodified lines
43404334 extern u8 netdev_rss_key[NETDEV_RSS_KEY_LEN] __read_mostly;
43414335 void netdev_rss_key_fill(void *buffer, size_t len);
43424336
4343−int dev_get_nest_level(struct net_device *dev);
43444337 int skb_checksum_help(struct sk_buff *skb);
43454338 int skb_crc32c_csum_help(struct sk_buff *skb);
43464339 int skb_csum_hwoffload_help(struct sk_buff *skb,
include/linux/page-flags.h+18−2
@@ -622,12 +622,28 @@ static inline int PageTransCompound(struct page *page) · 621 unmodified lines
622622 *
623623 * Unlike PageTransCompound, this is safe to be called only while
624624 * split_huge_pmd() cannot run from under us, like if protected by the
625− * MMU notifier, otherwise it may result in page->_mapcount < 0 false
625+ * MMU notifier, otherwise it may result in page->_mapcount check false
626626 * positives.
627+ *
628+ * We have to treat page cache THP differently since every subpage of it
629+ * would get _mapcount inc'ed once it is PMD mapped. But, it may be PTE
630+ * mapped in the current process so comparing subpage's _mapcount to
631+ * compound_mapcount to filter out PTE mapped case.
627632 */
628633 static inline int PageTransCompoundMap(struct page *page)
629634 {
630− return PageTransCompound(page) && atomic_read(&page->_mapcount) < 0;
635+ struct page *head;
636+
637+ if (!PageTransCompound(page))
638+ return 0;
639+
640+ if (PageAnon(page))
641+ return atomic_read(&page->_mapcount) < 0;
642+
643+ head = compound_head(page);
644+ /* File THP is PMD mapped and not PTE mapped */
645+ return atomic_read(&page->_mapcount) ==
646+ atomic_read(compound_mapcount_ptr(head));
631647 }
632648
633649 /*
include/linux/perf_event.h+1−1
@@ -292,7 +292,7 @@ struct pmu { · 291 unmodified lines
292292 * -EBUSY -- @event is for this PMU but PMU temporarily unavailable
293293 * -EINVAL -- @event is for this PMU but @event is not valid
294294 * -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
296296 *
297297 * 0 -- @event is for this PMU and valid
298298 *
include/linux/platform_data/dma-imx-sdma.h+3−0
@@ -51,7 +51,10 @@ struct sdma_script_start_addrs { · 50 unmodified lines
5151 /* End of v2 array */
5252 s32 zcanfd_2_mcu_addr;
5353 s32 zqspi_2_mcu_addr;
54+ s32 mcu_2_ecspi_addr;
5455 /* End of v3 array */
56+ s32 mcu_2_zqspi_addr;
57+ /* End of v4 array */
5558 };
5659
5760 /**
include/linux/pm_qos.h+44−12
@@ -34,8 +34,6 @@ enum pm_qos_flags_status { · 33 unmodified lines
3434 #define PM_QOS_RESUME_LATENCY_NO_CONSTRAINT PM_QOS_LATENCY_ANY
3535 #define PM_QOS_RESUME_LATENCY_NO_CONSTRAINT_NS PM_QOS_LATENCY_ANY_NS
3636 #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)
3937 #define PM_QOS_LATENCY_TOLERANCE_NO_CONSTRAINT (-1)
4038
4139 #define PM_QOS_FLAG_NO_POWER_OFF (1 << 0)
@@ -54,8 +52,6 @@ struct pm_qos_flags_request { · 12 unmodified lines
5452 enum dev_pm_qos_req_type {
5553 DEV_PM_QOS_RESUME_LATENCY = 1,
5654 DEV_PM_QOS_LATENCY_TOLERANCE,
57− DEV_PM_QOS_MIN_FREQUENCY,
58− DEV_PM_QOS_MAX_FREQUENCY,
5955 DEV_PM_QOS_FLAGS,
6056 };
6157
@@ -97,14 +93,10 @@ struct pm_qos_flags { · 35 unmodified lines
9793 struct dev_pm_qos {
9894 struct pm_qos_constraints resume_latency;
9995 struct pm_qos_constraints latency_tolerance;
100− struct pm_qos_constraints min_frequency;
101− struct pm_qos_constraints max_frequency;
10296 struct pm_qos_flags flags;
10397 struct dev_pm_qos_request *resume_latency_req;
10498 struct dev_pm_qos_request *latency_tolerance_req;
10599 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;
108100 };
109101
110102 /* 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
199191 switch (type) {
200192 case DEV_PM_QOS_RESUME_LATENCY:
201193 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;
206194 default:
207195 WARN_ON(1);
208196 return 0;
@@ -267,4 +255,48 @@ static inline s32 dev_pm_qos_raw_resume_latency(struct device *dev) · 58 unmodified lines
267255 }
268256 #endif
269257
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+
270302 #endif
include/linux/radix-tree.h+0−18
@@ -315,24 +315,6 @@ radix_tree_iter_lookup(const struct radix_tree_root *root, · 314 unmodified lines
315315 return radix_tree_next_chunk(root, iter, RADIX_TREE_ITER_CONTIG);
316316 }
317317
318−/**
319− * radix_tree_iter_find - find a present entry
320− * @root: radix tree root
321− * @iter: iterator state
322− * @index: start location
323− *
324− * This function returns the slot containing the entry with the lowest index
325− * which is at least @index. If @index is larger than any present entry, this
326− * function returns NULL. The @iter is updated to describe the entry found.
327− */
328−static inline void __rcu **
329−radix_tree_iter_find(const struct radix_tree_root *root,
330− struct radix_tree_iter *iter, unsigned long index)
331−{
332− radix_tree_iter_init(iter, index);
333− return radix_tree_next_chunk(root, iter, 0);
334−}
335−
336318 /**
337319 * radix_tree_iter_retry - retry this chunk of the iteration
338320 * @iter: iterator state
include/linux/reset-controller.h+2−2
@@ -7,7 +7,7 @@ · 6 unmodified lines
77 struct reset_controller_dev;
88
99 /**
10− * struct reset_control_ops
10+ * struct reset_control_ops - reset controller driver callbacks
1111 *
1212 * @reset: for self-deasserting resets, does all necessary
1313 * things to reset the device
@@ -33,7 +33,7 @@ struct of_phandle_args; · 19 unmodified lines
3333 * @provider: name of the reset controller device controlling this reset line
3434 * @index: ID of the reset controller in the reset controller device
3535 * @dev_id: name of the device associated with this reset line
36− * @con_id name of the reset line (can be NULL)
36+ * @con_id: name of the reset line (can be NULL)
3737 */
3838 struct reset_control_lookup {
3939 struct list_head list;
include/linux/reset.h+1−1
@@ -143,7 +143,7 @@ static inline int device_reset_optional(struct device *dev) · 142 unmodified lines
143143 * If this function is called more than once for the same reset_control it will
144144 * return -EBUSY.
145145 *
146− * See reset_control_get_shared for details on shared references to
146+ * See reset_control_get_shared() for details on shared references to
147147 * reset-controls.
148148 *
149149 * Use of id names is optional.
include/linux/security.h+1−0
@@ -105,6 +105,7 @@ enum lockdown_reason { · 104 unmodified lines
105105 LOCKDOWN_NONE,
106106 LOCKDOWN_MODULE_SIGNATURE,
107107 LOCKDOWN_DEV_MEM,
108+ LOCKDOWN_EFI_TEST,
108109 LOCKDOWN_KEXEC,
109110 LOCKDOWN_HIBERNATION,
110111 LOCKDOWN_PCI_ACCESS,
include/linux/skbuff.h+26−10
@@ -1354,7 +1354,8 @@ static inline __u32 skb_get_hash_flowi6(struct sk_buff *skb, const struct flowi6 · 1353 unmodified lines
13541354 return skb->hash;
13551355 }
13561356
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);
13581359
13591360 static inline __u32 skb_get_hash_raw(const struct sk_buff *skb)
13601361 {
@@ -1494,6 +1495,19 @@ static inline int skb_queue_empty(const struct sk_buff_head *list) · 133 unmodified lines
14941495 return list->next == (const struct sk_buff *) list;
14951496 }
14961497
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+
14971511 /**
14981512 * skb_queue_is_last - check if skb is the last entry in the queue
14991513 * @list: queue head
@@ -1847,9 +1861,11 @@ static inline void __skb_insert(struct sk_buff *newsk, · 347 unmodified lines
18471861 struct sk_buff *prev, struct sk_buff *next,
18481862 struct sk_buff_head *list)
18491863 {
1850− newsk->next = next;
1851− newsk->prev = prev;
1852− next->prev = prev->next = newsk;
1864+ /* see skb_queue_empty_lockless() for the opposite READ_ONCE() */
1865+ WRITE_ONCE(newsk->next, next);
1866+ WRITE_ONCE(newsk->prev, prev);
1867+ WRITE_ONCE(next->prev, newsk);
1868+ WRITE_ONCE(prev->next, newsk);
18531869 list->qlen++;
18541870 }
18551871
@@ -1860,11 +1876,11 @@ static inline void __skb_queue_splice(const struct sk_buff_head *list, · 4 unmodified lines
18601876 struct sk_buff *first = list->next;
18611877 struct sk_buff *last = list->prev;
18621878
1863− first->prev = prev;
1864− prev->next = first;
1879+ WRITE_ONCE(first->prev, prev);
1880+ WRITE_ONCE(prev->next, first);
18651881
1866− last->next = next;
1867− next->prev = last;
1882+ WRITE_ONCE(last->next, next);
1883+ WRITE_ONCE(next->prev, last);
18681884 }
18691885
18701886 /**
@@ -2005,8 +2021,8 @@ static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list) · 134 unmodified lines
20052021 next = skb->next;
20062022 prev = skb->prev;
20072023 skb->next = skb->prev = NULL;
2008− next->prev = prev;
2009− prev->next = next;
2024+ WRITE_ONCE(next->prev, prev);
2025+ WRITE_ONCE(prev->next, next);
20102026 }
20112027
20122028 /**
include/linux/skmsg.h+6−3
@@ -139,6 +139,11 @@ static inline void sk_msg_apply_bytes(struct sk_psock *psock, u32 bytes) · 138 unmodified lines
139139 }
140140 }
141141
142+static inline u32 sk_msg_iter_dist(u32 start, u32 end)
143+{
144+ return end >= start ? end - start : end + (MAX_MSG_FRAGS - start);
145+}
146+
142147 #define sk_msg_iter_var_prev(var) \
143148 do { \
144149 if (var == 0) \
@@ -198,9 +203,7 @@ static inline u32 sk_msg_elem_used(const struct sk_msg *msg) · 53 unmodified lines
198203 if (sk_msg_full(msg))
199204 return MAX_MSG_FRAGS;
200205
201− return msg->sg.end >= msg->sg.start ?
202− msg->sg.end - msg->sg.start :
203− msg->sg.end + (MAX_MSG_FRAGS - msg->sg.start);
206+ return sk_msg_iter_dist(msg->sg.start, msg->sg.end);
204207 }
205208
206209 static inline struct scatterlist *sk_msg_elem(struct sk_msg *msg, int which)
include/linux/socket.h+1−1
@@ -263,7 +263,7 @@ struct ucred { · 262 unmodified lines
263263 #define PF_MAX AF_MAX
264264
265265 /* Maximum queue length specifiable by listen. */
266−#define SOMAXCONN 128
266+#define SOMAXCONN 4096
267267
268268 /* Flags we can use with send/ and recv.
269269 Added those for 1003.1g not all are supported yet
include/linux/sunrpc/bc_xprt.h+5−0
@@ -64,6 +64,11 @@ static inline int xprt_setup_backchannel(struct rpc_xprt *xprt, · 63 unmodified lines
6464 return 0;
6565 }
6666
67+static inline void xprt_destroy_backchannel(struct rpc_xprt *xprt,
68+ unsigned int max_reqs)
69+{
70+}
71+
6772 static inline bool svc_is_backchannel(const struct svc_rqst *rqstp)
6873 {
6974 return false;
include/linux/sysfs.h+2−2
@@ -196,9 +196,9 @@ struct bin_attribute { · 195 unmodified lines
196196 .size = _size, \
197197 }
198198
199−#define __BIN_ATTR_WO(_name) { \
199+#define __BIN_ATTR_WO(_name, _size) { \
200200 .attr = { .name = __stringify(_name), .mode = 0200 }, \
201− .store = _name##_store, \
201+ .write = _name##_write, \
202202 .size = _size, \
203203 }
204204
include/linux/virtio_vsock.h+0−1
@@ -48,7 +48,6 @@ struct virtio_vsock_sock { · 47 unmodified lines
4848
4949 struct virtio_vsock_pkt {
5050 struct virtio_vsock_hdr hdr;
51− struct work_struct work;
5251 struct list_head list;
5352 /* socket refcnt not held, only use for cancellation */
5453 struct vsock_sock *vsk;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t