Lines Matching +full:used +full:- +full:by +full:- +full:rtas
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * 64-bit pSeries and RS/6000 setup code.
6 * Adapted from 'alpha' version by Gary Thomas
7 * Modified by Cort Dougan (cort@cs.nmt.edu)
8 * Modified by PPC64 Team, IBM Corp
47 #include <asm/rtas.h>
48 #include <asm/pci-bridge.h>
58 #include <asm/ppc-pci.h>
67 #include <asm/isa-bridge.h>
69 #include <asm/asm-const.h>
81 int CMO_PrPSP = -1;
82 int CMO_SecPSP = -1;
105 /* Initialize firmware assisted non-maskable interrupts if
120 ibm_nmi_register_token = rtas_token("ibm,nmi-register"); in fwnmi_init()
124 ibm_nmi_interlock_token = rtas_token("ibm,nmi-interlock"); in fwnmi_init()
130 system_reset_addr = __pa(system_reset_fwnmi) - PHYSICAL_START; in fwnmi_init()
131 machine_check_addr = __pa(machine_check_fwnmi) - PHYSICAL_START; in fwnmi_init()
138 * Allocate a chunk for per cpu buffer to hold rtas errorlog. in fwnmi_init()
139 * It will be used in real mode mce handler, hence it needs to be in fwnmi_init()
150 paca_ptrs[i]->mce_data_buf = mce_data_buf + in fwnmi_init()
166 paca_ptrs[i]->mce_faulty_slbs = slb_ptr + (mmu_slb_size * i); in fwnmi_init()
179 chip->irq_eoi(&desc->irq_data); in pseries_8259_cascade()
190 for_each_node_by_type(np, "interrupt-controller") { in pseries_setup_i8259_cascade()
216 addrp = of_get_property(np, "8259-interrupt-acknowledge", NULL); in pseries_setup_i8259_cascade()
220 intack = addrp[naddr-1]; in pseries_setup_i8259_cascade()
222 intack |= ((unsigned long)addrp[naddr-2]) << 32; in pseries_setup_i8259_cascade()
252 struct device_node *parent, *np = rd->dn; in pci_dn_reconfig_notifier()
261 pci_add_device_node_info(pdn->phb, np); in pci_dn_reconfig_notifier()
268 list_del(&pdn->list); in pci_dn_reconfig_notifier()
286 * and register the buffers with the hypervisor. This is used for
287 * computing time stolen by the hypervisor.
334 * low power mode by ceding processor to hypervisor in pseries_lpar_idle()
358 * just give up rather than wasting any more time on this - if that turns out
483 phb->controller_ops = pseries_pci_controller_ops; in find_and_init_phbs()
498 * The features below are disabled by default, so we instead look to see in init_cpu_char_feature_flags()
501 if (result->character & H_CPU_CHAR_SPEC_BAR_ORI31) in init_cpu_char_feature_flags()
504 if (result->character & H_CPU_CHAR_BCCTRL_SERIALISED) in init_cpu_char_feature_flags()
507 if (result->character & H_CPU_CHAR_L1D_FLUSH_ORI30) in init_cpu_char_feature_flags()
510 if (result->character & H_CPU_CHAR_L1D_FLUSH_TRIG2) in init_cpu_char_feature_flags()
513 if (result->character & H_CPU_CHAR_L1D_THREAD_PRIV) in init_cpu_char_feature_flags()
516 if (result->character & H_CPU_CHAR_COUNT_CACHE_DISABLED) in init_cpu_char_feature_flags()
519 if (result->character & H_CPU_CHAR_BCCTR_FLUSH_ASSIST) in init_cpu_char_feature_flags()
522 if (result->character & H_CPU_CHAR_BCCTR_LINK_FLUSH_ASSIST) in init_cpu_char_feature_flags()
525 if (result->behaviour & H_CPU_BEHAV_FLUSH_COUNT_CACHE) in init_cpu_char_feature_flags()
528 if (result->behaviour & H_CPU_BEHAV_FLUSH_LINK_STACK) in init_cpu_char_feature_flags()
532 * The features below are enabled by default, so we instead look to see in init_cpu_char_feature_flags()
535 if (!(result->behaviour & H_CPU_BEHAV_FAVOUR_SECURITY)) in init_cpu_char_feature_flags()
538 if (!(result->behaviour & H_CPU_BEHAV_L1D_FLUSH_PR)) in init_cpu_char_feature_flags()
541 if (!(result->behaviour & H_CPU_BEHAV_BNDS_CHK_SPEC_BAR)) in init_cpu_char_feature_flags()
553 * Set features to the defaults assumed by init_cpu_char_feature_flags() in pseries_setup_security_mitigations()
617 indexes = of_get_property(dn, "ibm,open-sriov-vf-bar-info", NULL); in pseries_get_iov_fw_value()
656 res = &dev->resource[r + PCI_IOV_RESOURCES]; in of_pci_set_vf_bar_size()
659 res->flags = pci_parse_of_flags(of_read_number in of_pci_set_vf_bar_size()
661 res->flags |= (IORESOURCE_MEM_64 | IORESOURCE_PCI_FIXED); in of_pci_set_vf_bar_size()
662 res->name = pci_name(dev); in of_pci_set_vf_bar_size()
663 res->start = base; in of_pci_set_vf_bar_size()
664 res->end = base + size - 1; in of_pci_set_vf_bar_size()
682 res = &dev->resource[r + PCI_IOV_RESOURCES]; in of_pci_parse_iov_addrs()
685 res->name = pci_name(dev); in of_pci_parse_iov_addrs()
686 res->start = base; in of_pci_parse_iov_addrs()
687 res->end = base + size - 1; in of_pci_parse_iov_addrs()
689 dev_dbg(&dev->dev, in of_pci_parse_iov_addrs()
694 dev_info(&dev->dev, in of_pci_parse_iov_addrs()
697 conflict->name, conflict); in of_pci_parse_iov_addrs()
698 res->flags |= IORESOURCE_UNSET; in of_pci_parse_iov_addrs()
707 pci_warn(pdev, "No hypervisor support for SR-IOV on this device, IOV BARs disabled.\n"); in pseries_disable_sriov_resources()
709 pdev->resource[i + PCI_IOV_RESOURCES].flags = 0; in pseries_disable_sriov_resources()
718 indexes = of_get_property(dn, "ibm,open-sriov-vf-bar-info", NULL); in pseries_pci_fixup_resources()
730 if (!pdev->is_physfn || pci_dev_is_added(pdev)) in pseries_pci_fixup_iov_resources()
733 indexes = of_get_property(dn, "ibm,open-sriov-vf-bar-info", NULL); in pseries_pci_fixup_iov_resources()
747 reg = of_get_property(dn, "ibm,is-open-sriov-pf", NULL); in pseries_pci_iov_resource_alignment()
751 if (!pdev->is_physfn) in pseries_pci_iov_resource_alignment()
754 resno - PCI_IOV_RESOURCES, in pseries_pci_iov_resource_alignment()
772 /* openpic global configuration register (64-bit format). */ in pSeries_setup_arch()
773 /* openpic Interrupt Source Unit pointer (64-bit format). */ in pSeries_setup_arch()
774 /* python0 facility area (mmio) (64-bit format) REAL address. */ in pSeries_setup_arch()
784 /* By default, only probe PCI (can be overridden by rtas_pci) */ in pSeries_setup_arch()
837 ppc_md.progress(init_utsname()->version, 0); in pSeries_init_panel()
884 * fw_cmo_feature_init - FW_FEATURE_CMO is not stored in ibm,hypertas-functions,
893 pr_debug(" -> fw_cmo_feature_init()\n"); in pSeries_cmo_feature_init()
896 call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1, in pSeries_cmo_feature_init()
905 pr_debug(" <- fw_cmo_feature_init()\n"); in pSeries_cmo_feature_init()
909 end = rtas_data_buf + CMO_MAXLENGTH - 2; in pSeries_cmo_feature_init()
914 /* Separate the key and value by replacing '=' with '\0' and in pSeries_cmo_feature_init()
947 if (CMO_PrPSP != -1 || CMO_SecPSP != -1) { in pSeries_cmo_feature_init()
957 pr_debug(" <- fw_cmo_feature_init()\n"); in pSeries_cmo_feature_init()
965 pr_debug(" -> pseries_init()\n"); in pseries_init()
982 pr_debug(" <- pseries_init()\n"); in pseries_init()
986 * pseries_power_off - tell firmware about how to power off the system.
988 * This function calls either the power-off rtas token in normal cases
989 * or the ibm,power-off-ups token (if present & requested) in case of
990 * a power failure. If power-off token is used, power on will only be
991 * possible with power button press. If ibm,power-off-ups token is used
997 int rtas_poweroff_ups_token = rtas_token("ibm,power-off-ups"); in pseries_power_off()
1004 rc = rtas_call(rtas_token("power-off"), 2, 1, NULL, -1, -1); in pseries_power_off()
1005 printk(KERN_INFO "RTAS power-off returned %d\n", rc); in pseries_power_off()
1008 printk(KERN_INFO "RTAS ibm,power-off-ups returned %d\n", rc); in pseries_power_off()
1021 if (of_machine_is_compatible("IBM,CPBW-1.0") || in pSeries_probe()