From: Matt Domsch <Matt_Domsch@dell.com>
To: Carl-Daniel Hailfinger <c-d.hailfinger.kernel.2004@gmx.net>,
jgarzik@pobox.com, alan@redhat.com, david.balazic@hermes.si,
hpa@zytor.com, ak@suse.de
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH 2.6] EDD: add edd=off and edd=skipmbr options
Date: Tue, 23 Nov 2004 17:00:01 -0600 [thread overview]
Message-ID: <20041123230001.GE30452@lists.us.dell.com> (raw)
Carl-Daniel, David, Jeff, Alan:
I'd appreciate your testing of the following EDD code in your system
configurations where your adapter BIOSes would fail.
Peter, Andi: I've built this for x86 and x86-64, and run this on x86.
I'd appreciate your review of the assembly code, and suggestions for
improvement, prior to my submitting it to akpm for 2.6.11.
EDD: add edd=off and edd=skipmbr command line options
New command line options
edd=off (or edd=of)
edd=skipmbr (or edd=sk)
runtime options for disabling all EDD int13 calls completely, or for
skipping the int13 READ SECTOR calls, respectively.
These are provided to allow Linux distributions to include CONFIG_EDD=m, yet
allow end-users to disable parts of EDD which may not work well with their
system's BIOS.
Signed-off-by: Matt Domsch <Matt_Domsch@dell.com>
Documentation/kernel-parameters.txt | 5 ++++
arch/i386/boot/edd.S | 42 ++++++++++++++++++++++++++++++++++--
include/linux/edd.h | 4 +++
3 files changed, 49 insertions, 2 deletions
--
Matt Domsch
Sr. Software Engineer, Lead Engineer
Dell Linux Solutions linux.dell.com & www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com
--- ../linux-2.6/arch/i386/boot/edd.S Sat Nov 13 20:22:44 2004
+++ linux-2.6-edd-options/arch/i386/boot/edd.S Tue Nov 23 15:26:28 2004
@@ -1,5 +1,6 @@
/*
* BIOS Enhanced Disk Drive support
+ * Copyright (C) 2002, 2003, 2004 Dell, Inc.
* by Matt Domsch <Matt_Domsch@dell.com> October 2002
* conformant to T13 Committee www.t13.org
* projects 1572D, 1484D, 1386D, 1226DT
@@ -7,14 +8,52 @@
* and Andrew Wilks <Andrew_Wilks@dell.com> September 2003, June 2004
* legacy CHS retreival by Patrick J. LoPresti <patl@users.sourceforge.net>
* March 2004
+ * Command line option parsing, Matt Domsch, November 2004
*/
#include <linux/edd.h>
+#include <asm/setup.h>
#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE)
+ movb $0, (EDD_MBR_SIG_NR_BUF) # zero value at EDD_MBR_SIG_NR_BUF
+ movb $0, (EDDNR) # zero value at EDDNR
+
+# Check the command line for two options:
+# edd=of disables EDD completely (edd=off)
+# edd=sk skips the MBR test (edd=skipmbr)
+ pushl %esi
+ cmpl $0, %cs:cmd_line_ptr
+ jz done_cl
+ movl %cs:(cmd_line_ptr), %esi
+# ds:esi has the pointer to the command line now
+ movl $(COMMAND_LINE_SIZE-6), %ecx
+# loop through kernel command line one byte at a time
+cl_loop:
+ cmpl $EDD_CL_EQUALS, (%si)
+ jz found_edd_equals
+ incl %esi
+ loop cl_loop
+ jmp done_cl
+found_edd_equals:
+# only looking at first two characters after equals
+ addl $4, %esi
+ cmpw $EDD_CL_OFF, (%si) # edd=of
+ jz do_edd_off
+ cmpw $EDD_CL_SKIP, (%si) # edd=sk
+ jz do_edd_skipmbr
+ jmp done_cl
+do_edd_skipmbr:
+ popl %esi
+ jmp edd_start
+do_edd_off:
+ popl %esi
+ jmp edd_done
+done_cl:
+ popl %esi
+
+
# Read the first sector of each BIOS disk device and store the 4-byte signature
edd_mbr_sig_start:
- movb $0, (EDD_MBR_SIG_NR_BUF) # zero value at EDD_MBR_SIG_NR_BUF
movb $0x80, %dl # from device 80
movw $EDD_MBR_SIG_BUF, %bx # store buffer ptr in bx
edd_mbr_sig_read:
@@ -76,7 +115,6 @@ edd_start:
# result buffer for fn48
movw $EDDBUF+EDDEXTSIZE, %si # in ds:si, fn41 results
# kept just before that
- movb $0, (EDDNR) # zero value at EDDNR
movb $0x80, %dl # BIOS device 0x80
edd_check_ext:
--- ../linux-2.6/include/linux/edd.h Sat Nov 13 20:22:46 2004
+++ linux-2.6-edd-options/include/linux/edd.h Tue Nov 23 15:03:51 2004
@@ -49,6 +49,10 @@
#define EDD_MBR_SIG_MAX 16 /* max number of signatures to store */
#define EDD_MBR_SIG_NR_BUF 0x1ea /* addr of number of MBR signtaures at EDD_MBR_SIG_BUF
in boot_params - treat this as 1 byte */
+#define EDD_CL_EQUALS 0x3d646465 /* "edd=" */
+#define EDD_CL_OFF 0x666f /* "of" for off */
+#define EDD_CL_SKIP 0x6b73 /* "sk" for skipmbr */
+
#ifndef __ASSEMBLY__
#define EDD_EXT_FIXED_DISK_ACCESS (1 << 0)
--- ../linux-2.6/Documentation/kernel-parameters.txt Tue Nov 23 10:56:18 2004
+++ linux-2.6-edd-options/Documentation/kernel-parameters.txt Tue Nov 23 16:28:53 2004
@@ -29,6 +29,7 @@ restrictions referred to are that the re
CD Appropriate CD support is enabled.
DEVFS devfs support is enabled.
DRM Direct Rendering Management support is enabled.
+ EDD BIOS Enhanced Disk Drive Services (EDD) is enabled
EFI EFI Partitioning (GPT) is enabled
EIDE EIDE/ATAPI support is enabled.
FB The frame buffer device is enabled.
@@ -407,6 +408,10 @@ running once the system is up.
eda= [HW,PS2]
edb= [HW,PS2]
+
+ edd [EDD]
+ Format: {"of[f]" | "sk[ipmbr]"}
+ See comment in arch/i386/boot/edd.S
eicon= [HW,ISDN]
Format: <id>,<membase>,<irq>
next reply other threads:[~2004-11-23 23:04 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-23 23:00 Matt Domsch [this message]
2004-11-24 3:11 ` [PATCH 2.6] EDD: add edd=off and edd=skipmbr options Randy.Dunlap
2004-11-24 10:39 ` Andi Kleen
2004-12-02 19:25 ` Matt Domsch
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=20041123230001.GE30452@lists.us.dell.com \
--to=matt_domsch@dell.com \
--cc=ak@suse.de \
--cc=alan@redhat.com \
--cc=c-d.hailfinger.kernel.2004@gmx.net \
--cc=david.balazic@hermes.si \
--cc=hpa@zytor.com \
--cc=jgarzik@pobox.com \
--cc=linux-kernel@vger.kernel.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: 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