drivers/soc/tegra/ari-tegra186.c

Source file repositories/reference/linux-study-clean/drivers/soc/tegra/ari-tegra186.c

File Facts

System
Linux kernel
Corpus path
drivers/soc/tegra/ari-tegra186.c
Extension
.c
Size
2032 bytes
Lines
81
Domain
Driver Families
Bucket
drivers/soc
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

if (status & SERR_STATUS_VAL) {
			u64 addr, misc1, misc2;

			read_uncore_mca(MCA_ARI_CMD_RD_SERR, i,
					MCA_ARI_RW_SUBIDX_ADDR, 0, &addr);
			read_uncore_mca(MCA_ARI_CMD_RD_SERR, i,
					MCA_ARI_RW_SUBIDX_MSC1, 0, &misc1);
			read_uncore_mca(MCA_ARI_CMD_RD_SERR, i,
					MCA_ARI_RW_SUBIDX_MSC2, 0, &misc2);

			pr_crit("Machine Check Error in %s\n"
				"  status=0x%llx addr=0x%llx\n"
				"  msc1=0x%llx msc2=0x%llx\n",
				bank_names[i], status, addr, misc1, misc2);
		}
	}

	return NOTIFY_DONE;
}

static struct notifier_block tegra186_ari_panic_nb = {
	.notifier_call = tegra186_ari_panic_handler,
};

static int __init tegra186_ari_init(void)
{
	if (of_machine_is_compatible("nvidia,tegra186"))
		atomic_notifier_chain_register(&panic_notifier_list, &tegra186_ari_panic_nb);

	return 0;
}
early_initcall(tegra186_ari_init);

Annotation

Implementation Notes