aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-06-26 17:51:15 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-06-26 17:51:15 -0400
commitd87823813fe498fdd47894bd28e460a9dee8d771 (patch)
tree214eaf3babd0d61f08022fc1edd99a5128616548 /scripts
parente382608254e06c8109f40044f5e693f2e04f3899 (diff)
parent3dc196eae1db548f05e53e5875ff87b8ff79f249 (diff)
Merge tag 'char-misc-4.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
Pull char/misc driver updates from Greg KH: "Here's the big char/misc driver pull request for 4.2-rc1. Lots of mei, extcon, coresight, uio, mic, and other driver updates in here. Full details in the shortlog. All of these have been in linux-next for some time with no reported problems" * tag 'char-misc-4.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (176 commits) mei: me: wait for power gating exit confirmation mei: reset flow control on the last client disconnection MAINTAINERS: mei: add mei_cl_bus.h to maintained file list misc: sram: sort and clean up included headers misc: sram: move reserved block logic out of probe function misc: sram: add private struct device and virt_base members misc: sram: report correct SRAM pool size misc: sram: bump error message level on unclean driver unbinding misc: sram: fix device node reference leak on error misc: sram: fix enabled clock leak on error path misc: mic: Fix reported static checker warning misc: mic: Fix randconfig build error by including errno.h uio: pruss: Drop depends on ARCH_DAVINCI_DA850 from config uio: pruss: Add CONFIG_HAS_IOMEM dependence uio: pruss: Include <linux/sizes.h> extcon: Redefine the unique id of supported external connectors without 'enum extcon' type char:xilinx_hwicap:buffer_icap - change 1/0 to true/false for bool type variable in function buffer_icap_set_configuration(). Drivers: hv: vmbus: Allocate ring buffer memory in NUMA aware fashion parport: check exclusive access before register w1: use correct lock on error in w1_seq_show() ...
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/checkkconfigsymbols.py34
-rw-r--r--scripts/mod/devicetable-offsets.c1
-rw-r--r--scripts/mod/file2alias.c21
3 files changed, 47 insertions, 9 deletions
diff --git a/scripts/checkkconfigsymbols.py b/scripts/checkkconfigsymbols.py
index 74086a583d8d..c89fdcaf06e8 100755
--- a/scripts/checkkconfigsymbols.py
+++ b/scripts/checkkconfigsymbols.py
@@ -1,4 +1,4 @@
1#!/usr/bin/env python 1#!/usr/bin/env python2
2 2
3"""Find Kconfig symbols that are referenced but not defined.""" 3"""Find Kconfig symbols that are referenced but not defined."""
4 4
@@ -58,6 +58,12 @@ def parse_options():
58 "input format bases on Git log's " 58 "input format bases on Git log's "
59 "\'commmit1..commit2\'.") 59 "\'commmit1..commit2\'.")
60 60
61 parser.add_option('-i', '--ignore', dest='ignore', action='store',
62 default="",
63 help="Ignore files matching this pattern. Note that "
64 "the pattern needs to be a Python regex. To "
65 "ignore defconfigs, specify -i '.*defconfig'.")
66
61 parser.add_option('', '--force', dest='force', action='store_true', 67 parser.add_option('', '--force', dest='force', action='store_true',
62 default=False, 68 default=False,
63 help="Reset current Git tree even when it's dirty.") 69 help="Reset current Git tree even when it's dirty.")
@@ -80,6 +86,12 @@ def parse_options():
80 "'--force' if you\nwant to ignore this warning and " 86 "'--force' if you\nwant to ignore this warning and "
81 "continue.") 87 "continue.")
82 88
89 if opts.ignore:
90 try:
91 re.match(opts.ignore, "this/is/just/a/test.c")
92 except:
93 sys.exit("Please specify a valid Python regex.")
94
83 return opts 95 return opts
84 96
85 97
@@ -105,11 +117,11 @@ def main():
105 117
106 # get undefined items before the commit 118 # get undefined items before the commit
107 execute("git reset --hard %s" % commit_a) 119 execute("git reset --hard %s" % commit_a)
108 undefined_a = check_symbols() 120 undefined_a = check_symbols(opts.ignore)
109 121
110 # get undefined items for the commit 122 # get undefined items for the commit
111 execute("git reset --hard %s" % commit_b) 123 execute("git reset --hard %s" % commit_b)
112 undefined_b = check_symbols() 124 undefined_b = check_symbols(opts.ignore)
113 125
114 # report cases that are present for the commit but not before 126 # report cases that are present for the commit but not before
115 for feature in sorted(undefined_b): 127 for feature in sorted(undefined_b):
@@ -129,7 +141,7 @@ def main():
129 141
130 # default to check the entire tree 142 # default to check the entire tree
131 else: 143 else:
132 undefined = check_symbols() 144 undefined = check_symbols(opts.ignore)
133 for feature in sorted(undefined): 145 for feature in sorted(undefined):
134 files = sorted(undefined.get(feature)) 146 files = sorted(undefined.get(feature))
135 print "%s\t%s" % (feature, ", ".join(files)) 147 print "%s\t%s" % (feature, ", ".join(files))
@@ -160,9 +172,10 @@ def get_head():
160 return stdout.strip('\n') 172 return stdout.strip('\n')
161 173
162 174
163def check_symbols(): 175def check_symbols(ignore):
164 """Find undefined Kconfig symbols and return a dict with the symbol as key 176 """Find undefined Kconfig symbols and return a dict with the symbol as key
165 and a list of referencing files as value.""" 177 and a list of referencing files as value. Files matching %ignore are not
178 checked for undefined symbols."""
166 source_files = [] 179 source_files = []
167 kconfig_files = [] 180 kconfig_files = []
168 defined_features = set() 181 defined_features = set()
@@ -185,10 +198,17 @@ def check_symbols():
185 source_files.append(gitfile) 198 source_files.append(gitfile)
186 199
187 for sfile in source_files: 200 for sfile in source_files:
201 if ignore and re.match(ignore, sfile):
202 # do not check files matching %ignore
203 continue
188 parse_source_file(sfile, referenced_features) 204 parse_source_file(sfile, referenced_features)
189 205
190 for kfile in kconfig_files: 206 for kfile in kconfig_files:
191 parse_kconfig_file(kfile, defined_features, referenced_features) 207 if ignore and re.match(ignore, kfile):
208 # do not collect references for files matching %ignore
209 parse_kconfig_file(kfile, defined_features, dict())
210 else:
211 parse_kconfig_file(kfile, defined_features, referenced_features)
192 212
193 undefined = {} # {feature: [files]} 213 undefined = {} # {feature: [files]}
194 for feature in sorted(referenced_features): 214 for feature in sorted(referenced_features):
diff --git a/scripts/mod/devicetable-offsets.c b/scripts/mod/devicetable-offsets.c
index fce36d0f6898..091f6290a651 100644
--- a/scripts/mod/devicetable-offsets.c
+++ b/scripts/mod/devicetable-offsets.c
@@ -182,6 +182,7 @@ int main(void)
182 182
183 DEVID(mei_cl_device_id); 183 DEVID(mei_cl_device_id);
184 DEVID_FIELD(mei_cl_device_id, name); 184 DEVID_FIELD(mei_cl_device_id, name);
185 DEVID_FIELD(mei_cl_device_id, uuid);
185 186
186 DEVID(rio_device_id); 187 DEVID(rio_device_id);
187 DEVID_FIELD(rio_device_id, did); 188 DEVID_FIELD(rio_device_id, did);
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index 78691d51a479..718b2a29bd43 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -34,6 +34,9 @@ typedef Elf64_Addr kernel_ulong_t;
34typedef uint32_t __u32; 34typedef uint32_t __u32;
35typedef uint16_t __u16; 35typedef uint16_t __u16;
36typedef unsigned char __u8; 36typedef unsigned char __u8;
37typedef struct {
38 __u8 b[16];
39} uuid_le;
37 40
38/* Big exception to the "don't include kernel headers into userspace, which 41/* Big exception to the "don't include kernel headers into userspace, which
39 * even potentially has different endianness and word sizes, since 42 * even potentially has different endianness and word sizes, since
@@ -131,6 +134,15 @@ static inline void add_wildcard(char *str)
131 strcat(str + len, "*"); 134 strcat(str + len, "*");
132} 135}
133 136
137static inline void add_uuid(char *str, uuid_le uuid)
138{
139 int len = strlen(str);
140 int i;
141
142 for (i = 0; i < 16; i++)
143 sprintf(str + len + (i << 1), "%02x", uuid.b[i]);
144}
145
134/** 146/**
135 * Check that sizeof(device_id type) are consistent with size of section 147 * Check that sizeof(device_id type) are consistent with size of section
136 * in .o file. If in-consistent then userspace and kernel does not agree 148 * in .o file. If in-consistent then userspace and kernel does not agree
@@ -1160,13 +1172,18 @@ static int do_cpu_entry(const char *filename, void *symval, char *alias)
1160} 1172}
1161ADD_TO_DEVTABLE("cpu", cpu_feature, do_cpu_entry); 1173ADD_TO_DEVTABLE("cpu", cpu_feature, do_cpu_entry);
1162 1174
1163/* Looks like: mei:S */ 1175/* Looks like: mei:S:uuid */
1164static int do_mei_entry(const char *filename, void *symval, 1176static int do_mei_entry(const char *filename, void *symval,
1165 char *alias) 1177 char *alias)
1166{ 1178{
1167 DEF_FIELD_ADDR(symval, mei_cl_device_id, name); 1179 DEF_FIELD_ADDR(symval, mei_cl_device_id, name);
1180 DEF_FIELD_ADDR(symval, mei_cl_device_id, uuid);
1181
1182 sprintf(alias, MEI_CL_MODULE_PREFIX);
1183 sprintf(alias + strlen(alias), "%s:", (*name)[0] ? *name : "*");
1184 add_uuid(alias, *uuid);
1168 1185
1169 sprintf(alias, MEI_CL_MODULE_PREFIX "%s", *name); 1186 strcat(alias, ":*");
1170 1187
1171 return 1; 1188 return 1;
1172} 1189}