Skip to content

Commit 00f78a1

Browse files
committed
update(riscv/iommu): add multi-lvl DDT support
Signed-off-by: Manuel Rodríguez <[email protected]>
1 parent 565359b commit 00f78a1

File tree

3 files changed

+461
-77
lines changed

3 files changed

+461
-77
lines changed

src/arch/riscv/inc/arch/iommu.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,15 @@ struct iommu_vm_arch {
1313
EMPTY_STRUCT_FIELDS
1414
};
1515

16+
struct vm;
17+
void rv_iommu_fq_irq_handler(irqid_t irq_id);
18+
void alloc_2lvl_vptrs(void);
19+
void up_1lvl_to_2lvl(void);
20+
void alloc_3lvl_vptrs(void);
21+
void up_2lvl_to_3lvl(void);
22+
void ddt_init(void);
23+
void rv_iommu_init(void);
24+
bool rv_iommu_alloc_did(deviceid_t dev_id);
25+
void rv_iommu_write_ddt(deviceid_t dev_id, struct vm* vm, paddr_t root_pt);
26+
1627
#endif /* __IOMMU_ARCH_H__ */

src/arch/riscv/inc/arch/platform.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ struct arch_platform {
2323

2424
struct {
2525
paddr_t base; // Base address of the IOMMU mmapped IF
26-
unsigned mode; // Overall IOMMU mode (Off, Bypass, DDT-lvl)
2726
irqid_t fq_irq_id; // Fault Queue IRQ ID (wired)
2827
} iommu;
2928

0 commit comments

Comments
 (0)