| .. | .. |
|---|
| 25 | 25 | * |
|---|
| 26 | 26 | **************************************************************************/ |
|---|
| 27 | 27 | |
|---|
| 28 | | -#include "vmwgfx_drv.h" |
|---|
| 29 | | -#include <drm/drmP.h> |
|---|
| 28 | +#include <linux/sched/signal.h> |
|---|
| 29 | + |
|---|
| 30 | 30 | #include <drm/ttm/ttm_placement.h> |
|---|
| 31 | + |
|---|
| 32 | +#include "vmwgfx_drv.h" |
|---|
| 31 | 33 | |
|---|
| 32 | 34 | struct vmw_temp_set_context { |
|---|
| 33 | 35 | SVGA3dCmdHeader header; |
|---|
| .. | .. |
|---|
| 393 | 395 | WARN(1, "Command buffer has not been allocated.\n"); |
|---|
| 394 | 396 | ret = NULL; |
|---|
| 395 | 397 | } |
|---|
| 396 | | - if (IS_ERR_OR_NULL(ret)) { |
|---|
| 397 | | - DRM_ERROR("Fifo reserve failure of %u bytes.\n", |
|---|
| 398 | | - (unsigned) bytes); |
|---|
| 399 | | - dump_stack(); |
|---|
| 398 | + if (IS_ERR_OR_NULL(ret)) |
|---|
| 400 | 399 | return NULL; |
|---|
| 401 | | - } |
|---|
| 402 | 400 | |
|---|
| 403 | 401 | return ret; |
|---|
| 404 | 402 | } |
|---|
| .. | .. |
|---|
| 542 | 540 | int ret = 0; |
|---|
| 543 | 541 | uint32_t bytes = sizeof(u32) + sizeof(*cmd_fence); |
|---|
| 544 | 542 | |
|---|
| 545 | | - fm = vmw_fifo_reserve(dev_priv, bytes); |
|---|
| 543 | + fm = VMW_FIFO_RESERVE(dev_priv, bytes); |
|---|
| 546 | 544 | if (unlikely(fm == NULL)) { |
|---|
| 547 | 545 | *seqno = atomic_read(&dev_priv->marker_seq); |
|---|
| 548 | 546 | ret = -ENOMEM; |
|---|
| .. | .. |
|---|
| 601 | 599 | SVGA3dCmdWaitForQuery body; |
|---|
| 602 | 600 | } *cmd; |
|---|
| 603 | 601 | |
|---|
| 604 | | - cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); |
|---|
| 605 | | - |
|---|
| 606 | | - if (unlikely(cmd == NULL)) { |
|---|
| 607 | | - DRM_ERROR("Out of fifo space for dummy query.\n"); |
|---|
| 602 | + cmd = VMW_FIFO_RESERVE(dev_priv, sizeof(*cmd)); |
|---|
| 603 | + if (unlikely(cmd == NULL)) |
|---|
| 608 | 604 | return -ENOMEM; |
|---|
| 609 | | - } |
|---|
| 610 | 605 | |
|---|
| 611 | 606 | cmd->header.id = SVGA_3D_CMD_WAIT_FOR_QUERY; |
|---|
| 612 | 607 | cmd->header.size = sizeof(cmd->body); |
|---|
| .. | .. |
|---|
| 615 | 610 | |
|---|
| 616 | 611 | if (bo->mem.mem_type == TTM_PL_VRAM) { |
|---|
| 617 | 612 | cmd->body.guestResult.gmrId = SVGA_GMR_FRAMEBUFFER; |
|---|
| 618 | | - cmd->body.guestResult.offset = bo->offset; |
|---|
| 613 | + cmd->body.guestResult.offset = bo->mem.start << PAGE_SHIFT; |
|---|
| 619 | 614 | } else { |
|---|
| 620 | 615 | cmd->body.guestResult.gmrId = bo->mem.start; |
|---|
| 621 | 616 | cmd->body.guestResult.offset = 0; |
|---|
| .. | .. |
|---|
| 650 | 645 | SVGA3dCmdWaitForGBQuery body; |
|---|
| 651 | 646 | } *cmd; |
|---|
| 652 | 647 | |
|---|
| 653 | | - cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); |
|---|
| 654 | | - |
|---|
| 655 | | - if (unlikely(cmd == NULL)) { |
|---|
| 656 | | - DRM_ERROR("Out of fifo space for dummy query.\n"); |
|---|
| 648 | + cmd = VMW_FIFO_RESERVE(dev_priv, sizeof(*cmd)); |
|---|
| 649 | + if (unlikely(cmd == NULL)) |
|---|
| 657 | 650 | return -ENOMEM; |
|---|
| 658 | | - } |
|---|
| 659 | 651 | |
|---|
| 660 | 652 | cmd->header.id = SVGA_3D_CMD_WAIT_FOR_GB_QUERY; |
|---|
| 661 | 653 | cmd->header.size = sizeof(cmd->body); |
|---|
| .. | .. |
|---|
| 696 | 688 | return vmw_fifo_emit_dummy_gb_query(dev_priv, cid); |
|---|
| 697 | 689 | |
|---|
| 698 | 690 | return vmw_fifo_emit_dummy_legacy_query(dev_priv, cid); |
|---|
| 699 | | -} |
|---|
| 700 | | - |
|---|
| 701 | | -void *vmw_fifo_reserve(struct vmw_private *dev_priv, uint32_t bytes) |
|---|
| 702 | | -{ |
|---|
| 703 | | - return vmw_fifo_reserve_dx(dev_priv, bytes, SVGA3D_INVALID_ID); |
|---|
| 704 | 691 | } |
|---|