lkml.org 
[lkml]   [2008]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC] [Patch] calgary iommu: Use the first kernel's tce tables in kdump

> 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


\
 
 \ /
  Last update: 2008-03-12 06:11    [W:0.621 / U:0.120 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site