Commit 1cd97b54 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/gr/tu102-: use sw_veid_bundle_init from firmware



NVIDIA provided this on Turing, but we kept using the hardcoded version
from Volta (where they didn't).

Switch to the firmware version prior to Ampere.

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
parent edc6938f
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1381,12 +1381,17 @@ gf100_grctx_generate_main(struct gf100_gr_chan *chan)
	gf100_gr_wait_idle(gr);

	if (grctx->r400088) grctx->r400088(gr, false);

	if (gr->bundle)
		gf100_gr_icmd(gr, gr->bundle);
	else
		gf100_gr_icmd(gr, grctx->icmd);

	if (gr->bundle_veid)
		gf100_gr_icmd(gr, gr->bundle_veid);
	if (grctx->sw_veid_bundle_init)
		gf100_gr_icmd(gr, grctx->sw_veid_bundle_init);

	if (grctx->r400088) grctx->r400088(gr, true);

	nvkm_wr32(device, 0x404154, idle_timeout);
+0 −1
Original line number Diff line number Diff line
@@ -153,7 +153,6 @@ extern const struct gf100_grctx_func gv100_grctx;
extern const struct gf100_grctx_func tu102_grctx;
void gv100_grctx_unkn88c(struct gf100_gr *, bool);
void gv100_grctx_generate_unkn(struct gf100_gr *);
extern const struct gf100_gr_init gv100_grctx_init_sw_veid_bundle_init_0[];
void gv100_grctx_generate_attrib_cb(struct gf100_gr_chan *, u64, u32);
void gv100_grctx_generate_attrib(struct gf100_gr_chan *);
void gv100_grctx_generate_rop_mapping(struct gf100_gr *);
+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@
 * PGRAPH context implementation
 ******************************************************************************/

const struct gf100_gr_init
static const struct gf100_gr_init
gv100_grctx_init_sw_veid_bundle_init_0[] = {
	{ 0x00001000, 64, 0x00100000, 0x00000008 },
	{ 0x00000941, 64, 0x00100000, 0x00000000 },
+0 −1
Original line number Diff line number Diff line
@@ -51,7 +51,6 @@ tu102_grctx_init_unknown_bundle_init_0[] = {

static const struct gf100_gr_pack
tu102_grctx_pack_sw_veid_bundle_init[] = {
	{ gv100_grctx_init_sw_veid_bundle_init_0 },
	{ tu102_grctx_init_unknown_bundle_init_0 },
	{}
};
+1 −0
Original line number Diff line number Diff line
@@ -2139,6 +2139,7 @@ gf100_gr_dtor(struct nvkm_gr *base)
	nvkm_blob_dtor(&gr->gpccs.inst);
	nvkm_blob_dtor(&gr->gpccs.data);

	vfree(gr->bundle_veid);
	vfree(gr->bundle);
	vfree(gr->method);
	vfree(gr->sw_ctx);
Loading