Re: [PATCH] Bluetooth: btusb: add a reject table to disable msft
by kernel test robot
Hi Koba,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on bluetooth/master]
[also build test ERROR on v5.14-rc6]
[cannot apply to bluetooth-next/master next-20210819]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Koba-Ko/Bluetooth-btusb-add-a-re...
base: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git master
config: i386-randconfig-r006-20210819 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project d2b574a4dea5b718e4386bf2e26af0126e5978ce)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/bbff58c00c9efb048da28df9dbc3c79c0...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Koba-Ko/Bluetooth-btusb-add-a-reject-table-to-disable-msft/20210819-220108
git checkout bbff58c00c9efb048da28df9dbc3c79c0c40763b
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
>> drivers/bluetooth/btusb.c:2917:9: error: assigning to 'struct usb_device_id *' from 'const struct usb_device_id *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
match = usb_match_id(data->intf, msft_rej_table);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
vim +2917 drivers/bluetooth/btusb.c
2829
2830 static int btusb_setup_intel_new(struct hci_dev *hdev)
2831 {
2832 struct btusb_data *data = hci_get_drvdata(hdev);
2833 struct intel_version ver;
2834 struct intel_boot_params params;
2835 u32 boot_param;
2836 char ddcname[64];
2837 int err;
2838 struct intel_debug_features features;
2839 struct usb_device_id *match;
2840
2841 BT_DBG("%s", hdev->name);
2842
2843 /* Set the default boot parameter to 0x0 and it is updated to
2844 * SKU specific boot parameter after reading Intel_Write_Boot_Params
2845 * command while downloading the firmware.
2846 */
2847 boot_param = 0x00000000;
2848
2849 /* Read the Intel version information to determine if the device
2850 * is in bootloader mode or if it already has operational firmware
2851 * loaded.
2852 */
2853 err = btintel_read_version(hdev, &ver);
2854 if (err) {
2855 bt_dev_err(hdev, "Intel Read version failed (%d)", err);
2856 btintel_reset_to_bootloader(hdev);
2857 return err;
2858 }
2859
2860 err = btintel_version_info(hdev, &ver);
2861 if (err)
2862 return err;
2863
2864 err = btusb_intel_download_firmware(hdev, &ver, ¶ms, &boot_param);
2865 if (err)
2866 return err;
2867
2868 /* controller is already having an operational firmware */
2869 if (ver.fw_variant == 0x23)
2870 goto finish;
2871
2872 err = btusb_intel_boot(hdev, boot_param);
2873 if (err)
2874 return err;
2875
2876 clear_bit(BTUSB_BOOTLOADER, &data->flags);
2877
2878 err = btusb_setup_intel_new_get_fw_name(&ver, ¶ms, ddcname,
2879 sizeof(ddcname), "ddc");
2880
2881 if (err < 0) {
2882 bt_dev_err(hdev, "Unsupported Intel firmware naming");
2883 } else {
2884 /* Once the device is running in operational mode, it needs to
2885 * apply the device configuration (DDC) parameters.
2886 *
2887 * The device can work without DDC parameters, so even if it
2888 * fails to load the file, no need to fail the setup.
2889 */
2890 btintel_load_ddc_config(hdev, ddcname);
2891 }
2892
2893 /* Read the Intel supported features and if new exception formats
2894 * supported, need to load the additional DDC config to enable.
2895 */
2896 btintel_read_debug_features(hdev, &features);
2897
2898 /* Set DDC mask for available debug features */
2899 btintel_set_debug_features(hdev, &features);
2900
2901 /* Read the Intel version information after loading the FW */
2902 err = btintel_read_version(hdev, &ver);
2903 if (err)
2904 return err;
2905
2906 btintel_version_info(hdev, &ver);
2907
2908 finish:
2909 /* All Intel controllers that support the Microsoft vendor
2910 * extension are using 0xFC1E for VsMsftOpCode.
2911 */
2912 switch (ver.hw_variant) {
2913 case 0x11: /* JfP */
2914 case 0x12: /* ThP */
2915 case 0x13: /* HrP */
2916 case 0x14: /* CcP */
> 2917 match = usb_match_id(data->intf, msft_rej_table);
2918 if (!match)
2919 hci_set_msft_opcode(hdev, 0xFC1E);
2920 break;
2921 }
2922
2923 /* Set the event mask for Intel specific vendor events. This enables
2924 * a few extra events that are useful during general operation. It
2925 * does not enable any debugging related events.
2926 *
2927 * The device will function correctly without these events enabled
2928 * and thus no need to fail the setup.
2929 */
2930 btintel_set_event_mask(hdev, false);
2931
2932 return 0;
2933 }
2934
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
Re: [PATCH 03/11] coresight: config: Add configuration and feature generic functions
by kernel test robot
Hi Mathieu,
I love your patch! Perhaps something to improve:
[auto build test WARNING on soc/for-next]
[also build test WARNING on linux/master linus/master v5.14-rc6 next-20210819]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Mathieu-Poirier/coresight-Patche...
base: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git for-next
config: arm-randconfig-c002-20210818 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project d2b574a4dea5b718e4386bf2e26af0126e5978ce)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/0day-ci/linux/commit/832a1a28927177c3641fb635e4f623ff0...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Mathieu-Poirier/coresight-Patches-for-v5-15/20210819-034401
git checkout 832a1a28927177c3641fb635e4f623ff0652d3e1
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
if (err < 0)
^
drivers/hwmon/nct6775.c:2347:26: note: Calling 'LM75_TEMP_TO_REG'
data->temp[index][nr] = LM75_TEMP_TO_REG(val);
^~~~~~~~~~~~~~~~~~~~~
drivers/hwmon/lm75.h:27:14: note: Assuming '__UNIQUE_ID___x175' is <= '__UNIQUE_ID___y176'
int ntemp = clamp_val(temp, LM75_TEMP_MIN, LM75_TEMP_MAX);
^
include/linux/minmax.h:137:32: note: expanded from macro 'clamp_val'
#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:124:48: note: expanded from macro 'clamp_t'
#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:112:27: note: expanded from macro 'max_t'
#define max_t(type, x, y) __careful_cmp((type)(x), (type)(y), >)
^
note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/minmax.h:104:48: note: expanded from macro 'min_t'
#define min_t(type, x, y) __careful_cmp((type)(x), (type)(y), <)
~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
include/linux/minmax.h:38:14: note: expanded from macro '__careful_cmp'
__cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:31:25: note: expanded from macro '__cmp_once'
typeof(x) unique_x = (x); \
^
drivers/hwmon/lm75.h:27:14: note: '?' condition is false
int ntemp = clamp_val(temp, LM75_TEMP_MIN, LM75_TEMP_MAX);
^
include/linux/minmax.h:137:32: note: expanded from macro 'clamp_val'
#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
^
include/linux/minmax.h:124:48: note: expanded from macro 'clamp_t'
#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
^
include/linux/minmax.h:112:27: note: expanded from macro 'max_t'
#define max_t(type, x, y) __careful_cmp((type)(x), (type)(y), >)
^
include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
__cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
^
include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
__cmp(unique_x, unique_y, op); })
^
include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
#define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
^
drivers/hwmon/lm75.h:27:14: note: '__UNIQUE_ID___x177' is < '__UNIQUE_ID___y178'
int ntemp = clamp_val(temp, LM75_TEMP_MIN, LM75_TEMP_MAX);
^
include/linux/minmax.h:137:32: note: expanded from macro 'clamp_val'
#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:124:36: note: expanded from macro 'clamp_t'
#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
#define min_t(type, x, y) __careful_cmp((type)(x), (type)(y), <)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
__cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
__cmp(unique_x, unique_y, op); })
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
#define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
^~~
drivers/hwmon/lm75.h:27:14: note: '?' condition is true
int ntemp = clamp_val(temp, LM75_TEMP_MIN, LM75_TEMP_MAX);
^
include/linux/minmax.h:137:32: note: expanded from macro 'clamp_val'
#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
^
include/linux/minmax.h:124:36: note: expanded from macro 'clamp_t'
#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
^
include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
#define min_t(type, x, y) __careful_cmp((type)(x), (type)(y), <)
^
include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
__cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
^
include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
__cmp(unique_x, unique_y, op); })
^
include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
#define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
^
drivers/hwmon/lm75.h:29:12: note: 'ntemp' is < 0
ntemp += (ntemp < 0 ? -250 : 250);
^~~~~
drivers/hwmon/lm75.h:29:12: note: '?' condition is true
drivers/hwmon/lm75.h:30:29: note: The result of the left shift is undefined because the left operand is negative
return (u16)((ntemp / 500) << 7);
~~~~~~~~~~~~~ ^
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
9 warnings generated.
>> drivers/hwtracing/coresight/coresight-config.c:167:4: warning: Value stored to 'name' is never read [clang-analyzer-deadcode.DeadStores]
name = feat_csdev->feat_desc->params_desc[j].name;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/hwtracing/coresight/coresight-config.c:167:4: note: Value stored to 'name' is never read
name = feat_csdev->feat_desc->params_desc[j].name;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/hwtracing/coresight/coresight-config.c:206:4: warning: Value stored to 'name' is never read [clang-analyzer-deadcode.DeadStores]
name = feat_csdev->feat_desc->params_desc[j].name;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/hwtracing/coresight/coresight-config.c:206:4: note: Value stored to 'name' is never read
name = feat_csdev->feat_desc->params_desc[j].name;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/hwtracing/coresight/coresight-config.c:234:3: warning: Value stored to 'csdev' is never read [clang-analyzer-deadcode.DeadStores]
csdev = feat_csdev->csdev;
^ ~~~~~~~~~~~~~~~~~
drivers/hwtracing/coresight/coresight-config.c:234:3: note: Value stored to 'csdev' is never read
csdev = feat_csdev->csdev;
^ ~~~~~~~~~~~~~~~~~
Suppressed 6 warnings (6 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
6 warnings generated.
Suppressed 6 warnings (6 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
6 warnings generated.
Suppressed 6 warnings (6 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
10 warnings generated.
drivers/hwtracing/coresight/coresight-tmc-etr.c:763:33: warning: Value stored to 'etr' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct coresight_device *tmp, *etr = drvdata->csdev;
^~~ ~~~~~~~~~~~~~~
drivers/hwtracing/coresight/coresight-tmc-etr.c:763:33: note: Value stored to 'etr' during its initialization is never read
struct coresight_device *tmp, *etr = drvdata->csdev;
^~~ ~~~~~~~~~~~~~~
drivers/hwtracing/coresight/coresight-tmc-etr.c:902:2: warning: Called function pointer is null (null dereference) [clang-analyzer-core.CallAndMessage]
etr_buf->ops->free(etr_buf);
^
drivers/hwtracing/coresight/coresight-tmc-etr.c:1408:6: note: Assuming 'etr_buf' is non-null
if (!etr_buf)
^~~~~~~~
drivers/hwtracing/coresight/coresight-tmc-etr.c:1408:2: note: Taking false branch
if (!etr_buf)
^
drivers/hwtracing/coresight/coresight-tmc-etr.c:1413:2: note: Taking false branch
if (!refcount_dec_and_test(&etr_buf->refcount)) {
^
drivers/hwtracing/coresight/coresight-tmc-etr.c:1426:6: note: Assuming 'buf' is null
if (buf && WARN_ON(buf != etr_buf))
^~~
drivers/hwtracing/coresight/coresight-tmc-etr.c:1426:10: note: Left side of '&&' is false
if (buf && WARN_ON(buf != etr_buf))
^
drivers/hwtracing/coresight/coresight-tmc-etr.c:1429:2: note: Calling 'tmc_free_etr_buf'
tmc_free_etr_buf(etr_perf->etr_buf);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/hwtracing/coresight/coresight-tmc-etr.c:901:10: note: Assuming field 'ops' is non-null
WARN_ON(!etr_buf->ops || !etr_buf->ops->free);
^
include/asm-generic/bug.h:121:25: note: expanded from macro 'WARN_ON'
int __ret_warn_on = !!(condition); \
^~~~~~~~~
drivers/hwtracing/coresight/coresight-tmc-etr.c:901:10: note: Left side of '||' is false
WARN_ON(!etr_buf->ops || !etr_buf->ops->free);
^
drivers/hwtracing/coresight/coresight-tmc-etr.c:901:27: note: Assuming field 'free' is null
WARN_ON(!etr_buf->ops || !etr_buf->ops->free);
^
include/asm-generic/bug.h:121:25: note: expanded from macro 'WARN_ON'
int __ret_warn_on = !!(condition); \
^~~~~~~~~
drivers/hwtracing/coresight/coresight-tmc-etr.c:901:2: note: Taking true branch
WARN_ON(!etr_buf->ops || !etr_buf->ops->free);
^
include/asm-generic/bug.h:122:2: note: expanded from macro 'WARN_ON'
if (unlikely(__ret_warn_on)) \
^
drivers/hwtracing/coresight/coresight-tmc-etr.c:901:2: note: Loop condition is false. Exiting loop
WARN_ON(!etr_buf->ops || !etr_buf->ops->free);
^
include/asm-generic/bug.h:123:3: note: expanded from macro 'WARN_ON'
__WARN(); \
^
include/asm-generic/bug.h:88:19: note: expanded from macro '__WARN'
#define __WARN() __WARN_printf(TAINT_WARN, NULL)
^
include/asm-generic/bug.h:90:3: note: expanded from macro '__WARN_printf'
instrumentation_begin(); \
^
include/linux/instrumentation.h:57:34: note: expanded from macro 'instrumentation_begin'
# define instrumentation_begin() do { } while(0)
^
drivers/hwtracing/coresight/coresight-tmc-etr.c:901:2: note: Loop condition is false. Exiting loop
WARN_ON(!etr_buf->ops || !etr_buf->ops->free);
^
include/asm-generic/bug.h:123:3: note: expanded from macro 'WARN_ON'
__WARN(); \
^
include/asm-generic/bug.h:88:19: note: expanded from macro '__WARN'
#define __WARN() __WARN_printf(TAINT_WARN, NULL)
^
include/asm-generic/bug.h:92:3: note: expanded from macro '__WARN_printf'
instrumentation_end(); \
^
include/linux/instrumentation.h:58:33: note: expanded from macro 'instrumentation_end'
# define instrumentation_end() do { } while(0)
^
drivers/hwtracing/coresight/coresight-tmc-etr.c:901:2: note: Loop condition is false. Exiting loop
WARN_ON(!etr_buf->ops || !etr_buf->ops->free);
^
include/asm-generic/bug.h:123:3: note: expanded from macro 'WARN_ON'
__WARN(); \
^
include/asm-generic/bug.h:88:19: note: expanded from macro '__WARN'
#define __WARN() __WARN_printf(TAINT_WARN, NULL)
vim +/name +167 drivers/hwtracing/coresight/coresight-config.c
133
134 /*
135 * For the selected presets, we set the register associated with the parameter, to
136 * the value of the preset index associated with the parameter.
137 */
138 static int cscfg_update_presets(struct cscfg_config_csdev *config_csdev, int preset)
139 {
140 int i, j, val_idx = 0, nr_cfg_params;
141 struct cscfg_parameter_csdev *param_csdev;
142 struct cscfg_feature_csdev *feat_csdev;
143 const struct cscfg_config_desc *config_desc = config_csdev->config_desc;
144 const char *name;
145 const u64 *preset_base;
146 u64 val;
147
148 /* preset in range 1 to nr_presets */
149 if (preset < 1 || preset > config_desc->nr_presets)
150 return -EINVAL;
151 /*
152 * Go through the array of features, assigning preset values to
153 * feature parameters in the order they appear.
154 * There should be precisely the same number of preset values as the
155 * sum of number of parameters over all the features - but we will
156 * ensure there is no overrun.
157 */
158 nr_cfg_params = config_desc->nr_total_params;
159 preset_base = &config_desc->presets[(preset - 1) * nr_cfg_params];
160 for (i = 0; i < config_csdev->nr_feat; i++) {
161 feat_csdev = config_csdev->feats_csdev[i];
162 if (!feat_csdev->nr_params)
163 continue;
164
165 for (j = 0; j < feat_csdev->nr_params; j++) {
166 param_csdev = &feat_csdev->params_csdev[j];
> 167 name = feat_csdev->feat_desc->params_desc[j].name;
168 val = preset_base[val_idx++];
169 if (param_csdev->val64) {
170 dev_dbg(&config_csdev->csdev->dev,
171 "set param %s (%lld)", name, val);
172 param_csdev->reg_csdev->reg_desc.val64 = val;
173 } else {
174 param_csdev->reg_csdev->reg_desc.val32 = (u32)val;
175 dev_dbg(&config_csdev->csdev->dev,
176 "set param %s (%d)", name, (u32)val);
177 }
178 }
179
180 /* exit early if all params filled */
181 if (val_idx >= nr_cfg_params)
182 break;
183 }
184 return 0;
185 }
186
187 /*
188 * if we are not using a preset, then need to update the feature params
189 * with current values. This sets the register associated with the parameter
190 * with the current value of that parameter.
191 */
192 static int cscfg_update_curr_params(struct cscfg_config_csdev *config_csdev)
193 {
194 int i, j;
195 struct cscfg_feature_csdev *feat_csdev;
196 struct cscfg_parameter_csdev *param_csdev;
197 const char *name;
198 u64 val;
199
200 for (i = 0; i < config_csdev->nr_feat; i++) {
201 feat_csdev = config_csdev->feats_csdev[i];
202 if (!feat_csdev->nr_params)
203 continue;
204 for (j = 0; j < feat_csdev->nr_params; j++) {
205 param_csdev = &feat_csdev->params_csdev[j];
206 name = feat_csdev->feat_desc->params_desc[j].name;
207 val = param_csdev->current_value;
208 if (param_csdev->val64) {
209 dev_dbg(&config_csdev->csdev->dev,
210 "set param %s (%lld)", name, val);
211 param_csdev->reg_csdev->reg_desc.val64 = val;
212 } else {
213 param_csdev->reg_csdev->reg_desc.val32 = (u32)val;
214 dev_dbg(&config_csdev->csdev->dev,
215 "set param %s (%d)", name, (u32)val);
216 }
217 }
218 }
219 return 0;
220 }
221
222 /*
223 * Configuration values will be programmed into the driver locations if enabling, or read
224 * from relevant locations on disable.
225 */
226 static int cscfg_prog_config(struct cscfg_config_csdev *config_csdev, bool enable)
227 {
228 int i, err = 0;
229 struct cscfg_feature_csdev *feat_csdev;
230 struct coresight_device *csdev;
231
232 for (i = 0; i < config_csdev->nr_feat; i++) {
233 feat_csdev = config_csdev->feats_csdev[i];
> 234 csdev = feat_csdev->csdev;
235 dev_dbg(&csdev->dev, "cfg %s; %s feature:%s", config_csdev->config_desc->name,
236 enable ? "enable" : "disable", feat_csdev->feat_desc->name);
237
238 if (enable)
239 err = cscfg_set_on_enable(feat_csdev);
240 else
241 cscfg_save_on_disable(feat_csdev);
242
243 if (err)
244 break;
245 }
246 return err;
247 }
248
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[dhowells-fs:netfs-folio-regions 18/28] fs/netfs/write_prep.c:78:31: sparse: sparse: incompatible types in comparison expression (different type sizes):
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git netfs-folio-regions
head: 215a4ee495a95cc73256ed76f91cb78bcabd6b8e
commit: 0c1c1796fd33fded73a9a4305a9e43e8922746ee [18/28] netfs: Do encryption in write preparatory phase
config: nios2-randconfig-s031-20210818 (attached as .config)
compiler: nios2-linux-gcc (GCC) 11.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-348-gf0e6938b-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/com...
git remote add dhowells-fs https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
git fetch --no-tags dhowells-fs netfs-folio-regions
git checkout 0c1c1796fd33fded73a9a4305a9e43e8922746ee
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=nios2 SHELL=/bin/bash fs/netfs/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> fs/netfs/write_prep.c:78:31: sparse: sparse: incompatible types in comparison expression (different type sizes):
>> fs/netfs/write_prep.c:78:31: sparse: unsigned int *
>> fs/netfs/write_prep.c:78:31: sparse: unsigned long *
vim +78 fs/netfs/write_prep.c
46
47 /*
48 * Populate a scatterlist from folios in an xarray.
49 */
50 static int netfs_xarray_to_sglist(struct xarray *xa, loff_t pos, size_t len,
51 struct scatterlist *sg, unsigned int n_sg)
52 {
53 struct scatterlist *p = sg;
54 struct folio *folio = NULL;
55 size_t seg, offset, skip = 0;
56 loff_t start = pos;
57 pgoff_t index = start >> PAGE_SHIFT;
58 int j;
59
60 XA_STATE(xas, xa, index);
61
62 sg_init_table(sg, n_sg);
63
64 rcu_read_lock();
65
66 xas_for_each(&xas, folio, ULONG_MAX) {
67 kdebug("LOAD %lx %px", folio->index, folio);
68 if (xas_retry(&xas, folio))
69 continue;
70 if (WARN_ON(xa_is_value(folio)) || WARN_ON(folio_test_hugetlb(folio)))
71 break;
72 for (j = (folio_index(folio) < index) ? index - folio_index(folio) : 0;
73 j < folio_nr_pages(folio); j++
74 ) {
75 struct page *subpage = folio_file_page(folio, j);
76
77 offset = (pos + skip) & ~PAGE_MASK;
> 78 seg = min(len, PAGE_SIZE - offset);
79
80 kdebug("[%zx] %lx %zx @%zx", p - sg, subpage->index, seg, offset);
81 sg_set_page(p++, subpage, seg, offset);
82
83 len -= seg;
84 skip += seg;
85 if (len == 0)
86 break;
87 }
88 if (len == 0)
89 break;
90 }
91
92 rcu_read_unlock();
93 if (len > 0) {
94 WARN_ON(len > 0);
95 return -EIO;
96 }
97
98 sg_mark_end(p - 1);
99 kleave(" = %zd", p - sg);
100 return p - sg;
101 }
102
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[dhowells-fs:netfs-folio-regions 24/28] fs/netfs/write_back.c:370:3: warning: misleading indentation; statement is not part of the previous 'if'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git netfs-folio-regions
head: 215a4ee495a95cc73256ed76f91cb78bcabd6b8e
commit: aa9c4d14149db8497a57098e64074fb6857fd952 [24/28] netfs: Process pending write queue
config: hexagon-randconfig-r041-20210818 (attached as .config)
compiler: clang version 12.0.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/com...
git remote add dhowells-fs https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
git fetch --no-tags dhowells-fs netfs-folio-regions
git checkout aa9c4d14149db8497a57098e64074fb6857fd952
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=hexagon
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
fs/netfs/write_back.c:114:6: warning: variable 'region' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (range.start < wreq->coverage.start) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fs/netfs/write_back.c:129:18: note: uninitialized use occurs here
if (range.end > region->dirty.end) {
^~~~~~
fs/netfs/write_back.c:114:2: note: remove the 'if' if its condition is always true
if (range.start < wreq->coverage.start) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fs/netfs/write_back.c:98:35: note: initialize the variable 'region' to silence this warning
struct netfs_dirty_region *region, *r;
^
= NULL
>> fs/netfs/write_back.c:370:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation]
ctx->ops->create_write_operations(wreq);
^
fs/netfs/write_back.c:367:2: note: previous statement is here
if (test_bit(NETFS_WREQ_WRITE_TO_CACHE, &wreq->flags))
^
fs/netfs/write_back.c:420:7: warning: variable 'ret' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (!folio_trylock(folio))
^~~~~~~~~~~~~~~~~~~~~
fs/netfs/write_back.c:424:9: note: uninitialized use occurs here
return ret;
^~~
fs/netfs/write_back.c:420:3: note: remove the 'if' if its condition is always true
if (!folio_trylock(folio))
^~~~~~~~~~~~~~~~~~~~~~~~~~
fs/netfs/write_back.c:407:9: note: initialize the variable 'ret' to silence this warning
int ret;
^
= 0
fs/netfs/write_back.c:478:20: warning: variable 'region' is uninitialized when used here [-Wuninitialized]
if (range.start < region->dirty.start) {
^~~~~~
fs/netfs/write_back.c:463:35: note: initialize the variable 'region' to silence this warning
struct netfs_dirty_region *region, *r;
^
= NULL
fs/netfs/write_back.c:1089:1: error: expected statement
}
^
4 warnings and 1 error generated.
vim +/if +370 fs/netfs/write_back.c
346
347 /*
348 * Process a write request.
349 *
350 * All the folios in the bounding box have had a ref taken on them and those
351 * covering the dirty region have been marked as being written back and their
352 * dirty bits provisionally cleared.
353 */
354 static void netfs_writeback(struct netfs_write_request *wreq)
355 {
356 struct netfs_i_context *ctx = netfs_i_context(wreq->inode);
357
358 kenter("");
359
360 if (test_bit(NETFS_ICTX_ENCRYPTED, &ctx->flags) &&
361 !netfs_prepare_wreq(wreq))
362 goto out;
363
364 /* ->outstanding > 0 carries a ref */
365 netfs_get_write_request(wreq, netfs_wreq_trace_get_for_outstanding);
366
367 if (test_bit(NETFS_WREQ_WRITE_TO_CACHE, &wreq->flags))
368 netfs_set_up_write_to_cache(wreq);
369 //if (wreq->region->type != NETFS_REGION_CACHE_COPY)
> 370 ctx->ops->create_write_operations(wreq);
371 out:
372 if (atomic_dec_and_test(&wreq->outstanding))
373 netfs_write_completed(wreq, false);
374 }
375
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
Re: [PATCH v2] mei: improve Denverton HSM & IFSI support
by kernel test robot
Hi Lukas,
I love your patch! Perhaps something to improve:
[auto build test WARNING on char-misc/char-misc-testing]
[also build test WARNING on pci/next soc/for-next v5.14-rc6 next-20210819]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Lukas-Bulwahn/mei-improve-Denver...
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git b2159182dd498fdb0f49e371ccc94efbc12d1f8e
config: x86_64-randconfig-r015-20210818 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project d2b574a4dea5b718e4386bf2e26af0126e5978ce)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/2b98fe0ded99ab7eaf389fa1c91b3d9aa...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Lukas-Bulwahn/mei-improve-Denverton-HSM-IFSI-support/20210819-230718
git checkout 2b98fe0ded99ab7eaf389fa1c91b3d9aad7c93a3
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
drivers/misc/mei/pci-me.c:80:39: error: use of undeclared identifier 'MEI_ME_PCH8_SPS_CFG'
{MEI_PCI_DEVICE(MEI_DEV_ID_DNV_IE_2, MEI_ME_PCH8_SPS_CFG)},
^
>> drivers/misc/mei/pci-me.c:195:31: warning: shift count >= width of type [-Wshift-count-overflow]
if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)) ||
^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:76:54: note: expanded from macro 'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
^ ~~~
drivers/misc/mei/pci-me.c:196:40: warning: shift count >= width of type [-Wshift-count-overflow]
dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) {
^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:76:54: note: expanded from macro 'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
^ ~~~
2 warnings and 1 error generated.
vim +195 drivers/misc/mei/pci-me.c
2703d4b2e673cc Tomas Winkler 2013-02-06 25
2703d4b2e673cc Tomas Winkler 2013-02-06 26 /* mei_pci_tbl - PCI Device ID Table */
a05f8f86e49749 Tomas Winkler 2014-03-16 27 static const struct pci_device_id mei_me_pci_tbl[] = {
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 28 {MEI_PCI_DEVICE(MEI_DEV_ID_82946GZ, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 29 {MEI_PCI_DEVICE(MEI_DEV_ID_82G35, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 30 {MEI_PCI_DEVICE(MEI_DEV_ID_82Q965, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 31 {MEI_PCI_DEVICE(MEI_DEV_ID_82G965, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 32 {MEI_PCI_DEVICE(MEI_DEV_ID_82GM965, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 33 {MEI_PCI_DEVICE(MEI_DEV_ID_82GME965, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 34 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_82Q35, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 35 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_82G33, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 36 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_82Q33, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 37 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_82X38, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 38 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_3200, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 39
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 40 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_6, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 41 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_7, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 42 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_8, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 43 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_9, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 44 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_10, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 45 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9M_1, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 46 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9M_2, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 47 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9M_3, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 48 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9M_4, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 49
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 50 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH10_1, MEI_ME_ICH10_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 51 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH10_2, MEI_ME_ICH10_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 52 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH10_3, MEI_ME_ICH10_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 53 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH10_4, MEI_ME_ICH10_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 54
f8204f0ddd6296 Alexander Usyskin 2019-10-04 55 {MEI_PCI_DEVICE(MEI_DEV_ID_IBXPK_1, MEI_ME_PCH6_CFG)},
f8204f0ddd6296 Alexander Usyskin 2019-10-04 56 {MEI_PCI_DEVICE(MEI_DEV_ID_IBXPK_2, MEI_ME_PCH6_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 57 {MEI_PCI_DEVICE(MEI_DEV_ID_CPT_1, MEI_ME_PCH_CPT_PBG_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 58 {MEI_PCI_DEVICE(MEI_DEV_ID_PBG_1, MEI_ME_PCH_CPT_PBG_CFG)},
f8204f0ddd6296 Alexander Usyskin 2019-10-04 59 {MEI_PCI_DEVICE(MEI_DEV_ID_PPT_1, MEI_ME_PCH7_CFG)},
f8204f0ddd6296 Alexander Usyskin 2019-10-04 60 {MEI_PCI_DEVICE(MEI_DEV_ID_PPT_2, MEI_ME_PCH7_CFG)},
f8204f0ddd6296 Alexander Usyskin 2019-10-04 61 {MEI_PCI_DEVICE(MEI_DEV_ID_PPT_3, MEI_ME_PCH7_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 62 {MEI_PCI_DEVICE(MEI_DEV_ID_LPT_H, MEI_ME_PCH8_SPS_4_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 63 {MEI_PCI_DEVICE(MEI_DEV_ID_LPT_W, MEI_ME_PCH8_SPS_4_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 64 {MEI_PCI_DEVICE(MEI_DEV_ID_LPT_LP, MEI_ME_PCH8_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 65 {MEI_PCI_DEVICE(MEI_DEV_ID_LPT_HR, MEI_ME_PCH8_SPS_4_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 66 {MEI_PCI_DEVICE(MEI_DEV_ID_WPT_LP, MEI_ME_PCH8_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 67 {MEI_PCI_DEVICE(MEI_DEV_ID_WPT_LP_2, MEI_ME_PCH8_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 68
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 69 {MEI_PCI_DEVICE(MEI_DEV_ID_SPT, MEI_ME_PCH8_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 70 {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_2, MEI_ME_PCH8_CFG)},
2f79d3d1f7f088 Alexander Usyskin 2020-07-28 71 {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_3, MEI_ME_PCH8_ITOUCH_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 72 {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H, MEI_ME_PCH8_SPS_4_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 73 {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H_2, MEI_ME_PCH8_SPS_4_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 74 {MEI_PCI_DEVICE(MEI_DEV_ID_LBG, MEI_ME_PCH12_SPS_4_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 75
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 76 {MEI_PCI_DEVICE(MEI_DEV_ID_BXT_M, MEI_ME_PCH8_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 77 {MEI_PCI_DEVICE(MEI_DEV_ID_APL_I, MEI_ME_PCH8_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 78
f7ee8ead151f9d Tomas Winkler 2019-01-13 79 {MEI_PCI_DEVICE(MEI_DEV_ID_DNV_IE, MEI_ME_PCH8_CFG)},
2b98fe0ded99ab Lukas Bulwahn 2021-08-19 @80 {MEI_PCI_DEVICE(MEI_DEV_ID_DNV_IE_2, MEI_ME_PCH8_SPS_CFG)},
f7ee8ead151f9d Tomas Winkler 2019-01-13 81
688cb67839e852 Tomas Winkler 2017-09-24 82 {MEI_PCI_DEVICE(MEI_DEV_ID_GLK, MEI_ME_PCH8_CFG)},
688cb67839e852 Tomas Winkler 2017-09-24 83
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 84 {MEI_PCI_DEVICE(MEI_DEV_ID_KBP, MEI_ME_PCH8_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 85 {MEI_PCI_DEVICE(MEI_DEV_ID_KBP_2, MEI_ME_PCH8_CFG)},
4afc339ef0d259 Tomas Winkler 2020-06-19 86 {MEI_PCI_DEVICE(MEI_DEV_ID_KBP_3, MEI_ME_PCH8_CFG)},
ac182e8abc6f93 Alexander Usyskin 2016-09-12 87
1dbfe7f23bdb72 Alexander Usyskin 2018-11-22 88 {MEI_PCI_DEVICE(MEI_DEV_ID_CNP_LP, MEI_ME_PCH12_CFG)},
2f79d3d1f7f088 Alexander Usyskin 2020-07-28 89 {MEI_PCI_DEVICE(MEI_DEV_ID_CNP_LP_3, MEI_ME_PCH8_ITOUCH_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 90 {MEI_PCI_DEVICE(MEI_DEV_ID_CNP_H, MEI_ME_PCH12_SPS_CFG)},
2f79d3d1f7f088 Alexander Usyskin 2020-07-28 91 {MEI_PCI_DEVICE(MEI_DEV_ID_CNP_H_3, MEI_ME_PCH12_SPS_ITOUCH_CFG)},
f8f4aa68a8ae98 Alexander Usyskin 2018-02-18 92
4d86dfd38285c8 Tomas Winkler 2019-10-02 93 {MEI_PCI_DEVICE(MEI_DEV_ID_CMP_LP, MEI_ME_PCH12_CFG)},
2f79d3d1f7f088 Alexander Usyskin 2020-07-28 94 {MEI_PCI_DEVICE(MEI_DEV_ID_CMP_LP_3, MEI_ME_PCH8_ITOUCH_CFG)},
82b29b9f72afdc Alexander Usyskin 2019-11-05 95 {MEI_PCI_DEVICE(MEI_DEV_ID_CMP_V, MEI_ME_PCH12_CFG)},
559e575a8946a6 Tomas Winkler 2020-01-19 96 {MEI_PCI_DEVICE(MEI_DEV_ID_CMP_H, MEI_ME_PCH12_CFG)},
2f79d3d1f7f088 Alexander Usyskin 2020-07-28 97 {MEI_PCI_DEVICE(MEI_DEV_ID_CMP_H_3, MEI_ME_PCH8_ITOUCH_CFG)},
4d86dfd38285c8 Tomas Winkler 2019-10-02 98
efe814e90b98ae Tomas Winkler 2019-01-24 99 {MEI_PCI_DEVICE(MEI_DEV_ID_ICP_LP, MEI_ME_PCH12_CFG)},
efe814e90b98ae Tomas Winkler 2019-01-24 100
52f6efdf809244 Alexander Usyskin 2019-11-07 101 {MEI_PCI_DEVICE(MEI_DEV_ID_TGP_LP, MEI_ME_PCH15_CFG)},
8c289ea0641652 Alexander Usyskin 2020-06-19 102 {MEI_PCI_DEVICE(MEI_DEV_ID_TGP_H, MEI_ME_PCH15_SPS_CFG)},
587f17407741a5 Tomas Winkler 2019-08-19 103
0db4a15d4c2787 Tomas Winkler 2020-01-24 104 {MEI_PCI_DEVICE(MEI_DEV_ID_JSP_N, MEI_ME_PCH15_CFG)},
0db4a15d4c2787 Tomas Winkler 2020-01-24 105
52f6efdf809244 Alexander Usyskin 2019-11-07 106 {MEI_PCI_DEVICE(MEI_DEV_ID_MCC, MEI_ME_PCH15_CFG)},
1be8624a0cbef7 Alexander Usyskin 2019-07-12 107 {MEI_PCI_DEVICE(MEI_DEV_ID_MCC_4, MEI_ME_PCH8_CFG)},
1be8624a0cbef7 Alexander Usyskin 2019-07-12 108
99397d33b763dc Alexander Usyskin 2020-03-24 109 {MEI_PCI_DEVICE(MEI_DEV_ID_CDF, MEI_ME_PCH8_CFG)},
99397d33b763dc Alexander Usyskin 2020-03-24 110
372726cb3957db Tomas Winkler 2021-01-29 111 {MEI_PCI_DEVICE(MEI_DEV_ID_EBG, MEI_ME_PCH15_SPS_CFG)},
372726cb3957db Tomas Winkler 2021-01-29 112
f7545efaf7950b Alexander Usyskin 2021-01-29 113 {MEI_PCI_DEVICE(MEI_DEV_ID_ADP_S, MEI_ME_PCH15_CFG)},
930c922a987a02 Alexander Usyskin 2021-01-29 114 {MEI_PCI_DEVICE(MEI_DEV_ID_ADP_LP, MEI_ME_PCH15_CFG)},
0df74278faedf2 Tomas Winkler 2021-04-14 115 {MEI_PCI_DEVICE(MEI_DEV_ID_ADP_P, MEI_ME_PCH15_CFG)},
f7545efaf7950b Alexander Usyskin 2021-01-29 116
2703d4b2e673cc Tomas Winkler 2013-02-06 117 /* required last entry */
2703d4b2e673cc Tomas Winkler 2013-02-06 118 {0, }
2703d4b2e673cc Tomas Winkler 2013-02-06 119 };
2703d4b2e673cc Tomas Winkler 2013-02-06 120
b68301e9acd30f Tomas Winkler 2013-03-27 121 MODULE_DEVICE_TABLE(pci, mei_me_pci_tbl);
2703d4b2e673cc Tomas Winkler 2013-02-06 122
bbd6d050754731 Rafael J. Wysocki 2014-12-04 123 #ifdef CONFIG_PM
e13fa90ce42d8e Tomas Winkler 2014-03-18 124 static inline void mei_me_set_pm_domain(struct mei_device *dev);
e13fa90ce42d8e Tomas Winkler 2014-03-18 125 static inline void mei_me_unset_pm_domain(struct mei_device *dev);
e13fa90ce42d8e Tomas Winkler 2014-03-18 126 #else
e13fa90ce42d8e Tomas Winkler 2014-03-18 127 static inline void mei_me_set_pm_domain(struct mei_device *dev) {}
e13fa90ce42d8e Tomas Winkler 2014-03-18 128 static inline void mei_me_unset_pm_domain(struct mei_device *dev) {}
bbd6d050754731 Rafael J. Wysocki 2014-12-04 129 #endif /* CONFIG_PM */
e13fa90ce42d8e Tomas Winkler 2014-03-18 130
261e071acd9bcb Tomas Winkler 2019-11-07 131 static int mei_me_read_fws(const struct mei_device *dev, int where, u32 *val)
261e071acd9bcb Tomas Winkler 2019-11-07 132 {
261e071acd9bcb Tomas Winkler 2019-11-07 133 struct pci_dev *pdev = to_pci_dev(dev->dev);
261e071acd9bcb Tomas Winkler 2019-11-07 134
261e071acd9bcb Tomas Winkler 2019-11-07 135 return pci_read_config_dword(pdev, where, val);
261e071acd9bcb Tomas Winkler 2019-11-07 136 }
261e071acd9bcb Tomas Winkler 2019-11-07 137
2703d4b2e673cc Tomas Winkler 2013-02-06 138 /**
ce23139c6c2ee9 Alexander Usyskin 2014-09-29 139 * mei_me_quirk_probe - probe for devices that doesn't valid ME interface
393b148f9d0e70 Masanari Iida 2013-04-05 140 *
2703d4b2e673cc Tomas Winkler 2013-02-06 141 * @pdev: PCI device structure
c919951d940f28 Tomas Winkler 2014-05-13 142 * @cfg: per generation config
2703d4b2e673cc Tomas Winkler 2013-02-06 143 *
a8605ea2c20c2b Alexander Usyskin 2014-09-29 144 * Return: true if ME Interface is valid, false otherwise
2703d4b2e673cc Tomas Winkler 2013-02-06 145 */
b68301e9acd30f Tomas Winkler 2013-03-27 146 static bool mei_me_quirk_probe(struct pci_dev *pdev,
c919951d940f28 Tomas Winkler 2014-05-13 147 const struct mei_cfg *cfg)
2703d4b2e673cc Tomas Winkler 2013-02-06 148 {
c919951d940f28 Tomas Winkler 2014-05-13 149 if (cfg->quirk_probe && cfg->quirk_probe(pdev)) {
c919951d940f28 Tomas Winkler 2014-05-13 150 dev_info(&pdev->dev, "Device doesn't have valid ME Interface\n");
c919951d940f28 Tomas Winkler 2014-05-13 151 return false;
2703d4b2e673cc Tomas Winkler 2013-02-06 152 }
5e6533a6f52f1a Tomas Winkler 2014-03-25 153
2703d4b2e673cc Tomas Winkler 2013-02-06 154 return true;
2703d4b2e673cc Tomas Winkler 2013-02-06 155 }
c919951d940f28 Tomas Winkler 2014-05-13 156
2703d4b2e673cc Tomas Winkler 2013-02-06 157 /**
ce23139c6c2ee9 Alexander Usyskin 2014-09-29 158 * mei_me_probe - Device Initialization Routine
2703d4b2e673cc Tomas Winkler 2013-02-06 159 *
2703d4b2e673cc Tomas Winkler 2013-02-06 160 * @pdev: PCI device structure
2703d4b2e673cc Tomas Winkler 2013-02-06 161 * @ent: entry in kcs_pci_tbl
2703d4b2e673cc Tomas Winkler 2013-02-06 162 *
a8605ea2c20c2b Alexander Usyskin 2014-09-29 163 * Return: 0 on success, <0 on failure.
2703d4b2e673cc Tomas Winkler 2013-02-06 164 */
b68301e9acd30f Tomas Winkler 2013-03-27 165 static int mei_me_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2703d4b2e673cc Tomas Winkler 2013-02-06 166 {
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 167 const struct mei_cfg *cfg;
2703d4b2e673cc Tomas Winkler 2013-02-06 168 struct mei_device *dev;
52c34561415b42 Tomas Winkler 2013-02-06 169 struct mei_me_hw *hw;
1fa55b4e0e161b Alexander Usyskin 2015-08-02 170 unsigned int irqflags;
2703d4b2e673cc Tomas Winkler 2013-02-06 171 int err;
2703d4b2e673cc Tomas Winkler 2013-02-06 172
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 173 cfg = mei_me_get_cfg(ent->driver_data);
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 174 if (!cfg)
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 175 return -ENODEV;
2703d4b2e673cc Tomas Winkler 2013-02-06 176
c919951d940f28 Tomas Winkler 2014-05-13 177 if (!mei_me_quirk_probe(pdev, cfg))
c919951d940f28 Tomas Winkler 2014-05-13 178 return -ENODEV;
2703d4b2e673cc Tomas Winkler 2013-02-06 179
2703d4b2e673cc Tomas Winkler 2013-02-06 180 /* enable pci dev */
f8a096059fc5f7 Tomas Winkler 2017-01-26 181 err = pcim_enable_device(pdev);
2703d4b2e673cc Tomas Winkler 2013-02-06 182 if (err) {
2703d4b2e673cc Tomas Winkler 2013-02-06 183 dev_err(&pdev->dev, "failed to enable pci device.\n");
2703d4b2e673cc Tomas Winkler 2013-02-06 184 goto end;
2703d4b2e673cc Tomas Winkler 2013-02-06 185 }
2703d4b2e673cc Tomas Winkler 2013-02-06 186 /* set PCI host mastering */
2703d4b2e673cc Tomas Winkler 2013-02-06 187 pci_set_master(pdev);
f8a096059fc5f7 Tomas Winkler 2017-01-26 188 /* pci request regions and mapping IO device memory for mei driver */
f8a096059fc5f7 Tomas Winkler 2017-01-26 189 err = pcim_iomap_regions(pdev, BIT(0), KBUILD_MODNAME);
2703d4b2e673cc Tomas Winkler 2013-02-06 190 if (err) {
2703d4b2e673cc Tomas Winkler 2013-02-06 191 dev_err(&pdev->dev, "failed to get pci regions.\n");
f8a096059fc5f7 Tomas Winkler 2017-01-26 192 goto end;
2703d4b2e673cc Tomas Winkler 2013-02-06 193 }
3ecfb168a51ddf Tomas Winkler 2013-12-17 194
3ecfb168a51ddf Tomas Winkler 2013-12-17 @195 if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)) ||
3ecfb168a51ddf Tomas Winkler 2013-12-17 196 dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) {
3ecfb168a51ddf Tomas Winkler 2013-12-17 197
3ecfb168a51ddf Tomas Winkler 2013-12-17 198 err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
3ecfb168a51ddf Tomas Winkler 2013-12-17 199 if (err)
3ecfb168a51ddf Tomas Winkler 2013-12-17 200 err = dma_set_coherent_mask(&pdev->dev,
3ecfb168a51ddf Tomas Winkler 2013-12-17 201 DMA_BIT_MASK(32));
3ecfb168a51ddf Tomas Winkler 2013-12-17 202 }
3ecfb168a51ddf Tomas Winkler 2013-12-17 203 if (err) {
3ecfb168a51ddf Tomas Winkler 2013-12-17 204 dev_err(&pdev->dev, "No usable DMA configuration, aborting\n");
f8a096059fc5f7 Tomas Winkler 2017-01-26 205 goto end;
3ecfb168a51ddf Tomas Winkler 2013-12-17 206 }
3ecfb168a51ddf Tomas Winkler 2013-12-17 207
2703d4b2e673cc Tomas Winkler 2013-02-06 208 /* allocates and initializes the mei dev structure */
907b471ca228a5 Tomas Winkler 2019-11-07 209 dev = mei_me_dev_init(&pdev->dev, cfg);
2703d4b2e673cc Tomas Winkler 2013-02-06 210 if (!dev) {
2703d4b2e673cc Tomas Winkler 2013-02-06 211 err = -ENOMEM;
f8a096059fc5f7 Tomas Winkler 2017-01-26 212 goto end;
2703d4b2e673cc Tomas Winkler 2013-02-06 213 }
52c34561415b42 Tomas Winkler 2013-02-06 214 hw = to_me_hw(dev);
f8a096059fc5f7 Tomas Winkler 2017-01-26 215 hw->mem_addr = pcim_iomap_table(pdev)[0];
261e071acd9bcb Tomas Winkler 2019-11-07 216 hw->read_fws = mei_me_read_fws;
f8a096059fc5f7 Tomas Winkler 2017-01-26 217
2703d4b2e673cc Tomas Winkler 2013-02-06 218 pci_enable_msi(pdev);
2703d4b2e673cc Tomas Winkler 2013-02-06 219
fec874a81b3ec2 Benjamin Lee 2020-04-17 220 hw->irq = pdev->irq;
fec874a81b3ec2 Benjamin Lee 2020-04-17 221
2703d4b2e673cc Tomas Winkler 2013-02-06 222 /* request and enable interrupt */
1fa55b4e0e161b Alexander Usyskin 2015-08-02 223 irqflags = pci_dev_msi_enabled(pdev) ? IRQF_ONESHOT : IRQF_SHARED;
1fa55b4e0e161b Alexander Usyskin 2015-08-02 224
2703d4b2e673cc Tomas Winkler 2013-02-06 225 err = request_threaded_irq(pdev->irq,
06ecd645980096 Tomas Winkler 2013-02-06 226 mei_me_irq_quick_handler,
06ecd645980096 Tomas Winkler 2013-02-06 227 mei_me_irq_thread_handler,
1fa55b4e0e161b Alexander Usyskin 2015-08-02 228 irqflags, KBUILD_MODNAME, dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 229 if (err) {
2703d4b2e673cc Tomas Winkler 2013-02-06 230 dev_err(&pdev->dev, "request_threaded_irq failure. irq = %d\n",
2703d4b2e673cc Tomas Winkler 2013-02-06 231 pdev->irq);
f8a096059fc5f7 Tomas Winkler 2017-01-26 232 goto end;
2703d4b2e673cc Tomas Winkler 2013-02-06 233 }
2703d4b2e673cc Tomas Winkler 2013-02-06 234
c4d589be4405d4 Tomas Winkler 2013-03-27 235 if (mei_start(dev)) {
2703d4b2e673cc Tomas Winkler 2013-02-06 236 dev_err(&pdev->dev, "init hw failure.\n");
2703d4b2e673cc Tomas Winkler 2013-02-06 237 err = -ENODEV;
2703d4b2e673cc Tomas Winkler 2013-02-06 238 goto release_irq;
2703d4b2e673cc Tomas Winkler 2013-02-06 239 }
2703d4b2e673cc Tomas Winkler 2013-02-06 240
180ea05bcedbd6 Tomas Winkler 2014-03-18 241 pm_runtime_set_autosuspend_delay(&pdev->dev, MEI_ME_RPM_TIMEOUT);
180ea05bcedbd6 Tomas Winkler 2014-03-18 242 pm_runtime_use_autosuspend(&pdev->dev);
180ea05bcedbd6 Tomas Winkler 2014-03-18 243
f3d8e8788b4efb Alexander Usyskin 2014-06-23 244 err = mei_register(dev, &pdev->dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 245 if (err)
1f7e489a285c8b Alexander Usyskin 2016-02-07 246 goto stop;
2703d4b2e673cc Tomas Winkler 2013-02-06 247
2703d4b2e673cc Tomas Winkler 2013-02-06 248 pci_set_drvdata(pdev, dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 249
557909e195aea2 Alexander Usyskin 2017-08-03 250 /*
557909e195aea2 Alexander Usyskin 2017-08-03 251 * MEI requires to resume from runtime suspend mode
557909e195aea2 Alexander Usyskin 2017-08-03 252 * in order to perform link reset flow upon system suspend.
557909e195aea2 Alexander Usyskin 2017-08-03 253 */
e07515563d010d Rafael J. Wysocki 2020-04-18 254 dev_pm_set_driver_flags(&pdev->dev, DPM_FLAG_NO_DIRECT_COMPLETE);
557909e195aea2 Alexander Usyskin 2017-08-03 255
e13fa90ce42d8e Tomas Winkler 2014-03-18 256 /*
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 257 * ME maps runtime suspend/resume to D0i states,
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 258 * hence we need to go around native PCI runtime service which
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 259 * eventually brings the device into D3cold/hot state,
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 260 * but the mei device cannot wake up from D3 unlike from D0i3.
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 261 * To get around the PCI device native runtime pm,
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 262 * ME uses runtime pm domain handlers which take precedence
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 263 * over the driver's pm handlers.
e13fa90ce42d8e Tomas Winkler 2014-03-18 264 */
e13fa90ce42d8e Tomas Winkler 2014-03-18 265 mei_me_set_pm_domain(dev);
e13fa90ce42d8e Tomas Winkler 2014-03-18 266
cc365dcf0e5627 Tomas Winkler 2018-01-02 267 if (mei_pg_is_enabled(dev)) {
180ea05bcedbd6 Tomas Winkler 2014-03-18 268 pm_runtime_put_noidle(&pdev->dev);
cc365dcf0e5627 Tomas Winkler 2018-01-02 269 if (hw->d0i3_supported)
cc365dcf0e5627 Tomas Winkler 2018-01-02 270 pm_runtime_allow(&pdev->dev);
cc365dcf0e5627 Tomas Winkler 2018-01-02 271 }
180ea05bcedbd6 Tomas Winkler 2014-03-18 272
c4e87b525936da Alexander Usyskin 2013-10-21 273 dev_dbg(&pdev->dev, "initialization successful.\n");
2703d4b2e673cc Tomas Winkler 2013-02-06 274
2703d4b2e673cc Tomas Winkler 2013-02-06 275 return 0;
2703d4b2e673cc Tomas Winkler 2013-02-06 276
1f7e489a285c8b Alexander Usyskin 2016-02-07 277 stop:
1f7e489a285c8b Alexander Usyskin 2016-02-07 278 mei_stop(dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 279 release_irq:
dc844b0d99b853 Tomas Winkler 2013-11-11 280 mei_cancel_work(dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 281 mei_disable_interrupts(dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 282 free_irq(pdev->irq, dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 283 end:
2703d4b2e673cc Tomas Winkler 2013-02-06 284 dev_err(&pdev->dev, "initialization failed.\n");
2703d4b2e673cc Tomas Winkler 2013-02-06 285 return err;
2703d4b2e673cc Tomas Winkler 2013-02-06 286 }
2703d4b2e673cc Tomas Winkler 2013-02-06 287
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[dhowells-fs:netfs-folio-regions 23/28] fs/netfs/write_back.c:1071:1: error: expected statement
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git netfs-folio-regions
head: 215a4ee495a95cc73256ed76f91cb78bcabd6b8e
commit: 763245c0c72ba51e185586cdaa4646b49ba7f14c [23/28] netfs: Pass initial write into netfs_flush_dirty()
config: hexagon-randconfig-r041-20210818 (attached as .config)
compiler: clang version 12.0.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/com...
git remote add dhowells-fs https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
git fetch --no-tags dhowells-fs netfs-folio-regions
git checkout 763245c0c72ba51e185586cdaa4646b49ba7f14c
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross O=build_dir ARCH=hexagon SHELL=/bin/bash fs/netfs/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
fs/netfs/write_back.c:108:22: warning: variable 'region' is uninitialized when used here [-Wuninitialized]
if (within(&range, ®ion->dirty)) {
^~~~~~
fs/netfs/write_back.c:98:35: note: initialize the variable 'region' to silence this warning
struct netfs_dirty_region *region, *r;
^
= NULL
fs/netfs/write_back.c:438:7: warning: variable 'ret' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (!folio_trylock(folio))
^~~~~~~~~~~~~~~~~~~~~
fs/netfs/write_back.c:442:9: note: uninitialized use occurs here
return ret;
^~~
fs/netfs/write_back.c:438:3: note: remove the 'if' if its condition is always true
if (!folio_trylock(folio))
^~~~~~~~~~~~~~~~~~~~~~~~~~
fs/netfs/write_back.c:425:9: note: initialize the variable 'ret' to silence this warning
int ret;
^
= 0
fs/netfs/write_back.c:492:22: warning: variable 'region' is uninitialized when used here [-Wuninitialized]
if (within(&range, ®ion->dirty))
^~~~~~
fs/netfs/write_back.c:481:35: note: initialize the variable 'region' to silence this warning
struct netfs_dirty_region *region, *r;
^
= NULL
>> fs/netfs/write_back.c:1071:1: error: expected statement
}
^
3 warnings and 1 error generated.
vim +1071 fs/netfs/write_back.c
763245c0c72ba5 David Howells 2021-08-02 976
763245c0c72ba5 David Howells 2021-08-02 977 /*
763245c0c72ba5 David Howells 2021-08-02 978 * Flush from the front group in the flush FIFO.
763245c0c72ba5 David Howells 2021-08-02 979 */
763245c0c72ba5 David Howells 2021-08-02 980 static int netfs_flush_group(struct address_space *mapping, bool may_wait)
763245c0c72ba5 David Howells 2021-08-02 981 {
763245c0c72ba5 David Howells 2021-08-02 982 struct netfs_write_request *wreq = NULL;
763245c0c72ba5 David Howells 2021-08-02 983 struct netfs_dirty_region *spares[2] = {}, *head, *r, *wait_for;
763245c0c72ba5 David Howells 2021-08-02 984 struct netfs_flush_group *group;
763245c0c72ba5 David Howells 2021-08-02 985 struct netfs_i_context *ctx = netfs_i_context(mapping->host);
763245c0c72ba5 David Howells 2021-08-02 986 struct netfs_range range;
763245c0c72ba5 David Howells 2021-08-02 987 unsigned int min_bsize = 1U << ctx->min_bshift;
763245c0c72ba5 David Howells 2021-08-02 988 loff_t wait_to;
763245c0c72ba5 David Howells 2021-08-02 989 int ret;
763245c0c72ba5 David Howells 2021-08-02 990
763245c0c72ba5 David Howells 2021-08-02 991 kenter("");
763245c0c72ba5 David Howells 2021-08-02 992
763245c0c72ba5 David Howells 2021-08-02 993 ret = netfs_sanity_check_ictx(mapping);
763245c0c72ba5 David Howells 2021-08-02 994 if (ret < 0)
763245c0c72ba5 David Howells 2021-08-02 995 return ret;
763245c0c72ba5 David Howells 2021-08-02 996
763245c0c72ba5 David Howells 2021-08-02 997 retry:
763245c0c72ba5 David Howells 2021-08-02 998 if (!wreq) {
763245c0c72ba5 David Howells 2021-08-02 999 ret = -ENOMEM;
763245c0c72ba5 David Howells 2021-08-02 1000 wreq = netfs_alloc_write_request(mapping, false);
763245c0c72ba5 David Howells 2021-08-02 1001 if (!wreq)
763245c0c72ba5 David Howells 2021-08-02 1002 goto out_unlocked;
763245c0c72ba5 David Howells 2021-08-02 1003 }
1e4f2a70cbedd7 David Howells 2021-07-29 1004
763245c0c72ba5 David Howells 2021-08-02 1005 spin_lock(&ctx->lock);
763245c0c72ba5 David Howells 2021-08-02 1006
763245c0c72ba5 David Howells 2021-08-02 1007 group = list_first_entry(&ctx->flush_groups, struct netfs_flush_group, group_link);
763245c0c72ba5 David Howells 2021-08-02 1008 if (list_empty(&group->region_list))
763245c0c72ba5 David Howells 2021-08-02 1009 goto group_empty;
763245c0c72ba5 David Howells 2021-08-02 1010
763245c0c72ba5 David Howells 2021-08-02 1011 /* We take the first region on the list as a starting point */
763245c0c72ba5 David Howells 2021-08-02 1012 head = list_first_entry(&group->region_list, struct netfs_dirty_region, flush_link);
763245c0c72ba5 David Howells 2021-08-02 1013 range.start = round_down(head->dirty.start, min_bsize);
763245c0c72ba5 David Howells 2021-08-02 1014 range.end = (unsigned long long)LLONG_MAX + 1;
763245c0c72ba5 David Howells 2021-08-02 1015 kdebug("query D=%x", r->debug_id);
763245c0c72ba5 David Howells 2021-08-02 1016
763245c0c72ba5 David Howells 2021-08-02 1017 ret = netfs_flush_dirty(ctx, head, spares, &range, wreq, &wait_for, &wait_to);
763245c0c72ba5 David Howells 2021-08-02 1018 switch (ret) {
763245c0c72ba5 David Howells 2021-08-02 1019 case -ENOBUFS:
763245c0c72ba5 David Howells 2021-08-02 1020 spin_unlock(&ctx->lock);
763245c0c72ba5 David Howells 2021-08-02 1021 goto need_spares;
763245c0c72ba5 David Howells 2021-08-02 1022 case -EAGAIN:
763245c0c72ba5 David Howells 2021-08-02 1023 if (wait_for)
763245c0c72ba5 David Howells 2021-08-02 1024 goto wait_for_active_region;
763245c0c72ba5 David Howells 2021-08-02 1025 spin_unlock(&ctx->lock);
763245c0c72ba5 David Howells 2021-08-02 1026 goto retry;
763245c0c72ba5 David Howells 2021-08-02 1027 default:
763245c0c72ba5 David Howells 2021-08-02 1028 spin_unlock(&ctx->lock);
763245c0c72ba5 David Howells 2021-08-02 1029 goto out_unlocked;
763245c0c72ba5 David Howells 2021-08-02 1030 case 0:
763245c0c72ba5 David Howells 2021-08-02 1031 spin_unlock(&ctx->lock);
763245c0c72ba5 David Howells 2021-08-02 1032 break;
763245c0c72ba5 David Howells 2021-08-02 1033 }
763245c0c72ba5 David Howells 2021-08-02 1034
763245c0c72ba5 David Howells 2021-08-02 1035 /* TODO: Flush more pieces */
763245c0c72ba5 David Howells 2021-08-02 1036
763245c0c72ba5 David Howells 2021-08-02 1037 out_unlocked:
763245c0c72ba5 David Howells 2021-08-02 1038 netfs_free_dirty_region(ctx, spares[0]);
763245c0c72ba5 David Howells 2021-08-02 1039 netfs_free_dirty_region(ctx, spares[1]);
763245c0c72ba5 David Howells 2021-08-02 1040 netfs_put_write_request(wreq, false, netfs_wreq_trace_put_discard);
763245c0c72ba5 David Howells 2021-08-02 1041 return ret;
763245c0c72ba5 David Howells 2021-08-02 1042
763245c0c72ba5 David Howells 2021-08-02 1043 wait_for_active_region:
763245c0c72ba5 David Howells 2021-08-02 1044 if (!may_wait)
763245c0c72ba5 David Howells 2021-08-02 1045 return -EBUSY;
763245c0c72ba5 David Howells 2021-08-02 1046
763245c0c72ba5 David Howells 2021-08-02 1047 if (!spares[0] || !spares[1])
763245c0c72ba5 David Howells 2021-08-02 1048 return -ENOBUFS;
763245c0c72ba5 David Howells 2021-08-02 1049
763245c0c72ba5 David Howells 2021-08-02 1050 netfs_get_dirty_region(ctx, r, netfs_region_trace_get_wait_active);
763245c0c72ba5 David Howells 2021-08-02 1051 spin_unlock(&ctx->lock);
763245c0c72ba5 David Howells 2021-08-02 1052
763245c0c72ba5 David Howells 2021-08-02 1053 wait_var_event(&r->state, (READ_ONCE(r->state) != NETFS_REGION_IS_ACTIVE ||
763245c0c72ba5 David Howells 2021-08-02 1054 READ_ONCE(r->dirty.end) != wait_to));
763245c0c72ba5 David Howells 2021-08-02 1055 netfs_put_dirty_region(ctx, r, netfs_region_trace_put_wait_active);
1e4f2a70cbedd7 David Howells 2021-07-29 1056 need_spares:
1e4f2a70cbedd7 David Howells 2021-07-29 1057 ret = -ENOMEM;
763245c0c72ba5 David Howells 2021-08-02 1058 if (!spares[0]) {
1e4f2a70cbedd7 David Howells 2021-07-29 1059 spares[0] = netfs_alloc_dirty_region();
1e4f2a70cbedd7 David Howells 2021-07-29 1060 if (!spares[0])
1e4f2a70cbedd7 David Howells 2021-07-29 1061 goto out_unlocked;
763245c0c72ba5 David Howells 2021-08-02 1062 }
763245c0c72ba5 David Howells 2021-08-02 1063 if (!spares[1]) {
1e4f2a70cbedd7 David Howells 2021-07-29 1064 spares[1] = netfs_alloc_dirty_region();
1e4f2a70cbedd7 David Howells 2021-07-29 1065 if (!spares[1])
1e4f2a70cbedd7 David Howells 2021-07-29 1066 goto out_unlocked;
763245c0c72ba5 David Howells 2021-08-02 1067 }
1e4f2a70cbedd7 David Howells 2021-07-29 1068 goto retry;
763245c0c72ba5 David Howells 2021-08-02 1069
763245c0c72ba5 David Howells 2021-08-02 1070 group_empty:
1e4f2a70cbedd7 David Howells 2021-07-29 @1071 }
1e4f2a70cbedd7 David Howells 2021-07-29 1072
:::::: The code at line 1071 was first introduced by commit
:::::: 1e4f2a70cbedd75d80440425727faa78e2dccb93 netfs: Cut out region to be written from dirty regions
:::::: TO: David Howells <dhowells(a)redhat.com>
:::::: CC: David Howells <dhowells(a)redhat.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[dhowells-fs:netfs-folio-regions 18/28] fs/netfs/write_prep.c:78:10: warning: comparison of distinct pointer types ('typeof (len) *' (aka 'unsigned int *') and 'typeof ((1UL << 18) - offset) *' (aka 'unsigned long *'))
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git netfs-folio-regions
head: 215a4ee495a95cc73256ed76f91cb78bcabd6b8e
commit: 0c1c1796fd33fded73a9a4305a9e43e8922746ee [18/28] netfs: Do encryption in write preparatory phase
config: hexagon-randconfig-r041-20210818 (attached as .config)
compiler: clang version 12.0.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/com...
git remote add dhowells-fs https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
git fetch --no-tags dhowells-fs netfs-folio-regions
git checkout 0c1c1796fd33fded73a9a4305a9e43e8922746ee
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=hexagon
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
>> fs/netfs/write_prep.c:78:10: warning: comparison of distinct pointer types ('typeof (len) *' (aka 'unsigned int *') and 'typeof ((1UL << 18) - offset) *' (aka 'unsigned long *')) [-Wcompare-distinct-pointer-types]
seg = min(len, PAGE_SIZE - offset);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:45:19: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:36:24: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^~~~~~~~~~~~~~~~
include/linux/minmax.h:26:4: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^~~~~~~~~~~~~~~~~
include/linux/minmax.h:20:28: note: expanded from macro '__typecheck'
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
1 warning generated.
vim +78 fs/netfs/write_prep.c
46
47 /*
48 * Populate a scatterlist from folios in an xarray.
49 */
50 static int netfs_xarray_to_sglist(struct xarray *xa, loff_t pos, size_t len,
51 struct scatterlist *sg, unsigned int n_sg)
52 {
53 struct scatterlist *p = sg;
54 struct folio *folio = NULL;
55 size_t seg, offset, skip = 0;
56 loff_t start = pos;
57 pgoff_t index = start >> PAGE_SHIFT;
58 int j;
59
60 XA_STATE(xas, xa, index);
61
62 sg_init_table(sg, n_sg);
63
64 rcu_read_lock();
65
66 xas_for_each(&xas, folio, ULONG_MAX) {
67 kdebug("LOAD %lx %px", folio->index, folio);
68 if (xas_retry(&xas, folio))
69 continue;
70 if (WARN_ON(xa_is_value(folio)) || WARN_ON(folio_test_hugetlb(folio)))
71 break;
72 for (j = (folio_index(folio) < index) ? index - folio_index(folio) : 0;
73 j < folio_nr_pages(folio); j++
74 ) {
75 struct page *subpage = folio_file_page(folio, j);
76
77 offset = (pos + skip) & ~PAGE_MASK;
> 78 seg = min(len, PAGE_SIZE - offset);
79
80 kdebug("[%zx] %lx %zx @%zx", p - sg, subpage->index, seg, offset);
81 sg_set_page(p++, subpage, seg, offset);
82
83 len -= seg;
84 skip += seg;
85 if (len == 0)
86 break;
87 }
88 if (len == 0)
89 break;
90 }
91
92 rcu_read_unlock();
93 if (len > 0) {
94 WARN_ON(len > 0);
95 return -EIO;
96 }
97
98 sg_mark_end(p - 1);
99 kleave(" = %zd", p - sg);
100 return p - sg;
101 }
102
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[dhowells-fs:netfs-folio-regions 16/28] fs/netfs/objects.c:125:17: error: implicit declaration of function 'netfs_is_cache_enabled'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git netfs-folio-regions
head: 215a4ee495a95cc73256ed76f91cb78bcabd6b8e
commit: f3e6e00066254822783e68e4c3bf9f8904f6ab6a [16/28] netfs: Send write request to multiple destinations
config: hexagon-randconfig-r041-20210818 (attached as .config)
compiler: clang version 12.0.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/com...
git remote add dhowells-fs https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
git fetch --no-tags dhowells-fs netfs-folio-regions
git checkout f3e6e00066254822783e68e4c3bf9f8904f6ab6a
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=hexagon
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
>> fs/netfs/objects.c:125:17: error: implicit declaration of function 'netfs_is_cache_enabled' [-Werror,-Wimplicit-function-declaration]
if (!is_dio && netfs_is_cache_enabled(ctx)) {
^
1 error generated.
vim +/netfs_is_cache_enabled +125 fs/netfs/objects.c
114
115 struct netfs_write_request *netfs_alloc_write_request(struct address_space *mapping,
116 bool is_dio)
117 {
118 static atomic_t debug_ids;
119 struct inode *inode = mapping->host;
120 struct netfs_i_context *ctx = netfs_i_context(inode);
121 struct netfs_write_request *wreq;
122 unsigned int n_streams = ctx->n_wstreams, i;
123 bool cached = false;
124
> 125 if (!is_dio && netfs_is_cache_enabled(ctx)) {
126 n_streams++;
127 cached = true;
128 }
129
130 wreq = kzalloc(struct_size(wreq, streams, n_streams), GFP_KERNEL);
131 if (wreq) {
132 wreq->mapping = mapping;
133 wreq->inode = inode;
134 wreq->netfs_ops = ctx->ops;
135 wreq->max_streams = n_streams;
136 wreq->debug_id = atomic_inc_return(&debug_ids);
137 if (cached)
138 __set_bit(NETFS_WREQ_WRITE_TO_CACHE, &wreq->flags);
139 xa_init(&wreq->buffer);
140 INIT_WORK(&wreq->work, netfs_writeback_worker);
141 for (i = 0; i < n_streams; i++)
142 INIT_LIST_HEAD(&wreq->streams[i].subrequests);
143 refcount_set(&wreq->usage, 1);
144 atomic_set(&wreq->outstanding, 1);
145 ctx->ops->init_wreq(wreq);
146 netfs_stat(&netfs_n_wh_wreq);
147 trace_netfs_ref_wreq(wreq->debug_id, 1, netfs_wreq_trace_new);
148 }
149
150 return wreq;
151 }
152
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
Re: [PATCH 4/7] loop: devirtualize transfer transformations
by kernel test robot
Hi Christoph,
I love your patch! Perhaps something to improve:
[auto build test WARNING on block/for-next]
[also build test WARNING on v5.14-rc6 next-20210819]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Christoph-Hellwig/loop-remove-th...
base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
config: x86_64-rhel-8.3-kselftests (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-348-gf0e6938b-dirty
# https://github.com/0day-ci/linux/commit/4bc5016d77d7be3372940a65169beaec5...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Christoph-Hellwig/loop-remove-the-ioctl-method-in-loop_func_table/20210818-152618
git checkout 4bc5016d77d7be3372940a65169beaec5ed6aaf4
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/block/loop.c:273:23: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int @@ got restricted __le32 [usertype] @@
drivers/block/loop.c:273:23: sparse: expected unsigned int
drivers/block/loop.c:273:23: sparse: got restricted __le32 [usertype]
vim +273 drivers/block/loop.c
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 234
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 235 static int cryptoloop_transfer(struct loop_device *lo, int cmd,
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 236 struct page *raw_page, unsigned raw_off, struct page *loop_page,
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 237 unsigned loop_off, int size, sector_t IV)
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 238 {
4bc5016d77d7be Christoph Hellwig 2021-08-18 239 struct crypto_sync_skcipher *tfm = lo->lo_encrypt_tfm;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 240 SYNC_SKCIPHER_REQUEST_ON_STACK(req, tfm);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 241 struct scatterlist sg_out;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 242 struct scatterlist sg_in;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 243
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 244 encdec_cbc_t encdecfunc;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 245 struct page *in_page, *out_page;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 246 unsigned in_offs, out_offs;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 247 int err;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 248
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 249 skcipher_request_set_sync_tfm(req, tfm);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 250 skcipher_request_set_callback(req, CRYPTO_TFM_REQ_MAY_SLEEP,
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 251 NULL, NULL);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 252
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 253 sg_init_table(&sg_out, 1);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 254 sg_init_table(&sg_in, 1);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 255
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 256 if (cmd == READ) {
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 257 in_page = raw_page;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 258 in_offs = raw_off;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 259 out_page = loop_page;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 260 out_offs = loop_off;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 261 encdecfunc = crypto_skcipher_decrypt;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 262 } else {
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 263 in_page = loop_page;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 264 in_offs = loop_off;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 265 out_page = raw_page;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 266 out_offs = raw_off;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 267 encdecfunc = crypto_skcipher_encrypt;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 268 }
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 269
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 270 while (size > 0) {
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 271 const int sz = min(size, LOOP_IV_SECTOR_SIZE);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 272 u32 iv[4] = { 0, };
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 @273 iv[0] = cpu_to_le32(IV & 0xffffffff);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 274
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 275 sg_set_page(&sg_in, in_page, sz, in_offs);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 276 sg_set_page(&sg_out, out_page, sz, out_offs);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 277
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 278 skcipher_request_set_crypt(req, &sg_in, &sg_out, sz, iv);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 279 err = encdecfunc(req);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 280 if (err)
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 281 goto out;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 282
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 283 IV++;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 284 size -= sz;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 285 in_offs += sz;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 286 out_offs += sz;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 287 }
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 288
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 289 err = 0;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 290 out:
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 291 skcipher_request_zero(req);
4bc5016d77d7be Christoph Hellwig 2021-08-18 292 pr_err_ratelimited("loop: Transfer error at byte offset %llu, length %i.\n",
4bc5016d77d7be Christoph Hellwig 2021-08-18 293 IV << 9, size);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 294 return err;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 295 }
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 296
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month