(xen) stable/platform-pci-fixes for 2.6.38
Hello Linus,
Please git pull the following git tree:
git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen.git stable/platform-pci-fixes
which has patches since git commit 3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5:
Linus Torvalds (1):
Linux 2.6.37
The patchset includes fixes to the PCI driver for 0x5853:0x0001 which is presented to Linux when it is running as a fully virtualized guest. That driver can talk to the QEMU backend and notify QEMU to turn off the virtualized network and IDE driver and swap over to using the para-virtualized one.
The driver was working right up to 2.6.37-rc7 (rc8?) and then a couple of the reverts in the PCI API broke this driver. So these patches fix that.
Ian Campbell (2):
xen-platform: use PCI interfaces to request IO and MEM resources.
xen: rename platform-pci module to xen-platform-pci.
Konrad Rzeszutek Wilk (1):
xen-platform: Fix compile errors if CONFIG_PCI is not enabled.
drivers/xen/Kconfig | 2 +- drivers/xen/Makefile | 3 ++- drivers/xen/platform-pci.c | 21 +++++++-------------- 3 files changed, 10 insertions(+), 16 deletions(-)
drivers/xen/Kconfig +1 -1
@@ -64,7 +64,7 @@ config XEN_SYS_HYPERVISOR config XEN_PLATFORM_PCI tristate "xen platform pci device driver" - depends on XEN_PVHVM + depends on XEN_PVHVM && PCI default m help Driver for the Xen PCI Platform device: it is responsible for
drivers/xen/Makefile +2 -1
@@ -11,9 +11,10 @@ obj-$(CONFIG_XEN_BALLOON) += balloon.o obj-$(CONFIG_XEN_DEV_EVTCHN) += xen-evtchn.o obj-$(CONFIG_XENFS) += xenfs/ obj-$(CONFIG_XEN_SYS_HYPERVISOR) += sys-hypervisor.o -obj-$(CONFIG_XEN_PLATFORM_PCI) += platform-pci.o +obj-$(CONFIG_XEN_PLATFORM_PCI) += xen-platform-pci.o obj-$(CONFIG_SWIOTLB_XEN) += swiotlb-xen.o obj-$(CONFIG_XEN_DOM0) += pci.o xen-evtchn-y := evtchn.o +xen-platform-pci-y := platform-pci.o
drivers/xen/platform-pci.c +7 -14
@@ -105,7 +105,7 @@ static int __devinit platform_pci_init(struct pci_dev *pdev, const struct pci_device_id *ent) {int i, ret; -long ioaddr, iolen; +long ioaddr;long mmio_addr, mmio_len;unsigned int max_nr_gframes;
@@ -114,7 +114,6 @@ static int __devinit platform_pci_init(struct pci_dev *pdev,return i; ioaddr =pci_resource_start (pdev,0 ); - iolen =pci_resource_len (pdev,0 ); mmio_addr =pci_resource_start (pdev,1 ); mmio_len =pci_resource_len (pdev,1 );
@@ -125,19 +124,13 @@ static int __devinit platform_pci_init(struct pci_dev *pdev, goto pci_out; } -if (request_mem_region (mmio_addr, mmio_len,DRV_NAME ) ==NULL ) { -dev_err (&pdev->dev,"MEM I/O resource 0x%lx @ 0x%lx busy\n" , - mmio_addr, mmio_len); - ret = -EBUSY ; + ret =pci_request_region (pdev,1 ,DRV_NAME ); +if (ret <0 ) goto pci_out; - } -if (request_region (ioaddr, iolen,DRV_NAME ) ==NULL ) { -dev_err (&pdev->dev,"I/O resource 0x%lx @ 0x%lx busy\n" , - iolen, ioaddr); - ret = -EBUSY ; + ret =pci_request_region (pdev,0 ,DRV_NAME ); +if (ret <0 ) goto mem_out; - } platform_mmio = mmio_addr; platform_mmiolen = mmio_len;
@@ -169,9 +162,9 @@ static int __devinit platform_pci_init(struct pci_dev *pdev,return 0 ; out: -release_region (ioaddr, iolen); +pci_release_region (pdev,0 ); mem_out: -release_mem_region (mmio_addr, mmio_len); +pci_release_region (pdev,1 ); pci_out:pci_disable_device (pdev);return ret;