27 Oct, 2016

1 commit

  • The VFIO_DEVICE_SET_IRQS ioctl did not sufficiently sanitize
    user-supplied integers, potentially allowing memory corruption. This
    patch adds appropriate integer overflow checks, checks the range bounds
    for VFIO_IRQ_SET_DATA_NONE, and also verifies that only single element
    in the VFIO_IRQ_SET_DATA_TYPE_MASK bitmask is set.
    VFIO_IRQ_SET_ACTION_TYPE_MASK is already correctly checked later in
    vfio_pci_set_irqs_ioctl().

    Furthermore, a kzalloc is changed to a kcalloc because the use of a
    kzalloc with an integer multiplication allowed an integer overflow
    condition to be reached without this patch. kcalloc checks for overflow
    and should prevent a similar occurrence.

    Signed-off-by: Vlad Tsyrklevich
    Signed-off-by: Alex Williamson

    Vlad Tsyrklevich
     

30 Sep, 2016

1 commit


27 Sep, 2016

2 commits

  • The MSI/X shutdown path can gratuitously enable INTx, which is not
    something we want to happen if we're dealing with broken INTx device.

    Signed-off-by: Alex Williamson

    Alex Williamson
     
  • We use a BAR restore trick to try to detect when a user has performed
    a device reset, possibly through FLR or other backdoors, to put things
    back into a working state. This is important for backdoor resets, but
    we can actually just virtualize the "front door" resets provided via
    PCIe and AF FLR. Set these bits as virtualized + writable, allowing
    the default write to set them in vconfig, then we can simply check the
    bit, perform an FLR of our own, and clear the bit. We don't actually
    have the granularity in PCI to specify the type of reset we want to
    do, but generally devices don't implement both PCIe and AF FLR and
    we'll favor these over other types of reset, so we should generally
    lineup. We do test whether the device provides the requested FLR type
    to stay consistent with hardware capabilities though.

    This seems to fix several instance of devices getting into bad states
    with userspace drivers, like dpdk, running inside a VM.

    Signed-off-by: Alex Williamson
    Reviewed-by: Greg Rose

    Alex Williamson
     

14 Sep, 2016

1 commit

  • We get a few warnings when building kernel with W=1:
    drivers/vfio/platform/vfio_platform_common.c:76:5: warning: no previous prototype for 'vfio_platform_acpi_call_reset' [-Wmissing-prototypes]
    drivers/vfio/platform/vfio_platform_common.c:98:6: warning: no previous prototype for 'vfio_platform_acpi_has_reset' [-Wmissing-prototypes]
    drivers/vfio/platform/vfio_platform_common.c:640:5: warning: no previous prototype for 'vfio_platform_of_probe' [-Wmissing-prototypes]
    drivers/vfio/platform/reset/vfio_platform_amdxgbe.c:59:5: warning: no previous prototype for 'vfio_platform_amdxgbe_reset' [-Wmissing-prototypes]
    drivers/vfio/platform/reset/vfio_platform_calxedaxgmac.c:60:5: warning: no previous prototype for 'vfio_platform_calxedaxgmac_reset' [-Wmissing-prototypes]
    ....

    In fact, these functions are only used in the file in which they are
    declared and don't need a declaration, but can be made static.
    so this patch marks these functions with 'static'.

    Signed-off-by: Baoyou Xie
    Acked-by: Arnd Bergmann
    Reviewed-by: Eric Auger
    Reviewed-by: Baptiste Reynal
    Signed-off-by: Alex Williamson

    Baoyou Xie
     

30 Aug, 2016

1 commit


09 Aug, 2016

1 commit

  • There are multiple cases in vfio_pci_set_ctx_trigger_single() where
    we assume we can safely read from our data pointer without actually
    checking whether the user has passed any data via the count field.
    VFIO_IRQ_SET_DATA_NONE in particular is entirely broken since we
    attempt to pull an int32_t file descriptor out before even checking
    the data type. The other data types assume the data pointer contains
    one element of their type as well.

    In part this is good news because we were previously restricted from
    doing much sanitization of parameters because it was missed in the
    past and we didn't want to break existing users. Clearly DATA_NONE
    is completely broken, so it must not have any users and we can fix
    it up completely. For DATA_BOOL and DATA_EVENTFD, we'll just
    protect ourselves, returning error when count is zero since we
    previously would have oopsed.

    Signed-off-by: Alex Williamson
    Reported-by: Chris Thompson
    Cc: stable@vger.kernel.org
    Reviewed-by: Eric Auger

    Alex Williamson
     

20 Jul, 2016

9 commits

  • Release call is ignoring the return code from reset call and can
    potentially continue even though reset call failed.

    If reset_required module parameter is set, this patch is going
    to validate the return code and will cause stack dump with
    WARN_ON and warn the user of failure.

    Signed-off-by: Sinan Kaya
    Reviewed-by: Eric Auger
    Reviewed-by: Baptiste Reynal
    Signed-off-by: Alex Williamson

    Sinan Kaya
     
  • Open call is ignoring the return code from reset call and can
    potentially continue even though reset call failed.

    If reset_required module parameter is set, this patch is going
    to validate the return code and will abort open if reset fails.

    Signed-off-by: Sinan Kaya
    Reviewed-by: Baptiste Reynal
    Reviewed-by: Eric Auger
    Signed-off-by: Alex Williamson

    Sinan Kaya
     
  • The code was allowing platform devices to be used without a supporting
    VFIO reset driver. The hardware can be left in some inconsistent state
    after a guest machine abort.

    The reset driver will put the hardware back to safe state and disable
    interrupts before returning the control back to the host machine.

    Adding a new reset_required kernel module option to platform VFIO drivers.
    The default value is true for the DT and ACPI based drivers.
    The reset requirement value for AMBA drivers is set to false and is
    unchangeable to maintain the existing functionality.

    New requirements are:
    1. A reset function needs to be implemented by the corresponding driver
    via DT/ACPI.
    2. The reset function needs to be discovered via DT/ACPI.

    The probe of the driver will fail if any of the above conditions are
    not satisfied.

    Signed-off-by: Sinan Kaya
    Signed-off-by: Alex Williamson

    Sinan Kaya
     
  • The device tree code checks for the presence of a reset driver and calls
    the of_reset function pointer by looking up the reset driver as a module.

    ACPI defines _RST method to perform device level reset. After the _RST
    method is executed, the OS can resume using the device. _RST method is
    expected to stop DMA transfers and IRQs.

    This patch introduces two functions as vfio_platform_acpi_has_reset and
    vfio_platform_acpi_call_reset. The has reset method is used to declare
    reset capability via the ioctl flag VFIO_DEVICE_FLAGS_RESET. The call
    reset function is used to execute the _RST ACPI method.

    Signed-off-by: Sinan Kaya
    Signed-off-by: Alex Williamson

    Sinan Kaya
     
  • Getting ready to bring out extra debug information to the caller
    so that more verbose information can be printed when an error is
    observed.

    Signed-off-by: Sinan Kaya
    Reviewed-by: Baptiste Reynal
    Signed-off-by: Alex Williamson

    Sinan Kaya
     
  • The code is using the compatible DT string to associate a reset driver
    with the actual device itself. The compatible string does not exist on
    ACPI based systems. HID is the unique identifier for a device driver
    instead.

    Signed-off-by: Sinan Kaya
    Signed-off-by: Alex Williamson

    Sinan Kaya
     
  • Creating a new function to determine if this driver supports reset
    function or not. This is an attempt to abstract device tree calls
    from the rest of the code.

    Signed-off-by: Sinan Kaya
    Reviewed-by: Eric Auger
    Reviewed-by: Baptiste Reynal
    Signed-off-by: Alex Williamson

    Sinan Kaya
     
  • The reset call sequence seems to replicate itself multiple times
    across the file. Grouping them together for maintenance reasons.

    Signed-off-by: Sinan Kaya
    Reviewed-by: Eric Auger
    Reviewed-by: Baptiste Reynal
    Signed-off-by: Alex Williamson

    Sinan Kaya
     
  • Renaming the reset function to of_reset as it is only used
    by the device tree based platforms.

    Signed-off-by: Sinan Kaya
    Reviewed-by: Eric Auger
    Reviewed-by: Baptiste Reynal
    Signed-off-by: Alex Williamson

    Sinan Kaya
     

15 Jul, 2016

1 commit


09 Jul, 2016

1 commit

  • Current vfio-pci implementation disallows to mmap
    sub-page(size < PAGE_SIZE) MMIO BARs because these BARs' mmio
    page may be shared with other BARs. This will cause some
    performance issues when we passthrough a PCI device with
    this kind of BARs. Guest will be not able to handle the mmio
    accesses to the BARs which leads to mmio emulations in host.

    However, not all sub-page BARs will share page with other BARs.
    We should allow to mmap the sub-page MMIO BARs which we can
    make sure will not share page with other BARs.

    This patch adds support for this case. And we try to add a
    dummy resource to reserve the remainder of the page which
    hot-add device's BAR might be assigned into. But it's not
    necessary to handle the case when the BAR is not page aligned.
    Because we can't expect the BAR will be assigned into the same
    location in a page in guest when we passthrough the BAR. And
    it's hard to access this BAR in userspace because we have
    no way to get the BAR's location in a page.

    Signed-off-by: Yongji Xie
    Signed-off-by: Alex Williamson

    Yongji Xie
     

23 Jun, 2016

1 commit

  • The vfio No-IOMMU mode was supported by this
    'commit 03a76b60f8ba2797 ("vfio: Include No-IOMMU mode")',
    but it only support vfio-pci.

    Using vfio_iommu_group_get/put, but not iommu_group_get/put,
    the platform devices can be exposed to userspace with
    CONFIG_VFIO_NOIOMMU and the "enable_unsafe_noiommu_mode"
    option enabled.

    From 'commit 03a76b60f8ba2797 ("vfio: Include No-IOMMU mode")',
    "This should make it very clear that this mode is not safe.
    Additionally, CAP_SYS_RAWIO privileges are necessary to work
    with groups and containers using this mode. Groups making
    use of this support are named /dev/vfio/noiommu-$GROUP and
    can only make use of the special VFIO_NOIOMMU_IOMMU for the
    container. Use of this mode, specifically binding a device
    without a native IOMMU group to a VFIO bus driver will taint
    the kernel and should therefore not be considered supported."

    Signed-off-by: Peng Fan
    Cc: Eric Auger
    Cc: Baptiste Reynal
    Cc: Alex Williamson
    Reviewed-by: Eric Auger
    Signed-off-by: Alex Williamson

    Peng Fan
     

01 Jun, 2016

1 commit

  • The size of the VPD area is not necessarily 4-byte aligned, so a
    pci_vpd_read() might return less than 4 bytes. Zero our buffer and
    accept anything other than an error. Intel X710 NICs exercise this.

    Fixes: 4e1a635552d3 ("vfio/pci: Use kernel VPD access functions")
    Signed-off-by: Alex Williamson

    Alex Williamson
     

30 May, 2016

2 commits


26 May, 2016

1 commit

  • Pull VFIO updates from Alex Williamson:

    - Hide INTx on certain known broken devices (Alex Williamson)

    - Additional backdoor reset detection (Alex Williamson)

    - Remove unused iommudata reference (Alexey Kardashevskiy)

    - Use cfg_size to avoid probing extended config space (Alexey
    Kardashevskiy)

    * tag 'vfio-v4.7-rc1' of git://github.com/awilliam/linux-vfio:
    vfio_pci: Test for extended capabilities if config space > 256 bytes
    vfio_iommu_spapr_tce: Remove unneeded iommu_group_get_iommudata
    vfio/pci: Add test for BAR restore
    vfio/pci: Hide broken INTx support from user

    Linus Torvalds
     

21 May, 2016

1 commit

  • Pull powerpc updates from Michael Ellerman:
    "Highlights:
    - Support for Power ISA 3.0 (Power9) Radix Tree MMU from Aneesh Kumar K.V
    - Live patching support for ppc64le (also merged via livepatching.git)

    Various cleanups & minor fixes from:
    - Aaro Koskinen, Alexey Kardashevskiy, Andrew Donnellan, Aneesh Kumar K.V,
    Chris Smart, Daniel Axtens, Frederic Barrat, Gavin Shan, Ian Munsie,
    Lennart Sorensen, Madhavan Srinivasan, Mahesh Salgaonkar, Markus Elfring,
    Michael Ellerman, Oliver O'Halloran, Paul Gortmaker, Paul Mackerras,
    Rashmica Gupta, Russell Currey, Suraj Jitindar Singh, Thiago Jung
    Bauermann, Valentin Rothberg, Vipin K Parashar.

    General:
    - Update LMB associativity index during DLPAR add/remove from Nathan
    Fontenot
    - Fix branching to OOL handlers in relocatable kernel from Hari Bathini
    - Add support for userspace Power9 copy/paste from Chris Smart
    - Always use STRICT_MM_TYPECHECKS from Michael Ellerman
    - Add mask of possible MMU features from Michael Ellerman

    PCI:
    - Enable pass through of NVLink to guests from Alexey Kardashevskiy
    - Cleanups in preparation for powernv PCI hotplug from Gavin Shan
    - Don't report error in eeh_pe_reset_and_recover() from Gavin Shan
    - Restore initial state in eeh_pe_reset_and_recover() from Gavin Shan
    - Revert "powerpc/eeh: Fix crash in eeh_add_device_early() on Cell"
    from Guilherme G Piccoli
    - Remove the dependency on EEH struct in DDW mechanism from Guilherme
    G Piccoli

    selftests:
    - Test cp_abort during context switch from Chris Smart
    - Add several tests for transactional memory support from Rashmica
    Gupta

    perf:
    - Add support for sampling interrupt register state from Anju T
    - Add support for unwinding perf-stackdump from Chandan Kumar

    cxl:
    - Configure the PSL for two CAPI ports on POWER8NVL from Philippe
    Bergheaud
    - Allow initialization on timebase sync failures from Frederic Barrat
    - Increase timeout for detection of AFU mmio hang from Frederic
    Barrat
    - Handle num_of_processes larger than can fit in the SPA from Ian
    Munsie
    - Ensure PSL interrupt is configured for contexts with no AFU IRQs
    from Ian Munsie
    - Add kernel API to allow a context to operate with relocate disabled
    from Ian Munsie
    - Check periodically the coherent platform function's state from
    Christophe Lombard

    Freescale:
    - Updates from Scott: "Contains 86xx fixes, minor device tree fixes,
    an erratum workaround, and a kconfig dependency fix."

    * tag 'powerpc-4.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (192 commits)
    powerpc/86xx: Fix PCI interrupt map definition
    powerpc/86xx: Move pci1 definition to the include file
    powerpc/fsl: Fix build of the dtb embedded kernel images
    powerpc/fsl: Fix rcpm compatible string
    powerpc/fsl: Remove FSL_SOC dependency from FSL_LBC
    powerpc/fsl-pci: Add a workaround for PCI 5 errata
    powerpc/fsl: Fix SPI compatible on t208xrdb and t1040rdb
    powerpc/powernv/npu: Add PE to PHB's list
    powerpc/powernv: Fix insufficient memory allocation
    powerpc/iommu: Remove the dependency on EEH struct in DDW mechanism
    Revert "powerpc/eeh: Fix crash in eeh_add_device_early() on Cell"
    powerpc/eeh: Drop unnecessary label in eeh_pe_change_owner()
    powerpc/eeh: Ignore handlers in eeh_pe_reset_and_recover()
    powerpc/eeh: Restore initial state in eeh_pe_reset_and_recover()
    powerpc/eeh: Don't report error in eeh_pe_reset_and_recover()
    Revert "powerpc/powernv: Exclude root bus in pnv_pci_reset_secondary_bus()"
    powerpc/powernv/npu: Enable NVLink pass through
    powerpc/powernv/npu: Rework TCE Kill handling
    powerpc/powernv/npu: Add set/unset window helpers
    powerpc/powernv/ioda2: Export debug helper pe_level_printk()
    ...

    Linus Torvalds
     

20 May, 2016

1 commit

  • PCI-Express spec says that reading 4 bytes at offset 100h should return
    zero if there is no extended capability so VFIO reads this dword to
    know if there are extended capabilities.

    However it is not always possible to access the extended space so
    generic PCI code in pci_cfg_space_size_ext() checks if
    pci_read_config_dword() can read beyond 100h and if the check fails,
    it sets the config space size to 100h.

    VFIO does its own extended capabilities check by reading at offset 100h
    which may produce 0xffffffff which VFIO treats as the extended config
    space presense and calls vfio_ecap_init() which fails to parse
    capabilities (which is expected) but right before the exit, it writes
    zero at offset 100h which is beyond the buffer allocated for
    vdev->vconfig (which is 256 bytes) which leads to random memory
    corruption.

    This makes VFIO only check for the extended capabilities if
    the discovered config size is more than 256 bytes.

    Signed-off-by: Alexey Kardashevskiy
    Signed-off-by: Alex Williamson

    Alexey Kardashevskiy
     

11 May, 2016

1 commit

  • We are going to have multiple different types of PHB on the same system
    with POWER8 + NVLink and PHBs will have different IOMMU ops. However
    we only really care about one callback - create_table - so we can
    relax the compatibility check here.

    Signed-off-by: Alexey Kardashevskiy
    Reviewed-by: David Gibson
    Acked-by: Alex Williamson
    Signed-off-by: Michael Ellerman

    Alexey Kardashevskiy
     

09 May, 2016

1 commit

  • Many IOMMUs support multiple page table formats, meaning that any given
    domain may only support a subset of the hardware page sizes presented in
    iommu_ops->pgsize_bitmap. There are also certain use-cases where the
    creator of a domain may want to control which page sizes are used, for
    example to force the use of hugepage mappings to reduce pagetable walk
    depth.

    To this end, add a per-domain pgsize_bitmap to represent the subset of
    page sizes actually in use, to make it possible for domains with
    different requirements to coexist.

    Signed-off-by: Will Deacon
    [rm: hijacked and rebased original patch with new commit message]
    Signed-off-by: Robin Murphy
    Acked-by: Will Deacon
    Signed-off-by: Joerg Roedel

    Robin Murphy
     

29 Apr, 2016

3 commits

  • This removes iommu_group_get_iommudata() as the result is never used.
    As this is a minor cleanup, no change in behavior is expected.

    Signed-off-by: Alexey Kardashevskiy
    Reviewed-by: David Gibson
    Signed-off-by: Alex Williamson

    Alexey Kardashevskiy
     
  • If a device is reset without the memory or i/o bits enabled in the
    command register we may not detect it, potentially leaving the device
    without valid BAR programming. Add an additional test to check the
    BARs on each write to the command register.

    Signed-off-by: Alex Williamson

    Alex Williamson
     
  • INTx masking has two components, the first is that we need the ability
    to prevent the device from continuing to assert INTx. This is
    provided via the DisINTx bit in the command register and is the only
    thing we can really probe for when testing if INTx masking is
    supported. The second component is that the device needs to indicate
    if INTx is asserted via the interrupt status bit in the device status
    register. With these two features we can generically determine if one
    of the devices we own is asserting INTx, signal the user, and mask the
    interrupt while the user services the device.

    Generally if one or both of these components is broken we resort to
    APIC level interrupt masking, which requires an exclusive interrupt
    since we have no way to determine the source of the interrupt in a
    shared configuration. This often makes it difficult or impossible to
    configure the system for userspace use of the device, for an interrupt
    mode that the user may not need.

    One possible configuration of broken INTx masking is that the DisINTx
    support is fully functional, but the interrupt status bit never
    signals interrupt assertion. In this case we do have the ability to
    prevent the device from asserting INTx, but lack the ability to
    identify the interrupt source. For this case we can simply pretend
    that the device lacks INTx support entirely, keeping DisINTx set on
    the physical device, virtualizing this bit for the user, and
    virtualizing the interrupt pin register to indicate no INTx support.
    We already support virtualization of the DisINTx bit and already
    virtualize the interrupt pin for platforms without INTx support. By
    tying these components together, setting DisINTx on open and reset,
    and identifying devices broken in this particular way, we can provide
    support for them w/o the handicap of APIC level INTx masking.

    Intel i40e (XL710/X710) 10/20/40GbE NICs have been identified as being
    broken in this specific way. We leave the vfio-pci.nointxmask option
    as a mechanism to bypass this support, enabling INTx on the device
    with all the requirements of APIC level masking.

    Signed-off-by: Alex Williamson
    Cc: John Ronciak
    Cc: Jesse Brandeburg

    Alex Williamson
     

18 Mar, 2016

1 commit

  • Pull VFIO updates from Alex Williamson:
    "Various enablers for assignment of Intel graphics devices and future
    support of vGPU devices (Alex Williamson). This includes

    - Handling the vfio type1 interface as an API rather than a specific
    implementation, allowing multiple type1 providers.

    - Capability chains, similar to PCI device capabilities, that allow
    extending ioctls. Extensions here include device specific regions
    and sparse mmap descriptions. The former is used to expose non-PCI
    regions for IGD, including the OpRegion (particularly the Video
    BIOS Table), and read only PCI config access to the host and LPC
    bridge as drivers often depend on identifying those devices.

    Sparse mmaps here are used to describe the MSIx vector table, which
    vfio has always protected from mmap, but never had an API to
    explicitly define that protection. In future vGPU support this is
    expected to allow the description of PCI BARs that may mix direct
    access and emulated access within a single region.

    - The ability to expose the shadow ROM as an option ROM as IGD use
    cases may rely on the ROM even though the physical device does not
    make use of a PCI option ROM BAR"

    * tag 'vfio-v4.6-rc1' of git://github.com/awilliam/linux-vfio:
    vfio/pci: return -EFAULT if copy_to_user fails
    vfio/pci: Expose shadow ROM as PCI option ROM
    vfio/pci: Intel IGD host and LCP bridge config space access
    vfio/pci: Intel IGD OpRegion support
    vfio/pci: Enable virtual register in PCI config space
    vfio/pci: Add infrastructure for additional device specific regions
    vfio: Define device specific region type capability
    vfio/pci: Include sparse mmap capability for MSI-X table regions
    vfio: Define sparse mmap capability for regions
    vfio: Add capability chain helpers
    vfio: Define capability chains
    vfio: If an IOMMU backend fails, keep looking
    vfio/pci: Fix unsigned comparison overflow

    Linus Torvalds
     

28 Feb, 2016

1 commit

  • Calling return copy_to_user(...) in an ioctl will not
    do the right thing if there's a pagefault:
    copy_to_user returns the number of bytes not copied
    in this case.

    Fix up vfio to do
    return copy_to_user(...)) ?
    -EFAULT : 0;

    everywhere.

    Cc: stable@vger.kernel.org
    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Alex Williamson

    Michael S. Tsirkin
     

26 Feb, 2016

1 commit


23 Feb, 2016

7 commits

  • Integrated graphics may have their ROM shadowed at 0xc0000 rather than
    implement a PCI option ROM. Make this ROM appear to the user using
    the ROM BAR.

    Signed-off-by: Alex Williamson

    Alex Williamson
     
  • Provide read-only access to PCI config space of the PCI host bridge
    and LPC bridge through device specific regions. This may be used to
    configure a VM with matching register contents to satisfy driver
    requirements. Providing this through the vfio file descriptor removes
    an additional userspace requirement for access through pci-sysfs and
    removes the CAP_SYS_ADMIN requirement that doesn't appear to apply to
    the specific devices we're accessing.

    Signed-off-by: Alex Williamson

    Alex Williamson
     
  • This is the first consumer of vfio device specific resource support,
    providing read-only access to the OpRegion for Intel graphics devices.

    Signed-off-by: Alex Williamson

    Alex Williamson
     
  • Typically config space for a device is mapped out into capability
    specific handlers and unassigned space. The latter allows direct
    read/write access to config space. Sometimes we know about registers
    living in this void space and would like an easy way to virtualize
    them, similar to how BAR registers are managed. To do this, create
    one more pseudo (fake) PCI capability to be handled as purely virtual
    space. Reads and writes are serviced entirely from virtual config
    space.

    Signed-off-by: Alex Williamson

    Alex Williamson
     
  • Add support for additional regions with indexes started after the
    already defined fixed regions. Device specific code can register
    these regions with the new vfio_pci_register_dev_region() function.
    The ops structure per region currently only includes read/write
    access and a release function, allowing automatic cleanup when the
    device is closed. mmap support is only missing here because it's
    not needed by the first user queued for this support.

    Signed-off-by: Alex Williamson

    Alex Williamson
     
  • vfio-pci has never allowed the user to directly mmap the MSI-X vector
    table, but we've always relied on implicit knowledge of the user that
    they cannot do this. Now that we have capability chains that we can
    expose in the region info ioctl and a sparse mmap capability that
    represents the sub-areas within the region that can be mmap'd, we can
    make the mmap constraints more explicit.

    Signed-off-by: Alex Williamson

    Alex Williamson
     
  • Allow sub-modules to easily reallocate a buffer for managing
    capability chains for info ioctls.

    Signed-off-by: Alex Williamson

    Alex Williamson