Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 fixes from Martin Schwidefsky: "A couple of last-minute fixes: a build regression for !SMP, a recent memory detection patch caused kdump to break, a regression in regard to sscanf vs reboot from FCP, and two fixes in the DMA mapping code for PCI" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/ipl: Fix FCP WWPN and LUN format strings for read s390/mem_detect: fix memory hole handling s390/dma: support debug_dma_mapping_error s390/dma: fix mapping_error detection s390/irq: Only define synchronize_irq() on SMP
This commit is contained in:
@@ -50,9 +50,10 @@ static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
|
|||||||
{
|
{
|
||||||
struct dma_map_ops *dma_ops = get_dma_ops(dev);
|
struct dma_map_ops *dma_ops = get_dma_ops(dev);
|
||||||
|
|
||||||
|
debug_dma_mapping_error(dev, dma_addr);
|
||||||
if (dma_ops->mapping_error)
|
if (dma_ops->mapping_error)
|
||||||
return dma_ops->mapping_error(dev, dma_addr);
|
return dma_ops->mapping_error(dev, dma_addr);
|
||||||
return (dma_addr == 0UL);
|
return (dma_addr == DMA_ERROR_CODE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void *dma_alloc_coherent(struct device *dev, size_t size,
|
static inline void *dma_alloc_coherent(struct device *dev, size_t size,
|
||||||
|
@@ -754,9 +754,9 @@ static struct bin_attribute sys_reipl_fcp_scp_data_attr = {
|
|||||||
.write = reipl_fcp_scpdata_write,
|
.write = reipl_fcp_scpdata_write,
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_IPL_ATTR_RW(reipl_fcp, wwpn, "0x%016llx\n", "%016llx\n",
|
DEFINE_IPL_ATTR_RW(reipl_fcp, wwpn, "0x%016llx\n", "%llx\n",
|
||||||
reipl_block_fcp->ipl_info.fcp.wwpn);
|
reipl_block_fcp->ipl_info.fcp.wwpn);
|
||||||
DEFINE_IPL_ATTR_RW(reipl_fcp, lun, "0x%016llx\n", "%016llx\n",
|
DEFINE_IPL_ATTR_RW(reipl_fcp, lun, "0x%016llx\n", "%llx\n",
|
||||||
reipl_block_fcp->ipl_info.fcp.lun);
|
reipl_block_fcp->ipl_info.fcp.lun);
|
||||||
DEFINE_IPL_ATTR_RW(reipl_fcp, bootprog, "%lld\n", "%lld\n",
|
DEFINE_IPL_ATTR_RW(reipl_fcp, bootprog, "%lld\n", "%lld\n",
|
||||||
reipl_block_fcp->ipl_info.fcp.bootprog);
|
reipl_block_fcp->ipl_info.fcp.bootprog);
|
||||||
@@ -1323,9 +1323,9 @@ static struct shutdown_action __refdata reipl_action = {
|
|||||||
|
|
||||||
/* FCP dump device attributes */
|
/* FCP dump device attributes */
|
||||||
|
|
||||||
DEFINE_IPL_ATTR_RW(dump_fcp, wwpn, "0x%016llx\n", "%016llx\n",
|
DEFINE_IPL_ATTR_RW(dump_fcp, wwpn, "0x%016llx\n", "%llx\n",
|
||||||
dump_block_fcp->ipl_info.fcp.wwpn);
|
dump_block_fcp->ipl_info.fcp.wwpn);
|
||||||
DEFINE_IPL_ATTR_RW(dump_fcp, lun, "0x%016llx\n", "%016llx\n",
|
DEFINE_IPL_ATTR_RW(dump_fcp, lun, "0x%016llx\n", "%llx\n",
|
||||||
dump_block_fcp->ipl_info.fcp.lun);
|
dump_block_fcp->ipl_info.fcp.lun);
|
||||||
DEFINE_IPL_ATTR_RW(dump_fcp, bootprog, "%lld\n", "%lld\n",
|
DEFINE_IPL_ATTR_RW(dump_fcp, bootprog, "%lld\n", "%lld\n",
|
||||||
dump_block_fcp->ipl_info.fcp.bootprog);
|
dump_block_fcp->ipl_info.fcp.bootprog);
|
||||||
|
@@ -312,6 +312,7 @@ void measurement_alert_subclass_unregister(void)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(measurement_alert_subclass_unregister);
|
EXPORT_SYMBOL(measurement_alert_subclass_unregister);
|
||||||
|
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
void synchronize_irq(unsigned int irq)
|
void synchronize_irq(unsigned int irq)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@@ -320,6 +321,7 @@ void synchronize_irq(unsigned int irq)
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(synchronize_irq);
|
EXPORT_SYMBOL_GPL(synchronize_irq);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_PCI
|
#ifndef CONFIG_PCI
|
||||||
|
|
||||||
|
@@ -123,7 +123,8 @@ void create_mem_hole(struct mem_chunk mem_chunk[], unsigned long addr,
|
|||||||
continue;
|
continue;
|
||||||
} else if ((addr <= chunk->addr) &&
|
} else if ((addr <= chunk->addr) &&
|
||||||
(addr + size >= chunk->addr + chunk->size)) {
|
(addr + size >= chunk->addr + chunk->size)) {
|
||||||
memset(chunk, 0 , sizeof(*chunk));
|
memmove(chunk, chunk + 1, (MEMORY_CHUNKS-i-1) * sizeof(*chunk));
|
||||||
|
memset(&mem_chunk[MEMORY_CHUNKS-1], 0, sizeof(*chunk));
|
||||||
} else if (addr + size < chunk->addr + chunk->size) {
|
} else if (addr + size < chunk->addr + chunk->size) {
|
||||||
chunk->size = chunk->addr + chunk->size - addr - size;
|
chunk->size = chunk->addr + chunk->size - addr - size;
|
||||||
chunk->addr = addr + size;
|
chunk->addr = addr + size;
|
||||||
|
Reference in New Issue
Block a user