setup.c (ba67cf5cf2ce10ad86a212b70f8c7c75d93a5016) | setup.c (9ee820fa005254dfc816330f6654f14dcb2beee1) |
---|---|
1/* 2 * 64-bit pSeries and RS/6000 setup code. 3 * 4 * Copyright (C) 1995 Linus Torvalds 5 * Adapted from 'alpha' version by Gary Thomas 6 * Modified by Cort Dougan (cort@cs.nmt.edu) 7 * Modified by PPC64 Team, IBM Corp 8 * --- 39 unchanged lines hidden (view full) --- 48#include <asm/rtas.h> 49#include <asm/pci-bridge.h> 50#include <asm/iommu.h> 51#include <asm/dma.h> 52#include <asm/machdep.h> 53#include <asm/irq.h> 54#include <asm/time.h> 55#include <asm/nvram.h> | 1/* 2 * 64-bit pSeries and RS/6000 setup code. 3 * 4 * Copyright (C) 1995 Linus Torvalds 5 * Adapted from 'alpha' version by Gary Thomas 6 * Modified by Cort Dougan (cort@cs.nmt.edu) 7 * Modified by PPC64 Team, IBM Corp 8 * --- 39 unchanged lines hidden (view full) --- 48#include <asm/rtas.h> 49#include <asm/pci-bridge.h> 50#include <asm/iommu.h> 51#include <asm/dma.h> 52#include <asm/machdep.h> 53#include <asm/irq.h> 54#include <asm/time.h> 55#include <asm/nvram.h> |
56#include "xics.h" | |
57#include <asm/pmc.h> 58#include <asm/mpic.h> | 56#include <asm/pmc.h> 57#include <asm/mpic.h> |
58#include <asm/xics.h> |
|
59#include <asm/ppc-pci.h> 60#include <asm/i8259.h> 61#include <asm/udbg.h> 62#include <asm/smp.h> 63#include <asm/firmware.h> 64#include <asm/eeh.h> 65#include <asm/pSeries_reconfig.h> 66 --- 133 unchanged lines hidden (view full) --- 200 201 /* Add ISUs */ 202 opplen /= sizeof(u32); 203 for (n = 0, i = naddr; i < opplen; i += naddr, n++) { 204 unsigned long isuaddr = of_read_number(opprop + i, naddr); 205 mpic_assign_isu(mpic, n, isuaddr); 206 } 207 | 59#include <asm/ppc-pci.h> 60#include <asm/i8259.h> 61#include <asm/udbg.h> 62#include <asm/smp.h> 63#include <asm/firmware.h> 64#include <asm/eeh.h> 65#include <asm/pSeries_reconfig.h> 66 --- 133 unchanged lines hidden (view full) --- 200 201 /* Add ISUs */ 202 opplen /= sizeof(u32); 203 for (n = 0, i = naddr; i < opplen; i += naddr, n++) { 204 unsigned long isuaddr = of_read_number(opprop + i, naddr); 205 mpic_assign_isu(mpic, n, isuaddr); 206 } 207 |
208 /* Setup top-level get_irq */ 209 ppc_md.get_irq = mpic_get_irq; 210 |
|
208 /* All ISUs are setup, complete initialization */ 209 mpic_init(mpic); 210 211 /* Look for cascade */ 212 pseries_setup_i8259_cascade(); 213} 214 215static void __init pseries_xics_init_IRQ(void) 216{ | 211 /* All ISUs are setup, complete initialization */ 212 mpic_init(mpic); 213 214 /* Look for cascade */ 215 pseries_setup_i8259_cascade(); 216} 217 218static void __init pseries_xics_init_IRQ(void) 219{ |
217 xics_init_IRQ(); | 220 xics_init(); |
218 pseries_setup_i8259_cascade(); 219} 220 221static void pseries_lpar_enable_pmcs(void) 222{ 223 unsigned long set, reset; 224 225 set = 1UL << 63; --- 7 unchanged lines hidden (view full) --- 233 const char *typep; 234 235 for (np = NULL; (np = of_find_node_by_name(np, 236 "interrupt-controller"));) { 237 typep = of_get_property(np, "compatible", NULL); 238 if (strstr(typep, "open-pic")) { 239 pSeries_mpic_node = of_node_get(np); 240 ppc_md.init_IRQ = pseries_mpic_init_IRQ; | 221 pseries_setup_i8259_cascade(); 222} 223 224static void pseries_lpar_enable_pmcs(void) 225{ 226 unsigned long set, reset; 227 228 set = 1UL << 63; --- 7 unchanged lines hidden (view full) --- 236 const char *typep; 237 238 for (np = NULL; (np = of_find_node_by_name(np, 239 "interrupt-controller"));) { 240 typep = of_get_property(np, "compatible", NULL); 241 if (strstr(typep, "open-pic")) { 242 pSeries_mpic_node = of_node_get(np); 243 ppc_md.init_IRQ = pseries_mpic_init_IRQ; |
241 ppc_md.get_irq = mpic_get_irq; | |
242 setup_kexec_cpu_down_mpic(); 243 smp_init_pseries_mpic(); 244 return; 245 } else if (strstr(typep, "ppc-xicp")) { 246 ppc_md.init_IRQ = pseries_xics_init_IRQ; 247 setup_kexec_cpu_down_xics(); 248 smp_init_pseries_xics(); 249 return; --- 148 unchanged lines hidden (view full) --- 398 /* We want to catch accesses from kernel and userspace */ 399 return plpar_hcall_norets(H_SET_XDABR, dabr, 400 H_DABRX_KERNEL | H_DABRX_USER); 401} 402 403#define CMO_CHARACTERISTICS_TOKEN 44 404#define CMO_MAXLENGTH 1026 405 | 244 setup_kexec_cpu_down_mpic(); 245 smp_init_pseries_mpic(); 246 return; 247 } else if (strstr(typep, "ppc-xicp")) { 248 ppc_md.init_IRQ = pseries_xics_init_IRQ; 249 setup_kexec_cpu_down_xics(); 250 smp_init_pseries_xics(); 251 return; --- 148 unchanged lines hidden (view full) --- 400 /* We want to catch accesses from kernel and userspace */ 401 return plpar_hcall_norets(H_SET_XDABR, dabr, 402 H_DABRX_KERNEL | H_DABRX_USER); 403} 404 405#define CMO_CHARACTERISTICS_TOKEN 44 406#define CMO_MAXLENGTH 1026 407 |
408void pSeries_coalesce_init(void) 409{ 410 struct hvcall_mpp_x_data mpp_x_data; 411 412 if (firmware_has_feature(FW_FEATURE_CMO) && !h_get_mpp_x(&mpp_x_data)) 413 powerpc_firmware_features |= FW_FEATURE_XCMO; 414 else 415 powerpc_firmware_features &= ~FW_FEATURE_XCMO; 416} 417 |
|
406/** 407 * fw_cmo_feature_init - FW_FEATURE_CMO is not stored in ibm,hypertas-functions, 408 * handle that here. (Stolen from parse_system_parameter_string) 409 */ 410void pSeries_cmo_feature_init(void) 411{ 412 char *ptr, *key, *value, *end; 413 int call_status; --- 53 unchanged lines hidden (view full) --- 467 CMO_PageSize = 1 << page_order; 468 pr_debug("CMO_PageSize = %lu\n", CMO_PageSize); 469 470 if (CMO_PrPSP != -1 || CMO_SecPSP != -1) { 471 pr_info("CMO enabled\n"); 472 pr_debug("CMO enabled, PrPSP=%d, SecPSP=%d\n", CMO_PrPSP, 473 CMO_SecPSP); 474 powerpc_firmware_features |= FW_FEATURE_CMO; | 418/** 419 * fw_cmo_feature_init - FW_FEATURE_CMO is not stored in ibm,hypertas-functions, 420 * handle that here. (Stolen from parse_system_parameter_string) 421 */ 422void pSeries_cmo_feature_init(void) 423{ 424 char *ptr, *key, *value, *end; 425 int call_status; --- 53 unchanged lines hidden (view full) --- 479 CMO_PageSize = 1 << page_order; 480 pr_debug("CMO_PageSize = %lu\n", CMO_PageSize); 481 482 if (CMO_PrPSP != -1 || CMO_SecPSP != -1) { 483 pr_info("CMO enabled\n"); 484 pr_debug("CMO enabled, PrPSP=%d, SecPSP=%d\n", CMO_PrPSP, 485 CMO_SecPSP); 486 powerpc_firmware_features |= FW_FEATURE_CMO; |
487 pSeries_coalesce_init(); |
|
475 } else 476 pr_debug("CMO not enabled, PrPSP=%d, SecPSP=%d\n", CMO_PrPSP, 477 CMO_SecPSP); 478 spin_unlock(&rtas_data_buf_lock); 479 pr_debug(" <- fw_cmo_feature_init()\n"); 480} 481 482/* --- 212 unchanged lines hidden --- | 488 } else 489 pr_debug("CMO not enabled, PrPSP=%d, SecPSP=%d\n", CMO_PrPSP, 490 CMO_SecPSP); 491 spin_unlock(&rtas_data_buf_lock); 492 pr_debug(" <- fw_cmo_feature_init()\n"); 493} 494 495/* --- 212 unchanged lines hidden --- |