]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'stable/pci.fixes-3.2' into linux-next
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Sat, 24 Sep 2011 02:33:22 +0000 (22:33 -0400)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Sat, 24 Sep 2011 02:33:22 +0000 (22:33 -0400)
* stable/pci.fixes-3.2:
  xen/pci: support multi-segment systems
  xen-swiotlb: When doing coherent alloc/dealloc check before swizzling the MFNs.
  xen/pci: make bus notifier handler return sane values
  xen-swiotlb: fix printk and panic args
  xen-swiotlb: Fix wrong panic.
  xen-swiotlb: Retry up three times to allocate Xen-SWIOTLB
  xen-pcifront: Update warning comment to use 'e820_host' option.

Conflicts:
drivers/xen/pci.c

1  2 
arch/x86/pci/xen.c
drivers/pci/xen-pcifront.c
drivers/xen/pci.c

index 1017c7bee388ddd5016895fa17618254f10467bc,265fa8814ccdcabbc41f78dcad0d641343d89a47..24a36fa33b6a117bf1c5bfed31623c55fac2d64e
@@@ -247,7 -123,70 +247,9 @@@ error
        return -ENODEV;
  }
  
 -/*
 - * For MSI interrupts we have to use drivers/xen/event.s functions to
 - * allocate an irq_desc and setup the right */
 -
 -
 -static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
 -{
 -      int irq, ret, i;
 -      struct msi_desc *msidesc;
 -      int *v;
 -
 -      v = kzalloc(sizeof(int) * max(1, nvec), GFP_KERNEL);
 -      if (!v)
 -              return -ENOMEM;
 -
 -      if (type == PCI_CAP_ID_MSIX)
 -              ret = xen_pci_frontend_enable_msix(dev, v, nvec);
 -      else
 -              ret = xen_pci_frontend_enable_msi(dev, v);
 -      if (ret)
 -              goto error;
 -      i = 0;
 -      list_for_each_entry(msidesc, &dev->msi_list, list) {
 -              irq = xen_bind_pirq_msi_to_irq(dev, msidesc, v[i], 0,
 -                                             (type == PCI_CAP_ID_MSIX) ?
 -                                             "pcifront-msi-x" :
 -                                             "pcifront-msi",
 -                                              DOMID_SELF);
 -              if (irq < 0)
 -                      goto free;
 -              i++;
 -      }
 -      kfree(v);
 -      return 0;
 -
 -error:
 -      dev_err(&dev->dev, "Xen PCI frontend has not registered MSI/MSI-X support!\n");
 -free:
 -      kfree(v);
 -      return ret;
 -}
 -
 -static void xen_teardown_msi_irqs(struct pci_dev *dev)
 -{
 -      struct msi_desc *msidesc;
 -
 -      msidesc = list_entry(dev->msi_list.next, struct msi_desc, list);
 -      if (msidesc->msi_attrib.is_msix)
 -              xen_pci_frontend_disable_msix(dev);
 -      else
 -              xen_pci_frontend_disable_msi(dev);
 -
 -      /* Free the IRQ's and the msidesc using the generic code. */
 -      default_teardown_msi_irqs(dev);
 -}
 -
 -static void xen_teardown_msi_irq(unsigned int irq)
 -{
 -      xen_destroy_irq(irq);
 -}
 -
  #ifdef CONFIG_XEN_DOM0
+ static bool __read_mostly pci_seg_supported = true;
  static int xen_initdom_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
  {
        int ret = 0;
Simple merge
index c4448ee5595f92ae582168f8c064f42e608d89b4,66057075d6e2664c4411b5168c17ba3ac1828938..b1923dcb38113d9c003825cb73a64679edb5a3f0
@@@ -36,9 -96,9 +96,9 @@@ static int xen_add_device(struct devic
                struct physdev_manage_pci_ext manage_pci_ext = {
                        .bus            = pci_dev->bus->number,
                        .devfn          = pci_dev->devfn,
 -                      .is_virtfn      = 1,
 +                      .is_virtfn      = 1,
-                       .physfn.bus     = pci_dev->physfn->bus->number,
-                       .physfn.devfn   = pci_dev->physfn->devfn,
+                       .physfn.bus     = physfn->bus->number,
+                       .physfn.devfn   = physfn->devfn,
                };
  
                r = HYPERVISOR_physdev_op(PHYSDEVOP_manage_pci_add_ext,