| // SPDX-License-Identifier: MIT | |
| /* | |
| * Copyright © 2025 Intel Corporation | |
| */ | |
| #include "xe_pagefault.h" | |
| #include "xe_pagefault_types.h" | |
| /** | |
| * DOC: Xe page faults | |
| * | |
| * Xe page faults are handled in two layers. The producer layer interacts with | |
| * hardware or firmware to receive and parse faults into struct xe_pagefault, | |
| * then forwards them to the consumer. The consumer layer services the faults | |
| * (e.g., memory migration, page table updates) and acknowledges the result back | |
| * to the producer, which then forwards the results to the hardware or firmware. | |
| * The consumer uses a page fault queue sized to absorb all potential faults and | |
| * a multi-threaded worker to process them. Multiple producers are supported, | |
| * with a single shared consumer. | |
| * | |
| * xe_pagefault.c implements the consumer layer. | |
| */ | |
| /** | |
| * xe_pagefault_init() - Page fault init | |
| * @xe: xe device instance | |
| * | |
| * Initialize Xe page fault state. Must be done after reading fuses. | |
| * | |
| * Return: 0 on Success, errno on failure | |
| */ | |
| int xe_pagefault_init(struct xe_device *xe) | |
| { | |
| /* TODO - implement */ | |
| return 0; | |
| } | |
| /** | |
| * xe_pagefault_reset() - Page fault reset for a GT | |
| * @xe: xe device instance | |
| * @gt: GT being reset | |
| * | |
| * Reset the Xe page fault state for a GT; that is, squash any pending faults on | |
| * the GT. | |
| */ | |
| void xe_pagefault_reset(struct xe_device *xe, struct xe_gt *gt) | |
| { | |
| /* TODO - implement */ | |
| } | |
| /** | |
| * xe_pagefault_handler() - Page fault handler | |
| * @xe: xe device instance | |
| * @pf: Page fault | |
| * | |
| * Sink the page fault to a queue (i.e., a memory buffer) and queue a worker to | |
| * service it. Safe to be called from IRQ or process context. Reclaim safe. | |
| * | |
| * Return: 0 on success, errno on failure | |
| */ | |
| int xe_pagefault_handler(struct xe_device *xe, struct xe_pagefault *pf) | |
| { | |
| /* TODO - implement */ | |
| return 0; | |
| } |