sparc32: Kill trap table freeing code.
Normally, srmmu uses different trap table register values to allow determination of the cpu we're on. All of the trap tables have identical content, they just sit at different offsets from the first trap table, and the offset shifted down and masked out determines the cpu we are on. The code tries to free them up when they aren't actually used (don't have all 4 cpus, we're on sun4d, etc.) but that causes problems. For one thing it triggers false positives in the DMA debugging code. And fixing that up while preserving this relative offset thing isn't trivial. So just kill the freeing code, it costs us at most 3 pages, big deal... Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
e2c6cbd9ac
Коммит
a9919646d1
|
@ -162,9 +162,6 @@ extern void cpu_panic(void);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern struct linux_prom_registers smp_penguin_ctable;
|
extern struct linux_prom_registers smp_penguin_ctable;
|
||||||
extern unsigned long trapbase_cpu1[];
|
|
||||||
extern unsigned long trapbase_cpu2[];
|
|
||||||
extern unsigned long trapbase_cpu3[];
|
|
||||||
|
|
||||||
void __init smp4d_boot_cpus(void)
|
void __init smp4d_boot_cpus(void)
|
||||||
{
|
{
|
||||||
|
@ -235,25 +232,6 @@ void __init smp4d_smp_done(void)
|
||||||
*prev = first;
|
*prev = first;
|
||||||
local_flush_cache_all();
|
local_flush_cache_all();
|
||||||
|
|
||||||
/* Free unneeded trap tables */
|
|
||||||
ClearPageReserved(virt_to_page(trapbase_cpu1));
|
|
||||||
init_page_count(virt_to_page(trapbase_cpu1));
|
|
||||||
free_page((unsigned long)trapbase_cpu1);
|
|
||||||
totalram_pages++;
|
|
||||||
num_physpages++;
|
|
||||||
|
|
||||||
ClearPageReserved(virt_to_page(trapbase_cpu2));
|
|
||||||
init_page_count(virt_to_page(trapbase_cpu2));
|
|
||||||
free_page((unsigned long)trapbase_cpu2);
|
|
||||||
totalram_pages++;
|
|
||||||
num_physpages++;
|
|
||||||
|
|
||||||
ClearPageReserved(virt_to_page(trapbase_cpu3));
|
|
||||||
init_page_count(virt_to_page(trapbase_cpu3));
|
|
||||||
free_page((unsigned long)trapbase_cpu3);
|
|
||||||
totalram_pages++;
|
|
||||||
num_physpages++;
|
|
||||||
|
|
||||||
/* Ok, they are spinning and ready to go. */
|
/* Ok, they are spinning and ready to go. */
|
||||||
smp_processors_ready = 1;
|
smp_processors_ready = 1;
|
||||||
sun4d_distribute_irqs();
|
sun4d_distribute_irqs();
|
||||||
|
|
|
@ -121,9 +121,6 @@ void __cpuinit smp4m_callin(void)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern struct linux_prom_registers smp_penguin_ctable;
|
extern struct linux_prom_registers smp_penguin_ctable;
|
||||||
extern unsigned long trapbase_cpu1[];
|
|
||||||
extern unsigned long trapbase_cpu2[];
|
|
||||||
extern unsigned long trapbase_cpu3[];
|
|
||||||
|
|
||||||
void __init smp4m_boot_cpus(void)
|
void __init smp4m_boot_cpus(void)
|
||||||
{
|
{
|
||||||
|
@ -193,29 +190,6 @@ void __init smp4m_smp_done(void)
|
||||||
*prev = first;
|
*prev = first;
|
||||||
local_flush_cache_all();
|
local_flush_cache_all();
|
||||||
|
|
||||||
/* Free unneeded trap tables */
|
|
||||||
if (!cpu_isset(1, cpu_present_map)) {
|
|
||||||
ClearPageReserved(virt_to_page(trapbase_cpu1));
|
|
||||||
init_page_count(virt_to_page(trapbase_cpu1));
|
|
||||||
free_page((unsigned long)trapbase_cpu1);
|
|
||||||
totalram_pages++;
|
|
||||||
num_physpages++;
|
|
||||||
}
|
|
||||||
if (!cpu_isset(2, cpu_present_map)) {
|
|
||||||
ClearPageReserved(virt_to_page(trapbase_cpu2));
|
|
||||||
init_page_count(virt_to_page(trapbase_cpu2));
|
|
||||||
free_page((unsigned long)trapbase_cpu2);
|
|
||||||
totalram_pages++;
|
|
||||||
num_physpages++;
|
|
||||||
}
|
|
||||||
if (!cpu_isset(3, cpu_present_map)) {
|
|
||||||
ClearPageReserved(virt_to_page(trapbase_cpu3));
|
|
||||||
init_page_count(virt_to_page(trapbase_cpu3));
|
|
||||||
free_page((unsigned long)trapbase_cpu3);
|
|
||||||
totalram_pages++;
|
|
||||||
num_physpages++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Ok, they are spinning and ready to go. */
|
/* Ok, they are spinning and ready to go. */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче