void gk104_grctx_generate_gpc_tpc_nr(struct gf100_gr *);
 
 extern const struct gf100_grctx_func gk20a_grctx;
-void gk104_grctx_generate_main(struct gf100_gr *, struct gf100_grctx *);
 void gk104_grctx_generate_bundle(struct gf100_grctx *);
 void gk104_grctx_generate_pagepool(struct gf100_grctx *);
 void gk104_grctx_generate_patch_ltc(struct gf100_grctx *);
 extern const struct gf100_grctx_func gm20b_grctx;
 
 extern const struct gf100_grctx_func gp100_grctx;
-void gp100_grctx_generate_main(struct gf100_gr *, struct gf100_grctx *);
 void gp100_grctx_generate_pagepool(struct gf100_grctx *);
 void gp100_grctx_generate_smid_config(struct gf100_gr *);
 
 
        }
 }
 
-static void
-gf117_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
-{
-       struct nvkm_device *device = gr->base.engine.subdev.device;
-       const struct gf100_grctx_func *grctx = gr->func->grctx;
-       u32 idle_timeout;
-
-       nvkm_mc_unk260(device, 0);
-
-       gf100_gr_mmio(gr, grctx->hub);
-       gf100_gr_mmio(gr, grctx->gpc);
-       gf100_gr_mmio(gr, grctx->zcull);
-       gf100_gr_mmio(gr, grctx->tpc);
-       gf100_gr_mmio(gr, grctx->ppc);
-
-       idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
-
-       grctx->bundle(info);
-       grctx->pagepool(info);
-       grctx->attrib(info);
-       grctx->unkn(gr);
-
-       gf100_grctx_generate_floorsweep(gr);
-
-       gf100_gr_icmd(gr, grctx->icmd);
-       nvkm_wr32(device, 0x404154, idle_timeout);
-       gf100_gr_mthd(gr, grctx->mthd);
-       nvkm_mc_unk260(device, 1);
-}
-
 const struct gf100_grctx_func
 gf117_grctx = {
-       .main  = gf117_grctx_generate_main,
+       .main  = gf100_grctx_generate_main,
        .unkn  = gk104_grctx_generate_unkn,
        .hub   = gf117_grctx_pack_hub,
        .gpc   = gf117_grctx_pack_gpc,
 
        nvkm_wr32(device, 0x405b00, (gr->tpc_total << 8) | gr->gpc_nr);
 }
 
-void
-gk104_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
-{
-       struct nvkm_device *device = gr->base.engine.subdev.device;
-       const struct gf100_grctx_func *grctx = gr->func->grctx;
-       u32 idle_timeout;
-
-       nvkm_mc_unk260(device, 0);
-
-       gf100_gr_mmio(gr, grctx->hub);
-       gf100_gr_mmio(gr, grctx->gpc);
-       gf100_gr_mmio(gr, grctx->zcull);
-       gf100_gr_mmio(gr, grctx->tpc);
-       gf100_gr_mmio(gr, grctx->ppc);
-
-       idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
-
-       grctx->bundle(info);
-       grctx->pagepool(info);
-       grctx->attrib(info);
-       grctx->unkn(gr);
-
-       gf100_grctx_generate_floorsweep(gr);
-
-       gf100_gr_icmd(gr, grctx->icmd);
-       nvkm_wr32(device, 0x404154, idle_timeout);
-       gf100_gr_mthd(gr, grctx->mthd);
-       nvkm_mc_unk260(device, 1);
-
-       grctx->r418800(gr);
-}
-
 void
 gk104_grctx_generate_alpha_beta_tables(struct gf100_gr *gr)
 {
 
 const struct gf100_grctx_func
 gk104_grctx = {
-       .main  = gk104_grctx_generate_main,
+       .main  = gf100_grctx_generate_main,
        .unkn  = gk104_grctx_generate_unkn,
        .hub   = gk104_grctx_pack_hub,
        .gpc   = gk104_grctx_pack_gpc,
 
 
 const struct gf100_grctx_func
 gk110_grctx = {
-       .main  = gk104_grctx_generate_main,
+       .main  = gf100_grctx_generate_main,
        .unkn  = gk104_grctx_generate_unkn,
        .hub   = gk110_grctx_pack_hub,
        .gpc   = gk110_grctx_pack_gpc,
 
 
 const struct gf100_grctx_func
 gk110b_grctx = {
-       .main  = gk104_grctx_generate_main,
+       .main  = gf100_grctx_generate_main,
        .unkn  = gk104_grctx_generate_unkn,
        .hub   = gk110_grctx_pack_hub,
        .gpc   = gk110_grctx_pack_gpc,
 
 
 const struct gf100_grctx_func
 gk208_grctx = {
-       .main  = gk104_grctx_generate_main,
+       .main  = gf100_grctx_generate_main,
        .unkn  = gk104_grctx_generate_unkn,
        .hub   = gk208_grctx_pack_hub,
        .gpc   = gk208_grctx_pack_gpc,
 
        nvkm_wr32(device, TPC_UNIT(gpc, tpc, 0x088), sm);
 }
 
-static void
-gm107_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
-{
-       struct nvkm_device *device = gr->base.engine.subdev.device;
-       const struct gf100_grctx_func *grctx = gr->func->grctx;
-       u32 idle_timeout;
-
-       gf100_gr_mmio(gr, grctx->hub);
-       gf100_gr_mmio(gr, grctx->gpc);
-       gf100_gr_mmio(gr, grctx->zcull);
-       gf100_gr_mmio(gr, grctx->tpc);
-       gf100_gr_mmio(gr, grctx->ppc);
-
-       idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
-
-       grctx->bundle(info);
-       grctx->pagepool(info);
-       grctx->attrib(info);
-       grctx->unkn(gr);
-
-       gf100_grctx_generate_floorsweep(gr);
-
-       gf100_gr_icmd(gr, grctx->icmd);
-       nvkm_wr32(device, 0x404154, idle_timeout);
-       gf100_gr_mthd(gr, grctx->mthd);
-
-       grctx->r419e00(gr);
-}
-
 const struct gf100_grctx_func
 gm107_grctx = {
-       .main  = gm107_grctx_generate_main,
+       .main  = gf100_grctx_generate_main,
        .unkn  = gk104_grctx_generate_unkn,
        .hub   = gm107_grctx_pack_hub,
        .gpc   = gm107_grctx_pack_gpc,
 
        nvkm_wr32(gr->base.engine.subdev.device, 0x406500, 0x00000000);
 }
 
-static void
-gm200_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
-{
-       struct nvkm_device *device = gr->base.engine.subdev.device;
-       const struct gf100_grctx_func *grctx = gr->func->grctx;
-       u32 idle_timeout;
-
-       gf100_gr_mmio(gr, gr->fuc_sw_ctx);
-
-       idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
-
-       grctx->bundle(info);
-       grctx->pagepool(info);
-       grctx->attrib(info);
-       grctx->unkn(gr);
-
-       gf100_grctx_generate_floorsweep(gr);
-
-       gf100_gr_icmd(gr, gr->fuc_bundle);
-       nvkm_wr32(device, 0x404154, idle_timeout);
-       gf100_gr_mthd(gr, gr->fuc_method);
-
-       grctx->r418e94(gr);
-}
-
 void
 gm200_grctx_generate_dist_skip_table(struct gf100_gr *gr)
 {
 
 const struct gf100_grctx_func
 gm200_grctx = {
-       .main  = gm200_grctx_generate_main,
+       .main  = gf100_grctx_generate_main,
        .unkn  = gk104_grctx_generate_unkn,
        .bundle = gm107_grctx_generate_bundle,
        .bundle_size = 0x3000,
 
                nvkm_wr32(device, 0x405ba0 + (i * 4), gpcs[i]);
 }
 
-void
-gp100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
-{
-       struct nvkm_device *device = gr->base.engine.subdev.device;
-       const struct gf100_grctx_func *grctx = gr->func->grctx;
-       u32 idle_timeout;
-
-       gf100_gr_mmio(gr, gr->fuc_sw_ctx);
-
-       idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
-
-       grctx->pagepool(info);
-       grctx->bundle(info);
-       grctx->attrib(info);
-       grctx->unkn(gr);
-
-       gf100_grctx_generate_floorsweep(gr);
-
-       gf100_gr_icmd(gr, gr->fuc_bundle);
-       nvkm_wr32(device, 0x404154, idle_timeout);
-       gf100_gr_mthd(gr, gr->fuc_method);
-}
-
 const struct gf100_grctx_func
 gp100_grctx = {
-       .main  = gp100_grctx_generate_main,
+       .main  = gf100_grctx_generate_main,
        .unkn  = gk104_grctx_generate_unkn,
        .bundle = gm107_grctx_generate_bundle,
        .bundle_size = 0x3000,
 
 
 const struct gf100_grctx_func
 gp102_grctx = {
-       .main = gp100_grctx_generate_main,
+       .main = gf100_grctx_generate_main,
        .unkn = gk104_grctx_generate_unkn,
        .bundle = gm107_grctx_generate_bundle,
        .bundle_size = 0x3000,
 
 
 const struct gf100_grctx_func
 gp104_grctx = {
-       .main = gp100_grctx_generate_main,
+       .main = gf100_grctx_generate_main,
        .unkn = gk104_grctx_generate_unkn,
        .bundle = gm107_grctx_generate_bundle,
        .bundle_size = 0x3000,
 
 
 const struct gf100_grctx_func
 gp107_grctx = {
-       .main = gp100_grctx_generate_main,
+       .main = gf100_grctx_generate_main,
        .unkn = gk104_grctx_generate_unkn,
        .bundle = gm107_grctx_generate_bundle,
        .bundle_size = 0x3000,