Showing the changes to include/linux (24 of 906 files). Show all
Unified · Split
| @@ -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_TRACE | 526 | #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 | #endif | 529 | #endif |
| 530 | /* | 530 | /* |
| @@ -1494,7 +1494,6 @@ static inline void put_dev_sector(Sector p) · 963 unmodified lines | |||
| 1494 | } | 1494 | } |
| 1495 | 1495 | ||
| 1496 | int kblockd_schedule_work(struct work_struct *work); | 1496 | int kblockd_schedule_work(struct work_struct *work); |
| 1497 | int kblockd_schedule_work_on(int cpu, struct work_struct *work); | ||
| 1498 | int kblockd_mod_delayed_work_on(int cpu, struct delayed_work *dwork, unsigned long delay); | 1497 | int 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) \ |
| @@ -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 | ||
| 62 | static inline bool blk_trace_note_message_enabled(struct request_queue *q) | 66 | static 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 | ||
| 70 | extern void blk_add_driver_data(struct request_queue *q, struct request *rq, | 78 | extern void blk_add_driver_data(struct request_queue *q, struct request *rq, |
| @@ -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 */ |
| 14 | struct xbc_node { | 17 | struct xbc_node { |
| 15 | u16 next; | 18 | u16 next; |
| @@ -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; |
| @@ -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 | ||
| 130 | struct dentry *debugfs_create_regset32(const char *name, umode_t mode, | 130 | void 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 | ||
| 134 | void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs, | 134 | void 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 | ||
| 307 | static inline struct dentry *debugfs_create_regset32(const char *name, | 307 | static 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 | ||
| 314 | static inline void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs, | 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 | return dev->of_node; | 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 | * High level routines for use by the bus drivers | 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 | extern struct rw_semaphore dmar_global_lock; | 69 | extern struct rw_semaphore dmar_global_lock; |
| 70 | extern struct list_head dmar_drhd_units; | 70 | extern 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) {} else | 79 | 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) {} else | 84 | 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 | ||
| 87 | static inline bool dmar_rcu_check(void) | 91 | static inline bool dmar_rcu_check(void) |
| @@ -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; |
| @@ -31,23 +31,26 @@ struct task_struct; · 30 unmodified lines | |||
| 31 | 31 | ||
| 32 | union futex_key { | 32 | union 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_FUTEX | 55 | #ifdef CONFIG_FUTEX |
| 53 | enum { | 56 | enum { |
| @@ -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 | ||
| 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 | static inline dev_t disk_devt(struct gendisk *disk) | 248 | static 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 | ||
| 299 | extern struct hd_struct *disk_map_sector_rcu(struct gendisk *disk, | 287 | extern struct hd_struct *disk_map_sector_rcu(struct gendisk *disk, |
| 300 | sector_t sector); | 288 | sector_t sector); |
| 289 | bool 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: |
| @@ -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 64 | 497 | #define HID_OUTPUT_FIFO_SIZE 64 |
| 498 | 498 | ||
| @@ -22,19 +22,23 @@ extern int inet6_unregister_icmp_sender(ip6_icmp_send_t *fn); · 21 unmodified lines | |||
| 22 | int ip6_err_gen_icmpv6_unreach(struct sk_buff *skb, int nhs, int type, | 22 | int 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) | ||
| 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 | #else | 31 | #else |
| 26 | 32 | ||
| 27 | static inline void icmpv6_send(struct sk_buff *skb, | 33 | static inline void icmpv6_send(struct sk_buff *skb, |
| 28 | u8 type, u8 code, __u32 info) | 34 | u8 type, u8 code, __u32 info) |
| 29 | { | 35 | { |
| 30 | |||
| 31 | } | 36 | } |
| 32 | #endif | ||
| 33 | 37 | ||
| 34 | #if IS_ENABLED(CONFIG_NF_NAT) | 38 | static inline void icmpv6_ndo_send(struct sk_buff *skb, |
| 35 | void icmpv6_ndo_send(struct sk_buff *skb_in, u8 type, u8 code, __u32 info); | 39 | u8 type, u8 code, __u32 info) |
| 36 | #else | 40 | { |
| 37 | #define icmpv6_ndo_send icmpv6_send | 41 | } |
| 38 | #endif | 42 | #endif |
| 39 | 43 | ||
| 40 | extern int icmpv6_init(void); | 44 | extern int icmpv6_init(void); |
| @@ -2,15 +2,10 @@ · 1 unmodified line | |||
| 2 | #ifndef _INET_DIAG_H_ | 2 | #ifndef _INET_DIAG_H_ |
| 3 | #define _INET_DIAG_H_ 1 | 3 | #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 | ||
| 7 | struct net; | ||
| 8 | struct sock; | ||
| 9 | struct inet_hashinfo; | 8 | struct inet_hashinfo; |
| 10 | struct nlattr; | ||
| 11 | struct nlmsghdr; | ||
| 12 | struct sk_buff; | ||
| 13 | struct netlink_callback; | ||
| 14 | 9 | ||
| 15 | struct inet_diag_handler { | 10 | struct 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 | ||
| 63 | void inet_diag_msg_common_fill(struct inet_diag_msg *r, struct sock *sk); | 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 | int inet_diag_msg_attrs_fill(struct sock *sk, struct sk_buff *skb, | 71 | int 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); |
| @@ -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) |
| @@ -889,6 +889,8 @@ int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu); · 888 unmodified lines | |||
| 889 | bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu); | 889 | bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu); |
| 890 | int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu); | 890 | int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu); |
| 891 | bool kvm_arch_dy_runnable(struct kvm_vcpu *vcpu); | 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 | #ifndef __KVM_HAVE_ARCH_VM_ALLOC | 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 | #endif /* CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT */ | 1344 | #endif /* CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT */ |
| 1343 | 1345 | ||
| 1344 | struct kvm_vcpu *kvm_get_running_vcpu(void); | 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 | #ifdef CONFIG_HAVE_KVM_IRQ_BYPASS | 1349 | #ifdef CONFIG_HAVE_KVM_IRQ_BYPASS |
| 1348 | bool kvm_arch_has_irq_bypass(void); | 1350 | bool kvm_arch_has_irq_bypass(void); |
| @@ -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) |
| 2716 | extern void __kernel_map_pages(struct page *page, int numpages, int enable); | 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 | static inline void | 2722 | static inline void |
| 2719 | kernel_map_pages(struct page *page, int numpages, int enable) | 2723 | kernel_map_pages(struct page *page, int numpages, int enable) |
| 2720 | { | 2724 | { |
| @@ -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 */ |
| @@ -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 | ||
| 126 | struct ip_set; | 127 | struct 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 | |||
| 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 | /* 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) \ |
| @@ -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 | ||
| 14 | unsigned int of_clk_get_parent_count(struct device_node *np); | 14 | unsigned int of_clk_get_parent_count(const struct device_node *np); |
| 15 | const char *of_clk_get_parent_name(struct device_node *np, int index); | 15 | const char *of_clk_get_parent_name(const struct device_node *np, int index); |
| 16 | void of_clk_init(const struct of_device_id *matches); | 16 | void 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 | ||
| 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 | return 0; | 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 | int index) | 25 | int index) |
| 26 | { | 26 | { |
| 27 | return NULL; | 27 | return NULL; |
| @@ -357,6 +357,7 @@ struct macsec_ops; · 356 unmodified lines | |||
| 357 | * is_gigabit_capable: Set to true if PHY supports 1000Mbps | 357 | * 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 purposes | 363 | * 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 pin | 561 | * 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 | ||
| @@ -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 | ||
| 16 | struct omap2_mcspi_device_config { | 17 | struct omap2_mcspi_device_config { |
| @@ -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 | ||
| @@ -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 table | 973 | * rhashtable_lookup_get_insert_key - lookup and insert object into hash table |
| 974 | * @ht: hash table | 974 | * @ht: hash table |
| 975 | * @key: key | ||
| 975 | * @obj: pointer to hash head inside object | 976 | * @obj: pointer to hash head inside object |
| 976 | * @params: hash table parameters | 977 | * @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 the | 979 | * 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, |
| @@ -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 dies | 488 | * 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 | */ |
| 491 | static inline bool queue_work(struct workqueue_struct *wq, | 504 | static 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 already | 559 | * 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-global | 560 | * 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 | */ |
| 550 | static inline bool schedule_work(struct work_struct *work) | 566 | static inline bool schedule_work(struct work_struct *work) |
| 551 | { | 567 | { |