lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 23 Feb 2012 12:30:11 -0800 From: Andrew Morton <akpm@...ux-foundation.org> To: Mike Travis <travis@....com> Cc: Ingo Molnar <mingo@...e.hu>, David Woodhouse <dwmw2@...radead.org>, Chris Wright <chrisw@...s-sol.org>, Daniel Rahn <drahn@...e.com>, Jesse Barnes <jbarnes@...tuousgeek.org>, Jack Steiner <steiner@....com>, Tony Ernst <tee@....com>, x86@...nel.org, linux-kernel@...r.kernel.org Subject: Re: [PATCH 2/2] x86, pci: Increase the number of iommus supported to be MAX_IO_APICS v2 On Wed, 22 Feb 2012 18:49:32 -0600 Mike Travis <travis@....com> wrote: > The number of IOMMUs supported should be the same as the number of IO APICS. > This limit comes into play when the IOMMUs are identity mapped, thus the > number of possible IOMMUs in the "static identity" (si) domain should be > this same number. > > Version 2: Fix compile error on ia64 (it uses the DMAR logic but does not > define MAX_IO_APICS.) Check to insure that iommu_bmp does not overflow. Here's your v2 delta: --- a/drivers/iommu/intel-iommu.c~x86-pci-increase-the-number-of-iommus-supported-to-be-max_io_apics-v2 +++ a/drivers/iommu/intel-iommu.c @@ -354,10 +354,17 @@ static int hw_pass_through = 1; /* si_domain contains mulitple devices */ #define DOMAIN_FLAG_STATIC_IDENTITY (1 << 2) +/* define the limit of IOMMUs supported in each domain */ +#ifdef CONFIG_X86 +#define IOMMU_UNITS_SUPPORTED MAX_IO_APICS +#else +#define IOMMU_UNITS_SUPPORTED 64 +#endif + struct dmar_domain { int id; /* domain id */ int nid; /* node id */ - DECLARE_BITMAP(iommu_bmp, MAX_IO_APICS); + DECLARE_BITMAP(iommu_bmp, IOMMU_UNITS_SUPPORTED); /* bitmap of iommus this domain uses*/ struct list_head devices; /* all devices' list */ @@ -2401,12 +2408,17 @@ static int __init init_dmars(void) * endfor */ for_each_drhd_unit(drhd) { - g_num_of_iommus++; /* * lock not needed as this is only incremented in the single * threaded kernel __init code path all other access are read * only */ + if (g_num_of_iommus < IOMMU_UNITS_SUPPORTED) + g_num_of_iommus++; + else + printk_once(KERN_ERR, + "MAX number (%d) of IOMMUs supported exceeded\n", + IOMMU_UNITS_SUPPORTED); } g_iommus = kcalloc(g_num_of_iommus, sizeof(struct intel_iommu *), The printk_once() is wrong, isn't it? There should not be a comma. Also we can tweak the code flow and the message to avoid dorky 80-column games: --- a/drivers/iommu/intel-iommu.c~x86-pci-increase-the-number-of-iommus-supported-to-be-max_io_apics-v2-fix +++ a/drivers/iommu/intel-iommu.c @@ -2413,11 +2413,11 @@ static int __init init_dmars(void) * threaded kernel __init code path all other access are read * only */ - if (g_num_of_iommus < IOMMU_UNITS_SUPPORTED) + if (g_num_of_iommus < IOMMU_UNITS_SUPPORTED) { g_num_of_iommus++; - else - printk_once(KERN_ERR, - "MAX number (%d) of IOMMUs supported exceeded\n", + continue; + } + printk_once(KERN_ERR "intel-iommu: exceeded %d IOMMUs\n", IOMMU_UNITS_SUPPORTED); } _ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists