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.
Showing the changes to include/linux (50 of 1917 files). Show all
Unified · Split
| @@ -524,7 +524,7 @@ struct request_queue { · 523 unmodified lines | ||
| 524 | 524 | unsigned int sg_reserved_size; |
| 525 | 525 | int node; |
| 526 | 526 | #ifdef CONFIG_BLK_DEV_IO_TRACE |
| 527 | − struct blk_trace *blk_trace; | |
| 527 | + struct blk_trace __rcu *blk_trace; | |
| 528 | 528 | struct mutex blk_trace_mutex; |
| 529 | 529 | #endif |
| 530 | 530 | /* |
| @@ -1494,7 +1494,6 @@ static inline void put_dev_sector(Sector p) · 963 unmodified lines | ||
| 1494 | 1494 | } |
| 1495 | 1495 | |
| 1496 | 1496 | int kblockd_schedule_work(struct work_struct *work); |
| 1497 | −int kblockd_schedule_work_on(int cpu, struct work_struct *work); | |
| 1498 | 1497 | int kblockd_mod_delayed_work_on(int cpu, struct delayed_work *dwork, unsigned long delay); |
| 1499 | 1498 | |
| 1500 | 1499 | #define MODULE_ALIAS_BLOCKDEV(major,minor) \ |
| @@ -51,9 +51,13 @@ void __trace_note_message(struct blk_trace *, struct blkcg *blkcg, const char *f · 50 unmodified lines | ||
| 51 | 51 | **/ |
| 52 | 52 | #define blk_add_cgroup_trace_msg(q, cg, fmt, ...) \ |
| 53 | 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 | 58 | if (unlikely(bt)) \ |
| 56 | 59 | __trace_note_message(bt, cg, fmt, ##__VA_ARGS__);\ |
| 60 | + rcu_read_unlock(); \ | |
| 57 | 61 | } while (0) |
| 58 | 62 | #define blk_add_trace_msg(q, fmt, ...) \ |
| 59 | 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 | |
| 62 | 66 | static inline bool blk_trace_note_message_enabled(struct request_queue *q) |
| 63 | 67 | { |
| 64 | − struct blk_trace *bt = q->blk_trace; | |
| 65 | − if (likely(!bt)) | |
| 66 | − return false; | |
| 67 | − return bt->act_mask & BLK_TC_NOTIFY; | |
| 68 | + struct blk_trace *bt; | |
| 69 | + bool ret; | |
| 70 | + | |
| 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 | |
| 70 | 78 | extern void blk_add_driver_data(struct request_queue *q, struct request *rq, |
| @@ -10,6 +10,9 @@ · 9 unmodified lines | ||
| 10 | 10 | #include <linux/kernel.h> |
| 11 | 11 | #include <linux/types.h> |
| 12 | 12 | |
| 13 | +#define BOOTCONFIG_MAGIC "#BOOTCONFIG\n" | |
| 14 | +#define BOOTCONFIG_MAGIC_LEN 12 | |
| 15 | + | |
| 13 | 16 | /* XBC tree node */ |
| 14 | 17 | struct xbc_node { |
| 15 | 18 | u16 next; |
| @@ -62,6 +62,7 @@ struct css_task_iter { · 61 unmodified lines | ||
| 62 | 62 | struct list_head *mg_tasks_head; |
| 63 | 63 | struct list_head *dying_tasks_head; |
| 64 | 64 | |
| 65 | + struct list_head *cur_tasks_head; | |
| 65 | 66 | struct css_set *cur_cset; |
| 66 | 67 | struct css_set *cur_dcset; |
| 67 | 68 | struct task_struct *cur_task; |
| @@ -248,15 +248,6 @@ typedef struct compat_siginfo { · 247 unmodified lines | ||
| 248 | 248 | } _sifields; |
| 249 | 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 | − */ | |
| 255 | −extern int compat_get_timespec(struct timespec *, const void __user *); | |
| 256 | −extern int compat_put_timespec(const struct timespec *, void __user *); | |
| 257 | −extern int compat_get_timeval(struct timeval *, const void __user *); | |
| 258 | −extern int compat_put_timeval(const struct timeval *, void __user *); | |
| 259 | − | |
| 260 | 251 | struct compat_iovec { |
| 261 | 252 | compat_uptr_t iov_base; |
| 262 | 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 | ||
| 416 | 407 | int get_compat_sigevent(struct sigevent *event, |
| 417 | 408 | const struct compat_sigevent __user *u_event); |
| 418 | 409 | |
| 419 | −static 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 | − | |
| 429 | −static 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 | − | |
| 439 | 410 | extern int get_compat_sigset(sigset_t *set, const compat_sigset_t __user *compat); |
| 440 | 411 | |
| 441 | 412 | /* |
| @@ -201,9 +201,6 @@ static inline bool policy_is_shared(struct cpufreq_policy *policy) · 200 unmodified lines | ||
| 201 | 201 | return cpumask_weight(policy->cpus) > 1; |
| 202 | 202 | } |
| 203 | 203 | |
| 204 | −/* /sys/devices/system/cpu/cpufreq: entry point for global variables */ | |
| 205 | −extern struct kobject *cpufreq_global_kobject; | |
| 206 | − | |
| 207 | 204 | #ifdef CONFIG_CPU_FREQ |
| 208 | 205 | unsigned int cpufreq_get(unsigned int cpu); |
| 209 | 206 | unsigned int cpufreq_quick_get(unsigned int cpu); |
| @@ -129,11 +129,6 @@ static inline bool generic_fsdax_supported(struct dax_device *dax_dev, · 128 unmodified lines | ||
| 129 | 129 | sectors); |
| 130 | 130 | } |
| 131 | 131 | |
| 132 | −static inline struct dax_device *fs_dax_get_by_host(const char *host) | |
| 133 | −{ | |
| 134 | − return dax_get_by_host(host); | |
| 135 | −} | |
| 136 | − | |
| 137 | 132 | static inline void fs_put_dax(struct dax_device *dax_dev) |
| 138 | 133 | { |
| 139 | 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 | |
| 142 | 137 | struct dax_device *fs_dax_get_by_bdev(struct block_device *bdev); |
| 143 | 138 | int 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 | |
| 146 | 141 | struct page *dax_layout_busy_page(struct address_space *mapping); |
| 147 | 142 | dax_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 | 155 | return false; |
| 161 | 156 | } |
| 162 | 157 | |
| 163 | −static inline struct dax_device *fs_dax_get_by_host(const char *host) | |
| 164 | −{ | |
| 165 | − return NULL; | |
| 166 | −} | |
| 167 | − | |
| 168 | 158 | static 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 | |
| 182 | 172 | static 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 | 175 | return -EOPNOTSUPP; |
| 186 | 176 | } |
| @@ -127,9 +127,9 @@ struct dentry *debugfs_create_blob(const char *name, umode_t mode, · 126 unmodified lines | ||
| 127 | 127 | struct dentry *parent, |
| 128 | 128 | struct debugfs_blob_wrapper *blob); |
| 129 | 129 | |
| 130 | −struct dentry *debugfs_create_regset32(const char *name, umode_t mode, | |
| 131 | − struct dentry *parent, | |
| 132 | − struct debugfs_regset32 *regset); | |
| 130 | +void debugfs_create_regset32(const char *name, umode_t mode, | |
| 131 | + struct dentry *parent, | |
| 132 | + struct debugfs_regset32 *regset); | |
| 133 | 133 | |
| 134 | 134 | void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs, |
| 135 | 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 | 304 | return ERR_PTR(-ENODEV); |
| 305 | 305 | } |
| 306 | 306 | |
| 307 | −static inline struct dentry *debugfs_create_regset32(const char *name, | |
| 308 | − umode_t mode, struct dentry *parent, | |
| 309 | − struct debugfs_regset32 *regset) | |
| 307 | +static inline void debugfs_create_regset32(const char *name, umode_t mode, | |
| 308 | + struct dentry *parent, | |
| 309 | + struct debugfs_regset32 *regset) | |
| 310 | 310 | { |
| 311 | − return ERR_PTR(-ENODEV); | |
| 312 | 311 | } |
| 313 | 312 | |
| 314 | 313 | static inline void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs, |
| @@ -798,6 +798,17 @@ static inline struct device_node *dev_of_node(struct device *dev) · 797 unmodified lines | ||
| 798 | 798 | return dev->of_node; |
| 799 | 799 | } |
| 800 | 800 | |
| 801 | +static 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 | 813 | * High level routines for use by the bus drivers |
| 803 | 814 | */ |
| @@ -69,19 +69,23 @@ struct dmar_pci_notify_info { · 68 unmodified lines | ||
| 69 | 69 | extern struct rw_semaphore dmar_global_lock; |
| 70 | 70 | extern struct list_head dmar_drhd_units; |
| 71 | 71 | |
| 72 | −#define for_each_drhd_unit(drhd) \ | |
| 73 | − list_for_each_entry_rcu(drhd, &dmar_drhd_units, list) | |
| 72 | +#define for_each_drhd_unit(drhd) \ | |
| 73 | + list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \ | |
| 74 | + dmar_rcu_check()) | |
| 74 | 75 | |
| 75 | 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 | 79 | if (drhd->ignored) {} else |
| 78 | 80 | |
| 79 | 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 | 84 | if (i=drhd->iommu, drhd->ignored) {} else |
| 82 | 85 | |
| 83 | 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 | 89 | if (i=drhd->iommu, 0) {} else |
| 86 | 90 | |
| 87 | 91 | static inline bool dmar_rcu_check(void) |
| @@ -85,6 +85,7 @@ extern int f_dupfd(unsigned int from, struct file *file, unsigned flags); · 84 unmodified lines | ||
| 85 | 85 | extern int replace_fd(unsigned fd, struct file *file, unsigned flags); |
| 86 | 86 | extern void set_close_on_exec(unsigned int fd, int flag); |
| 87 | 87 | extern bool get_close_on_exec(unsigned int fd); |
| 88 | +extern int __get_unused_fd_flags(unsigned flags, unsigned long nofile); | |
| 88 | 89 | extern int get_unused_fd_flags(unsigned flags); |
| 89 | 90 | extern void put_unused_fd(unsigned int fd); |
| 90 | 91 | |
| @@ -698,6 +698,7 @@ struct inode { · 697 unmodified lines | ||
| 698 | 698 | struct rcu_head i_rcu; |
| 699 | 699 | }; |
| 700 | 700 | atomic64_t i_version; |
| 701 | + atomic64_t i_sequence; /* see futex */ | |
| 701 | 702 | atomic_t i_count; |
| 702 | 703 | atomic_t i_dio_count; |
| 703 | 704 | atomic_t i_writecount; |
| @@ -31,23 +31,26 @@ struct task_struct; · 30 unmodified lines | ||
| 31 | 31 | |
| 32 | 32 | union futex_key { |
| 33 | 33 | struct { |
| 34 | + u64 i_seq; | |
| 34 | 35 | unsigned long pgoff; |
| 35 | − struct inode *inode; | |
| 36 | − int offset; | |
| 36 | + unsigned int offset; | |
| 37 | 37 | } shared; |
| 38 | 38 | struct { |
| 39 | + union { | |
| 40 | + struct mm_struct *mm; | |
| 41 | + u64 __tmp; | |
| 42 | + }; | |
| 39 | 43 | unsigned long address; |
| 40 | − struct mm_struct *mm; | |
| 41 | − int offset; | |
| 44 | + unsigned int offset; | |
| 42 | 45 | } private; |
| 43 | 46 | struct { |
| 47 | + u64 ptr; | |
| 44 | 48 | unsigned long word; |
| 45 | − void *ptr; | |
| 46 | − int offset; | |
| 49 | + unsigned int offset; | |
| 47 | 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 | 55 | #ifdef CONFIG_FUTEX |
| 53 | 56 | enum { |
| @@ -245,18 +245,6 @@ static inline bool disk_part_scan_enabled(struct gendisk *disk) · 244 unmodified lines | ||
| 245 | 245 | !(disk->flags & GENHD_FL_NO_PART_SCAN); |
| 246 | 246 | } |
| 247 | 247 | |
| 248 | −static 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 | − | |
| 260 | 248 | static inline dev_t disk_devt(struct gendisk *disk) |
| 261 | 249 | { |
| 262 | 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 | |
| 299 | 287 | extern struct hd_struct *disk_map_sector_rcu(struct gendisk *disk, |
| 300 | 288 | sector_t sector); |
| 289 | +bool disk_has_partitions(struct gendisk *disk); | |
| 301 | 290 | |
| 302 | 291 | /* |
| 303 | 292 | * Macros to operate on percpu disk statistics: |
| @@ -492,7 +492,7 @@ struct hid_report_enum { · 491 unmodified lines | ||
| 492 | 492 | }; |
| 493 | 493 | |
| 494 | 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 | 496 | #define HID_CONTROL_FIFO_SIZE 256 /* to init devices with >100 reports */ |
| 497 | 497 | #define HID_OUTPUT_FIFO_SIZE 64 |
| 498 | 498 | |
| @@ -22,12 +22,22 @@ extern int inet6_unregister_icmp_sender(ip6_icmp_send_t *fn); · 21 unmodified lines | ||
| 22 | 22 | int ip6_err_gen_icmpv6_unreach(struct sk_buff *skb, int nhs, int type, |
| 23 | 23 | unsigned int data_len); |
| 24 | 24 | |
| 25 | +#if IS_ENABLED(CONFIG_NF_NAT) | |
| 26 | +void 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 | 31 | #else |
| 26 | 32 | |
| 27 | 33 | static inline void icmpv6_send(struct sk_buff *skb, |
| 28 | 34 | u8 type, u8 code, __u32 info) |
| 29 | 35 | { |
| 36 | +} | |
| 30 | 37 | |
| 38 | +static inline void icmpv6_ndo_send(struct sk_buff *skb, | |
| 39 | + u8 type, u8 code, __u32 info) | |
| 40 | +{ | |
| 31 | 41 | } |
| 32 | 42 | #endif |
| 33 | 43 | |
| @@ -2,15 +2,10 @@ · 1 unmodified line | ||
| 2 | 2 | #ifndef _INET_DIAG_H_ |
| 3 | 3 | #define _INET_DIAG_H_ 1 |
| 4 | 4 | |
| 5 | +#include <net/netlink.h> | |
| 5 | 6 | #include <uapi/linux/inet_diag.h> |
| 6 | 7 | |
| 7 | −struct net; | |
| 8 | −struct sock; | |
| 9 | 8 | struct inet_hashinfo; |
| 10 | −struct nlattr; | |
| 11 | −struct nlmsghdr; | |
| 12 | −struct sk_buff; | |
| 13 | −struct netlink_callback; | |
| 14 | 9 | |
| 15 | 10 | struct inet_diag_handler { |
| 16 | 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 | |
| 63 | 58 | void inet_diag_msg_common_fill(struct inet_diag_msg *r, struct sock *sk); |
| 64 | 59 | |
| 60 | +static 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 | +} | |
| 65 | 71 | int inet_diag_msg_attrs_fill(struct sock *sk, struct sk_buff *skb, |
| 66 | 72 | struct inet_diag_msg *r, int ext, |
| 67 | 73 | struct user_namespace *user_ns, bool net_admin); |
| @@ -123,6 +123,8 @@ · 122 unmodified lines | ||
| 123 | 123 | |
| 124 | 124 | #define dmar_readq(a) readq(a) |
| 125 | 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 | 129 | #define DMAR_VER_MAJOR(v) (((v) & 0xf0) >> 4) |
| 128 | 130 | #define DMAR_VER_MINOR(v) ((v) & 0x0f) |
| @@ -122,7 +122,7 @@ static inline int intel_svm_unbind_mm(struct device *dev, int pasid) · 121 unmodified lines | ||
| 122 | 122 | BUG(); |
| 123 | 123 | } |
| 124 | 124 | |
| 125 | −static int intel_svm_is_pasid_valid(struct device *dev, int pasid) | |
| 125 | +static inline int intel_svm_is_pasid_valid(struct device *dev, int pasid) | |
| 126 | 126 | { |
| 127 | 127 | return -EINVAL; |
| 128 | 128 | } |
| @@ -192,7 +192,7 @@ enum { · 191 unmodified lines | ||
| 192 | 192 | IRQ_DOMAIN_FLAG_HIERARCHY = (1 << 0), |
| 193 | 193 | |
| 194 | 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 | 197 | /* Irq domain is an IPI domain with virq per cpu */ |
| 198 | 198 | IRQ_DOMAIN_FLAG_IPI_PER_CPU = (1 << 2), |
| @@ -66,33 +66,15 @@ static inline ktime_t ktime_set(const s64 secs, const unsigned long nsecs) · 65 unmodified lines | ||
| 66 | 66 | */ |
| 67 | 67 | #define ktime_sub_ns(kt, nsval) ((kt) - (nsval)) |
| 68 | 68 | |
| 69 | −/* convert a timespec to ktime_t format: */ | |
| 70 | −static inline ktime_t timespec_to_ktime(struct timespec ts) | |
| 71 | −{ | |
| 72 | − return ktime_set(ts.tv_sec, ts.tv_nsec); | |
| 73 | −} | |
| 74 | − | |
| 75 | 69 | /* convert a timespec64 to ktime_t format: */ |
| 76 | 70 | static inline ktime_t timespec64_to_ktime(struct timespec64 ts) |
| 77 | 71 | { |
| 78 | 72 | return ktime_set(ts.tv_sec, ts.tv_nsec); |
| 79 | 73 | } |
| 80 | 74 | |
| 81 | −/* convert a timeval to ktime_t format: */ | |
| 82 | −static 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 | 75 | /* Map the ktime_t to timespec conversion to ns_to_timespec function */ |
| 91 | 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 | 78 | /* Convert ktime_t to nanoseconds */ |
| 97 | 79 | static 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 | |
| 216 | 198 | extern 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 | − */ | |
| 226 | −static 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 | 201 | * ktime_to_timespec64_cond - convert a ktime_t variable to timespec64 |
| 239 | 202 | * format only if the variable contains data |
| @@ -889,6 +889,8 @@ int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu); · 888 unmodified lines | ||
| 889 | 889 | bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu); |
| 890 | 890 | int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu); |
| 891 | 891 | bool kvm_arch_dy_runnable(struct kvm_vcpu *vcpu); |
| 892 | +int kvm_arch_post_init_vm(struct kvm *kvm); | |
| 893 | +void kvm_arch_pre_destroy_vm(struct kvm *kvm); | |
| 892 | 894 | |
| 893 | 895 | #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 | 1344 | #endif /* CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT */ |
| 1343 | 1345 | |
| 1344 | 1346 | struct kvm_vcpu *kvm_get_running_vcpu(void); |
| 1345 | −struct kvm_vcpu __percpu **kvm_get_running_vcpus(void); | |
| 1347 | +struct kvm_vcpu * __percpu *kvm_get_running_vcpus(void); | |
| 1346 | 1348 | |
| 1347 | 1349 | #ifdef CONFIG_HAVE_KVM_IRQ_BYPASS |
| 1348 | 1350 | bool kvm_arch_has_irq_bypass(void); |
| @@ -688,7 +688,10 @@ struct mlx5_ifc_flow_table_nic_cap_bits { · 687 unmodified lines | ||
| 688 | 688 | u8 nic_rx_multi_path_tirs[0x1]; |
| 689 | 689 | u8 nic_rx_multi_path_tirs_fts[0x1]; |
| 690 | 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 | 695 | u8 encap_general_header[0x1]; |
| 693 | 696 | u8 reserved_at_21[0xa]; |
| 694 | 697 | u8 log_max_packet_reformat_context[0x5]; |
| @@ -2715,6 +2715,10 @@ static inline bool debug_pagealloc_enabled_static(void) · 2714 unmodified lines | ||
| 2715 | 2715 | #if defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_ARCH_HAS_SET_DIRECT_MAP) |
| 2716 | 2716 | extern 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 | + */ | |
| 2718 | 2722 | static inline void |
| 2719 | 2723 | kernel_map_pages(struct page *page, int numpages, int enable) |
| 2720 | 2724 | { |
| @@ -333,6 +333,7 @@ struct mmc_host { · 332 unmodified lines | ||
| 333 | 333 | MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR104 | \ |
| 334 | 334 | MMC_CAP_UHS_DDR50) |
| 335 | 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 | 337 | #define MMC_CAP_DRIVER_TYPE_A (1 << 23) /* Host supports Driver Type A */ |
| 337 | 338 | #define MMC_CAP_DRIVER_TYPE_C (1 << 24) /* Host supports Driver Type C */ |
| 338 | 339 | #define MMC_CAP_DRIVER_TYPE_D (1 << 25) /* Host supports Driver Type D */ |
| @@ -72,6 +72,8 @@ void netdev_set_default_ethtool_ops(struct net_device *dev, · 71 unmodified lines | ||
| 72 | 72 | #define NET_RX_SUCCESS 0 /* keep 'em coming, baby */ |
| 73 | 73 | #define NET_RX_DROP 1 /* packet dropped */ |
| 74 | 74 | |
| 75 | +#define MAX_NEST_DEV 8 | |
| 76 | + | |
| 75 | 77 | /* |
| 76 | 78 | * Transmit return codes: transmit return codes originate from three different |
| 77 | 79 | * namespaces: |
| @@ -1616,6 +1618,7 @@ enum netdev_priv_flags { · 1538 unmodified lines | ||
| 1616 | 1618 | * and drivers will need to set them appropriately. |
| 1617 | 1619 | * |
| 1618 | 1620 | * @mpls_features: Mask of features inheritable by MPLS |
| 1621 | + * @gso_partial_features: value(s) from NETIF_F_GSO\* | |
| 1619 | 1622 | * |
| 1620 | 1623 | * @ifindex: interface index |
| 1621 | 1624 | * @group: The group the device belongs to |
| @@ -1640,8 +1643,11 @@ enum netdev_priv_flags { · 18 unmodified lines | ||
| 1640 | 1643 | * @netdev_ops: Includes several pointers to callbacks, |
| 1641 | 1644 | * if one wants to override the ndo_*() functions |
| 1642 | 1645 | * @ethtool_ops: Management operations |
| 1646 | + * @l3mdev_ops: Layer 3 master device operations | |
| 1643 | 1647 | * @ndisc_ops: Includes callbacks for different IPv6 neighbour |
| 1644 | 1648 | * discovery handling. Necessary for e.g. 6LoWPAN. |
| 1649 | + * @xfrmdev_ops: Transformation offload operations | |
| 1650 | + * @tlsdev_ops: Transport Layer Security offload operations | |
| 1645 | 1651 | * @header_ops: Includes callbacks for creating,parsing,caching,etc |
| 1646 | 1652 | * of Layer 2 headers. |
| 1647 | 1653 | * |
| @@ -1680,6 +1686,7 @@ enum netdev_priv_flags { · 32 unmodified lines | ||
| 1680 | 1686 | * @dev_port: Used to differentiate devices that share |
| 1681 | 1687 | * the same function |
| 1682 | 1688 | * @addr_list_lock: XXX: need comments on this one |
| 1689 | + * @name_assign_type: network interface name assignment type | |
| 1683 | 1690 | * @uc_promisc: Counter that indicates promiscuous mode |
| 1684 | 1691 | * has been enabled due to the need to listen to |
| 1685 | 1692 | * additional unicast addresses in a device that |
| @@ -1702,6 +1709,9 @@ enum netdev_priv_flags { · 16 unmodified lines | ||
| 1702 | 1709 | * @ip6_ptr: IPv6 specific data |
| 1703 | 1710 | * @ax25_ptr: AX.25 specific data |
| 1704 | 1711 | * @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 | 1716 | * @dev_addr: Hw address (before bcast, |
| 1707 | 1717 | * because most packets are unicast) |
| @@ -1710,6 +1720,8 @@ enum netdev_priv_flags { · 2 unmodified lines | ||
| 1710 | 1720 | * @num_rx_queues: Number of RX queues |
| 1711 | 1721 | * allocated at register_netdev() time |
| 1712 | 1722 | * @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 | 1726 | * @rx_handler: handler for received packets |
| 1715 | 1727 | * @rx_handler_data: XXX: need comments on this one |
| @@ -1731,10 +1743,14 @@ enum netdev_priv_flags { · 15 unmodified lines | ||
| 1731 | 1743 | * @qdisc: Root qdisc from userspace point of view |
| 1732 | 1744 | * @tx_queue_len: Max frames per queue allowed |
| 1733 | 1745 | * @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 | 1750 | * @xps_maps: XXX: need comments on this one |
| 1736 | 1751 | * @miniq_egress: clsact qdisc specific data for |
| 1737 | 1752 | * egress processing |
| 1753 | + * @qdisc_hash: qdisc hash table | |
| 1738 | 1754 | * @watchdog_timeo: Represents the timeout that is used by |
| 1739 | 1755 | * the watchdog (see dev_watchdog()) |
| 1740 | 1756 | * @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 & *src2p | |
| 3567 | + * netif_attrmask_next_and - get the next CPU/Rx queue in \*src1p & \*src2p | |
| 3552 | 3568 | * @n: CPU/Rx queue index |
| 3553 | 3569 | * @src1p: the first CPUs/Rx queues mask pointer |
| 3554 | 3570 | * @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 | 4391 | ldev; \ |
| 4376 | 4392 | ldev = netdev_lower_get_next(dev, &(iter))) |
| 4377 | 4393 | |
| 4378 | −struct net_device *netdev_all_lower_get_next(struct net_device *dev, | |
| 4394 | +struct net_device *netdev_next_lower_dev_rcu(struct net_device *dev, | |
| 4379 | 4395 | struct list_head **iter); |
| 4380 | −struct net_device *netdev_all_lower_get_next_rcu(struct net_device *dev, | |
| 4381 | − struct list_head **iter); | |
| 4382 | − | |
| 4383 | 4396 | int netdev_walk_all_lower_dev(struct net_device *dev, |
| 4384 | 4397 | int (*fn)(struct net_device *lower_dev, |
| 4385 | 4398 | void *data), |
| @@ -121,6 +121,7 @@ struct ip_set_ext { · 120 unmodified lines | ||
| 121 | 121 | u32 timeout; |
| 122 | 122 | u8 packets_op; |
| 123 | 123 | u8 bytes_op; |
| 124 | + bool target; | |
| 124 | 125 | }; |
| 125 | 126 | |
| 126 | 127 | struct ip_set; |
| @@ -187,6 +188,14 @@ struct ip_set_type_variant { · 60 unmodified lines | ||
| 187 | 188 | /* Return true if "b" set is the same as "a" |
| 188 | 189 | * according to the create set parameters */ |
| 189 | 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 | + | |
| 195 | +struct 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 | 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 | 512 | #define IP_SET_INIT_KEXT(skb, opt, set) \ |
| 504 | − { .bytes = (skb)->len, .packets = 1, \ | |
| 513 | + { .bytes = (skb)->len, .packets = 1, .target = true,\ | |
| 505 | 514 | .timeout = ip_set_adt_opt_timeout(opt, set) } |
| 506 | 515 | |
| 507 | 516 | #define IP_SET_INIT_UEXT(set) \ |
| @@ -337,35 +337,17 @@ static inline int nfs_server_capable(struct inode *inode, int cap) · 336 unmodified lines | ||
| 337 | 337 | return NFS_SERVER(inode)->caps & cap; |
| 338 | 338 | } |
| 339 | 339 | |
| 340 | −static inline void nfs_set_verifier(struct dentry * dentry, unsigned long verf) | |
| 341 | −{ | |
| 342 | − dentry->d_time = verf; | |
| 343 | −} | |
| 344 | − | |
| 345 | 340 | /** |
| 346 | 341 | * nfs_save_change_attribute - Returns the inode attribute change cookie |
| 347 | 342 | * @dir - pointer to parent directory inode |
| 348 | − * The "change attribute" is updated every time we finish an operation | |
| 349 | − * that will result in a metadata change on the server. | |
| 343 | + * The "cache change attribute" is updated when we need to revalidate | |
| 344 | + * our dentry cache after a directory was seen to change on the server. | |
| 350 | 345 | */ |
| 351 | 346 | static inline unsigned long nfs_save_change_attribute(struct inode *dir) |
| 352 | 347 | { |
| 353 | 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 | − */ | |
| 364 | −static 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 | 352 | * linux/fs/nfs/inode.c |
| 371 | 353 | */ |
| @@ -495,6 +477,10 @@ extern const struct file_operations nfs_dir_operations; · 123 unmodified lines | ||
| 495 | 477 | extern const struct dentry_operations nfs_dentry_operations; |
| 496 | 478 | |
| 497 | 479 | extern void nfs_force_lookup_revalidate(struct inode *dir); |
| 480 | +extern void nfs_set_verifier(struct dentry * dentry, unsigned long verf); | |
| 481 | +#if IS_ENABLED(CONFIG_NFS_V4) | |
| 482 | +extern void nfs_clear_verifier_delegated(struct inode *inode); | |
| 483 | +#endif /* IS_ENABLED(CONFIG_NFS_V4) */ | |
| 498 | 484 | extern struct dentry *nfs_add_or_obtain(struct dentry *dentry, |
| 499 | 485 | struct nfs_fh *fh, struct nfs_fattr *fattr, |
| 500 | 486 | struct nfs4_label *label); |
| @@ -11,17 +11,17 @@ struct of_device_id; · 10 unmodified lines | ||
| 11 | 11 | |
| 12 | 12 | #if defined(CONFIG_COMMON_CLK) && defined(CONFIG_OF) |
| 13 | 13 | |
| 14 | −unsigned int of_clk_get_parent_count(struct device_node *np); | |
| 15 | −const char *of_clk_get_parent_name(struct device_node *np, int index); | |
| 14 | +unsigned int of_clk_get_parent_count(const struct device_node *np); | |
| 15 | +const char *of_clk_get_parent_name(const struct device_node *np, int index); | |
| 16 | 16 | void of_clk_init(const struct of_device_id *matches); |
| 17 | 17 | |
| 18 | 18 | #else /* !CONFIG_COMMON_CLK || !CONFIG_OF */ |
| 19 | 19 | |
| 20 | −static inline unsigned int of_clk_get_parent_count(struct device_node *np) | |
| 20 | +static inline unsigned int of_clk_get_parent_count(const struct device_node *np) | |
| 21 | 21 | { |
| 22 | 22 | return 0; |
| 23 | 23 | } |
| 24 | −static inline const char *of_clk_get_parent_name(struct device_node *np, | |
| 24 | +static inline const char *of_clk_get_parent_name(const struct device_node *np, | |
| 25 | 25 | int index) |
| 26 | 26 | { |
| 27 | 27 | return NULL; |
| @@ -311,7 +311,7 @@ static inline int TestClearPage##uname(struct page *page) { return 0; } · 310 unmodified lines | ||
| 311 | 311 | |
| 312 | 312 | __PAGEFLAG(Locked, locked, PF_NO_TAIL) |
| 313 | 313 | PAGEFLAG(Waiters, waiters, PF_ONLY_HEAD) __CLEARPAGEFLAG(Waiters, waiters, PF_ONLY_HEAD) |
| 314 | −PAGEFLAG(Error, error, PF_NO_COMPOUND) TESTCLEARFLAG(Error, error, PF_NO_COMPOUND) | |
| 314 | +PAGEFLAG(Error, error, PF_NO_TAIL) TESTCLEARFLAG(Error, error, PF_NO_TAIL) | |
| 315 | 315 | PAGEFLAG(Referenced, referenced, PF_HEAD) |
| 316 | 316 | TESTCLEARFLAG(Referenced, referenced, PF_HEAD) |
| 317 | 317 | __SETPAGEFLAG(Referenced, referenced, PF_HEAD) |
| @@ -357,6 +357,7 @@ struct macsec_ops; · 356 unmodified lines | ||
| 357 | 357 | * is_gigabit_capable: Set to true if PHY supports 1000Mbps |
| 358 | 358 | * has_fixups: Set to true if this phy has fixups/quirks. |
| 359 | 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 | 361 | * sysfs_links: Internal boolean tracking sysfs symbolic links setup/removal. |
| 361 | 362 | * loopback_enabled: Set true if this phy has been loopbacked successfully. |
| 362 | 363 | * state: state of the PHY for management purposes |
| @@ -396,6 +397,7 @@ struct phy_device { · 33 unmodified lines | ||
| 396 | 397 | unsigned is_gigabit_capable:1; |
| 397 | 398 | unsigned has_fixups:1; |
| 398 | 399 | unsigned suspended:1; |
| 400 | + unsigned suspended_by_mdio_bus:1; | |
| 399 | 401 | unsigned sysfs_links:1; |
| 400 | 402 | unsigned loopback_enabled:1; |
| 401 | 403 | |
| @@ -557,6 +559,7 @@ struct phy_driver { · 155 unmodified lines | ||
| 557 | 559 | /* |
| 558 | 560 | * Checks if the PHY generated an interrupt. |
| 559 | 561 | * For multi-PHY devices with shared PHY interrupt pin |
| 562 | + * Set interrupt bits have to be cleared. | |
| 560 | 563 | */ |
| 561 | 564 | int (*did_interrupt)(struct phy_device *phydev); |
| 562 | 565 | |
| @@ -29,7 +29,8 @@ struct pipe_buffer { · 28 unmodified lines | ||
| 29 | 29 | /** |
| 30 | 30 | * struct pipe_inode_info - a linux kernel pipe |
| 31 | 31 | * @mutex: mutex protecting the whole thing |
| 32 | − * @wait: reader/writer wait point in case of empty/full pipe | |
| 32 | + * @rd_wait: reader wait point in case of empty pipe | |
| 33 | + * @wr_wait: writer wait point in case of full pipe | |
| 33 | 34 | * @head: The point of buffer production |
| 34 | 35 | * @tail: The point of buffer consumption |
| 35 | 36 | * @max_usage: The maximum number of slots that may be used in the ring |
| @@ -11,6 +11,7 @@ struct omap2_mcspi_platform_config { · 10 unmodified lines | ||
| 11 | 11 | unsigned short num_cs; |
| 12 | 12 | unsigned int regs_offset; |
| 13 | 13 | unsigned int pin_dir:1; |
| 14 | + size_t max_xfer_len; | |
| 14 | 15 | }; |
| 15 | 16 | |
| 16 | 17 | struct omap2_mcspi_device_config { |
| @@ -24,7 +24,7 @@ struct platform_device { · 23 unmodified lines | ||
| 24 | 24 | int id; |
| 25 | 25 | bool id_auto; |
| 26 | 26 | struct device dev; |
| 27 | − u64 dma_mask; | |
| 27 | + u64 platform_dma_mask; | |
| 28 | 28 | u32 num_resources; |
| 29 | 29 | struct resource *resource; |
| 30 | 30 | |
| @@ -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 */ | |
| 149 | +static 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 | 156 | * hlist_nulls_for_each_entry_rcu - iterate over rcu list of given type |
| 150 | 157 | * @tpos: the type * to use as a loop cursor. |
| @@ -972,9 +972,9 @@ static inline int rhashtable_lookup_insert_key( · 971 unmodified lines | ||
| 972 | 972 | /** |
| 973 | 973 | * rhashtable_lookup_get_insert_key - lookup and insert object into hash table |
| 974 | 974 | * @ht: hash table |
| 975 | + * @key: key | |
| 975 | 976 | * @obj: pointer to hash head inside object |
| 976 | 977 | * @params: hash table parameters |
| 977 | − * @data: pointer to element data already in hashes | |
| 978 | 978 | * |
| 979 | 979 | * Just like rhashtable_lookup_insert_key(), but this function returns the |
| 980 | 980 | * object if it exists, NULL if it does not and the insertion was successful, |
| @@ -15,9 +15,11 @@ static inline void nohz_balance_enter_idle(int cpu) { } · 14 unmodified lines | ||
| 15 | 15 | |
| 16 | 16 | #ifdef CONFIG_NO_HZ_COMMON |
| 17 | 17 | void calc_load_nohz_start(void); |
| 18 | +void calc_load_nohz_remote(struct rq *rq); | |
| 18 | 19 | void calc_load_nohz_stop(void); |
| 19 | 20 | #else |
| 20 | 21 | static inline void calc_load_nohz_start(void) { } |
| 22 | +static inline void calc_load_nohz_remote(struct rq *rq) { } | |
| 21 | 23 | static inline void calc_load_nohz_stop(void) { } |
| 22 | 24 | #endif /* CONFIG_NO_HZ_COMMON */ |
| 23 | 25 | |
| @@ -611,9 +611,15 @@ typedef unsigned char *sk_buff_data_t; · 610 unmodified lines | ||
| 611 | 611 | * @next: Next buffer in list |
| 612 | 612 | * @prev: Previous buffer in list |
| 613 | 613 | * @tstamp: Time we arrived/left |
| 614 | + * @skb_mstamp_ns: (aka @tstamp) earliest departure time; start point | |
| 615 | + * for retransmit timer | |
| 614 | 616 | * @rbnode: RB tree node, alternative to next/prev for netem/tcp |
| 617 | + * @list: queue head | |
| 615 | 618 | * @sk: Socket we are owned by |
| 619 | + * @ip_defrag_offset: (aka @sk) alternate use of @sk, used in | |
| 620 | + * fragmentation management | |
| 616 | 621 | * @dev: Device we arrived on/are leaving by |
| 622 | + * @dev_scratch: (aka @dev) alternate use of @dev when @dev would be %NULL | |
| 617 | 623 | * @cb: Control buffer. Free for use by every layer. Put private vars here |
| 618 | 624 | * @_skb_refdst: destination entry (with norefcount bit) |
| 619 | 625 | * @sp: the security path, used for xfrm |
| @@ -632,6 +638,9 @@ typedef unsigned char *sk_buff_data_t; · 12 unmodified lines | ||
| 632 | 638 | * @pkt_type: Packet class |
| 633 | 639 | * @fclone: skbuff clone status |
| 634 | 640 | * @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 | 644 | * @offload_fwd_mark: Packet was L2-forwarded in hardware |
| 636 | 645 | * @offload_l3_fwd_mark: Packet was L3-forwarded in hardware |
| 637 | 646 | * @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 | 659 | * @tc_index: Traffic control index |
| 651 | 660 | * @hash: the packet hash |
| 652 | 661 | * @queue_mapping: Queue mapping for multiqueue devices |
| 662 | + * @head_frag: skb was allocated from page fragments, | |
| 663 | + * not allocated by kmalloc() or vmalloc(). | |
| 653 | 664 | * @pfmemalloc: skbuff was allocated from PFMEMALLOC reserves |
| 654 | 665 | * @active_extensions: active extensions (skb_ext_id types) |
| 655 | 666 | * @ndisc_nodetype: router type (from link layer) |
| @@ -660,15 +671,28 @@ typedef unsigned char *sk_buff_data_t; · 4 unmodified lines | ||
| 660 | 671 | * @wifi_acked_valid: wifi_acked was set |
| 661 | 672 | * @wifi_acked: whether frame was acked on wifi or not |
| 662 | 673 | * @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 | 677 | * @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 | 682 | * @dst_pending_confirm: need to confirm neighbour |
| 665 | 683 | * @decrypted: Decrypted SKB |
| 666 | 684 | * @napi_id: id of the NAPI struct this skb came from |
| 685 | + * @sender_cpu: (aka @napi_id) source CPU in XPS | |
| 667 | 686 | * @secmark: security marking |
| 668 | 687 | * @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 | 691 | * @vlan_proto: vlan encapsulation protocol |
| 670 | 692 | * @vlan_tci: vlan tag control information |
| 671 | 693 | * @inner_protocol: Protocol (encapsulation) |
| 694 | + * @inner_ipproto: (aka @inner_protocol) stores ipproto when | |
| 695 | + * skb->inner_protocol_type == ENCAP_TYPE_IPPROTO; | |
| 672 | 696 | * @inner_transport_header: Inner transport layer header (encapsulation) |
| 673 | 697 | * @inner_network_header: Network layer header (encapsulation) |
| 674 | 698 | * @inner_mac_header: Link layer header (encapsulation) |
| @@ -750,7 +774,9 @@ struct sk_buff { · 75 unmodified lines | ||
| 750 | 774 | #endif |
| 751 | 775 | #define CLONED_OFFSET() offsetof(struct sk_buff, __cloned_offset) |
| 752 | 776 | |
| 777 | + /* private: */ | |
| 753 | 778 | __u8 __cloned_offset[0]; |
| 779 | + /* public: */ | |
| 754 | 780 | __u8 cloned:1, |
| 755 | 781 | nohdr:1, |
| 756 | 782 | fclone:2, |
| @@ -775,7 +801,9 @@ struct sk_buff { · 18 unmodified lines | ||
| 775 | 801 | #endif |
| 776 | 802 | #define PKT_TYPE_OFFSET() offsetof(struct sk_buff, __pkt_type_offset) |
| 777 | 803 | |
| 804 | + /* private: */ | |
| 778 | 805 | __u8 __pkt_type_offset[0]; |
| 806 | + /* public: */ | |
| 779 | 807 | __u8 pkt_type:3; |
| 780 | 808 | __u8 ignore_df:1; |
| 781 | 809 | __u8 nf_trace:1; |
| @@ -798,7 +826,9 @@ struct sk_buff { · 16 unmodified lines | ||
| 798 | 826 | #define PKT_VLAN_PRESENT_BIT 0 |
| 799 | 827 | #endif |
| 800 | 828 | #define PKT_VLAN_PRESENT_OFFSET() offsetof(struct sk_buff, __pkt_vlan_present_offset) |
| 829 | + /* private: */ | |
| 801 | 830 | __u8 __pkt_vlan_present_offset[0]; |
| 831 | + /* public: */ | |
| 802 | 832 | __u8 vlan_present:1; |
| 803 | 833 | __u8 csum_complete_sw:1; |
| 804 | 834 | __u8 csum_level:2; |
| @@ -401,7 +401,8 @@ extern int __sys_sendto(int fd, void __user *buff, size_t len, · 400 unmodified lines | ||
| 401 | 401 | int addr_len); |
| 402 | 402 | extern int __sys_accept4_file(struct file *file, unsigned file_flags, |
| 403 | 403 | struct sockaddr __user *upeer_sockaddr, |
| 404 | − int __user *upeer_addrlen, int flags); | |
| 404 | + int __user *upeer_addrlen, int flags, | |
| 405 | + unsigned long nofile); | |
| 405 | 406 | extern int __sys_accept4(int fd, struct sockaddr __user *upeer_sockaddr, |
| 406 | 407 | int __user *upeer_addrlen, int flags); |
| 407 | 408 | extern int __sys_socket(int family, int type, int protocol); |
| @@ -284,6 +284,7 @@ struct sdw_dpn_audio_mode { · 283 unmodified lines | ||
| 284 | 284 | * @max_async_buffer: Number of samples that this port can buffer in |
| 285 | 285 | * asynchronous modes |
| 286 | 286 | * @block_pack_mode: Type of block port mode supported |
| 287 | + * @read_only_wordlength: Read Only wordlength field in DPN_BlockCtrl1 register | |
| 287 | 288 | * @port_encoding: Payload Channel Sample encoding schemes supported |
| 288 | 289 | * @audio_modes: Audio modes supported |
| 289 | 290 | */ |
| @@ -307,6 +308,7 @@ struct sdw_dpn_prop { · 17 unmodified lines | ||
| 307 | 308 | u32 modes; |
| 308 | 309 | u32 max_async_buffer; |
| 309 | 310 | bool block_pack_mode; |
| 311 | + bool read_only_wordlength; | |
| 310 | 312 | u32 port_encoding; |
| 311 | 313 | struct sdw_dpn_audio_mode *audio_modes; |
| 312 | 314 | }; |
| @@ -191,7 +191,7 @@ struct platform_s2idle_ops { · 190 unmodified lines | ||
| 191 | 191 | int (*begin)(void); |
| 192 | 192 | int (*prepare)(void); |
| 193 | 193 | int (*prepare_late)(void); |
| 194 | − void (*wake)(void); | |
| 194 | + bool (*wake)(void); | |
| 195 | 195 | void (*restore_early)(void); |
| 196 | 196 | void (*restore)(void); |
| 197 | 197 | void (*end)(void); |
| @@ -64,6 +64,9 @@ extern void swiotlb_tbl_sync_single(struct device *hwdev, · 63 unmodified lines | ||
| 64 | 64 | size_t size, enum dma_data_direction dir, |
| 65 | 65 | enum dma_sync_target target); |
| 66 | 66 | |
| 67 | +dma_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 | 70 | #ifdef CONFIG_SWIOTLB |
| 68 | 71 | extern enum swiotlb_force swiotlb_force; |
| 69 | 72 | extern 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 | 76 | return paddr >= io_tlb_start && paddr < io_tlb_end; |
| 74 | 77 | } |
| 75 | 78 | |
| 76 | −bool 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); | |
| 78 | 79 | void __init swiotlb_exit(void); |
| 79 | 80 | unsigned int swiotlb_max_segment(void); |
| 80 | 81 | size_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 | 87 | return false; |
| 87 | 88 | } |
| 88 | −static 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 | −} | |
| 94 | 89 | static inline void swiotlb_exit(void) |
| 95 | 90 | { |
| 96 | 91 | } |
| @@ -12,8 +12,6 @@ · 11 unmodified lines | ||
| 12 | 12 | #include <linux/time64.h> |
| 13 | 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 | − | |
| 17 | 15 | typedef s32 old_time32_t; |
| 18 | 16 | |
| 19 | 17 | struct old_timespec32 { |
| @@ -73,162 +71,12 @@ struct __kernel_timex; · 53 unmodified lines | ||
| 73 | 71 | int get_old_timex32(struct __kernel_timex *, const struct old_timex32 __user *); |
| 74 | 72 | int 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 */ | |
| 79 | −static inline struct timespec timespec64_to_timespec(const struct timespec64 ts64) | |
| 80 | −{ | |
| 81 | − return *(const struct timespec *)&ts64; | |
| 82 | −} | |
| 83 | − | |
| 84 | −static inline struct timespec64 timespec_to_timespec64(const struct timespec ts) | |
| 85 | −{ | |
| 86 | − return *(const struct timespec64 *)&ts; | |
| 87 | −} | |
| 88 | − | |
| 89 | −#else | |
| 90 | −static 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 | − | |
| 99 | −static 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 | − | |
| 109 | −static 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 | − */ | |
| 120 | −static 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 | − */ | |
| 132 | −static 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 | − */ | |
| 150 | −static 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 timespec | |
| 157 | − * @nsec: the nanoseconds value to be converted | |
| 158 | − * | |
| 159 | − * Returns the timespec representation of the nsec parameter. | |
| 160 | − */ | |
| 161 | −extern 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 | − */ | |
| 171 | −static __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 | − | |
| 177 | −static 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 | − | |
| 185 | −static 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 | − */ | |
| 205 | −static 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 | |
| 75 | + * ns_to_kernel_old_timeval - Convert nanoseconds to timeval | |
| 213 | 76 | * @nsec: the nanoseconds value to be converted |
| 214 | 77 | * |
| 215 | 78 | * Returns the timeval representation of the nsec parameter. |
| 216 | 79 | */ |
| 217 | −extern struct timeval ns_to_timeval(const s64 nsec); | |
| 218 | 80 | extern 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 | 82 | #endif |
| @@ -11,36 +11,4 @@ static inline unsigned long get_seconds(void) · 10 unmodified lines | ||
| 11 | 11 | return ktime_get_real_seconds(); |
| 12 | 12 | } |
| 13 | 13 | |
| 14 | −static 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 | − | |
| 22 | −static 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 | − | |
| 30 | −static 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 | − | |
| 38 | −static inline void getboottime(struct timespec *ts) | |
| 39 | −{ | |
| 40 | − struct timespec64 ts64; | |
| 41 | − | |
| 42 | − getboottime64(&ts64); | |
| 43 | − *ts = timespec64_to_timespec(ts64); | |
| 44 | −} | |
| 45 | − | |
| 46 | 14 | #endif |
| @@ -440,7 +440,7 @@ struct synth_event_trace_state { · 439 unmodified lines | ||
| 440 | 440 | struct synth_event *event; |
| 441 | 441 | unsigned int cur_field; |
| 442 | 442 | unsigned int n_u64; |
| 443 | − bool enabled; | |
| 443 | + bool disabled; | |
| 444 | 444 | bool add_next; |
| 445 | 445 | bool add_name; |
| 446 | 446 | }; |
| @@ -225,6 +225,8 @@ struct tty_port_client_operations { · 224 unmodified lines | ||
| 225 | 225 | void (*write_wakeup)(struct tty_port *port); |
| 226 | 226 | }; |
| 227 | 227 | |
| 228 | +extern const struct tty_port_client_operations tty_port_default_client_ops; | |
| 229 | + | |
| 228 | 230 | struct tty_port { |
| 229 | 231 | struct tty_bufhead buf; /* Locked internally */ |
| 230 | 232 | struct tty_struct *tty; /* Back pointer */ |
| @@ -65,11 +65,6 @@ typedef __kernel_ssize_t ssize_t; · 64 unmodified lines | ||
| 65 | 65 | typedef __kernel_ptrdiff_t ptrdiff_t; |
| 66 | 66 | #endif |
| 67 | 67 | |
| 68 | −#ifndef _TIME_T | |
| 69 | −#define _TIME_T | |
| 70 | −typedef __kernel_old_time_t time_t; | |
| 71 | −#endif | |
| 72 | − | |
| 73 | 68 | #ifndef _CLOCK_T |
| 74 | 69 | #define _CLOCK_T |
| 75 | 70 | typedef __kernel_clock_t clock_t; |
| @@ -69,4 +69,7 @@ · 68 unmodified lines | ||
| 69 | 69 | /* Hub needs extra delay after resetting its port. */ |
| 70 | 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 | 75 | #endif /* __LINUX_USB_QUIRKS_H */ |
| @@ -141,8 +141,9 @@ extern int remap_vmalloc_range_partial(struct vm_area_struct *vma, · 140 unmodified lines | ||
| 141 | 141 | |
| 142 | 142 | extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr, |
| 143 | 143 | unsigned long pgoff); |
| 144 | −void vmalloc_sync_all(void); | |
| 145 | − | |
| 144 | +void vmalloc_sync_mappings(void); | |
| 145 | +void vmalloc_sync_unmappings(void); | |
| 146 | + | |
| 146 | 147 | /* |
| 147 | 148 | * Lowlevel-APIs (not for driver use!) |
| 148 | 149 | */ |
| @@ -487,6 +487,19 @@ extern void wq_worker_comm(char *buf, size_t size, struct task_struct *task); · 486 unmodified lines | ||
| 487 | 487 | * |
| 488 | 488 | * We queue the work to the CPU on which it was submitted, but if the CPU dies |
| 489 | 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 | */ |
| 491 | 504 | static inline bool queue_work(struct workqueue_struct *wq, |
| 492 | 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 | 559 | * This puts a job in the kernel-global workqueue if it was not already |
| 547 | 560 | * queued and leaves it in the same position on the kernel-global |
| 548 | 561 | * workqueue otherwise. |
| 562 | + * | |
| 563 | + * Shares the same memory-ordering properties of queue_work(), cf. the | |
| 564 | + * DocBook header of queue_work(). | |
| 549 | 565 | */ |
| 550 | 566 | static inline bool schedule_work(struct work_struct *work) |
| 551 | 567 | { |