LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Andi Kleen <ak@suse.de> To: Muli Ben-Yehuda <muli@il.ibm.com>, Leo Duran <leo.duran@amd.com>, Job Mason <jdmason@kudzu.us>, patches@x86-64.org, linux-kernel@vger.kernel.org Subject: [PATCH x86 for review II] [37/39] x86_64: robustify bad_dma_address handling Date: Mon, 12 Feb 2007 08:38:25 +0100 (CET) [thread overview] Message-ID: <20070212073825.BEB1213DA0@wotan.suse.de> (raw) In-Reply-To: <20070212837.963446000@suse.de> From: Muli Ben-Yehuda <muli@il.ibm.com> - set bad_dma_address explicitly to 0x0 - reserve 32 pages from bad_dma_address and up - WARN_ON() a driver feeding us bad_dma_address Thanks to Leo Duran <leo.duran@amd.com> for the suggestion. Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com> Signed-off-by: Andi Kleen <ak@suse.de> Cc: Leo Duran <leo.duran@amd.com> Cc: Job Mason <jdmason@kudzu.us> --- arch/x86_64/kernel/pci-calgary.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) Index: linux/arch/x86_64/kernel/pci-calgary.c =================================================================== --- linux.orig/arch/x86_64/kernel/pci-calgary.c +++ linux/arch/x86_64/kernel/pci-calgary.c @@ -138,6 +138,8 @@ static const unsigned long phb_debug_off #define PHB_DEBUG_STUFF_OFFSET 0x0020 +#define EMERGENCY_PAGES 32 /* = 128KB */ + unsigned int specified_table_size = TCE_TABLE_SIZE_UNSPECIFIED; static int translate_empty_slots __read_mostly = 0; static int calgary_detected __read_mostly = 0; @@ -296,6 +298,16 @@ static void __iommu_free(struct iommu_ta { unsigned long entry; unsigned long badbit; + unsigned long badend; + + /* were we called with bad_dma_address? */ + badend = bad_dma_address + (EMERGENCY_PAGES * PAGE_SIZE); + if (unlikely((dma_addr >= bad_dma_address) && (dma_addr < badend))) { + printk(KERN_ERR "Calgary: driver tried unmapping bad DMA " + "address 0x%Lx\n", dma_addr); + WARN_ON(1); + return; + } entry = dma_addr >> PAGE_SHIFT; @@ -656,8 +668,8 @@ static void __init calgary_reserve_regio u64 start; struct iommu_table *tbl = dev->sysdata; - /* reserve bad_dma_address in case it's a legal address */ - iommu_range_reserve(tbl, bad_dma_address, 1); + /* reserve EMERGENCY_PAGES from bad_dma_address and up */ + iommu_range_reserve(tbl, bad_dma_address, EMERGENCY_PAGES); /* avoid the BIOS/VGA first 640KB-1MB region */ start = (640 * 1024); @@ -1176,6 +1188,7 @@ int __init calgary_iommu_init(void) } force_iommu = 1; + bad_dma_address = 0x0; dma_ops = &calgary_dma_ops; return 0;
next prev parent reply other threads:[~2007-02-12 7:41 UTC|newest] Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-02-12 7:37 [PATCH x86 for review II] [1/39] i386: move startup_32() in text.head section Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [2/39] x86_64: Break init() in two parts to avoid MODPOST warnings Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [3/39] i386: arch/i386/kernel/cpu/mcheck/mce.c should #include <asm/mce.h> Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [4/39] i386: add idle notifier Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [5/39] i386: improve sched_clock() on i686 Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [6/39] i386: romsignature/checksum cleanup Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [7/39] x86_64: Fix fake numa for x86_64 machines with big IO hole Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [8/39] x86_64: Remove fastcall references in x86_64 code Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [9/39] x86_64: Use constant instead of raw number in x86_64 ioperm.c Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [10/39] x86_64: Handle 32 bit PerfMon Counter writes cleanly in x86_64 nmi_watchdog Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [11/39] i386: Handle 32 bit PerfMon Counter writes cleanly in i386 nmi_watchdog Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [12/39] i386: Handle 32 bit PerfMon Counter writes cleanly in oprofile Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [13/39] i386: CONFIG_PHYSICAL_ALIGN limited to 4M? Andi Kleen 2007-02-13 6:36 ` Rene Herman 2007-02-12 7:38 ` [PATCH x86 for review II] [14/39] x86_64: cleanup Doc/x86_64/ files Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [15/39] x86_64: list x86_64 quilt tree Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [16/39] x86: simplify notify_page_fault() Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [17/39] x86_64: Tighten mce_amd driver MSR reads Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [18/39] x86_64: Allow to run a program when a machine check event is detected Andi Kleen 2007-02-12 7:54 ` Oliver Neukum 2007-02-12 8:04 ` Andi Kleen 2007-02-12 8:11 ` Bauke Jan Douma 2007-02-12 15:05 ` [patches] " Pavel Machek 2007-02-12 7:38 ` [PATCH x86 for review II] [19/39] x86_64: remove get_pmd() Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [20/39] i386: Small cleanup to TLB flush code Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [21/39] i386: rdmsr_on_cpu, wrmsr_on_cpu Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [22/39] x86_64: Kconfig typos Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [23/39] i386: use smp_call_function_single() Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [24/39] " Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [25/39] x86_64: Fix preprocessor condition Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [26/39] i386: fix 32-bit ioctls on x64_32 Andi Kleen 2007-02-12 13:24 ` Giuliano Procida 2007-02-12 22:28 ` Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [27/39] i386: APM on i386 Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [28/39] i386: fix size_or_mask and size_and_mask Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [29/39] x86_64: - Ignore long SMI interrupts in clock calibration code - update 1 Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [30/39] x86_64: Check return value of putreg in PTRACE_SETREGS Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [31/39] x86_64: Unexport __supported_pte_mask Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [32/39] x86_64: x86_64 - Fix FS/GS registers for VT execution Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [33/39] x86_64: Fix off by one error in IOMMU boundary checking Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [34/39] i386: Use stack arguments for calling into EFI Andi Kleen 2007-02-12 19:45 ` Frédéric RISS 2007-02-12 7:38 ` [PATCH x86 for review II] [35/39] x86_64: Don't reserve ROMs Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [36/39] x86_64: define dma noncoherent API functions Andi Kleen 2007-02-12 7:38 ` Andi Kleen [this message] 2007-02-12 7:38 ` [PATCH x86 for review II] [38/39] x86: fix laptop bootup hang in init_acpi() Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [39/39] i386: All Transmeta CPUs have constant TSCs Andi Kleen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20070212073825.BEB1213DA0@wotan.suse.de \ --to=ak@suse.de \ --cc=jdmason@kudzu.us \ --cc=leo.duran@amd.com \ --cc=linux-kernel@vger.kernel.org \ --cc=muli@il.ibm.com \ --cc=patches@x86-64.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).