arch/x86/platform/intel/iosf_mbi.c
Source file repositories/reference/linux-study-clean/arch/x86/platform/intel/iosf_mbi.c
File Facts
- System
- Linux kernel
- Corpus path
arch/x86/platform/intel/iosf_mbi.c- Extension
.c- Size
- 14895 bytes
- Lines
- 559
- Domain
- Architecture Layer
- Bucket
- arch/x86
- Inferred role
- Architecture Layer: operation-table or driver-model contract
- Status
- pattern implementation candidate
Why This File Exists
CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- Defines an operation table; this is where Linux turns generic core objects into subsystem-specific behavior.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/delay.hlinux/module.hlinux/init.hlinux/spinlock.hlinux/pci.hlinux/debugfs.hlinux/capability.hlinux/pm_qos.hlinux/wait.hasm/iosf_mbi.h
Detected Declarations
function iosf_mbi_form_mcrfunction iosf_mbi_pci_read_mdrfunction iosf_mbi_pci_write_mdrfunction iosf_mbi_readfunction iosf_mbi_writefunction iosf_mbi_modifyfunction iosf_mbi_availablefunction iosf_mbi_punit_acquirefunction iosf_mbi_punit_releasefunction iosf_mbi_get_semfunction iosf_mbi_reset_semaphorefunction iosf_mbi_punit_acquirefunction iosf_mbi_unblock_punit_i2c_accessfunction iosf_mbi_register_pmic_bus_access_notifierfunction iosf_mbi_unregister_pmic_bus_access_notifier_unlockedfunction iosf_mbi_assert_punit_acquiredfunction mcr_getfunction mcr_setfunction iosf_sideband_debug_initfunction iosf_debugfs_initfunction iosf_debugfs_removefunction iosf_debugfs_initfunction iosf_mbi_initfunction iosf_mbi_exitmodule init iosf_mbi_initexport iosf_mbi_readexport iosf_mbi_writeexport iosf_mbi_modifyexport iosf_mbi_availableexport iosf_mbi_punit_acquireexport iosf_mbi_punit_releaseexport iosf_mbi_block_punit_i2c_accessexport iosf_mbi_unblock_punit_i2c_accessexport iosf_mbi_register_pmic_bus_access_notifierexport iosf_mbi_unregister_pmic_bus_access_notifier_unlockedexport iosf_mbi_assert_punit_acquired
Annotated Snippet
static struct pci_driver iosf_mbi_pci_driver = {
.name = "iosf_mbi_pci",
.probe = iosf_mbi_probe,
.id_table = iosf_mbi_pci_ids,
};
static int __init iosf_mbi_init(void)
{
iosf_debugfs_init();
cpu_latency_qos_add_request(&iosf_mbi_pm_qos, PM_QOS_DEFAULT_VALUE);
return pci_register_driver(&iosf_mbi_pci_driver);
}
static void __exit iosf_mbi_exit(void)
{
iosf_debugfs_remove();
pci_unregister_driver(&iosf_mbi_pci_driver);
pci_dev_put(mbi_pdev);
mbi_pdev = NULL;
cpu_latency_qos_remove_request(&iosf_mbi_pm_qos);
}
module_init(iosf_mbi_init);
module_exit(iosf_mbi_exit);
MODULE_AUTHOR("David E. Box <david.e.box@linux.intel.com>");
MODULE_DESCRIPTION("IOSF Mailbox Interface accessor");
MODULE_LICENSE("GPL v2");
Annotation
- Immediate include surface: `linux/delay.h`, `linux/module.h`, `linux/init.h`, `linux/spinlock.h`, `linux/pci.h`, `linux/debugfs.h`, `linux/capability.h`, `linux/pm_qos.h`.
- Detected declarations: `function iosf_mbi_form_mcr`, `function iosf_mbi_pci_read_mdr`, `function iosf_mbi_pci_write_mdr`, `function iosf_mbi_read`, `function iosf_mbi_write`, `function iosf_mbi_modify`, `function iosf_mbi_available`, `function iosf_mbi_punit_acquire`, `function iosf_mbi_punit_release`, `function iosf_mbi_get_sem`.
- Atlas domain: Architecture Layer / arch/x86.
- Implementation status: pattern implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.