[linux-next:master 10249/10701] drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dspp.c:25:6: warning: no previous prototype for 'dpu_setup_dspp_pcc'
by kbuild test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: fb57b1fabcb28f358901b2df90abd2b48abc1ca8
commit: 4259ff7ae509ed880b3a7bb685972c3a3bf4b74b [10249/10701] drm/msm/dpu: add support for pcc color block in dpu driver
config: arm-randconfig-r013-20200519 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 4259ff7ae509ed880b3a7bb685972c3a3bf4b74b
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
>> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dspp.c:25:6: warning: no previous prototype for 'dpu_setup_dspp_pcc' [-Wmissing-prototypes]
25 | void dpu_setup_dspp_pcc(struct dpu_hw_dspp *ctx,
| ^~~~~~~~~~~~~~~~~~
vim +/dpu_setup_dspp_pcc +25 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dspp.c
24
> 25 void dpu_setup_dspp_pcc(struct dpu_hw_dspp *ctx,
26 struct dpu_hw_pcc_cfg *cfg)
27 {
28
29 u32 base = ctx->cap->sblk->pcc.base;
30
31 if (!ctx || !base) {
32 DRM_ERROR("invalid ctx %pK pcc base 0x%x\n", ctx, base);
33 return;
34 }
35
36 if (!cfg) {
37 DRM_DEBUG_DRIVER("disable pcc feature\n");
38 DPU_REG_WRITE(&ctx->hw, base, PCC_DIS);
39 return;
40 }
41
42 DPU_REG_WRITE(&ctx->hw, base + PCC_RED_R_OFF, cfg->r.r);
43 DPU_REG_WRITE(&ctx->hw, base + PCC_RED_G_OFF, cfg->r.g);
44 DPU_REG_WRITE(&ctx->hw, base + PCC_RED_B_OFF, cfg->r.b);
45
46 DPU_REG_WRITE(&ctx->hw, base + PCC_GREEN_R_OFF, cfg->g.r);
47 DPU_REG_WRITE(&ctx->hw, base + PCC_GREEN_G_OFF, cfg->g.g);
48 DPU_REG_WRITE(&ctx->hw, base + PCC_GREEN_B_OFF, cfg->g.b);
49
50 DPU_REG_WRITE(&ctx->hw, base + PCC_BLUE_R_OFF, cfg->b.r);
51 DPU_REG_WRITE(&ctx->hw, base + PCC_BLUE_G_OFF, cfg->b.g);
52 DPU_REG_WRITE(&ctx->hw, base + PCC_BLUE_B_OFF, cfg->b.b);
53
54 DPU_REG_WRITE(&ctx->hw, base, PCC_EN);
55 }
56
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 4 months
[linux-next:master 3391/10701] drivers/firmware/efi/libstub/efi-stub.c:148:14: warning: no previous prototype for function 'efi_entry'
by kbuild test robot
Hi Atish,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: fb57b1fabcb28f358901b2df90abd2b48abc1ca8
commit: 2e0eb483c058dd013be8e3d0ec1767be531485a2 [3391/10701] efi/libstub: Move arm-stub to a common file
config: arm64-randconfig-r026-20200519 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 135b877874fae96b4372c8a3fbfaa8ff44ff86e3)
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
git checkout 2e0eb483c058dd013be8e3d0ec1767be531485a2
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/firmware/efi/libstub/efi-stub.c:68:6: warning: no previous prototype for function 'install_memreserve_table' [-Wmissing-prototypes]
void install_memreserve_table(void)
^
drivers/firmware/efi/libstub/efi-stub.c:68:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void install_memreserve_table(void)
^
static
>> drivers/firmware/efi/libstub/efi-stub.c:148:14: warning: no previous prototype for function 'efi_entry' [-Wmissing-prototypes]
efi_status_t efi_entry(efi_handle_t handle, efi_system_table_t *sys_table_arg)
^
drivers/firmware/efi/libstub/efi-stub.c:148:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
efi_status_t efi_entry(efi_handle_t handle, efi_system_table_t *sys_table_arg)
^
static
2 warnings generated.
vim +/efi_entry +148 drivers/firmware/efi/libstub/efi-stub.c
b844470f22061e drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2018-09-21 124
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 125 /*
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 126 * This function handles the architcture specific differences between arm and
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 127 * arm64 regarding where the kernel image must be loaded and any memory that
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 128 * must be reserved. On failure it is required to free all
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 129 * all allocations it has made.
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 130 */
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 131 efi_status_t handle_kernel_image(unsigned long *image_addr,
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 132 unsigned long *image_size,
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 133 unsigned long *reserve_addr,
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 134 unsigned long *reserve_size,
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 135 unsigned long dram_base,
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 136 efi_loaded_image_t *image);
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 137
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 138 asmlinkage void __noreturn efi_enter_kernel(unsigned long entrypoint,
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 139 unsigned long fdt_addr,
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 140 unsigned long fdt_size);
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 141
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 142 /*
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 143 * EFI entry point for the arm/arm64 EFI stubs. This is the entrypoint
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 144 * that is described in the PE/COFF header. Most of the code is the same
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 145 * for both archictectures, with the arch-specific code provided in the
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 146 * handle_kernel_image() function.
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 147 */
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 @148 efi_status_t efi_entry(efi_handle_t handle, efi_system_table_t *sys_table_arg)
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 149 {
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 150 efi_loaded_image_t *image;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 151 efi_status_t status;
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 152 unsigned long image_addr;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 153 unsigned long image_size = 0;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 154 unsigned long dram_base;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 155 /* addr/point and size pairs for memory management*/
79d3219d4e56b3 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-04 156 unsigned long initrd_addr = 0;
9302c1bb8e4758 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 157 unsigned long initrd_size = 0;
345c736edd07b6 drivers/firmware/efi/arm-stub.c Ard Biesheuvel 2014-04-03 158 unsigned long fdt_addr = 0; /* Original DTB */
a643375f4b1755 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2015-03-04 159 unsigned long fdt_size = 0;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 160 char *cmdline_ptr = NULL;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 161 int cmdline_size = 0;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 162 efi_guid_t loaded_image_proto = LOADED_IMAGE_PROTOCOL_GUID;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 163 unsigned long reserve_addr = 0;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 164 unsigned long reserve_size = 0;
de8cb458625c16 drivers/firmware/efi/libstub/arm-stub.c David Howells 2017-02-06 165 enum efi_secureboot_mode secure_boot;
f0827e18a7a1da drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-04-25 166 struct screen_info *si;
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 167 efi_properties_table_t *prop_tbl;
ec93fc371f014a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-03 168 unsigned long max_addr;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 169
2fcdad2a80a6d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 170 sys_table = sys_table_arg;
2fcdad2a80a6d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 171
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 172 /* Check if we were booted by the EFI firmware */
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 173 if (sys_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) {
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 174 status = EFI_INVALID_PARAMETER;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 175 goto fail;
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 176 }
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 177
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 178 status = check_platform_features();
b9d6769b5678db drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-02-17 179 if (status != EFI_SUCCESS)
b9d6769b5678db drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-02-17 180 goto fail;
b9d6769b5678db drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-02-17 181
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 182 /*
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 183 * Get a handle to the loaded image protocol. This is used to get
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 184 * information about the running image, such as size and the command
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 185 * line.
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 186 */
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 187 status = sys_table->boottime->handle_protocol(handle,
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 188 &loaded_image_proto, (void *)&image);
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 189 if (status != EFI_SUCCESS) {
8173ec7905b5b0 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 190 pr_efi_err("Failed to get loaded image protocol\n");
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 191 goto fail;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 192 }
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 193
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 194 dram_base = get_dram_base();
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 195 if (dram_base == EFI_ERROR) {
8173ec7905b5b0 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 196 pr_efi_err("Failed to find DRAM base\n");
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 197 status = EFI_LOAD_ERROR;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 198 goto fail;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 199 }
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 200
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 201 /*
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 202 * Get the command line from EFI, using the LOADED_IMAGE
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 203 * protocol. We are going to copy the command line into the
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 204 * device tree, so this can be allocated anywhere.
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 205 */
1e45bf7372c48c drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 206 cmdline_ptr = efi_convert_cmdline(image, &cmdline_size, ULONG_MAX);
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 207 if (!cmdline_ptr) {
8173ec7905b5b0 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 208 pr_efi_err("getting command line via LOADED_IMAGE_PROTOCOL\n");
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 209 status = EFI_OUT_OF_RESOURCES;
2b5fe07a78a09a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-01-26 210 goto fail;
2b5fe07a78a09a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-01-26 211 }
2b5fe07a78a09a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-01-26 212
eeff7d634f4750 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 213 if (IS_ENABLED(CONFIG_CMDLINE_EXTEND) ||
eeff7d634f4750 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 214 IS_ENABLED(CONFIG_CMDLINE_FORCE) ||
eeff7d634f4750 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 215 cmdline_size == 0)
eeff7d634f4750 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 216 efi_parse_options(CONFIG_CMDLINE);
eeff7d634f4750 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 217
eeff7d634f4750 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 218 if (!IS_ENABLED(CONFIG_CMDLINE_FORCE) && cmdline_size > 0)
eeff7d634f4750 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 219 efi_parse_options(cmdline_ptr);
eeff7d634f4750 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 220
8173ec7905b5b0 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 221 pr_efi("Booting Linux Kernel...\n");
eeff7d634f4750 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 222
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 223 si = setup_graphics();
f0827e18a7a1da drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-04-25 224
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 225 status = handle_kernel_image(&image_addr, &image_size,
2b5fe07a78a09a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-01-26 226 &reserve_addr,
2b5fe07a78a09a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-01-26 227 &reserve_size,
2b5fe07a78a09a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-01-26 228 dram_base, image);
2b5fe07a78a09a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-01-26 229 if (status != EFI_SUCCESS) {
8173ec7905b5b0 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 230 pr_efi_err("Failed to relocate kernel\n");
2b5fe07a78a09a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-01-26 231 goto fail_free_cmdline;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 232 }
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 233
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 234 efi_retrieve_tpm2_eventlog();
d99c1ba6a73b9e drivers/firmware/efi/libstub/arm-stub.c Xinwei Kong 2019-11-07 235
ccc829ba3624be drivers/firmware/efi/libstub/arm-stub.c Matthew Garrett 2017-08-25 236 /* Ask the firmware to clear memory on unclean shutdown */
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 237 efi_enable_reset_attack_mitigation();
ccc829ba3624be drivers/firmware/efi/libstub/arm-stub.c Matthew Garrett 2017-08-25 238
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 239 secure_boot = efi_get_secureboot();
73a6492589c87c drivers/firmware/efi/libstub/arm-stub.c Linn Crosetto 2016-04-25 240
345c736edd07b6 drivers/firmware/efi/arm-stub.c Ard Biesheuvel 2014-04-03 241 /*
de8cb458625c16 drivers/firmware/efi/libstub/arm-stub.c David Howells 2017-02-06 242 * Unauthenticated device tree data is a security hazard, so ignore
de8cb458625c16 drivers/firmware/efi/libstub/arm-stub.c David Howells 2017-02-06 243 * 'dtb=' unless UEFI Secure Boot is disabled. We assume that secure
de8cb458625c16 drivers/firmware/efi/libstub/arm-stub.c David Howells 2017-02-06 244 * boot is enabled if we can't determine its state.
345c736edd07b6 drivers/firmware/efi/arm-stub.c Ard Biesheuvel 2014-04-03 245 */
3d7ee348aa4127 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2018-07-11 246 if (!IS_ENABLED(CONFIG_EFI_ARMSTUB_DTB_LOADER) ||
3d7ee348aa4127 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2018-07-11 247 secure_boot != efi_secureboot_mode_disabled) {
3d7ee348aa4127 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2018-07-11 248 if (strstr(cmdline_ptr, "dtb="))
8173ec7905b5b0 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 249 pr_efi("Ignoring DTB from command line.\n");
345c736edd07b6 drivers/firmware/efi/arm-stub.c Ard Biesheuvel 2014-04-03 250 } else {
9302c1bb8e4758 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 251 status = efi_load_dtb(image, &fdt_addr, &fdt_size);
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 252
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 253 if (status != EFI_SUCCESS) {
8173ec7905b5b0 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 254 pr_efi_err("Failed to load device tree!\n");
2b5fe07a78a09a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-01-26 255 goto fail_free_image;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 256 }
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 257 }
0bcaa9040d0586 drivers/firmware/efi/libstub/arm-stub.c Mark Rutland 2014-10-23 258
0bcaa9040d0586 drivers/firmware/efi/libstub/arm-stub.c Mark Rutland 2014-10-23 259 if (fdt_addr) {
8173ec7905b5b0 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 260 pr_efi("Using DTB from command line\n");
0bcaa9040d0586 drivers/firmware/efi/libstub/arm-stub.c Mark Rutland 2014-10-23 261 } else {
345c736edd07b6 drivers/firmware/efi/arm-stub.c Ard Biesheuvel 2014-04-03 262 /* Look for a device tree configuration table entry. */
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 263 fdt_addr = (uintptr_t)get_fdt(&fdt_size);
0bcaa9040d0586 drivers/firmware/efi/libstub/arm-stub.c Mark Rutland 2014-10-23 264 if (fdt_addr)
8173ec7905b5b0 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 265 pr_efi("Using DTB from configuration table\n");
0bcaa9040d0586 drivers/firmware/efi/libstub/arm-stub.c Mark Rutland 2014-10-23 266 }
0bcaa9040d0586 drivers/firmware/efi/libstub/arm-stub.c Mark Rutland 2014-10-23 267
0bcaa9040d0586 drivers/firmware/efi/libstub/arm-stub.c Mark Rutland 2014-10-23 268 if (!fdt_addr)
8173ec7905b5b0 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 269 pr_efi("Generating empty DTB\n");
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 270
79d3219d4e56b3 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-04 271 if (!noinitrd()) {
ec93fc371f014a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-03 272 max_addr = efi_get_max_initrd_addr(dram_base, image_addr);
79d3219d4e56b3 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-04 273 status = efi_load_initrd_dev_path(&initrd_addr, &initrd_size,
79d3219d4e56b3 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-04 274 max_addr);
ec93fc371f014a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-03 275 if (status == EFI_SUCCESS) {
ec93fc371f014a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-03 276 pr_efi("Loaded initrd from LINUX_EFI_INITRD_MEDIA_GUID device path\n");
ec93fc371f014a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-03 277 } else if (status == EFI_NOT_FOUND) {
ec93fc371f014a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-03 278 status = efi_load_initrd(image, &initrd_addr, &initrd_size,
ec93fc371f014a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-03 279 ULONG_MAX, max_addr);
594e576d4b93b8 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-03-29 280 if (status == EFI_SUCCESS && initrd_size > 0)
ec93fc371f014a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-03 281 pr_efi("Loaded initrd from command line option\n");
ec93fc371f014a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-03 282 }
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 283 if (status != EFI_SUCCESS)
ec93fc371f014a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-03 284 pr_efi_err("Failed to load initrd!\n");
79d3219d4e56b3 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-04 285 }
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 286
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 287 efi_random_get_seed();
568bc4e87033d2 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-11-12 288
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 289 /*
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 290 * If the NX PE data feature is enabled in the properties table, we
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 291 * should take care not to create a virtual mapping that changes the
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 292 * relative placement of runtime services code and data regions, as
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 293 * they may belong to the same PE/COFF executable image in memory.
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 294 * The easiest way to achieve that is to simply use a 1:1 mapping.
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 295 */
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 296 prop_tbl = get_efi_config_table(EFI_PROPERTIES_TABLE_GUID);
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 297 flat_va_mapping = prop_tbl &&
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 298 (prop_tbl->memory_protection_attribute &
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 299 EFI_PROPERTIES_RUNTIME_MEMORY_PROTECTION_NON_EXECUTABLE_PE_DATA);
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 300
38fb6652229c21 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-10-25 301 /* hibernation expects the runtime regions to stay in the same place */
b92165d2ba869a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-10 302 if (!IS_ENABLED(CONFIG_HIBERNATION) && !nokaslr() && !flat_va_mapping) {
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 303 /*
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 304 * Randomize the base of the UEFI runtime services region.
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 305 * Preserve the 2 MB alignment of the region by taking a
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 306 * shift of 21 bit positions into account when scaling
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 307 * the headroom value using a 32-bit random value.
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 308 */
197decefdb79d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-17 309 static const u64 headroom = EFI_RT_VIRTUAL_LIMIT -
197decefdb79d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-17 310 EFI_RT_VIRTUAL_BASE -
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 311 EFI_RT_VIRTUAL_SIZE;
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 312 u32 rnd;
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 313
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 314 status = efi_get_random_bytes(sizeof(rnd), (u8 *)&rnd);
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 315 if (status == EFI_SUCCESS) {
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 316 virtmap_base = EFI_RT_VIRTUAL_BASE +
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 317 (((headroom >> 21) * rnd) >> (32 - 21));
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 318 }
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 319 }
e69176d68d26d6 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2017-04-04 320
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 321 install_memreserve_table();
b844470f22061e drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2018-09-21 322
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 323 status = allocate_new_fdt_and_exit_boot(handle, &fdt_addr,
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 324 efi_get_max_fdt_addr(dram_base),
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 325 initrd_addr, initrd_size,
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 326 cmdline_ptr, fdt_addr, fdt_size);
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 327 if (status != EFI_SUCCESS)
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 328 goto fail_free_initrd;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 329
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 330 efi_enter_kernel(image_addr, fdt_addr, fdt_totalsize((void *)fdt_addr));
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 331 /* not reached */
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 332
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 333 fail_free_initrd:
8173ec7905b5b0 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 334 pr_efi_err("Failed to update FDT and exit boot services\n");
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 335
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 336 efi_free(initrd_size, initrd_addr);
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 337 efi_free(fdt_size, fdt_addr);
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 338
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 339 fail_free_image:
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 340 efi_free(image_size, image_addr);
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 341 efi_free(reserve_size, reserve_addr);
2b5fe07a78a09a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2016-01-26 342 fail_free_cmdline:
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 343 free_screen_info(si);
cd33a5c1d53e43 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2019-12-24 344 efi_free(cmdline_size, (unsigned long)cmdline_ptr);
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 345 fail:
9f9223778ef385 drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2020-02-17 346 return status;
3c7f255039a2ad drivers/firmware/efi/arm-stub.c Mark Salter 2014-04-15 347 }
f3cdfd239da56a drivers/firmware/efi/libstub/arm-stub.c Ard Biesheuvel 2014-10-20 348
:::::: The code at line 148 was first introduced by commit
:::::: 9f9223778ef385e79dc67f5ee48ee4c1fb757f6b efi/libstub/arm: Make efi_entry() an ordinary PE/COFF entrypoint
:::::: TO: Ard Biesheuvel <ardb(a)kernel.org>
:::::: CC: Ard Biesheuvel <ardb(a)kernel.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 4 months
Re: [RFC PATCH 2/4] gpu: dxgkrnl: hook up dxgkrnl
by kbuild test robot
Hi Sasha,
[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on linus/master]
[also build test WARNING on v5.7-rc6 next-20200519]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Sasha-Levin/DirectX-on-Linux/202...
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 642b151f45dd54809ea00ecd3976a56c1ec9b53d
config: i386-allyesconfig (attached as .config)
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-193-gb8fad4bc-dirty
# save the attached .config to linux build tree
make C=1 ARCH=i386 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
drivers/gpu/dxgkrnl/dxgvmbus.c:1709:51: sparse: got unsigned long long [usertype] *fence_values
drivers/gpu/dxgkrnl/dxgvmbus.c:1805:65: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got sn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:1805:65: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:1805:65: sparse: got void **
drivers/gpu/dxgkrnl/dxgvmbus.c:1863:41: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:1863:41: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:1863:41: sparse: got unsigned long long *
drivers/gpu/dxgkrnl/dxgvmbus.c:1933:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got uvoid const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:1933:51: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:1933:51: sparse: got unsigned int const [usertype] *allocation_list
drivers/gpu/dxgkrnl/dxgvmbus.c:1938:38: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got uvoid const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:1938:38: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:1938:38: sparse: got unsigned int const [usertype] *priorities
drivers/gpu/dxgkrnl/dxgvmbus.c:2000:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got uvoid const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2000:51: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2000:51: sparse: got unsigned int const [usertype] *allocation_list
drivers/gpu/dxgkrnl/dxgvmbus.c:2016:69: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2016:69: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2016:69: sparse: got unsigned char [usertype] *
drivers/gpu/dxgkrnl/dxgvmbus.c:2097:68: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2097:68: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2097:68: sparse: got unsigned int [usertype] *resources
drivers/gpu/dxgkrnl/dxgvmbus.c:2101:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got uvoid const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2101:46: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2101:46: sparse: got unsigned int const [usertype] *allocations
drivers/gpu/dxgkrnl/dxgvmbus.c:2144:68: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2144:68: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2144:68: sparse: got unsigned int [usertype] *resources
drivers/gpu/dxgkrnl/dxgvmbus.c:2148:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2148:46: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2148:46: sparse: got unsigned int [usertype] *allocations
drivers/gpu/dxgkrnl/dxgvmbus.c:2167:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2167:33: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2167:33: sparse: got unsigned long long *
drivers/gpu/dxgkrnl/dxgvmbus.c:2173:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got unsigned invoid const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2173:55: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2173:55: sparse: got unsigned int enum d3dddi_reclaim_result *
drivers/gpu/dxgkrnl/dxgvmbus.c:2250:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got n:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2250:46: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2250:46: sparse: got void *priv_drv_data
drivers/gpu/dxgkrnl/dxgvmbus.c:2283:49: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got ref] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2283:49: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2283:49: sparse: got unsigned int *
drivers/gpu/dxgkrnl/dxgvmbus.c:2286:34: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got ref] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2286:34: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2286:34: sparse: got unsigned int *
drivers/gpu/dxgkrnl/dxgvmbus.c:2290:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got sn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2290:31: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2290:31: sparse: got void **
drivers/gpu/dxgkrnl/dxgvmbus.c:2294:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2294:31: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2294:31: sparse: got unsigned long long *
drivers/gpu/dxgkrnl/dxgvmbus.c:2298:41: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got eref] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2298:41: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2298:41: sparse: got unsigned char *
drivers/gpu/dxgkrnl/dxgvmbus.c:2352:38: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got n:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2352:38: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2352:38: sparse: got void *private_data
drivers/gpu/dxgkrnl/dxgvmbus.c:2384:52: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got eref] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2384:52: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2384:52: sparse: got unsigned char *
drivers/gpu/dxgkrnl/dxgvmbus.c:2411:59: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2411:59: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2411:59: sparse: got unsigned int [usertype] *written_primaries
drivers/gpu/dxgkrnl/dxgvmbus.c:2418:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got n:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2418:46: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2418:46: sparse: got void *priv_drv_data
drivers/gpu/dxgkrnl/dxgvmbus.c:2458:54: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2458:54: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2458:54: sparse: got struct dxgk_gpuclockdata *
drivers/gpu/dxgkrnl/dxgvmbus.c:2523:59: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2523:59: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2523:59: sparse: got unsigned int [usertype] *allocations
drivers/gpu/dxgkrnl/dxgvmbus.c:2543:63: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got struct dxgkvmb_command_quevoid const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2543:63: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2543:63: sparse: got struct dxgkvmb_command_queryallocationresidency_return *
drivers/gpu/dxgkrnl/dxgvmbus.c:2587:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got n:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2587:46: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2587:46: sparse: got void *priv_drv_data
drivers/gpu/dxgkrnl/dxgvmbus.c:2600:40: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got eref] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2600:40: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2600:40: sparse: got unsigned char *
drivers/gpu/dxgkrnl/dxgvmbus.c:2632:50: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2632:50: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2632:50: sparse: got unsigned long long *
drivers/gpu/dxgkrnl/dxgvmbus.c:2636:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2636:57: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2636:57: sparse: got unsigned long long *
drivers/gpu/dxgkrnl/dxgvmbus.c:2641:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2641:33: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2641:33: sparse: got unsigned long long *
drivers/gpu/dxgkrnl/dxgvmbus.c:2646:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2646:33: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2646:33: sparse: got unsigned long long *
drivers/gpu/dxgkrnl/dxgvmbus.c:2677:41: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1> *from @@ got void const [noderef] <asn:1> *from @@
drivers/gpu/dxgkrnl/dxgvmbus.c:2677:41: sparse: expected void const [noderef] <asn:1> *from
drivers/gpu/dxgkrnl/dxgvmbus.c:2677:41: sparse: got struct d3dkmt_getdevicestate *
drivers/gpu/dxgkrnl/dxgvmbus.c:962:41: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:1009:33: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:1180:63: sparse: sparse: dereference of noderef expression
>> drivers/gpu/dxgkrnl/dxgvmbus.c:1632:57: sparse: sparse: non size-preserving pointer to integer cast
drivers/gpu/dxgkrnl/dxgvmbus.c:1805:49: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:1862:41: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:2166:32: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:2283:33: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:2285:34: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:2289:31: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:2293:31: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:2458:33: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:2632:33: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:2636:33: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:2640:33: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:2645:33: sparse: sparse: dereference of noderef expression
drivers/gpu/dxgkrnl/dxgvmbus.c:2677:32: sparse: sparse: dereference of noderef expression
vim +1632 drivers/gpu/dxgkrnl/dxgvmbus.c
9cc562c3695b5b Sasha Levin 2020-05-19 1594
9cc562c3695b5b Sasha Levin 2020-05-19 1595 int dxgvmb_send_signal_sync_object(struct dxgprocess *process,
9cc562c3695b5b Sasha Levin 2020-05-19 1596 struct dxgvmbuschannel *channel,
9cc562c3695b5b Sasha Levin 2020-05-19 1597 struct d3dddicb_signalflags flags,
9cc562c3695b5b Sasha Levin 2020-05-19 1598 uint64_t legacy_fence_value,
9cc562c3695b5b Sasha Levin 2020-05-19 1599 d3dkmt_handle context,
9cc562c3695b5b Sasha Levin 2020-05-19 1600 uint object_count,
9cc562c3695b5b Sasha Levin 2020-05-19 1601 d3dkmt_handle __user *objects,
9cc562c3695b5b Sasha Levin 2020-05-19 1602 uint context_count,
9cc562c3695b5b Sasha Levin 2020-05-19 1603 d3dkmt_handle __user *contexts,
9cc562c3695b5b Sasha Levin 2020-05-19 1604 uint fence_count,
9cc562c3695b5b Sasha Levin 2020-05-19 1605 uint64_t __user *fences,
9cc562c3695b5b Sasha Levin 2020-05-19 1606 struct eventfd_ctx *cpu_event_handle,
9cc562c3695b5b Sasha Levin 2020-05-19 1607 d3dkmt_handle device)
9cc562c3695b5b Sasha Levin 2020-05-19 1608 {
9cc562c3695b5b Sasha Levin 2020-05-19 1609 int ret = 0;
9cc562c3695b5b Sasha Levin 2020-05-19 1610 struct dxgkvmb_command_signalsyncobject *command = NULL;
9cc562c3695b5b Sasha Levin 2020-05-19 1611 uint object_size = object_count * sizeof(d3dkmt_handle);
9cc562c3695b5b Sasha Levin 2020-05-19 1612 uint context_size = context_count * sizeof(d3dkmt_handle);
9cc562c3695b5b Sasha Levin 2020-05-19 1613 uint fence_size = fences ? fence_count * sizeof(uint64_t) : 0;
9cc562c3695b5b Sasha Levin 2020-05-19 1614 uint8_t *current_pos;
9cc562c3695b5b Sasha Levin 2020-05-19 1615 uint cmd_size = sizeof(struct dxgkvmb_command_signalsyncobject) +
9cc562c3695b5b Sasha Levin 2020-05-19 1616 object_size + context_size + fence_size;
9cc562c3695b5b Sasha Levin 2020-05-19 1617
9cc562c3695b5b Sasha Levin 2020-05-19 1618 if (context)
9cc562c3695b5b Sasha Levin 2020-05-19 1619 cmd_size += sizeof(d3dkmt_handle);
9cc562c3695b5b Sasha Levin 2020-05-19 1620
9cc562c3695b5b Sasha Levin 2020-05-19 1621 command = dxgmem_alloc(process, DXGMEM_VMBUS, cmd_size);
9cc562c3695b5b Sasha Levin 2020-05-19 1622 if (command == NULL) {
9cc562c3695b5b Sasha Levin 2020-05-19 1623 ret = STATUS_NO_MEMORY;
9cc562c3695b5b Sasha Levin 2020-05-19 1624 goto cleanup;
9cc562c3695b5b Sasha Levin 2020-05-19 1625 }
9cc562c3695b5b Sasha Levin 2020-05-19 1626
9cc562c3695b5b Sasha Levin 2020-05-19 1627 command_vgpu_to_host_init2(&command->hdr,
9cc562c3695b5b Sasha Levin 2020-05-19 1628 DXGK_VMBCOMMAND_SIGNALSYNCOBJECT,
9cc562c3695b5b Sasha Levin 2020-05-19 1629 process->host_handle);
9cc562c3695b5b Sasha Levin 2020-05-19 1630
9cc562c3695b5b Sasha Levin 2020-05-19 1631 if (flags.enqueue_cpu_event)
9cc562c3695b5b Sasha Levin 2020-05-19 @1632 command->cpu_event_handle = (winhandle) cpu_event_handle;
9cc562c3695b5b Sasha Levin 2020-05-19 1633 else
9cc562c3695b5b Sasha Levin 2020-05-19 1634 command->device = device;
9cc562c3695b5b Sasha Levin 2020-05-19 1635 command->flags = flags;
9cc562c3695b5b Sasha Levin 2020-05-19 1636 command->fence_value = legacy_fence_value;
9cc562c3695b5b Sasha Levin 2020-05-19 1637 command->object_count = object_count;
9cc562c3695b5b Sasha Levin 2020-05-19 1638 command->context_count = context_count;
9cc562c3695b5b Sasha Levin 2020-05-19 1639 current_pos = (uint8_t *) &command[1];
9cc562c3695b5b Sasha Levin 2020-05-19 1640 ret = dxg_copy_from_user(current_pos, objects, object_size);
9cc562c3695b5b Sasha Levin 2020-05-19 1641 if (ret) {
9cc562c3695b5b Sasha Levin 2020-05-19 1642 pr_err("Failed to read objects %p %d",
9cc562c3695b5b Sasha Levin 2020-05-19 1643 objects, object_size);
9cc562c3695b5b Sasha Levin 2020-05-19 1644 goto cleanup;
9cc562c3695b5b Sasha Levin 2020-05-19 1645 }
9cc562c3695b5b Sasha Levin 2020-05-19 1646 current_pos += object_size;
9cc562c3695b5b Sasha Levin 2020-05-19 1647 if (context) {
9cc562c3695b5b Sasha Levin 2020-05-19 1648 command->context_count++;
9cc562c3695b5b Sasha Levin 2020-05-19 1649 *(d3dkmt_handle *) current_pos = context;
9cc562c3695b5b Sasha Levin 2020-05-19 1650 current_pos += sizeof(d3dkmt_handle);
9cc562c3695b5b Sasha Levin 2020-05-19 1651 }
9cc562c3695b5b Sasha Levin 2020-05-19 1652 if (context_size) {
9cc562c3695b5b Sasha Levin 2020-05-19 1653 ret = dxg_copy_from_user(current_pos, contexts, context_size);
9cc562c3695b5b Sasha Levin 2020-05-19 1654 if (ret) {
9cc562c3695b5b Sasha Levin 2020-05-19 1655 pr_err("Failed to read contexts %p %d",
9cc562c3695b5b Sasha Levin 2020-05-19 1656 contexts, context_size);
9cc562c3695b5b Sasha Levin 2020-05-19 1657 goto cleanup;
9cc562c3695b5b Sasha Levin 2020-05-19 1658 }
9cc562c3695b5b Sasha Levin 2020-05-19 1659 current_pos += context_size;
9cc562c3695b5b Sasha Levin 2020-05-19 1660 }
9cc562c3695b5b Sasha Levin 2020-05-19 1661 if (fence_size) {
9cc562c3695b5b Sasha Levin 2020-05-19 1662 ret = dxg_copy_from_user(current_pos, fences, fence_size);
9cc562c3695b5b Sasha Levin 2020-05-19 1663 if (ret) {
9cc562c3695b5b Sasha Levin 2020-05-19 1664 pr_err("Failed to read fences %p %d",
9cc562c3695b5b Sasha Levin 2020-05-19 1665 fences, fence_size);
9cc562c3695b5b Sasha Levin 2020-05-19 1666 goto cleanup;
9cc562c3695b5b Sasha Levin 2020-05-19 1667 }
9cc562c3695b5b Sasha Levin 2020-05-19 1668 }
9cc562c3695b5b Sasha Levin 2020-05-19 1669
9cc562c3695b5b Sasha Levin 2020-05-19 1670 ret = dxgvmb_send_sync_msg_ntstatus(channel, command, cmd_size);
9cc562c3695b5b Sasha Levin 2020-05-19 1671
9cc562c3695b5b Sasha Levin 2020-05-19 1672 cleanup:
9cc562c3695b5b Sasha Levin 2020-05-19 1673 if (command)
9cc562c3695b5b Sasha Levin 2020-05-19 1674 dxgmem_free(process, DXGMEM_VMBUS, command);
9cc562c3695b5b Sasha Levin 2020-05-19 1675 TRACE_FUNC_EXIT_ERR(__func__, ret);
9cc562c3695b5b Sasha Levin 2020-05-19 1676 return ret;
9cc562c3695b5b Sasha Levin 2020-05-19 1677 }
9cc562c3695b5b Sasha Levin 2020-05-19 1678
:::::: The code at line 1632 was first introduced by commit
:::::: 9cc562c3695b5b44c0c931c76bdc24e8c4f33587 gpu: dxgkrnl: core code
:::::: TO: Sasha Levin <sashal(a)kernel.org>
:::::: CC: 0day robot <lkp(a)intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 4 months
[linux-next:master 10248/10701] drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c:968:31: warning: variable 'num_dspp' set but not used
by kbuild test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: fb57b1fabcb28f358901b2df90abd2b48abc1ca8
commit: e47616df008b1059c57892fb34883403a6933231 [10248/10701] drm/msm/dpu: add support for color processing blocks in dpu driver
config: arm-randconfig-r013-20200519 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout e47616df008b1059c57892fb34883403a6933231
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c: In function 'dpu_encoder_virt_mode_set':
>> drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c:968:31: warning: variable 'num_dspp' set but not used [-Wunused-but-set-variable]
968 | int num_lm, num_ctl, num_pp, num_dspp;
| ^~~~~~~~
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c:963:30: warning: variable 'topology' set but not used [-Wunused-but-set-variable]
963 | struct msm_display_topology topology;
| ^~~~~~~~
vim +/num_dspp +968 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
950
951 static void dpu_encoder_virt_mode_set(struct drm_encoder *drm_enc,
952 struct drm_display_mode *mode,
953 struct drm_display_mode *adj_mode)
954 {
955 struct dpu_encoder_virt *dpu_enc;
956 struct msm_drm_private *priv;
957 struct dpu_kms *dpu_kms;
958 struct list_head *connector_list;
959 struct drm_connector *conn = NULL, *conn_iter;
960 struct drm_crtc *drm_crtc;
961 struct dpu_crtc_state *cstate;
962 struct dpu_global_state *global_state;
963 struct msm_display_topology topology;
964 struct dpu_hw_blk *hw_pp[MAX_CHANNELS_PER_ENC];
965 struct dpu_hw_blk *hw_ctl[MAX_CHANNELS_PER_ENC];
966 struct dpu_hw_blk *hw_lm[MAX_CHANNELS_PER_ENC];
967 struct dpu_hw_blk *hw_dspp[MAX_CHANNELS_PER_ENC] = { NULL };
> 968 int num_lm, num_ctl, num_pp, num_dspp;
969 int i, j;
970
971 if (!drm_enc) {
972 DPU_ERROR("invalid encoder\n");
973 return;
974 }
975
976 dpu_enc = to_dpu_encoder_virt(drm_enc);
977 DPU_DEBUG_ENC(dpu_enc, "\n");
978
979 priv = drm_enc->dev->dev_private;
980 dpu_kms = to_dpu_kms(priv->kms);
981 connector_list = &dpu_kms->dev->mode_config.connector_list;
982
983 global_state = dpu_kms_get_existing_global_state(dpu_kms);
984 if (IS_ERR_OR_NULL(global_state)) {
985 DPU_ERROR("Failed to get global state");
986 return;
987 }
988
989 trace_dpu_enc_mode_set(DRMID(drm_enc));
990
991 list_for_each_entry(conn_iter, connector_list, head)
992 if (conn_iter->encoder == drm_enc)
993 conn = conn_iter;
994
995 if (!conn) {
996 DPU_ERROR_ENC(dpu_enc, "failed to find attached connector\n");
997 return;
998 } else if (!conn->state) {
999 DPU_ERROR_ENC(dpu_enc, "invalid connector state\n");
1000 return;
1001 }
1002
1003 drm_for_each_crtc(drm_crtc, drm_enc->dev)
1004 if (drm_crtc->state->encoder_mask & drm_encoder_mask(drm_enc))
1005 break;
1006
1007 topology = dpu_encoder_get_topology(dpu_enc, dpu_kms, adj_mode);
1008
1009 /* Query resource that have been reserved in atomic check step. */
1010 num_pp = dpu_rm_get_assigned_resources(&dpu_kms->rm, global_state,
1011 drm_enc->base.id, DPU_HW_BLK_PINGPONG, hw_pp,
1012 ARRAY_SIZE(hw_pp));
1013 num_ctl = dpu_rm_get_assigned_resources(&dpu_kms->rm, global_state,
1014 drm_enc->base.id, DPU_HW_BLK_CTL, hw_ctl, ARRAY_SIZE(hw_ctl));
1015 num_lm = dpu_rm_get_assigned_resources(&dpu_kms->rm, global_state,
1016 drm_enc->base.id, DPU_HW_BLK_LM, hw_lm, ARRAY_SIZE(hw_lm));
1017 num_dspp = dpu_rm_get_assigned_resources(&dpu_kms->rm, global_state,
1018 drm_enc->base.id, DPU_HW_BLK_DSPP, hw_dspp,
1019 ARRAY_SIZE(hw_dspp));
1020
1021 for (i = 0; i < MAX_CHANNELS_PER_ENC; i++)
1022 dpu_enc->hw_pp[i] = i < num_pp ? to_dpu_hw_pingpong(hw_pp[i])
1023 : NULL;
1024
1025 cstate = to_dpu_crtc_state(drm_crtc->state);
1026
1027 for (i = 0; i < num_lm; i++) {
1028 int ctl_idx = (i < num_ctl) ? i : (num_ctl-1);
1029
1030 cstate->mixers[i].hw_lm = to_dpu_hw_mixer(hw_lm[i]);
1031 cstate->mixers[i].lm_ctl = to_dpu_hw_ctl(hw_ctl[ctl_idx]);
1032 cstate->mixers[i].hw_dspp = to_dpu_hw_dspp(hw_dspp[i]);
1033 }
1034
1035 cstate->num_mixers = num_lm;
1036
1037 for (i = 0; i < dpu_enc->num_phys_encs; i++) {
1038 int num_blk;
1039 struct dpu_hw_blk *hw_blk[MAX_CHANNELS_PER_ENC];
1040 struct dpu_encoder_phys *phys = dpu_enc->phys_encs[i];
1041
1042 if (!dpu_enc->hw_pp[i]) {
1043 DPU_ERROR_ENC(dpu_enc,
1044 "no pp block assigned at idx: %d\n", i);
1045 return;
1046 }
1047
1048 if (!hw_ctl[i]) {
1049 DPU_ERROR_ENC(dpu_enc,
1050 "no ctl block assigned at idx: %d\n", i);
1051 return;
1052 }
1053
1054 phys->hw_pp = dpu_enc->hw_pp[i];
1055 phys->hw_ctl = to_dpu_hw_ctl(hw_ctl[i]);
1056
1057 num_blk = dpu_rm_get_assigned_resources(&dpu_kms->rm,
1058 global_state, drm_enc->base.id, DPU_HW_BLK_INTF,
1059 hw_blk, ARRAY_SIZE(hw_blk));
1060 for (j = 0; j < num_blk; j++) {
1061 struct dpu_hw_intf *hw_intf;
1062
1063 hw_intf = to_dpu_hw_intf(hw_blk[i]);
1064 if (hw_intf->idx == phys->intf_idx)
1065 phys->hw_intf = hw_intf;
1066 }
1067
1068 if (!phys->hw_intf) {
1069 DPU_ERROR_ENC(dpu_enc,
1070 "no intf block assigned at idx: %d\n", i);
1071 return;
1072 }
1073
1074 phys->connector = conn->state->connector;
1075 if (phys->ops.mode_set)
1076 phys->ops.mode_set(phys, mode, adj_mode);
1077 }
1078 }
1079
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 4 months
Re: [patch 2/7] x86/kvm/vmx: Add hardirq tracing to guest enter/exit
by kbuild test robot
Hi Thomas,
I love your patch! Yet something to improve:
[auto build test ERROR on kvm/linux-next]
[also build test ERROR on tip/auto-latest linus/master v5.7-rc6 next-20200519]
[cannot apply to linux/master]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Thomas-Gleixner/x86-KVM-Async-PF...
base: https://git.kernel.org/pub/scm/virt/kvm/kvm.git linux-next
config: x86_64-allyesconfig (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project e6658079aca6d971b4e9d7137a3a2ecbc9c34aec)
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# 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: kbuild test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>, old ones prefixed by <<):
<< In file included from arch/x86/kvm/vmx/vmx.c:50:
>> arch/x86/kvm/vmx/vmx.c:6739:2: error: implicit declaration of function 'trace_hardirqs_on_prepare' [-Werror,-Wimplicit-function-declaration]
trace_hardirqs_on_prepare();
^
arch/x86/kvm/vmx/vmx.c:6739:2: note: did you mean 'trace_hardirqs_on'?
include/linux/irqflags.h:32:15: note: 'trace_hardirqs_on' declared here
extern void trace_hardirqs_on(void);
^
<< In file included from arch/x86/kvm/vmx/vmx.c:50:
>> arch/x86/kvm/vmx/vmx.c:6740:2: error: implicit declaration of function 'lockdep_hardirqs_on_prepare' [-Werror,-Wimplicit-function-declaration]
lockdep_hardirqs_on_prepare(CALLER_ADDR0);
^
arch/x86/kvm/vmx/vmx.c:6740:2: note: did you mean 'trace_hardirqs_on_prepare'?
arch/x86/kvm/vmx/vmx.c:6739:2: note: 'trace_hardirqs_on_prepare' declared here
trace_hardirqs_on_prepare();
^
<< In file included from arch/x86/kvm/vmx/vmx.c:50:
>> arch/x86/kvm/vmx/vmx.c:6772:2: error: implicit declaration of function 'trace_hardirqs_off_prepare' [-Werror,-Wimplicit-function-declaration]
trace_hardirqs_off_prepare();
^
arch/x86/kvm/vmx/vmx.c:6772:2: note: did you mean 'trace_hardirqs_on_prepare'?
arch/x86/kvm/vmx/vmx.c:6739:2: note: 'trace_hardirqs_on_prepare' declared here
trace_hardirqs_on_prepare();
^
3 errors generated.
vim +/trace_hardirqs_on_prepare +6739 arch/x86/kvm/vmx/vmx.c
6650
6651 static fastpath_t vmx_vcpu_run(struct kvm_vcpu *vcpu)
6652 {
6653 fastpath_t exit_fastpath;
6654 struct vcpu_vmx *vmx = to_vmx(vcpu);
6655 unsigned long cr3, cr4;
6656
6657 reenter_guest:
6658 /* Record the guest's net vcpu time for enforced NMI injections. */
6659 if (unlikely(!enable_vnmi &&
6660 vmx->loaded_vmcs->soft_vnmi_blocked))
6661 vmx->loaded_vmcs->entry_time = ktime_get();
6662
6663 /* Don't enter VMX if guest state is invalid, let the exit handler
6664 start emulation until we arrive back to a valid state */
6665 if (vmx->emulation_required)
6666 return EXIT_FASTPATH_NONE;
6667
6668 if (vmx->ple_window_dirty) {
6669 vmx->ple_window_dirty = false;
6670 vmcs_write32(PLE_WINDOW, vmx->ple_window);
6671 }
6672
6673 /*
6674 * We did this in prepare_switch_to_guest, because it needs to
6675 * be within srcu_read_lock.
6676 */
6677 WARN_ON_ONCE(vmx->nested.need_vmcs12_to_shadow_sync);
6678
6679 if (kvm_register_is_dirty(vcpu, VCPU_REGS_RSP))
6680 vmcs_writel(GUEST_RSP, vcpu->arch.regs[VCPU_REGS_RSP]);
6681 if (kvm_register_is_dirty(vcpu, VCPU_REGS_RIP))
6682 vmcs_writel(GUEST_RIP, vcpu->arch.regs[VCPU_REGS_RIP]);
6683
6684 cr3 = __get_current_cr3_fast();
6685 if (unlikely(cr3 != vmx->loaded_vmcs->host_state.cr3)) {
6686 vmcs_writel(HOST_CR3, cr3);
6687 vmx->loaded_vmcs->host_state.cr3 = cr3;
6688 }
6689
6690 cr4 = cr4_read_shadow();
6691 if (unlikely(cr4 != vmx->loaded_vmcs->host_state.cr4)) {
6692 vmcs_writel(HOST_CR4, cr4);
6693 vmx->loaded_vmcs->host_state.cr4 = cr4;
6694 }
6695
6696 /* When single-stepping over STI and MOV SS, we must clear the
6697 * corresponding interruptibility bits in the guest state. Otherwise
6698 * vmentry fails as it then expects bit 14 (BS) in pending debug
6699 * exceptions being set, but that's not correct for the guest debugging
6700 * case. */
6701 if (vcpu->guest_debug & KVM_GUESTDBG_SINGLESTEP)
6702 vmx_set_interrupt_shadow(vcpu, 0);
6703
6704 kvm_load_guest_xsave_state(vcpu);
6705
6706 pt_guest_enter(vmx);
6707
6708 if (vcpu_to_pmu(vcpu)->version)
6709 atomic_switch_perf_msrs(vmx);
6710 atomic_switch_umwait_control_msr(vmx);
6711
6712 if (enable_preemption_timer)
6713 vmx_update_hv_timer(vcpu);
6714
6715 if (lapic_in_kernel(vcpu) &&
6716 vcpu->arch.apic->lapic_timer.timer_advance_ns)
6717 kvm_wait_lapic_expire(vcpu);
6718
6719 /*
6720 * If this vCPU has touched SPEC_CTRL, restore the guest's value if
6721 * it's non-zero. Since vmentry is serialising on affected CPUs, there
6722 * is no need to worry about the conditional branch over the wrmsr
6723 * being speculatively taken.
6724 */
6725 x86_spec_ctrl_set_guest(vmx->spec_ctrl, 0);
6726
6727 /*
6728 * VMENTER enables interrupts (host state), but the kernel state is
6729 * interrupts disabled when this is invoked. Also tell RCU about
6730 * it. This is the same logic as for exit_to_user_mode().
6731 *
6732 * This ensures that e.g. latency analysis on the host observes
6733 * guest mode as interrupt enabled.
6734 *
6735 * guest_enter_irqoff() informs context tracking about the
6736 * transition to guest mode and if enabled adjusts RCU state
6737 * accordingly.
6738 */
> 6739 trace_hardirqs_on_prepare();
> 6740 lockdep_hardirqs_on_prepare(CALLER_ADDR0);
6741 guest_enter_irqoff();
6742 lockdep_hardirqs_on(CALLER_ADDR0);
6743
6744 /* L1D Flush includes CPU buffer clear to mitigate MDS */
6745 if (static_branch_unlikely(&vmx_l1d_should_flush))
6746 vmx_l1d_flush(vcpu);
6747 else if (static_branch_unlikely(&mds_user_clear))
6748 mds_clear_cpu_buffers();
6749
6750 if (vcpu->arch.cr2 != read_cr2())
6751 write_cr2(vcpu->arch.cr2);
6752
6753 vmx->fail = __vmx_vcpu_run(vmx, (unsigned long *)&vcpu->arch.regs,
6754 vmx->loaded_vmcs->launched);
6755
6756 vcpu->arch.cr2 = read_cr2();
6757
6758 /*
6759 * VMEXIT disables interrupts (host state), but tracing and lockdep
6760 * have them in state 'on' as recorded before entering guest mode.
6761 * Same as enter_from_user_mode().
6762 *
6763 * guest_exit_irqoff() restores host context and reinstates RCU if
6764 * enabled and required.
6765 *
6766 * This needs to be done before the below as native_read_msr()
6767 * contains a tracepoint and x86_spec_ctrl_restore_host() calls
6768 * into world and some more.
6769 */
6770 lockdep_hardirqs_off(CALLER_ADDR0);
6771 guest_exit_irqoff();
> 6772 trace_hardirqs_off_prepare();
6773
6774 /*
6775 * We do not use IBRS in the kernel. If this vCPU has used the
6776 * SPEC_CTRL MSR it may have left it on; save the value and
6777 * turn it off. This is much more efficient than blindly adding
6778 * it to the atomic save/restore list. Especially as the former
6779 * (Saving guest MSRs on vmexit) doesn't even exist in KVM.
6780 *
6781 * For non-nested case:
6782 * If the L01 MSR bitmap does not intercept the MSR, then we need to
6783 * save it.
6784 *
6785 * For nested case:
6786 * If the L02 MSR bitmap does not intercept the MSR, then we need to
6787 * save it.
6788 */
6789 if (unlikely(!msr_write_intercepted(vcpu, MSR_IA32_SPEC_CTRL)))
6790 vmx->spec_ctrl = native_read_msr(MSR_IA32_SPEC_CTRL);
6791
6792 x86_spec_ctrl_restore_host(vmx->spec_ctrl, 0);
6793
6794 /* All fields are clean at this point */
6795 if (static_branch_unlikely(&enable_evmcs))
6796 current_evmcs->hv_clean_fields |=
6797 HV_VMX_ENLIGHTENED_CLEAN_FIELD_ALL;
6798
6799 if (static_branch_unlikely(&enable_evmcs))
6800 current_evmcs->hv_vp_id = vcpu->arch.hyperv.vp_index;
6801
6802 /* MSR_IA32_DEBUGCTLMSR is zeroed on vmexit. Restore it if needed */
6803 if (vmx->host_debugctlmsr)
6804 update_debugctlmsr(vmx->host_debugctlmsr);
6805
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 4 months
[linux-next:master 8234/10701] drivers/usb/host/ehci-mv.c:170:15: warning: comparison of unsigned expression < 0 is always false
by kbuild test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: fb57b1fabcb28f358901b2df90abd2b48abc1ca8
commit: c856b4b0fdb5044bca4c0acf9a66f3b5cc01a37a [8234/10701] USB: EHCI: ehci-mv: fix error handling in mv_ehci_probe()
config: ia64-randconfig-r023-20200519 (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout c856b4b0fdb5044bca4c0acf9a66f3b5cc01a37a
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/usb/host/ehci-mv.c: In function 'mv_ehci_probe':
>> drivers/usb/host/ehci-mv.c:170:15: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
170 | if (hcd->irq < 0) {
| ^
vim +170 drivers/usb/host/ehci-mv.c
103
104 static int mv_ehci_probe(struct platform_device *pdev)
105 {
106 struct mv_usb_platform_data *pdata = dev_get_platdata(&pdev->dev);
107 struct usb_hcd *hcd;
108 struct ehci_hcd *ehci;
109 struct ehci_hcd_mv *ehci_mv;
110 struct resource *r;
111 int retval;
112 u32 offset;
113 u32 status;
114
115 if (usb_disabled())
116 return -ENODEV;
117
118 hcd = usb_create_hcd(&ehci_platform_hc_driver, &pdev->dev, dev_name(&pdev->dev));
119 if (!hcd)
120 return -ENOMEM;
121
122 platform_set_drvdata(pdev, hcd);
123 ehci_mv = hcd_to_ehci_hcd_mv(hcd);
124
125 ehci_mv->mode = MV_USB_MODE_HOST;
126 if (pdata) {
127 ehci_mv->mode = pdata->mode;
128 ehci_mv->set_vbus = pdata->set_vbus;
129 }
130
131 ehci_mv->phy = devm_phy_optional_get(&pdev->dev, "usb");
132 if (IS_ERR(ehci_mv->phy)) {
133 retval = PTR_ERR(ehci_mv->phy);
134 if (retval != -EPROBE_DEFER)
135 dev_err(&pdev->dev, "Failed to get phy.\n");
136 goto err_put_hcd;
137 }
138
139 ehci_mv->clk = devm_clk_get(&pdev->dev, NULL);
140 if (IS_ERR(ehci_mv->clk)) {
141 dev_err(&pdev->dev, "error getting clock\n");
142 retval = PTR_ERR(ehci_mv->clk);
143 goto err_put_hcd;
144 }
145
146 r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
147 ehci_mv->base = devm_ioremap_resource(&pdev->dev, r);
148 if (IS_ERR(ehci_mv->base)) {
149 retval = PTR_ERR(ehci_mv->base);
150 goto err_put_hcd;
151 }
152
153 retval = mv_ehci_enable(ehci_mv);
154 if (retval) {
155 dev_err(&pdev->dev, "init phy error %d\n", retval);
156 goto err_put_hcd;
157 }
158
159 ehci_mv->cap_regs =
160 (void __iomem *) ((unsigned long) ehci_mv->base + U2x_CAPREGS_OFFSET);
161 offset = readl(ehci_mv->cap_regs) & CAPLENGTH_MASK;
162 ehci_mv->op_regs =
163 (void __iomem *) ((unsigned long) ehci_mv->cap_regs + offset);
164
165 hcd->rsrc_start = r->start;
166 hcd->rsrc_len = resource_size(r);
167 hcd->regs = ehci_mv->op_regs;
168
169 hcd->irq = platform_get_irq(pdev, 0);
> 170 if (hcd->irq < 0) {
171 retval = hcd->irq;
172 goto err_disable_clk;
173 }
174
175 ehci = hcd_to_ehci(hcd);
176 ehci->caps = (struct ehci_caps __iomem *) ehci_mv->cap_regs;
177
178 if (ehci_mv->mode == MV_USB_MODE_OTG) {
179 ehci_mv->otg = devm_usb_get_phy(&pdev->dev, USB_PHY_TYPE_USB2);
180 if (IS_ERR(ehci_mv->otg)) {
181 retval = PTR_ERR(ehci_mv->otg);
182
183 if (retval == -ENXIO)
184 dev_info(&pdev->dev, "MV_USB_MODE_OTG "
185 "must have CONFIG_USB_PHY enabled\n");
186 else
187 dev_err(&pdev->dev,
188 "unable to find transceiver\n");
189 goto err_disable_clk;
190 }
191
192 retval = otg_set_host(ehci_mv->otg->otg, &hcd->self);
193 if (retval < 0) {
194 dev_err(&pdev->dev,
195 "unable to register with transceiver\n");
196 retval = -ENODEV;
197 goto err_disable_clk;
198 }
199 /* otg will enable clock before use as host */
200 mv_ehci_disable(ehci_mv);
201 } else {
202 if (ehci_mv->set_vbus)
203 ehci_mv->set_vbus(1);
204
205 retval = usb_add_hcd(hcd, hcd->irq, IRQF_SHARED);
206 if (retval) {
207 dev_err(&pdev->dev,
208 "failed to add hcd with err %d\n", retval);
209 goto err_set_vbus;
210 }
211 device_wakeup_enable(hcd->self.controller);
212 }
213
214 if (of_usb_get_phy_mode(pdev->dev.of_node) == USBPHY_INTERFACE_MODE_HSIC) {
215 status = ehci_readl(ehci, &ehci->regs->port_status[0]);
216 /* These "reserved" bits actually enable HSIC mode. */
217 status |= BIT(25);
218 status &= ~GENMASK(31, 30);
219 ehci_writel(ehci, status, &ehci->regs->port_status[0]);
220 }
221
222 dev_info(&pdev->dev,
223 "successful find EHCI device with regs 0x%p irq %d"
224 " working in %s mode\n", hcd->regs, hcd->irq,
225 ehci_mv->mode == MV_USB_MODE_OTG ? "OTG" : "Host");
226
227 return 0;
228
229 err_set_vbus:
230 if (ehci_mv->set_vbus)
231 ehci_mv->set_vbus(0);
232 err_disable_clk:
233 mv_ehci_disable(ehci_mv);
234 err_put_hcd:
235 usb_put_hcd(hcd);
236
237 return retval;
238 }
239
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 4 months
[linux-next:master 10157/10701] kernel/events/hw_breakpoint.c:216:12: warning: no previous prototype for function 'arch_reserve_bp_slot'
by kbuild test robot
Hi Ravi,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: fb57b1fabcb28f358901b2df90abd2b48abc1ca8
commit: 29da4f91c0c1fbda12b8a31be0d564930208c92e [10157/10701] powerpc/watchpoint: Don't allow concurrent perf and ptrace events
config: arm64-randconfig-r026-20200519 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 135b877874fae96b4372c8a3fbfaa8ff44ff86e3)
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
git checkout 29da4f91c0c1fbda12b8a31be0d564930208c92e
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
kernel/events/hw_breakpoint.c:71:12: warning: no previous prototype for function 'hw_breakpoint_weight' [-Wmissing-prototypes]
__weak int hw_breakpoint_weight(struct perf_event *bp)
^
kernel/events/hw_breakpoint.c:71:8: note: declare 'static' if the function is not intended to be used outside of this translation unit
__weak int hw_breakpoint_weight(struct perf_event *bp)
^
static
>> kernel/events/hw_breakpoint.c:216:12: warning: no previous prototype for function 'arch_reserve_bp_slot' [-Wmissing-prototypes]
__weak int arch_reserve_bp_slot(struct perf_event *bp)
^
kernel/events/hw_breakpoint.c:216:8: note: declare 'static' if the function is not intended to be used outside of this translation unit
__weak int arch_reserve_bp_slot(struct perf_event *bp)
^
static
>> kernel/events/hw_breakpoint.c:221:13: warning: no previous prototype for function 'arch_release_bp_slot' [-Wmissing-prototypes]
__weak void arch_release_bp_slot(struct perf_event *bp)
^
kernel/events/hw_breakpoint.c:221:8: note: declare 'static' if the function is not intended to be used outside of this translation unit
__weak void arch_release_bp_slot(struct perf_event *bp)
^
static
kernel/events/hw_breakpoint.c:228:13: warning: no previous prototype for function 'arch_unregister_hw_breakpoint' [-Wmissing-prototypes]
__weak void arch_unregister_hw_breakpoint(struct perf_event *bp)
^
kernel/events/hw_breakpoint.c:228:8: note: declare 'static' if the function is not intended to be used outside of this translation unit
__weak void arch_unregister_hw_breakpoint(struct perf_event *bp)
^
static
4 warnings generated.
vim +/arch_reserve_bp_slot +216 kernel/events/hw_breakpoint.c
70
> 71 __weak int hw_breakpoint_weight(struct perf_event *bp)
72 {
73 return 1;
74 }
75
76 static inline enum bp_type_idx find_slot_idx(u64 bp_type)
77 {
78 if (bp_type & HW_BREAKPOINT_RW)
79 return TYPE_DATA;
80
81 return TYPE_INST;
82 }
83
84 /*
85 * Report the maximum number of pinned breakpoints a task
86 * have in this cpu
87 */
88 static unsigned int max_task_bp_pinned(int cpu, enum bp_type_idx type)
89 {
90 unsigned int *tsk_pinned = get_bp_info(cpu, type)->tsk_pinned;
91 int i;
92
93 for (i = nr_slots[type] - 1; i >= 0; i--) {
94 if (tsk_pinned[i] > 0)
95 return i + 1;
96 }
97
98 return 0;
99 }
100
101 /*
102 * Count the number of breakpoints of the same type and same task.
103 * The given event must be not on the list.
104 */
105 static int task_bp_pinned(int cpu, struct perf_event *bp, enum bp_type_idx type)
106 {
107 struct task_struct *tsk = bp->hw.target;
108 struct perf_event *iter;
109 int count = 0;
110
111 list_for_each_entry(iter, &bp_task_head, hw.bp_list) {
112 if (iter->hw.target == tsk &&
113 find_slot_idx(iter->attr.bp_type) == type &&
114 (iter->cpu < 0 || cpu == iter->cpu))
115 count += hw_breakpoint_weight(iter);
116 }
117
118 return count;
119 }
120
121 static const struct cpumask *cpumask_of_bp(struct perf_event *bp)
122 {
123 if (bp->cpu >= 0)
124 return cpumask_of(bp->cpu);
125 return cpu_possible_mask;
126 }
127
128 /*
129 * Report the number of pinned/un-pinned breakpoints we have in
130 * a given cpu (cpu > -1) or in all of them (cpu = -1).
131 */
132 static void
133 fetch_bp_busy_slots(struct bp_busy_slots *slots, struct perf_event *bp,
134 enum bp_type_idx type)
135 {
136 const struct cpumask *cpumask = cpumask_of_bp(bp);
137 int cpu;
138
139 for_each_cpu(cpu, cpumask) {
140 struct bp_cpuinfo *info = get_bp_info(cpu, type);
141 int nr;
142
143 nr = info->cpu_pinned;
144 if (!bp->hw.target)
145 nr += max_task_bp_pinned(cpu, type);
146 else
147 nr += task_bp_pinned(cpu, bp, type);
148
149 if (nr > slots->pinned)
150 slots->pinned = nr;
151
152 nr = info->flexible;
153 if (nr > slots->flexible)
154 slots->flexible = nr;
155 }
156 }
157
158 /*
159 * For now, continue to consider flexible as pinned, until we can
160 * ensure no flexible event can ever be scheduled before a pinned event
161 * in a same cpu.
162 */
163 static void
164 fetch_this_slot(struct bp_busy_slots *slots, int weight)
165 {
166 slots->pinned += weight;
167 }
168
169 /*
170 * Add a pinned breakpoint for the given task in our constraint table
171 */
172 static void toggle_bp_task_slot(struct perf_event *bp, int cpu,
173 enum bp_type_idx type, int weight)
174 {
175 unsigned int *tsk_pinned = get_bp_info(cpu, type)->tsk_pinned;
176 int old_idx, new_idx;
177
178 old_idx = task_bp_pinned(cpu, bp, type) - 1;
179 new_idx = old_idx + weight;
180
181 if (old_idx >= 0)
182 tsk_pinned[old_idx]--;
183 if (new_idx >= 0)
184 tsk_pinned[new_idx]++;
185 }
186
187 /*
188 * Add/remove the given breakpoint in our constraint table
189 */
190 static void
191 toggle_bp_slot(struct perf_event *bp, bool enable, enum bp_type_idx type,
192 int weight)
193 {
194 const struct cpumask *cpumask = cpumask_of_bp(bp);
195 int cpu;
196
197 if (!enable)
198 weight = -weight;
199
200 /* Pinned counter cpu profiling */
201 if (!bp->hw.target) {
202 get_bp_info(bp->cpu, type)->cpu_pinned += weight;
203 return;
204 }
205
206 /* Pinned counter task profiling */
207 for_each_cpu(cpu, cpumask)
208 toggle_bp_task_slot(bp, cpu, type, weight);
209
210 if (enable)
211 list_add_tail(&bp->hw.bp_list, &bp_task_head);
212 else
213 list_del(&bp->hw.bp_list);
214 }
215
> 216 __weak int arch_reserve_bp_slot(struct perf_event *bp)
217 {
218 return 0;
219 }
220
> 221 __weak void arch_release_bp_slot(struct perf_event *bp)
222 {
223 }
224
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 4 months
Re: [PATCH v1 2/6] bus: mhi: core: Mark device inactive soon after host issues a shutdown
by kbuild test robot
Hi Bhaumik,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on next-20200519]
[cannot apply to linus/master v5.7-rc6 v5.7-rc5 v5.7-rc4 v5.7-rc6]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Bhaumik-Bhatt/Bug-fixes-and-boot...
base: fb57b1fabcb28f358901b2df90abd2b48abc1ca8
config: riscv-allyesconfig (attached as .config)
compiler: riscv64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=riscv
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>, old ones prefixed by <<):
drivers/bus/mhi/core/main.c: In function 'mhi_intvec_threaded_handler':
>> drivers/bus/mhi/core/main.c:397:8: error: implicit declaration of function 'mhi_is_active' [-Werror=implicit-function-declaration]
397 | if (!mhi_is_active(mhi_cntrl)) {
| ^~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/mhi_is_active +397 drivers/bus/mhi/core/main.c
371
372 irqreturn_t mhi_intvec_threaded_handler(int irq_number, void *priv)
373 {
374 struct mhi_controller *mhi_cntrl = priv;
375 struct device *dev = &mhi_cntrl->mhi_dev->dev;
376 enum mhi_state state = MHI_STATE_MAX;
377 enum mhi_pm_state pm_state = 0;
378 enum mhi_ee_type ee = 0;
379 bool handle_rddm = false;
380
381 write_lock_irq(&mhi_cntrl->pm_lock);
382 if (!MHI_REG_ACCESS_VALID(mhi_cntrl->pm_state)) {
383 write_unlock_irq(&mhi_cntrl->pm_lock);
384 goto exit_intvec;
385 }
386
387 state = mhi_get_mhi_state(mhi_cntrl);
388 ee = mhi_cntrl->ee;
389 mhi_cntrl->ee = mhi_get_exec_env(mhi_cntrl);
390 dev_dbg(dev, "local ee:%s device ee:%s dev_state:%s\n",
391 TO_MHI_EXEC_STR(mhi_cntrl->ee), TO_MHI_EXEC_STR(ee),
392 TO_MHI_STATE_STR(state));
393
394 /* If device supports RDDM don't bother processing SYS error */
395 if (mhi_cntrl->rddm_image) {
396 /* host may be performing a device power down already */
> 397 if (!mhi_is_active(mhi_cntrl)) {
398 write_unlock_irq(&mhi_cntrl->pm_lock);
399 goto exit_intvec;
400 }
401
402 if (mhi_cntrl->ee == MHI_EE_RDDM && mhi_cntrl->ee != ee) {
403 /* prevent clients from queueing any more packets */
404 pm_state = mhi_tryset_pm_state(mhi_cntrl,
405 MHI_PM_SYS_ERR_DETECT);
406 if (pm_state == MHI_PM_SYS_ERR_DETECT)
407 handle_rddm = true;
408 }
409
410 write_unlock_irq(&mhi_cntrl->pm_lock);
411
412 if (handle_rddm) {
413 dev_err(dev, "RDDM event occurred!\n");
414 mhi_cntrl->status_cb(mhi_cntrl, MHI_CB_EE_RDDM);
415 wake_up_all(&mhi_cntrl->state_event);
416 }
417 goto exit_intvec;
418 }
419
420 if (state == MHI_STATE_SYS_ERR) {
421 dev_dbg(dev, "System error detected\n");
422 pm_state = mhi_tryset_pm_state(mhi_cntrl,
423 MHI_PM_SYS_ERR_DETECT);
424 }
425
426 write_unlock_irq(&mhi_cntrl->pm_lock);
427
428 if (pm_state == MHI_PM_SYS_ERR_DETECT) {
429 wake_up_all(&mhi_cntrl->state_event);
430
431 /* For fatal errors, we let controller decide next step */
432 if (MHI_IN_PBL(ee))
433 mhi_cntrl->status_cb(mhi_cntrl, MHI_CB_FATAL_ERROR);
434 else
435 mhi_pm_sys_err_handler(mhi_cntrl);
436 }
437
438 exit_intvec:
439
440 return IRQ_HANDLED;
441 }
442
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 4 months
Re: [PATCH 06/12] xen-blkfront: add callbacks for PM suspend and hibernation
by kbuild test robot
Hi Anchal,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on v5.7-rc6]
[cannot apply to xen-tip/linux-next tip/irq/core tip/auto-latest next-20200519]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Anchal-Agarwal/Fix-PM-hibernatio...
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 03fb3acae4be8a6b680ffedb220a8b6c07260b40
config: x86_64-rhel (attached as .config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/block/xen-blkfront.c: In function 'blkfront_freeze':
>> drivers/block/xen-blkfront.c:2699:30: warning: missing terminating " character
xenbus_dev_error(dev, err, "Hibernation Failed.
^
>> drivers/block/xen-blkfront.c:2699:30: error: missing terminating " character
xenbus_dev_error(dev, err, "Hibernation Failed.
^~~~~~~~~~~~~~~~~~~~
>> drivers/block/xen-blkfront.c:2700:4: error: 'The' undeclared (first use in this function)
The ring is still busy");
^~~
drivers/block/xen-blkfront.c:2700:4: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/block/xen-blkfront.c:2700:8: error: expected ')' before 'ring'
The ring is still busy");
^~~~
drivers/block/xen-blkfront.c:2700:26: warning: missing terminating " character
The ring is still busy");
^
drivers/block/xen-blkfront.c:2700:26: error: missing terminating " character
The ring is still busy");
^~~
>> drivers/block/xen-blkfront.c:2704:2: error: expected ';' before '}' token
}
^
vim +2699 drivers/block/xen-blkfront.c
2672
2673 static int blkfront_freeze(struct xenbus_device *dev)
2674 {
2675 unsigned int i;
2676 struct blkfront_info *info = dev_get_drvdata(&dev->dev);
2677 struct blkfront_ring_info *rinfo;
2678 /* This would be reasonable timeout as used in xenbus_dev_shutdown() */
2679 unsigned int timeout = 5 * HZ;
2680 unsigned long flags;
2681 int err = 0;
2682
2683 info->connected = BLKIF_STATE_FREEZING;
2684
2685 blk_mq_freeze_queue(info->rq);
2686 blk_mq_quiesce_queue(info->rq);
2687
2688 for_each_rinfo(info, rinfo, i) {
2689 /* No more gnttab callback work. */
2690 gnttab_cancel_free_callback(&rinfo->callback);
2691 /* Flush gnttab callback work. Must be done with no locks held. */
2692 flush_work(&rinfo->work);
2693 }
2694
2695 for_each_rinfo(info, rinfo, i) {
2696 spin_lock_irqsave(&rinfo->ring_lock, flags);
2697 if (RING_FULL(&rinfo->ring)
2698 || RING_HAS_UNCONSUMED_RESPONSES(&rinfo->ring)) {
> 2699 xenbus_dev_error(dev, err, "Hibernation Failed.
> 2700 The ring is still busy");
2701 info->connected = BLKIF_STATE_CONNECTED;
2702 spin_unlock_irqrestore(&rinfo->ring_lock, flags);
2703 return -EBUSY;
> 2704 }
2705 spin_unlock_irqrestore(&rinfo->ring_lock, flags);
2706 }
2707 /* Kick the backend to disconnect */
2708 xenbus_switch_state(dev, XenbusStateClosing);
2709
2710 /*
2711 * We don't want to move forward before the frontend is diconnected
2712 * from the backend cleanly.
2713 */
2714 timeout = wait_for_completion_timeout(&info->wait_backend_disconnected,
2715 timeout);
2716 if (!timeout) {
2717 err = -EBUSY;
2718 xenbus_dev_error(dev, err, "Freezing timed out;"
2719 "the device may become inconsistent state");
2720 }
2721
2722 return err;
2723 }
2724
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 4 months
Re: [PATCH 06/12] xen-blkfront: add callbacks for PM suspend and hibernation
by kbuild test robot
Hi Anchal,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on v5.7-rc6]
[cannot apply to xen-tip/linux-next tip/irq/core tip/auto-latest next-20200519]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Anchal-Agarwal/Fix-PM-hibernatio...
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 03fb3acae4be8a6b680ffedb220a8b6c07260b40
config: x86_64-randconfig-a016-20200519 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project e6658079aca6d971b4e9d7137a3a2ecbc9c34aec)
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# 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: kbuild test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>, old ones prefixed by <<):
>> drivers/block/xen-blkfront.c:2699:30: warning: missing terminating '"' character [-Winvalid-pp-token]
xenbus_dev_error(dev, err, "Hibernation Failed.
^
>> drivers/block/xen-blkfront.c:2699:30: error: expected expression
drivers/block/xen-blkfront.c:2700:26: warning: missing terminating '"' character [-Winvalid-pp-token]
The ring is still busy");
^
>> drivers/block/xen-blkfront.c:2726:1: error: function definition is not allowed here
{
^
>> drivers/block/xen-blkfront.c:2762:10: error: use of undeclared identifier 'blkfront_restore'
.thaw = blkfront_restore,
^
drivers/block/xen-blkfront.c:2763:13: error: use of undeclared identifier 'blkfront_restore'
.restore = blkfront_restore
^
drivers/block/xen-blkfront.c:2767:1: error: function definition is not allowed here
{
^
drivers/block/xen-blkfront.c:2800:1: error: function definition is not allowed here
{
^
drivers/block/xen-blkfront.c:2822:1: error: function definition is not allowed here
{
^
>> drivers/block/xen-blkfront.c:2863:13: error: use of undeclared identifier 'xlblk_init'
module_init(xlblk_init);
^
drivers/block/xen-blkfront.c:2867:1: error: function definition is not allowed here
{
^
>> drivers/block/xen-blkfront.c:2874:13: error: use of undeclared identifier 'xlblk_exit'
module_exit(xlblk_exit);
^
>> drivers/block/xen-blkfront.c:2880:24: error: expected '}'
MODULE_ALIAS("xenblk");
^
drivers/block/xen-blkfront.c:2674:1: note: to match this '{'
{
^
>> drivers/block/xen-blkfront.c:2738:45: warning: ISO C90 forbids mixing declarations and code [-Wdeclaration-after-statement]
static const struct block_device_operations xlvbd_block_fops =
^
3 warnings and 11 errors generated.
vim +2699 drivers/block/xen-blkfront.c
2672
2673 static int blkfront_freeze(struct xenbus_device *dev)
2674 {
2675 unsigned int i;
2676 struct blkfront_info *info = dev_get_drvdata(&dev->dev);
2677 struct blkfront_ring_info *rinfo;
2678 /* This would be reasonable timeout as used in xenbus_dev_shutdown() */
2679 unsigned int timeout = 5 * HZ;
2680 unsigned long flags;
2681 int err = 0;
2682
2683 info->connected = BLKIF_STATE_FREEZING;
2684
2685 blk_mq_freeze_queue(info->rq);
2686 blk_mq_quiesce_queue(info->rq);
2687
2688 for_each_rinfo(info, rinfo, i) {
2689 /* No more gnttab callback work. */
2690 gnttab_cancel_free_callback(&rinfo->callback);
2691 /* Flush gnttab callback work. Must be done with no locks held. */
2692 flush_work(&rinfo->work);
2693 }
2694
2695 for_each_rinfo(info, rinfo, i) {
2696 spin_lock_irqsave(&rinfo->ring_lock, flags);
2697 if (RING_FULL(&rinfo->ring)
2698 || RING_HAS_UNCONSUMED_RESPONSES(&rinfo->ring)) {
> 2699 xenbus_dev_error(dev, err, "Hibernation Failed.
2700 The ring is still busy");
2701 info->connected = BLKIF_STATE_CONNECTED;
2702 spin_unlock_irqrestore(&rinfo->ring_lock, flags);
2703 return -EBUSY;
2704 }
2705 spin_unlock_irqrestore(&rinfo->ring_lock, flags);
2706 }
2707 /* Kick the backend to disconnect */
2708 xenbus_switch_state(dev, XenbusStateClosing);
2709
2710 /*
2711 * We don't want to move forward before the frontend is diconnected
2712 * from the backend cleanly.
2713 */
2714 timeout = wait_for_completion_timeout(&info->wait_backend_disconnected,
2715 timeout);
2716 if (!timeout) {
2717 err = -EBUSY;
2718 xenbus_dev_error(dev, err, "Freezing timed out;"
2719 "the device may become inconsistent state");
2720 }
2721
2722 return err;
2723 }
2724
2725 static int blkfront_restore(struct xenbus_device *dev)
> 2726 {
2727 struct blkfront_info *info = dev_get_drvdata(&dev->dev);
2728 int err = 0;
2729
2730 err = talk_to_blkback(dev, info);
2731 blk_mq_unquiesce_queue(info->rq);
2732 blk_mq_unfreeze_queue(info->rq);
2733 if (!err)
2734 blk_mq_update_nr_hw_queues(&info->tag_set, info->nr_rings);
2735 return err;
2736 }
2737
> 2738 static const struct block_device_operations xlvbd_block_fops =
2739 {
2740 .owner = THIS_MODULE,
2741 .open = blkif_open,
2742 .release = blkif_release,
2743 .getgeo = blkif_getgeo,
2744 .ioctl = blkif_ioctl,
2745 .compat_ioctl = blkdev_compat_ptr_ioctl,
2746 };
2747
2748
2749 static const struct xenbus_device_id blkfront_ids[] = {
2750 { "vbd" },
2751 { "" }
2752 };
2753
2754 static struct xenbus_driver blkfront_driver = {
2755 .ids = blkfront_ids,
2756 .probe = blkfront_probe,
2757 .remove = blkfront_remove,
2758 .resume = blkfront_resume,
2759 .otherend_changed = blkback_changed,
2760 .is_ready = blkfront_is_ready,
2761 .freeze = blkfront_freeze,
> 2762 .thaw = blkfront_restore,
2763 .restore = blkfront_restore
2764 };
2765
2766 static void purge_persistent_grants(struct blkfront_info *info)
> 2767 {
2768 unsigned int i;
2769 unsigned long flags;
2770 struct blkfront_ring_info *rinfo;
2771
2772 for_each_rinfo(info, rinfo, i) {
2773 struct grant *gnt_list_entry, *tmp;
2774
2775 spin_lock_irqsave(&rinfo->ring_lock, flags);
2776
2777 if (rinfo->persistent_gnts_c == 0) {
2778 spin_unlock_irqrestore(&rinfo->ring_lock, flags);
2779 continue;
2780 }
2781
2782 list_for_each_entry_safe(gnt_list_entry, tmp, &rinfo->grants,
2783 node) {
2784 if (gnt_list_entry->gref == GRANT_INVALID_REF ||
2785 gnttab_query_foreign_access(gnt_list_entry->gref))
2786 continue;
2787
2788 list_del(&gnt_list_entry->node);
2789 gnttab_end_foreign_access(gnt_list_entry->gref, 0, 0UL);
2790 rinfo->persistent_gnts_c--;
2791 gnt_list_entry->gref = GRANT_INVALID_REF;
2792 list_add_tail(&gnt_list_entry->node, &rinfo->grants);
2793 }
2794
2795 spin_unlock_irqrestore(&rinfo->ring_lock, flags);
2796 }
2797 }
2798
2799 static void blkfront_delay_work(struct work_struct *work)
2800 {
2801 struct blkfront_info *info;
2802 bool need_schedule_work = false;
2803
2804 mutex_lock(&blkfront_mutex);
2805
2806 list_for_each_entry(info, &info_list, info_list) {
2807 if (info->feature_persistent) {
2808 need_schedule_work = true;
2809 mutex_lock(&info->mutex);
2810 purge_persistent_grants(info);
2811 mutex_unlock(&info->mutex);
2812 }
2813 }
2814
2815 if (need_schedule_work)
2816 schedule_delayed_work(&blkfront_work, HZ * 10);
2817
2818 mutex_unlock(&blkfront_mutex);
2819 }
2820
2821 static int __init xlblk_init(void)
> 2822 {
2823 int ret;
2824 int nr_cpus = num_online_cpus();
2825
2826 if (!xen_domain())
2827 return -ENODEV;
2828
2829 if (!xen_has_pv_disk_devices())
2830 return -ENODEV;
2831
2832 if (register_blkdev(XENVBD_MAJOR, DEV_NAME)) {
2833 pr_warn("xen_blk: can't get major %d with name %s\n",
2834 XENVBD_MAJOR, DEV_NAME);
2835 return -ENODEV;
2836 }
2837
2838 if (xen_blkif_max_segments < BLKIF_MAX_SEGMENTS_PER_REQUEST)
2839 xen_blkif_max_segments = BLKIF_MAX_SEGMENTS_PER_REQUEST;
2840
2841 if (xen_blkif_max_ring_order > XENBUS_MAX_RING_GRANT_ORDER) {
2842 pr_info("Invalid max_ring_order (%d), will use default max: %d.\n",
2843 xen_blkif_max_ring_order, XENBUS_MAX_RING_GRANT_ORDER);
2844 xen_blkif_max_ring_order = XENBUS_MAX_RING_GRANT_ORDER;
2845 }
2846
2847 if (xen_blkif_max_queues > nr_cpus) {
2848 pr_info("Invalid max_queues (%d), will use default max: %d.\n",
2849 xen_blkif_max_queues, nr_cpus);
2850 xen_blkif_max_queues = nr_cpus;
2851 }
2852
2853 INIT_DELAYED_WORK(&blkfront_work, blkfront_delay_work);
2854
2855 ret = xenbus_register_frontend(&blkfront_driver);
2856 if (ret) {
2857 unregister_blkdev(XENVBD_MAJOR, DEV_NAME);
2858 return ret;
2859 }
2860
2861 return 0;
2862 }
> 2863 module_init(xlblk_init);
2864
2865
2866 static void __exit xlblk_exit(void)
2867 {
2868 cancel_delayed_work_sync(&blkfront_work);
2869
2870 xenbus_unregister_driver(&blkfront_driver);
2871 unregister_blkdev(XENVBD_MAJOR, DEV_NAME);
2872 kfree(minors);
2873 }
> 2874 module_exit(xlblk_exit);
2875
2876 MODULE_DESCRIPTION("Xen virtual block device frontend");
2877 MODULE_LICENSE("GPL");
2878 MODULE_ALIAS_BLOCKDEV_MAJOR(XENVBD_MAJOR);
2879 MODULE_ALIAS("xen:vbd");
> 2880 MODULE_ALIAS("xenblk");
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 4 months