Commit d3588ba9 authored by John Rose's avatar John Rose Committed by Paul Mackerras

[PATCH] initialize TCE tables

A fairly recent platform requirement states that the OS must clear the
whole TCE table at setup time, in case firmware left any active
mappings in it.  Without this initialization, dynamic bus removes can
fail.  Firmware rejects these requests if active mappings still exist 
for a slot that has been deallocated by the OS.
Signed-off-by: default avatarJohn Rose <johnrose@austin.ibm.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 0231c290
...@@ -423,6 +423,9 @@ struct iommu_table *iommu_init_table(struct iommu_table *tbl) ...@@ -423,6 +423,9 @@ struct iommu_table *iommu_init_table(struct iommu_table *tbl)
tbl->it_largehint = tbl->it_halfpoint; tbl->it_largehint = tbl->it_halfpoint;
spin_lock_init(&tbl->it_lock); spin_lock_init(&tbl->it_lock);
/* Clear the hardware table in case firmware left allocations in it */
ppc_md.tce_free(tbl, tbl->it_offset, tbl->it_size);
if (!welcomed) { if (!welcomed) {
printk(KERN_INFO "IOMMU table initialized, virtual merging %s\n", printk(KERN_INFO "IOMMU table initialized, virtual merging %s\n",
novmerge ? "disabled" : "enabled"); novmerge ? "disabled" : "enabled");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment