forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-13 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e
kernel/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
....@@ -25,9 +25,11 @@
2525 *
2626 **************************************************************************/
2727
28
-#include "vmwgfx_drv.h"
29
-#include <drm/drmP.h>
28
+#include <linux/sched/signal.h>
29
+
3030 #include <drm/ttm/ttm_placement.h>
31
+
32
+#include "vmwgfx_drv.h"
3133
3234 struct vmw_temp_set_context {
3335 SVGA3dCmdHeader header;
....@@ -167,10 +169,8 @@
167169 {
168170 u32 *fifo_mem = dev_priv->mmio_virt;
169171
170
- preempt_disable();
171172 if (cmpxchg(fifo_mem + SVGA_FIFO_BUSY, 0, 1) == 0)
172173 vmw_write(dev_priv, SVGA_REG_SYNC, reason);
173
- preempt_enable();
174174 }
175175
176176 void vmw_fifo_release(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo)
....@@ -395,12 +395,8 @@
395395 WARN(1, "Command buffer has not been allocated.\n");
396396 ret = NULL;
397397 }
398
- if (IS_ERR_OR_NULL(ret)) {
399
- DRM_ERROR("Fifo reserve failure of %u bytes.\n",
400
- (unsigned) bytes);
401
- dump_stack();
398
+ if (IS_ERR_OR_NULL(ret))
402399 return NULL;
403
- }
404400
405401 return ret;
406402 }
....@@ -544,7 +540,7 @@
544540 int ret = 0;
545541 uint32_t bytes = sizeof(u32) + sizeof(*cmd_fence);
546542
547
- fm = vmw_fifo_reserve(dev_priv, bytes);
543
+ fm = VMW_FIFO_RESERVE(dev_priv, bytes);
548544 if (unlikely(fm == NULL)) {
549545 *seqno = atomic_read(&dev_priv->marker_seq);
550546 ret = -ENOMEM;
....@@ -603,12 +599,9 @@
603599 SVGA3dCmdWaitForQuery body;
604600 } *cmd;
605601
606
- cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd));
607
-
608
- if (unlikely(cmd == NULL)) {
609
- DRM_ERROR("Out of fifo space for dummy query.\n");
602
+ cmd = VMW_FIFO_RESERVE(dev_priv, sizeof(*cmd));
603
+ if (unlikely(cmd == NULL))
610604 return -ENOMEM;
611
- }
612605
613606 cmd->header.id = SVGA_3D_CMD_WAIT_FOR_QUERY;
614607 cmd->header.size = sizeof(cmd->body);
....@@ -617,7 +610,7 @@
617610
618611 if (bo->mem.mem_type == TTM_PL_VRAM) {
619612 cmd->body.guestResult.gmrId = SVGA_GMR_FRAMEBUFFER;
620
- cmd->body.guestResult.offset = bo->offset;
613
+ cmd->body.guestResult.offset = bo->mem.start << PAGE_SHIFT;
621614 } else {
622615 cmd->body.guestResult.gmrId = bo->mem.start;
623616 cmd->body.guestResult.offset = 0;
....@@ -652,12 +645,9 @@
652645 SVGA3dCmdWaitForGBQuery body;
653646 } *cmd;
654647
655
- cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd));
656
-
657
- if (unlikely(cmd == NULL)) {
658
- DRM_ERROR("Out of fifo space for dummy query.\n");
648
+ cmd = VMW_FIFO_RESERVE(dev_priv, sizeof(*cmd));
649
+ if (unlikely(cmd == NULL))
659650 return -ENOMEM;
660
- }
661651
662652 cmd->header.id = SVGA_3D_CMD_WAIT_FOR_GB_QUERY;
663653 cmd->header.size = sizeof(cmd->body);
....@@ -698,9 +688,4 @@
698688 return vmw_fifo_emit_dummy_gb_query(dev_priv, cid);
699689
700690 return vmw_fifo_emit_dummy_legacy_query(dev_priv, cid);
701
-}
702
-
703
-void *vmw_fifo_reserve(struct vmw_private *dev_priv, uint32_t bytes)
704
-{
705
- return vmw_fifo_reserve_dx(dev_priv, bytes, SVGA3D_INVALID_ID);
706691 }