History

Merge branch 'linus' into locking/kcsan, to pick up fixes

Ingo Molnar committed 6 years ago

Commit df108462 parents a4654e9 5ad0ec0906 files · +8764 −4406Browse files

Showing the changes to include/linux (24 of 906 files). Show all

Unified · Split

24 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/debugfs.h +6 −7
  6. include/linux/device.h +11 −0
  7. include/linux/dmar.h +9 −5
  8. include/linux/fs.h +1 −0
  9. include/linux/futex.h +10 −7
  10. include/linux/genhd.h +1 −12
  11. include/linux/hid.h +1 −1
  12. include/linux/icmpv6.h +10 −6
  13. include/linux/inet_diag.h +12 −6
  14. include/linux/intel-iommu.h +2 −0
  15. include/linux/kvm_host.h +3 −1
  16. include/linux/mm.h +4 −0
  17. include/linux/mmc/host.h +1 −0
  18. include/linux/netfilter/ipset/ip_set.h +10 −1
  19. include/linux/of_clk.h +4 −4
  20. include/linux/phy.h +3 −0
  21. include/linux/platform_data/spi-omap2-mcspi.h +1 −0
  22. include/linux/platform_device.h +1 −1
  23. include/linux/rhashtable.h +1 −1
  24. 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/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/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−6
@@ -22,19 +22,23 @@ 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{
30
31}36}
32#endif
33 37
34#if IS_ENABLED(CONFIG_NF_NAT)38static inline void icmpv6_ndo_send(struct sk_buff *skb,
35void icmpv6_ndo_send(struct sk_buff *skb_in, u8 type, u8 code, __u32 info);39 u8 type, u8 code, __u32 info)
36#else40{
37#define icmpv6_ndo_send icmpv6_send41}
38#endif42#endif
39 43
40extern int icmpv6_init(void);44extern int icmpv6_init(void);
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/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/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/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/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/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/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/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/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{