From: Mitch Bradley <wmb@firmworks.com>
To: Yinghai Lu <yhlu.kernel@gmail.com>
Cc: Andres Salomon <dilinger@queued.net>,
"H. Peter Anvin" <hpa@zytor.com>,
"Eric W. Biederman" <ebiederm@xmission.com>,
Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
Joseph Fannin <jfannin@gmail.com>,
linux-kernel@vger.kernel.org, jordan.crouse@amd.com
Subject: Re: [PATCH 1/2] OLPC: Add support for calling into Open Firmware
Date: Sun, 20 Apr 2008 17:09:54 -1000 [thread overview]
Message-ID: <480C0582.9010509@firmworks.com> (raw)
In-Reply-To: <86802c440804200334t5cdcd100rfc41e9b1bf379109@mail.gmail.com>
Yinghai Lu wrote:
> On Sat, Apr 19, 2008 at 10:39 AM, Andres Salomon <dilinger@queued.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@debian.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@firmworks.com>
>> + * Copyright (c) 2007-2008 Andres Salomon <dilinger@debian.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.
next prev parent reply other threads:[~2008-04-21 3:10 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-18 8:47 2.6.25-mm1 Andrew Morton
2008-04-18 11:26 ` [PATCH] 2.6.25-mm1 - Build Failure with PWRficient onchip memory controller driver Kamalesh Babulal
2008-04-18 13:02 ` StackProtector Oopses - Re: 2.6.25-mm1 Reuben Farrelly
2008-04-18 13:36 ` Ingo Molnar
2008-04-18 13:51 ` Arjan van de Ven
2008-04-18 14:41 ` Reuben Farrelly
2008-04-18 14:49 ` Reuben Farrelly
2008-04-21 15:06 ` Ingo Molnar
2008-04-22 1:48 ` Arjan van de Ven
2008-04-22 2:04 ` Valdis.Kletnieks
2008-04-22 8:34 ` Ingo Molnar
2008-04-22 14:29 ` Arjan van de Ven
2008-04-18 16:40 ` 2.6.25-mm1 (build error: driver core) Randy Dunlap
2008-04-18 16:56 ` Greg KH
2008-04-18 18:38 ` Dan Williams
2008-04-18 16:45 ` 2.6.25-mm1 (build error: trace selftest) Randy Dunlap
2008-04-18 20:14 ` 2.6.25-mm1 Valdis.Kletnieks
2008-04-18 23:09 ` 2.6.25-mm1: orphaned files after build Alexey Dobriyan
2008-04-19 2:13 ` 2.6.25-mm1 Joseph Fannin
2008-04-19 3:02 ` 2.6.25-mm1 Andrew Morton
2008-04-19 4:14 ` 2.6.25-mm1 Dmitry Torokhov
2008-04-19 4:29 ` 2.6.25-mm1 Andrew Morton
2008-04-19 6:33 ` 2.6.25-mm1 Joseph Fannin
2008-04-21 11:07 ` 2.6.25-mm1 Takashi Iwai
2008-04-21 17:44 ` 2.6.25-mm1 (snd-pcsp causes driver conflict) Stas Sergeev
2008-04-22 10:09 ` Takashi Iwai
2008-04-22 17:54 ` Stas Sergeev
2008-04-23 8:55 ` Takashi Iwai
2008-04-23 14:14 ` Takashi Iwai
2008-04-21 19:45 ` 2.6.25-mm1 Stas Sergeev
2008-04-21 14:06 ` 2.6.25-mm1 Takashi Iwai
2008-04-21 17:55 ` 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC) Stas Sergeev
2008-04-22 10:13 ` Takashi Iwai
2008-04-22 14:01 ` Dmitry Torokhov
2008-04-22 16:42 ` Stas Sergeev
2008-04-22 18:31 ` Stas Sergeev
2008-04-23 8:49 ` Takashi Iwai
2008-04-23 14:18 ` Takashi Iwai
2008-04-23 20:02 ` Stas Sergeev
2008-04-24 9:40 ` Takashi Iwai
2008-04-25 3:51 ` Stas Sergeev
2008-04-25 6:28 ` Takashi Iwai
2008-04-25 16:45 ` Stas Sergeev
2008-04-25 16:51 ` Takashi Iwai
2008-04-25 17:25 ` Stas Sergeev
2008-05-02 16:44 ` Takashi Iwai
2008-05-02 16:57 ` Stas Sergeev
2008-05-06 10:20 ` Takashi Iwai
2008-05-06 16:51 ` Stas Sergeev
2008-04-25 18:09 ` Dmitry Torokhov
2008-04-25 18:31 ` Stas Sergeev
2008-04-25 18:37 ` Dmitry Torokhov
2008-04-19 2:25 ` 2.6.25-mm1 Joseph Fannin
2008-04-19 3:08 ` 2.6.25-mm1 Andrew Morton
2008-04-19 3:10 ` 2.6.25-mm1 Joseph Fannin
2008-04-19 3:29 ` 2.6.25-mm1 Andrew Morton
2008-04-19 13:25 ` 2.6.25-mm1 Andres Salomon
2008-04-19 17:38 ` 2.6.25-mm1 Andrew Morton
2008-04-19 17:50 ` 2.6.25-mm1 Andres Salomon
2008-04-21 14:56 ` 2.6.25-mm1 Jordan Crouse
2008-04-21 15:05 ` 2.6.25-mm1 Andres Salomon
2008-04-21 15:12 ` 2.6.25-mm1 Jordan Crouse
2008-04-19 17:39 ` [PATCH 1/2] OLPC: Add support for calling into Open Firmware Andres Salomon
2008-04-20 10:34 ` Yinghai Lu
2008-04-20 12:07 ` H. Peter Anvin
2008-04-20 17:59 ` Andres Salomon
2008-04-20 18:42 ` Mitch Bradley
2008-04-20 19:12 ` H. Peter Anvin
2008-04-21 3:39 ` Mitch Bradley
2008-04-21 4:54 ` Yinghai Lu
2008-04-21 8:22 ` Mitch Bradley
2008-04-21 11:36 ` H. Peter Anvin
2008-04-21 13:09 ` H. Peter Anvin
2008-04-21 13:13 ` H. Peter Anvin
2008-04-21 13:19 ` H. Peter Anvin
2008-04-21 15:05 ` Jordan Crouse
2008-04-21 14:58 ` H. Peter Anvin
2008-04-20 19:13 ` [PATCH 1/2] " H. Peter Anvin
2008-04-21 3:09 ` Mitch Bradley [this message]
2008-04-21 3:15 ` Yinghai Lu
2008-04-21 4:05 ` Mitch Bradley
2008-04-21 4:26 ` David Miller
2008-04-21 4:50 ` Yinghai Lu
2008-04-21 8:03 ` Mitch Bradley
2008-04-21 14:24 ` Andres Salomon
2008-04-21 15:54 ` David Woodhouse
2008-04-21 16:57 ` H. Peter Anvin
2008-04-21 18:54 ` David Woodhouse
2008-04-21 17:03 ` Andres Salomon
2008-04-21 19:18 ` David Woodhouse
2008-04-21 19:46 ` Andres Salomon
2008-04-21 20:25 ` David Woodhouse
2008-04-21 21:02 ` [PATCH] OLPC: only check for OFW signature on VSA-less Geodes Andres Salomon
2008-04-21 21:17 ` Jordan Crouse
2008-04-21 21:17 ` [PATCH] " David Woodhouse
2008-04-29 3:06 ` Andrew Morton
2008-04-29 5:32 ` [PATCH] x86: GEODE: cache results from geode_has_vsa2() and uninline Andres Salomon
2008-04-29 20:35 ` Andrew Morton
2008-04-29 20:57 ` Andres Salomon
2008-04-19 17:39 ` [PATCH 2/2] OLPC: drop pre-OpenFirmware workarounds Andres Salomon
2008-04-19 18:21 ` 2.6.25-mm1 Arjan van de Ven
2008-04-20 11:29 ` internal compiler error: SIGSEGV [Was: 2.6.25-mm1] Jiri Slaby
2008-04-21 8:31 ` Jiri Slaby
2008-04-21 9:06 ` Al Viro
2008-04-21 9:37 ` fault in __d_lookup " Jiri Slaby
2008-04-21 9:45 ` Al Viro
2008-04-21 9:59 ` Jiri Slaby
2008-04-21 13:42 ` Rafael J. Wysocki
2008-04-21 17:23 ` Matthew Wilcox
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=480C0582.9010509@firmworks.com \
--to=wmb@firmworks.com \
--cc=akpm@linux-foundation.org \
--cc=dilinger@queued.net \
--cc=ebiederm@xmission.com \
--cc=hpa@zytor.com \
--cc=jfannin@gmail.com \
--cc=jordan.crouse@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=yhlu.kernel@gmail.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