Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 updates from Martin Schwidefsky: "The bulk of the s390 updates for v3.14. New features are the perf support for the CPU-Measurement Sample Facility and the EP11 support for the crypto cards. And the normal cleanups and bug-fixes" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (44 commits) s390/cpum_sf: fix printk format warnings s390: Fix misspellings using 'codespell' tool s390/qdio: bridgeport support - CHSC part s390: delete new instances of __cpuinit usage s390/compat: fix PSW32_USER_BITS definition s390/zcrypt: add support for EP11 coprocessor cards s390/mm: optimize randomize_et_dyn for !PF_RANDOMIZE s390: use IS_ENABLED to check if a CONFIG is set to y or m s390/cio: use device_lock to synchronize calls to the ccwgroup driver s390/cio: use device_lock to synchronize calls to the ccw driver s390/cio: fix unlocked access of online member s390/cpum_sf: Add flag to process full SDBs only s390/cpum_sf: Add raw data sampling to support the diagnostic-sampling function s390/cpum_sf: Filter perf events based event->attr.exclude_* settings s390/cpum_sf: Detect KVM guest samples s390/cpum_sf: Add helper to read TOD from trailer entries s390/cpum_sf: Atomically reset trailer entry fields of sample-data-blocks s390/cpum_sf: Dynamically extend the sampling buffer if overflows occur s390/pci: reenable per default s390/pci/dma: fix accounting of allocated_pages ...
This commit is contained in:
@@ -43,9 +43,8 @@ struct zpci_ccdf_avail {
|
||||
u16 pec; /* PCI event code */
|
||||
} __packed;
|
||||
|
||||
void zpci_event_error(void *data)
|
||||
static void __zpci_event_error(struct zpci_ccdf_err *ccdf)
|
||||
{
|
||||
struct zpci_ccdf_err *ccdf = data;
|
||||
struct zpci_dev *zdev = get_zdev_by_fid(ccdf->fid);
|
||||
|
||||
zpci_err("error CCDF:\n");
|
||||
@@ -58,9 +57,14 @@ void zpci_event_error(void *data)
|
||||
pci_name(zdev->pdev), ccdf->pec, ccdf->fid);
|
||||
}
|
||||
|
||||
void zpci_event_availability(void *data)
|
||||
void zpci_event_error(void *data)
|
||||
{
|
||||
if (zpci_is_enabled())
|
||||
__zpci_event_error(data);
|
||||
}
|
||||
|
||||
static void __zpci_event_availability(struct zpci_ccdf_avail *ccdf)
|
||||
{
|
||||
struct zpci_ccdf_avail *ccdf = data;
|
||||
struct zpci_dev *zdev = get_zdev_by_fid(ccdf->fid);
|
||||
struct pci_dev *pdev = zdev ? zdev->pdev : NULL;
|
||||
int ret;
|
||||
@@ -99,8 +103,12 @@ void zpci_event_availability(void *data)
|
||||
|
||||
break;
|
||||
case 0x0304: /* Configured -> Standby */
|
||||
if (pdev)
|
||||
if (pdev) {
|
||||
/* Give the driver a hint that the function is
|
||||
* already unusable. */
|
||||
pdev->error_state = pci_channel_io_perm_failure;
|
||||
pci_stop_and_remove_bus_device(pdev);
|
||||
}
|
||||
|
||||
zdev->fh = ccdf->fh;
|
||||
zpci_disable_device(zdev);
|
||||
@@ -110,6 +118,8 @@ void zpci_event_availability(void *data)
|
||||
clp_rescan_pci_devices();
|
||||
break;
|
||||
case 0x0308: /* Standby -> Reserved */
|
||||
if (!zdev)
|
||||
break;
|
||||
pci_stop_root_bus(zdev->bus);
|
||||
pci_remove_root_bus(zdev->bus);
|
||||
break;
|
||||
@@ -117,3 +127,9 @@ void zpci_event_availability(void *data)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void zpci_event_availability(void *data)
|
||||
{
|
||||
if (zpci_is_enabled())
|
||||
__zpci_event_availability(data);
|
||||
}
|
||||
|
Reference in New Issue
Block a user