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
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <480C0582.9010509@firmworks.com>
Date:	Sun, 20 Apr 2008 17:09:54 -1000
From:	Mitch Bradley <wmb@...mworks.com>
To:	Yinghai Lu <yhlu.kernel@...il.com>
CC:	Andres Salomon <dilinger@...ued.net>,
	"H. Peter Anvin" <hpa@...or.com>,
	"Eric W. Biederman" <ebiederm@...ssion.com>,
	Ingo Molnar <mingo@...e.hu>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Joseph Fannin <jfannin@...il.com>,
	linux-kernel@...r.kernel.org, jordan.crouse@....com
Subject: Re: [PATCH 1/2] OLPC: Add support for calling into Open Firmware



Yinghai Lu wrote:
> On Sat, Apr 19, 2008 at 10:39 AM, Andres Salomon <dilinger@...ued.net> wrote:
>   
>>  This adds 32-bit support for calling into OFW from the kernel.  It's useful
>>  for querying the firmware for misc hardware information, fetching the device
>>  tree, etc.
>>
>>  There's potentially no reason why other platforms couldn't use this, but
>>  currently OLPC is the main user of it.
>>
>>  This work was originally done by Mitch Bradley.
>>
>>  Signed-off-by: Andres Salomon <dilinger@...ian.org>
>>  ---
>>   arch/x86/Kconfig          |    8 +++++
>>   arch/x86/kernel/Makefile  |    1 +
>>   arch/x86/kernel/head_32.S |   27 ++++++++++++++++
>>   arch/x86/kernel/ofw.c     |   75 +++++++++++++++++++++++++++++++++++++++++++++
>>   include/asm-x86/ofw.h     |   50 ++++++++++++++++++++++++++++++
>>   include/asm-x86/setup.h   |    1 +
>>   6 files changed, 162 insertions(+), 0 deletions(-)
>>   create mode 100644 arch/x86/kernel/ofw.c
>>   create mode 100644 include/asm-x86/ofw.h
>>
>>  diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
>>  index 3b9089b..ce56105 100644
>>  --- a/arch/x86/Kconfig
>>  +++ b/arch/x86/Kconfig
>>  @@ -661,6 +661,14 @@ config I8K
>>           Say Y if you intend to run this kernel on a Dell Inspiron 8000.
>>           Say N otherwise.
>>
>>  +config OPEN_FIRMWARE
>>  +       bool "Support for Open Firmware"
>>  +       default y if OLPC
>>  +       ---help---
>>  +         This option adds support for the implementation of Open Firmware
>>  +         that is used on the OLPC XO laptop.
>>  +         If unsure, say N here.
>>  +
>>   config X86_REBOOTFIXUPS
>>         def_bool n
>>         prompt "Enable X86 board specific fixups for reboot"
>>  diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
>>  index 9575754..d33600e 100644
>>  --- a/arch/x86/kernel/Makefile
>>  +++ b/arch/x86/kernel/Makefile
>>  @@ -54,6 +54,7 @@ obj-$(CONFIG_X86_TRAMPOLINE)  += trampoline_$(BITS).o
>>   obj-$(CONFIG_X86_MPPARSE)      += mpparse_$(BITS).o
>>   obj-$(CONFIG_X86_LOCAL_APIC)   += apic_$(BITS).o nmi_$(BITS).o
>>   obj-$(CONFIG_X86_IO_APIC)      += io_apic_$(BITS).o
>>  +obj-$(CONFIG_OPEN_FIRMWARE)    += ofw.o
>>   obj-$(CONFIG_X86_REBOOTFIXUPS) += reboot_fixups_32.o
>>   obj-$(CONFIG_KEXEC)            += machine_kexec_$(BITS).o
>>   obj-$(CONFIG_KEXEC)            += relocate_kernel_$(BITS).o crash.o
>>  diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
>>  index 74d87ea..c9d2d00 100644
>>  --- a/arch/x86/kernel/head_32.S
>>  +++ b/arch/x86/kernel/head_32.S
>>  @@ -132,6 +132,33 @@ ENTRY(startup_32)
>>         movsl
>>   1:
>>
>>  +#ifdef CONFIG_OPEN_FIRMWARE
>>  +/*
>>  + * If Open Firmware booted us, save the OFW client interface callback address
>>  + * and preserve the OFW page mappings by priming the kernel's new page
>>  + * directory area with a copy of the OFW page directory.  That lets OFW stay
>>  + * resident in high memory (high in both the virtual and physical spaces)
>>  + * for at least long enough to copy out the device tree.
>>  + */
>>  +       movl $pa(boot_params + OFW_INFO_OFFSET), %ebp
>>  +       cmpl $0x2057464F, (%ebp)                /* Magic number "OFW " */
>>  +       jne 4f
>>  +
>>  +       mov 0x8(%ebp), %eax                     /* Save callback address */
>>  +       mov %eax, pa(call_firmware)
>>  +
>>  +       /* Copy the OFW pdir into swapper_pg_dir */
>>  +       movl %esi, %edx         /* save %esi */
>>  +       movl $pa(swapper_pg_dir), %edi
>>  +       movl %cr3, %esi         /* Source is current pg_dir base address */
>>  +       movl $1024, %ecx        /* Number of page directory entries */
>>  +       rep
>>  +       movsl
>>  +       movl %edx, %esi         /* restore %esi */
>>  +4:
>>  +
>>  +#endif
>>  +
>>   #ifdef CONFIG_PARAVIRT
>>         /* This is can only trip for a broken bootloader... */
>>         cmpw $0x207, pa(boot_params + BP_version)
>>  diff --git a/arch/x86/kernel/ofw.c b/arch/x86/kernel/ofw.c
>>  new file mode 100644
>>  index 0000000..14036aa
>>  --- /dev/null
>>  +++ b/arch/x86/kernel/ofw.c
>>  @@ -0,0 +1,75 @@
>>  +/*
>>  + * Open Firmware client interface for 32-bit systems.
>>  + *
>>  + * Copyright (c) 2007  Mitch Bradley <wmb@...mworks.com>
>>  + * Copyright (c) 2007-2008  Andres Salomon <dilinger@...ian.org>
>>  + *
>>  + * This program is free software; you can redistribute it and/or modify
>>  + * it under the terms of the GNU General Public License as published by
>>  + * the Free Software Foundation; either version 2 of the License, or
>>  + * (at your option) any later version.
>>  + */
>>  +
>>  +#include <linux/kernel.h>
>>  +#include <linux/spinlock.h>
>>  +#include <linux/module.h>
>>  +#include <asm/ofw.h>
>>  +
>>  +/*
>>  + * This code is intended to be portable to any 32-bit Open Firmware
>>  + * implementation with a standard client interface that can be
>>  + * called when Linux is running.
>>     
>
> how about changing to ofw_32.c?
>
> YH
>   

Is your suggestion to change the filename from "ofw.c" to "ofw_32.c"?  
That seems like a good idea to me.

--
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ