Merge tag 'powerpc-4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
Pull powerpc updates from Michael Ellerman: "This was delayed a day or two by some build-breakage on old toolchains which we've now fixed. There's two PCI commits both acked by Bjorn. There's one commit to mm/hugepage.c which is (co)authored by Kirill. Highlights: - Restructure Linux PTE on Book3S/64 to Radix format from Paul Mackerras - Book3s 64 MMU cleanup in preparation for Radix MMU from Aneesh Kumar K.V - Add POWER9 cputable entry from Michael Neuling - FPU/Altivec/VSX save/restore optimisations from Cyril Bur - Add support for new ftrace ABI on ppc64le from Torsten Duwe Various cleanups & minor fixes from: - Adam Buchbinder, Andrew Donnellan, Balbir Singh, Christophe Leroy, Cyril Bur, Luis Henriques, Madhavan Srinivasan, Pan Xinhui, Russell Currey, Sukadev Bhattiprolu, Suraj Jitindar Singh. General: - atomics: Allow architectures to define their own __atomic_op_* helpers from Boqun Feng - Implement atomic{, 64}_*_return_* variants and acquire/release/ relaxed variants for (cmp)xchg from Boqun Feng - Add powernv_defconfig from Jeremy Kerr - Fix BUG_ON() reporting in real mode from Balbir Singh - Add xmon command to dump OPAL msglog from Andrew Donnellan - Add xmon command to dump process/task similar to ps(1) from Douglas Miller - Clean up memory hotplug failure paths from David Gibson pci/eeh: - Redesign SR-IOV on PowerNV to give absolute isolation between VFs from Wei Yang. - EEH Support for SRIOV VFs from Wei Yang and Gavin Shan. - PCI/IOV: Rename and export virtfn_{add, remove} from Wei Yang - PCI: Add pcibios_bus_add_device() weak function from Wei Yang - MAINTAINERS: Update EEH details and maintainership from Russell Currey cxl: - Support added to the CXL driver for running on both bare-metal and hypervisor systems, from Christophe Lombard and Frederic Barrat. - Ignore probes for virtual afu pci devices from Vaibhav Jain perf: - Export Power8 generic and cache events to sysfs from Sukadev Bhattiprolu - hv-24x7: Fix usage with chip events, display change in counter values, display domain indices in sysfs, eliminate domain suffix in event names, from Sukadev Bhattiprolu Freescale: - Updates from Scott: "Highlights include 8xx optimizations, 32-bit checksum optimizations, 86xx consolidation, e5500/e6500 cpu hotplug, more fman and other dt bits, and minor fixes/cleanup" * tag 'powerpc-4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (179 commits) powerpc: Fix unrecoverable SLB miss during restore_math() powerpc/8xx: Fix do_mtspr_cpu6() build on older compilers powerpc/rcpm: Fix build break when SMP=n powerpc/book3e-64: Use hardcoded mttmr opcode powerpc/fsl/dts: Add "jedec,spi-nor" flash compatible powerpc/T104xRDB: add tdm riser card node to device tree powerpc32: PAGE_EXEC required for inittext powerpc/mpc85xx: Add pcsphy nodes to FManV3 device tree powerpc/mpc85xx: Add MDIO bus muxing support to the board device tree(s) powerpc/86xx: Introduce and use common dtsi powerpc/86xx: Update device tree powerpc/86xx: Move dts files to fsl directory powerpc/86xx: Switch to kconfig fragments approach powerpc/86xx: Update defconfigs powerpc/86xx: Consolidate common platform code powerpc32: Remove one insn in mulhdu powerpc32: small optimisation in flush_icache_range() powerpc: Simplify test in __dma_sync() powerpc32: move xxxxx_dcache_range() functions inline powerpc32: Remove clear_pages() and define clear_page() inline ...
This commit is contained in:
@@ -102,6 +102,39 @@ out_muram:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* cpm_muram_alloc_common - cpm_muram_alloc common code
|
||||
* @size: number of bytes to allocate
|
||||
* @algo: algorithm for alloc.
|
||||
* @data: data for genalloc's algorithm.
|
||||
*
|
||||
* This function returns an offset into the muram area.
|
||||
*/
|
||||
static unsigned long cpm_muram_alloc_common(unsigned long size,
|
||||
genpool_algo_t algo, void *data)
|
||||
{
|
||||
struct muram_block *entry;
|
||||
unsigned long start;
|
||||
|
||||
start = gen_pool_alloc_algo(muram_pool, size, algo, data);
|
||||
if (!start)
|
||||
goto out2;
|
||||
start = start - GENPOOL_OFFSET;
|
||||
memset_io(cpm_muram_addr(start), 0, size);
|
||||
entry = kmalloc(sizeof(*entry), GFP_ATOMIC);
|
||||
if (!entry)
|
||||
goto out1;
|
||||
entry->start = start;
|
||||
entry->size = size;
|
||||
list_add(&entry->head, &muram_block_list);
|
||||
|
||||
return start;
|
||||
out1:
|
||||
gen_pool_free(muram_pool, start, size);
|
||||
out2:
|
||||
return (unsigned long)-ENOMEM;
|
||||
}
|
||||
|
||||
/*
|
||||
* cpm_muram_alloc - allocate the requested size worth of multi-user ram
|
||||
* @size: number of bytes to allocate
|
||||
@@ -175,39 +208,6 @@ unsigned long cpm_muram_alloc_fixed(unsigned long offset, unsigned long size)
|
||||
}
|
||||
EXPORT_SYMBOL(cpm_muram_alloc_fixed);
|
||||
|
||||
/*
|
||||
* cpm_muram_alloc_common - cpm_muram_alloc common code
|
||||
* @size: number of bytes to allocate
|
||||
* @algo: algorithm for alloc.
|
||||
* @data: data for genalloc's algorithm.
|
||||
*
|
||||
* This function returns an offset into the muram area.
|
||||
*/
|
||||
unsigned long cpm_muram_alloc_common(unsigned long size, genpool_algo_t algo,
|
||||
void *data)
|
||||
{
|
||||
struct muram_block *entry;
|
||||
unsigned long start;
|
||||
|
||||
start = gen_pool_alloc_algo(muram_pool, size, algo, data);
|
||||
if (!start)
|
||||
goto out2;
|
||||
start = start - GENPOOL_OFFSET;
|
||||
memset_io(cpm_muram_addr(start), 0, size);
|
||||
entry = kmalloc(sizeof(*entry), GFP_KERNEL);
|
||||
if (!entry)
|
||||
goto out1;
|
||||
entry->start = start;
|
||||
entry->size = size;
|
||||
list_add(&entry->head, &muram_block_list);
|
||||
|
||||
return start;
|
||||
out1:
|
||||
gen_pool_free(muram_pool, start, size);
|
||||
out2:
|
||||
return (unsigned long)-ENOMEM;
|
||||
}
|
||||
|
||||
/**
|
||||
* cpm_muram_addr - turn a muram offset into a virtual address
|
||||
* @offset: muram offset to convert
|
||||
|
@@ -259,6 +259,11 @@ static int qe_ic_host_map(struct irq_domain *h, unsigned int virq,
|
||||
struct qe_ic *qe_ic = h->host_data;
|
||||
struct irq_chip *chip;
|
||||
|
||||
if (hw >= ARRAY_SIZE(qe_ic_info)) {
|
||||
pr_err("%s: Invalid hw irq number for QEIC\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (qe_ic_info[hw].mask == 0) {
|
||||
printk(KERN_ERR "Can't map reserved IRQ\n");
|
||||
return -EINVAL;
|
||||
@@ -407,7 +412,8 @@ int qe_ic_set_priority(unsigned int virq, unsigned int priority)
|
||||
|
||||
if (priority > 8 || priority == 0)
|
||||
return -EINVAL;
|
||||
if (src > 127)
|
||||
if (WARN_ONCE(src >= ARRAY_SIZE(qe_ic_info),
|
||||
"%s: Invalid hw irq number for QEIC\n", __func__))
|
||||
return -EINVAL;
|
||||
if (qe_ic_info[src].pri_reg == 0)
|
||||
return -EINVAL;
|
||||
@@ -436,6 +442,9 @@ int qe_ic_set_high_priority(unsigned int virq, unsigned int priority, int high)
|
||||
|
||||
if (priority > 2 || priority == 0)
|
||||
return -EINVAL;
|
||||
if (WARN_ONCE(src >= ARRAY_SIZE(qe_ic_info),
|
||||
"%s: Invalid hw irq number for QEIC\n", __func__))
|
||||
return -EINVAL;
|
||||
|
||||
switch (qe_ic_info[src].pri_reg) {
|
||||
case QEIC_CIPZCC:
|
||||
|
Reference in New Issue
Block a user