Changeset 64172 in vbox
- Timestamp:
- Oct 6, 2016 6:38:00 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 111155
- Location:
- trunk/src/VBox/Additions/linux/drm
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/linux/drm/files_vboxvideo_drv
r64164 r64172 28 28 ${PATH_ROOT}/include/iprt/latin1.h=>include/iprt/latin1.h \ 29 29 ${PATH_ROOT}/include/iprt/list.h=>include/iprt/list.h \ 30 ${PATH_ROOT}/include/iprt/log.h=>include/iprt/log.h \31 30 ${PATH_ROOT}/include/iprt/param.h=>include/iprt/param.h \ 32 31 ${PATH_ROOT}/include/iprt/stdarg.h=>include/iprt/stdarg.h \ … … 38 37 ${PATH_ROOT}/include/VBox/cdefs.h=>include/VBox/cdefs.h \ 39 38 ${PATH_ROOT}/include/VBox/err.h=>include/VBox/err.h \ 40 ${PATH_ROOT}/include/VBox/log.h=>include/VBox/log.h \41 39 ${PATH_ROOT}/include/VBox/ostypes.h=>include/VBox/ostypes.h \ 42 40 ${PATH_ROOT}/include/VBox/param.h=>include/VBox/param.h \ -
trunk/src/VBox/Additions/linux/drm/vbox_drv.h
r63771 r64172 51 51 #define LOG_GROUP LOG_GROUP_DEV_VGA 52 52 53 #include "the-linux-kernel.h"54 55 53 #include <VBox/VBoxVideoGuest.h> 56 #include <VBox/log.h>57 54 58 55 #include <drm/drmP.h> -
trunk/src/VBox/Additions/linux/drm/vbox_fb.c
r62550 r64172 89 89 struct drm_clip_rect rect; 90 90 91 LogFunc(("vboxvideo: %d\n", __LINE__));92 91 obj = fbdev->afb.obj; 93 92 bo = gem_to_vbox_bo(obj); … … 126 125 fbdev->y2 = y2; 127 126 spin_unlock_irqrestore(&fbdev->dirty_lock, flags); 128 LogFunc(("vboxvideo: %d\n", __LINE__));129 127 return; 130 128 } … … 155 153 rect.y2 = y2 + 1; 156 154 vbox_framebuffer_dirty_rectangles(&fbdev->afb.base, &rect, 1); 157 LogFunc(("vboxvideo: %d, bo->kmap.virtual=%p, fbdev->sysram=%p, x=%d, y=%d, x2=%d, y2=%d, unmap=%RTbool\n",158 __LINE__, bo->kmap.virtual, fbdev->sysram, (int)x, (int)y, (int)x2, (int)y2, unmap));159 155 if (unmap) 160 156 ttm_bo_kunmap(&bo->kmap); … … 201 197 { 202 198 struct vbox_fbdev *fbdev = info->par; 203 LogFunc(("vboxvideo: %d\n", __LINE__));204 199 sys_fillrect(info, rect); 205 200 vbox_dirty_update(fbdev, rect->dx, rect->dy, rect->width, … … 211 206 { 212 207 struct vbox_fbdev *fbdev = info->par; 213 LogFunc(("vboxvideo: %d\n", __LINE__));214 208 sys_copyarea(info, area); 215 209 vbox_dirty_update(fbdev, area->dx, area->dy, area->width, … … 221 215 { 222 216 struct vbox_fbdev *fbdev = info->par; 223 LogFunc(("vboxvideo: %d\n", __LINE__));224 217 sys_imageblit(info, image); 225 218 vbox_dirty_update(fbdev, image->dx, image->dy, image->width, … … 256 249 257 250 int ret = 0; 258 LogFunc(("vboxvideo: %d\n", __LINE__));259 251 drm_fb_get_bpp_depth(mode_cmd->pixel_format, &depth, &bpp); 260 252 … … 265 257 266 258 *gobj_p = gobj; 267 LogFunc(("vboxvideo: %d\n", __LINE__));268 259 return ret; 269 260 } … … 284 275 struct drm_gem_object *gobj = NULL; 285 276 struct vbox_bo *bo = NULL; 286 LogFunc(("vboxvideo: %d\n", __LINE__));287 277 mode_cmd.width = sizes->surface_width; 288 278 mode_cmd.height = sizes->surface_height; … … 369 359 fb->width, fb->height); 370 360 371 LogFunc(("vboxvideo: %d\n", __LINE__));372 361 return 0; 373 362 out: 374 LogFunc(("vboxvideo: %d\n", __LINE__));375 363 return ret; 376 364 } … … 401 389 struct fb_info *info; 402 390 struct vbox_framebuffer *afb = &fbdev->afb; 403 LogFunc(("vboxvideo: %d\n", __LINE__));404 391 if (fbdev->helper.fbdev) { 405 392 info = fbdev->helper.fbdev; … … 421 408 #endif 422 409 drm_framebuffer_cleanup(&afb->base); 423 LogFunc(("vboxvideo: %d\n", __LINE__));424 410 } 425 411 … … 430 416 int ret; 431 417 432 LogFunc(("vboxvideo: %d\n", __LINE__));433 418 fbdev = kzalloc(sizeof(struct vbox_fbdev), GFP_KERNEL); 434 419 if (!fbdev) … … 458 443 goto fini; 459 444 460 LogFunc(("vboxvideo: %d\n", __LINE__));461 445 return 0; 462 446 fini: … … 465 449 kfree(fbdev); 466 450 vbox->fbdev = NULL; 467 LogFunc(("vboxvideo: %d, ret=%d\n", __LINE__, ret));468 451 return ret; 469 452 } … … 476 459 return; 477 460 478 LogFunc(("vboxvideo: %d\n", __LINE__));479 461 vbox_fbdev_destroy(dev, vbox->fbdev); 480 462 kfree(vbox->fbdev); … … 486 468 struct vbox_private *vbox = dev->dev_private; 487 469 488 LogFunc(("vboxvideo: %d\n", __LINE__));489 470 if (!vbox->fbdev) 490 471 return; -
trunk/src/VBox/Additions/linux/drm/vbox_irq.c
r62550 r64172 111 111 hints = &vbox->last_mode_hints[vbox_connector->vbox_crtc->crtc_id]; 112 112 if (hints->magic == VBVAMODEHINT_MAGIC) { 113 LogFunc(("vboxvideo: %d: crtc_id=%u, mode %hdx%hd(enabled:%d),%hdx%hd\n",114 __LINE__, (unsigned)vbox_connector->vbox_crtc->crtc_id,115 (short)hints->cx, (short)hints->cy, (int)hints->fEnabled,116 (short)hints->dx, (short)hints->dy));117 113 disconnected = !(hints->fEnabled); 118 114 crtc_id = vbox_connector->vbox_crtc->crtc_id; … … 150 146 hotplug_work); 151 147 152 LogFunc(("vboxvideo: %d: vbox=%p\n", __LINE__, vbox));153 148 vbox_update_mode_hints(vbox); 154 149 drm_kms_helper_hotplug_event(vbox->dev); … … 159 154 int ret; 160 155 161 LogFunc(("vboxvideo: %d: vbox=%p\n", __LINE__, vbox));162 156 vbox_update_mode_hints(vbox); 163 157 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) … … 173 167 INIT_WORK(&vbox->hotplug_work, vbox_hotplug_worker); 174 168 vbox->isr_installed = true; 175 LogFunc(("vboxvideo: %d: vbox=%p\n", __LINE__, vbox));176 169 return 0; 177 170 } … … 179 172 void vbox_irq_fini(struct vbox_private *vbox) 180 173 { 181 LogFunc(("vboxvideo: %d: vbox=%p\n", __LINE__, vbox));182 174 if (vbox->isr_installed) { 183 175 drm_irq_uninstall(vbox->dev); -
trunk/src/VBox/Additions/linux/drm/vbox_main.c
r63771 r64172 60 60 drm_gem_object_unreference_unlocked(vbox_fb->obj); 61 61 62 LogFunc(("vboxvideo: %d: vbox_fb=%p, vbox_fb->obj=%p\n", __LINE__,63 vbox_fb, vbox_fb->obj));64 62 drm_framebuffer_cleanup(fb); 65 63 kfree(fb); … … 72 70 uint32_t vram_map_offset = vbox->available_vram_size - vbox->vram_map_start; 73 71 74 AssertLogRelReturnVoid(vbox->vbva_info != NULL); 72 if (vbox->vbva_info == NULL) { /* Should never happen... */ 73 printk(KERN_ERR "vboxvideo: failed to set up VBVA.\n"); 74 return; 75 } 75 76 for (i = 0; i < vbox->num_crtcs; ++i) { 76 77 if (vbox->vbva_info[i].pVBVA == NULL) { 77 LogFunc(("vboxvideo: enabling VBVA.\n"));78 78 vbva = (struct VBVABUFFER *) ( ((uint8_t *)vbox->mapped_vram) 79 79 + vram_map_offset … … 115 115 unsigned i; 116 116 117 LogFunc(("vboxvideo: %d: fb=%p, num_rects=%u, vbox=%p\n", __LINE__, fb,118 num_rects, vbox));119 117 mutex_lock(&vbox->hw_mutex); 120 118 list_for_each_entry(crtc, &fb->dev->mode_config.crtc_list, head) { … … 148 146 } 149 147 mutex_unlock(&vbox->hw_mutex); 150 LogFunc(("vboxvideo: %d\n", __LINE__));151 148 } 152 149 … … 177 174 int ret; 178 175 179 LogFunc(("vboxvideo: %d: dev=%p, vbox_fb=%p, obj=%p\n", __LINE__, dev,180 vbox_fb, obj));181 176 drm_helper_mode_fill_fb_struct(&vbox_fb->base, mode_cmd); 182 177 vbox_fb->obj = obj; … … 184 179 if (ret) { 185 180 DRM_ERROR("framebuffer init failed %d\n", ret); 186 LogFunc(("vboxvideo: %d\n", __LINE__));187 181 return ret; 188 182 } 189 LogFunc(("vboxvideo: %d\n", __LINE__));190 183 return 0; 191 184 } … … 203 196 int ret; 204 197 205 LogFunc(("vboxvideo: %d\n", __LINE__));206 198 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0) 207 199 obj = drm_gem_object_lookup(filp, mode_cmd->handles[0]); … … 224 216 return ERR_PTR(ret); 225 217 } 226 LogFunc(("vboxvideo: %d\n", __LINE__));227 218 return &vbox_fb->base; 228 219 } … … 245 236 { 246 237 unsigned i; 247 LogFunc(("vboxvideo: %d: vbox=%p, vbox->num_crtcs=%u, vbox->vbva_info=%p\n",248 __LINE__, vbox, (unsigned)vbox->num_crtcs, vbox->vbva_info));249 238 if (!vbox->vbva_info) 250 239 { … … 261 250 vbox->available_vram_size + i * VBVA_MIN_BUFFER_SIZE, 262 251 VBVA_MIN_BUFFER_SIZE); 263 LogFunc(("vboxvideo: %d: vbox->vbva_info=%p, vbox->available_vram_size=%u\n",264 __LINE__, vbox->vbva_info, (unsigned)vbox->available_vram_size));265 252 return 0; 266 253 } … … 360 347 int ret = 0; 361 348 362 LogFunc(("vboxvideo: %d: dev=%p\n", __LINE__, dev));363 349 if (!VBoxHGSMIIsSupported()) 364 350 return -ENODEV; … … 400 386 if (ret) 401 387 goto out_free; 402 LogFunc(("vboxvideo: %d: vbox=%p, vbox->mapped_vram=%p, vbox->full_vram_size=%u\n",403 __LINE__, vbox, vbox->mapped_vram, (unsigned)vbox->full_vram_size));404 388 return 0; 405 389 out_free: 406 390 vbox_driver_unload(dev); 407 LogFunc(("vboxvideo: %d: ret=%d\n", __LINE__, ret));408 391 return ret; 409 392 } … … 413 396 struct vbox_private *vbox = dev->dev_private; 414 397 415 LogFunc(("vboxvideo: %d\n", __LINE__));416 398 vbox_fbdev_fini(dev); 417 399 vbox_irq_fini(vbox); … … 426 408 kfree(vbox); 427 409 dev->dev_private = NULL; 428 LogFunc(("vboxvideo: %d\n", __LINE__));429 410 return 0; 430 411 } … … 454 435 int ret; 455 436 456 LogFunc(("vboxvideo: %d: dev=%p, size=%u, iskernel=%u\n", __LINE__,457 dev, (unsigned)size, (unsigned)iskernel));458 437 *obj = NULL; 459 438 … … 469 448 } 470 449 *obj = &vboxbo->gem; 471 LogFunc(("vboxvideo: %d: obj=%p\n", __LINE__, obj));472 450 return 0; 473 451 } … … 481 459 u32 handle; 482 460 483 LogFunc(("vboxvideo: %d: args->width=%u, args->height=%u, args->bpp=%u\n",484 __LINE__, (unsigned)args->width, (unsigned)args->height,485 (unsigned)args->bpp));486 461 args->pitch = args->width * ((args->bpp + 7) / 8); 487 462 args->size = args->pitch * args->height; … … 498 473 499 474 args->handle = handle; 500 LogFunc(("vboxvideo: %d: args->handle=%u\n", __LINE__,501 (unsigned)args->handle));502 475 return 0; 503 476 } … … 508 481 uint32_t handle) 509 482 { 510 LogFunc(("vboxvideo: %d: dev=%p, handle=%u\n", __LINE__, dev,511 (unsigned)handle));512 483 return drm_gem_handle_delete(file, handle); 513 484 } … … 521 492 return; 522 493 523 LogFunc(("vboxvideo: %d: bo=%p\n", __LINE__, bo));524 494 tbo = &((*bo)->bo); 525 495 ttm_bo_unref(&tbo); … … 532 502 struct vbox_bo *vbox_bo = gem_to_vbox_bo(obj); 533 503 534 LogFunc(("vboxvideo: %d: vbox_bo=%p\n", __LINE__, vbox_bo));535 504 vbox_bo_unref(&vbox_bo); 536 505 } … … 555 524 struct vbox_bo *bo; 556 525 557 LogFunc(("vboxvideo: %d: dev=%p, handle=%u\n", __LINE__,558 dev, (unsigned)handle));559 526 mutex_lock(&dev->struct_mutex); 560 527 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0) … … 573 540 drm_gem_object_unreference(obj); 574 541 ret = 0; 575 LogFunc(("vboxvideo: %d: bo=%p, *offset=%llu\n", __LINE__,576 bo, (unsigned long long)*offset));577 542 out_unlock: 578 543 mutex_unlock(&dev->struct_mutex); -
trunk/src/VBox/Additions/linux/drm/vbox_mode.c
r64165 r64172 75 75 uint16_t flags; 76 76 77 LogFunc(("vboxvideo: %d: vbox_crtc=%p, CRTC_FB(crtc)=%p\n", __LINE__,78 vbox_crtc, CRTC_FB(crtc)));79 77 vbox = crtc->dev->dev_private; 80 78 width = mode->hdisplay ? mode->hdisplay : 640; … … 107 105 pitch, width, height, 108 106 vbox_crtc->blanked ? 0 : bpp, flags); 109 LogFunc(("vboxvideo: %d\n", __LINE__));110 107 } 111 108 … … 116 113 void *p; 117 114 118 LogFunc(("vboxvideo: %d: vbox_crtc=%p\n", __LINE__, vbox_crtc));119 115 /* Tell the host about the view. This design originally targeted the 120 116 * Windows XP driver architecture and assumed that each screen would have … … 140 136 else 141 137 return -ENOMEM; 142 LogFunc(("vboxvideo: %d: p=%p\n", __LINE__, p));143 138 return 0; 144 139 } … … 154 149 struct vbox_private *vbox = crtc->dev->dev_private; 155 150 156 LogFunc(("vboxvideo: %d: vbox_crtc=%p, mode=%d\n", __LINE__, vbox_crtc,157 mode));158 151 switch (mode) { 159 152 case DRM_MODE_DPMS_ON: … … 169 162 vbox_do_modeset(crtc, &crtc->hwmode); 170 163 mutex_unlock(&vbox->hw_mutex); 171 LogFunc(("vboxvideo: %d\n", __LINE__));172 164 } 173 165 … … 192 184 u64 gpu_addr; 193 185 194 LogFunc(("vboxvideo: %d: fb=%p, vbox_crtc=%p\n", __LINE__, fb, vbox_crtc));195 186 /* push the previous fb to system ram */ 196 187 if (!atomic && fb) { … … 235 226 vbox->input_mapping_height = CRTC_FB(crtc)->height; 236 227 } 237 LogFunc(("vboxvideo: %d: vbox_fb=%p, obj=%p, bo=%p, gpu_addr=%u\n",238 __LINE__, vbox_fb, obj, bo, (unsigned)gpu_addr));239 228 return 0; 240 229 } … … 243 232 struct drm_framebuffer *old_fb) 244 233 { 245 LogFunc(("vboxvideo: %d\n", __LINE__));246 234 return vbox_crtc_do_set_base(crtc, old_fb, x, y, 0); 247 235 } … … 256 244 int rc = 0; 257 245 258 LogFunc(("vboxvideo: %d: vbox=%p\n", __LINE__, vbox));259 246 vbox_crtc_mode_set_base(crtc, x, y, old_fb); 260 247 mutex_lock(&vbox->hw_mutex); … … 267 254 vbox->input_mapping_height); 268 255 mutex_unlock(&vbox->hw_mutex); 269 LogFunc(("vboxvideo: %d\n", __LINE__));270 256 return rc; 271 257 } … … 324 310 struct vbox_crtc *vbox_crtc; 325 311 326 LogFunc(("vboxvideo: %d\n", __LINE__));327 312 vbox_crtc = kzalloc(sizeof(struct vbox_crtc), GFP_KERNEL); 328 313 if (!vbox_crtc) … … 333 318 drm_mode_crtc_set_gamma_size(&vbox_crtc->base, 256); 334 319 drm_crtc_helper_add(&vbox_crtc->base, &vbox_crtc_helper_funcs); 335 LogFunc(("vboxvideo: %d: crtc=%p\n", __LINE__, vbox_crtc));336 320 337 321 return vbox_crtc; … … 340 324 static void vbox_encoder_destroy(struct drm_encoder *encoder) 341 325 { 342 LogFunc(("vboxvideo: %d: encoder=%p\n", __LINE__, encoder));343 326 drm_encoder_cleanup(encoder); 344 327 kfree(encoder); … … 358 341 int enc_id = connector->encoder_ids[0]; 359 342 360 LogFunc(("vboxvideo: %d: connector=%p\n", __LINE__, connector));361 343 /* pick the encoder ids */ 362 344 if (enc_id) 363 345 return drm_encoder_find(connector->dev, enc_id); 364 LogFunc(("vboxvideo: %d\n", __LINE__));365 346 return NULL; 366 347 } … … 412 393 struct vbox_encoder *vbox_encoder; 413 394 414 LogFunc(("vboxvideo: %d: dev=%d\n", __LINE__));415 395 vbox_encoder = kzalloc(sizeof(struct vbox_encoder), GFP_KERNEL); 416 396 if (!vbox_encoder) … … 426 406 427 407 vbox_encoder->base.possible_crtcs = 1 << i; 428 LogFunc(("vboxvideo: %d: vbox_encoder=%p\n", __LINE__, vbox_encoder));429 408 return &vbox_encoder->base; 430 409 } … … 498 477 int preferred_width, preferred_height; 499 478 500 LogFunc(("vboxvideo: %d: connector=%p\n", __LINE__, connector));501 479 vbox_connector = to_vbox_connector(connector); 502 480 vbox = connector->dev->dev_private; … … 547 525 struct vbox_connector *vbox_connector = NULL; 548 526 549 LogFunc(("vboxvideo: %d: connector=%p\n", __LINE__, connector));550 527 vbox_connector = to_vbox_connector(connector); 551 528 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) … … 564 541 565 542 (void) force; 566 LogFunc(("vboxvideo: %d: connector=%p\n", __LINE__, connector));567 543 vbox_connector = to_vbox_connector(connector); 568 544 return vbox_connector->mode_hint.disconnected ? … … 576 552 struct drm_display_mode *mode, *iterator; 577 553 578 LogFunc(("vboxvideo: %d: connector=%p, max_x=%lu, max_y = %lu\n", __LINE__,579 connector, (unsigned long)max_x, (unsigned long)max_y));580 554 vbox_connector = to_vbox_connector(connector); 581 555 dev = vbox_connector->base.dev; … … 608 582 struct drm_connector *connector; 609 583 610 LogFunc(("vboxvideo: %d: dev=%p, encoder=%p\n", __LINE__, dev,611 encoder));612 584 vbox_connector = kzalloc(sizeof(struct vbox_connector), GFP_KERNEL); 613 585 if (!vbox_connector) … … 639 611 drm_mode_connector_attach_encoder(connector, encoder); 640 612 641 LogFunc(("vboxvideo: %d: connector=%p\n", __LINE__, connector));642 613 return 0; 643 614 } … … 650 621 unsigned i; 651 622 /* vbox_cursor_init(dev); */ 652 LogFunc(("vboxvideo: %d: dev=%p\n", __LINE__, dev));653 623 for (i = 0; i < vbox->num_crtcs; ++i) 654 624 {
Note:
See TracChangeset
for help on using the changeset viewer.