Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f5f5fb3 authored by Joerg Roedel's avatar Joerg Roedel Committed by Ingo Molnar
Browse files

x86, AMD IOMMU: initialize device table properly



This patch adds device table initializations which forbids memory accesses
for devices per default and disables all page faults.

Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 519c31ba
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -800,6 +800,21 @@ static int __init init_memory_definitions(struct acpi_table_header *table)
	return 0;
}

/*
 * Init the device table to not allow DMA access for devices and
 * suppress all page faults
 */
static void init_device_table(void)
{
	u16 devid;

	for (devid = 0; devid <= amd_iommu_last_bdf; ++devid) {
		set_dev_entry_bit(devid, DEV_ENTRY_VALID);
		set_dev_entry_bit(devid, DEV_ENTRY_TRANSLATION);
		set_dev_entry_bit(devid, DEV_ENTRY_NO_PAGE_FAULT);
	}
}

/*
 * This function finally enables all IOMMUs found in the system after
 * they have been initialized
@@ -931,6 +946,9 @@ int __init amd_iommu_init(void)
	if (amd_iommu_pd_alloc_bitmap == NULL)
		goto free;

	/* init the device table */
	init_device_table();

	/*
	 * let all alias entries point to itself
	 */
+1 −0
Original line number Diff line number Diff line
@@ -103,6 +103,7 @@
#define DEV_ENTRY_TRANSLATION   0x01
#define DEV_ENTRY_IR            0x3d
#define DEV_ENTRY_IW            0x3e
#define DEV_ENTRY_NO_PAGE_FAULT	0x62
#define DEV_ENTRY_EX            0x67
#define DEV_ENTRY_SYSMGT1       0x68
#define DEV_ENTRY_SYSMGT2       0x69