Merge tag 's390-5.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 updates from Martin Schwidefsky: - A copy of Arnds compat wrapper generation series - Pass information about the KVM guest to the host in form the control program code and the control program version code - Map IOV resources to support PCI physical functions on s390 - Add vector load and store alignment hints to improve performance - Use the "jdd" constraint with gcc 9 to make jump labels working again - Remove amode workaround for old z/VM releases from the DCSS code - Add support for in-kernel performance measurements using the CPU measurement counter facility - Introduce a new PMU device cpum_cf_diag to capture counters and store thenn as event raw data. - Bug fixes and cleanups * tag 's390-5.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (54 commits) Revert "s390/cpum_cf: Add kernel message exaplanations" s390/dasd: fix read device characteristic with CONFIG_VMAP_STACK=y s390/suspend: fix prefix register reset in swsusp_arch_resume s390: warn about clearing als implied facilities s390: allow overriding facilities via command line s390: clean up redundant facilities list setup s390/als: remove duplicated in-place implementation of stfle s390/cio: Use cpa range elsewhere within vfio-ccw s390/cio: Fix vfio-ccw handling of recursive TICs s390: vfio_ap: link the vfio_ap devices to the vfio_ap bus subsystem s390/cpum_cf: Handle EBUSY return code from CPU counter facility reservation s390/cpum_cf: Add kernel message exaplanations s390/cpum_cf_diag: Add support for s390 counter facility diagnostic trace s390/cpum_cf: add ctr_stcctm() function s390/cpum_cf: move common functions into a separate file s390/cpum_cf: introduce kernel_cpumcf_avail() function s390/cpu_mf: replace stcctm5() with the stcctm() function s390/cpu_mf: add store cpu counter multiple instruction support s390/cpum_cf: Add minimal in-kernel interface for counter measurements s390/cpum_cf: introduce kernel_cpumcf_alert() to obtain measurement alerts ...
This commit is contained in:
@@ -285,7 +285,7 @@ void __iomem *pci_iomap_range(struct pci_dev *pdev,
|
||||
struct zpci_dev *zdev = to_zpci(pdev);
|
||||
int idx;
|
||||
|
||||
if (!pci_resource_len(pdev, bar))
|
||||
if (!pci_resource_len(pdev, bar) || bar >= PCI_BAR_COUNT)
|
||||
return NULL;
|
||||
|
||||
idx = zdev->bars[bar].map_idx;
|
||||
@@ -484,6 +484,15 @@ void arch_teardown_msi_irqs(struct pci_dev *pdev)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PCI_IOV
|
||||
static struct resource iov_res = {
|
||||
.name = "PCI IOV res",
|
||||
.start = 0,
|
||||
.end = -1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
};
|
||||
#endif
|
||||
|
||||
static void zpci_map_resources(struct pci_dev *pdev)
|
||||
{
|
||||
resource_size_t len;
|
||||
@@ -497,6 +506,17 @@ static void zpci_map_resources(struct pci_dev *pdev)
|
||||
(resource_size_t __force) pci_iomap(pdev, i, 0);
|
||||
pdev->resource[i].end = pdev->resource[i].start + len - 1;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PCI_IOV
|
||||
i = PCI_IOV_RESOURCES;
|
||||
|
||||
for (; i < PCI_SRIOV_NUM_BARS + PCI_IOV_RESOURCES; i++) {
|
||||
len = pci_resource_len(pdev, i);
|
||||
if (!len)
|
||||
continue;
|
||||
pdev->resource[i].parent = &iov_res;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static void zpci_unmap_resources(struct pci_dev *pdev)
|
||||
|
@@ -172,21 +172,14 @@ static const struct file_operations debugfs_pci_perf_fops = {
|
||||
void zpci_debug_init_device(struct zpci_dev *zdev, const char *name)
|
||||
{
|
||||
zdev->debugfs_dev = debugfs_create_dir(name, debugfs_root);
|
||||
if (IS_ERR(zdev->debugfs_dev))
|
||||
zdev->debugfs_dev = NULL;
|
||||
|
||||
zdev->debugfs_perf = debugfs_create_file("statistics",
|
||||
S_IFREG | S_IRUGO | S_IWUSR,
|
||||
zdev->debugfs_dev, zdev,
|
||||
&debugfs_pci_perf_fops);
|
||||
if (IS_ERR(zdev->debugfs_perf))
|
||||
zdev->debugfs_perf = NULL;
|
||||
debugfs_create_file("statistics", S_IFREG | S_IRUGO | S_IWUSR,
|
||||
zdev->debugfs_dev, zdev, &debugfs_pci_perf_fops);
|
||||
}
|
||||
|
||||
void zpci_debug_exit_device(struct zpci_dev *zdev)
|
||||
{
|
||||
debugfs_remove(zdev->debugfs_perf);
|
||||
debugfs_remove(zdev->debugfs_dev);
|
||||
debugfs_remove_recursive(zdev->debugfs_dev);
|
||||
}
|
||||
|
||||
int __init zpci_debug_init(void)
|
||||
|
Reference in New Issue
Block a user