gpu: nvgpu: mig: Defer dev_nodes creation and create new power node to support MIG

- This is deferring the dev_nodes creation after power_on to
select the MIG config and to create the dev_nodes as per the
selected MIG config.

- The patch is adding a device node to issue power on. The
nodes are:
 for igpu :/dev/nvgpu/igpu0/power
 for dgpu:/dev/nvgpu/dgpu-0001:01:00.0/power

To issue power on :
echo "1" > /dev/nvgpu/igpu0/power
echo "1" > /dev/nvgpu/dgpu-0001:01:00.0/power

JIRA NVGPU-6633

Change-Id: Ic4f1f3e42724cc788dcfaf0e881d188fd3bd1ce1
Signed-off-by: dt <dt@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2512647
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
dt
2021-04-09 06:54:50 +00:00
committed by mobile promotions
parent cfc1281223
commit 639ca4edfb
9 changed files with 355 additions and 21 deletions

View File

@@ -438,6 +438,18 @@ int gk20a_pm_finalize_poweron(struct device *dev)
if (err)
goto done;
/**
* TODO: Need to add nvgpu_early_poweron() sequence before
* creating device nodes.
*/
if (!l->dev_nodes_created) {
err = gk20a_user_init(dev);
if (err) {
goto done;
}
l->dev_nodes_created = true;
}
if (g->sim) {
if (g->sim->sim_init_late)
err = g->sim->sim_init_late(g);
@@ -530,6 +542,9 @@ done:
if (err != 0) {
nvgpu_disable_irqs(g);
nvgpu_remove_sim_support_linux(g);
if (l->dev_nodes_created) {
gk20a_user_deinit(dev);
}
}
nvgpu_mutex_release(&g->power_lock);