lkml.org 
[lkml]   [2004]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 2.6] EDD: add edd=off and edd=skipmbr options
    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>
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:08    [W:0.027 / U:152.304 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site