Re: [RFC] [Patch] calgary iommu: Use the first kernel's tce tablesin kdump

From: Chandru
Date: Wed Mar 12 2008 - 01:09:18 EST



Hi Chandru,

- How do we make sure that previous kernel's TCE tables are not
overwritten
by new kernel (In case previous kernel allocated TCE tables in first
640 KB?)
TCE tables are allocated using alloc_bootmem_low() with goal set to 0. Don't know if this will be sufficient. Investigating...
- How do we make sure that when new kernel tries to setup an entry in
TCE table, then it does not try to clear up an existing entry which is
still in use?
A bitmap is created once the first kernel's TCE table is found. This bitmap is populated by reading the entries in the tce table. Non-zero entries in the table are marked as used/reserved in the bitmap.
Did you try the Muli suggestion of ignoring DMA error in exception
handler?
With what I tried, I was not successful
What happens if I setup new table and try to switch to new
table?
This is the root cause of the problem.
Some sort of error will occur.
The pci bus on that PHB goes into an undefined state ( returning 0xffffffff for all reads on that bus ).
Can't we modify the handler and
ignore it for kdump case and move on?
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 */
..
..
}
Thanks
Vivek
-Chandru
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/