Merge tag 'pci-v5.2-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI updates from Bjorn Helgaas: "Enumeration changes: - Add _HPX Type 3 settings support, which gives firmware more influence over device configuration (Alexandru Gagniuc) - Support fixed bus numbers from bridge Enhanced Allocation capabilities (Subbaraya Sundeep) - Add "external-facing" DT property to identify cases where we require IOMMU protection against untrusted devices (Jean-Philippe Brucker) - Enable PCIe services for host controller drivers that use managed host bridge alloc (Jean-Philippe Brucker) - Log PCIe port service messages with pci_dev, not the pcie_device (Frederick Lawler) - Convert pciehp from pciehp_debug module parameter to generic dynamic debug (Frederick Lawler) Peer-to-peer DMA: - Add whitelist of Root Complexes that support peer-to-peer DMA between Root Ports (Christian König) Native controller drivers: - Add PCI host bridge DMA ranges for bridges that can't DMA everywhere, e.g., iProc (Srinath Mannam) - Add Amazon Annapurna Labs PCIe host controller driver (Jonathan Chocron) - Fix Tegra MSI target allocation so DMA doesn't generate unwanted MSIs (Vidya Sagar) - Fix of_node reference leaks (Wen Yang) - Fix Hyper-V module unload & device removal issues (Dexuan Cui) - Cleanup R-Car driver (Marek Vasut) - Cleanup Keystone driver (Kishon Vijay Abraham I) - Cleanup i.MX6 driver (Andrey Smirnov) Significant bug fixes: - Reset Lenovo ThinkPad P50 GPU so nouveau works after reboot (Lyude Paul) - Fix Switchtec firmware update performance issue (Wesley Sheng) - Work around Pericom switch link retraining erratum (Stefan Mätje)" * tag 'pci-v5.2-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (141 commits) MAINTAINERS: Add Karthikeyan Mitran and Hou Zhiqiang for Mobiveil PCI PCI: pciehp: Remove pointless MY_NAME definition PCI: pciehp: Remove pointless PCIE_MODULE_NAME definition PCI: pciehp: Remove unused dbg/err/info/warn() wrappers PCI: pciehp: Log messages with pci_dev, not pcie_device PCI: pciehp: Replace pciehp_debug module param with dyndbg PCI: pciehp: Remove pciehp_debug uses PCI/AER: Log messages with pci_dev, not pcie_device PCI/DPC: Log messages with pci_dev, not pcie_device PCI/PME: Replace dev_printk(KERN_DEBUG) with dev_info() PCI/AER: Replace dev_printk(KERN_DEBUG) with dev_info() PCI: Replace dev_printk(KERN_DEBUG) with dev_info(), etc PCI: Replace printk(KERN_INFO) with pr_info(), etc PCI: Use dev_printk() when possible PCI: Cleanup setup-bus.c comments and whitespace PCI: imx6: Allow asynchronous probing PCI: dwc: Save root bus for driver remove hooks PCI: dwc: Use devm_pci_alloc_host_bridge() to simplify code PCI: dwc: Free MSI in dw_pcie_host_init() error path PCI: dwc: Free MSI IRQ page in dw_pcie_free_msi() ...
This commit is contained in:
@@ -658,19 +658,25 @@ static int ioctl_flash_part_info(struct switchtec_dev *stdev,
|
||||
|
||||
static int ioctl_event_summary(struct switchtec_dev *stdev,
|
||||
struct switchtec_user *stuser,
|
||||
struct switchtec_ioctl_event_summary __user *usum)
|
||||
struct switchtec_ioctl_event_summary __user *usum,
|
||||
size_t size)
|
||||
{
|
||||
struct switchtec_ioctl_event_summary s = {0};
|
||||
struct switchtec_ioctl_event_summary *s;
|
||||
int i;
|
||||
u32 reg;
|
||||
int ret = 0;
|
||||
|
||||
s.global = ioread32(&stdev->mmio_sw_event->global_summary);
|
||||
s.part_bitmap = ioread32(&stdev->mmio_sw_event->part_event_bitmap);
|
||||
s.local_part = ioread32(&stdev->mmio_part_cfg->part_event_summary);
|
||||
s = kzalloc(sizeof(*s), GFP_KERNEL);
|
||||
if (!s)
|
||||
return -ENOMEM;
|
||||
|
||||
s->global = ioread32(&stdev->mmio_sw_event->global_summary);
|
||||
s->part_bitmap = ioread32(&stdev->mmio_sw_event->part_event_bitmap);
|
||||
s->local_part = ioread32(&stdev->mmio_part_cfg->part_event_summary);
|
||||
|
||||
for (i = 0; i < stdev->partition_count; i++) {
|
||||
reg = ioread32(&stdev->mmio_part_cfg_all[i].part_event_summary);
|
||||
s.part[i] = reg;
|
||||
s->part[i] = reg;
|
||||
}
|
||||
|
||||
for (i = 0; i < SWITCHTEC_MAX_PFF_CSR; i++) {
|
||||
@@ -679,15 +685,19 @@ static int ioctl_event_summary(struct switchtec_dev *stdev,
|
||||
break;
|
||||
|
||||
reg = ioread32(&stdev->mmio_pff_csr[i].pff_event_summary);
|
||||
s.pff[i] = reg;
|
||||
s->pff[i] = reg;
|
||||
}
|
||||
|
||||
if (copy_to_user(usum, &s, sizeof(s)))
|
||||
return -EFAULT;
|
||||
if (copy_to_user(usum, s, size)) {
|
||||
ret = -EFAULT;
|
||||
goto error_case;
|
||||
}
|
||||
|
||||
stuser->event_cnt = atomic_read(&stdev->event_cnt);
|
||||
|
||||
return 0;
|
||||
error_case:
|
||||
kfree(s);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static u32 __iomem *global_ev_reg(struct switchtec_dev *stdev,
|
||||
@@ -977,8 +987,9 @@ static long switchtec_dev_ioctl(struct file *filp, unsigned int cmd,
|
||||
case SWITCHTEC_IOCTL_FLASH_PART_INFO:
|
||||
rc = ioctl_flash_part_info(stdev, argp);
|
||||
break;
|
||||
case SWITCHTEC_IOCTL_EVENT_SUMMARY:
|
||||
rc = ioctl_event_summary(stdev, stuser, argp);
|
||||
case SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY:
|
||||
rc = ioctl_event_summary(stdev, stuser, argp,
|
||||
sizeof(struct switchtec_ioctl_event_summary_legacy));
|
||||
break;
|
||||
case SWITCHTEC_IOCTL_EVENT_CTL:
|
||||
rc = ioctl_event_ctl(stdev, argp);
|
||||
@@ -989,6 +1000,10 @@ static long switchtec_dev_ioctl(struct file *filp, unsigned int cmd,
|
||||
case SWITCHTEC_IOCTL_PORT_TO_PFF:
|
||||
rc = ioctl_port_to_pff(stdev, argp);
|
||||
break;
|
||||
case SWITCHTEC_IOCTL_EVENT_SUMMARY:
|
||||
rc = ioctl_event_summary(stdev, stuser, argp,
|
||||
sizeof(struct switchtec_ioctl_event_summary));
|
||||
break;
|
||||
default:
|
||||
rc = -ENOTTY;
|
||||
break;
|
||||
@@ -1162,7 +1177,8 @@ static int mask_event(struct switchtec_dev *stdev, int eid, int idx)
|
||||
if (!(hdr & SWITCHTEC_EVENT_OCCURRED && hdr & SWITCHTEC_EVENT_EN_IRQ))
|
||||
return 0;
|
||||
|
||||
if (eid == SWITCHTEC_IOCTL_EVENT_LINK_STATE)
|
||||
if (eid == SWITCHTEC_IOCTL_EVENT_LINK_STATE ||
|
||||
eid == SWITCHTEC_IOCTL_EVENT_MRPC_COMP)
|
||||
return 0;
|
||||
|
||||
dev_dbg(&stdev->dev, "%s: %d %d %x\n", __func__, eid, idx, hdr);
|
||||
|
Reference in New Issue
Block a user