STRUCT PCC_CHAN_INFO(9)
π struct pcc_chan_info(9) π
okay so this is a page straight out of the Kernel API Manual, and bestie, it's literally the whole personality of one PCC channel in a single struct. one (1) channel. that's it. that's the vibe. β¨
πΈ NAME πΈ
struct pcc_chan_info β the PCC channel specific information. all the little details that belong to one channel, no sharing, no cap. π
π¦ SYNOPSIS π¦
struct pcc_chan_info {
struct pcc_mbox_chan chan;
struct pcc_chan_reg db;
struct pcc_chan_reg plat_irq_ack;
struct pcc_chan_reg cmd_complete;
struct pcc_chan_reg cmd_update;
struct pcc_chan_reg error;
int plat_irq;
u8 type;
unsigned int plat_irq_flags;
bool chan_in_use;
};
look at her. ten members. every single one iconic. π
π Members π
okay so let's go through the whole cast, one by one, because they all matter:
chanβ the PCC channel information, and yes it comes with the Shared Memory Region info too. the whole package. π«Άdbβ the PCC register bundle for the doorbell register. ring ring, bestie πplat_irq_ackβ the PCC register bundle for the platform interrupt acknowledge register. acknowledging, but make it platform. β¨cmd_completeβ the PCC register bundle for the command complete check register. did it finish? this one knows. πcmd_updateβ the PCC register bundle for the command complete update register. the "update" half of the complete situation. π₯errorβ the PCC register bundle for the error status register. the one nobody wants a notification from. πplat_irqβ the platform interrupt. just anint. living its simple life. πtypeβ the PCC subspace type, chillin' as au8. βplat_irq_flagsβ the platform interrupt flags. unspecifiedunsigned intenergy. π§chan_in_useβ okay this one's the main character, so listen up: it's a lockless flag, and it's used by type 3 initiator subspaces to filter platform interrupts. only one transfer can occur at a time, BUT the interrupt handler may sample the flag on another CPU β so all accesses must useREAD_ONCEorWRITE_ONCE. not optional, not a suggestion, literally must. π other subspace types do not test it at all, so if that's you, you can lowkey ignore it. π
bestie I'm serious about theREAD_ONCE/WRITE_ONCEthing. lockless means the compiler will absolutely betray you if you let it. that's giving undefined behaviour, and undefined behaviour is not the aesthetic we're going for. π
π₯ SEE ALSO π₯
the whole friend group, all in the kernel file ./drivers/mailbox/pcc.c:
struct pcc_chan_reg(9)pcc_map_interrupt(9)pcc_mbox_irq(9)pcc_mbox_request_channel(9)pcc_mbox_free_channel(9)pcc_send_data(9)pcc_startup(9)pcc_shutdown(9)parse_pcc_subspace(9)pcc_parse_subspace_irq(9)pcc_parse_subspace_db_reg(9)pcc_parse_subspace_shmem(9)acpi_pcc_probe(9)pcc_mbox_probe(9)
aaaand that's the page, bestie π this one comes to you from ./drivers/mailbox, dated October 2026 β go forth and don't forget your WRITE_ONCE ππ¦
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms