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

From: Vivek Goyal
Date: Tue Mar 11 2008 - 09:42:50 EST


On Mon, Mar 10, 2008 at 06:50:29PM +0530, Chandru wrote:

[..]
> - specified_table_size = determine_tce_table_size(end_pfn *
> PAGE_SIZE);
> + max_pfn = is_kdump_kernel() ? saved_max_pfn : end_pfn ;
> + specified_table_size = determine_tce_table_size(max_pfn *
> PAGE_SIZE);
>
> for (bus = 0; bus < MAX_PHB_BUS_NUM; bus++) {
> struct calgary_bus_info *info = &bus_info[bus];
> @@ -1411,10 +1480,16 @@ void __init detect_calgary(void)
>
> if (calgary_bus_has_devices(bus, pci_device) ||
> translate_empty_slots) {
> - tbl = alloc_tce_table();
> - if (!tbl)
> - goto cleanup;
> - info->tce_space = tbl;
> + /*
> + * If this is a kdump kernel find and use
> + * the tce tables from first kernel
> + */
> + if (!is_kdump_kernel()) {
> + tbl = alloc_tce_table();
> + if (!tbl)
> + goto cleanup;
> + info->tce_space = tbl;
> + }

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?)

- 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?

Did you try the Muli suggestion of ignoring DMA error in exception
handler? What happens if I setup new table and try to switch to new
table? Some sort of error will occur. Can't we modify the handler and
ignore it for kdump case and move on?

Thanks
Vivek
--
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/