[PATCH 1/2] drm/nouveau: Disable atomic support on a per-device basis

kbuild test robot lkp at intel.com
Fri Sep 14 07:45:46 UTC 2018


Hi Ville,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v4.19-rc3 next-20180913]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Ville-Syrjala/drm-nouveau-Disable-atomic-support-on-a-per-device-basis/20180914-111059
config: i386-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   drivers/gpu/drm/nouveau/dispnv04/disp.c: In function 'nv04_display_create':
>> drivers/gpu/drm/nouveau/dispnv04/disp.c:59:5: error: 'struct drm_device' has no member named 'driver_features'
     dev->driver_features &= ~DRIVER_ATOMIC;
        ^~

vim +59 drivers/gpu/drm/nouveau/dispnv04/disp.c

    33	
    34	int
    35	nv04_display_create(struct drm_device *dev)
    36	{
    37		struct nouveau_drm *drm = nouveau_drm(dev);
    38		struct nvkm_i2c *i2c = nvxx_i2c(&drm->client.device);
    39		struct dcb_table *dcb = &drm->vbios.dcb;
    40		struct drm_connector *connector, *ct;
    41		struct drm_encoder *encoder;
    42		struct nouveau_encoder *nv_encoder;
    43		struct nouveau_crtc *crtc;
    44		struct nv04_display *disp;
    45		int i, ret;
    46	
    47		disp = kzalloc(sizeof(*disp), GFP_KERNEL);
    48		if (!disp)
    49			return -ENOMEM;
    50	
    51		nvif_object_map(&drm->client.device.object, NULL, 0);
    52	
    53		nouveau_display(dev)->priv = disp;
    54		nouveau_display(dev)->dtor = nv04_display_destroy;
    55		nouveau_display(dev)->init = nv04_display_init;
    56		nouveau_display(dev)->fini = nv04_display_fini;
    57	
    58		/* Pre-nv50 doesn't support atomic, so don't expose the ioctls */
  > 59		dev->driver_features &= ~DRIVER_ATOMIC;
    60	
    61		nouveau_hw_save_vga_fonts(dev, 1);
    62	
    63		nv04_crtc_create(dev, 0);
    64		if (nv_two_heads(dev))
    65			nv04_crtc_create(dev, 1);
    66	
    67		for (i = 0; i < dcb->entries; i++) {
    68			struct dcb_output *dcbent = &dcb->entry[i];
    69	
    70			connector = nouveau_connector_create(dev, dcbent->connector);
    71			if (IS_ERR(connector))
    72				continue;
    73	
    74			switch (dcbent->type) {
    75			case DCB_OUTPUT_ANALOG:
    76				ret = nv04_dac_create(connector, dcbent);
    77				break;
    78			case DCB_OUTPUT_LVDS:
    79			case DCB_OUTPUT_TMDS:
    80				ret = nv04_dfp_create(connector, dcbent);
    81				break;
    82			case DCB_OUTPUT_TV:
    83				if (dcbent->location == DCB_LOC_ON_CHIP)
    84					ret = nv17_tv_create(connector, dcbent);
    85				else
    86					ret = nv04_tv_create(connector, dcbent);
    87				break;
    88			default:
    89				NV_WARN(drm, "DCB type %d not known\n", dcbent->type);
    90				continue;
    91			}
    92	
    93			if (ret)
    94				continue;
    95		}
    96	
    97		list_for_each_entry_safe(connector, ct,
    98					 &dev->mode_config.connector_list, head) {
    99			if (!connector->encoder_ids[0]) {
   100				NV_WARN(drm, "%s has no encoders, removing\n",
   101					connector->name);
   102				connector->funcs->destroy(connector);
   103			}
   104		}
   105	
   106		list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
   107			struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
   108			struct nvkm_i2c_bus *bus =
   109				nvkm_i2c_bus_find(i2c, nv_encoder->dcb->i2c_index);
   110			nv_encoder->i2c = bus ? &bus->i2c : NULL;
   111		}
   112	
   113		/* Save previous state */
   114		list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head)
   115			crtc->save(&crtc->base);
   116	
   117		list_for_each_entry(nv_encoder, &dev->mode_config.encoder_list, base.base.head)
   118			nv_encoder->enc_save(&nv_encoder->base.base);
   119	
   120		nouveau_overlay_init(dev);
   121	
   122		return 0;
   123	}
   124	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 65150 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20180914/038f0406/attachment-0001.gz>


More information about the dri-devel mailing list