Merge tag 'powerpc-3.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mpe/linux
Pull powerpc updates from Michael Ellerman: - Update of all defconfigs - Addition of a bunch of config options to modernise our defconfigs - Some PS3 updates from Geoff - Optimised memcmp for 64 bit from Anton - Fix for kprobes that allows 'perf probe' to work from Naveen - Several cxl updates from Ian & Ryan - Expanded support for the '24x7' PMU from Cody & Sukadev - Freescale updates from Scott: "Highlights include 8xx optimizations, some more work on datapath device tree content, e300 machine check support, t1040 corenet error reporting, and various cleanups and fixes" * tag 'powerpc-3.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mpe/linux: (102 commits) cxl: Add missing return statement after handling AFU errror cxl: Fail AFU initialisation if an invalid configuration record is found cxl: Export optional AFU configuration record in sysfs powerpc/mm: Warn on flushing tlb page in kernel context powerpc/powernv: Add OPAL soft-poweroff routine powerpc/perf/hv-24x7: Document sysfs event description entries powerpc/perf/hv-gpci: add the remaining gpci requests powerpc/perf/{hv-gpci, hv-common}: generate requests with counters annotated powerpc/perf/hv-24x7: parse catalog and populate sysfs with events perf: define EVENT_DEFINE_RANGE_FORMAT_LITE helper perf: add PMU_EVENT_ATTR_STRING() helper perf: provide sysfs_show for struct perf_pmu_events_attr powerpc/kernel: Avoid initializing device-tree pointer twice powerpc: Remove old compile time disabled syscall tracing code powerpc/kernel: Make syscall_exit a local label cxl: Fix device_node reference counting powerpc/mm: bail out early when flushing TLB page powerpc: defconfigs: add MTD_SPI_NOR (new dependency for M25P80) perf/powerpc: reset event hw state when adding it to the PMU powerpc/qe: Use strlcpy() ...
This commit is contained in:
@@ -68,13 +68,10 @@ static int fsl_pcie_check_link(struct pci_controller *hose)
|
||||
u32 val = 0;
|
||||
|
||||
if (hose->indirect_type & PPC_INDIRECT_TYPE_FSL_CFG_REG_LINK) {
|
||||
if (hose->ops->read == fsl_indirect_read_config) {
|
||||
struct pci_bus bus;
|
||||
bus.number = hose->first_busno;
|
||||
bus.sysdata = hose;
|
||||
bus.ops = hose->ops;
|
||||
indirect_read_config(&bus, 0, PCIE_LTSSM, 4, &val);
|
||||
} else
|
||||
if (hose->ops->read == fsl_indirect_read_config)
|
||||
__indirect_read_config(hose, hose->first_busno, 0,
|
||||
PCIE_LTSSM, 4, &val);
|
||||
else
|
||||
early_read_config_dword(hose, 0, 0, PCIE_LTSSM, &val);
|
||||
if (val < PCIE_LTSSM_L0)
|
||||
return 1;
|
||||
|
@@ -20,31 +20,31 @@
|
||||
#include <asm/pci-bridge.h>
|
||||
#include <asm/machdep.h>
|
||||
|
||||
int indirect_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||
int offset, int len, u32 *val)
|
||||
int __indirect_read_config(struct pci_controller *hose,
|
||||
unsigned char bus_number, unsigned int devfn,
|
||||
int offset, int len, u32 *val)
|
||||
{
|
||||
struct pci_controller *hose = pci_bus_to_host(bus);
|
||||
volatile void __iomem *cfg_data;
|
||||
u8 cfg_type = 0;
|
||||
u32 bus_no, reg;
|
||||
|
||||
if (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK) {
|
||||
if (bus->number != hose->first_busno)
|
||||
if (bus_number != hose->first_busno)
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
if (devfn != 0)
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
}
|
||||
|
||||
if (ppc_md.pci_exclude_device)
|
||||
if (ppc_md.pci_exclude_device(hose, bus->number, devfn))
|
||||
if (ppc_md.pci_exclude_device(hose, bus_number, devfn))
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
|
||||
if (hose->indirect_type & PPC_INDIRECT_TYPE_SET_CFG_TYPE)
|
||||
if (bus->number != hose->first_busno)
|
||||
if (bus_number != hose->first_busno)
|
||||
cfg_type = 1;
|
||||
|
||||
bus_no = (bus->number == hose->first_busno) ?
|
||||
hose->self_busno : bus->number;
|
||||
bus_no = (bus_number == hose->first_busno) ?
|
||||
hose->self_busno : bus_number;
|
||||
|
||||
if (hose->indirect_type & PPC_INDIRECT_TYPE_EXT_REG)
|
||||
reg = ((offset & 0xf00) << 16) | (offset & 0xfc);
|
||||
@@ -77,6 +77,15 @@ int indirect_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||
return PCIBIOS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
int indirect_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||
int offset, int len, u32 *val)
|
||||
{
|
||||
struct pci_controller *hose = pci_bus_to_host(bus);
|
||||
|
||||
return __indirect_read_config(hose, bus->number, devfn, offset, len,
|
||||
val);
|
||||
}
|
||||
|
||||
int indirect_write_config(struct pci_bus *bus, unsigned int devfn,
|
||||
int offset, int len, u32 val)
|
||||
{
|
||||
|
@@ -1929,7 +1929,7 @@ int __init smp_mpic_probe(void)
|
||||
|
||||
DBG("smp_mpic_probe()...\n");
|
||||
|
||||
nr_cpus = cpumask_weight(cpu_possible_mask);
|
||||
nr_cpus = num_possible_cpus();
|
||||
|
||||
DBG("nr_cpus: %d\n", nr_cpus);
|
||||
|
||||
|
@@ -145,7 +145,7 @@ static int hsta_msi_probe(struct platform_device *pdev)
|
||||
ppc4xx_hsta_msi.address = mem->start;
|
||||
ppc4xx_hsta_msi.data = ioremap(mem->start, resource_size(mem));
|
||||
ppc4xx_hsta_msi.irq_count = irq_count;
|
||||
if (IS_ERR(ppc4xx_hsta_msi.data)) {
|
||||
if (!ppc4xx_hsta_msi.data) {
|
||||
dev_err(dev, "Unable to map memory\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
@@ -497,7 +497,7 @@ int qe_upload_firmware(const struct qe_firmware *firmware)
|
||||
* saved microcode information and put in the new.
|
||||
*/
|
||||
memset(&qe_firmware_info, 0, sizeof(qe_firmware_info));
|
||||
strcpy(qe_firmware_info.id, firmware->id);
|
||||
strlcpy(qe_firmware_info.id, firmware->id, sizeof(qe_firmware_info.id));
|
||||
qe_firmware_info.extended_modes = firmware->extended_modes;
|
||||
memcpy(qe_firmware_info.vtraps, firmware->vtraps,
|
||||
sizeof(firmware->vtraps));
|
||||
@@ -583,8 +583,8 @@ struct qe_firmware_info *qe_get_firmware_info(void)
|
||||
/* Copy the data into qe_firmware_info*/
|
||||
sprop = of_get_property(fw, "id", NULL);
|
||||
if (sprop)
|
||||
strncpy(qe_firmware_info.id, sprop,
|
||||
sizeof(qe_firmware_info.id) - 1);
|
||||
strlcpy(qe_firmware_info.id, sprop,
|
||||
sizeof(qe_firmware_info.id));
|
||||
|
||||
prop = of_find_property(fw, "extended-modes", NULL);
|
||||
if (prop && (prop->length == sizeof(u64))) {
|
||||
|
@@ -148,7 +148,7 @@ int __init xics_smp_probe(void)
|
||||
/* Register all the IPIs */
|
||||
xics_request_ipi();
|
||||
|
||||
return cpumask_weight(cpu_possible_mask);
|
||||
return num_possible_cpus();
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SMP */
|
||||
|
Reference in New Issue
Block a user