Commit Graph

22 Commits

Author SHA1 Message Date
kib
e0546eb073 MFC r286777:
Comment only change, fix grammar and somewhat clarify the action.
2015-08-17 18:36:16 +00:00
kib
8adebdc1fb MFC r283735:
Remove several write-only variables.
2015-06-05 08:36:25 +00:00
kib
c5849be284 MFC r283692:
Explicitely enable queued invalidation completion interrupt.
2015-06-05 08:23:33 +00:00
kib
57545f1ca4 MFC r281254:
Account for the offset of the page run when allocating the
dmar_map_entry.
2015-04-15 06:56:51 +00:00
kib
cff2ee95c4 MFC r280435:
When mapping an allocated entry, use the entry size, instead of the
requested size.  If tag restrictions caused split entry, its size is
less then requsted.
2015-03-31 00:57:25 +00:00
kib
2f3af4a1a4 MFC r280434:
Assert that the mapping loop makes progress.
2015-03-31 00:55:12 +00:00
kib
6414d2bba4 MFC r280254:
Provide definitions for all descriptors types in the DMAR invalidation
queue.
2015-03-26 10:44:16 +00:00
kib
81e69ec09e MFC r280196:
Recheck that boundary is not crossed after the move to satisfy boundary
restriction.
2015-03-24 08:21:36 +00:00
kib
3fef6ad686 MFC r280195:
When inserting new entry into the address map, ensure that not only
next entry does not intersect with the tail of the new entry, but also
that previous entry is also before new entry start.
2015-03-24 08:18:24 +00:00
kib
5186484c7d MFC r280253:
Fix syntax error.
2015-03-22 09:12:44 +00:00
kib
76ac5da69f MFC r276949:
(only to ease merging of r279117).

MFC r279117:
Revert r276949 and redo the fix for PCIe/PCI bridges, which do not
follow specification and do not provide PCIe capability.
2015-03-01 10:39:19 +00:00
kib
861937e4a4 MFC r276948:
Print rid when announcing DMAR context creation.  Print sid when fault
occurs.
2015-03-01 10:35:54 +00:00
kib
28c8a09abb MFC r276867:
Fix DMAR context allocations for the devices behind PCIe->PCI bridges
after dmar driver was converted to use rids.  The bus component to
calculate context page must be taken from the requestor rid, which is
a bridge, and not from the device bus number.
2015-03-01 10:29:48 +00:00
rstone
0b55a8c80a MFC r264007,r264008,r264009,r264011,r264012,r264013
MFC support for PCI Alternate RID Interpretation.  ARI is an optional PCIe
feature that allows PCI devices to present up to 256 functions on a bus.
This is effectively a prerequisite for PCI SR-IOV support.

r264007:
   Add a method to get the PCI RID for a device.

   Reviewed by:  kib
   MFC after:    2 months
   Sponsored by: Sandvine Inc.

r264008:
   Re-implement the DMAR I/O MMU code in terms of PCI RIDs

   Under the hood the VT-d spec is really implemented in terms of
   PCI RIDs instead of bus/slot/function, even though the spec makes
   pains to convert back to bus/slot/function in examples.  However
   working with bus/slot/function is not correct when PCI ARI is
   in use, so convert to using RIDs in most cases.  bus/slot/function
   will only be used when reporting errors to a user.

   Reviewed by:  kib
   MFC after:    2 months
   Sponsored by: Sandvine Inc.

r264009:
   Re-write bhyve's I/O MMU handling in terms of PCI RID.

   Reviewed by:  neel
   MFC after:    2 months
   Sponsored by: Sandvine Inc.

r264011:
   Add support for PCIe ARI

   PCIe Alternate RID Interpretation (ARI) is an optional feature that
   allows devices to have up to 256 different functions.  It is
   implemented by always setting the PCI slot number to 0 and
   re-purposing the 5 bits used to encode the slot number to instead
   contain the function number.  Combined with the original 3 bits
   allocated for the function number, this allows for 256 functions.

   This is enabled by default, but it's expected to be a no-op on currently
   supported hardware.  It's a prerequisite for supporting PCI SR-IOV, and
   I want the ARI support to go in early to help shake out any bugs in it.
   ARI can be disabled by setting the tunable hw.pci.enable_ari=0.

   Reviewed by:  kib
   MFC after:    2 months
   Sponsored by: Sandvine Inc.

r264012:
   Print status of ARI capability in pciconf -c

   Teach pciconf how to print out the status (enabled/disabled) of the ARI
   capability on PCI Root Complexes and Downstream Ports.

   MFC after:    2 months
   Sponsored by: Sandvine Inc.

r264013:
   Add missing copyright date.

   MFC after:    2 months
2015-03-01 04:22:06 +00:00
kib
6aee714821 MFC r278606:
Registers definitions for the new capabilities.
2015-02-18 08:06:36 +00:00
kib
f387fc2f7e MFC r278605:
vm_page_lookup() accepts read-locked object.
2015-02-18 08:04:03 +00:00
kib
5846d19730 MFC r277023:
Avoid excessive flushing and do missed neccessary flushing in the IOMMU
page table update code.
2015-01-18 09:49:32 +00:00
kib
5a582ae617 MFC r263306:
Add some support for the PCI(e)-PCI bridges to the Intel VT-d driver.
2014-03-25 20:17:57 +00:00
kib
879dfba7f2 MFC r263305:
Provide a workaround by identity mapping the 32 pages after the bogus
entry start, which seems to be enough for the reported BIOS.
2014-03-25 20:16:28 +00:00
kib
a528b1ed30 MFC r263304:
Trim at EOL.
2014-03-21 13:31:56 +00:00
eadler
ec294fd7f5 MFC r258779,r258780,r258787,r258822:
Fix undefined behavior: (1 << 31) is not defined as 1 is an int and this
shifts into the sign bit.  Instead use (1U << 31) which gets the
expected result.

Similar to the (1 << 31) case it is not defined to do (2 << 30).

This fix is not ideal as it assumes a 32 bit int, but does fix the issue
for most cases.

A similar change was made in OpenBSD.
2014-02-04 03:36:42 +00:00
kib
2c4d831850 MFC DMAR busdma implementation.
MFC r257251:
Import the driver for VT-d DMAR hardware.  Implement the busdma(9) using DMARs.

MFC r257512:
Add support for queued invalidation.

MFC miscellaneous follow-ups to r257251.

MFC r257266:
Remove redundand assignment to error variable and check for its value.

MFC r257308:
Remove redundand declaration.

MFC r257511:
Return BUS_PROBE_NOWILDCARD from the DMAR probe method.

MFC r257860,r257896,r257900,r257902,r257903 (by dim):
Fixes for gcc compilation.
2013-12-17 13:49:35 +00:00