22 Jul, 2013

1 commit

  • commit 098b1aeaf4d6149953b8f1f8d55c21d85536fbff upstream.

    There are two tool-stack that can instruct the Xen PCI frontend
    and backend to change states: 'xm' (Python code with a daemon),
    and 'xl' (C library - does not keep state changes).

    With the 'xm', the path to disconnect a single PCI device (xm pci-detach
    ) is:

    4(Connected)->7(Reconfiguring*)-> 8(Reconfigured)-> 4(Connected)->5(Closing*).

    The * is for states that the tool-stack sets. For 'xl', it is similar:

    4(Connected)->7(Reconfiguring*)-> 8(Reconfigured)-> 4(Connected)

    Both of them also tear down the XenBus structure, so the backend
    state ends up going in the 3(Initialised) and calls pcifront_xenbus_remove.

    When a PCI device is plugged back in (xm pci-attach )
    both of them follow the same pattern:

    2(InitWait*), 3(Initialized*), 4(Connected*)->4(Connected).

    [xen-pcifront ignores the 2,3 state changes and only acts when
    4 (Connected) has been reached]

    Note that this is for a _single_ PCI device. If there were two
    PCI devices and only one was disconnected 'xm' would show the same
    state changes.

    The problem is that git commit 3d925320e9e2de162bd138bf97816bda8c3f71be
    ("xen/pcifront: Use Xen-SWIOTLB when initting if required") introduced
    a mechanism to initialize the SWIOTLB when the Xen PCI front moves to
    Connected state. It also had some aggressive seatbelt code check that
    would warn the user if one tried to change to Connected state without
    hitting first the Closing state:

    pcifront pci-0: PCI frontend already installed!

    However, that code can be relaxed and we can continue on working
    even if the frontend is instructed to be the 'Connected' state with
    no devices and then gets tickled to be in 'Connected' state again.

    In other words, this 4(Connected)->5(Closing)->4(Connected) state
    was expected, while 4(Connected)->.... anything but 5(Closing)->4(Connected)
    was not. This patch removes that aggressive check and allows
    Xen pcifront to work with the 'xl' toolstack (for one or more
    PCI devices) and with 'xm' toolstack (for more than two PCI
    devices).

    Acked-by: Bjorn Helgaas
    Cc: linux-pci@vger.kernel.org
    [v2: Added in the description about two PCI devices]
    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Greg Kroah-Hartman

    Konrad Rzeszutek Wilk
     

14 Dec, 2012

1 commit

  • Pull PCI update from Bjorn Helgaas:
    "Host bridge hotplug:
    - Untangle _PRT from struct pci_bus (Bjorn Helgaas)
    - Request _OSC control before scanning root bus (Taku Izumi)
    - Assign resources when adding host bridge (Yinghai Lu)
    - Remove root bus when removing host bridge (Yinghai Lu)
    - Remove _PRT during hot remove (Yinghai Lu)

    SRIOV
    - Add sysfs knobs to control numVFs (Don Dutile)

    Power management
    - Notify devices when power resource turned on (Huang Ying)

    Bug fixes
    - Work around broken _SEG on HP xw9300 (Bjorn Helgaas)
    - Keep runtime PM enabled for unbound PCI devices (Huang Ying)
    - Fix Optimus dual-GPU runtime D3 suspend issue (Dave Airlie)
    - Fix xen frontend shutdown issue (David Vrabel)
    - Work around PLX PCI 9050 BAR alignment erratum (Ian Abbott)

    Miscellaneous
    - Add GPL license for drivers/pci/ioapic (Andrew Cooks)
    - Add standard PCI-X, PCIe ASPM register #defines (Bjorn Helgaas)
    - NumaChip remote PCI support (Daniel Blueman)
    - Fix PCIe Link Capabilities Supported Link Speed definition (Jingoo
    Han)
    - Convert dev_printk() to dev_info(), etc (Joe Perches)
    - Add support for non PCI BAR ROM data (Matthew Garrett)
    - Add x86 support for host bridge translation offset (Mike Yoknis)
    - Report success only when every driver supports AER (Vijay
    Pandarathil)"

    Fix up trivial conflicts.

    * tag 'for-3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (48 commits)
    PCI: Use phys_addr_t for physical ROM address
    x86/PCI: Add NumaChip remote PCI support
    ath9k: Use standard #defines for PCIe Capability ASPM fields
    iwlwifi: Use standard #defines for PCIe Capability ASPM fields
    iwlwifi: collapse wrapper for pcie_capability_read_word()
    iwlegacy: Use standard #defines for PCIe Capability ASPM fields
    iwlegacy: collapse wrapper for pcie_capability_read_word()
    cxgb3: Use standard #defines for PCIe Capability ASPM fields
    PCI: Add standard PCIe Capability Link ASPM field names
    PCI/portdrv: Use PCI Express Capability accessors
    PCI: Use standard PCIe Capability Link register field names
    x86: Use PCI setup data
    PCI: Add support for non-BAR ROMs
    PCI: Add pcibios_add_device
    EFI: Stash ROMs if they're not in the PCI BAR
    PCI: Add and use standard PCI-X Capability register names
    PCI/PM: Keep runtime PM enabled for unbound PCI devices
    xen-pcifront: Handle backend CLOSED without CLOSING
    PCI: SRIOV control and status via sysfs (documentation)
    PCI/AER: Report success only when every device has AER-aware driver
    ...

    Linus Torvalds
     

01 Dec, 2012

1 commit

  • Backend drivers shouldn't transition to CLOSED unless the frontend is
    CLOSED. If a backend does transition to CLOSED too soon then the
    frontend may not see the CLOSING state and will not properly shutdown.

    So, treat an unexpected backend CLOSED state the same as CLOSING.

    Signed-off-by: David Vrabel
    Signed-off-by: Bjorn Helgaas
    Acked-by: Konrad Rzeszutek Wilk

    David Vrabel
     

29 Nov, 2012

1 commit

  • CONFIG_HOTPLUG is going away as an option so __devexit_p, __devint,
    __devinitdata, __devinitconst, and _devexit are no longer needed.

    Signed-off-by: Bill Pemberton
    Acked-by: Bjorn Helgaas
    Signed-off-by: Greg Kroah-Hartman

    Bill Pemberton
     

03 Oct, 2012

1 commit

  • Pull Xen update from Konrad Rzeszutek Wilk:
    "Features:
    - When hotplugging PCI devices in a PV guest we can allocate
    Xen-SWIOTLB later.
    - Cleanup Xen SWIOTLB.
    - Support pages out grants from HVM domains in the backends.
    - Support wild cards in xen-pciback.hide=(BDF) arguments.
    - Update grant status updates with upstream hypervisor.
    - Boot PV guests with more than 128GB.
    - Cleanup Xen MMU code/add comments.
    - Obtain XENVERS using a preferred method.
    - Lay out generic changes to support Xen ARM.
    - Allow privcmd ioctl for HVM (used to do only PV).
    - Do v2 of mmap_batch for privcmd ioctls.
    - If hypervisor saves the LED keyboard light - we will now instruct
    the kernel about its state.
    Fixes:
    - More fixes to Xen PCI backend for various calls/FLR/etc.
    - With more than 4GB in a 64-bit PV guest disable native SWIOTLB.
    - Fix up smatch warnings.
    - Fix up various return values in privmcmd and mm."

    * tag 'stable/for-linus-3.7-x86-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen: (48 commits)
    xen/pciback: Restore the PCI config space after an FLR.
    xen-pciback: properly clean up after calling pcistub_device_find()
    xen/vga: add the xen EFI video mode support
    xen/x86: retrieve keyboard shift status flags from hypervisor.
    xen/gndev: Xen backend support for paged out grant targets V4.
    xen-pciback: support wild cards in slot specifications
    xen/swiotlb: Fix compile warnings when using plain integer instead of NULL pointer.
    xen/swiotlb: Remove functions not needed anymore.
    xen/pcifront: Use Xen-SWIOTLB when initting if required.
    xen/swiotlb: For early initialization, return zero on success.
    xen/swiotlb: Use the swiotlb_late_init_with_tbl to init Xen-SWIOTLB late when PV PCI is used.
    xen/swiotlb: Move the error strings to its own function.
    xen/swiotlb: Move the nr_tbl determination in its own function.
    xen/arm: compile and run xenbus
    xen: resynchronise grant table status codes with upstream
    xen/privcmd: return -EFAULT on error
    xen/privcmd: Fix mmap batch ioctl error status copy back.
    xen/privcmd: add PRIVCMD_MMAPBATCH_V2 ioctl
    xen/mm: return more precise error from xen_remap_domain_range()
    xen/mmu: If the revector fails, don't attempt to revector anything else.
    ...

    Linus Torvalds
     

23 Sep, 2012

1 commit

  • * stable/late-swiotlb.v3.3:
    xen/swiotlb: Fix compile warnings when using plain integer instead of NULL pointer.
    xen/swiotlb: Remove functions not needed anymore.
    xen/pcifront: Use Xen-SWIOTLB when initting if required.
    xen/swiotlb: For early initialization, return zero on success.
    xen/swiotlb: Use the swiotlb_late_init_with_tbl to init Xen-SWIOTLB late when PV PCI is used.
    xen/swiotlb: Move the error strings to its own function.
    xen/swiotlb: Move the nr_tbl determination in its own function.
    swiotlb: add the late swiotlb initialization function with iotlb memory
    xen/swiotlb: With more than 4GB on 64-bit, disable the native SWIOTLB.
    xen/swiotlb: Simplify the logic.

    Conflicts:
    arch/x86/xen/pci-swiotlb-xen.c

    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     

18 Sep, 2012

1 commit

  • We piggyback on "xen/swiotlb: Use the swiotlb_late_init_with_tbl to init
    Xen-SWIOTLB late when PV PCI is used." functionality to start up
    the Xen-SWIOTLB if we are hot-plugged. This allows us to bypass
    the need to supply 'iommu=soft' on the Linux command line (mostly).
    With this patch, if a user forgot 'iommu=soft' on the command line,
    and hotplug a PCI device they will get:

    pcifront pci-0: Installing PCI frontend
    Warning: only able to allocate 4 MB for software IO TLB
    software IO TLB [mem 0x2a000000-0x2a3fffff] (4MB) mapped at [ffff88002a000000-ffff88002a3fffff]
    pcifront pci-0: Creating PCI Frontend Bus 0000:00
    pcifront pci-0: PCI host bridge to bus 0000:00
    pci_bus 0000:00: root bus resource [io 0x0000-0xffff]
    pci_bus 0000:00: root bus resource [mem 0x00000000-0xfffffffff]
    pci 0000:00:00.0: [8086:10d3] type 00 class 0x020000
    pci 0000:00:00.0: reg 10: [mem 0xfe5c0000-0xfe5dffff]
    pci 0000:00:00.0: reg 14: [mem 0xfe500000-0xfe57ffff]
    pci 0000:00:00.0: reg 18: [io 0xe000-0xe01f]
    pci 0000:00:00.0: reg 1c: [mem 0xfe5e0000-0xfe5e3fff]
    pcifront pci-0: claiming resource 0000:00:00.0/0
    pcifront pci-0: claiming resource 0000:00:00.0/1
    pcifront pci-0: claiming resource 0000:00:00.0/2
    pcifront pci-0: claiming resource 0000:00:00.0/3
    e1000e: Intel(R) PRO/1000 Network Driver - 2.0.0-k
    e1000e: Copyright(c) 1999 - 2012 Intel Corporation.
    e1000e 0000:00:00.0: Disabling ASPM L0s L1
    e1000e 0000:00:00.0: enabling device (0000 -> 0002)
    e1000e 0000:00:00.0: Xen PCI mapped GSI16 to IRQ34
    e1000e 0000:00:00.0: (unregistered net_device): Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
    e1000e 0000:00:00.0: eth0: (PCI Express:2.5GT/s:Width x1) 00:1b:21:ab:c6:13
    e1000e 0000:00:00.0: eth0: Intel(R) PRO/1000 Network Connection
    e1000e 0000:00:00.0: eth0: MAC: 3, PHY: 8, PBA No: E46981-005

    The "Warning only" will go away if one supplies 'iommu=soft' instead
    as we have a higher chance of being able to allocate large swaths of
    memory.

    Acked-by: Stefano Stabellini
    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     

13 Sep, 2012

1 commit

  • Following code has a race window between pci_find_bus() and pci_get_slot()
    if PCI hotplug operation happens between them which removes the pci_bus.
    So use PCI hotplug safe interface pci_get_domain_bus_and_slot() instead,
    which also reduces code complexity.

    struct pci_bus *pci_bus = pci_find_bus(domain, busno);
    struct pci_dev *pci_dev = pci_get_slot(pci_bus, devfn);

    Tested-by: Konrad Rzeszutek Wilk
    Signed-off-by: Jiang Liu
    Signed-off-by: Bjorn Helgaas
    Acked-by: Konrad Rzeszutek Wilk

    Jiang Liu
     

22 Aug, 2012

1 commit


07 Apr, 2012

2 commits

  • Pull xen fixes from Konrad Rzeszutek Wilk:
    "Two fixes for regressions:
    * one is a workaround that will be removed in v3.5 with proper fix in
    the tip/x86 tree,
    * the other is to fix drivers to load on PV (a previous patch made
    them only load in PVonHVM mode).

    The rest are just minor fixes in the various drivers and some cleanup
    in the core code."

    * tag 'stable/for-linus-3.4-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    xen/pcifront: avoid pci_frontend_enable_msix() falsely returning success
    xen/pciback: fix XEN_PCI_OP_enable_msix result
    xen/smp: Remove unnecessary call to smp_processor_id()
    xen/x86: Workaround 'x86/ioapic: Add register level checks to detect bogus io-apic entries'
    xen: only check xen_platform_pci_unplug if hvm

    Linus Torvalds
     
  • The original XenoLinux code has always had things this way, and for
    compatibility reasons (in particular with a subsequent pciback
    adjustment) upstream Linux should behave the same way (allowing for two
    distinct error indications to be returned by the backend).

    Signed-off-by: Jan Beulich
    Signed-off-by: Konrad Rzeszutek Wilk

    Jan Beulich
     

24 Mar, 2012

1 commit

  • Pull PCI changes (including maintainer change) from Jesse Barnes:
    "This pull has some good cleanups from Bjorn and Yinghai, as well as
    some more code from Yinghai to better handle resource re-allocation
    when enabled.

    There's also a new initcall_debug feature from Arjan which will print
    out quirk timing information to help identify slow quirks for fixing
    or refinement (Yinghai sent in a few patches to do just that once the
    new debug code landed).

    Beyond that, I'm handing off PCI maintainership to Bjorn Helgaas.
    He's been a core PCI and Linux contributor for some time now, and has
    kindly volunteered to take over. I just don't feel I have the time
    for PCI review and work that it deserves lately (I've taken on some
    other projects), and haven't been as responsive lately as I'd like, so
    I approached Bjorn asking if he'd like to manage things. He's going
    to give it a try, and I'm confident he'll do at least as well as I
    have in keeping the tree managed, patches flowing, and keeping things
    stable."

    Fix up some fairly trivial conflicts due to other cleanups (mips device
    resource fixup cleanups clashing with list handling cleanup, ppc iseries
    removal clashing with pci_probe_only cleanup etc)

    * 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci: (112 commits)
    PCI: Bjorn gets PCI hotplug too
    PCI: hand PCI maintenance over to Bjorn Helgaas
    unicore32/PCI: move include to asm/pci.h
    sparc/PCI: convert devtree and arch-probed bus addresses to resource
    powerpc/PCI: allow reallocation on PA Semi
    powerpc/PCI: convert devtree bus addresses to resource
    powerpc/PCI: compute I/O space bus-to-resource offset consistently
    arm/PCI: don't export pci_flags
    PCI: fix bridge I/O window bus-to-resource conversion
    x86/PCI: add spinlock held check to 'pcibios_fwaddrmap_lookup()'
    PCI / PCIe: Introduce command line option to disable ARI
    PCI: make acpihp use __pci_remove_bus_device instead
    PCI: export __pci_remove_bus_device
    PCI: Rename pci_remove_behind_bridge to pci_stop_and_remove_behind_bridge
    PCI: Rename pci_remove_bus_device to pci_stop_and_remove_bus_device
    PCI: print out PCI device info along with duration
    PCI: Move "pci reassigndev resource alignment" out of quirks.c
    PCI: Use class for quirk for usb host controller fixup
    PCI: Use class for quirk for ti816x class fixup
    PCI: Use class for quirk for intel e100 interrupt fixup
    ...

    Linus Torvalds
     

10 Mar, 2012

1 commit


28 Feb, 2012

1 commit


04 Feb, 2012

1 commit


28 Jan, 2012

1 commit


25 Jan, 2012

1 commit

  • As part of the removal of get_driver()/put_driver(), this patch
    (as1512) gets rid of various useless and unnecessary calls in several
    drivers. In some cases it may be desirable to pin the driver by
    calling try_module_get(), but that can be done later.

    Signed-off-by: Alan Stern
    CC: "David S. Miller"
    CC: Konrad Rzeszutek Wilk
    CC: Michael Buesch
    CC: Joerg Roedel
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     

05 Jan, 2012

1 commit

  • The 'name', 'owner', and 'mod_name' members are redundant with the
    identically named fields in the 'driver' sub-structure. Rather than
    switching each instance to specify these fields explicitly, introduce
    a macro to simplify this.

    Eliminate further redundancy by allowing the drvname argument to
    DEFINE_XENBUS_DRIVER() to be blank (in which case the first entry from
    the ID table will be used for .driver.name).

    Also eliminate the questionable xenbus_register_{back,front}end()
    wrappers - their sole remaining purpose was the checking of the
    'owner' field, proper setting of which shouldn't be an issue anymore
    when the macro gets used.

    v2: Restore DRV_NAME for the driver name in xen-pciback.

    Signed-off-by: Jan Beulich
    Cc: Jens Axboe
    Cc: Dmitry Torokhov
    Cc: Florian Tobias Schandinat
    Cc: Ian Campbell
    Cc: David S. Miller
    Signed-off-by: Konrad Rzeszutek Wilk

    Jan Beulich
     

25 Oct, 2011

1 commit

  • …ci.fixes-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen

    * 'stable/drivers-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    xenbus: don't rely on xen_initial_domain to detect local xenstore
    xenbus: Fix loopback event channel assuming domain 0
    xen/pv-on-hvm:kexec: Fix implicit declaration of function 'xen_hvm_domain'
    xen/pv-on-hvm kexec: add xs_reset_watches to shutdown watches from old kernel
    xen/pv-on-hvm kexec: update xs_wire.h:xsd_sockmsg_type from xen-unstable
    xen/pv-on-hvm kexec+kdump: reset PV devices in kexec or crash kernel
    xen/pv-on-hvm kexec: rebind virqs to existing eventchannel ports
    xen/pv-on-hvm kexec: prevent crash in xenwatch_thread() when stale watch events arrive

    * 'stable/drivers.bugfixes-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    xen/pciback: Check if the device is found instead of blindly assuming so.
    xen/pciback: Do not dereference psdev during printk when it is NULL.
    xen: remove XEN_PLATFORM_PCI config option
    xen: XEN_PVHVM depends on PCI
    xen/pciback: double lock typo
    xen/pciback: use mutex rather than spinlock in vpci backend
    xen/pciback: Use mutexes when working with Xenbus state transitions.
    xen/pciback: miscellaneous adjustments
    xen/pciback: use mutex rather than spinlock in passthrough backend
    xen/pciback: use resource_size()

    * 'stable/pci.fixes-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    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.

    Linus Torvalds
     

27 Aug, 2011

1 commit

  • With Xen changeset 23428 "libxl: Add 'e820_host' option to config file"
    the E820 as seen from the host can now be passed into the guest.
    This means that a PV guest can now:
    - Use the correct PCI I/O gap. Before these patches, Linux guest would
    boot up and would tell:
    [ 0.000000] Allocating PCI resources starting at 40000000 (gap: 40000000:c0000000)
    while in actuality the PCI I/O gap should have been:
    [ 0.000000] Allocating PCI resources starting at b0000000 (gap: b0000000:4c000000)

    - The PV domain with PCI devices was limited to 3GB. It now can be booted
    with 4GB, 8GB, or whatever number you want. The PCI devices will now _not_ conflict
    with System RAM. Meaning the drivers can load.

    CC: Jesse Barnes
    CC: linux-pci@vger.kernel.org
    CC: stable@kernel.org
    [v2: Made the string less broken up. Suggested by Joe Perches]
    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     

27 Jul, 2011

1 commit

  • This allows us to move duplicated code in
    (atomic_inc_not_zero() for now) to

    Signed-off-by: Arun Sharma
    Reviewed-by: Eric Dumazet
    Cc: Ingo Molnar
    Cc: David Miller
    Cc: Eric Dumazet
    Acked-by: Mike Frysinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arun Sharma
     

19 Feb, 2011

1 commit


18 Feb, 2011

2 commits

  • Check the returned vector values for any values that are
    odd or plain incorrect (say vector value zero), and if so
    print a warning. Also fixup the return values.

    This patch was precipiated by the Xen PCIBack returning the
    incorrect values due to how it was retrieving PIRQ values.
    This has been fixed in the xen-pciback by
    "xen/pciback: Utilize 'xen_pirq_from_irq' to get PIRQ value"
    patch.

    Reviewed-by: Ian Campbell
    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • flush_scheduled_work() is scheduled for deprecation. Cancel ->op_work
    directly instead.

    Signed-off-by: Tejun Heo
    Cc: Ryan Wilson
    Cc: Jan Beulich
    Cc: Jesse Barnes
    Signed-off-by: Konrad Rzeszutek Wilk

    Tejun Heo
     

09 Nov, 2010

2 commits


18 Oct, 2010

1 commit

  • This is a port of the 2.6.18 Xen PCI front driver with fixes
    to make it build under 2.6.34 and later (for the full list of
    changes: git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen.git
    historic/xen-pcifront-0.1). It also includes the fixes
    to make it work properly.

    [v2: Updated Kconfig, removed crud, added Reviewed-by]
    [v3: Added 'static', fixed grant table leak, redid Kconfig]
    [v4: Added one more 'static' and removed comments]

    Signed-off-by: Konrad Rzeszutek Wilk
    Reviewed-by: Stefano Stabellini
    Reviewed-by: Jan Beulich

    Ryan Wilson