summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b')
-rw-r--r--drivers/gpu/nvgpu/gv11b/gr_gv11b.c43
1 files changed, 23 insertions, 20 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
index 2e1b4664..9506db3a 100644
--- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * GV11b GPU GR 2 * GV11b GPU GR
3 * 3 *
4 * Copyright (c) 2016-2018, NVIDIA CORPORATION. All rights reserved. 4 * Copyright (c) 2016-2019, NVIDIA CORPORATION. All rights reserved.
5 * 5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a 6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"), 7 * copy of this software and associated documentation files (the "Software"),
@@ -1586,36 +1586,39 @@ int gr_gv11b_set_ctxsw_preemption_mode(struct gk20a *g,
1586 nvgpu_log_info(g, "gfxp context attrib_cb_size=%d", 1586 nvgpu_log_info(g, "gfxp context attrib_cb_size=%d",
1587 attrib_cb_size); 1587 attrib_cb_size);
1588 1588
1589 err = gr_gp10b_alloc_buffer(vm, 1589 /* Only allocate buffers the first time through */
1590 if (!nvgpu_mem_is_valid(&gr_ctx->preempt_ctxsw_buffer)) {
1591 err = gr_gp10b_alloc_buffer(vm,
1590 g->gr.ctx_vars.preempt_image_size, 1592 g->gr.ctx_vars.preempt_image_size,
1591 &gr_ctx->preempt_ctxsw_buffer); 1593 &gr_ctx->preempt_ctxsw_buffer);
1592 if (err) { 1594 if (err) {
1593 nvgpu_err(g, "cannot allocate preempt buffer"); 1595 nvgpu_err(g, "cannot allocate preempt buffer");
1594 goto fail; 1596 goto fail;
1595 } 1597 }
1596 1598
1597 err = gr_gp10b_alloc_buffer(vm, 1599 err = gr_gp10b_alloc_buffer(vm,
1598 spill_size, 1600 spill_size,
1599 &gr_ctx->spill_ctxsw_buffer); 1601 &gr_ctx->spill_ctxsw_buffer);
1600 if (err) { 1602 if (err) {
1601 nvgpu_err(g, "cannot allocate spill buffer"); 1603 nvgpu_err(g, "cannot allocate spill buffer");
1602 goto fail_free_preempt; 1604 goto fail_free_preempt;
1603 } 1605 }
1604 1606
1605 err = gr_gp10b_alloc_buffer(vm, 1607 err = gr_gp10b_alloc_buffer(vm,
1606 attrib_cb_size, 1608 attrib_cb_size,
1607 &gr_ctx->betacb_ctxsw_buffer); 1609 &gr_ctx->betacb_ctxsw_buffer);
1608 if (err) { 1610 if (err) {
1609 nvgpu_err(g, "cannot allocate beta buffer"); 1611 nvgpu_err(g, "cannot allocate beta buffer");
1610 goto fail_free_spill; 1612 goto fail_free_spill;
1611 } 1613 }
1612 1614
1613 err = gr_gp10b_alloc_buffer(vm, 1615 err = gr_gp10b_alloc_buffer(vm,
1614 pagepool_size, 1616 pagepool_size,
1615 &gr_ctx->pagepool_ctxsw_buffer); 1617 &gr_ctx->pagepool_ctxsw_buffer);
1616 if (err) { 1618 if (err) {
1617 nvgpu_err(g, "cannot allocate page pool"); 1619 nvgpu_err(g, "cannot allocate page pool");
1618 goto fail_free_betacb; 1620 goto fail_free_betacb;
1621 }
1619 } 1622 }
1620 1623
1621 gr_ctx->graphics_preempt_mode = graphics_preempt_mode; 1624 gr_ctx->graphics_preempt_mode = graphics_preempt_mode;