freebsd-dev/sys/x86
Konstantin Belousov cf619a92d2 Fix batched unload for DMAR busdma in qi mode.
Do not queue dmar_map_entries with zeroed gseq to
dmar_qi_invalidate_locked().  Zero gseq stops the processing in the qi
task.  Do not assign possibly uninitialized on-stack gseq to map
entries when requeuing them on unit tlb_flush queue.  Random garbage
in gsec is interpreted as too high invalidation sequence number and
again stop the processing in the task.

Make the sequence numbers generation completely contained in
dmar_qi_invalidate_locked() and dmar_qi_emit_wait_seq().  Upper code
directly passes boolean requesting emiting wait command instead of
trying to provide hint to avoid it by passing NULL gseq pointer.

Microoptimize the requeueing to tlb_flush queue by doing it for the
whole queue.

Diagnosed and tested by:	Brett Gutstein <bgutstein@rice.edu>
Discussed with:	alc
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
2017-06-19 21:48:52 +00:00
..
acpica More accurately handle early EFER restoration on resume. 2017-06-11 14:39:08 +00:00
bios
cpufreq - Mention mismatching numbers in MSR vs. ACPI _PSS count warning: seeing 2016-12-01 14:31:05 +00:00
include Remove constants and comments for unimplemented entries in the default LDT. 2017-05-24 18:54:21 +00:00
iommu Fix batched unload for DMAR busdma in qi mode. 2017-06-19 21:48:52 +00:00
isa Validate values read from the RTC before trying BCD decoding 2017-03-09 02:19:30 +00:00
pci Convert PCIe Hot Plug to using pci_request_feature 2017-02-25 06:11:59 +00:00
x86 Don't try to assign interrupts to a CPU on single-CPU systems. 2017-06-14 13:34:09 +00:00
xen All these files need sys/vmmeter.h, but now they got it implicitly 2017-04-17 17:07:00 +00:00