diff options
Diffstat (limited to 'include')
38 files changed, 531 insertions, 262 deletions
diff --git a/include/acpi/video.h b/include/acpi/video.h index b26dc4fb7ba8..61109f2609fc 100644 --- a/include/acpi/video.h +++ b/include/acpi/video.h | |||
@@ -17,21 +17,12 @@ struct acpi_device; | |||
17 | #define ACPI_VIDEO_DISPLAY_LEGACY_TV 0x0200 | 17 | #define ACPI_VIDEO_DISPLAY_LEGACY_TV 0x0200 |
18 | 18 | ||
19 | #if (defined CONFIG_ACPI_VIDEO || defined CONFIG_ACPI_VIDEO_MODULE) | 19 | #if (defined CONFIG_ACPI_VIDEO || defined CONFIG_ACPI_VIDEO_MODULE) |
20 | extern int __acpi_video_register(bool backlight_quirks); | 20 | extern int acpi_video_register(void); |
21 | static inline int acpi_video_register(void) | ||
22 | { | ||
23 | return __acpi_video_register(false); | ||
24 | } | ||
25 | static inline int acpi_video_register_with_quirks(void) | ||
26 | { | ||
27 | return __acpi_video_register(true); | ||
28 | } | ||
29 | extern void acpi_video_unregister(void); | 21 | extern void acpi_video_unregister(void); |
30 | extern int acpi_video_get_edid(struct acpi_device *device, int type, | 22 | extern int acpi_video_get_edid(struct acpi_device *device, int type, |
31 | int device_id, void **edid); | 23 | int device_id, void **edid); |
32 | #else | 24 | #else |
33 | static inline int acpi_video_register(void) { return 0; } | 25 | static inline int acpi_video_register(void) { return 0; } |
34 | static inline int acpi_video_register_with_quirks(void) { return 0; } | ||
35 | static inline void acpi_video_unregister(void) { return; } | 26 | static inline void acpi_video_unregister(void) { return; } |
36 | static inline int acpi_video_get_edid(struct acpi_device *device, int type, | 27 | static inline int acpi_video_get_edid(struct acpi_device *device, int type, |
37 | int device_id, void **edid) | 28 | int device_id, void **edid) |
diff --git a/include/drm/drm_fixed.h b/include/drm/drm_fixed.h index f5e1168c7647..d639049a613d 100644 --- a/include/drm/drm_fixed.h +++ b/include/drm/drm_fixed.h | |||
@@ -84,12 +84,12 @@ static inline int drm_fixp2int(int64_t a) | |||
84 | return ((s64)a) >> DRM_FIXED_POINT; | 84 | return ((s64)a) >> DRM_FIXED_POINT; |
85 | } | 85 | } |
86 | 86 | ||
87 | static inline s64 drm_fixp_msbset(int64_t a) | 87 | static inline unsigned drm_fixp_msbset(int64_t a) |
88 | { | 88 | { |
89 | unsigned shift, sign = (a >> 63) & 1; | 89 | unsigned shift, sign = (a >> 63) & 1; |
90 | 90 | ||
91 | for (shift = 62; shift > 0; --shift) | 91 | for (shift = 62; shift > 0; --shift) |
92 | if ((a >> shift) != sign) | 92 | if (((a >> shift) & 1) != sign) |
93 | return shift; | 93 | return shift; |
94 | 94 | ||
95 | return 0; | 95 | return 0; |
@@ -100,9 +100,9 @@ static inline s64 drm_fixp_mul(s64 a, s64 b) | |||
100 | unsigned shift = drm_fixp_msbset(a) + drm_fixp_msbset(b); | 100 | unsigned shift = drm_fixp_msbset(a) + drm_fixp_msbset(b); |
101 | s64 result; | 101 | s64 result; |
102 | 102 | ||
103 | if (shift > 63) { | 103 | if (shift > 61) { |
104 | shift = shift - 63; | 104 | shift = shift - 61; |
105 | a >>= shift >> 1; | 105 | a >>= (shift >> 1) + (shift & 1); |
106 | b >>= shift >> 1; | 106 | b >>= shift >> 1; |
107 | } else | 107 | } else |
108 | shift = 0; | 108 | shift = 0; |
@@ -120,7 +120,7 @@ static inline s64 drm_fixp_mul(s64 a, s64 b) | |||
120 | 120 | ||
121 | static inline s64 drm_fixp_div(s64 a, s64 b) | 121 | static inline s64 drm_fixp_div(s64 a, s64 b) |
122 | { | 122 | { |
123 | unsigned shift = 63 - drm_fixp_msbset(a); | 123 | unsigned shift = 62 - drm_fixp_msbset(a); |
124 | s64 result; | 124 | s64 result; |
125 | 125 | ||
126 | a <<= shift; | 126 | a <<= shift; |
@@ -154,7 +154,7 @@ static inline s64 drm_fixp_exp(s64 x) | |||
154 | } | 154 | } |
155 | 155 | ||
156 | if (x < 0) | 156 | if (x < 0) |
157 | sum = drm_fixp_div(1, sum); | 157 | sum = drm_fixp_div(DRM_FIXED_ONE, sum); |
158 | 158 | ||
159 | return sum; | 159 | return sum; |
160 | } | 160 | } |
diff --git a/include/dt-bindings/clock/vf610-clock.h b/include/dt-bindings/clock/vf610-clock.h index 15e997fa78f2..4aa2b48cd151 100644 --- a/include/dt-bindings/clock/vf610-clock.h +++ b/include/dt-bindings/clock/vf610-clock.h | |||
@@ -158,6 +158,8 @@ | |||
158 | #define VF610_CLK_GPU_SEL 145 | 158 | #define VF610_CLK_GPU_SEL 145 |
159 | #define VF610_CLK_GPU_EN 146 | 159 | #define VF610_CLK_GPU_EN 146 |
160 | #define VF610_CLK_GPU2D 147 | 160 | #define VF610_CLK_GPU2D 147 |
161 | #define VF610_CLK_END 148 | 161 | #define VF610_CLK_ENET0 148 |
162 | #define VF610_CLK_ENET1 149 | ||
163 | #define VF610_CLK_END 150 | ||
162 | 164 | ||
163 | #endif /* __DT_BINDINGS_CLOCK_VF610_H */ | 165 | #endif /* __DT_BINDINGS_CLOCK_VF610_H */ |
diff --git a/include/dt-bindings/pinctrl/am33xx.h b/include/dt-bindings/pinctrl/am33xx.h index 469e0325e6f4..2fbc804e1a45 100644 --- a/include/dt-bindings/pinctrl/am33xx.h +++ b/include/dt-bindings/pinctrl/am33xx.h | |||
@@ -5,7 +5,7 @@ | |||
5 | #ifndef _DT_BINDINGS_PINCTRL_AM33XX_H | 5 | #ifndef _DT_BINDINGS_PINCTRL_AM33XX_H |
6 | #define _DT_BINDINGS_PINCTRL_AM33XX_H | 6 | #define _DT_BINDINGS_PINCTRL_AM33XX_H |
7 | 7 | ||
8 | #include <include/dt-bindings/pinctrl/omap.h> | 8 | #include <dt-bindings/pinctrl/omap.h> |
9 | 9 | ||
10 | /* am33xx specific mux bit defines */ | 10 | /* am33xx specific mux bit defines */ |
11 | #undef PULL_ENA | 11 | #undef PULL_ENA |
diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 6ad72f92469c..353ba256f368 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h | |||
@@ -191,7 +191,6 @@ extern bool wmi_has_guid(const char *guid); | |||
191 | #define ACPI_VIDEO_BACKLIGHT_DMI_VIDEO 0x0200 | 191 | #define ACPI_VIDEO_BACKLIGHT_DMI_VIDEO 0x0200 |
192 | #define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VENDOR 0x0400 | 192 | #define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VENDOR 0x0400 |
193 | #define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VIDEO 0x0800 | 193 | #define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VIDEO 0x0800 |
194 | #define ACPI_VIDEO_SKIP_BACKLIGHT 0x1000 | ||
195 | 194 | ||
196 | #if defined(CONFIG_ACPI_VIDEO) || defined(CONFIG_ACPI_VIDEO_MODULE) | 195 | #if defined(CONFIG_ACPI_VIDEO) || defined(CONFIG_ACPI_VIDEO_MODULE) |
197 | 196 | ||
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 297462b9f41a..e9ac882868c0 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -542,8 +542,7 @@ int cgroup_rm_cftypes(struct cgroup_subsys *ss, struct cftype *cfts); | |||
542 | bool cgroup_is_descendant(struct cgroup *cgrp, struct cgroup *ancestor); | 542 | bool cgroup_is_descendant(struct cgroup *cgrp, struct cgroup *ancestor); |
543 | 543 | ||
544 | int cgroup_path(const struct cgroup *cgrp, char *buf, int buflen); | 544 | int cgroup_path(const struct cgroup *cgrp, char *buf, int buflen); |
545 | int task_cgroup_path_from_hierarchy(struct task_struct *task, int hierarchy_id, | 545 | int task_cgroup_path(struct task_struct *task, char *buf, size_t buflen); |
546 | char *buf, size_t buflen); | ||
547 | 546 | ||
548 | int cgroup_task_count(const struct cgroup *cgrp); | 547 | int cgroup_task_count(const struct cgroup *cgrp); |
549 | 548 | ||
diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h index 6e7ec64b69ab..b613ffd402d1 100644 --- a/include/linux/cgroup_subsys.h +++ b/include/linux/cgroup_subsys.h | |||
@@ -1,86 +1,55 @@ | |||
1 | /* Add subsystem definitions of the form SUBSYS(<name>) in this | 1 | /* |
2 | * file. Surround each one by a line of comment markers so that | 2 | * List of cgroup subsystems. |
3 | * patches don't collide | 3 | * |
4 | * DO NOT ADD ANY SUBSYSTEM WITHOUT EXPLICIT ACKS FROM CGROUP MAINTAINERS. | ||
4 | */ | 5 | */ |
5 | |||
6 | /* */ | ||
7 | |||
8 | /* */ | ||
9 | |||
10 | #if IS_SUBSYS_ENABLED(CONFIG_CPUSETS) | 6 | #if IS_SUBSYS_ENABLED(CONFIG_CPUSETS) |
11 | SUBSYS(cpuset) | 7 | SUBSYS(cpuset) |
12 | #endif | 8 | #endif |
13 | 9 | ||
14 | /* */ | ||
15 | |||
16 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_DEBUG) | 10 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_DEBUG) |
17 | SUBSYS(debug) | 11 | SUBSYS(debug) |
18 | #endif | 12 | #endif |
19 | 13 | ||
20 | /* */ | ||
21 | |||
22 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_SCHED) | 14 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_SCHED) |
23 | SUBSYS(cpu_cgroup) | 15 | SUBSYS(cpu_cgroup) |
24 | #endif | 16 | #endif |
25 | 17 | ||
26 | /* */ | ||
27 | |||
28 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_CPUACCT) | 18 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_CPUACCT) |
29 | SUBSYS(cpuacct) | 19 | SUBSYS(cpuacct) |
30 | #endif | 20 | #endif |
31 | 21 | ||
32 | /* */ | ||
33 | |||
34 | #if IS_SUBSYS_ENABLED(CONFIG_MEMCG) | 22 | #if IS_SUBSYS_ENABLED(CONFIG_MEMCG) |
35 | SUBSYS(mem_cgroup) | 23 | SUBSYS(mem_cgroup) |
36 | #endif | 24 | #endif |
37 | 25 | ||
38 | /* */ | ||
39 | |||
40 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_DEVICE) | 26 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_DEVICE) |
41 | SUBSYS(devices) | 27 | SUBSYS(devices) |
42 | #endif | 28 | #endif |
43 | 29 | ||
44 | /* */ | ||
45 | |||
46 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_FREEZER) | 30 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_FREEZER) |
47 | SUBSYS(freezer) | 31 | SUBSYS(freezer) |
48 | #endif | 32 | #endif |
49 | 33 | ||
50 | /* */ | ||
51 | |||
52 | #if IS_SUBSYS_ENABLED(CONFIG_NET_CLS_CGROUP) | 34 | #if IS_SUBSYS_ENABLED(CONFIG_NET_CLS_CGROUP) |
53 | SUBSYS(net_cls) | 35 | SUBSYS(net_cls) |
54 | #endif | 36 | #endif |
55 | 37 | ||
56 | /* */ | ||
57 | |||
58 | #if IS_SUBSYS_ENABLED(CONFIG_BLK_CGROUP) | 38 | #if IS_SUBSYS_ENABLED(CONFIG_BLK_CGROUP) |
59 | SUBSYS(blkio) | 39 | SUBSYS(blkio) |
60 | #endif | 40 | #endif |
61 | 41 | ||
62 | /* */ | ||
63 | |||
64 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_PERF) | 42 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_PERF) |
65 | SUBSYS(perf) | 43 | SUBSYS(perf) |
66 | #endif | 44 | #endif |
67 | 45 | ||
68 | /* */ | ||
69 | |||
70 | #if IS_SUBSYS_ENABLED(CONFIG_NETPRIO_CGROUP) | 46 | #if IS_SUBSYS_ENABLED(CONFIG_NETPRIO_CGROUP) |
71 | SUBSYS(net_prio) | 47 | SUBSYS(net_prio) |
72 | #endif | 48 | #endif |
73 | 49 | ||
74 | /* */ | ||
75 | |||
76 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_HUGETLB) | 50 | #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_HUGETLB) |
77 | SUBSYS(hugetlb) | 51 | SUBSYS(hugetlb) |
78 | #endif | 52 | #endif |
79 | 53 | /* | |
80 | /* */ | 54 | * DO NOT ADD ANY SUBSYSTEM WITHOUT EXPLICIT ACKS FROM CGROUP MAINTAINERS. |
81 | 55 | */ | |
82 | #ifdef CONFIG_CGROUP_BCACHE | ||
83 | SUBSYS(bcache) | ||
84 | #endif | ||
85 | |||
86 | /* */ | ||
diff --git a/include/linux/crc-t10dif.h b/include/linux/crc-t10dif.h index b3cb71f0d3b0..a9c96d865ee7 100644 --- a/include/linux/crc-t10dif.h +++ b/include/linux/crc-t10dif.h | |||
@@ -3,10 +3,6 @@ | |||
3 | 3 | ||
4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
5 | 5 | ||
6 | #define CRC_T10DIF_DIGEST_SIZE 2 | ||
7 | #define CRC_T10DIF_BLOCK_SIZE 1 | ||
8 | |||
9 | __u16 crc_t10dif_generic(__u16 crc, const unsigned char *buffer, size_t len); | ||
10 | __u16 crc_t10dif(unsigned char const *, size_t); | 6 | __u16 crc_t10dif(unsigned char const *, size_t); |
11 | 7 | ||
12 | #endif | 8 | #endif |
diff --git a/include/linux/drbd.h b/include/linux/drbd.h index 1b4d4ee1168f..de7d74ab3de6 100644 --- a/include/linux/drbd.h +++ b/include/linux/drbd.h | |||
@@ -177,7 +177,11 @@ enum drbd_ret_code { | |||
177 | ERR_NEED_APV_100 = 163, | 177 | ERR_NEED_APV_100 = 163, |
178 | ERR_NEED_ALLOW_TWO_PRI = 164, | 178 | ERR_NEED_ALLOW_TWO_PRI = 164, |
179 | ERR_MD_UNCLEAN = 165, | 179 | ERR_MD_UNCLEAN = 165, |
180 | 180 | ERR_MD_LAYOUT_CONNECTED = 166, | |
181 | ERR_MD_LAYOUT_TOO_BIG = 167, | ||
182 | ERR_MD_LAYOUT_TOO_SMALL = 168, | ||
183 | ERR_MD_LAYOUT_NO_FIT = 169, | ||
184 | ERR_IMPLICIT_SHRINK = 170, | ||
181 | /* insert new ones above this line */ | 185 | /* insert new ones above this line */ |
182 | AFTER_LAST_ERR_CODE | 186 | AFTER_LAST_ERR_CODE |
183 | }; | 187 | }; |
diff --git a/include/linux/drbd_genl.h b/include/linux/drbd_genl.h index d0d8fac8a6e4..e8c44572b8cb 100644 --- a/include/linux/drbd_genl.h +++ b/include/linux/drbd_genl.h | |||
@@ -181,6 +181,8 @@ GENL_struct(DRBD_NLA_RESIZE_PARMS, 7, resize_parms, | |||
181 | __u64_field(1, DRBD_GENLA_F_MANDATORY, resize_size) | 181 | __u64_field(1, DRBD_GENLA_F_MANDATORY, resize_size) |
182 | __flg_field(2, DRBD_GENLA_F_MANDATORY, resize_force) | 182 | __flg_field(2, DRBD_GENLA_F_MANDATORY, resize_force) |
183 | __flg_field(3, DRBD_GENLA_F_MANDATORY, no_resync) | 183 | __flg_field(3, DRBD_GENLA_F_MANDATORY, no_resync) |
184 | __u32_field_def(4, 0 /* OPTIONAL */, al_stripes, DRBD_AL_STRIPES_DEF) | ||
185 | __u32_field_def(5, 0 /* OPTIONAL */, al_stripe_size, DRBD_AL_STRIPE_SIZE_DEF) | ||
184 | ) | 186 | ) |
185 | 187 | ||
186 | GENL_struct(DRBD_NLA_STATE_INFO, 8, state_info, | 188 | GENL_struct(DRBD_NLA_STATE_INFO, 8, state_info, |
diff --git a/include/linux/drbd_limits.h b/include/linux/drbd_limits.h index 1fedf2b17cc8..17e50bb00521 100644 --- a/include/linux/drbd_limits.h +++ b/include/linux/drbd_limits.h | |||
@@ -215,4 +215,13 @@ | |||
215 | #define DRBD_ALWAYS_ASBP_DEF 0 | 215 | #define DRBD_ALWAYS_ASBP_DEF 0 |
216 | #define DRBD_USE_RLE_DEF 1 | 216 | #define DRBD_USE_RLE_DEF 1 |
217 | 217 | ||
218 | #define DRBD_AL_STRIPES_MIN 1 | ||
219 | #define DRBD_AL_STRIPES_MAX 1024 | ||
220 | #define DRBD_AL_STRIPES_DEF 1 | ||
221 | #define DRBD_AL_STRIPES_SCALE '1' | ||
222 | |||
223 | #define DRBD_AL_STRIPE_SIZE_MIN 4 | ||
224 | #define DRBD_AL_STRIPE_SIZE_MAX 16777216 | ||
225 | #define DRBD_AL_STRIPE_SIZE_DEF 32 | ||
226 | #define DRBD_AL_STRIPE_SIZE_SCALE 'k' /* kilobytes */ | ||
218 | #endif | 227 | #endif |
diff --git a/include/linux/edac.h b/include/linux/edac.h index 0b763276f619..5c6d7fbaf89e 100644 --- a/include/linux/edac.h +++ b/include/linux/edac.h | |||
@@ -622,7 +622,7 @@ struct edac_raw_error_desc { | |||
622 | */ | 622 | */ |
623 | struct mem_ctl_info { | 623 | struct mem_ctl_info { |
624 | struct device dev; | 624 | struct device dev; |
625 | struct bus_type bus; | 625 | struct bus_type *bus; |
626 | 626 | ||
627 | struct list_head link; /* for global list of mem_ctl_info structs */ | 627 | struct list_head link; /* for global list of mem_ctl_info structs */ |
628 | 628 | ||
@@ -742,4 +742,9 @@ struct mem_ctl_info { | |||
742 | #endif | 742 | #endif |
743 | }; | 743 | }; |
744 | 744 | ||
745 | /* | ||
746 | * Maximum number of memory controllers in the coherent fabric. | ||
747 | */ | ||
748 | #define EDAC_MAX_MCS 16 | ||
749 | |||
745 | #endif | 750 | #endif |
diff --git a/include/linux/firewire.h b/include/linux/firewire.h index 3b0e820375ab..5d7782e42b8f 100644 --- a/include/linux/firewire.h +++ b/include/linux/firewire.h | |||
@@ -436,6 +436,7 @@ struct fw_iso_context { | |||
436 | int type; | 436 | int type; |
437 | int channel; | 437 | int channel; |
438 | int speed; | 438 | int speed; |
439 | bool drop_overflow_headers; | ||
439 | size_t header_size; | 440 | size_t header_size; |
440 | union { | 441 | union { |
441 | fw_iso_callback_t sc; | 442 | fw_iso_callback_t sc; |
diff --git a/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h b/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h index dab34a1deb2c..b6bdcd66c07d 100644 --- a/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h +++ b/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h | |||
@@ -103,15 +103,15 @@ | |||
103 | #define IMX6Q_GPR1_EXC_MON_MASK BIT(22) | 103 | #define IMX6Q_GPR1_EXC_MON_MASK BIT(22) |
104 | #define IMX6Q_GPR1_EXC_MON_OKAY 0x0 | 104 | #define IMX6Q_GPR1_EXC_MON_OKAY 0x0 |
105 | #define IMX6Q_GPR1_EXC_MON_SLVE BIT(22) | 105 | #define IMX6Q_GPR1_EXC_MON_SLVE BIT(22) |
106 | #define IMX6Q_GPR1_MIPI_IPU2_SEL_MASK BIT(21) | 106 | #define IMX6Q_GPR1_ENET_CLK_SEL_MASK BIT(21) |
107 | #define IMX6Q_GPR1_MIPI_IPU2_SEL_GASKET 0x0 | 107 | #define IMX6Q_GPR1_ENET_CLK_SEL_PAD 0 |
108 | #define IMX6Q_GPR1_MIPI_IPU2_SEL_IOMUX BIT(21) | 108 | #define IMX6Q_GPR1_ENET_CLK_SEL_ANATOP BIT(21) |
109 | #define IMX6Q_GPR1_MIPI_IPU1_MUX_MASK BIT(20) | 109 | #define IMX6Q_GPR1_MIPI_IPU2_MUX_MASK BIT(20) |
110 | #define IMX6Q_GPR1_MIPI_IPU1_MUX_GASKET 0x0 | ||
111 | #define IMX6Q_GPR1_MIPI_IPU1_MUX_IOMUX BIT(20) | ||
112 | #define IMX6Q_GPR1_MIPI_IPU2_MUX_MASK BIT(19) | ||
113 | #define IMX6Q_GPR1_MIPI_IPU2_MUX_GASKET 0x0 | 110 | #define IMX6Q_GPR1_MIPI_IPU2_MUX_GASKET 0x0 |
114 | #define IMX6Q_GPR1_MIPI_IPU2_MUX_IOMUX BIT(19) | 111 | #define IMX6Q_GPR1_MIPI_IPU2_MUX_IOMUX BIT(20) |
112 | #define IMX6Q_GPR1_MIPI_IPU1_MUX_MASK BIT(19) | ||
113 | #define IMX6Q_GPR1_MIPI_IPU1_MUX_GASKET 0x0 | ||
114 | #define IMX6Q_GPR1_MIPI_IPU1_MUX_IOMUX BIT(19) | ||
115 | #define IMX6Q_GPR1_PCIE_TEST_PD BIT(18) | 115 | #define IMX6Q_GPR1_PCIE_TEST_PD BIT(18) |
116 | #define IMX6Q_GPR1_IPU_VPU_MUX_MASK BIT(17) | 116 | #define IMX6Q_GPR1_IPU_VPU_MUX_MASK BIT(17) |
117 | #define IMX6Q_GPR1_IPU_VPU_MUX_IPU1 0x0 | 117 | #define IMX6Q_GPR1_IPU_VPU_MUX_IPU1 0x0 |
@@ -279,41 +279,88 @@ | |||
279 | #define IMX6Q_GPR13_CAN2_STOP_REQ BIT(29) | 279 | #define IMX6Q_GPR13_CAN2_STOP_REQ BIT(29) |
280 | #define IMX6Q_GPR13_CAN1_STOP_REQ BIT(28) | 280 | #define IMX6Q_GPR13_CAN1_STOP_REQ BIT(28) |
281 | #define IMX6Q_GPR13_ENET_STOP_REQ BIT(27) | 281 | #define IMX6Q_GPR13_ENET_STOP_REQ BIT(27) |
282 | #define IMX6Q_GPR13_SATA_PHY_8_MASK (0x7 << 24) | 282 | #define IMX6Q_GPR13_SATA_RX_EQ_VAL_MASK (0x7 << 24) |
283 | #define IMX6Q_GPR13_SATA_PHY_8_0_5_DB (0x0 << 24) | 283 | #define IMX6Q_GPR13_SATA_RX_EQ_VAL_0_5_DB (0x0 << 24) |
284 | #define IMX6Q_GPR13_SATA_PHY_8_1_0_DB (0x1 << 24) | 284 | #define IMX6Q_GPR13_SATA_RX_EQ_VAL_1_0_DB (0x1 << 24) |
285 | #define IMX6Q_GPR13_SATA_PHY_8_1_5_DB (0x2 << 24) | 285 | #define IMX6Q_GPR13_SATA_RX_EQ_VAL_1_5_DB (0x2 << 24) |
286 | #define IMX6Q_GPR13_SATA_PHY_8_2_0_DB (0x3 << 24) | 286 | #define IMX6Q_GPR13_SATA_RX_EQ_VAL_2_0_DB (0x3 << 24) |
287 | #define IMX6Q_GPR13_SATA_PHY_8_2_5_DB (0x4 << 24) | 287 | #define IMX6Q_GPR13_SATA_RX_EQ_VAL_2_5_DB (0x4 << 24) |
288 | #define IMX6Q_GPR13_SATA_PHY_8_3_0_DB (0x5 << 24) | 288 | #define IMX6Q_GPR13_SATA_RX_EQ_VAL_3_0_DB (0x5 << 24) |
289 | #define IMX6Q_GPR13_SATA_PHY_8_3_5_DB (0x6 << 24) | 289 | #define IMX6Q_GPR13_SATA_RX_EQ_VAL_3_5_DB (0x6 << 24) |
290 | #define IMX6Q_GPR13_SATA_PHY_8_4_0_DB (0x7 << 24) | 290 | #define IMX6Q_GPR13_SATA_RX_EQ_VAL_4_0_DB (0x7 << 24) |
291 | #define IMX6Q_GPR13_SATA_PHY_7_MASK (0x1f << 19) | 291 | #define IMX6Q_GPR13_SATA_RX_LOS_LVL_MASK (0x1f << 19) |
292 | #define IMX6Q_GPR13_SATA_PHY_7_SATA1I (0x10 << 19) | 292 | #define IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA1I (0x10 << 19) |
293 | #define IMX6Q_GPR13_SATA_PHY_7_SATA1M (0x10 << 19) | 293 | #define IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA1M (0x10 << 19) |
294 | #define IMX6Q_GPR13_SATA_PHY_7_SATA1X (0x1a << 19) | 294 | #define IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA1X (0x1a << 19) |
295 | #define IMX6Q_GPR13_SATA_PHY_7_SATA2I (0x12 << 19) | 295 | #define IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA2I (0x12 << 19) |
296 | #define IMX6Q_GPR13_SATA_PHY_7_SATA2M (0x12 << 19) | 296 | #define IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA2M (0x12 << 19) |
297 | #define IMX6Q_GPR13_SATA_PHY_7_SATA2X (0x1a << 19) | 297 | #define IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA2X (0x1a << 19) |
298 | #define IMX6Q_GPR13_SATA_PHY_6_MASK (0x7 << 16) | 298 | #define IMX6Q_GPR13_SATA_RX_DPLL_MODE_MASK (0x7 << 16) |
299 | #define IMX6Q_GPR13_SATA_SPEED_MASK BIT(15) | 299 | #define IMX6Q_GPR13_SATA_RX_DPLL_MODE_1P_1F (0x0 << 16) |
300 | #define IMX6Q_GPR13_SATA_SPEED_1P5G 0x0 | 300 | #define IMX6Q_GPR13_SATA_RX_DPLL_MODE_2P_2F (0x1 << 16) |
301 | #define IMX6Q_GPR13_SATA_SPEED_3P0G BIT(15) | 301 | #define IMX6Q_GPR13_SATA_RX_DPLL_MODE_1P_4F (0x2 << 16) |
302 | #define IMX6Q_GPR13_SATA_PHY_5 BIT(14) | 302 | #define IMX6Q_GPR13_SATA_RX_DPLL_MODE_2P_4F (0x3 << 16) |
303 | #define IMX6Q_GPR13_SATA_PHY_4_MASK (0x7 << 11) | 303 | #define IMX6Q_GPR13_SATA_SPD_MODE_MASK BIT(15) |
304 | #define IMX6Q_GPR13_SATA_PHY_4_16_16 (0x0 << 11) | 304 | #define IMX6Q_GPR13_SATA_SPD_MODE_1P5G 0x0 |
305 | #define IMX6Q_GPR13_SATA_PHY_4_14_16 (0x1 << 11) | 305 | #define IMX6Q_GPR13_SATA_SPD_MODE_3P0G BIT(15) |
306 | #define IMX6Q_GPR13_SATA_PHY_4_12_16 (0x2 << 11) | 306 | #define IMX6Q_GPR13_SATA_MPLL_SS_EN BIT(14) |
307 | #define IMX6Q_GPR13_SATA_PHY_4_10_16 (0x3 << 11) | 307 | #define IMX6Q_GPR13_SATA_TX_ATTEN_MASK (0x7 << 11) |
308 | #define IMX6Q_GPR13_SATA_PHY_4_9_16 (0x4 << 11) | 308 | #define IMX6Q_GPR13_SATA_TX_ATTEN_16_16 (0x0 << 11) |
309 | #define IMX6Q_GPR13_SATA_PHY_4_8_16 (0x5 << 11) | 309 | #define IMX6Q_GPR13_SATA_TX_ATTEN_14_16 (0x1 << 11) |
310 | #define IMX6Q_GPR13_SATA_PHY_3_MASK (0xf << 7) | 310 | #define IMX6Q_GPR13_SATA_TX_ATTEN_12_16 (0x2 << 11) |
311 | #define IMX6Q_GPR13_SATA_PHY_3_OFF 0x7 | 311 | #define IMX6Q_GPR13_SATA_TX_ATTEN_10_16 (0x3 << 11) |
312 | #define IMX6Q_GPR13_SATA_PHY_2_MASK (0x1f << 2) | 312 | #define IMX6Q_GPR13_SATA_TX_ATTEN_9_16 (0x4 << 11) |
313 | #define IMX6Q_GPR13_SATA_PHY_2_OFF 0x2 | 313 | #define IMX6Q_GPR13_SATA_TX_ATTEN_8_16 (0x5 << 11) |
314 | #define IMX6Q_GPR13_SATA_PHY_1_MASK (0x3 << 0) | 314 | #define IMX6Q_GPR13_SATA_TX_BOOST_MASK (0xf << 7) |
315 | #define IMX6Q_GPR13_SATA_PHY_1_FAST (0x0 << 0) | 315 | #define IMX6Q_GPR13_SATA_TX_BOOST_0_00_DB (0x0 << 7) |
316 | #define IMX6Q_GPR13_SATA_PHY_1_MED (0x1 << 0) | 316 | #define IMX6Q_GPR13_SATA_TX_BOOST_0_37_DB (0x1 << 7) |
317 | #define IMX6Q_GPR13_SATA_PHY_1_SLOW (0x2 << 0) | 317 | #define IMX6Q_GPR13_SATA_TX_BOOST_0_74_DB (0x2 << 7) |
318 | 318 | #define IMX6Q_GPR13_SATA_TX_BOOST_1_11_DB (0x3 << 7) | |
319 | #define IMX6Q_GPR13_SATA_TX_BOOST_1_48_DB (0x4 << 7) | ||
320 | #define IMX6Q_GPR13_SATA_TX_BOOST_1_85_DB (0x5 << 7) | ||
321 | #define IMX6Q_GPR13_SATA_TX_BOOST_2_22_DB (0x6 << 7) | ||
322 | #define IMX6Q_GPR13_SATA_TX_BOOST_2_59_DB (0x7 << 7) | ||
323 | #define IMX6Q_GPR13_SATA_TX_BOOST_2_96_DB (0x8 << 7) | ||
324 | #define IMX6Q_GPR13_SATA_TX_BOOST_3_33_DB (0x9 << 7) | ||
325 | #define IMX6Q_GPR13_SATA_TX_BOOST_3_70_DB (0xa << 7) | ||
326 | #define IMX6Q_GPR13_SATA_TX_BOOST_4_07_DB (0xb << 7) | ||
327 | #define IMX6Q_GPR13_SATA_TX_BOOST_4_44_DB (0xc << 7) | ||
328 | #define IMX6Q_GPR13_SATA_TX_BOOST_4_81_DB (0xd << 7) | ||
329 | #define IMX6Q_GPR13_SATA_TX_BOOST_5_28_DB (0xe << 7) | ||
330 | #define IMX6Q_GPR13_SATA_TX_BOOST_5_75_DB (0xf << 7) | ||
331 | #define IMX6Q_GPR13_SATA_TX_LVL_MASK (0x1f << 2) | ||
332 | #define IMX6Q_GPR13_SATA_TX_LVL_0_937_V (0x00 << 2) | ||
333 | #define IMX6Q_GPR13_SATA_TX_LVL_0_947_V (0x01 << 2) | ||
334 | #define IMX6Q_GPR13_SATA_TX_LVL_0_957_V (0x02 << 2) | ||
335 | #define IMX6Q_GPR13_SATA_TX_LVL_0_966_V (0x03 << 2) | ||
336 | #define IMX6Q_GPR13_SATA_TX_LVL_0_976_V (0x04 << 2) | ||
337 | #define IMX6Q_GPR13_SATA_TX_LVL_0_986_V (0x05 << 2) | ||
338 | #define IMX6Q_GPR13_SATA_TX_LVL_0_996_V (0x06 << 2) | ||
339 | #define IMX6Q_GPR13_SATA_TX_LVL_1_005_V (0x07 << 2) | ||
340 | #define IMX6Q_GPR13_SATA_TX_LVL_1_015_V (0x08 << 2) | ||
341 | #define IMX6Q_GPR13_SATA_TX_LVL_1_025_V (0x09 << 2) | ||
342 | #define IMX6Q_GPR13_SATA_TX_LVL_1_035_V (0x0a << 2) | ||
343 | #define IMX6Q_GPR13_SATA_TX_LVL_1_045_V (0x0b << 2) | ||
344 | #define IMX6Q_GPR13_SATA_TX_LVL_1_054_V (0x0c << 2) | ||
345 | #define IMX6Q_GPR13_SATA_TX_LVL_1_064_V (0x0d << 2) | ||
346 | #define IMX6Q_GPR13_SATA_TX_LVL_1_074_V (0x0e << 2) | ||
347 | #define IMX6Q_GPR13_SATA_TX_LVL_1_084_V (0x0f << 2) | ||
348 | #define IMX6Q_GPR13_SATA_TX_LVL_1_094_V (0x10 << 2) | ||
349 | #define IMX6Q_GPR13_SATA_TX_LVL_1_104_V (0x11 << 2) | ||
350 | #define IMX6Q_GPR13_SATA_TX_LVL_1_113_V (0x12 << 2) | ||
351 | #define IMX6Q_GPR13_SATA_TX_LVL_1_123_V (0x13 << 2) | ||
352 | #define IMX6Q_GPR13_SATA_TX_LVL_1_133_V (0x14 << 2) | ||
353 | #define IMX6Q_GPR13_SATA_TX_LVL_1_143_V (0x15 << 2) | ||
354 | #define IMX6Q_GPR13_SATA_TX_LVL_1_152_V (0x16 << 2) | ||
355 | #define IMX6Q_GPR13_SATA_TX_LVL_1_162_V (0x17 << 2) | ||
356 | #define IMX6Q_GPR13_SATA_TX_LVL_1_172_V (0x18 << 2) | ||
357 | #define IMX6Q_GPR13_SATA_TX_LVL_1_182_V (0x19 << 2) | ||
358 | #define IMX6Q_GPR13_SATA_TX_LVL_1_191_V (0x1a << 2) | ||
359 | #define IMX6Q_GPR13_SATA_TX_LVL_1_201_V (0x1b << 2) | ||
360 | #define IMX6Q_GPR13_SATA_TX_LVL_1_211_V (0x1c << 2) | ||
361 | #define IMX6Q_GPR13_SATA_TX_LVL_1_221_V (0x1d << 2) | ||
362 | #define IMX6Q_GPR13_SATA_TX_LVL_1_230_V (0x1e << 2) | ||
363 | #define IMX6Q_GPR13_SATA_TX_LVL_1_240_V (0x1f << 2) | ||
364 | #define IMX6Q_GPR13_SATA_MPLL_CLK_EN BIT(1) | ||
365 | #define IMX6Q_GPR13_SATA_TX_EDGE_RATE BIT(0) | ||
319 | #endif /* __LINUX_IMX6Q_IOMUXC_GPR_H */ | 366 | #endif /* __LINUX_IMX6Q_IOMUXC_GPR_H */ |
diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h index 8de8d8f22384..737685e9e852 100644 --- a/include/linux/mlx5/device.h +++ b/include/linux/mlx5/device.h | |||
@@ -690,6 +690,26 @@ struct mlx5_query_cq_mbox_out { | |||
690 | __be64 pas[0]; | 690 | __be64 pas[0]; |
691 | }; | 691 | }; |
692 | 692 | ||
693 | struct mlx5_enable_hca_mbox_in { | ||
694 | struct mlx5_inbox_hdr hdr; | ||
695 | u8 rsvd[8]; | ||
696 | }; | ||
697 | |||
698 | struct mlx5_enable_hca_mbox_out { | ||
699 | struct mlx5_outbox_hdr hdr; | ||
700 | u8 rsvd[8]; | ||
701 | }; | ||
702 | |||
703 | struct mlx5_disable_hca_mbox_in { | ||
704 | struct mlx5_inbox_hdr hdr; | ||
705 | u8 rsvd[8]; | ||
706 | }; | ||
707 | |||
708 | struct mlx5_disable_hca_mbox_out { | ||
709 | struct mlx5_outbox_hdr hdr; | ||
710 | u8 rsvd[8]; | ||
711 | }; | ||
712 | |||
693 | struct mlx5_eq_context { | 713 | struct mlx5_eq_context { |
694 | u8 status; | 714 | u8 status; |
695 | u8 ec_oi; | 715 | u8 ec_oi; |
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h index f22e4419839b..2aa258b0ced1 100644 --- a/include/linux/mlx5/driver.h +++ b/include/linux/mlx5/driver.h | |||
@@ -101,6 +101,8 @@ enum { | |||
101 | MLX5_CMD_OP_QUERY_ADAPTER = 0x101, | 101 | MLX5_CMD_OP_QUERY_ADAPTER = 0x101, |
102 | MLX5_CMD_OP_INIT_HCA = 0x102, | 102 | MLX5_CMD_OP_INIT_HCA = 0x102, |
103 | MLX5_CMD_OP_TEARDOWN_HCA = 0x103, | 103 | MLX5_CMD_OP_TEARDOWN_HCA = 0x103, |
104 | MLX5_CMD_OP_ENABLE_HCA = 0x104, | ||
105 | MLX5_CMD_OP_DISABLE_HCA = 0x105, | ||
104 | MLX5_CMD_OP_QUERY_PAGES = 0x107, | 106 | MLX5_CMD_OP_QUERY_PAGES = 0x107, |
105 | MLX5_CMD_OP_MANAGE_PAGES = 0x108, | 107 | MLX5_CMD_OP_MANAGE_PAGES = 0x108, |
106 | MLX5_CMD_OP_SET_HCA_CAP = 0x109, | 108 | MLX5_CMD_OP_SET_HCA_CAP = 0x109, |
@@ -690,7 +692,7 @@ int mlx5_pagealloc_start(struct mlx5_core_dev *dev); | |||
690 | void mlx5_pagealloc_stop(struct mlx5_core_dev *dev); | 692 | void mlx5_pagealloc_stop(struct mlx5_core_dev *dev); |
691 | void mlx5_core_req_pages_handler(struct mlx5_core_dev *dev, u16 func_id, | 693 | void mlx5_core_req_pages_handler(struct mlx5_core_dev *dev, u16 func_id, |
692 | s16 npages); | 694 | s16 npages); |
693 | int mlx5_satisfy_startup_pages(struct mlx5_core_dev *dev); | 695 | int mlx5_satisfy_startup_pages(struct mlx5_core_dev *dev, int boot); |
694 | int mlx5_reclaim_startup_pages(struct mlx5_core_dev *dev); | 696 | int mlx5_reclaim_startup_pages(struct mlx5_core_dev *dev); |
695 | void mlx5_register_debugfs(void); | 697 | void mlx5_register_debugfs(void); |
696 | void mlx5_unregister_debugfs(void); | 698 | void mlx5_unregister_debugfs(void); |
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index b62d4af6c667..45e921401b06 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h | |||
@@ -361,7 +361,8 @@ struct ssb_device_id { | |||
361 | __u16 vendor; | 361 | __u16 vendor; |
362 | __u16 coreid; | 362 | __u16 coreid; |
363 | __u8 revision; | 363 | __u8 revision; |
364 | }; | 364 | __u8 __pad; |
365 | } __attribute__((packed, aligned(2))); | ||
365 | #define SSB_DEVICE(_vendor, _coreid, _revision) \ | 366 | #define SSB_DEVICE(_vendor, _coreid, _revision) \ |
366 | { .vendor = _vendor, .coreid = _coreid, .revision = _revision, } | 367 | { .vendor = _vendor, .coreid = _coreid, .revision = _revision, } |
367 | #define SSB_DEVTABLE_END \ | 368 | #define SSB_DEVTABLE_END \ |
@@ -377,7 +378,7 @@ struct bcma_device_id { | |||
377 | __u16 id; | 378 | __u16 id; |
378 | __u8 rev; | 379 | __u8 rev; |
379 | __u8 class; | 380 | __u8 class; |
380 | }; | 381 | } __attribute__((packed,aligned(2))); |
381 | #define BCMA_CORE(_manuf, _id, _rev, _class) \ | 382 | #define BCMA_CORE(_manuf, _id, _rev, _class) \ |
382 | { .manuf = _manuf, .id = _id, .rev = _rev, .class = _class, } | 383 | { .manuf = _manuf, .id = _id, .rev = _rev, .class = _class, } |
383 | #define BCMA_CORETABLE_END \ | 384 | #define BCMA_CORETABLE_END \ |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 0741a1e919a5..9a4156845e93 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -973,7 +973,7 @@ struct net_device_ops { | |||
973 | gfp_t gfp); | 973 | gfp_t gfp); |
974 | void (*ndo_netpoll_cleanup)(struct net_device *dev); | 974 | void (*ndo_netpoll_cleanup)(struct net_device *dev); |
975 | #endif | 975 | #endif |
976 | #ifdef CONFIG_NET_LL_RX_POLL | 976 | #ifdef CONFIG_NET_RX_BUSY_POLL |
977 | int (*ndo_busy_poll)(struct napi_struct *dev); | 977 | int (*ndo_busy_poll)(struct napi_struct *dev); |
978 | #endif | 978 | #endif |
979 | int (*ndo_set_vf_mac)(struct net_device *dev, | 979 | int (*ndo_set_vf_mac)(struct net_device *dev, |
diff --git a/include/linux/platform_data/mmc-pxamci.h b/include/linux/platform_data/mmc-pxamci.h index 9eb515bb799d..1706b3597ce0 100644 --- a/include/linux/platform_data/mmc-pxamci.h +++ b/include/linux/platform_data/mmc-pxamci.h | |||
@@ -12,7 +12,7 @@ struct pxamci_platform_data { | |||
12 | unsigned long detect_delay_ms; /* delay in millisecond before detecting cards after interrupt */ | 12 | unsigned long detect_delay_ms; /* delay in millisecond before detecting cards after interrupt */ |
13 | int (*init)(struct device *, irq_handler_t , void *); | 13 | int (*init)(struct device *, irq_handler_t , void *); |
14 | int (*get_ro)(struct device *); | 14 | int (*get_ro)(struct device *); |
15 | void (*setpower)(struct device *, unsigned int); | 15 | int (*setpower)(struct device *, unsigned int); |
16 | void (*exit)(struct device *, void *); | 16 | void (*exit)(struct device *, void *); |
17 | int gpio_card_detect; /* gpio detecting card insertion */ | 17 | int gpio_card_detect; /* gpio detecting card insertion */ |
18 | int gpio_card_ro; /* gpio detecting read only toggle */ | 18 | int gpio_card_ro; /* gpio detecting read only toggle */ |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 50d04b92ceda..d722490da030 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1628,6 +1628,7 @@ extern void thread_group_cputime_adjusted(struct task_struct *p, cputime_t *ut, | |||
1628 | #define PF_MEMPOLICY 0x10000000 /* Non-default NUMA mempolicy */ | 1628 | #define PF_MEMPOLICY 0x10000000 /* Non-default NUMA mempolicy */ |
1629 | #define PF_MUTEX_TESTER 0x20000000 /* Thread belongs to the rt mutex tester */ | 1629 | #define PF_MUTEX_TESTER 0x20000000 /* Thread belongs to the rt mutex tester */ |
1630 | #define PF_FREEZER_SKIP 0x40000000 /* Freezer should not count it as freezable */ | 1630 | #define PF_FREEZER_SKIP 0x40000000 /* Freezer should not count it as freezable */ |
1631 | #define PF_SUSPEND_TASK 0x80000000 /* this thread called freeze_processes and should not be frozen */ | ||
1631 | 1632 | ||
1632 | /* | 1633 | /* |
1633 | * Only the _current_ task can read/write to tsk->flags, but other | 1634 | * Only the _current_ task can read/write to tsk->flags, but other |
diff --git a/include/linux/shdma-base.h b/include/linux/shdma-base.h index 382cf710ca9a..5b1c9848124c 100644 --- a/include/linux/shdma-base.h +++ b/include/linux/shdma-base.h | |||
@@ -124,6 +124,10 @@ void shdma_chan_remove(struct shdma_chan *schan); | |||
124 | int shdma_init(struct device *dev, struct shdma_dev *sdev, | 124 | int shdma_init(struct device *dev, struct shdma_dev *sdev, |
125 | int chan_num); | 125 | int chan_num); |
126 | void shdma_cleanup(struct shdma_dev *sdev); | 126 | void shdma_cleanup(struct shdma_dev *sdev); |
127 | #if IS_ENABLED(CONFIG_SH_DMAE_BASE) | ||
127 | bool shdma_chan_filter(struct dma_chan *chan, void *arg); | 128 | bool shdma_chan_filter(struct dma_chan *chan, void *arg); |
129 | #else | ||
130 | #define shdma_chan_filter NULL | ||
131 | #endif | ||
128 | 132 | ||
129 | #endif | 133 | #endif |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 5afefa01a13c..3b71a4e83642 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -501,7 +501,7 @@ struct sk_buff { | |||
501 | /* 7/9 bit hole (depending on ndisc_nodetype presence) */ | 501 | /* 7/9 bit hole (depending on ndisc_nodetype presence) */ |
502 | kmemcheck_bitfield_end(flags2); | 502 | kmemcheck_bitfield_end(flags2); |
503 | 503 | ||
504 | #if defined CONFIG_NET_DMA || defined CONFIG_NET_LL_RX_POLL | 504 | #if defined CONFIG_NET_DMA || defined CONFIG_NET_RX_BUSY_POLL |
505 | union { | 505 | union { |
506 | unsigned int napi_id; | 506 | unsigned int napi_id; |
507 | dma_cookie_t dma_cookie; | 507 | dma_cookie_t dma_cookie; |
diff --git a/include/linux/tick.h b/include/linux/tick.h index 9180f4b85e6d..62bd8b72873c 100644 --- a/include/linux/tick.h +++ b/include/linux/tick.h | |||
@@ -174,10 +174,4 @@ static inline void tick_nohz_task_switch(struct task_struct *tsk) { } | |||
174 | #endif | 174 | #endif |
175 | 175 | ||
176 | 176 | ||
177 | # ifdef CONFIG_CPU_IDLE_GOV_MENU | ||
178 | extern void menu_hrtimer_cancel(void); | ||
179 | # else | ||
180 | static inline void menu_hrtimer_cancel(void) {} | ||
181 | # endif /* CONFIG_CPU_IDLE_GOV_MENU */ | ||
182 | |||
183 | #endif | 177 | #endif |
diff --git a/include/linux/usb.h b/include/linux/usb.h index a232b7ece1f6..0eec2689b955 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
@@ -367,17 +367,6 @@ struct usb_bus { | |||
367 | 367 | ||
368 | /* ----------------------------------------------------------------------- */ | 368 | /* ----------------------------------------------------------------------- */ |
369 | 369 | ||
370 | /* This is arbitrary. | ||
371 | * From USB 2.0 spec Table 11-13, offset 7, a hub can | ||
372 | * have up to 255 ports. The most yet reported is 10. | ||
373 | * | ||
374 | * Current Wireless USB host hardware (Intel i1480 for example) allows | ||
375 | * up to 22 devices to connect. Upcoming hardware might raise that | ||
376 | * limit. Because the arrays need to add a bit for hub status data, we | ||
377 | * do 31, so plus one evens out to four bytes. | ||
378 | */ | ||
379 | #define USB_MAXCHILDREN (31) | ||
380 | |||
381 | struct usb_tt; | 370 | struct usb_tt; |
382 | 371 | ||
383 | enum usb_device_removable { | 372 | enum usb_device_removable { |
diff --git a/include/linux/vmpressure.h b/include/linux/vmpressure.h index 76be077340ea..7dc17e2456de 100644 --- a/include/linux/vmpressure.h +++ b/include/linux/vmpressure.h | |||
@@ -12,7 +12,7 @@ struct vmpressure { | |||
12 | unsigned long scanned; | 12 | unsigned long scanned; |
13 | unsigned long reclaimed; | 13 | unsigned long reclaimed; |
14 | /* The lock is used to keep the scanned/reclaimed above in sync. */ | 14 | /* The lock is used to keep the scanned/reclaimed above in sync. */ |
15 | struct mutex sr_lock; | 15 | struct spinlock sr_lock; |
16 | 16 | ||
17 | /* The list of vmpressure_event structs. */ | 17 | /* The list of vmpressure_event structs. */ |
18 | struct list_head events; | 18 | struct list_head events; |
@@ -30,6 +30,7 @@ extern void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, | |||
30 | extern void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio); | 30 | extern void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio); |
31 | 31 | ||
32 | extern void vmpressure_init(struct vmpressure *vmpr); | 32 | extern void vmpressure_init(struct vmpressure *vmpr); |
33 | extern void vmpressure_cleanup(struct vmpressure *vmpr); | ||
33 | extern struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg); | 34 | extern struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg); |
34 | extern struct cgroup_subsys_state *vmpressure_to_css(struct vmpressure *vmpr); | 35 | extern struct cgroup_subsys_state *vmpressure_to_css(struct vmpressure *vmpr); |
35 | extern struct vmpressure *css_to_vmpressure(struct cgroup_subsys_state *css); | 36 | extern struct vmpressure *css_to_vmpressure(struct cgroup_subsys_state *css); |
diff --git a/include/net/busy_poll.h b/include/net/busy_poll.h index a14339c2985f..f18b91966d3d 100644 --- a/include/net/busy_poll.h +++ b/include/net/busy_poll.h | |||
@@ -27,7 +27,7 @@ | |||
27 | #include <linux/netdevice.h> | 27 | #include <linux/netdevice.h> |
28 | #include <net/ip.h> | 28 | #include <net/ip.h> |
29 | 29 | ||
30 | #ifdef CONFIG_NET_LL_RX_POLL | 30 | #ifdef CONFIG_NET_RX_BUSY_POLL |
31 | 31 | ||
32 | struct napi_struct; | 32 | struct napi_struct; |
33 | extern unsigned int sysctl_net_busy_read __read_mostly; | 33 | extern unsigned int sysctl_net_busy_read __read_mostly; |
@@ -146,7 +146,7 @@ static inline void sk_mark_napi_id(struct sock *sk, struct sk_buff *skb) | |||
146 | sk->sk_napi_id = skb->napi_id; | 146 | sk->sk_napi_id = skb->napi_id; |
147 | } | 147 | } |
148 | 148 | ||
149 | #else /* CONFIG_NET_LL_RX_POLL */ | 149 | #else /* CONFIG_NET_RX_BUSY_POLL */ |
150 | static inline unsigned long net_busy_loop_on(void) | 150 | static inline unsigned long net_busy_loop_on(void) |
151 | { | 151 | { |
152 | return 0; | 152 | return 0; |
@@ -181,5 +181,10 @@ static inline bool busy_loop_timeout(unsigned long end_time) | |||
181 | return true; | 181 | return true; |
182 | } | 182 | } |
183 | 183 | ||
184 | #endif /* CONFIG_NET_LL_RX_POLL */ | 184 | static inline bool sk_busy_loop(struct sock *sk, int nonblock) |
185 | { | ||
186 | return false; | ||
187 | } | ||
188 | |||
189 | #endif /* CONFIG_NET_RX_BUSY_POLL */ | ||
185 | #endif /* _LINUX_NET_BUSY_POLL_H */ | 190 | #endif /* _LINUX_NET_BUSY_POLL_H */ |
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 2a601e7da1bf..48ec25a7fcb6 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h | |||
@@ -300,7 +300,7 @@ extern void inet6_rt_notify(int event, struct rt6_info *rt, | |||
300 | struct nl_info *info); | 300 | struct nl_info *info); |
301 | 301 | ||
302 | extern void fib6_run_gc(unsigned long expires, | 302 | extern void fib6_run_gc(unsigned long expires, |
303 | struct net *net); | 303 | struct net *net, bool force); |
304 | 304 | ||
305 | extern void fib6_gc_cleanup(void); | 305 | extern void fib6_gc_cleanup(void); |
306 | 306 | ||
diff --git a/include/net/ndisc.h b/include/net/ndisc.h index 949d77528f2f..6fea32340ae8 100644 --- a/include/net/ndisc.h +++ b/include/net/ndisc.h | |||
@@ -119,7 +119,7 @@ extern struct ndisc_options *ndisc_parse_options(u8 *opt, int opt_len, | |||
119 | * if RFC 3831 IPv6-over-Fibre Channel is ever implemented it may | 119 | * if RFC 3831 IPv6-over-Fibre Channel is ever implemented it may |
120 | * also need a pad of 2. | 120 | * also need a pad of 2. |
121 | */ | 121 | */ |
122 | static int ndisc_addr_option_pad(unsigned short type) | 122 | static inline int ndisc_addr_option_pad(unsigned short type) |
123 | { | 123 | { |
124 | switch (type) { | 124 | switch (type) { |
125 | case ARPHRD_INFINIBAND: return 2; | 125 | case ARPHRD_INFINIBAND: return 2; |
diff --git a/include/net/nfc/hci.h b/include/net/nfc/hci.h index 0af851c3b038..b64b7bce4b94 100644 --- a/include/net/nfc/hci.h +++ b/include/net/nfc/hci.h | |||
@@ -59,7 +59,7 @@ struct nfc_hci_ops { | |||
59 | struct nfc_target *target); | 59 | struct nfc_target *target); |
60 | int (*event_received)(struct nfc_hci_dev *hdev, u8 gate, u8 event, | 60 | int (*event_received)(struct nfc_hci_dev *hdev, u8 gate, u8 event, |
61 | struct sk_buff *skb); | 61 | struct sk_buff *skb); |
62 | int (*fw_upload)(struct nfc_hci_dev *hdev, const char *firmware_name); | 62 | int (*fw_download)(struct nfc_hci_dev *hdev, const char *firmware_name); |
63 | int (*discover_se)(struct nfc_hci_dev *dev); | 63 | int (*discover_se)(struct nfc_hci_dev *dev); |
64 | int (*enable_se)(struct nfc_hci_dev *dev, u32 se_idx); | 64 | int (*enable_se)(struct nfc_hci_dev *dev, u32 se_idx); |
65 | int (*disable_se)(struct nfc_hci_dev *dev, u32 se_idx); | 65 | int (*disable_se)(struct nfc_hci_dev *dev, u32 se_idx); |
diff --git a/include/net/nfc/nfc.h b/include/net/nfc/nfc.h index 0e353f1658bb..5f286b726bb6 100644 --- a/include/net/nfc/nfc.h +++ b/include/net/nfc/nfc.h | |||
@@ -68,7 +68,7 @@ struct nfc_ops { | |||
68 | void *cb_context); | 68 | void *cb_context); |
69 | int (*tm_send)(struct nfc_dev *dev, struct sk_buff *skb); | 69 | int (*tm_send)(struct nfc_dev *dev, struct sk_buff *skb); |
70 | int (*check_presence)(struct nfc_dev *dev, struct nfc_target *target); | 70 | int (*check_presence)(struct nfc_dev *dev, struct nfc_target *target); |
71 | int (*fw_upload)(struct nfc_dev *dev, const char *firmware_name); | 71 | int (*fw_download)(struct nfc_dev *dev, const char *firmware_name); |
72 | 72 | ||
73 | /* Secure Element API */ | 73 | /* Secure Element API */ |
74 | int (*discover_se)(struct nfc_dev *dev); | 74 | int (*discover_se)(struct nfc_dev *dev); |
@@ -127,7 +127,7 @@ struct nfc_dev { | |||
127 | int targets_generation; | 127 | int targets_generation; |
128 | struct device dev; | 128 | struct device dev; |
129 | bool dev_up; | 129 | bool dev_up; |
130 | bool fw_upload_in_progress; | 130 | bool fw_download_in_progress; |
131 | u8 rf_mode; | 131 | u8 rf_mode; |
132 | bool polling; | 132 | bool polling; |
133 | struct nfc_target *active_target; | 133 | struct nfc_target *active_target; |
diff --git a/include/net/sock.h b/include/net/sock.h index 95a5a2c6925a..31d5cfbb51ec 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
@@ -327,7 +327,7 @@ struct sock { | |||
327 | #ifdef CONFIG_RPS | 327 | #ifdef CONFIG_RPS |
328 | __u32 sk_rxhash; | 328 | __u32 sk_rxhash; |
329 | #endif | 329 | #endif |
330 | #ifdef CONFIG_NET_LL_RX_POLL | 330 | #ifdef CONFIG_NET_RX_BUSY_POLL |
331 | unsigned int sk_napi_id; | 331 | unsigned int sk_napi_id; |
332 | unsigned int sk_ll_usec; | 332 | unsigned int sk_ll_usec; |
333 | #endif | 333 | #endif |
diff --git a/include/trace/events/bcache.h b/include/trace/events/bcache.h index 3cc5a0b278c3..5ebda976ea93 100644 --- a/include/trace/events/bcache.h +++ b/include/trace/events/bcache.h | |||
@@ -9,9 +9,7 @@ | |||
9 | struct search; | 9 | struct search; |
10 | 10 | ||
11 | DECLARE_EVENT_CLASS(bcache_request, | 11 | DECLARE_EVENT_CLASS(bcache_request, |
12 | |||
13 | TP_PROTO(struct search *s, struct bio *bio), | 12 | TP_PROTO(struct search *s, struct bio *bio), |
14 | |||
15 | TP_ARGS(s, bio), | 13 | TP_ARGS(s, bio), |
16 | 14 | ||
17 | TP_STRUCT__entry( | 15 | TP_STRUCT__entry( |
@@ -22,7 +20,6 @@ DECLARE_EVENT_CLASS(bcache_request, | |||
22 | __field(dev_t, orig_sector ) | 20 | __field(dev_t, orig_sector ) |
23 | __field(unsigned int, nr_sector ) | 21 | __field(unsigned int, nr_sector ) |
24 | __array(char, rwbs, 6 ) | 22 | __array(char, rwbs, 6 ) |
25 | __array(char, comm, TASK_COMM_LEN ) | ||
26 | ), | 23 | ), |
27 | 24 | ||
28 | TP_fast_assign( | 25 | TP_fast_assign( |
@@ -33,36 +30,66 @@ DECLARE_EVENT_CLASS(bcache_request, | |||
33 | __entry->orig_sector = bio->bi_sector - 16; | 30 | __entry->orig_sector = bio->bi_sector - 16; |
34 | __entry->nr_sector = bio->bi_size >> 9; | 31 | __entry->nr_sector = bio->bi_size >> 9; |
35 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); | 32 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); |
36 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | ||
37 | ), | 33 | ), |
38 | 34 | ||
39 | TP_printk("%d,%d %s %llu + %u [%s] (from %d,%d @ %llu)", | 35 | TP_printk("%d,%d %s %llu + %u (from %d,%d @ %llu)", |
40 | MAJOR(__entry->dev), MINOR(__entry->dev), | 36 | MAJOR(__entry->dev), MINOR(__entry->dev), |
41 | __entry->rwbs, | 37 | __entry->rwbs, (unsigned long long)__entry->sector, |
42 | (unsigned long long)__entry->sector, | 38 | __entry->nr_sector, __entry->orig_major, __entry->orig_minor, |
43 | __entry->nr_sector, __entry->comm, | ||
44 | __entry->orig_major, __entry->orig_minor, | ||
45 | (unsigned long long)__entry->orig_sector) | 39 | (unsigned long long)__entry->orig_sector) |
46 | ); | 40 | ); |
47 | 41 | ||
48 | DEFINE_EVENT(bcache_request, bcache_request_start, | 42 | DECLARE_EVENT_CLASS(bkey, |
43 | TP_PROTO(struct bkey *k), | ||
44 | TP_ARGS(k), | ||
49 | 45 | ||
50 | TP_PROTO(struct search *s, struct bio *bio), | 46 | TP_STRUCT__entry( |
47 | __field(u32, size ) | ||
48 | __field(u32, inode ) | ||
49 | __field(u64, offset ) | ||
50 | __field(bool, dirty ) | ||
51 | ), | ||
51 | 52 | ||
52 | TP_ARGS(s, bio) | 53 | TP_fast_assign( |
54 | __entry->inode = KEY_INODE(k); | ||
55 | __entry->offset = KEY_OFFSET(k); | ||
56 | __entry->size = KEY_SIZE(k); | ||
57 | __entry->dirty = KEY_DIRTY(k); | ||
58 | ), | ||
59 | |||
60 | TP_printk("%u:%llu len %u dirty %u", __entry->inode, | ||
61 | __entry->offset, __entry->size, __entry->dirty) | ||
53 | ); | 62 | ); |
54 | 63 | ||
55 | DEFINE_EVENT(bcache_request, bcache_request_end, | 64 | DECLARE_EVENT_CLASS(btree_node, |
65 | TP_PROTO(struct btree *b), | ||
66 | TP_ARGS(b), | ||
67 | |||
68 | TP_STRUCT__entry( | ||
69 | __field(size_t, bucket ) | ||
70 | ), | ||
56 | 71 | ||
72 | TP_fast_assign( | ||
73 | __entry->bucket = PTR_BUCKET_NR(b->c, &b->key, 0); | ||
74 | ), | ||
75 | |||
76 | TP_printk("bucket %zu", __entry->bucket) | ||
77 | ); | ||
78 | |||
79 | /* request.c */ | ||
80 | |||
81 | DEFINE_EVENT(bcache_request, bcache_request_start, | ||
57 | TP_PROTO(struct search *s, struct bio *bio), | 82 | TP_PROTO(struct search *s, struct bio *bio), |
83 | TP_ARGS(s, bio) | ||
84 | ); | ||
58 | 85 | ||
86 | DEFINE_EVENT(bcache_request, bcache_request_end, | ||
87 | TP_PROTO(struct search *s, struct bio *bio), | ||
59 | TP_ARGS(s, bio) | 88 | TP_ARGS(s, bio) |
60 | ); | 89 | ); |
61 | 90 | ||
62 | DECLARE_EVENT_CLASS(bcache_bio, | 91 | DECLARE_EVENT_CLASS(bcache_bio, |
63 | |||
64 | TP_PROTO(struct bio *bio), | 92 | TP_PROTO(struct bio *bio), |
65 | |||
66 | TP_ARGS(bio), | 93 | TP_ARGS(bio), |
67 | 94 | ||
68 | TP_STRUCT__entry( | 95 | TP_STRUCT__entry( |
@@ -70,7 +97,6 @@ DECLARE_EVENT_CLASS(bcache_bio, | |||
70 | __field(sector_t, sector ) | 97 | __field(sector_t, sector ) |
71 | __field(unsigned int, nr_sector ) | 98 | __field(unsigned int, nr_sector ) |
72 | __array(char, rwbs, 6 ) | 99 | __array(char, rwbs, 6 ) |
73 | __array(char, comm, TASK_COMM_LEN ) | ||
74 | ), | 100 | ), |
75 | 101 | ||
76 | TP_fast_assign( | 102 | TP_fast_assign( |
@@ -78,191 +104,328 @@ DECLARE_EVENT_CLASS(bcache_bio, | |||
78 | __entry->sector = bio->bi_sector; | 104 | __entry->sector = bio->bi_sector; |
79 | __entry->nr_sector = bio->bi_size >> 9; | 105 | __entry->nr_sector = bio->bi_size >> 9; |
80 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); | 106 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); |
81 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | ||
82 | ), | 107 | ), |
83 | 108 | ||
84 | TP_printk("%d,%d %s %llu + %u [%s]", | 109 | TP_printk("%d,%d %s %llu + %u", |
85 | MAJOR(__entry->dev), MINOR(__entry->dev), | 110 | MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, |
86 | __entry->rwbs, | 111 | (unsigned long long)__entry->sector, __entry->nr_sector) |
87 | (unsigned long long)__entry->sector, | ||
88 | __entry->nr_sector, __entry->comm) | ||
89 | ); | 112 | ); |
90 | 113 | ||
91 | 114 | DEFINE_EVENT(bcache_bio, bcache_bypass_sequential, | |
92 | DEFINE_EVENT(bcache_bio, bcache_passthrough, | ||
93 | |||
94 | TP_PROTO(struct bio *bio), | 115 | TP_PROTO(struct bio *bio), |
116 | TP_ARGS(bio) | ||
117 | ); | ||
95 | 118 | ||
119 | DEFINE_EVENT(bcache_bio, bcache_bypass_congested, | ||
120 | TP_PROTO(struct bio *bio), | ||
96 | TP_ARGS(bio) | 121 | TP_ARGS(bio) |
97 | ); | 122 | ); |
98 | 123 | ||
99 | DEFINE_EVENT(bcache_bio, bcache_cache_hit, | 124 | TRACE_EVENT(bcache_read, |
125 | TP_PROTO(struct bio *bio, bool hit, bool bypass), | ||
126 | TP_ARGS(bio, hit, bypass), | ||
100 | 127 | ||
101 | TP_PROTO(struct bio *bio), | 128 | TP_STRUCT__entry( |
129 | __field(dev_t, dev ) | ||
130 | __field(sector_t, sector ) | ||
131 | __field(unsigned int, nr_sector ) | ||
132 | __array(char, rwbs, 6 ) | ||
133 | __field(bool, cache_hit ) | ||
134 | __field(bool, bypass ) | ||
135 | ), | ||
102 | 136 | ||
103 | TP_ARGS(bio) | 137 | TP_fast_assign( |
138 | __entry->dev = bio->bi_bdev->bd_dev; | ||
139 | __entry->sector = bio->bi_sector; | ||
140 | __entry->nr_sector = bio->bi_size >> 9; | ||
141 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); | ||
142 | __entry->cache_hit = hit; | ||
143 | __entry->bypass = bypass; | ||
144 | ), | ||
145 | |||
146 | TP_printk("%d,%d %s %llu + %u hit %u bypass %u", | ||
147 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
148 | __entry->rwbs, (unsigned long long)__entry->sector, | ||
149 | __entry->nr_sector, __entry->cache_hit, __entry->bypass) | ||
104 | ); | 150 | ); |
105 | 151 | ||
106 | DEFINE_EVENT(bcache_bio, bcache_cache_miss, | 152 | TRACE_EVENT(bcache_write, |
153 | TP_PROTO(struct bio *bio, bool writeback, bool bypass), | ||
154 | TP_ARGS(bio, writeback, bypass), | ||
107 | 155 | ||
108 | TP_PROTO(struct bio *bio), | 156 | TP_STRUCT__entry( |
157 | __field(dev_t, dev ) | ||
158 | __field(sector_t, sector ) | ||
159 | __field(unsigned int, nr_sector ) | ||
160 | __array(char, rwbs, 6 ) | ||
161 | __field(bool, writeback ) | ||
162 | __field(bool, bypass ) | ||
163 | ), | ||
109 | 164 | ||
110 | TP_ARGS(bio) | 165 | TP_fast_assign( |
166 | __entry->dev = bio->bi_bdev->bd_dev; | ||
167 | __entry->sector = bio->bi_sector; | ||
168 | __entry->nr_sector = bio->bi_size >> 9; | ||
169 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); | ||
170 | __entry->writeback = writeback; | ||
171 | __entry->bypass = bypass; | ||
172 | ), | ||
173 | |||
174 | TP_printk("%d,%d %s %llu + %u hit %u bypass %u", | ||
175 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
176 | __entry->rwbs, (unsigned long long)__entry->sector, | ||
177 | __entry->nr_sector, __entry->writeback, __entry->bypass) | ||
111 | ); | 178 | ); |
112 | 179 | ||
113 | DEFINE_EVENT(bcache_bio, bcache_read_retry, | 180 | DEFINE_EVENT(bcache_bio, bcache_read_retry, |
114 | |||
115 | TP_PROTO(struct bio *bio), | 181 | TP_PROTO(struct bio *bio), |
116 | |||
117 | TP_ARGS(bio) | 182 | TP_ARGS(bio) |
118 | ); | 183 | ); |
119 | 184 | ||
120 | DEFINE_EVENT(bcache_bio, bcache_writethrough, | 185 | DEFINE_EVENT(bkey, bcache_cache_insert, |
186 | TP_PROTO(struct bkey *k), | ||
187 | TP_ARGS(k) | ||
188 | ); | ||
121 | 189 | ||
122 | TP_PROTO(struct bio *bio), | 190 | /* Journal */ |
123 | 191 | ||
124 | TP_ARGS(bio) | 192 | DECLARE_EVENT_CLASS(cache_set, |
125 | ); | 193 | TP_PROTO(struct cache_set *c), |
194 | TP_ARGS(c), | ||
126 | 195 | ||
127 | DEFINE_EVENT(bcache_bio, bcache_writeback, | 196 | TP_STRUCT__entry( |
197 | __array(char, uuid, 16 ) | ||
198 | ), | ||
128 | 199 | ||
129 | TP_PROTO(struct bio *bio), | 200 | TP_fast_assign( |
201 | memcpy(__entry->uuid, c->sb.set_uuid, 16); | ||
202 | ), | ||
130 | 203 | ||
131 | TP_ARGS(bio) | 204 | TP_printk("%pU", __entry->uuid) |
132 | ); | 205 | ); |
133 | 206 | ||
134 | DEFINE_EVENT(bcache_bio, bcache_write_skip, | 207 | DEFINE_EVENT(bkey, bcache_journal_replay_key, |
135 | 208 | TP_PROTO(struct bkey *k), | |
136 | TP_PROTO(struct bio *bio), | 209 | TP_ARGS(k) |
210 | ); | ||
137 | 211 | ||
138 | TP_ARGS(bio) | 212 | DEFINE_EVENT(cache_set, bcache_journal_full, |
213 | TP_PROTO(struct cache_set *c), | ||
214 | TP_ARGS(c) | ||
139 | ); | 215 | ); |
140 | 216 | ||
141 | DEFINE_EVENT(bcache_bio, bcache_btree_read, | 217 | DEFINE_EVENT(cache_set, bcache_journal_entry_full, |
218 | TP_PROTO(struct cache_set *c), | ||
219 | TP_ARGS(c) | ||
220 | ); | ||
142 | 221 | ||
222 | DEFINE_EVENT(bcache_bio, bcache_journal_write, | ||
143 | TP_PROTO(struct bio *bio), | 223 | TP_PROTO(struct bio *bio), |
144 | |||
145 | TP_ARGS(bio) | 224 | TP_ARGS(bio) |
146 | ); | 225 | ); |
147 | 226 | ||
148 | DEFINE_EVENT(bcache_bio, bcache_btree_write, | 227 | /* Btree */ |
149 | 228 | ||
150 | TP_PROTO(struct bio *bio), | 229 | DEFINE_EVENT(cache_set, bcache_btree_cache_cannibalize, |
230 | TP_PROTO(struct cache_set *c), | ||
231 | TP_ARGS(c) | ||
232 | ); | ||
151 | 233 | ||
152 | TP_ARGS(bio) | 234 | DEFINE_EVENT(btree_node, bcache_btree_read, |
235 | TP_PROTO(struct btree *b), | ||
236 | TP_ARGS(b) | ||
153 | ); | 237 | ); |
154 | 238 | ||
155 | DEFINE_EVENT(bcache_bio, bcache_write_dirty, | 239 | TRACE_EVENT(bcache_btree_write, |
240 | TP_PROTO(struct btree *b), | ||
241 | TP_ARGS(b), | ||
156 | 242 | ||
157 | TP_PROTO(struct bio *bio), | 243 | TP_STRUCT__entry( |
244 | __field(size_t, bucket ) | ||
245 | __field(unsigned, block ) | ||
246 | __field(unsigned, keys ) | ||
247 | ), | ||
158 | 248 | ||
159 | TP_ARGS(bio) | 249 | TP_fast_assign( |
250 | __entry->bucket = PTR_BUCKET_NR(b->c, &b->key, 0); | ||
251 | __entry->block = b->written; | ||
252 | __entry->keys = b->sets[b->nsets].data->keys; | ||
253 | ), | ||
254 | |||
255 | TP_printk("bucket %zu", __entry->bucket) | ||
160 | ); | 256 | ); |
161 | 257 | ||
162 | DEFINE_EVENT(bcache_bio, bcache_read_dirty, | 258 | DEFINE_EVENT(btree_node, bcache_btree_node_alloc, |
259 | TP_PROTO(struct btree *b), | ||
260 | TP_ARGS(b) | ||
261 | ); | ||
163 | 262 | ||
164 | TP_PROTO(struct bio *bio), | 263 | DEFINE_EVENT(btree_node, bcache_btree_node_alloc_fail, |
264 | TP_PROTO(struct btree *b), | ||
265 | TP_ARGS(b) | ||
266 | ); | ||
165 | 267 | ||
166 | TP_ARGS(bio) | 268 | DEFINE_EVENT(btree_node, bcache_btree_node_free, |
269 | TP_PROTO(struct btree *b), | ||
270 | TP_ARGS(b) | ||
167 | ); | 271 | ); |
168 | 272 | ||
169 | DEFINE_EVENT(bcache_bio, bcache_write_moving, | 273 | TRACE_EVENT(bcache_btree_gc_coalesce, |
274 | TP_PROTO(unsigned nodes), | ||
275 | TP_ARGS(nodes), | ||
170 | 276 | ||
171 | TP_PROTO(struct bio *bio), | 277 | TP_STRUCT__entry( |
278 | __field(unsigned, nodes ) | ||
279 | ), | ||
172 | 280 | ||
173 | TP_ARGS(bio) | 281 | TP_fast_assign( |
282 | __entry->nodes = nodes; | ||
283 | ), | ||
284 | |||
285 | TP_printk("coalesced %u nodes", __entry->nodes) | ||
174 | ); | 286 | ); |
175 | 287 | ||
176 | DEFINE_EVENT(bcache_bio, bcache_read_moving, | 288 | DEFINE_EVENT(cache_set, bcache_gc_start, |
289 | TP_PROTO(struct cache_set *c), | ||
290 | TP_ARGS(c) | ||
291 | ); | ||
177 | 292 | ||
178 | TP_PROTO(struct bio *bio), | 293 | DEFINE_EVENT(cache_set, bcache_gc_end, |
294 | TP_PROTO(struct cache_set *c), | ||
295 | TP_ARGS(c) | ||
296 | ); | ||
179 | 297 | ||
180 | TP_ARGS(bio) | 298 | DEFINE_EVENT(bkey, bcache_gc_copy, |
299 | TP_PROTO(struct bkey *k), | ||
300 | TP_ARGS(k) | ||
181 | ); | 301 | ); |
182 | 302 | ||
183 | DEFINE_EVENT(bcache_bio, bcache_journal_write, | 303 | DEFINE_EVENT(bkey, bcache_gc_copy_collision, |
304 | TP_PROTO(struct bkey *k), | ||
305 | TP_ARGS(k) | ||
306 | ); | ||
184 | 307 | ||
185 | TP_PROTO(struct bio *bio), | 308 | TRACE_EVENT(bcache_btree_insert_key, |
309 | TP_PROTO(struct btree *b, struct bkey *k, unsigned op, unsigned status), | ||
310 | TP_ARGS(b, k, op, status), | ||
186 | 311 | ||
187 | TP_ARGS(bio) | 312 | TP_STRUCT__entry( |
188 | ); | 313 | __field(u64, btree_node ) |
314 | __field(u32, btree_level ) | ||
315 | __field(u32, inode ) | ||
316 | __field(u64, offset ) | ||
317 | __field(u32, size ) | ||
318 | __field(u8, dirty ) | ||
319 | __field(u8, op ) | ||
320 | __field(u8, status ) | ||
321 | ), | ||
189 | 322 | ||
190 | DECLARE_EVENT_CLASS(bcache_cache_bio, | 323 | TP_fast_assign( |
324 | __entry->btree_node = PTR_BUCKET_NR(b->c, &b->key, 0); | ||
325 | __entry->btree_level = b->level; | ||
326 | __entry->inode = KEY_INODE(k); | ||
327 | __entry->offset = KEY_OFFSET(k); | ||
328 | __entry->size = KEY_SIZE(k); | ||
329 | __entry->dirty = KEY_DIRTY(k); | ||
330 | __entry->op = op; | ||
331 | __entry->status = status; | ||
332 | ), | ||
191 | 333 | ||
192 | TP_PROTO(struct bio *bio, | 334 | TP_printk("%u for %u at %llu(%u): %u:%llu len %u dirty %u", |
193 | sector_t orig_sector, | 335 | __entry->status, __entry->op, |
194 | struct block_device* orig_bdev), | 336 | __entry->btree_node, __entry->btree_level, |
337 | __entry->inode, __entry->offset, | ||
338 | __entry->size, __entry->dirty) | ||
339 | ); | ||
195 | 340 | ||
196 | TP_ARGS(bio, orig_sector, orig_bdev), | 341 | DECLARE_EVENT_CLASS(btree_split, |
342 | TP_PROTO(struct btree *b, unsigned keys), | ||
343 | TP_ARGS(b, keys), | ||
197 | 344 | ||
198 | TP_STRUCT__entry( | 345 | TP_STRUCT__entry( |
199 | __field(dev_t, dev ) | 346 | __field(size_t, bucket ) |
200 | __field(dev_t, orig_dev ) | 347 | __field(unsigned, keys ) |
201 | __field(sector_t, sector ) | ||
202 | __field(sector_t, orig_sector ) | ||
203 | __field(unsigned int, nr_sector ) | ||
204 | __array(char, rwbs, 6 ) | ||
205 | __array(char, comm, TASK_COMM_LEN ) | ||
206 | ), | 348 | ), |
207 | 349 | ||
208 | TP_fast_assign( | 350 | TP_fast_assign( |
209 | __entry->dev = bio->bi_bdev->bd_dev; | 351 | __entry->bucket = PTR_BUCKET_NR(b->c, &b->key, 0); |
210 | __entry->orig_dev = orig_bdev->bd_dev; | 352 | __entry->keys = keys; |
211 | __entry->sector = bio->bi_sector; | ||
212 | __entry->orig_sector = orig_sector; | ||
213 | __entry->nr_sector = bio->bi_size >> 9; | ||
214 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); | ||
215 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | ||
216 | ), | 353 | ), |
217 | 354 | ||
218 | TP_printk("%d,%d %s %llu + %u [%s] (from %d,%d %llu)", | 355 | TP_printk("bucket %zu keys %u", __entry->bucket, __entry->keys) |
219 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
220 | __entry->rwbs, | ||
221 | (unsigned long long)__entry->sector, | ||
222 | __entry->nr_sector, __entry->comm, | ||
223 | MAJOR(__entry->orig_dev), MINOR(__entry->orig_dev), | ||
224 | (unsigned long long)__entry->orig_sector) | ||
225 | ); | 356 | ); |
226 | 357 | ||
227 | DEFINE_EVENT(bcache_cache_bio, bcache_cache_insert, | 358 | DEFINE_EVENT(btree_split, bcache_btree_node_split, |
228 | 359 | TP_PROTO(struct btree *b, unsigned keys), | |
229 | TP_PROTO(struct bio *bio, | 360 | TP_ARGS(b, keys) |
230 | sector_t orig_sector, | 361 | ); |
231 | struct block_device *orig_bdev), | ||
232 | 362 | ||
233 | TP_ARGS(bio, orig_sector, orig_bdev) | 363 | DEFINE_EVENT(btree_split, bcache_btree_node_compact, |
364 | TP_PROTO(struct btree *b, unsigned keys), | ||
365 | TP_ARGS(b, keys) | ||
234 | ); | 366 | ); |
235 | 367 | ||
236 | DECLARE_EVENT_CLASS(bcache_gc, | 368 | DEFINE_EVENT(btree_node, bcache_btree_set_root, |
369 | TP_PROTO(struct btree *b), | ||
370 | TP_ARGS(b) | ||
371 | ); | ||
237 | 372 | ||
238 | TP_PROTO(uint8_t *uuid), | 373 | /* Allocator */ |
239 | 374 | ||
240 | TP_ARGS(uuid), | 375 | TRACE_EVENT(bcache_alloc_invalidate, |
376 | TP_PROTO(struct cache *ca), | ||
377 | TP_ARGS(ca), | ||
241 | 378 | ||
242 | TP_STRUCT__entry( | 379 | TP_STRUCT__entry( |
243 | __field(uint8_t *, uuid) | 380 | __field(unsigned, free ) |
381 | __field(unsigned, free_inc ) | ||
382 | __field(unsigned, free_inc_size ) | ||
383 | __field(unsigned, unused ) | ||
244 | ), | 384 | ), |
245 | 385 | ||
246 | TP_fast_assign( | 386 | TP_fast_assign( |
247 | __entry->uuid = uuid; | 387 | __entry->free = fifo_used(&ca->free); |
388 | __entry->free_inc = fifo_used(&ca->free_inc); | ||
389 | __entry->free_inc_size = ca->free_inc.size; | ||
390 | __entry->unused = fifo_used(&ca->unused); | ||
248 | ), | 391 | ), |
249 | 392 | ||
250 | TP_printk("%pU", __entry->uuid) | 393 | TP_printk("free %u free_inc %u/%u unused %u", __entry->free, |
394 | __entry->free_inc, __entry->free_inc_size, __entry->unused) | ||
251 | ); | 395 | ); |
252 | 396 | ||
397 | TRACE_EVENT(bcache_alloc_fail, | ||
398 | TP_PROTO(struct cache *ca), | ||
399 | TP_ARGS(ca), | ||
253 | 400 | ||
254 | DEFINE_EVENT(bcache_gc, bcache_gc_start, | 401 | TP_STRUCT__entry( |
402 | __field(unsigned, free ) | ||
403 | __field(unsigned, free_inc ) | ||
404 | __field(unsigned, unused ) | ||
405 | __field(unsigned, blocked ) | ||
406 | ), | ||
255 | 407 | ||
256 | TP_PROTO(uint8_t *uuid), | 408 | TP_fast_assign( |
409 | __entry->free = fifo_used(&ca->free); | ||
410 | __entry->free_inc = fifo_used(&ca->free_inc); | ||
411 | __entry->unused = fifo_used(&ca->unused); | ||
412 | __entry->blocked = atomic_read(&ca->set->prio_blocked); | ||
413 | ), | ||
257 | 414 | ||
258 | TP_ARGS(uuid) | 415 | TP_printk("free %u free_inc %u unused %u blocked %u", __entry->free, |
416 | __entry->free_inc, __entry->unused, __entry->blocked) | ||
259 | ); | 417 | ); |
260 | 418 | ||
261 | DEFINE_EVENT(bcache_gc, bcache_gc_end, | 419 | /* Background writeback */ |
262 | 420 | ||
263 | TP_PROTO(uint8_t *uuid), | 421 | DEFINE_EVENT(bkey, bcache_writeback, |
422 | TP_PROTO(struct bkey *k), | ||
423 | TP_ARGS(k) | ||
424 | ); | ||
264 | 425 | ||
265 | TP_ARGS(uuid) | 426 | DEFINE_EVENT(bkey, bcache_writeback_collision, |
427 | TP_PROTO(struct bkey *k), | ||
428 | TP_ARGS(k) | ||
266 | ); | 429 | ); |
267 | 430 | ||
268 | #endif /* _TRACE_BCACHE_H */ | 431 | #endif /* _TRACE_BCACHE_H */ |
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h index d615f78cc6b6..41a6643e2136 100644 --- a/include/trace/ftrace.h +++ b/include/trace/ftrace.h | |||
@@ -670,10 +670,6 @@ perf_trace_##call(void *__data, proto) \ | |||
670 | sizeof(u64)); \ | 670 | sizeof(u64)); \ |
671 | __entry_size -= sizeof(u32); \ | 671 | __entry_size -= sizeof(u32); \ |
672 | \ | 672 | \ |
673 | if (WARN_ONCE(__entry_size > PERF_MAX_TRACE_SIZE, \ | ||
674 | "profile buffer not large enough")) \ | ||
675 | return; \ | ||
676 | \ | ||
677 | entry = (struct ftrace_raw_##call *)perf_trace_buf_prepare( \ | 673 | entry = (struct ftrace_raw_##call *)perf_trace_buf_prepare( \ |
678 | __entry_size, event_call->event.type, &__regs, &rctx); \ | 674 | __entry_size, event_call->event.type, &__regs, &rctx); \ |
679 | if (!entry) \ | 675 | if (!entry) \ |
diff --git a/include/uapi/linux/firewire-cdev.h b/include/uapi/linux/firewire-cdev.h index d50036953497..1db453e4b550 100644 --- a/include/uapi/linux/firewire-cdev.h +++ b/include/uapi/linux/firewire-cdev.h | |||
@@ -215,8 +215,8 @@ struct fw_cdev_event_request2 { | |||
215 | * with the %FW_CDEV_ISO_INTERRUPT bit set, when explicitly requested with | 215 | * with the %FW_CDEV_ISO_INTERRUPT bit set, when explicitly requested with |
216 | * %FW_CDEV_IOC_FLUSH_ISO, or when there have been so many completed packets | 216 | * %FW_CDEV_IOC_FLUSH_ISO, or when there have been so many completed packets |
217 | * without the interrupt bit set that the kernel's internal buffer for @header | 217 | * without the interrupt bit set that the kernel's internal buffer for @header |
218 | * is about to overflow. (In the last case, kernels with ABI version < 5 drop | 218 | * is about to overflow. (In the last case, ABI versions < 5 drop header data |
219 | * header data up to the next interrupt packet.) | 219 | * up to the next interrupt packet.) |
220 | * | 220 | * |
221 | * Isochronous transmit events (context type %FW_CDEV_ISO_CONTEXT_TRANSMIT): | 221 | * Isochronous transmit events (context type %FW_CDEV_ISO_CONTEXT_TRANSMIT): |
222 | * | 222 | * |
diff --git a/include/uapi/linux/nfc.h b/include/uapi/linux/nfc.h index caed0f324d5f..8137dd8d2adf 100644 --- a/include/uapi/linux/nfc.h +++ b/include/uapi/linux/nfc.h | |||
@@ -69,8 +69,8 @@ | |||
69 | * starting a poll from a device which has a secure element enabled means | 69 | * starting a poll from a device which has a secure element enabled means |
70 | * we want to do SE based card emulation. | 70 | * we want to do SE based card emulation. |
71 | * @NFC_CMD_DISABLE_SE: Disable the physical link to a specific secure element. | 71 | * @NFC_CMD_DISABLE_SE: Disable the physical link to a specific secure element. |
72 | * @NFC_CMD_FW_UPLOAD: Request to Load/flash firmware, or event to inform that | 72 | * @NFC_CMD_FW_DOWNLOAD: Request to Load/flash firmware, or event to inform |
73 | * some firmware was loaded | 73 | * that some firmware was loaded |
74 | */ | 74 | */ |
75 | enum nfc_commands { | 75 | enum nfc_commands { |
76 | NFC_CMD_UNSPEC, | 76 | NFC_CMD_UNSPEC, |
@@ -94,7 +94,7 @@ enum nfc_commands { | |||
94 | NFC_CMD_DISABLE_SE, | 94 | NFC_CMD_DISABLE_SE, |
95 | NFC_CMD_LLC_SDREQ, | 95 | NFC_CMD_LLC_SDREQ, |
96 | NFC_EVENT_LLC_SDRES, | 96 | NFC_EVENT_LLC_SDRES, |
97 | NFC_CMD_FW_UPLOAD, | 97 | NFC_CMD_FW_DOWNLOAD, |
98 | NFC_EVENT_SE_ADDED, | 98 | NFC_EVENT_SE_ADDED, |
99 | NFC_EVENT_SE_REMOVED, | 99 | NFC_EVENT_SE_REMOVED, |
100 | /* private: internal use only */ | 100 | /* private: internal use only */ |
diff --git a/include/uapi/linux/usb/ch11.h b/include/uapi/linux/usb/ch11.h index 7692dc69ccf7..331499d597fa 100644 --- a/include/uapi/linux/usb/ch11.h +++ b/include/uapi/linux/usb/ch11.h | |||
@@ -11,6 +11,17 @@ | |||
11 | 11 | ||
12 | #include <linux/types.h> /* __u8 etc */ | 12 | #include <linux/types.h> /* __u8 etc */ |
13 | 13 | ||
14 | /* This is arbitrary. | ||
15 | * From USB 2.0 spec Table 11-13, offset 7, a hub can | ||
16 | * have up to 255 ports. The most yet reported is 10. | ||
17 | * | ||
18 | * Current Wireless USB host hardware (Intel i1480 for example) allows | ||
19 | * up to 22 devices to connect. Upcoming hardware might raise that | ||
20 | * limit. Because the arrays need to add a bit for hub status data, we | ||
21 | * use 31, so plus one evens out to four bytes. | ||
22 | */ | ||
23 | #define USB_MAXCHILDREN 31 | ||
24 | |||
14 | /* | 25 | /* |
15 | * Hub request types | 26 | * Hub request types |
16 | */ | 27 | */ |
diff --git a/include/xen/interface/io/blkif.h b/include/xen/interface/io/blkif.h index ffd4652de91c..65e12099ef89 100644 --- a/include/xen/interface/io/blkif.h +++ b/include/xen/interface/io/blkif.h | |||
@@ -103,12 +103,46 @@ typedef uint64_t blkif_sector_t; | |||
103 | #define BLKIF_OP_DISCARD 5 | 103 | #define BLKIF_OP_DISCARD 5 |
104 | 104 | ||
105 | /* | 105 | /* |
106 | * Recognized if "feature-max-indirect-segments" in present in the backend | ||
107 | * xenbus info. The "feature-max-indirect-segments" node contains the maximum | ||
108 | * number of segments allowed by the backend per request. If the node is | ||
109 | * present, the frontend might use blkif_request_indirect structs in order to | ||
110 | * issue requests with more than BLKIF_MAX_SEGMENTS_PER_REQUEST (11). The | ||
111 | * maximum number of indirect segments is fixed by the backend, but the | ||
112 | * frontend can issue requests with any number of indirect segments as long as | ||
113 | * it's less than the number provided by the backend. The indirect_grefs field | ||
114 | * in blkif_request_indirect should be filled by the frontend with the | ||
115 | * grant references of the pages that are holding the indirect segments. | ||
116 | * This pages are filled with an array of blkif_request_segment_aligned | ||
117 | * that hold the information about the segments. The number of indirect | ||
118 | * pages to use is determined by the maximum number of segments | ||
119 | * a indirect request contains. Every indirect page can contain a maximum | ||
120 | * of 512 segments (PAGE_SIZE/sizeof(blkif_request_segment_aligned)), | ||
121 | * so to calculate the number of indirect pages to use we have to do | ||
122 | * ceil(indirect_segments/512). | ||
123 | * | ||
124 | * If a backend does not recognize BLKIF_OP_INDIRECT, it should *not* | ||
125 | * create the "feature-max-indirect-segments" node! | ||
126 | */ | ||
127 | #define BLKIF_OP_INDIRECT 6 | ||
128 | |||
129 | /* | ||
106 | * Maximum scatter/gather segments per request. | 130 | * Maximum scatter/gather segments per request. |
107 | * This is carefully chosen so that sizeof(struct blkif_ring) <= PAGE_SIZE. | 131 | * This is carefully chosen so that sizeof(struct blkif_ring) <= PAGE_SIZE. |
108 | * NB. This could be 12 if the ring indexes weren't stored in the same page. | 132 | * NB. This could be 12 if the ring indexes weren't stored in the same page. |
109 | */ | 133 | */ |
110 | #define BLKIF_MAX_SEGMENTS_PER_REQUEST 11 | 134 | #define BLKIF_MAX_SEGMENTS_PER_REQUEST 11 |
111 | 135 | ||
136 | #define BLKIF_MAX_INDIRECT_PAGES_PER_REQUEST 8 | ||
137 | |||
138 | struct blkif_request_segment_aligned { | ||
139 | grant_ref_t gref; /* reference to I/O buffer frame */ | ||
140 | /* @first_sect: first sector in frame to transfer (inclusive). */ | ||
141 | /* @last_sect: last sector in frame to transfer (inclusive). */ | ||
142 | uint8_t first_sect, last_sect; | ||
143 | uint16_t _pad; /* padding to make it 8 bytes, so it's cache-aligned */ | ||
144 | } __attribute__((__packed__)); | ||
145 | |||
112 | struct blkif_request_rw { | 146 | struct blkif_request_rw { |
113 | uint8_t nr_segments; /* number of segments */ | 147 | uint8_t nr_segments; /* number of segments */ |
114 | blkif_vdev_t handle; /* only for read/write requests */ | 148 | blkif_vdev_t handle; /* only for read/write requests */ |
@@ -147,12 +181,31 @@ struct blkif_request_other { | |||
147 | uint64_t id; /* private guest value, echoed in resp */ | 181 | uint64_t id; /* private guest value, echoed in resp */ |
148 | } __attribute__((__packed__)); | 182 | } __attribute__((__packed__)); |
149 | 183 | ||
184 | struct blkif_request_indirect { | ||
185 | uint8_t indirect_op; | ||
186 | uint16_t nr_segments; | ||
187 | #ifdef CONFIG_X86_64 | ||
188 | uint32_t _pad1; /* offsetof(blkif_...,u.indirect.id) == 8 */ | ||
189 | #endif | ||
190 | uint64_t id; | ||
191 | blkif_sector_t sector_number; | ||
192 | blkif_vdev_t handle; | ||
193 | uint16_t _pad2; | ||
194 | grant_ref_t indirect_grefs[BLKIF_MAX_INDIRECT_PAGES_PER_REQUEST]; | ||
195 | #ifdef CONFIG_X86_64 | ||
196 | uint32_t _pad3; /* make it 64 byte aligned */ | ||
197 | #else | ||
198 | uint64_t _pad3; /* make it 64 byte aligned */ | ||
199 | #endif | ||
200 | } __attribute__((__packed__)); | ||
201 | |||
150 | struct blkif_request { | 202 | struct blkif_request { |
151 | uint8_t operation; /* BLKIF_OP_??? */ | 203 | uint8_t operation; /* BLKIF_OP_??? */ |
152 | union { | 204 | union { |
153 | struct blkif_request_rw rw; | 205 | struct blkif_request_rw rw; |
154 | struct blkif_request_discard discard; | 206 | struct blkif_request_discard discard; |
155 | struct blkif_request_other other; | 207 | struct blkif_request_other other; |
208 | struct blkif_request_indirect indirect; | ||
156 | } u; | 209 | } u; |
157 | } __attribute__((__packed__)); | 210 | } __attribute__((__packed__)); |
158 | 211 | ||
diff --git a/include/xen/interface/io/ring.h b/include/xen/interface/io/ring.h index 75271b9a8f61..7d28aff605c7 100644 --- a/include/xen/interface/io/ring.h +++ b/include/xen/interface/io/ring.h | |||
@@ -188,6 +188,11 @@ struct __name##_back_ring { \ | |||
188 | #define RING_REQUEST_CONS_OVERFLOW(_r, _cons) \ | 188 | #define RING_REQUEST_CONS_OVERFLOW(_r, _cons) \ |
189 | (((_cons) - (_r)->rsp_prod_pvt) >= RING_SIZE(_r)) | 189 | (((_cons) - (_r)->rsp_prod_pvt) >= RING_SIZE(_r)) |
190 | 190 | ||
191 | /* Ill-behaved frontend determination: Can there be this many requests? */ | ||
192 | #define RING_REQUEST_PROD_OVERFLOW(_r, _prod) \ | ||
193 | (((_prod) - (_r)->rsp_prod_pvt) > RING_SIZE(_r)) | ||
194 | |||
195 | |||
191 | #define RING_PUSH_REQUESTS(_r) do { \ | 196 | #define RING_PUSH_REQUESTS(_r) do { \ |
192 | wmb(); /* back sees requests /before/ updated producer index */ \ | 197 | wmb(); /* back sees requests /before/ updated producer index */ \ |
193 | (_r)->sring->req_prod = (_r)->req_prod_pvt; \ | 198 | (_r)->sring->req_prod = (_r)->req_prod_pvt; \ |