svn commit: r316392 - stable/11/sys/x86/iommu
Konstantin Belousov
kib at FreeBSD.org
Sun Apr 2 07:11:16 UTC 2017
Author: kib
Date: Sun Apr 2 07:11:15 2017
New Revision: 316392
URL: https://svnweb.freebsd.org/changeset/base/316392
Log:
MFC r315968:
Provide less laborius way to enable busdma DMAR to only short list of devices.
Modified:
stable/11/sys/x86/iommu/busdma_dmar.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/x86/iommu/busdma_dmar.c
==============================================================================
--- stable/11/sys/x86/iommu/busdma_dmar.c Sun Apr 2 03:08:25 2017 (r316391)
+++ stable/11/sys/x86/iommu/busdma_dmar.c Sun Apr 2 07:11:15 2017 (r316392)
@@ -74,14 +74,34 @@ static bool
dmar_bus_dma_is_dev_disabled(int domain, int bus, int slot, int func)
{
char str[128], *env;
+ int default_bounce;
+ bool ret;
+ static const char bounce_str[] = "bounce";
+ static const char dmar_str[] = "dmar";
+
+ default_bounce = 0;
+ env = kern_getenv("hw.busdma.default");
+ if (env != NULL) {
+ if (strcmp(env, bounce_str) == 0)
+ default_bounce = 1;
+ else if (strcmp(env, dmar_str) == 0)
+ default_bounce = 0;
+ freeenv(env);
+ }
- snprintf(str, sizeof(str), "hw.busdma.pci%d.%d.%d.%d.bounce",
+ snprintf(str, sizeof(str), "hw.busdma.pci%d.%d.%d.%d",
domain, bus, slot, func);
env = kern_getenv(str);
if (env == NULL)
- return (false);
+ return (default_bounce != 0);
+ if (strcmp(env, bounce_str) == 0)
+ ret = true;
+ else if (strcmp(env, dmar_str) == 0)
+ ret = false;
+ else
+ ret = default_bounce != 0;
freeenv(env);
- return (true);
+ return (ret);
}
/*
More information about the svn-src-stable-11
mailing list