From: Andi Kleen <ak@suse.de>
To: Rene Herman <rene.herman@gmail.com>, Andi Kleen <ak@suse.de>,
Zachary Amsden <zach@vmware.com>,
Jeremy Fitzhardinge <jeremy@goop.org>,
linux-kernel@vger.kernel.org, patches@x86-64.org
Subject: [PATCH] [17/35] i386: probe_roms() cleanup
Date: Sat, 28 Apr 2007 19:52:41 +0200 (CEST) [thread overview]
Message-ID: <20070428175242.050AE151D1@wotan.suse.de> (raw)
In-Reply-To: <20070428752.712152000@suse.de>
From: Rene Herman <rene.herman@gmail.com>
Remove the assumption that if the first page of a legacy ROM is mapped,
it'll all be mapped. This'll also stop people reading this code from
wondering if they're looking at a bug...
Signed-off-by: Rene Herman <rene.herman@gmail.com>
Signed-off-by: Martin Murray <murrayma@citi.umich.edu>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: Andi Kleen <ak@suse.de>
Cc: Zachary Amsden <zach@vmware.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
arch/i386/kernel/e820.c | 29 ++++++++++++++++++-----------
1 file changed, 18 insertions(+), 11 deletions(-)
Index: linux/arch/i386/kernel/e820.c
===================================================================
--- linux.orig/arch/i386/kernel/e820.c
+++ linux/arch/i386/kernel/e820.c
@@ -161,26 +161,27 @@ static struct resource standard_io_resou
static int __init romsignature(const unsigned char *rom)
{
+ const unsigned short * const ptr = (const unsigned short *)rom;
unsigned short sig;
- return probe_kernel_address((const unsigned short *)rom, sig) == 0 &&
- sig == ROMSIGNATURE;
+ return probe_kernel_address(ptr, sig) == 0 && sig == ROMSIGNATURE;
}
-static int __init romchecksum(unsigned char *rom, unsigned long length)
+static int __init romchecksum(const unsigned char *rom, unsigned long length)
{
- unsigned char sum;
+ unsigned char sum, c;
- for (sum = 0; length; length--)
- sum += *rom++;
- return sum == 0;
+ for (sum = 0; length && probe_kernel_address(rom++, c) == 0; length--)
+ sum += c;
+ return !length && !sum;
}
static void __init probe_roms(void)
{
+ const unsigned char *rom;
unsigned long start, length, upper;
- unsigned char *rom;
- int i;
+ unsigned char c;
+ int i;
/* video rom */
upper = adapter_rom_resources[0].start;
@@ -191,8 +192,11 @@ static void __init probe_roms(void)
video_rom_resource.start = start;
+ if (probe_kernel_address(rom + 2, c) != 0)
+ continue;
+
/* 0 < length <= 0x7f * 512, historically */
- length = rom[2] * 512;
+ length = c * 512;
/* if checksum okay, trust length byte */
if (length && romchecksum(rom, length))
@@ -226,8 +230,11 @@ static void __init probe_roms(void)
if (!romsignature(rom))
continue;
+ if (probe_kernel_address(rom + 2, c) != 0)
+ continue;
+
/* 0 < length <= 0x7f * 512, historically */
- length = rom[2] * 512;
+ length = c * 512;
/* but accept any length that fits if checksum okay */
if (!length || start + length > upper || !romchecksum(rom, length))
next prev parent reply other threads:[~2007-04-28 17:55 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-28 17:52 [PATCH] [0/35] Some x86 2.6.22 candidate patches for review Andi Kleen
2007-04-28 17:52 ` [PATCH] [1/35] i386: revert i386-fix-the-verify_quirk_intel_irqbalance Andi Kleen
2007-04-28 17:52 ` [PATCH] [2/35] x86_64: revert x86_64-mm-add-genapic_force Andi Kleen
2007-04-28 17:52 ` [PATCH] [3/35] x86: revert x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 Andi Kleen
2007-04-28 17:52 ` [PATCH] [4/35] x86_64: optimize & fix APIC mode setup Andi Kleen
2007-04-28 17:52 ` [PATCH] [5/35] x86_64: always use physical delivery mode on > 8 CPUs Andi Kleen
2007-04-28 17:52 ` [PATCH] [6/35] x86_64: remove clustered APIC mode Andi Kleen
2007-04-28 17:52 ` [PATCH] [7/35] x86: default to physical mode on hotplug CPU kernels Andi Kleen
2007-04-28 17:52 ` [PATCH] [8/35] x86_64: a memcpy that tries to reduce cache pressure Andi Kleen
2007-04-30 7:26 ` [patches] [PATCH] [8/35] x86_64: a memcpy that tries to reducecache pressure Jan Beulich
2007-04-30 9:04 ` Andi Kleen
2007-04-30 16:14 ` Bryan O'Sullivan
2007-04-30 16:25 ` Andi Kleen
2007-04-28 17:52 ` [PATCH] [9/35] i386: adjustments to page table dump during oops (v4) Andi Kleen
2007-04-28 17:52 ` [PATCH] [10/35] x86: adjust inclusion of asm/fixmap.h Andi Kleen
2007-04-28 17:52 ` [PATCH] [11/35] x86_64: adjust inclusion of asm/vsyscall32.h Andi Kleen
2007-04-28 17:52 ` [PATCH] [12/35] x86: consolidate smp_send_stop() Andi Kleen
2007-04-28 17:52 ` [PATCH] [13/35] i386: No need to use -traditional for processing asm in i386/kernel/ Andi Kleen
2007-04-28 17:52 ` [PATCH] [14/35] i386: mtrr range check correction Andi Kleen
2007-04-28 17:52 ` [PATCH] [15/35] i386: pit_latch_buggy has no effect Andi Kleen
2007-04-28 17:52 ` [PATCH] [16/35] i386: Add an option for the VIA C7 which sets appropriate L1 cache Andi Kleen
2007-04-28 18:08 ` Jeff Garzik
2007-04-28 18:28 ` Dave Jones
2007-04-28 17:52 ` Andi Kleen [this message]
2007-04-28 17:52 ` [PATCH] [18/35] x86_64: a few missing entry.S annotations Andi Kleen
2007-04-28 17:52 ` [PATCH] [19/35] i386: Add dwarf2 annotations to *_user and checksum functions Andi Kleen
2007-04-28 17:52 ` [PATCH] [20/35] x86: Fix i386 and x86_64 fault information pollution Andi Kleen
2007-04-28 17:52 ` [PATCH] [21/35] x86_64: Some cleanup in time.c Andi Kleen
2007-04-28 17:52 ` [PATCH] [22/35] i386: i386 make NMI use PERFCTR1 for architectural perfmon (take 2) Andi Kleen
2007-04-28 17:52 ` [PATCH] [23/35] x86_64: x86_64 " Andi Kleen
2007-04-28 17:52 ` [PATCH] [24/35] i386: Add __init to probe_bigsmp Andi Kleen
2007-04-28 17:52 ` [PATCH] [25/35] i386: Change sysenter_setup to __cpuinit & improve __INIT, __INITDATA Andi Kleen
2007-04-28 17:52 ` [PATCH] [26/35] x86_64: Correct max number of CPUs in Kconfig Andi Kleen
2007-04-28 17:52 ` [PATCH] [27/35] i386: Support Oprofile for AMD Family 10 CPUs Andi Kleen
2007-04-28 17:52 ` [PATCH] [28/35] x86: Drop cc-options call for all options supported in gcc 3.2+ Andi Kleen
2007-04-28 17:52 ` [PATCH] [29/35] i386: Update __copy_to_user_inatomic linuxdoc description Andi Kleen
2007-04-28 17:52 ` [PATCH] [30/35] i386: clean up mach_reboot_fixups Andi Kleen
2007-04-28 17:52 ` [PATCH] [31/35] i386: Fix usage of -mtune when X86_GENERIC=y or CONFIG_MCORE2=y Andi Kleen
2007-04-28 17:52 ` [PATCH] [32/35] x86_64: Remove unused set_seg_base Andi Kleen
2007-04-28 17:52 ` [PATCH] [33/35] x86_64: Remove duplicated code for reading control registers Andi Kleen
2007-04-28 17:53 ` [PATCH] [34/35] x86_64: fix cpu MHz reporting on constant_tsc cpus Andi Kleen
2007-04-28 17:53 ` [PATCH] [35/35] i386: Simplify smp_call_function*() by using common implementation 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=20070428175242.050AE151D1@wotan.suse.de \
--to=ak@suse.de \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=patches@x86-64.org \
--cc=rene.herman@gmail.com \
--cc=zach@vmware.com \
/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: link
Be 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
Powered by JetHome