History

Merge tag 'asoc-v5.7' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Updates for v5.7 This is a very big update for the core since Morimoto-san has been rather busy continuing his refactorings to clean up a lot of the cruft that we have accumilated over the years. We've also gained several new drivers, including initial (but still not complete) parts of the Intel SoundWire support. - Lots of refactorings to modernize the code from Morimoto-san. - Conversion of SND_SOC_ALL_CODECS to use imply from Geert Uytterhoeven. - Continued refactoring and fixing of the Intel support. - Soundwire and more advanced clocking support for Realtek RT5682. - Support for amlogic GX, Meson 8, Meson 8B and T9015 DAC, Broadcom DSL/PON, Ingenic JZ4760 and JZ4770, Realtek RL6231, and TI TAS2563 and TLV320ADCX140.

Takashi Iwai committed 6 years ago

Commit 3c22bae2 parents aa21c3d 1c521d71917 files · +39304 −17459Browse files

Showing the changes to include/linux (50 of 1917 files). Show all

Unified · Split

50 files
  1. include/linux/blkdev.h +1 −2
  2. include/linux/blktrace_api.h +13 −5
  3. include/linux/bootconfig.h +3 −0
  4. include/linux/cgroup.h +1 −0
  5. include/linux/compat.h +0 −29
  6. include/linux/cpufreq.h +0 −3
  7. include/linux/dax.h +2 −12
  8. include/linux/debugfs.h +6 −7
  9. include/linux/device.h +11 −0
  10. include/linux/dmar.h +9 −5
  11. include/linux/file.h +1 −0
  12. include/linux/fs.h +1 −0
  13. include/linux/futex.h +10 −7
  14. include/linux/genhd.h +1 −12
  15. include/linux/hid.h +1 −1
  16. include/linux/icmpv6.h +10 −0
  17. include/linux/inet_diag.h +12 −6
  18. include/linux/intel-iommu.h +2 −0
  19. include/linux/intel-svm.h +1 −1
  20. include/linux/irqdomain.h +1 −1
  21. include/linux/ktime.h +0 −37
  22. include/linux/kvm_host.h +3 −1
  23. include/linux/mlx5/mlx5_ifc.h +4 −1
  24. include/linux/mm.h +4 −0
  25. include/linux/mmc/host.h +1 −0
  26. include/linux/netdevice.h +18 −5
  27. include/linux/netfilter/ipset/ip_set.h +10 −1
  28. include/linux/nfs_fs.h +6 −20
  29. include/linux/of_clk.h +4 −4
  30. include/linux/page-flags.h +1 −1
  31. include/linux/phy.h +3 −0
  32. include/linux/pipe_fs_i.h +2 −1
  33. include/linux/platform_data/spi-omap2-mcspi.h +1 −0
  34. include/linux/platform_device.h +1 −1
  35. include/linux/rculist_nulls.h +7 −0
  36. include/linux/rhashtable.h +1 −1
  37. include/linux/sched/nohz.h +2 −0
  38. include/linux/skbuff.h +30 −0
  39. include/linux/socket.h +2 −1
  40. include/linux/soundwire/sdw.h +2 −0
  41. include/linux/suspend.h +1 −1
  42. include/linux/swiotlb.h +3 −8
  43. include/linux/time32.h +1 −153
  44. include/linux/timekeeping32.h +0 −32
  45. include/linux/trace_events.h +1 −1
  46. include/linux/tty.h +2 −0
  47. include/linux/types.h +0 −5
  48. include/linux/usb/quirks.h +3 −0
  49. include/linux/vmalloc.h +3 −2
  50. include/linux/workqueue.h +16 −0
include/linux/blkdev.h+1−2
@@ -524,7 +524,7 @@ struct request_queue { · 523 unmodified lines
524 unsigned int sg_reserved_size;524 unsigned int sg_reserved_size;
525 int node;525 int node;
526#ifdef CONFIG_BLK_DEV_IO_TRACE526#ifdef CONFIG_BLK_DEV_IO_TRACE
527 struct blk_trace *blk_trace;527 struct blk_trace __rcu *blk_trace;
528 struct mutex blk_trace_mutex;528 struct mutex blk_trace_mutex;
529#endif529#endif
530 /*530 /*
@@ -1494,7 +1494,6 @@ static inline void put_dev_sector(Sector p) · 963 unmodified lines
1494}1494}
1495 1495
1496int kblockd_schedule_work(struct work_struct *work);1496int kblockd_schedule_work(struct work_struct *work);
1497int kblockd_schedule_work_on(int cpu, struct work_struct *work);
1498int kblockd_mod_delayed_work_on(int cpu, struct delayed_work *dwork, unsigned long delay);1497int kblockd_mod_delayed_work_on(int cpu, struct delayed_work *dwork, unsigned long delay);
1499 1498
1500#define MODULE_ALIAS_BLOCKDEV(major,minor) \1499#define MODULE_ALIAS_BLOCKDEV(major,minor) \
include/linux/blktrace_api.h+13−5
@@ -51,9 +51,13 @@ void __trace_note_message(struct blk_trace *, struct blkcg *blkcg, const char *f · 50 unmodified lines
51 **/51 **/
52#define blk_add_cgroup_trace_msg(q, cg, fmt, ...) \52#define blk_add_cgroup_trace_msg(q, cg, fmt, ...) \
53 do { \53 do { \
54 struct blk_trace *bt = (q)->blk_trace; \54 struct blk_trace *bt; \
55 \
56 rcu_read_lock(); \
57 bt = rcu_dereference((q)->blk_trace); \
55 if (unlikely(bt)) \58 if (unlikely(bt)) \
56 __trace_note_message(bt, cg, fmt, ##__VA_ARGS__);\59 __trace_note_message(bt, cg, fmt, ##__VA_ARGS__);\
60 rcu_read_unlock(); \
57 } while (0)61 } while (0)
58#define blk_add_trace_msg(q, fmt, ...) \62#define blk_add_trace_msg(q, fmt, ...) \
59 blk_add_cgroup_trace_msg(q, NULL, fmt, ##__VA_ARGS__)63 blk_add_cgroup_trace_msg(q, NULL, fmt, ##__VA_ARGS__)
@@ -61,10 +65,14 @@ void __trace_note_message(struct blk_trace *, struct blkcg *blkcg, const char *f · 1 unmodified line
61 65
62static inline bool blk_trace_note_message_enabled(struct request_queue *q)66static inline bool blk_trace_note_message_enabled(struct request_queue *q)
63{67{
64 struct blk_trace *bt = q->blk_trace;68 struct blk_trace *bt;
65 if (likely(!bt))69 bool ret;
66 return false;70
67 return bt->act_mask & BLK_TC_NOTIFY;71 rcu_read_lock();
72 bt = rcu_dereference(q->blk_trace);
73 ret = bt && (bt->act_mask & BLK_TC_NOTIFY);
74 rcu_read_unlock();
75 return ret;
68}76}
69 77
70extern void blk_add_driver_data(struct request_queue *q, struct request *rq,78extern void blk_add_driver_data(struct request_queue *q, struct request *rq,
include/linux/bootconfig.h+3−0
@@ -10,6 +10,9 @@ · 9 unmodified lines
10#include <linux/kernel.h>10#include <linux/kernel.h>
11#include <linux/types.h>11#include <linux/types.h>
12 12
13#define BOOTCONFIG_MAGIC "#BOOTCONFIG\n"
14#define BOOTCONFIG_MAGIC_LEN 12
15
13/* XBC tree node */16/* XBC tree node */
14struct xbc_node {17struct xbc_node {
15 u16 next;18 u16 next;
include/linux/cgroup.h+1−0
@@ -62,6 +62,7 @@ struct css_task_iter { · 61 unmodified lines
62 struct list_head *mg_tasks_head;62 struct list_head *mg_tasks_head;
63 struct list_head *dying_tasks_head;63 struct list_head *dying_tasks_head;
64 64
65 struct list_head *cur_tasks_head;
65 struct css_set *cur_cset;66 struct css_set *cur_cset;
66 struct css_set *cur_dcset;67 struct css_set *cur_dcset;
67 struct task_struct *cur_task;68 struct task_struct *cur_task;
include/linux/compat.h+0−29
@@ -248,15 +248,6 @@ typedef struct compat_siginfo { · 247 unmodified lines
248 } _sifields;248 } _sifields;
249} compat_siginfo_t;249} compat_siginfo_t;
250 250
251/*
252 * These functions operate on 32- or 64-bit specs depending on
253 * COMPAT_USE_64BIT_TIME, hence the void user pointer arguments.
254 */
255extern int compat_get_timespec(struct timespec *, const void __user *);
256extern int compat_put_timespec(const struct timespec *, void __user *);
257extern int compat_get_timeval(struct timeval *, const void __user *);
258extern int compat_put_timeval(const struct timeval *, void __user *);
259
260struct compat_iovec {251struct compat_iovec {
261 compat_uptr_t iov_base;252 compat_uptr_t iov_base;
262 compat_size_t iov_len;253 compat_size_t iov_len;
@@ -416,26 +407,6 @@ int copy_siginfo_to_user32(struct compat_siginfo __user *to, const kernel_siginf · 153 unmodified lines
416int get_compat_sigevent(struct sigevent *event,407int get_compat_sigevent(struct sigevent *event,
417 const struct compat_sigevent __user *u_event);408 const struct compat_sigevent __user *u_event);
418 409
419static inline int old_timeval32_compare(struct old_timeval32 *lhs,
420 struct old_timeval32 *rhs)
421{
422 if (lhs->tv_sec < rhs->tv_sec)
423 return -1;
424 if (lhs->tv_sec > rhs->tv_sec)
425 return 1;
426 return lhs->tv_usec - rhs->tv_usec;
427}
428
429static inline int old_timespec32_compare(struct old_timespec32 *lhs,
430 struct old_timespec32 *rhs)
431{
432 if (lhs->tv_sec < rhs->tv_sec)
433 return -1;
434 if (lhs->tv_sec > rhs->tv_sec)
435 return 1;
436 return lhs->tv_nsec - rhs->tv_nsec;
437}
438
439extern int get_compat_sigset(sigset_t *set, const compat_sigset_t __user *compat);410extern int get_compat_sigset(sigset_t *set, const compat_sigset_t __user *compat);
440 411
441/*412/*
include/linux/cpufreq.h+0−3
@@ -201,9 +201,6 @@ static inline bool policy_is_shared(struct cpufreq_policy *policy) · 200 unmodified lines
201 return cpumask_weight(policy->cpus) > 1;201 return cpumask_weight(policy->cpus) > 1;
202}202}
203 203
204/* /sys/devices/system/cpu/cpufreq: entry point for global variables */
205extern struct kobject *cpufreq_global_kobject;
206
207#ifdef CONFIG_CPU_FREQ204#ifdef CONFIG_CPU_FREQ
208unsigned int cpufreq_get(unsigned int cpu);205unsigned int cpufreq_get(unsigned int cpu);
209unsigned int cpufreq_quick_get(unsigned int cpu);206unsigned int cpufreq_quick_get(unsigned int cpu);
include/linux/dax.h+2−12
@@ -129,11 +129,6 @@ static inline bool generic_fsdax_supported(struct dax_device *dax_dev, · 128 unmodified lines
129 sectors);129 sectors);
130}130}
131 131
132static inline struct dax_device *fs_dax_get_by_host(const char *host)
133{
134 return dax_get_by_host(host);
135}
136
137static inline void fs_put_dax(struct dax_device *dax_dev)132static inline void fs_put_dax(struct dax_device *dax_dev)
138{133{
139 put_dax(dax_dev);134 put_dax(dax_dev);
@@ -141,7 +136,7 @@ static inline void fs_put_dax(struct dax_device *dax_dev) · 1 unmodified line
141 136
142struct dax_device *fs_dax_get_by_bdev(struct block_device *bdev);137struct dax_device *fs_dax_get_by_bdev(struct block_device *bdev);
143int dax_writeback_mapping_range(struct address_space *mapping,138int dax_writeback_mapping_range(struct address_space *mapping,
144 struct block_device *bdev, struct writeback_control *wbc);139 struct dax_device *dax_dev, struct writeback_control *wbc);
145 140
146struct page *dax_layout_busy_page(struct address_space *mapping);141struct page *dax_layout_busy_page(struct address_space *mapping);
147dax_entry_t dax_lock_page(struct page *page);142dax_entry_t dax_lock_page(struct page *page);
@@ -160,11 +155,6 @@ static inline bool generic_fsdax_supported(struct dax_device *dax_dev, · 12 unmodified lines
160 return false;155 return false;
161}156}
162 157
163static inline struct dax_device *fs_dax_get_by_host(const char *host)
164{
165 return NULL;
166}
167
168static inline void fs_put_dax(struct dax_device *dax_dev)158static inline void fs_put_dax(struct dax_device *dax_dev)
169{159{
170}160}
@@ -180,7 +170,7 @@ static inline struct page *dax_layout_busy_page(struct address_space *mapping) · 9 unmodified lines
180}170}
181 171
182static inline int dax_writeback_mapping_range(struct address_space *mapping,172static inline int dax_writeback_mapping_range(struct address_space *mapping,
183 struct block_device *bdev, struct writeback_control *wbc)173 struct dax_device *dax_dev, struct writeback_control *wbc)
184{174{
185 return -EOPNOTSUPP;175 return -EOPNOTSUPP;
186}176}
include/linux/debugfs.h+6−7
@@ -127,9 +127,9 @@ struct dentry *debugfs_create_blob(const char *name, umode_t mode, · 126 unmodified lines
127 struct dentry *parent,127 struct dentry *parent,
128 struct debugfs_blob_wrapper *blob);128 struct debugfs_blob_wrapper *blob);
129 129
130struct dentry *debugfs_create_regset32(const char *name, umode_t mode,130void debugfs_create_regset32(const char *name, umode_t mode,
131 struct dentry *parent,131 struct dentry *parent,
132 struct debugfs_regset32 *regset);132 struct debugfs_regset32 *regset);
133 133
134void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs,134void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs,
135 int nregs, void __iomem *base, char *prefix);135 int nregs, void __iomem *base, char *prefix);
@@ -304,11 +304,10 @@ static inline struct dentry *debugfs_create_blob(const char *name, umode_t mode, · 168 unmodified lines
304 return ERR_PTR(-ENODEV);304 return ERR_PTR(-ENODEV);
305}305}
306 306
307static inline struct dentry *debugfs_create_regset32(const char *name,307static inline void debugfs_create_regset32(const char *name, umode_t mode,
308 umode_t mode, struct dentry *parent,308 struct dentry *parent,
309 struct debugfs_regset32 *regset)309 struct debugfs_regset32 *regset)
310{310{
311 return ERR_PTR(-ENODEV);
312}311}
313 312
314static inline void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs,313static inline void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs,
include/linux/device.h+11−0
@@ -798,6 +798,17 @@ static inline struct device_node *dev_of_node(struct device *dev) · 797 unmodified lines
798 return dev->of_node;798 return dev->of_node;
799}799}
800 800
801static inline bool dev_has_sync_state(struct device *dev)
802{
803 if (!dev)
804 return false;
805 if (dev->driver && dev->driver->sync_state)
806 return true;
807 if (dev->bus && dev->bus->sync_state)
808 return true;
809 return false;
810}
811
801/*812/*
802 * High level routines for use by the bus drivers813 * High level routines for use by the bus drivers
803 */814 */
include/linux/dmar.h+9−5
@@ -69,19 +69,23 @@ struct dmar_pci_notify_info { · 68 unmodified lines
69extern struct rw_semaphore dmar_global_lock;69extern struct rw_semaphore dmar_global_lock;
70extern struct list_head dmar_drhd_units;70extern struct list_head dmar_drhd_units;
71 71
72#define for_each_drhd_unit(drhd) \72#define for_each_drhd_unit(drhd) \
73 list_for_each_entry_rcu(drhd, &dmar_drhd_units, list)73 list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \
74 dmar_rcu_check())
74 75
75#define for_each_active_drhd_unit(drhd) \76#define for_each_active_drhd_unit(drhd) \
76 list_for_each_entry_rcu(drhd, &dmar_drhd_units, list) \77 list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \
78 dmar_rcu_check()) \
77 if (drhd->ignored) {} else79 if (drhd->ignored) {} else
78 80
79#define for_each_active_iommu(i, drhd) \81#define for_each_active_iommu(i, drhd) \
80 list_for_each_entry_rcu(drhd, &dmar_drhd_units, list) \82 list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \
83 dmar_rcu_check()) \
81 if (i=drhd->iommu, drhd->ignored) {} else84 if (i=drhd->iommu, drhd->ignored) {} else
82 85
83#define for_each_iommu(i, drhd) \86#define for_each_iommu(i, drhd) \
84 list_for_each_entry_rcu(drhd, &dmar_drhd_units, list) \87 list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \
88 dmar_rcu_check()) \
85 if (i=drhd->iommu, 0) {} else 89 if (i=drhd->iommu, 0) {} else
86 90
87static inline bool dmar_rcu_check(void)91static inline bool dmar_rcu_check(void)
include/linux/file.h+1−0
@@ -85,6 +85,7 @@ extern int f_dupfd(unsigned int from, struct file *file, unsigned flags); · 84 unmodified lines
85extern int replace_fd(unsigned fd, struct file *file, unsigned flags);85extern int replace_fd(unsigned fd, struct file *file, unsigned flags);
86extern void set_close_on_exec(unsigned int fd, int flag);86extern void set_close_on_exec(unsigned int fd, int flag);
87extern bool get_close_on_exec(unsigned int fd);87extern bool get_close_on_exec(unsigned int fd);
88extern int __get_unused_fd_flags(unsigned flags, unsigned long nofile);
88extern int get_unused_fd_flags(unsigned flags);89extern int get_unused_fd_flags(unsigned flags);
89extern void put_unused_fd(unsigned int fd);90extern void put_unused_fd(unsigned int fd);
90 91
include/linux/fs.h+1−0
@@ -698,6 +698,7 @@ struct inode { · 697 unmodified lines
698 struct rcu_head i_rcu;698 struct rcu_head i_rcu;
699 };699 };
700 atomic64_t i_version;700 atomic64_t i_version;
701 atomic64_t i_sequence; /* see futex */
701 atomic_t i_count;702 atomic_t i_count;
702 atomic_t i_dio_count;703 atomic_t i_dio_count;
703 atomic_t i_writecount;704 atomic_t i_writecount;
include/linux/futex.h+10−7
@@ -31,23 +31,26 @@ struct task_struct; · 30 unmodified lines
31 31
32union futex_key {32union futex_key {
33 struct {33 struct {
34 u64 i_seq;
34 unsigned long pgoff;35 unsigned long pgoff;
35 struct inode *inode;36 unsigned int offset;
36 int offset;
37 } shared;37 } shared;
38 struct {38 struct {
39 union {
40 struct mm_struct *mm;
41 u64 __tmp;
42 };
39 unsigned long address;43 unsigned long address;
40 struct mm_struct *mm;44 unsigned int offset;
41 int offset;
42 } private;45 } private;
43 struct {46 struct {
47 u64 ptr;
44 unsigned long word;48 unsigned long word;
45 void *ptr;49 unsigned int offset;
46 int offset;
47 } both;50 } both;
48};51};
49 52
50#define FUTEX_KEY_INIT (union futex_key) { .both = { .ptr = NULL } }53#define FUTEX_KEY_INIT (union futex_key) { .both = { .ptr = 0ULL } }
51 54
52#ifdef CONFIG_FUTEX55#ifdef CONFIG_FUTEX
53enum {56enum {
include/linux/genhd.h+1−12
@@ -245,18 +245,6 @@ static inline bool disk_part_scan_enabled(struct gendisk *disk) · 244 unmodified lines
245 !(disk->flags & GENHD_FL_NO_PART_SCAN);245 !(disk->flags & GENHD_FL_NO_PART_SCAN);
246}246}
247 247
248static inline bool disk_has_partitions(struct gendisk *disk)
249{
250 bool ret = false;
251
252 rcu_read_lock();
253 if (rcu_dereference(disk->part_tbl)->len > 1)
254 ret = true;
255 rcu_read_unlock();
256
257 return ret;
258}
259
260static inline dev_t disk_devt(struct gendisk *disk)248static inline dev_t disk_devt(struct gendisk *disk)
261{249{
262 return MKDEV(disk->major, disk->first_minor);250 return MKDEV(disk->major, disk->first_minor);
@@ -298,6 +286,7 @@ extern void disk_part_iter_exit(struct disk_part_iter *piter); · 35 unmodified lines
298 286
299extern struct hd_struct *disk_map_sector_rcu(struct gendisk *disk,287extern struct hd_struct *disk_map_sector_rcu(struct gendisk *disk,
300 sector_t sector);288 sector_t sector);
289bool disk_has_partitions(struct gendisk *disk);
301 290
302/*291/*
303 * Macros to operate on percpu disk statistics:292 * Macros to operate on percpu disk statistics:
include/linux/hid.h+1−1
@@ -492,7 +492,7 @@ struct hid_report_enum { · 491 unmodified lines
492};492};
493 493
494#define HID_MIN_BUFFER_SIZE 64 /* make sure there is at least a packet size of space */494#define HID_MIN_BUFFER_SIZE 64 /* make sure there is at least a packet size of space */
495#define HID_MAX_BUFFER_SIZE 4096 /* 4kb */495#define HID_MAX_BUFFER_SIZE 8192 /* 8kb */
496#define HID_CONTROL_FIFO_SIZE 256 /* to init devices with >100 reports */496#define HID_CONTROL_FIFO_SIZE 256 /* to init devices with >100 reports */
497#define HID_OUTPUT_FIFO_SIZE 64497#define HID_OUTPUT_FIFO_SIZE 64
498 498
include/linux/icmpv6.h+10−0
@@ -22,12 +22,22 @@ extern int inet6_unregister_icmp_sender(ip6_icmp_send_t *fn); · 21 unmodified lines
22int ip6_err_gen_icmpv6_unreach(struct sk_buff *skb, int nhs, int type,22int ip6_err_gen_icmpv6_unreach(struct sk_buff *skb, int nhs, int type,
23 unsigned int data_len);23 unsigned int data_len);
24 24
25#if IS_ENABLED(CONFIG_NF_NAT)
26void icmpv6_ndo_send(struct sk_buff *skb_in, u8 type, u8 code, __u32 info);
27#else
28#define icmpv6_ndo_send icmpv6_send
29#endif
30
25#else31#else
26 32
27static inline void icmpv6_send(struct sk_buff *skb,33static inline void icmpv6_send(struct sk_buff *skb,
28 u8 type, u8 code, __u32 info)34 u8 type, u8 code, __u32 info)
29{35{
36}
30 37
38static inline void icmpv6_ndo_send(struct sk_buff *skb,
39 u8 type, u8 code, __u32 info)
40{
31}41}
32#endif42#endif
33 43
include/linux/inet_diag.h+12−6
@@ -2,15 +2,10 @@ · 1 unmodified line
2#ifndef _INET_DIAG_H_2#ifndef _INET_DIAG_H_
3#define _INET_DIAG_H_ 13#define _INET_DIAG_H_ 1
4 4
5#include <net/netlink.h>
5#include <uapi/linux/inet_diag.h>6#include <uapi/linux/inet_diag.h>
6 7
7struct net;
8struct sock;
9struct inet_hashinfo;8struct inet_hashinfo;
10struct nlattr;
11struct nlmsghdr;
12struct sk_buff;
13struct netlink_callback;
14 9
15struct inet_diag_handler {10struct inet_diag_handler {
16 void (*dump)(struct sk_buff *skb,11 void (*dump)(struct sk_buff *skb,
@@ -62,6 +57,17 @@ int inet_diag_bc_sk(const struct nlattr *_bc, struct sock *sk); · 45 unmodified lines
62 57
63void inet_diag_msg_common_fill(struct inet_diag_msg *r, struct sock *sk);58void inet_diag_msg_common_fill(struct inet_diag_msg *r, struct sock *sk);
64 59
60static inline size_t inet_diag_msg_attrs_size(void)
61{
62 return nla_total_size(1) /* INET_DIAG_SHUTDOWN */
63 + nla_total_size(1) /* INET_DIAG_TOS */
64#if IS_ENABLED(CONFIG_IPV6)
65 + nla_total_size(1) /* INET_DIAG_TCLASS */
66 + nla_total_size(1) /* INET_DIAG_SKV6ONLY */
67#endif
68 + nla_total_size(4) /* INET_DIAG_MARK */
69 + nla_total_size(4); /* INET_DIAG_CLASS_ID */
70}
65int inet_diag_msg_attrs_fill(struct sock *sk, struct sk_buff *skb,71int inet_diag_msg_attrs_fill(struct sock *sk, struct sk_buff *skb,
66 struct inet_diag_msg *r, int ext,72 struct inet_diag_msg *r, int ext,
67 struct user_namespace *user_ns, bool net_admin);73 struct user_namespace *user_ns, bool net_admin);
include/linux/intel-iommu.h+2−0
@@ -123,6 +123,8 @@ · 122 unmodified lines
123 123
124#define dmar_readq(a) readq(a)124#define dmar_readq(a) readq(a)
125#define dmar_writeq(a,v) writeq(v,a)125#define dmar_writeq(a,v) writeq(v,a)
126#define dmar_readl(a) readl(a)
127#define dmar_writel(a, v) writel(v, a)
126 128
127#define DMAR_VER_MAJOR(v) (((v) & 0xf0) >> 4)129#define DMAR_VER_MAJOR(v) (((v) & 0xf0) >> 4)
128#define DMAR_VER_MINOR(v) ((v) & 0x0f)130#define DMAR_VER_MINOR(v) ((v) & 0x0f)
include/linux/intel-svm.h+1−1
@@ -122,7 +122,7 @@ static inline int intel_svm_unbind_mm(struct device *dev, int pasid) · 121 unmodified lines
122 BUG();122 BUG();
123}123}
124 124
125static int intel_svm_is_pasid_valid(struct device *dev, int pasid)125static inline int intel_svm_is_pasid_valid(struct device *dev, int pasid)
126{126{
127 return -EINVAL;127 return -EINVAL;
128}128}
include/linux/irqdomain.h+1−1
@@ -192,7 +192,7 @@ enum { · 191 unmodified lines
192 IRQ_DOMAIN_FLAG_HIERARCHY = (1 << 0),192 IRQ_DOMAIN_FLAG_HIERARCHY = (1 << 0),
193 193
194 /* Irq domain name was allocated in __irq_domain_add() */194 /* Irq domain name was allocated in __irq_domain_add() */
195 IRQ_DOMAIN_NAME_ALLOCATED = (1 << 6),195 IRQ_DOMAIN_NAME_ALLOCATED = (1 << 1),
196 196
197 /* Irq domain is an IPI domain with virq per cpu */197 /* Irq domain is an IPI domain with virq per cpu */
198 IRQ_DOMAIN_FLAG_IPI_PER_CPU = (1 << 2),198 IRQ_DOMAIN_FLAG_IPI_PER_CPU = (1 << 2),
include/linux/ktime.h+0−37
@@ -66,33 +66,15 @@ static inline ktime_t ktime_set(const s64 secs, const unsigned long nsecs) · 65 unmodified lines
66 */66 */
67#define ktime_sub_ns(kt, nsval) ((kt) - (nsval))67#define ktime_sub_ns(kt, nsval) ((kt) - (nsval))
68 68
69/* convert a timespec to ktime_t format: */
70static inline ktime_t timespec_to_ktime(struct timespec ts)
71{
72 return ktime_set(ts.tv_sec, ts.tv_nsec);
73}
74
75/* convert a timespec64 to ktime_t format: */69/* convert a timespec64 to ktime_t format: */
76static inline ktime_t timespec64_to_ktime(struct timespec64 ts)70static inline ktime_t timespec64_to_ktime(struct timespec64 ts)
77{71{
78 return ktime_set(ts.tv_sec, ts.tv_nsec);72 return ktime_set(ts.tv_sec, ts.tv_nsec);
79}73}
80 74
81/* convert a timeval to ktime_t format: */
82static inline ktime_t timeval_to_ktime(struct timeval tv)
83{
84 return ktime_set(tv.tv_sec, tv.tv_usec * NSEC_PER_USEC);
85}
86
87/* Map the ktime_t to timespec conversion to ns_to_timespec function */
88#define ktime_to_timespec(kt) ns_to_timespec((kt))
89
90/* Map the ktime_t to timespec conversion to ns_to_timespec function */75/* Map the ktime_t to timespec conversion to ns_to_timespec function */
91#define ktime_to_timespec64(kt) ns_to_timespec64((kt))76#define ktime_to_timespec64(kt) ns_to_timespec64((kt))
92 77
93/* Map the ktime_t to timeval conversion to ns_to_timeval function */
94#define ktime_to_timeval(kt) ns_to_timeval((kt))
95
96/* Convert ktime_t to nanoseconds */78/* Convert ktime_t to nanoseconds */
97static inline s64 ktime_to_ns(const ktime_t kt)79static inline s64 ktime_to_ns(const ktime_t kt)
98{80{
@@ -215,25 +197,6 @@ static inline ktime_t ktime_sub_ms(const ktime_t kt, const u64 msec) · 116 unmodified lines
215 197
216extern ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs);198extern ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs);
217 199
218/**
219 * ktime_to_timespec_cond - convert a ktime_t variable to timespec
220 * format only if the variable contains data
221 * @kt: the ktime_t variable to convert
222 * @ts: the timespec variable to store the result in
223 *
224 * Return: %true if there was a successful conversion, %false if kt was 0.
225 */
226static inline __must_check bool ktime_to_timespec_cond(const ktime_t kt,
227 struct timespec *ts)
228{
229 if (kt) {
230 *ts = ktime_to_timespec(kt);
231 return true;
232 } else {
233 return false;
234 }
235}
236
237/**200/**
238 * ktime_to_timespec64_cond - convert a ktime_t variable to timespec64201 * ktime_to_timespec64_cond - convert a ktime_t variable to timespec64
239 * format only if the variable contains data202 * format only if the variable contains data
include/linux/kvm_host.h+3−1
@@ -889,6 +889,8 @@ int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu); · 888 unmodified lines
889bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu);889bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu);
890int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu);890int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu);
891bool kvm_arch_dy_runnable(struct kvm_vcpu *vcpu);891bool kvm_arch_dy_runnable(struct kvm_vcpu *vcpu);
892int kvm_arch_post_init_vm(struct kvm *kvm);
893void kvm_arch_pre_destroy_vm(struct kvm *kvm);
892 894
893#ifndef __KVM_HAVE_ARCH_VM_ALLOC895#ifndef __KVM_HAVE_ARCH_VM_ALLOC
894/*896/*
@@ -1342,7 +1344,7 @@ static inline void kvm_vcpu_set_dy_eligible(struct kvm_vcpu *vcpu, bool val) · 447 unmodified lines
1342#endif /* CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT */1344#endif /* CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT */
1343 1345
1344struct kvm_vcpu *kvm_get_running_vcpu(void);1346struct kvm_vcpu *kvm_get_running_vcpu(void);
1345struct kvm_vcpu __percpu **kvm_get_running_vcpus(void);1347struct kvm_vcpu * __percpu *kvm_get_running_vcpus(void);
1346 1348
1347#ifdef CONFIG_HAVE_KVM_IRQ_BYPASS1349#ifdef CONFIG_HAVE_KVM_IRQ_BYPASS
1348bool kvm_arch_has_irq_bypass(void);1350bool kvm_arch_has_irq_bypass(void);
include/linux/mlx5/mlx5_ifc.h+4−1
@@ -688,7 +688,10 @@ struct mlx5_ifc_flow_table_nic_cap_bits { · 687 unmodified lines
688 u8 nic_rx_multi_path_tirs[0x1];688 u8 nic_rx_multi_path_tirs[0x1];
689 u8 nic_rx_multi_path_tirs_fts[0x1];689 u8 nic_rx_multi_path_tirs_fts[0x1];
690 u8 allow_sniffer_and_nic_rx_shared_tir[0x1];690 u8 allow_sniffer_and_nic_rx_shared_tir[0x1];
691 u8 reserved_at_3[0x1d];691 u8 reserved_at_3[0x4];
692 u8 sw_owner_reformat_supported[0x1];
693 u8 reserved_at_8[0x18];
694
692 u8 encap_general_header[0x1];695 u8 encap_general_header[0x1];
693 u8 reserved_at_21[0xa];696 u8 reserved_at_21[0xa];
694 u8 log_max_packet_reformat_context[0x5];697 u8 log_max_packet_reformat_context[0x5];
include/linux/mm.h+4−0
@@ -2715,6 +2715,10 @@ static inline bool debug_pagealloc_enabled_static(void) · 2714 unmodified lines
2715#if defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_ARCH_HAS_SET_DIRECT_MAP)2715#if defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_ARCH_HAS_SET_DIRECT_MAP)
2716extern void __kernel_map_pages(struct page *page, int numpages, int enable);2716extern void __kernel_map_pages(struct page *page, int numpages, int enable);
2717 2717
2718/*
2719 * When called in DEBUG_PAGEALLOC context, the call should most likely be
2720 * guarded by debug_pagealloc_enabled() or debug_pagealloc_enabled_static()
2721 */
2718static inline void2722static inline void
2719kernel_map_pages(struct page *page, int numpages, int enable)2723kernel_map_pages(struct page *page, int numpages, int enable)
2720{2724{
include/linux/mmc/host.h+1−0
@@ -333,6 +333,7 @@ struct mmc_host { · 332 unmodified lines
333 MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR104 | \333 MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR104 | \
334 MMC_CAP_UHS_DDR50)334 MMC_CAP_UHS_DDR50)
335#define MMC_CAP_SYNC_RUNTIME_PM (1 << 21) /* Synced runtime PM suspends. */335#define MMC_CAP_SYNC_RUNTIME_PM (1 << 21) /* Synced runtime PM suspends. */
336#define MMC_CAP_NEED_RSP_BUSY (1 << 22) /* Commands with R1B can't use R1. */
336#define MMC_CAP_DRIVER_TYPE_A (1 << 23) /* Host supports Driver Type A */337#define MMC_CAP_DRIVER_TYPE_A (1 << 23) /* Host supports Driver Type A */
337#define MMC_CAP_DRIVER_TYPE_C (1 << 24) /* Host supports Driver Type C */338#define MMC_CAP_DRIVER_TYPE_C (1 << 24) /* Host supports Driver Type C */
338#define MMC_CAP_DRIVER_TYPE_D (1 << 25) /* Host supports Driver Type D */339#define MMC_CAP_DRIVER_TYPE_D (1 << 25) /* Host supports Driver Type D */
include/linux/netdevice.h+18−5
@@ -72,6 +72,8 @@ void netdev_set_default_ethtool_ops(struct net_device *dev, · 71 unmodified lines
72#define NET_RX_SUCCESS 0 /* keep 'em coming, baby */72#define NET_RX_SUCCESS 0 /* keep 'em coming, baby */
73#define NET_RX_DROP 1 /* packet dropped */73#define NET_RX_DROP 1 /* packet dropped */
74 74
75#define MAX_NEST_DEV 8
76
75/*77/*
76 * Transmit return codes: transmit return codes originate from three different78 * Transmit return codes: transmit return codes originate from three different
77 * namespaces:79 * namespaces:
@@ -1616,6 +1618,7 @@ enum netdev_priv_flags { · 1538 unmodified lines
1616 * and drivers will need to set them appropriately.1618 * and drivers will need to set them appropriately.
1617 *1619 *
1618 * @mpls_features: Mask of features inheritable by MPLS1620 * @mpls_features: Mask of features inheritable by MPLS
1621 * @gso_partial_features: value(s) from NETIF_F_GSO\*
1619 *1622 *
1620 * @ifindex: interface index1623 * @ifindex: interface index
1621 * @group: The group the device belongs to1624 * @group: The group the device belongs to
@@ -1640,8 +1643,11 @@ enum netdev_priv_flags { · 18 unmodified lines
1640 * @netdev_ops: Includes several pointers to callbacks,1643 * @netdev_ops: Includes several pointers to callbacks,
1641 * if one wants to override the ndo_*() functions1644 * if one wants to override the ndo_*() functions
1642 * @ethtool_ops: Management operations1645 * @ethtool_ops: Management operations
1646 * @l3mdev_ops: Layer 3 master device operations
1643 * @ndisc_ops: Includes callbacks for different IPv6 neighbour1647 * @ndisc_ops: Includes callbacks for different IPv6 neighbour
1644 * discovery handling. Necessary for e.g. 6LoWPAN.1648 * discovery handling. Necessary for e.g. 6LoWPAN.
1649 * @xfrmdev_ops: Transformation offload operations
1650 * @tlsdev_ops: Transport Layer Security offload operations
1645 * @header_ops: Includes callbacks for creating,parsing,caching,etc1651 * @header_ops: Includes callbacks for creating,parsing,caching,etc
1646 * of Layer 2 headers.1652 * of Layer 2 headers.
1647 *1653 *
@@ -1680,6 +1686,7 @@ enum netdev_priv_flags { · 32 unmodified lines
1680 * @dev_port: Used to differentiate devices that share1686 * @dev_port: Used to differentiate devices that share
1681 * the same function1687 * the same function
1682 * @addr_list_lock: XXX: need comments on this one1688 * @addr_list_lock: XXX: need comments on this one
1689 * @name_assign_type: network interface name assignment type
1683 * @uc_promisc: Counter that indicates promiscuous mode1690 * @uc_promisc: Counter that indicates promiscuous mode
1684 * has been enabled due to the need to listen to1691 * has been enabled due to the need to listen to
1685 * additional unicast addresses in a device that1692 * additional unicast addresses in a device that
@@ -1702,6 +1709,9 @@ enum netdev_priv_flags { · 16 unmodified lines
1702 * @ip6_ptr: IPv6 specific data1709 * @ip6_ptr: IPv6 specific data
1703 * @ax25_ptr: AX.25 specific data1710 * @ax25_ptr: AX.25 specific data
1704 * @ieee80211_ptr: IEEE 802.11 specific data, assign before registering1711 * @ieee80211_ptr: IEEE 802.11 specific data, assign before registering
1712 * @ieee802154_ptr: IEEE 802.15.4 low-rate Wireless Personal Area Network
1713 * device struct
1714 * @mpls_ptr: mpls_dev struct pointer
1705 *1715 *
1706 * @dev_addr: Hw address (before bcast,1716 * @dev_addr: Hw address (before bcast,
1707 * because most packets are unicast)1717 * because most packets are unicast)
@@ -1710,6 +1720,8 @@ enum netdev_priv_flags { · 2 unmodified lines
1710 * @num_rx_queues: Number of RX queues1720 * @num_rx_queues: Number of RX queues
1711 * allocated at register_netdev() time1721 * allocated at register_netdev() time
1712 * @real_num_rx_queues: Number of RX queues currently active in device1722 * @real_num_rx_queues: Number of RX queues currently active in device
1723 * @xdp_prog: XDP sockets filter program pointer
1724 * @gro_flush_timeout: timeout for GRO layer in NAPI
1713 *1725 *
1714 * @rx_handler: handler for received packets1726 * @rx_handler: handler for received packets
1715 * @rx_handler_data: XXX: need comments on this one1727 * @rx_handler_data: XXX: need comments on this one
@@ -1731,10 +1743,14 @@ enum netdev_priv_flags { · 15 unmodified lines
1731 * @qdisc: Root qdisc from userspace point of view1743 * @qdisc: Root qdisc from userspace point of view
1732 * @tx_queue_len: Max frames per queue allowed1744 * @tx_queue_len: Max frames per queue allowed
1733 * @tx_global_lock: XXX: need comments on this one1745 * @tx_global_lock: XXX: need comments on this one
1746 * @xdp_bulkq: XDP device bulk queue
1747 * @xps_cpus_map: all CPUs map for XPS device
1748 * @xps_rxqs_map: all RXQs map for XPS device
1734 *1749 *
1735 * @xps_maps: XXX: need comments on this one1750 * @xps_maps: XXX: need comments on this one
1736 * @miniq_egress: clsact qdisc specific data for1751 * @miniq_egress: clsact qdisc specific data for
1737 * egress processing1752 * egress processing
1753 * @qdisc_hash: qdisc hash table
1738 * @watchdog_timeo: Represents the timeout that is used by1754 * @watchdog_timeo: Represents the timeout that is used by
1739 * the watchdog (see dev_watchdog())1755 * the watchdog (see dev_watchdog())
1740 * @watchdog_timer: List of timers1756 * @watchdog_timer: List of timers
@@ -3548,7 +3564,7 @@ static inline unsigned int netif_attrmask_next(int n, const unsigned long *srcp, · 1807 unmodified lines
3548}3564}
3549 3565
3550/**3566/**
3551 * netif_attrmask_next_and - get the next CPU/Rx queue in *src1p & *src2p3567 * netif_attrmask_next_and - get the next CPU/Rx queue in \*src1p & \*src2p
3552 * @n: CPU/Rx queue index3568 * @n: CPU/Rx queue index
3553 * @src1p: the first CPUs/Rx queues mask pointer3569 * @src1p: the first CPUs/Rx queues mask pointer
3554 * @src2p: the second CPUs/Rx queues mask pointer3570 * @src2p: the second CPUs/Rx queues mask pointer
@@ -4375,11 +4391,8 @@ void *netdev_lower_get_next(struct net_device *dev, · 820 unmodified lines
4375 ldev; \4391 ldev; \
4376 ldev = netdev_lower_get_next(dev, &(iter)))4392 ldev = netdev_lower_get_next(dev, &(iter)))
4377 4393
4378struct net_device *netdev_all_lower_get_next(struct net_device *dev,4394struct net_device *netdev_next_lower_dev_rcu(struct net_device *dev,
4379 struct list_head **iter);4395 struct list_head **iter);
4380struct net_device *netdev_all_lower_get_next_rcu(struct net_device *dev,
4381 struct list_head **iter);
4382
4383int netdev_walk_all_lower_dev(struct net_device *dev,4396int netdev_walk_all_lower_dev(struct net_device *dev,
4384 int (*fn)(struct net_device *lower_dev,4397 int (*fn)(struct net_device *lower_dev,
4385 void *data),4398 void *data),
include/linux/netfilter/ipset/ip_set.h+10−1
@@ -121,6 +121,7 @@ struct ip_set_ext { · 120 unmodified lines
121 u32 timeout;121 u32 timeout;
122 u8 packets_op;122 u8 packets_op;
123 u8 bytes_op;123 u8 bytes_op;
124 bool target;
124};125};
125 126
126struct ip_set;127struct ip_set;
@@ -187,6 +188,14 @@ struct ip_set_type_variant { · 60 unmodified lines
187 /* Return true if "b" set is the same as "a"188 /* Return true if "b" set is the same as "a"
188 * according to the create set parameters */189 * according to the create set parameters */
189 bool (*same_set)(const struct ip_set *a, const struct ip_set *b);190 bool (*same_set)(const struct ip_set *a, const struct ip_set *b);
191 /* Region-locking is used */
192 bool region_lock;
193};
194
195struct ip_set_region {
196 spinlock_t lock; /* Region lock */
197 size_t ext_size; /* Size of the dynamic extensions */
198 u32 elements; /* Number of elements vs timeout */
190};199};
191 200
192/* The core set type structure */201/* The core set type structure */
@@ -501,7 +510,7 @@ ip_set_init_skbinfo(struct ip_set_skbinfo *skbinfo, · 308 unmodified lines
501}510}
502 511
503#define IP_SET_INIT_KEXT(skb, opt, set) \512#define IP_SET_INIT_KEXT(skb, opt, set) \
504 { .bytes = (skb)->len, .packets = 1, \513 { .bytes = (skb)->len, .packets = 1, .target = true,\
505 .timeout = ip_set_adt_opt_timeout(opt, set) }514 .timeout = ip_set_adt_opt_timeout(opt, set) }
506 515
507#define IP_SET_INIT_UEXT(set) \516#define IP_SET_INIT_UEXT(set) \
include/linux/nfs_fs.h+6−20
@@ -337,35 +337,17 @@ static inline int nfs_server_capable(struct inode *inode, int cap) · 336 unmodified lines
337 return NFS_SERVER(inode)->caps & cap;337 return NFS_SERVER(inode)->caps & cap;
338}338}
339 339
340static inline void nfs_set_verifier(struct dentry * dentry, unsigned long verf)
341{
342 dentry->d_time = verf;
343}
344
345/**340/**
346 * nfs_save_change_attribute - Returns the inode attribute change cookie341 * nfs_save_change_attribute - Returns the inode attribute change cookie
347 * @dir - pointer to parent directory inode342 * @dir - pointer to parent directory inode
348 * The "change attribute" is updated every time we finish an operation343 * The "cache change attribute" is updated when we need to revalidate
349 * that will result in a metadata change on the server.344 * our dentry cache after a directory was seen to change on the server.
350 */345 */
351static inline unsigned long nfs_save_change_attribute(struct inode *dir)346static inline unsigned long nfs_save_change_attribute(struct inode *dir)
352{347{
353 return NFS_I(dir)->cache_change_attribute;348 return NFS_I(dir)->cache_change_attribute;
354}349}
355 350
356/**
357 * nfs_verify_change_attribute - Detects NFS remote directory changes
358 * @dir - pointer to parent directory inode
359 * @chattr - previously saved change attribute
360 * Return "false" if the verifiers doesn't match the change attribute.
361 * This would usually indicate that the directory contents have changed on
362 * the server, and that any dentries need revalidating.
363 */
364static inline int nfs_verify_change_attribute(struct inode *dir, unsigned long chattr)
365{
366 return chattr == NFS_I(dir)->cache_change_attribute;
367}
368
369/*351/*
370 * linux/fs/nfs/inode.c352 * linux/fs/nfs/inode.c
371 */353 */
@@ -495,6 +477,10 @@ extern const struct file_operations nfs_dir_operations; · 123 unmodified lines
495extern const struct dentry_operations nfs_dentry_operations;477extern const struct dentry_operations nfs_dentry_operations;
496 478
497extern void nfs_force_lookup_revalidate(struct inode *dir);479extern void nfs_force_lookup_revalidate(struct inode *dir);
480extern void nfs_set_verifier(struct dentry * dentry, unsigned long verf);
481#if IS_ENABLED(CONFIG_NFS_V4)
482extern void nfs_clear_verifier_delegated(struct inode *inode);
483#endif /* IS_ENABLED(CONFIG_NFS_V4) */
498extern struct dentry *nfs_add_or_obtain(struct dentry *dentry,484extern struct dentry *nfs_add_or_obtain(struct dentry *dentry,
499 struct nfs_fh *fh, struct nfs_fattr *fattr,485 struct nfs_fh *fh, struct nfs_fattr *fattr,
500 struct nfs4_label *label);486 struct nfs4_label *label);
include/linux/of_clk.h+4−4
@@ -11,17 +11,17 @@ struct of_device_id; · 10 unmodified lines
11 11
12#if defined(CONFIG_COMMON_CLK) && defined(CONFIG_OF)12#if defined(CONFIG_COMMON_CLK) && defined(CONFIG_OF)
13 13
14unsigned int of_clk_get_parent_count(struct device_node *np);14unsigned int of_clk_get_parent_count(const struct device_node *np);
15const char *of_clk_get_parent_name(struct device_node *np, int index);15const char *of_clk_get_parent_name(const struct device_node *np, int index);
16void of_clk_init(const struct of_device_id *matches);16void of_clk_init(const struct of_device_id *matches);
17 17
18#else /* !CONFIG_COMMON_CLK || !CONFIG_OF */18#else /* !CONFIG_COMMON_CLK || !CONFIG_OF */
19 19
20static inline unsigned int of_clk_get_parent_count(struct device_node *np)20static inline unsigned int of_clk_get_parent_count(const struct device_node *np)
21{21{
22 return 0;22 return 0;
23}23}
24static inline const char *of_clk_get_parent_name(struct device_node *np,24static inline const char *of_clk_get_parent_name(const struct device_node *np,
25 int index)25 int index)
26{26{
27 return NULL;27 return NULL;
include/linux/page-flags.h+1−1
@@ -311,7 +311,7 @@ static inline int TestClearPage##uname(struct page *page) { return 0; } · 310 unmodified lines
311 311
312__PAGEFLAG(Locked, locked, PF_NO_TAIL)312__PAGEFLAG(Locked, locked, PF_NO_TAIL)
313PAGEFLAG(Waiters, waiters, PF_ONLY_HEAD) __CLEARPAGEFLAG(Waiters, waiters, PF_ONLY_HEAD)313PAGEFLAG(Waiters, waiters, PF_ONLY_HEAD) __CLEARPAGEFLAG(Waiters, waiters, PF_ONLY_HEAD)
314PAGEFLAG(Error, error, PF_NO_COMPOUND) TESTCLEARFLAG(Error, error, PF_NO_COMPOUND)314PAGEFLAG(Error, error, PF_NO_TAIL) TESTCLEARFLAG(Error, error, PF_NO_TAIL)
315PAGEFLAG(Referenced, referenced, PF_HEAD)315PAGEFLAG(Referenced, referenced, PF_HEAD)
316 TESTCLEARFLAG(Referenced, referenced, PF_HEAD)316 TESTCLEARFLAG(Referenced, referenced, PF_HEAD)
317 __SETPAGEFLAG(Referenced, referenced, PF_HEAD)317 __SETPAGEFLAG(Referenced, referenced, PF_HEAD)
include/linux/phy.h+3−0
@@ -357,6 +357,7 @@ struct macsec_ops; · 356 unmodified lines
357 * is_gigabit_capable: Set to true if PHY supports 1000Mbps357 * is_gigabit_capable: Set to true if PHY supports 1000Mbps
358 * has_fixups: Set to true if this phy has fixups/quirks.358 * has_fixups: Set to true if this phy has fixups/quirks.
359 * suspended: Set to true if this phy has been suspended successfully.359 * suspended: Set to true if this phy has been suspended successfully.
360 * suspended_by_mdio_bus: Set to true if this phy was suspended by MDIO bus.
360 * sysfs_links: Internal boolean tracking sysfs symbolic links setup/removal.361 * sysfs_links: Internal boolean tracking sysfs symbolic links setup/removal.
361 * loopback_enabled: Set true if this phy has been loopbacked successfully.362 * loopback_enabled: Set true if this phy has been loopbacked successfully.
362 * state: state of the PHY for management purposes363 * state: state of the PHY for management purposes
@@ -396,6 +397,7 @@ struct phy_device { · 33 unmodified lines
396 unsigned is_gigabit_capable:1;397 unsigned is_gigabit_capable:1;
397 unsigned has_fixups:1;398 unsigned has_fixups:1;
398 unsigned suspended:1;399 unsigned suspended:1;
400 unsigned suspended_by_mdio_bus:1;
399 unsigned sysfs_links:1;401 unsigned sysfs_links:1;
400 unsigned loopback_enabled:1;402 unsigned loopback_enabled:1;
401 403
@@ -557,6 +559,7 @@ struct phy_driver { · 155 unmodified lines
557 /*559 /*
558 * Checks if the PHY generated an interrupt.560 * Checks if the PHY generated an interrupt.
559 * For multi-PHY devices with shared PHY interrupt pin561 * For multi-PHY devices with shared PHY interrupt pin
562 * Set interrupt bits have to be cleared.
560 */563 */
561 int (*did_interrupt)(struct phy_device *phydev);564 int (*did_interrupt)(struct phy_device *phydev);
562 565
include/linux/pipe_fs_i.h+2−1
@@ -29,7 +29,8 @@ struct pipe_buffer { · 28 unmodified lines
29/**29/**
30 * struct pipe_inode_info - a linux kernel pipe30 * struct pipe_inode_info - a linux kernel pipe
31 * @mutex: mutex protecting the whole thing31 * @mutex: mutex protecting the whole thing
32 * @wait: reader/writer wait point in case of empty/full pipe32 * @rd_wait: reader wait point in case of empty pipe
33 * @wr_wait: writer wait point in case of full pipe
33 * @head: The point of buffer production34 * @head: The point of buffer production
34 * @tail: The point of buffer consumption35 * @tail: The point of buffer consumption
35 * @max_usage: The maximum number of slots that may be used in the ring36 * @max_usage: The maximum number of slots that may be used in the ring
include/linux/platform_data/spi-omap2-mcspi.h+1−0
@@ -11,6 +11,7 @@ struct omap2_mcspi_platform_config { · 10 unmodified lines
11 unsigned short num_cs;11 unsigned short num_cs;
12 unsigned int regs_offset;12 unsigned int regs_offset;
13 unsigned int pin_dir:1;13 unsigned int pin_dir:1;
14 size_t max_xfer_len;
14};15};
15 16
16struct omap2_mcspi_device_config {17struct omap2_mcspi_device_config {
include/linux/platform_device.h+1−1
@@ -24,7 +24,7 @@ struct platform_device { · 23 unmodified lines
24 int id;24 int id;
25 bool id_auto;25 bool id_auto;
26 struct device dev;26 struct device dev;
27 u64 dma_mask;27 u64 platform_dma_mask;
28 u32 num_resources;28 u32 num_resources;
29 struct resource *resource;29 struct resource *resource;
30 30
include/linux/rculist_nulls.h+7−0
@@ -145,6 +145,13 @@ static inline void hlist_nulls_add_tail_rcu(struct hlist_nulls_node *n, · 144 unmodified lines
145 }145 }
146}146}
147 147
148/* after that hlist_nulls_del will work */
149static inline void hlist_nulls_add_fake(struct hlist_nulls_node *n)
150{
151 n->pprev = &n->next;
152 n->next = (struct hlist_nulls_node *)NULLS_MARKER(NULL);
153}
154
148/**155/**
149 * hlist_nulls_for_each_entry_rcu - iterate over rcu list of given type156 * hlist_nulls_for_each_entry_rcu - iterate over rcu list of given type
150 * @tpos: the type * to use as a loop cursor.157 * @tpos: the type * to use as a loop cursor.
include/linux/rhashtable.h+1−1
@@ -972,9 +972,9 @@ static inline int rhashtable_lookup_insert_key( · 971 unmodified lines
972/**972/**
973 * rhashtable_lookup_get_insert_key - lookup and insert object into hash table973 * rhashtable_lookup_get_insert_key - lookup and insert object into hash table
974 * @ht: hash table974 * @ht: hash table
975 * @key: key
975 * @obj: pointer to hash head inside object976 * @obj: pointer to hash head inside object
976 * @params: hash table parameters977 * @params: hash table parameters
977 * @data: pointer to element data already in hashes
978 *978 *
979 * Just like rhashtable_lookup_insert_key(), but this function returns the979 * Just like rhashtable_lookup_insert_key(), but this function returns the
980 * object if it exists, NULL if it does not and the insertion was successful,980 * object if it exists, NULL if it does not and the insertion was successful,
include/linux/sched/nohz.h+2−0
@@ -15,9 +15,11 @@ static inline void nohz_balance_enter_idle(int cpu) { } · 14 unmodified lines
15 15
16#ifdef CONFIG_NO_HZ_COMMON16#ifdef CONFIG_NO_HZ_COMMON
17void calc_load_nohz_start(void);17void calc_load_nohz_start(void);
18void calc_load_nohz_remote(struct rq *rq);
18void calc_load_nohz_stop(void);19void calc_load_nohz_stop(void);
19#else20#else
20static inline void calc_load_nohz_start(void) { }21static inline void calc_load_nohz_start(void) { }
22static inline void calc_load_nohz_remote(struct rq *rq) { }
21static inline void calc_load_nohz_stop(void) { }23static inline void calc_load_nohz_stop(void) { }
22#endif /* CONFIG_NO_HZ_COMMON */24#endif /* CONFIG_NO_HZ_COMMON */
23 25
include/linux/skbuff.h+30−0
@@ -611,9 +611,15 @@ typedef unsigned char *sk_buff_data_t; · 610 unmodified lines
611 * @next: Next buffer in list611 * @next: Next buffer in list
612 * @prev: Previous buffer in list612 * @prev: Previous buffer in list
613 * @tstamp: Time we arrived/left613 * @tstamp: Time we arrived/left
614 * @skb_mstamp_ns: (aka @tstamp) earliest departure time; start point
615 * for retransmit timer
614 * @rbnode: RB tree node, alternative to next/prev for netem/tcp616 * @rbnode: RB tree node, alternative to next/prev for netem/tcp
617 * @list: queue head
615 * @sk: Socket we are owned by618 * @sk: Socket we are owned by
619 * @ip_defrag_offset: (aka @sk) alternate use of @sk, used in
620 * fragmentation management
616 * @dev: Device we arrived on/are leaving by621 * @dev: Device we arrived on/are leaving by
622 * @dev_scratch: (aka @dev) alternate use of @dev when @dev would be %NULL
617 * @cb: Control buffer. Free for use by every layer. Put private vars here623 * @cb: Control buffer. Free for use by every layer. Put private vars here
618 * @_skb_refdst: destination entry (with norefcount bit)624 * @_skb_refdst: destination entry (with norefcount bit)
619 * @sp: the security path, used for xfrm625 * @sp: the security path, used for xfrm
@@ -632,6 +638,9 @@ typedef unsigned char *sk_buff_data_t; · 12 unmodified lines
632 * @pkt_type: Packet class638 * @pkt_type: Packet class
633 * @fclone: skbuff clone status639 * @fclone: skbuff clone status
634 * @ipvs_property: skbuff is owned by ipvs640 * @ipvs_property: skbuff is owned by ipvs
641 * @inner_protocol_type: whether the inner protocol is
642 * ENCAP_TYPE_ETHER or ENCAP_TYPE_IPPROTO
643 * @remcsum_offload: remote checksum offload is enabled
635 * @offload_fwd_mark: Packet was L2-forwarded in hardware644 * @offload_fwd_mark: Packet was L2-forwarded in hardware
636 * @offload_l3_fwd_mark: Packet was L3-forwarded in hardware645 * @offload_l3_fwd_mark: Packet was L3-forwarded in hardware
637 * @tc_skip_classify: do not classify packet. set by IFB device646 * @tc_skip_classify: do not classify packet. set by IFB device
@@ -650,6 +659,8 @@ typedef unsigned char *sk_buff_data_t; · 12 unmodified lines
650 * @tc_index: Traffic control index659 * @tc_index: Traffic control index
651 * @hash: the packet hash660 * @hash: the packet hash
652 * @queue_mapping: Queue mapping for multiqueue devices661 * @queue_mapping: Queue mapping for multiqueue devices
662 * @head_frag: skb was allocated from page fragments,
663 * not allocated by kmalloc() or vmalloc().
653 * @pfmemalloc: skbuff was allocated from PFMEMALLOC reserves664 * @pfmemalloc: skbuff was allocated from PFMEMALLOC reserves
654 * @active_extensions: active extensions (skb_ext_id types)665 * @active_extensions: active extensions (skb_ext_id types)
655 * @ndisc_nodetype: router type (from link layer)666 * @ndisc_nodetype: router type (from link layer)
@@ -660,15 +671,28 @@ typedef unsigned char *sk_buff_data_t; · 4 unmodified lines
660 * @wifi_acked_valid: wifi_acked was set671 * @wifi_acked_valid: wifi_acked was set
661 * @wifi_acked: whether frame was acked on wifi or not672 * @wifi_acked: whether frame was acked on wifi or not
662 * @no_fcs: Request NIC to treat last 4 bytes as Ethernet FCS673 * @no_fcs: Request NIC to treat last 4 bytes as Ethernet FCS
674 * @encapsulation: indicates the inner headers in the skbuff are valid
675 * @encap_hdr_csum: software checksum is needed
676 * @csum_valid: checksum is already valid
663 * @csum_not_inet: use CRC32c to resolve CHECKSUM_PARTIAL677 * @csum_not_inet: use CRC32c to resolve CHECKSUM_PARTIAL
678 * @csum_complete_sw: checksum was completed by software
679 * @csum_level: indicates the number of consecutive checksums found in
680 * the packet minus one that have been verified as
681 * CHECKSUM_UNNECESSARY (max 3)
664 * @dst_pending_confirm: need to confirm neighbour682 * @dst_pending_confirm: need to confirm neighbour
665 * @decrypted: Decrypted SKB683 * @decrypted: Decrypted SKB
666 * @napi_id: id of the NAPI struct this skb came from684 * @napi_id: id of the NAPI struct this skb came from
685 * @sender_cpu: (aka @napi_id) source CPU in XPS
667 * @secmark: security marking686 * @secmark: security marking
668 * @mark: Generic packet mark687 * @mark: Generic packet mark
688 * @reserved_tailroom: (aka @mark) number of bytes of free space available
689 * at the tail of an sk_buff
690 * @vlan_present: VLAN tag is present
669 * @vlan_proto: vlan encapsulation protocol691 * @vlan_proto: vlan encapsulation protocol
670 * @vlan_tci: vlan tag control information692 * @vlan_tci: vlan tag control information
671 * @inner_protocol: Protocol (encapsulation)693 * @inner_protocol: Protocol (encapsulation)
694 * @inner_ipproto: (aka @inner_protocol) stores ipproto when
695 * skb->inner_protocol_type == ENCAP_TYPE_IPPROTO;
672 * @inner_transport_header: Inner transport layer header (encapsulation)696 * @inner_transport_header: Inner transport layer header (encapsulation)
673 * @inner_network_header: Network layer header (encapsulation)697 * @inner_network_header: Network layer header (encapsulation)
674 * @inner_mac_header: Link layer header (encapsulation)698 * @inner_mac_header: Link layer header (encapsulation)
@@ -750,7 +774,9 @@ struct sk_buff { · 75 unmodified lines
750#endif774#endif
751#define CLONED_OFFSET() offsetof(struct sk_buff, __cloned_offset)775#define CLONED_OFFSET() offsetof(struct sk_buff, __cloned_offset)
752 776
777 /* private: */
753 __u8 __cloned_offset[0];778 __u8 __cloned_offset[0];
779 /* public: */
754 __u8 cloned:1,780 __u8 cloned:1,
755 nohdr:1,781 nohdr:1,
756 fclone:2,782 fclone:2,
@@ -775,7 +801,9 @@ struct sk_buff { · 18 unmodified lines
775#endif801#endif
776#define PKT_TYPE_OFFSET() offsetof(struct sk_buff, __pkt_type_offset)802#define PKT_TYPE_OFFSET() offsetof(struct sk_buff, __pkt_type_offset)
777 803
804 /* private: */
778 __u8 __pkt_type_offset[0];805 __u8 __pkt_type_offset[0];
806 /* public: */
779 __u8 pkt_type:3;807 __u8 pkt_type:3;
780 __u8 ignore_df:1;808 __u8 ignore_df:1;
781 __u8 nf_trace:1;809 __u8 nf_trace:1;
@@ -798,7 +826,9 @@ struct sk_buff { · 16 unmodified lines
798#define PKT_VLAN_PRESENT_BIT 0826#define PKT_VLAN_PRESENT_BIT 0
799#endif827#endif
800#define PKT_VLAN_PRESENT_OFFSET() offsetof(struct sk_buff, __pkt_vlan_present_offset)828#define PKT_VLAN_PRESENT_OFFSET() offsetof(struct sk_buff, __pkt_vlan_present_offset)
829 /* private: */
801 __u8 __pkt_vlan_present_offset[0];830 __u8 __pkt_vlan_present_offset[0];
831 /* public: */
802 __u8 vlan_present:1;832 __u8 vlan_present:1;
803 __u8 csum_complete_sw:1;833 __u8 csum_complete_sw:1;
804 __u8 csum_level:2;834 __u8 csum_level:2;
include/linux/socket.h+2−1
@@ -401,7 +401,8 @@ extern int __sys_sendto(int fd, void __user *buff, size_t len, · 400 unmodified lines
401 int addr_len);401 int addr_len);
402extern int __sys_accept4_file(struct file *file, unsigned file_flags,402extern int __sys_accept4_file(struct file *file, unsigned file_flags,
403 struct sockaddr __user *upeer_sockaddr,403 struct sockaddr __user *upeer_sockaddr,
404 int __user *upeer_addrlen, int flags);404 int __user *upeer_addrlen, int flags,
405 unsigned long nofile);
405extern int __sys_accept4(int fd, struct sockaddr __user *upeer_sockaddr,406extern int __sys_accept4(int fd, struct sockaddr __user *upeer_sockaddr,
406 int __user *upeer_addrlen, int flags);407 int __user *upeer_addrlen, int flags);
407extern int __sys_socket(int family, int type, int protocol);408extern int __sys_socket(int family, int type, int protocol);
include/linux/soundwire/sdw.h+2−0
@@ -284,6 +284,7 @@ struct sdw_dpn_audio_mode { · 283 unmodified lines
284 * @max_async_buffer: Number of samples that this port can buffer in284 * @max_async_buffer: Number of samples that this port can buffer in
285 * asynchronous modes285 * asynchronous modes
286 * @block_pack_mode: Type of block port mode supported286 * @block_pack_mode: Type of block port mode supported
287 * @read_only_wordlength: Read Only wordlength field in DPN_BlockCtrl1 register
287 * @port_encoding: Payload Channel Sample encoding schemes supported288 * @port_encoding: Payload Channel Sample encoding schemes supported
288 * @audio_modes: Audio modes supported289 * @audio_modes: Audio modes supported
289 */290 */
@@ -307,6 +308,7 @@ struct sdw_dpn_prop { · 17 unmodified lines
307 u32 modes;308 u32 modes;
308 u32 max_async_buffer;309 u32 max_async_buffer;
309 bool block_pack_mode;310 bool block_pack_mode;
311 bool read_only_wordlength;
310 u32 port_encoding;312 u32 port_encoding;
311 struct sdw_dpn_audio_mode *audio_modes;313 struct sdw_dpn_audio_mode *audio_modes;
312};314};
include/linux/suspend.h+1−1
@@ -191,7 +191,7 @@ struct platform_s2idle_ops { · 190 unmodified lines
191 int (*begin)(void);191 int (*begin)(void);
192 int (*prepare)(void);192 int (*prepare)(void);
193 int (*prepare_late)(void);193 int (*prepare_late)(void);
194 void (*wake)(void);194 bool (*wake)(void);
195 void (*restore_early)(void);195 void (*restore_early)(void);
196 void (*restore)(void);196 void (*restore)(void);
197 void (*end)(void);197 void (*end)(void);
include/linux/swiotlb.h+3−8
@@ -64,6 +64,9 @@ extern void swiotlb_tbl_sync_single(struct device *hwdev, · 63 unmodified lines
64 size_t size, enum dma_data_direction dir,64 size_t size, enum dma_data_direction dir,
65 enum dma_sync_target target);65 enum dma_sync_target target);
66 66
67dma_addr_t swiotlb_map(struct device *dev, phys_addr_t phys,
68 size_t size, enum dma_data_direction dir, unsigned long attrs);
69
67#ifdef CONFIG_SWIOTLB70#ifdef CONFIG_SWIOTLB
68extern enum swiotlb_force swiotlb_force;71extern enum swiotlb_force swiotlb_force;
69extern phys_addr_t io_tlb_start, io_tlb_end;72extern phys_addr_t io_tlb_start, io_tlb_end;
@@ -73,8 +76,6 @@ static inline bool is_swiotlb_buffer(phys_addr_t paddr) · 3 unmodified lines
73 return paddr >= io_tlb_start && paddr < io_tlb_end;76 return paddr >= io_tlb_start && paddr < io_tlb_end;
74}77}
75 78
76bool swiotlb_map(struct device *dev, phys_addr_t *phys, dma_addr_t *dma_addr,
77 size_t size, enum dma_data_direction dir, unsigned long attrs);
78void __init swiotlb_exit(void);79void __init swiotlb_exit(void);
79unsigned int swiotlb_max_segment(void);80unsigned int swiotlb_max_segment(void);
80size_t swiotlb_max_mapping_size(struct device *dev);81size_t swiotlb_max_mapping_size(struct device *dev);
@@ -85,12 +86,6 @@ static inline bool is_swiotlb_buffer(phys_addr_t paddr) · 4 unmodified lines
85{86{
86 return false;87 return false;
87}88}
88static inline bool swiotlb_map(struct device *dev, phys_addr_t *phys,
89 dma_addr_t *dma_addr, size_t size, enum dma_data_direction dir,
90 unsigned long attrs)
91{
92 return false;
93}
94static inline void swiotlb_exit(void)89static inline void swiotlb_exit(void)
95{90{
96}91}
include/linux/time32.h+1−153
@@ -12,8 +12,6 @@ · 11 unmodified lines
12#include <linux/time64.h>12#include <linux/time64.h>
13#include <linux/timex.h>13#include <linux/timex.h>
14 14
15#define TIME_T_MAX (__kernel_old_time_t)((1UL << ((sizeof(__kernel_old_time_t) << 3) - 1)) - 1)
16
17typedef s32 old_time32_t;15typedef s32 old_time32_t;
18 16
19struct old_timespec32 {17struct old_timespec32 {
@@ -73,162 +71,12 @@ struct __kernel_timex; · 53 unmodified lines
73int get_old_timex32(struct __kernel_timex *, const struct old_timex32 __user *);71int get_old_timex32(struct __kernel_timex *, const struct old_timex32 __user *);
74int put_old_timex32(struct old_timex32 __user *, const struct __kernel_timex *);72int put_old_timex32(struct old_timex32 __user *, const struct __kernel_timex *);
75 73
76#if __BITS_PER_LONG == 64
77
78/* timespec64 is defined as timespec here */
79static inline struct timespec timespec64_to_timespec(const struct timespec64 ts64)
80{
81 return *(const struct timespec *)&ts64;
82}
83
84static inline struct timespec64 timespec_to_timespec64(const struct timespec ts)
85{
86 return *(const struct timespec64 *)&ts;
87}
88
89#else
90static inline struct timespec timespec64_to_timespec(const struct timespec64 ts64)
91{
92 struct timespec ret;
93
94 ret.tv_sec = (time_t)ts64.tv_sec;
95 ret.tv_nsec = ts64.tv_nsec;
96 return ret;
97}
98
99static inline struct timespec64 timespec_to_timespec64(const struct timespec ts)
100{
101 struct timespec64 ret;
102
103 ret.tv_sec = ts.tv_sec;
104 ret.tv_nsec = ts.tv_nsec;
105 return ret;
106}
107#endif
108
109static inline int timespec_equal(const struct timespec *a,
110 const struct timespec *b)
111{
112 return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec);
113}
114
115/*
116 * lhs < rhs: return <0
117 * lhs == rhs: return 0
118 * lhs > rhs: return >0
119 */
120static inline int timespec_compare(const struct timespec *lhs, const struct timespec *rhs)
121{
122 if (lhs->tv_sec < rhs->tv_sec)
123 return -1;
124 if (lhs->tv_sec > rhs->tv_sec)
125 return 1;
126 return lhs->tv_nsec - rhs->tv_nsec;
127}
128
129/*
130 * Returns true if the timespec is norm, false if denorm:
131 */
132static inline bool timespec_valid(const struct timespec *ts)
133{
134 /* Dates before 1970 are bogus */
135 if (ts->tv_sec < 0)
136 return false;
137 /* Can't have more nanoseconds then a second */
138 if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC)
139 return false;
140 return true;
141}
142
143/**
144 * timespec_to_ns - Convert timespec to nanoseconds
145 * @ts: pointer to the timespec variable to be converted
146 *
147 * Returns the scalar nanosecond representation of the timespec
148 * parameter.
149 */
150static inline s64 timespec_to_ns(const struct timespec *ts)
151{
152 return ((s64) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec;
153}
154
155/**74/**
156 * ns_to_timespec - Convert nanoseconds to timespec75 * ns_to_kernel_old_timeval - Convert nanoseconds to timeval
157 * @nsec: the nanoseconds value to be converted
158 *
159 * Returns the timespec representation of the nsec parameter.
160 */
161extern struct timespec ns_to_timespec(const s64 nsec);
162
163/**
164 * timespec_add_ns - Adds nanoseconds to a timespec
165 * @a: pointer to timespec to be incremented
166 * @ns: unsigned nanoseconds value to be added
167 *
168 * This must always be inlined because its used from the x86-64 vdso,
169 * which cannot call other kernel functions.
170 */
171static __always_inline void timespec_add_ns(struct timespec *a, u64 ns)
172{
173 a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, NSEC_PER_SEC, &ns);
174 a->tv_nsec = ns;
175}
176
177static inline unsigned long mktime(const unsigned int year,
178 const unsigned int mon, const unsigned int day,
179 const unsigned int hour, const unsigned int min,
180 const unsigned int sec)
181{
182 return mktime64(year, mon, day, hour, min, sec);
183}
184
185static inline bool timeval_valid(const struct timeval *tv)
186{
187 /* Dates before 1970 are bogus */
188 if (tv->tv_sec < 0)
189 return false;
190
191 /* Can't have more microseconds then a second */
192 if (tv->tv_usec < 0 || tv->tv_usec >= USEC_PER_SEC)
193 return false;
194
195 return true;
196}
197
198/**
199 * timeval_to_ns - Convert timeval to nanoseconds
200 * @ts: pointer to the timeval variable to be converted
201 *
202 * Returns the scalar nanosecond representation of the timeval
203 * parameter.
204 */
205static inline s64 timeval_to_ns(const struct timeval *tv)
206{
207 return ((s64) tv->tv_sec * NSEC_PER_SEC) +
208 tv->tv_usec * NSEC_PER_USEC;
209}
210
211/**
212 * ns_to_timeval - Convert nanoseconds to timeval
213 * @nsec: the nanoseconds value to be converted76 * @nsec: the nanoseconds value to be converted
214 *77 *
215 * Returns the timeval representation of the nsec parameter.78 * Returns the timeval representation of the nsec parameter.
216 */79 */
217extern struct timeval ns_to_timeval(const s64 nsec);
218extern struct __kernel_old_timeval ns_to_kernel_old_timeval(s64 nsec);80extern struct __kernel_old_timeval ns_to_kernel_old_timeval(s64 nsec);
219 81
220/*
221 * Old names for the 32-bit time_t interfaces, these will be removed
222 * when everything uses the new names.
223 */
224#define compat_time_t old_time32_t
225#define compat_timeval old_timeval32
226#define compat_timespec old_timespec32
227#define compat_itimerspec old_itimerspec32
228#define ns_to_compat_timeval ns_to_old_timeval32
229#define get_compat_itimerspec64 get_old_itimerspec32
230#define put_compat_itimerspec64 put_old_itimerspec32
231#define compat_get_timespec64 get_old_timespec32
232#define compat_put_timespec64 put_old_timespec32
233
234#endif82#endif
include/linux/timekeeping32.h+0−32
@@ -11,36 +11,4 @@ static inline unsigned long get_seconds(void) · 10 unmodified lines
11 return ktime_get_real_seconds();11 return ktime_get_real_seconds();
12}12}
13 13
14static inline void getnstimeofday(struct timespec *ts)
15{
16 struct timespec64 ts64;
17
18 ktime_get_real_ts64(&ts64);
19 *ts = timespec64_to_timespec(ts64);
20}
21
22static inline void ktime_get_ts(struct timespec *ts)
23{
24 struct timespec64 ts64;
25
26 ktime_get_ts64(&ts64);
27 *ts = timespec64_to_timespec(ts64);
28}
29
30static inline void getrawmonotonic(struct timespec *ts)
31{
32 struct timespec64 ts64;
33
34 ktime_get_raw_ts64(&ts64);
35 *ts = timespec64_to_timespec(ts64);
36}
37
38static inline void getboottime(struct timespec *ts)
39{
40 struct timespec64 ts64;
41
42 getboottime64(&ts64);
43 *ts = timespec64_to_timespec(ts64);
44}
45
46#endif14#endif
include/linux/trace_events.h+1−1
@@ -440,7 +440,7 @@ struct synth_event_trace_state { · 439 unmodified lines
440 struct synth_event *event;440 struct synth_event *event;
441 unsigned int cur_field;441 unsigned int cur_field;
442 unsigned int n_u64;442 unsigned int n_u64;
443 bool enabled;443 bool disabled;
444 bool add_next;444 bool add_next;
445 bool add_name;445 bool add_name;
446};446};
include/linux/tty.h+2−0
@@ -225,6 +225,8 @@ struct tty_port_client_operations { · 224 unmodified lines
225 void (*write_wakeup)(struct tty_port *port);225 void (*write_wakeup)(struct tty_port *port);
226};226};
227 227
228extern const struct tty_port_client_operations tty_port_default_client_ops;
229
228struct tty_port {230struct tty_port {
229 struct tty_bufhead buf; /* Locked internally */231 struct tty_bufhead buf; /* Locked internally */
230 struct tty_struct *tty; /* Back pointer */232 struct tty_struct *tty; /* Back pointer */
include/linux/types.h+0−5
@@ -65,11 +65,6 @@ typedef __kernel_ssize_t ssize_t; · 64 unmodified lines
65typedef __kernel_ptrdiff_t ptrdiff_t;65typedef __kernel_ptrdiff_t ptrdiff_t;
66#endif66#endif
67 67
68#ifndef _TIME_T
69#define _TIME_T
70typedef __kernel_old_time_t time_t;
71#endif
72
73#ifndef _CLOCK_T68#ifndef _CLOCK_T
74#define _CLOCK_T69#define _CLOCK_T
75typedef __kernel_clock_t clock_t;70typedef __kernel_clock_t clock_t;
include/linux/usb/quirks.h+3−0
@@ -69,4 +69,7 @@ · 68 unmodified lines
69/* Hub needs extra delay after resetting its port. */69/* Hub needs extra delay after resetting its port. */
70#define USB_QUIRK_HUB_SLOW_RESET BIT(14)70#define USB_QUIRK_HUB_SLOW_RESET BIT(14)
71 71
72/* device has blacklisted endpoints */
73#define USB_QUIRK_ENDPOINT_BLACKLIST BIT(15)
74
72#endif /* __LINUX_USB_QUIRKS_H */75#endif /* __LINUX_USB_QUIRKS_H */
include/linux/vmalloc.h+3−2
@@ -141,8 +141,9 @@ extern int remap_vmalloc_range_partial(struct vm_area_struct *vma, · 140 unmodified lines
141 141
142extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr,142extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr,
143 unsigned long pgoff);143 unsigned long pgoff);
144void vmalloc_sync_all(void);144void vmalloc_sync_mappings(void);
145 145void vmalloc_sync_unmappings(void);
146
146/*147/*
147 * Lowlevel-APIs (not for driver use!)148 * Lowlevel-APIs (not for driver use!)
148 */149 */
include/linux/workqueue.h+16−0
@@ -487,6 +487,19 @@ extern void wq_worker_comm(char *buf, size_t size, struct task_struct *task); · 486 unmodified lines
487 *487 *
488 * We queue the work to the CPU on which it was submitted, but if the CPU dies488 * We queue the work to the CPU on which it was submitted, but if the CPU dies
489 * it can be processed by another CPU.489 * it can be processed by another CPU.
490 *
491 * Memory-ordering properties: If it returns %true, guarantees that all stores
492 * preceding the call to queue_work() in the program order will be visible from
493 * the CPU which will execute @work by the time such work executes, e.g.,
494 *
495 * { x is initially 0 }
496 *
497 * CPU0 CPU1
498 *
499 * WRITE_ONCE(x, 1); [ @work is being executed ]
500 * r0 = queue_work(wq, work); r1 = READ_ONCE(x);
501 *
502 * Forbids: r0 == true && r1 == 0
490 */503 */
491static inline bool queue_work(struct workqueue_struct *wq,504static inline bool queue_work(struct workqueue_struct *wq,
492 struct work_struct *work)505 struct work_struct *work)
@@ -546,6 +559,9 @@ static inline bool schedule_work_on(int cpu, struct work_struct *work) · 53 unmodified lines
546 * This puts a job in the kernel-global workqueue if it was not already559 * This puts a job in the kernel-global workqueue if it was not already
547 * queued and leaves it in the same position on the kernel-global560 * queued and leaves it in the same position on the kernel-global
548 * workqueue otherwise.561 * workqueue otherwise.
562 *
563 * Shares the same memory-ordering properties of queue_work(), cf. the
564 * DocBook header of queue_work().
549 */565 */
550static inline bool schedule_work(struct work_struct *work)566static inline bool schedule_work(struct work_struct *work)
551{567{