Messages in this thread | | | Date | Wed, 12 Mar 2008 14:08:06 -0400 | From | Vivek Goyal <> | Subject | Re: [RFC] [Patch] calgary iommu: Use the first kernel's tce tables in kdump |
| |
On Wed, Mar 12, 2008 at 11:58:20AM +0200, Muli Ben-Yehuda wrote: > On Wed, Mar 12, 2008 at 10:38:49AM +0530, Chandru wrote: > > > The system booted! , :) with the following change. Muli acceptable?? > > > > static void calgary_watchdog(unsigned long data) > > { > > ... > > ... > > /* Disable bus that caused the error and ignore if it's kdump kernel */ > > + if ( !is_kdump_kernel()) { > > target = calgary_reg(bbar, phb_offset(tbl->it_busno) | > > PHB_CONFIG_RW_OFFSET); > > val32 = be32_to_cpu(readl(target)); > > val32 |= PHB_SLOT_DISABLE; > > writel(cpu_to_be32(val32), target); > > + } > > readl(target); /* flush */ > > Yikes, not really :-) > > You're basically saying "if we're in a kdump kernel, let's ignore all > DMA errors and hope for the best". This is not really acceptable. What > we could do is limit the scope of ignorance - only ignore errors from > the point the kdump kernel starts booting until we have reinitialized > the device and then go back to handling DMA errors correctly. >
Agree. Ignoring all the DMA errors in kdump kernel does not sound very good.
On a side note, typically how much time does it take to for DMA operations to finish. Can we wait for a random amount of time in second kernel, hoping all the DMA operations are complete, and then setup a new table?
This can be atleast a stop gap solution till we come up with a good solution?
Thanks Vivek
| |