Lines Matching +full:open +full:- +full:firmware
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * 64-bit pSeries and RS/6000 setup code.
48 #include <asm/pci-bridge.h>
58 #include <asm/ppc-pci.h>
62 #include <asm/firmware.h>
67 #include <asm/isa-bridge.h>
69 #include <asm/asm-const.h>
82 int CMO_PrPSP = -1;
83 int CMO_SecPSP = -1;
107 /* Initialize firmware assisted non-maskable interrupts if
108 * the firmware supports this feature.
122 ibm_nmi_register_token = rtas_token("ibm,nmi-register"); in fwnmi_init()
126 ibm_nmi_interlock_token = rtas_token("ibm,nmi-interlock"); in fwnmi_init()
130 /* If the kernel's not linked at zero we point the firmware at low in fwnmi_init()
132 system_reset_addr = __pa(system_reset_fwnmi) - PHYSICAL_START; in fwnmi_init()
133 machine_check_addr = __pa(machine_check_fwnmi) - PHYSICAL_START; in fwnmi_init()
152 paca_ptrs[i]->mce_data_buf = mce_data_buf + in fwnmi_init()
168 paca_ptrs[i]->mce_faulty_slbs = slb_ptr + (mmu_slb_size * i); in fwnmi_init()
181 chip->irq_eoi(&desc->irq_data); in pseries_8259_cascade()
192 for_each_node_by_type(np, "interrupt-controller") { in pseries_setup_i8259_cascade()
218 addrp = of_get_property(np, "8259-interrupt-acknowledge", NULL); in pseries_setup_i8259_cascade()
222 intack = addrp[naddr-1]; in pseries_setup_i8259_cascade()
224 intack |= ((unsigned long)addrp[naddr-2]) << 32; in pseries_setup_i8259_cascade()
254 struct device_node *parent, *np = rd->dn; in pci_dn_reconfig_notifier()
263 pci_add_device_node_info(pdn->phb, np); in pci_dn_reconfig_notifier()
270 list_del(&pdn->list); in pci_dn_reconfig_notifier()
360 * just give up rather than wasting any more time on this - if that turns out
485 phb->controller_ops = pseries_pci_controller_ops; in pSeries_discover_phbs()
506 * if firmware has *enabled* them, and set them if so. in init_cpu_char_feature_flags()
508 if (result->character & H_CPU_CHAR_SPEC_BAR_ORI31) in init_cpu_char_feature_flags()
511 if (result->character & H_CPU_CHAR_BCCTRL_SERIALISED) in init_cpu_char_feature_flags()
514 if (result->character & H_CPU_CHAR_L1D_FLUSH_ORI30) in init_cpu_char_feature_flags()
517 if (result->character & H_CPU_CHAR_L1D_FLUSH_TRIG2) in init_cpu_char_feature_flags()
520 if (result->character & H_CPU_CHAR_L1D_THREAD_PRIV) in init_cpu_char_feature_flags()
523 if (result->character & H_CPU_CHAR_COUNT_CACHE_DISABLED) in init_cpu_char_feature_flags()
526 if (result->character & H_CPU_CHAR_BCCTR_FLUSH_ASSIST) in init_cpu_char_feature_flags()
529 if (result->character & H_CPU_CHAR_BCCTR_LINK_FLUSH_ASSIST) in init_cpu_char_feature_flags()
532 if (result->behaviour & H_CPU_BEHAV_FLUSH_COUNT_CACHE) in init_cpu_char_feature_flags()
535 if (result->behaviour & H_CPU_BEHAV_FLUSH_LINK_STACK) in init_cpu_char_feature_flags()
540 * if firmware has *disabled* them, and clear them if so. in init_cpu_char_feature_flags()
544 if (!(result->behaviour & H_CPU_BEHAV_FAVOUR_SECURITY)) { in init_cpu_char_feature_flags()
547 } else if (result->behaviour & H_CPU_BEHAV_FAVOUR_SECURITY_H) in init_cpu_char_feature_flags()
552 if (!(result->behaviour & H_CPU_BEHAV_L1D_FLUSH_PR)) in init_cpu_char_feature_flags()
555 if (result->behaviour & H_CPU_BEHAV_NO_L1D_FLUSH_ENTRY) in init_cpu_char_feature_flags()
558 if (result->behaviour & H_CPU_BEHAV_NO_L1D_FLUSH_UACCESS) in init_cpu_char_feature_flags()
561 if (result->behaviour & H_CPU_BEHAV_NO_STF_BARRIER) in init_cpu_char_feature_flags()
564 if (!(result->behaviour & H_CPU_BEHAV_BNDS_CHK_SPEC_BAR)) in init_cpu_char_feature_flags()
640 indexes = of_get_property(dn, "ibm,open-sriov-vf-bar-info", NULL); in pseries_get_iov_fw_value()
679 res = &dev->resource[r + PCI_IOV_RESOURCES]; in of_pci_set_vf_bar_size()
682 res->flags = pci_parse_of_flags(of_read_number in of_pci_set_vf_bar_size()
684 res->flags |= (IORESOURCE_MEM_64 | IORESOURCE_PCI_FIXED); in of_pci_set_vf_bar_size()
685 res->name = pci_name(dev); in of_pci_set_vf_bar_size()
686 res->start = base; in of_pci_set_vf_bar_size()
687 res->end = base + size - 1; in of_pci_set_vf_bar_size()
700 * bars assign them from firmware into resources structure. in of_pci_parse_iov_addrs()
705 res = &dev->resource[r + PCI_IOV_RESOURCES]; in of_pci_parse_iov_addrs()
708 res->name = pci_name(dev); in of_pci_parse_iov_addrs()
709 res->start = base; in of_pci_parse_iov_addrs()
710 res->end = base + size - 1; in of_pci_parse_iov_addrs()
712 dev_dbg(&dev->dev, in of_pci_parse_iov_addrs()
713 "pSeries IOV BAR %d: trying firmware assignment %pR\n", in of_pci_parse_iov_addrs()
717 dev_info(&dev->dev, in of_pci_parse_iov_addrs()
720 conflict->name, conflict); in of_pci_parse_iov_addrs()
721 res->flags |= IORESOURCE_UNSET; in of_pci_parse_iov_addrs()
730 pci_warn(pdev, "No hypervisor support for SR-IOV on this device, IOV BARs disabled.\n"); in pseries_disable_sriov_resources()
732 pdev->resource[i + PCI_IOV_RESOURCES].flags = 0; in pseries_disable_sriov_resources()
740 /*Firmware must support open sriov otherwise dont configure*/ in pseries_pci_fixup_resources()
741 indexes = of_get_property(dn, "ibm,open-sriov-vf-bar-info", NULL); in pseries_pci_fixup_resources()
753 if (!pdev->is_physfn || pci_dev_is_added(pdev)) in pseries_pci_fixup_iov_resources()
755 /*Firmware must support open sriov otherwise dont configure*/ in pseries_pci_fixup_iov_resources()
756 indexes = of_get_property(dn, "ibm,open-sriov-vf-bar-info", NULL); in pseries_pci_fixup_iov_resources()
769 /*Firmware must support open sriov otherwise report regular alignment*/ in pseries_pci_iov_resource_alignment()
770 reg = of_get_property(dn, "ibm,is-open-sriov-pf", NULL); in pseries_pci_iov_resource_alignment()
774 if (!pdev->is_physfn) in pseries_pci_iov_resource_alignment()
777 resno - PCI_IOV_RESOURCES, in pseries_pci_iov_resource_alignment()
795 /* openpic global configuration register (64-bit format). */ in pSeries_setup_arch()
796 /* openpic Interrupt Source Unit pointer (64-bit format). */ in pSeries_setup_arch()
797 /* python0 facility area (mmio) (64-bit format) REAL address. */ in pSeries_setup_arch()
859 ppc_md.progress(init_utsname()->version, 0); in pSeries_init_panel()
906 * fw_cmo_feature_init - FW_FEATURE_CMO is not stored in ibm,hypertas-functions,
915 pr_debug(" -> fw_cmo_feature_init()\n"); in pSeries_cmo_feature_init()
918 call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1, in pSeries_cmo_feature_init()
927 pr_debug(" <- fw_cmo_feature_init()\n"); in pSeries_cmo_feature_init()
931 end = rtas_data_buf + CMO_MAXLENGTH - 2; in pSeries_cmo_feature_init()
969 if (CMO_PrPSP != -1 || CMO_SecPSP != -1) { in pSeries_cmo_feature_init()
979 pr_debug(" <- fw_cmo_feature_init()\n"); in pSeries_cmo_feature_init()
987 pr_debug(" -> pseries_init()\n"); in pseries_init()
1004 pr_debug(" <- pseries_init()\n"); in pseries_init()
1008 * pseries_power_off - tell firmware about how to power off the system.
1010 * This function calls either the power-off rtas token in normal cases
1011 * or the ibm,power-off-ups token (if present & requested) in case of
1012 * a power failure. If power-off token is used, power on will only be
1013 * possible with power button press. If ibm,power-off-ups token is used
1019 int rtas_poweroff_ups_token = rtas_token("ibm,power-off-ups"); in pseries_power_off()
1026 rc = rtas_call(rtas_token("power-off"), 2, 1, NULL, -1, -1); in pseries_power_off()
1027 printk(KERN_INFO "RTAS power-off returned %d\n", rc); in pseries_power_off()
1030 printk(KERN_INFO "RTAS ibm,power-off-ups returned %d\n", rc); in pseries_power_off()
1040 /* Cell blades firmware claims to be chrp while it's not. Until this in pSeries_probe()
1043 if (of_machine_is_compatible("IBM,CPBW-1.0") || in pSeries_probe()