* [PATCH] Add 7450 support to oprofile tools
From: Mark A. Greer @ 2006-09-08 22:57 UTC (permalink / raw)
To: oprofile-list; +Cc: linuxppc-dev, vwool
Hi,
I don't normally monitor or contribute to oprofile so I'm not sure
what your patch conventions are. If this email or patch is not in the
correct format please let me know what that format is and I'll resubmit.
Notes:
- This patch applies to oprofile-0.9.1.tar.gz
- Vitaly Wool contributed significantly to this patch.
Thanks,
Mark
--
This patch adds PowerPC MPC7450 support to the oprofile tools.
In reality, it also adds support for the MPC7445, MPC7447, MPC7447A,
MPC7448, MPC7455, and MPC7457 processors but has only been tested
on a MPC7447A. The 7450 name was chosen because it matches the name
used in the Linux kernel, <file:arch/powerpc/oprofile/op_model_7450.c>.
Note that not all of the performance counters available on those
processors were added to the events file but its a start, at least.
Signed-off-by: Mark A. Greer <mgreer@mvista.com>
--
events/Makefile.in | 3 ++-
events/ppc/7450/events | 25 +++++++++++++++++++++++++
events/ppc/7450/unit_masks | 4 ++++
libop/op_cpu_type.c | 1 +
libop/op_cpu_type.h | 1 +
libop/op_events.c | 6 +++++-
utils/ophelp.c | 5 +++++
7 files changed, 43 insertions(+), 2 deletions(-)
--
diff -Nurp oprofile-0.9.1/events/Makefile.in oprofile-0.9.1.patched/events/Makefile.in
--- oprofile-0.9.1/events/Makefile.in 2005-07-18 12:40:00.000000000 -0700
+++ oprofile-0.9.1.patched/events/Makefile.in 2006-08-23 17:46:40.000000000 -0700
@@ -210,7 +210,8 @@ event_files = \
mips/r12000/events mips/r12000/unit_masks \
mips/vr5432/events mips/vr5432/unit_masks \
mips/vr5500/events mips/vr5500/unit_masks \
- ppc/e500/events ppc/e500/unit_masks
+ ppc/e500/events ppc/e500/unit_masks \
+ ppc/7450/events ppc/7450/unit_masks
EXTRA_DIST = $(event_files)
all: all-am
diff -Nurp oprofile-0.9.1/events/ppc/7450/events oprofile-0.9.1.patched/events/ppc/7450/events
--- oprofile-0.9.1/events/ppc/7450/events 1969-12-31 17:00:00.000000000 -0700
+++ oprofile-0.9.1.patched/events/ppc/7450/events 2006-08-23 17:46:40.000000000 -0700
@@ -0,0 +1,25 @@
+# 745x Events
+#
+event:0x1 counters:0,1,2,3 um:zero minimum:3000 name:CYCLES : Processor cycles
+event:0x2 counters:0,1,2,3 um:zero minimum:3000 name:COMPLETED_INSNS : Completed Instructions
+event:0x3 counters:0,1,2,3 um:zero minimum:3000 name:TBL_BIT_TRANSTNS : TBL Bit Transitions
+event:0x4 counters:0,1,2,3 um:zero minimum:3000 name:DISPATCHED_INSNS : Dispatched Instructions
+event:0x5 counters:0,1,2,3 um:zero minimum:3000 name:PROC_PERFMON_EXC: Process Performance Monitor Exception
+event:0x8 counters:0,1,2,3 um:zero minimum:3000 name:VPU_INSNS : VPU Instructions Completed
+event:0x9 counters:0,1,2,3 um:zero minimum:3000 name:VFPU_INSNS : VFPU Instructions Completed
+event:0x10 counters:0,1,2,3 um:zero minimum:3000 name:VIU1_INSNS : VIU1 Instructions Completed
+event:0x11 counters:0,1,2,3 um:zero minimum:3000 name:VIU2_INSNS : VIU2 Instructions Completed
+event:0x14 counters:0,1,2,3 um:zero minimum:3000 name:VPU_CYCLES : Cycles a VPU Instruction
+event:0x15 counters:0,1,2,3 um:zero minimum:3000 name:VFPU_CYCLES : Cycles a VFPU Instruction
+event:0x16 counters:0,1,2,3 um:zero minimum:3000 name:VIU1_CYCLES : Cycles a VIU1 Instruction
+event:0x17 counters:0,1,2,3 um:zero minimum:3000 name:VIU2_CYCLES : Cycles a VIU2 Instruction
+event:0x20 counters:0,1,2,3 um:zero minimum:3000 name:STORE_INSNS : Store Instructions
+event:0x21 counters:0,1,2,3 um:zero minimum:3000 name:L1_ICACHE_MISSES : L1 Instruction Cache Misses
+event:0x22 counters:0,1,2,3 um:zero minimum:3000 name:L1_DATA_SNOOPS: L1 Data Snoops
+event:0x23 counters:0,1 um:zero minimum:3000 name:UNRESOLVED_BRANCHES: Unresolved Branches
+event:0x39 counters:0,1 um:zero minimum:3000 name:ITLB_TABLE_CYCLES: ITLM Hardware Table Search Cycles
+event:0x41 counters:0,1 um:zeor minimum:3000 name: L1_ICACHE_ACCESSES: L1 Instruction Cache Accesses
+event:0x42 counters:0,1 um:zeor minimum:3000 name: INSN_BP_MATCHES: Instruction Breakpoint Matches
+
+
+
diff -Nurp oprofile-0.9.1/events/ppc/7450/unit_masks oprofile-0.9.1.patched/events/ppc/7450/unit_masks
--- oprofile-0.9.1/events/ppc/7450/unit_masks 1969-12-31 17:00:00.000000000 -0700
+++ oprofile-0.9.1.patched/events/ppc/7450/unit_masks 2006-08-23 17:46:40.000000000 -0700
@@ -0,0 +1,4 @@
+# 745x possible unit masks
+#
+name:zero type:mandatory default:0x0
+ 0x0 No unit mask
diff -Nurp oprofile-0.9.1/libop/op_cpu_type.c oprofile-0.9.1.patched/libop/op_cpu_type.c
--- oprofile-0.9.1/libop/op_cpu_type.c 2005-07-11 13:46:23.000000000 -0700
+++ oprofile-0.9.1.patched/libop/op_cpu_type.c 2006-08-23 17:46:40.000000000 -0700
@@ -55,6 +55,7 @@ static struct cpu_descr const cpu_descrs
{ "NEC VR5432", "mips/vr5432", CPU_MIPS_VR5432, 2 },
{ "NEC VR5500", "mips/vr5500", CPU_MIPS_VR5500, 2 },
{ "e500", "ppc/e500", CPU_PPC_E500, 4 },
+ { "ppc 7450", "ppc/7450", CPU_PPC_7450, 6 },
};
static size_t const nr_cpu_descrs = sizeof(cpu_descrs) / sizeof(struct cpu_descr);
diff -Nurp oprofile-0.9.1/libop/op_cpu_type.h oprofile-0.9.1.patched/libop/op_cpu_type.h
--- oprofile-0.9.1/libop/op_cpu_type.h 2005-07-11 13:46:23.000000000 -0700
+++ oprofile-0.9.1.patched/libop/op_cpu_type.h 2006-08-23 17:46:40.000000000 -0700
@@ -51,6 +51,7 @@ typedef enum {
CPU_MIPS_VR5432, /**< NEC VR5432 */
CPU_MIPS_VR5500, /**< MIPS VR5500, VR5532 and VR7701 */
CPU_PPC_E500, /**< e500 */
+ CPU_PPC_7450, /**< PPC 7450 */
MAX_CPU_TYPE
} op_cpu;
diff -Nurp oprofile-0.9.1/libop/op_events.c oprofile-0.9.1.patched/libop/op_events.c
--- oprofile-0.9.1/libop/op_events.c 2005-07-11 13:46:23.000000000 -0700
+++ oprofile-0.9.1.patched/libop/op_events.c 2006-08-23 17:46:40.000000000 -0700
@@ -816,7 +816,11 @@ void op_default_event(op_cpu cpu_type, s
case CPU_PPC_E500:
descr->name = "CPU_CLK";
break;
-
+
+ case CPU_PPC_7450:
+ descr->name = "CYCLES";
+ break;
+
// don't use default, if someone add a cpu he wants a compiler
// warning if he forgets to handle it here.
case CPU_TIMER_INT:
diff -Nurp oprofile-0.9.1/utils/ophelp.c oprofile-0.9.1.patched/utils/ophelp.c
--- oprofile-0.9.1/utils/ophelp.c 2005-07-11 13:46:23.000000000 -0700
+++ oprofile-0.9.1.patched/utils/ophelp.c 2006-08-23 17:46:40.000000000 -0700
@@ -450,6 +450,11 @@ int main(int argc, char const * argv[])
"Chapter 7: Performance Monitor\n"
"Downloadable from http://www.freescale.com\n");
break;
+ case CPU_PPC_7450:
+ printf("See MPC7450 RISC Microprocessor Family "
+ "Reference Manual\n"
+ "Chapter 11: Performance Monitor\n"
+ "Downloadable from http://www.freescale.com\n");
case CPU_RTC:
break;
^ permalink raw reply
* Re: SystemAce Driver.
From: a sudheer @ 2006-09-09 0:04 UTC (permalink / raw)
To: Ameet Patil; +Cc: linuxppc-embedded
In-Reply-To: <45019041.2070409@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 5489 bytes --]
Hi Ameet,
Today I tried the System ACE driver in interrupt mode.
The driver is connected to the processor through IRQ4 .
So, in xparameter_ml300.h , I have changed the
#define XPAR_OPB_INTC_0_SYSACE_COMPACTFLASH_SYSACE_IRQ_INTR 4
Also, in "xsysace_init", if I have xsa_device.gd = alloc_disk(16); , then
the kernel hangs.
So I have assigned alloc_disk(1), in which case the kernel boots-up fine.
But when I issue 'fdisk / mount ', it goes through - ' XSysAce_SectorRead'
which is being called from "xsysace_do_request".
And at the nd of the function it hangs. I couldn't trace exactly where it
hangs.
Could you please suggest some pointers to debug on this issue?
This is very critical for us and I am held up with this issue for the last 1
week.
Thanks so much for all your help.
Thanks
Sudheer
On 9/8/06, Ameet Patil <ammubhai@gmail.com> wrote:
>
> Hi Sudheer,
> Ah! I never did the test for polled mode. There might be issue with
> that. Will have a look....
>
> -Ameet
>
> sudheer wrote:
> > Hi Ameet Patil
> >
> > Ameet Patil wrote:
> >> Hi Sudheer,
> >> Frank has already answered your questions. If you have any problems
> >> with the SysAce patch... do let me know. I have written a small
> >> tutorial here if it helps...
> > I have used your SystemAce patch with linux-2.6.16-2. The kernel gets
> > loaded with the ace module and is fine.
> > I want the driver in polling mode. So i have commented few lines related
> > to interrupt in the adapter.c file- xsysace_init function.
> >
> > When i give the fdisk command, it gives few errors and then enters to
> > the fdisk commad promt. It prints the partitions, etc.
> >
> > But when i try to quit from the fdisk, it hangs. I am not able to
> > complete the request properly (i guess in xsa_thread function in
> > adapter.c file)
> >
> > The dump is as follows:
> > SystemACE: Error 1 when reading sector 60.
> > end_request: I/O error, dev xsa, sector 56
> > SystemACE: Error 1351 when reading sector 62.
> > end_request: I/O error, dev xsa, sector 56
> >
> > Command (m for help): p
> >
> > Disk /dev/xsysace: 512 MB, 512483328 bytes
> > 16 heads, 62 sectors/track, 1009 cylinders
> > Units = cylinders of 992 * 512 = 507904 bytes
> > Device Boot Start End Blocks Id System
> > /dev/xsysace1 1 1009 500433 6 FAT16
> >
> > Command (m for help): q
> > -------
> > The fdisk enters into xsysace_ioctl function but no commands are
> > implemented in the ioctl function and returns an error.
> >
> > Please help me in this issue and let me know if any other details
> required.
> >
> > Thanks
> > Sudheer
> >
> >>
> >> http://linux.get2knowmore.com
> >>
> >>
> >> -Ameet
> >>
> >> sudheer wrote:
> >>> Hello Ameet Patil
> >>>
> >>> I am looking for linux kernel source 2.6.16 with system ace
> >>> controller support. I downloaded the linux-2.6.16 and linux-2.6.17-1
> >>> source from kernel.org but could not find any files related to system
> >>> ace controller ( No xilinx_sysace directory in drivers/block/) . I
> >>> have checked penguinppc.org also but could not get it.
> >>>
> >>> Can you please send to me the link where i could download the
> >>> linuxppc-2.6.16 source with system ace support.
> >>>
> >>> Thanks & Regards
> >>> Sudheer
> >>>
> >>> Ameet Patil wrote:
> >>>> Hi Raja,
> >>>> I have ported the Xilinx System ACE driver to 2.6 kernel. Find
> >>>> the latest one here:
> >>>>
> http://www.cs.york.ac.uk/rtslab/demos/amos/xupv2pro/patches/linuxppc-2.6.17.1-sysace-1.2.patch
> >>>>
> >>>>
> >>>> NOTE: this patch wouldn't work if you are using the TEMAC driver. In
> >>>> which case use the -after-TEMAC patch found in the patches folder
> >>>> above.
> >>>>
> >>>> Check the following discussions (threads) for more details:
> >>>> 1. "Xilinx SystemACE driver for 2.6"
> >>>> 2. "Xilinx BSP for linux 2.6"
> >>>> 3. "Kernel hangs after "Now booting the kernel"."
> >>>>
> >>>> cheers,
> >>>> -Ameet
> >>>>
> >>>> Raja Chidambaram wrote:
> >>>>
> >>>>> Hi all,
> >>>>> We are working on customized board with amcc 440SPe
> >>>>> processor & xilinx System Ace controller. The System
> >>>>> Ace controller is connected to compact flash driver.
> >>>>>
> >>>>> We use u-boot 1.2 as bootloader & linux kernel
> >>>>> 2.6.16-2.
> >>>>>
> >>>>> On the process the u-boot is able to detect compact
> >>>>> flash through Xilinx SystemAce controller & able to
> >>>>> load the kernel image into compact flash.But when the
> >>>>> linux boot's up it not able to detect the System Ace
> >>>>> controller or compact flash.
> >>>>>
> >>>>> Note:we need to have the root file system in compact
> >>>>> flash.
> >>>>>
> >>>>> Is their any drivers available for SystemAce
> >>>>> controller on linux 2.6,if their how to get it.please
> >>>>> help me in this
> >>>>> with regards
> >>>>> raja
> >>>>>
> >>>>>
> >>>>>
> >>>>> __________________________________________________
> >>>>> Do You Yahoo!?
> >>>>> Tired of spam? Yahoo! Mail has the best spam protection around
> >>>>> http://mail.yahoo.com_______________________________________________
> >>>>> Linuxppc-embedded mailing list
> >>>>> Linuxppc-embedded@ozlabs.org
> >>>>> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
> >>>>>
> >>>>>
> >>>> _______________________________________________
> >>>> Linuxppc-embedded mailing list
> >>>> Linuxppc-embedded@ozlabs.org
> >>>> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
> >>>>
> >>>>
> >>>
> >>
> >
>
[-- Attachment #2: Type: text/html, Size: 8267 bytes --]
^ permalink raw reply
* 'make ARCH=ppc defconfig' failing for cross-compile
From: Judith Lebzelter @ 2006-09-09 0:05 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
Hello,
I have been doing cross-compiles for ppc and powerpc on my i686 system.
In order to do this I generate the .config file like this:
make ARCH=ppc defconfig
(or make ARCH=powerpc defconfig)
This is the error for ppc:
***
*** Can't find default configuration "arch/ppc/configs/common_defconfig"!
***
make[1]: *** [defconfig] Error 1
make: *** [defconfig] Error 2
If I replace this file 'arch/ppc/configs/common_defconfig' with an old one,
it does create my .config. The allmodconfig, allyesconfig and allnoconfig
work as I expect.
This is also happening for powerpc with a slightly different error where
it seems to get the architecture from my system rather than the
specified target architecture:
drivers/pcmcia/Kconfig:187:warning: leading whitespace ignored
***
*** Can't find default configuration "arch/powerpc/configs/i686_defconfig"!
***
make[1]: *** [defconfig] Error 1
make: *** [defconfig] Error 2
Could you suggest something that would make these cross compile builds
work again?
Thanks,
Judith
^ permalink raw reply
* RE: MPC8360E USB Host Controller Driver
From: Dan Gora @ 2006-09-09 1:09 UTC (permalink / raw)
To: linuxppc-embedded, Laurent Pinchart
> Message: 1
> Date: Fri, 8 Sep 2006 11:27:59 +0800
> From: "Li Yang-r58472" <LeoLi@freescale.com>
> Subject: RE: MPC8360E USB Host Controller Driver
> To: "Laurent Pinchart" <laurent.pinchart@tbox.biz>,
> <linuxppc-embedded@ozlabs.org>
> Cc: n.balaji@gdatech.co.in
> Message-ID:
> <4879B0C6C249214CBE7AB04453F84E4D14C864@zch01exm20.fsl.freescale.net>
> Content-Type: text/plain; charset="US-ASCII"
>
> > Could you give a direct link ? I've been browsing around the
> > Freescale website for an hour, downloaded hundreds of
> > megabytes of archives but haven't been able to find the
> > MPC8360E USB Linux driver.
> >
> > Laurent Pinchart
Hi Laurent,
I believe that I recall seeing the USB drivers in the "MPC8360E Device
Drivers - Release 1.1 GPL ", accessible from the main 8360 page.
http://www.freescale.com/files/netcomm/software/device_drivers/MPC8360EGPLDRV.zip
One little gotcha... When you unzip this archive, it's a windows
executable, but it doesn't have the '.exe' extension on the file, so
you'll need to add it by hand. I had to "contact my local FAE" just
to figure out that one when the darn thing wouldn't run. Too many
years of using Unix I guess.
> >
> > PS: Am I the only one to get lost almost every time when I
> > look for information on www.freescale.com ?
No, rest assured, you're not. Try finding any information about the
eval board for the 8360 on freescale.com.
-dan
^ permalink raw reply
* Re: powerpc power management
From: Paul Mackerras @ 2006-09-09 1:44 UTC (permalink / raw)
To: John Rigby; +Cc: linuxppc
In-Reply-To: <4b73d43f0609080718g743b9e6bje7202e5293c0abaa@mail.gmail.com>
John Rigby writes:
> MPC5200 which has a 603 core.
What support does the rest of the system provide for suspend/resume?
Generally the issue is not with getting the processor into sleep mode,
it's how you poke the rest of the system to put the RAM into
self-refresh mode, power down external buses, etc. That stuff tends
to be very platform-specific.
Paul.
^ permalink raw reply
* Failed to enable PCI network card on PPC440 board
From: Zhou Rui @ 2006-09-09 1:54 UTC (permalink / raw)
To: linuxppc-dev
[-- Attachment #1: Type: text/plain, Size: 26193 bytes --]
Hi,
We're trying to enable PCI network card on the AMCC 440GR yosemite
board, but
failed. Intel PRO/1000 ethernet card is used here. The following is the
.config of
linux-2.6.16 from eldk provided kernel:
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.16-eldk-ppc_440-yosemite
# Sat Sep 9 09:36:33 2006
#
CONFIG_MMU=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_PPC=y
CONFIG_PPC32=y
CONFIG_GENERIC_NVRAM=y
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
#
# General setup
#
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_SYSCTL=y
CONFIG_AUDIT=y
# CONFIG_AUDITSYSCALL is not set
# CONFIG_IKCONFIG is not set
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_EMBEDDED=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
# CONFIG_HOTPLUG is not set
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SHMEM=y
CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
CONFIG_SLAB=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set
#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
CONFIG_OBSOLETE_MODPARM=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_KMOD=y
#
# Block layer
#
# CONFIG_LBD is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_AS is not set
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_CFQ is not set
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
#
# Processor
#
# CONFIG_6xx is not set
# CONFIG_40x is not set
CONFIG_44x=y
# CONFIG_POWER3 is not set
# CONFIG_8xx is not set
# CONFIG_E200 is not set
# CONFIG_E500 is not set
CONFIG_PPC_FPU=y
CONFIG_BOOKE=y
CONFIG_PTE_64BIT=y
CONFIG_PHYS_64BIT=y
CONFIG_MATH_EMULATION=y
# CONFIG_KEXEC is not set
# CONFIG_CPU_FREQ is not set
CONFIG_4xx=y
CONFIG_WANT_EARLY_SERIAL=y
#
# IBM 4xx options
#
# CONFIG_BAMBOO is not set
# CONFIG_EBONY is not set
# CONFIG_LUAN is not set
# CONFIG_YUCCA is not set
# CONFIG_OCOTEA is not set
# CONFIG_P3P440 is not set
# CONFIG_YELLOWSTONE is not set
CONFIG_YOSEMITE=y
CONFIG_440EP=y
CONFIG_440=y
CONFIG_IBM440EP_ERR42=y
CONFIG_IBM_OCP=y
CONFIG_PPC4xx_DMA=y
CONFIG_PPC4xx_EDMA=y
CONFIG_PPC_GEN550=y
CONFIG_NOT_COHERENT_CACHE=y
#
# Platform options
#
# CONFIG_PC_KEYBOARD is not set
# CONFIG_HIGHMEM is not set
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_CMDLINE_BOOL is not set
# CONFIG_SECCOMP is not set
CONFIG_ISA_DMA_API=y
#
# Bus options
#
# CONFIG_PPC_I8259 is not set
CONFIG_PPC_INDIRECT_PCI=y
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
# CONFIG_PCI_LEGACY_PROC is not set
# CONFIG_PCI_DEBUG is not set
#
# PCCARD (PCMCIA/CardBus) support
#
# CONFIG_PCCARD is not set
#
# Advanced setup
#
# CONFIG_ADVANCED_OPTIONS is not set
#
# Default settings for advanced configuration options are used
#
CONFIG_HIGHMEM_START=0xfe000000
CONFIG_LOWMEM_SIZE=0x30000000
CONFIG_KERNEL_START=0xc0000000
CONFIG_TASK_SIZE=0x80000000
CONFIG_CONSISTENT_START=0xff100000
CONFIG_CONSISTENT_SIZE=0x00200000
CONFIG_BOOT_LOAD=0x01000000
#
# Networking
#
CONFIG_NET=y
#
# Networking options
#
# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=y
CONFIG_NET_KEY=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_FWMARK=y
CONFIG_IP_ROUTE_MULTIPATH=y
# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y
CONFIG_NET_IPIP=y
CONFIG_NET_IPGRE=y
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=y
CONFIG_INET_ESP=y
CONFIG_INET_IPCOMP=y
CONFIG_INET_TUNNEL=y
# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
#
# IP: Virtual Server Configuration
#
# CONFIG_IP_VS is not set
CONFIG_IPV6=y
CONFIG_IPV6_PRIVACY=y
CONFIG_INET6_AH=y
CONFIG_INET6_ESP=y
CONFIG_INET6_IPCOMP=y
CONFIG_INET6_TUNNEL=y
# CONFIG_IPV6_TUNNEL is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_QUEUE=y
CONFIG_NETFILTER_NETLINK_LOG=y
CONFIG_NETFILTER_XTABLES=y
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
CONFIG_NETFILTER_XT_TARGET_MARK=y
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
CONFIG_NETFILTER_XT_TARGET_NOTRACK=y
CONFIG_NETFILTER_XT_MATCH_COMMENT=y
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y
CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
CONFIG_NETFILTER_XT_MATCH_HELPER=y
CONFIG_NETFILTER_XT_MATCH_LENGTH=y
CONFIG_NETFILTER_XT_MATCH_LIMIT=y
CONFIG_NETFILTER_XT_MATCH_MAC=y
CONFIG_NETFILTER_XT_MATCH_MARK=y
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
CONFIG_NETFILTER_XT_MATCH_REALM=y
# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
CONFIG_NETFILTER_XT_MATCH_STATE=y
CONFIG_NETFILTER_XT_MATCH_STRING=y
CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_CONNTRACK=y
CONFIG_IP_NF_CT_ACCT=y
CONFIG_IP_NF_CONNTRACK_MARK=y
# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
# CONFIG_IP_NF_CONNTRACK_NETLINK is not set
# CONFIG_IP_NF_CT_PROTO_SCTP is not set
CONFIG_IP_NF_FTP=y
CONFIG_IP_NF_IRC=y
# CONFIG_IP_NF_NETBIOS_NS is not set
CONFIG_IP_NF_TFTP=y
CONFIG_IP_NF_AMANDA=y
CONFIG_IP_NF_PPTP=y
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_IPRANGE=y
CONFIG_IP_NF_MATCH_MULTIPORT=y
CONFIG_IP_NF_MATCH_TOS=y
CONFIG_IP_NF_MATCH_RECENT=y
CONFIG_IP_NF_MATCH_ECN=y
# CONFIG_IP_NF_MATCH_DSCP is not set
CONFIG_IP_NF_MATCH_AH_ESP=y
CONFIG_IP_NF_MATCH_TTL=y
CONFIG_IP_NF_MATCH_OWNER=y
CONFIG_IP_NF_MATCH_ADDRTYPE=y
CONFIG_IP_NF_MATCH_HASHLIMIT=y
CONFIG_IP_NF_MATCH_POLICY=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
CONFIG_IP_NF_TARGET_LOG=y
# CONFIG_IP_NF_TARGET_ULOG is not set
CONFIG_IP_NF_TARGET_TCPMSS=y
CONFIG_IP_NF_NAT=y
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_IP_NF_TARGET_NETMAP=y
CONFIG_IP_NF_TARGET_SAME=y
CONFIG_IP_NF_NAT_SNMP_BASIC=y
CONFIG_IP_NF_NAT_IRC=y
CONFIG_IP_NF_NAT_FTP=y
CONFIG_IP_NF_NAT_TFTP=y
CONFIG_IP_NF_NAT_AMANDA=y
CONFIG_IP_NF_NAT_PPTP=y
CONFIG_IP_NF_MANGLE=y
CONFIG_IP_NF_TARGET_TOS=y
CONFIG_IP_NF_TARGET_ECN=y
# CONFIG_IP_NF_TARGET_DSCP is not set
CONFIG_IP_NF_TARGET_TTL=y
# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
CONFIG_IP_NF_RAW=y
CONFIG_IP_NF_ARPTABLES=y
CONFIG_IP_NF_ARPFILTER=y
CONFIG_IP_NF_ARP_MANGLE=y
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
CONFIG_IP6_NF_IPTABLES=y
CONFIG_IP6_NF_MATCH_RT=y
CONFIG_IP6_NF_MATCH_OPTS=y
CONFIG_IP6_NF_MATCH_FRAG=y
CONFIG_IP6_NF_MATCH_HL=y
CONFIG_IP6_NF_MATCH_MULTIPORT=y
CONFIG_IP6_NF_MATCH_OWNER=y
CONFIG_IP6_NF_MATCH_IPV6HEADER=y
CONFIG_IP6_NF_MATCH_AHESP=y
CONFIG_IP6_NF_MATCH_EUI64=y
CONFIG_IP6_NF_MATCH_POLICY=y
CONFIG_IP6_NF_FILTER=y
CONFIG_IP6_NF_TARGET_LOG=y
CONFIG_IP6_NF_TARGET_REJECT=y
CONFIG_IP6_NF_MANGLE=y
CONFIG_IP6_NF_TARGET_HL=y
CONFIG_IP6_NF_RAW=y
#
# DCCP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_DCCP is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
#
# TIPC Configuration (EXPERIMENTAL)
#
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
# CONFIG_NET_SCH_CLK_JIFFIES is not set
CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
# CONFIG_NET_SCH_CLK_CPU is not set
#
# Queueing/Scheduling
#
CONFIG_NET_SCH_CBQ=y
CONFIG_NET_SCH_HTB=y
CONFIG_NET_SCH_HFSC=y
CONFIG_NET_SCH_PRIO=y
CONFIG_NET_SCH_RED=y
CONFIG_NET_SCH_SFQ=y
CONFIG_NET_SCH_TEQL=y
CONFIG_NET_SCH_TBF=y
CONFIG_NET_SCH_GRED=y
CONFIG_NET_SCH_DSMARK=y
CONFIG_NET_SCH_NETEM=y
CONFIG_NET_SCH_INGRESS=y
#
# Classification
#
CONFIG_NET_CLS=y
CONFIG_NET_CLS_BASIC=y
CONFIG_NET_CLS_TCINDEX=y
CONFIG_NET_CLS_ROUTE4=y
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=y
CONFIG_NET_CLS_U32=y
CONFIG_CLS_U32_PERF=y
CONFIG_CLS_U32_MARK=y
CONFIG_NET_CLS_RSVP=y
CONFIG_NET_CLS_RSVP6=y
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=y
CONFIG_NET_EMATCH_NBYTE=y
CONFIG_NET_EMATCH_U32=y
CONFIG_NET_EMATCH_META=y
CONFIG_NET_EMATCH_TEXT=y
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=y
CONFIG_NET_ACT_GACT=y
CONFIG_GACT_PROB=y
CONFIG_NET_ACT_MIRRED=y
CONFIG_NET_ACT_IPT=y
CONFIG_NET_ACT_PEDIT=y
# CONFIG_NET_ACT_SIMP is not set
CONFIG_NET_CLS_IND=y
CONFIG_NET_ESTIMATOR=y
#
# Network testing
#
CONFIG_NET_PKTGEN=y
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_IEEE80211 is not set
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
# CONFIG_FW_LOADER is not set
# CONFIG_DEBUG_DRIVER is not set
#
# Connector - unified userspace <-> kernelspace linker
#
# CONFIG_CONNECTOR is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Plug and Play support
#
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_CRYPTOLOOP=y
CONFIG_BLK_DEV_NBD=y
# CONFIG_BLK_DEV_SX8 is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
#
# ATA/ATAPI/MFM/RLL support
#
# CONFIG_IDE is not set
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
# CONFIG_BLK_DEV_SD is not set
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
# CONFIG_CHR_DEV_SG is not set
# CONFIG_CHR_DEV_SCH is not set
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
#
# SCSI Transport Attributes
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
#
# SCSI low-level drivers
#
# CONFIG_ISCSI_TCP is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
# CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_QLOGIC_FC is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_LPFC is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
#
# Fusion MPT device support
#
# CONFIG_FUSION is not set
# CONFIG_FUSION_SPI is not set
# CONFIG_FUSION_FC is not set
# CONFIG_FUSION_SAS is not set
#
# IEEE 1394 (FireWire) support
#
# CONFIG_IEEE1394 is not set
#
# I2O device support
#
# CONFIG_I2O is not set
#
# Macintosh device drivers
#
# CONFIG_WINDFARM is not set
#
# Network device support
#
CONFIG_NETDEVICES=y
# CONFIG_IFB is not set
CONFIG_DUMMY=y
CONFIG_BONDING=y
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
#
# ARCnet devices
#
# CONFIG_ARCNET is not set
#
# PHY device support
#
# CONFIG_PHYLIB is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set
#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
CONFIG_IBM_EMAC=y
CONFIG_IBM_EMAC_RXB=128
CONFIG_IBM_EMAC_TXB=64
CONFIG_IBM_EMAC_POLL_WEIGHT=32
CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256
CONFIG_IBM_EMAC_RX_SKB_HEADROOM=0
# CONFIG_IBM_EMAC_PHY_RX_CLK_FIX is not set
# CONFIG_IBM_EMAC_DEBUG is not set
CONFIG_IBM_EMAC_ZMII=y
# CONFIG_NET_PCI is not set
#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
CONFIG_E1000=y
CONFIG_E1000_NAPI=y
CONFIG_E1000_DISABLE_PACKET_SPLIT=y
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
#
# Ethernet (10000 Mbit)
#
# CONFIG_CHELSIO_T1 is not set
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set
#
# Token Ring devices
#
# CONFIG_TR is not set
#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
CONFIG_NETCONSOLE=y
CONFIG_NETPOLL=y
CONFIG_NETPOLL_RX=y
CONFIG_NETPOLL_TRAP=y
CONFIG_NET_POLL_CONTROLLER=y
#
# ISDN subsystem
#
# CONFIG_ISDN is not set
#
# Telephony Support
#
# CONFIG_PHONE is not set
#
# Input device support
#
CONFIG_INPUT=y
#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
#
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=y
# CONFIG_SERIO_PCIPS2 is not set
# CONFIG_SERIO_LIBPS2 is not set
CONFIG_SERIO_RAW=y
# CONFIG_GAMEPORT is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=48
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_RSA=y
#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set
#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
CONFIG_NVRAM=y
CONFIG_GEN_RTC=y
CONFIG_GEN_RTC_X=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set
#
# TPM devices
#
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
#
# I2C support
#
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y
#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_ALGOPCF=y
CONFIG_I2C_ALGOPCA=y
#
# I2C Hardware Bus support
#
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI1563 is not set
# CONFIG_I2C_ALI15X3 is not set
# CONFIG_I2C_AMD756 is not set
# CONFIG_I2C_AMD8111 is not set
# CONFIG_I2C_I801 is not set
# CONFIG_I2C_I810 is not set
# CONFIG_I2C_PIIX4 is not set
CONFIG_I2C_IBM_IIC=y
# CONFIG_I2C_MPC is not set
# CONFIG_I2C_MPC8260 is not set
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PROSAVAGE is not set
# CONFIG_I2C_SAVAGE4 is not set
# CONFIG_SCx200_ACB is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not set
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_VIA is not set
# CONFIG_I2C_VIAPRO is not set
# CONFIG_I2C_VOODOO3 is not set
# CONFIG_I2C_PCA_ISA is not set
#
# Miscellaneous I2C Chip support
#
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
# CONFIG_SENSORS_EEPROM is not set
# CONFIG_SENSORS_MAX6900 is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCF8563 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_M41T00 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_RTC_X1205_I2C is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
#
# Dallas's 1-wire bus
#
# CONFIG_W1 is not set
#
# Hardware Monitoring support
#
# CONFIG_HWMON is not set
# CONFIG_HWMON_VID is not set
#
# Misc devices
#
#
# Multimedia Capabilities Port drivers
#
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
#
# Graphics support
#
# CONFIG_FB is not set
#
# Console display driver support
#
CONFIG_DUMMY_CONSOLE=y
#
# Sound
#
# CONFIG_SOUND is not set
#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
# CONFIG_USB is not set
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#
#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set
#
# MMC/SD Card support
#
# CONFIG_MMC is not set
#
# InfiniBand support
#
# CONFIG_INFINIBAND is not set
#
# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
#
#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT2_FS_XIP is not set
# CONFIG_EXT3_FS is not set
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
CONFIG_RELAYFS_FS=y
# CONFIG_CONFIGFS_FS is not set
#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
#
# Network File Systems
#
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
# CONFIG_NFSD is not set
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
# CONFIG_9P_FS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
#
# Native Language Support
#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="cp437"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
CONFIG_NLS_UTF8=y
#
# Library routines
#
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=y
CONFIG_TEXTSEARCH_BM=y
CONFIG_TEXTSEARCH_FSM=y
# CONFIG_PROFILING is not set
#
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_FORCED_INLINING is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_KGDB=y
# CONFIG_KGDB_TTYS0 is not set
CONFIG_KGDB_TTYS1=y
# CONFIG_KGDB_TTYS2 is not set
# CONFIG_KGDB_TTYS3 is not set
# CONFIG_XMON is not set
CONFIG_BDI_SWITCH=y
# CONFIG_SERIAL_TEXT_DEBUG is not set
CONFIG_PPC_OCP=y
#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
#
# Cryptographic options
#
CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_AES is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_ARC4 is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_DEFLATE=y
# CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_TEST is not set
#
# Hardware crypto devices
#
And there is error message sections from minicom logs:
NET: Registered protocol family 17
NET: Registered protocol family 15
irq 25: nobody cared (try booting with the "irqpoll" option)
Call Trace:
[C0631BB0] [C000A32C] show_stack+0x4c/0x174 (unreliable)
[C0631BE0] [C00427A4] __report_bad_irq+0x48/0xa8
[C0631BF0] [C0042A78] note_interrupt+0x274/0x2bc
[C0631C30] [C0042154] __do_IRQ+0x14c/0x1bc
[C0631C50] [C00080B0] do_IRQ+0x48/0x78
[C0631C70] [C0002224] ret_from_except+0x0/0x18
[C0631D30] [CFD0E000] 0xcfd0e000
[C0631D50] [C0025F04] do_softirq+0x3c/0x54
[C0631D60] [C0026058] irq_exit+0x3c/0x5c
[C0631D70] [C00080CC] do_IRQ+0x64/0x78
[C0631D90] [C0002224] ret_from_except+0x0/0x18
[C0631E50] [C0042574] setup_irq+0x5c/0x18c
[C0631E70] [C004272C] request_irq+0x88/0xb8
[C0631EA0] [C013A5DC] e1000_up+0x5bc/0x664
[C0631ED0] [C013B150] e1000_open+0x40/0x120
[C0631EF0] [C016B600] dev_open+0x64/0xc8
[C0631F10] [C016A2D8] dev_change_flags+0x6c/0x13c
[C0631F30] [C0351674] ip_auto_config+0x1a0/0xea8
[C0631FD0] [C00013B8] init+0x98/0x208
[C0631FF0] [C00042A0] kernel_thread+0x48/0x64
handlers:
[<c013b624>] (e1000_intr+0x0/0x450)
Disabling IRQ #25
ADDRCONF(NETDEV_UP): eth0: link is not ready
IP-Config: Complete:
device=eth0, addr=192.168.1.24, mask=255.255.255.0,
gw=192.168.1.239,
host=yosmite, domain=, nis-domain=(none),
bootserver=192.168.1.5, rootserver=192.168.1.5, rootpath=
Looking up port of RPC 100003/2 on 192.168.1.5
portmap: server 192.168.1.5 not responding, timed out
Root-NFS: Unable to get nfsd port number from server, using default
Looking up port of RPC 100005/1 on 192.168.1.5
It seems there is some IRQ conflict for the PCI network card.
Best regards,
Zhou Rui
Distributed & Embedded System Lab
School of Information Science & Engineering
Lanzhou University, P. R. China
http://dslab.lzu.edu.cn/~zr/
---------------------------------
抢注雅虎免费邮箱-3.5G容量,20M附件!
[-- Attachment #2: Type: text/html, Size: 30016 bytes --]
^ permalink raw reply
* Re: powerpc power management
From: John Rigby @ 2006-09-09 4:31 UTC (permalink / raw)
To: Paul Mackerras; +Cc: linuxppc
In-Reply-To: <17666.7265.178581.550386@cargo.ozlabs.ibm.com>
> Generally the issue is not with getting the processor into sleep mode,
> it's how you poke the rest of the system to put the RAM into
> self-refresh mode, power down external buses, etc. That stuff tends
> to be very platform-specific.
Yes you are right, I was asking about the cpu core not all the
external devices. I realize that the majority of the code is in the
rest of the system.
^ permalink raw reply
* Re: Cell - linux compatibility question
From: David Woodhouse @ 2006-09-09 6:27 UTC (permalink / raw)
To: Donald Chiarulli; +Cc: linuxppc64-dev, cell_support, Steve Levitan
In-Reply-To: <5619A22F-A50E-4FE1-B48B-B7AEE5481542@cs.pitt.edu>
On Fri, 2006-09-08 at 11:27 -0400, Donald Chiarulli wrote:
> Do you know anyone who has experience with porting the Cell GNU
> toolchain to this platform?
We're hoping to get the Cell toolchain into Fedora Extras some time
soon, so you won't need to do anything special to find and install it.
In the meantime, it shouldn't be a problem -- I think it's normally
built on Fedora anyway.
--
dwmw2
^ permalink raw reply
* ML403 and Montavista 4.01
From: linux-ppc @ 2006-09-09 10:12 UTC (permalink / raw)
To: linuxppc-embedded
[-- Attachment #1: Type: text/plain, Size: 193 bytes --]
Hello, we started developing kernel with Montavista 4.01 to Xilinx ML403.
Is there any info about upgrading ISE 8.1 Montavista 4 MLD/TCL and driver
files to enable automatic driver generation?
[-- Attachment #2: Type: text/html, Size: 277 bytes --]
^ permalink raw reply
* asm/*.h files missing for ppc arch.
From: Ming Liu @ 2006-09-09 15:05 UTC (permalink / raw)
To: linuxppc-embedded
Dear all,
Now I am trying to compile a driver module for my linux 2.6.16 kernel in
ML403 with CPU arch Powerpc 405. But when I include linux/module.h, and
then in module.h it includes linux/sched.h, and then in sched.h it includes
asm/param.h and asm/semaphore.h and asm/mmu.h......, the compiling errors
of "no such file or directory" appear. I found that there are NOT such
files in asm/ at all.(the asm/ is linked to asm-ppc/ for PPC405 arch) Where
are they then? I think when compiling modules, we must include
linux/module.h and then these asm/*.h files, right? Any implies are
appreciated. Thanks a lot for your telling.
Regards
Ming
_________________________________________________________________
享用世界上最大的电子邮件系统― MSN Hotmail。 http://www.hotmail.com
^ permalink raw reply
* RE: asm/*.h files missing for ppc arch.
From: Ming Liu @ 2006-09-09 15:14 UTC (permalink / raw)
To: linuxppc-embedded
In-Reply-To: <BAY110-F23B67F808589990B24A5CDB2340@phx.gbl>
Dear all,
Sorry that mmu.h is there. However ptrace.h, cputime.h and so on are not in
asm-ppc/.
Waiting for your telling...
Regards
Ming
>From: "Ming Liu" <eemingliu@hotmail.com>
>To: linuxppc-embedded@ozlabs.org
>Subject: asm/*.h files missing for ppc arch.
>Date: Sat, 09 Sep 2006 15:05:27 +0000
>
>Dear all,
>Now I am trying to compile a driver module for my linux 2.6.16 kernel in
>ML403 with CPU arch Powerpc 405. But when I include linux/module.h, and
>then in module.h it includes linux/sched.h, and then in sched.h it
includes
>asm/param.h and asm/semaphore.h and asm/mmu.h......, the compiling errors
>of "no such file or directory" appear. I found that there are NOT such
>files in asm/ at all.(the asm/ is linked to asm-ppc/ for PPC405 arch)
Where
>are they then? I think when compiling modules, we must include
>linux/module.h and then these asm/*.h files, right? Any implies are
>appreciated. Thanks a lot for your telling.
>
>Regards
>Ming
>
>_________________________________________________________________
>享用世界上最大的电子邮件系统― MSN Hotmail。 http://www.hotmail.com
>
>_______________________________________________
>Linuxppc-embedded mailing list
>Linuxppc-embedded@ozlabs.org
>https://ozlabs.org/mailman/listinfo/linuxppc-embedded
_________________________________________________________________
免费下载 MSN Explorer: http://explorer.msn.com/lccn/
^ permalink raw reply
* RE: asm/*.h files missing for ppc arch.
From: Josh Boyer @ 2006-09-09 17:42 UTC (permalink / raw)
To: Ming Liu; +Cc: linuxppc-embedded
In-Reply-To: <BAY110-F12CE731189ED422803AC93B2340@phx.gbl>
On Sat, 2006-09-09 at 15:14 +0000, Ming Liu wrote:
> Dear all,
> Sorry that mmu.h is there. However ptrace.h, cputime.h and so on are not in
> asm-ppc/.
>
> Waiting for your telling...
How are you compiling? For 4xx, you still need to specify ARCH=ppc with
the make command. There is some makefile hackery that will then bring
in header files from asm-powerpc as needed.
josh
^ permalink raw reply
* RE: asm/*.h files missing for ppc arch.
From: Ming Liu @ 2006-09-09 18:34 UTC (permalink / raw)
To: jwboyer; +Cc: linuxppc-embedded
In-Reply-To: <1157823763.2670.2.camel@vader.jdub.homelinux.org>
Dear Josh,
>How are you compiling? For 4xx, you still need to specify ARCH=ppc with
>the make command. There is some makefile hackery that will then bring
>in header files from asm-powerpc as needed.
In fact, I just try to compile the hello example in the book Linux Device
Driver chapter 2. The Makefile is listed as:
#Makefile
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KERNELDIR ?= /home/mingliu/linux-2.6.16
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
Also, I have specified ARCH = ppc in my Linux kernel. But it seems that
there is still some problem. Thanks for your suggestion.
Regards
Ming
_________________________________________________________________
享用世界上最大的电子邮件系统― MSN Hotmail。 http://www.hotmail.com
^ permalink raw reply
* Re: asm/*.h files missing for ppc arch.
From: Arnd Bergmann @ 2006-09-09 19:21 UTC (permalink / raw)
To: linuxppc-embedded
In-Reply-To: <BAY110-F378469920DE25DF7AB6C28B2340@phx.gbl>
Am Saturday 09 September 2006 20:34 schrieb Ming Liu:
> default:
> =A0 $(MAKE) -C $(KERNELDIR) M=3D$(PWD) modules
> endif
It's usually easier if you add your module to your copy of the kernel
sources and build it along with all the other modules.
Arnd <><
^ permalink raw reply
* Re: asm/*.h files missing for ppc arch.
From: Ming Liu @ 2006-09-09 19:28 UTC (permalink / raw)
To: arnd; +Cc: linuxppc-embedded
In-Reply-To: <200609092121.49915.arnd@arndb.de>
Dear Arnd,
>It's usually easier if you add your module to your copy of the kernel
>sources and build it along with all the other modules.
How can I do that? I don't know how can I configure my driver and compile
it as a module. Which option shall I choose to configure my driver as a
module in menuconfig? Sorry that I am new to linux and I am anxious for
your helpful telling...
Regards
ming
_________________________________________________________________
免费下载 MSN Explorer: http://explorer.msn.com/lccn/
^ permalink raw reply
* Re: asm/*.h files missing for ppc arch.
From: Arnd Bergmann @ 2006-09-09 20:17 UTC (permalink / raw)
To: linuxppc-embedded
In-Reply-To: <BAY110-F38603E88776B0F5A2D966FB2340@phx.gbl>
Am Saturday 09 September 2006 21:28 schrieb Ming Liu:
> Dear Arnd,
>
> >It's usually easier if you add your module to your copy of the kernel
> >sources and build it along with all the other modules.
>
> How can I do that? I don't know how can I configure my driver and compile
> it as a module. Which option shall I choose to configure my driver as a
> module in menuconfig? Sorry that I am new to linux and I am anxious for
> your helpful telling...
You need to at least the following steps:
1. Add your module to an appropriate location in the source tree, e.g.
drivers/net/ or drivers/char/, or whereever it fits best depending on
what it does.
2. Edit the Makefile in that directory so your driver gets built, e.g.
by adding a line 'obj-m += your-driver.o'.
The optional but recommended steps are:
3. Add the driver to an appropriate Kconfig file, typically in the same
directory as your driver, and change your Makefile to
use 'obj-$(CONFIG_YOUR_DRIVER) += your-driver.o'.
4. Learn to use 'quilt', or a similar tool, to manage your patch against
the kernel.
5. If you ask questions on the mailing list, make sure everyone has access
to your patch, e.g. by uploading it to a web site.
Arnd <><
^ permalink raw reply
* Re: asm/*.h files missing for ppc arch.
From: Ming Liu @ 2006-09-09 20:37 UTC (permalink / raw)
To: arnd; +Cc: linuxppc-embedded
In-Reply-To: <200609092217.04623.arnd@arndb.de>
Dear Arnd,
Thanks so much for your telling. I will do that soon.
>5. If you ask questions on the mailing list, make sure everyone has access
>to your patch, e.g. by uploading it to a web site.
Sorry that my ip driver is so customed and I don't think anyone will have
interest on that. :-) However maybe later I can integrate other drivers in
the linux tree.
Regards
Ming
_________________________________________________________________
与联机的朋友进行交流,请使用 MSN Messenger: http://messenger.msn.com/cn
^ permalink raw reply
* highmem.h
From: Joseph Jezak @ 2006-09-09 20:43 UTC (permalink / raw)
To: linuxppc-dev
Hi everyone,
I think highmem.h needs to be copied from include/asm-ppc to
include/asm-powerpc. For instance, if you include linux/skbuff.h,
it includes linux/highmem.h. If CONFIG_HIGHMEM is enabled (which is
possible on PPC32), then linux/highmem.h includes asm/highmem.h
which isn't currently included in include/asm-powerpc.
Am I overlooking something here? For what it's worth, I noticed
this while building the sheep module in MOL.
-Joe
^ permalink raw reply
* RE: ML403 and Montavista 4.01
From: Rick Moleres @ 2006-09-09 22:11 UTC (permalink / raw)
To: linux-ppc, linuxppc-embedded
[-- Attachment #1: Type: text/plain, Size: 642 bytes --]
This is planned to be released with EDK 8.2.2 (currently scheduled for
release in October)
-Rick
________________________________
From: linuxppc-embedded-bounces+moleres=xilinx.com@ozlabs.org
[mailto:linuxppc-embedded-bounces+moleres=xilinx.com@ozlabs.org] On
Behalf Of linux-ppc@eurotel.it
Sent: Saturday, September 09, 2006 4:13 AM
To: linuxppc-embedded@ozlabs.org
Subject: ML403 and Montavista 4.01
Hello, we started developing kernel with Montavista 4.01 to Xilinx
ML403.
Is there any info about upgrading ISE 8.1 Montavista 4 MLD/TCL and
driver files to enable automatic driver generation?
[-- Attachment #2: Type: text/html, Size: 3896 bytes --]
^ permalink raw reply
* [RFC] inline hypercall implementation for pseries
From: Arnd Bergmann @ 2006-09-09 22:42 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus, anton, arnd
This patch goes on top of the latest hcall statistics patch from
Mike Kravetz and changes the implementation of all hcalls to
end up in an inline assembly. This reduces the number of instructions
required on the side of the caller, so that in most cases we
don't need any stack memory at all.
Unfortunately, I don't have any hypervisor machine to try
this out, so I'm hoping someone else can test it and fix the
obvious bugs.
When statistics are enabled, the code is somewhat larger
than before, but for the regular case, it gets smaller,
this is the 'size' output for
arch/powerpc/platforms/pseries/built-in.o:
text data bss dec hex filename
45940 11584 8860 66384 10350 out of line, without stats
47152 16240 8860 72252 11a3c out-of-line, with stats
45492 11488 8860 65840 10130 inline, without stats
47264 16176 8860 72300 11a6c inline, with stats
As an example, the pSeries_lpar_hpte_invalidate function changes
from:
mflr 0 #,
mr 11,5 # psize, psize
li 5,0 #,
mr 6,3 # slot, slot
li 3,4 #,
sldi 9,11,5 #, tmp128, psize
cmpdi 7,11,0 #, tmp134, psize
std 0,16(1) #,
stdu 1,-144(1) #,,
ori 5,5,32768 #,,,
ld 0,.LC26@toc(2) #, tmp127
sldi 5,5,16 #,,
add 9,9,0 # tmp129, tmp128, tmp127
ld 0,16(9) # <variable>.avpnm, <variable>.avpnm
srdi 9,4,23 #, tmp126, va
addi 4,1,112 #,,
andc 0,9,0 #, tmp133, tmp126, <variable>.avpnm
sldi 0,0,7 #, want_v, tmp133
beq 7,.L68 #
ori 0,0,4 #, want_v, want_v,
.L68:
rldicr 7,0,16,47 #,,, want_v
rldicr 7,7,48,56 #,,,
bl .plpar_hcall #
nop
cmpdi 7,3,-7 #, tmp137, rc
addic 9,3,-1 #, rc
subfe 0,9,3 # tmp142,, rc
beq 7,.L72 #
tdnei 0,0 # tmp142
addi 1,1,144 #,,
ld 0,16(1) #,
mtlr 0 #,
blr #
to
.pSeries_lpar_hpte_invalidate:
ld 0,.LC26@toc(2) #, tmp126
sldi 6,5,5 #, tmp127, psize
cmpdi 7,5,0 #, tmp133, psize
srdi 4,4,23 #, tmp125, va
mr 5,3 # slot, slot
li 3,4 # __r3,
add 6,6,0 # tmp128, tmp127, tmp126
ld 0,16(6) # <variable>.avpnm, <variable>.avpnm
andc 0,4,0 #, tmp132, tmp125, <variable>.avpnm
sldi 0,0,7 #, want_v, tmp132
beq 7,.L68 #
ori 0,0,4 #, want_v, want_v,
or 2,2,2 # medium priority
li 4,0 # __r4,
rldicr 6,0,0,56 #, __r6, want_v
ori 4,4,32768 #, __r4, __r4,
sldi 4,4,16 #, __r4, __r4
.long 0x44000022 # HVCALL
cmpdi 7,3,-7 #, tmp135, lpar_rc
addic 9,3,-1 #, lpar_rc
subfe 0,9,3 # tmp140,, lpar_rc
beqlr 7
tdnei 0,0 # tmp140
blr
and this also avoid the overhead of writing output arguments
to memory if they are not used afterwards.
Arnd <><
Index: linus-2.6/arch/powerpc/platforms/pseries/hvCall.S
===================================================================
--- linus-2.6.orig/arch/powerpc/platforms/pseries/hvCall.S 2006-09-10
00:17:27.000000000 +0200
+++ linus-2.6/arch/powerpc/platforms/pseries/hvCall.S 2006-09-10
00:17:27.000000000 +0200
@@ -11,154 +11,43 @@
#include <asm/processor.h>
#include <asm/ppc_asm.h>
#include <asm/asm-offsets.h>
-
-#define STK_PARM(i) (48 + ((i)-3)*8)
-#ifdef CONFIG_HCALL_STATS
-/*
- * precall must preserve all registers. use unused STK_PARM()
- * areas to save snapshots and opcode.
- */
-#define HCALL_INST_PRECALL \
- std r3,STK_PARM(r3)(r1); /* save opcode */ \
- mftb r0; /* get timebase and */ \
- std r0,STK_PARM(r5)(r1); /* save for later */ \
-BEGIN_FTR_SECTION; \
- mfspr r0,SPRN_PURR; /* get PURR and */ \
- std r0,STK_PARM(r6)(r1); /* save for later */ \
-END_FTR_SECTION_IFCLR(CPU_FTR_PURR);
-
+ .text
+_GLOBAL(hcall_instrument)
/*
- * postcall is performed immediately before function return which
- * allows liberal use of volatile registers.
+ * Special calling conventions:
+ * - r3 to r12 are input and output argument registers.
+ * - r13 contains a pointer to the statistics structure for the
+ * current hcall number / cpu.
+ * - r14, r15 and r16 are clobbered during this call and need to
+ * be saved by the caller.
+ * - cr is caller clobbered as well
*/
-#define HCALL_INST_POSTCALL \
- ld r4,STK_PARM(r3)(r1); /* validate opcode */ \
- cmpldi cr7,r4,MAX_HCALL_OPCODE; \
- bgt- cr7,1f; \
- \
- /* get time and PURR snapshots after hcall */ \
- mftb r7; /* timebase after */ \
-BEGIN_FTR_SECTION; \
- mfspr r8,SPRN_PURR; /* PURR after */ \
- ld r6,STK_PARM(r6)(r1); /* PURR before */ \
- subf r6,r6,r8; /* delta */ \
-END_FTR_SECTION_IFCLR(CPU_FTR_PURR); \
- ld r5,STK_PARM(r5)(r1); /* timebase before */ \
- subf r5,r5,r7; /* time delta */ \
- \
- /* calculate address of stat structure r4 = opcode */ \
- srdi r4,r4,2; /* index into array */ \
- mulli r4,r4,HCALL_STAT_SIZE; \
- LOAD_REG_ADDR(r7, per_cpu__hcall_stats); \
- add r4,r4,r7; \
- ld r7,PACA_DATA_OFFSET(r13); /* per cpu offset */ \
- add r4,r4,r7; \
- \
- /* update stats */ \
- ld r7,HCALL_STAT_CALLS(r4); /* count */ \
- addi r7,r7,1; \
- std r7,HCALL_STAT_CALLS(r4); \
- ld r7,HCALL_STAT_TB(r4); /* timebase */ \
- add r7,r7,r5; \
- std r7,HCALL_STAT_TB(r4); \
-BEGIN_FTR_SECTION; \
- ld r7,HCALL_STAT_PURR(r4); /* PURR */ \
- add r7,r7,r6; \
- std r7,HCALL_STAT_PURR(r4); \
-END_FTR_SECTION_IFCLR(CPU_FTR_PURR); \
-1:
-#else
-#define HCALL_INST_PRECALL
-#define HCALL_INST_POSTCALL
-#endif
-
- .text
-
-_GLOBAL(plpar_hcall_norets)
- HMT_MEDIUM
-
- mfcr r0
- stw r0,8(r1)
-
- HCALL_INST_PRECALL
+ mftb r15 /* get timebase and */
+BEGIN_FTR_SECTION;
+ mfspr r16,SPRN_PURR /* get PURR and */
+END_FTR_SECTION_IFCLR(CPU_FTR_PURR)
HVSC /* invoke the hypervisor */
- HCALL_INST_POSTCALL
-
- lwz r0,8(r1)
- mtcrf 0xff,r0
- blr /* return r3 = status */
-
-_GLOBAL(plpar_hcall)
- HMT_MEDIUM
-
- mfcr r0
- stw r0,8(r1)
-
- HCALL_INST_PRECALL
-
- std r4,STK_PARM(r4)(r1) /* Save ret buffer */
-
- mr r4,r5
- mr r5,r6
- mr r6,r7
- mr r7,r8
- mr r8,r9
- mr r9,r10
-
- HVSC /* invoke the hypervisor */
-
- ld r12,STK_PARM(r4)(r1)
- std r4, 0(r12)
- std r5, 8(r12)
- std r6, 16(r12)
- std r7, 24(r12)
-
- HCALL_INST_POSTCALL
-
- lwz r0,8(r1)
- mtcrf 0xff,r0
-
- blr /* return r3 = status */
-
-_GLOBAL(plpar_hcall9)
- HMT_MEDIUM
-
- mfcr r0
- stw r0,8(r1)
-
- HCALL_INST_PRECALL
-
- std r4,STK_PARM(r4)(r1) /* Save ret buffer */
-
- mr r4,r5
- mr r5,r6
- mr r6,r7
- mr r7,r8
- mr r8,r9
- mr r9,r10
- ld r10,STK_PARM(r11)(r1) /* put arg7 in R10 */
- ld r11,STK_PARM(r12)(r1) /* put arg8 in R11 */
- ld r12,STK_PARM(r13)(r1) /* put arg9 in R12 */
-
- HVSC /* invoke the hypervisor */
-
- ld r12,STK_PARM(r4)(r1)
- std r4, 0(r12)
- std r5, 8(r12)
- std r6, 16(r12)
- std r7, 24(r12)
- std r8, 32(r12)
- std r9, 40(r12)
- std r10,48(r12)
- std r11,56(r12)
- std r12,64(r12)
-
- HCALL_INST_POSTCALL
-
- lwz r0,8(r1)
- mtcrf 0xff,r0
-
- blr /* return r3 = status */
+ /* get time and PURR snapshots after hcall */
+ mftb r14 /* timebase after */
+ subf r15,r15,r14 /* time delta */
+BEGIN_FTR_SECTION
+ mfspr r14,SPRN_PURR /* PURR after */
+ subf r16,r16,r14 /* delta */
+END_FTR_SECTION_IFCLR(CPU_FTR_PURR)
+
+ /* update stats */
+ ld r14,HCALL_STAT_CALLS(r13) /* count */
+ addi r14,r14,1
+ std r14,HCALL_STAT_CALLS(r13)
+ ld r14,HCALL_STAT_TB(r13) /* timebase */
+ add r14,r14,r5
+ std r14,HCALL_STAT_TB(r13)
+BEGIN_FTR_SECTION
+ ld r14,HCALL_STAT_PURR(r13)/* PURR */
+ add r14,r14,r6
+ std r14,HCALL_STAT_PURR(r13)
+END_FTR_SECTION_IFCLR(CPU_FTR_PURR)
+1: blr
Index: linus-2.6/arch/powerpc/kernel/asm-offsets.c
===================================================================
--- linus-2.6.orig/arch/powerpc/kernel/asm-offsets.c 2006-09-10
00:17:27.000000000 +0200
+++ linus-2.6/arch/powerpc/kernel/asm-offsets.c 2006-09-10 00:17:27.000000000
+0200
@@ -44,6 +44,7 @@
#include <asm/cache.h>
#include <asm/compat.h>
#include <asm/mmu.h>
+#include <asm/hvcall.h>
#endif
#define DEFINE(sym, val) \
Index: linus-2.6/include/asm-powerpc/hvcall.h
===================================================================
--- linus-2.6.orig/include/asm-powerpc/hvcall.h 2006-09-10 00:17:27.000000000
+0200
+++ linus-2.6/include/asm-powerpc/hvcall.h 2006-09-10 00:17:27.000000000 +0200
@@ -2,6 +2,13 @@
#define _ASM_POWERPC_HVCALL_H
#ifdef __KERNEL__
+#ifndef __ASSEMBLY__
+#include <asm/reg.h>
+#include <asm/time.h>
+#include <asm/cputable.h>
+#include <linux/percpu.h>
+#endif
+
#define HVSC .long 0x44000022
#define H_SUCCESS 0
@@ -212,6 +219,194 @@
#ifndef __ASSEMBLY__
+#define __hvcall_plpar(nr, nr_in, i1, i2, i3, i4, i5, i6, i7, i8, o1, o2, o3,
o4, o5, o6, o7) \
+({ \
+ register unsigned long __r3 asm("r3") = nr; \
+ register unsigned long __r4 asm("r4"); \
+ register unsigned long __r5 asm("r5"); \
+ register unsigned long __r6 asm("r6"); \
+ register unsigned long __r7 asm("r7"); \
+ register unsigned long __r8 asm("r8"); \
+ register unsigned long __r9 asm("r9"); \
+ register unsigned long __r10 asm("r10"); \
+ register unsigned long __r11 asm("r11"); \
+ HMT_medium(); \
+ if ((nr_in) >= 1) __r4 = (unsigned long)i1; \
+ if ((nr_in) >= 2) __r5 = (unsigned long)i2; \
+ if ((nr_in) >= 3) __r6 = (unsigned long)i3; \
+ if ((nr_in) >= 4) __r7 = (unsigned long)i4; \
+ if ((nr_in) >= 5) __r8 = (unsigned long)i5; \
+ if ((nr_in) >= 6) __r9 = (unsigned long)i6; \
+ if ((nr_in) >= 7) __r10 = (unsigned long)i7; \
+ if ((nr_in) >= 8) __r11 = (unsigned long)i8; \
+ asm volatile(".long 0x44000022" : \
+ "+r" (__r3), \
+ "+r" (__r4), \
+ "+r" (__r5), \
+ "+r" (__r6), \
+ "+r" (__r7), \
+ "+r" (__r8), \
+ "+r" (__r9), \
+ "+r" (__r10), \
+ "+r" (__r11) : \
+ "0" (__r3), \
+ "1" (__r4), \
+ "2" (__r5), \
+ "3" (__r6), \
+ "4" (__r7), \
+ "5" (__r8), \
+ "6" (__r9), \
+ "7" (__r10), \
+ "8" (__r11) : \
+ "cc", "memory"); \
+ *(o1) = (typeof (*(o1)))__r4; \
+ *(o2) = (typeof (*(o2)))__r5; \
+ *(o3) = (typeof (*(o3)))__r6; \
+ *(o4) = (typeof (*(o4)))__r7; \
+ *(o5) = (typeof (*(o5)))__r8; \
+ *(o6) = (typeof (*(o6)))__r9; \
+ *(o7) = (typeof (*(o7)))__r10; \
+ __r3; \
+})
+
+#define __hvcall_plpar_stats(nr, nr_in, i1, i2, i3, i4, i5, i6, i7, i8, o1,
o2, o3, o4, o5, o6, o7) \
+({ \
+ register unsigned long __r3 asm("r3") = nr; \
+ register unsigned long __r4 asm("r4"); \
+ register unsigned long __r5 asm("r5"); \
+ register unsigned long __r6 asm("r6"); \
+ register unsigned long __r7 asm("r7"); \
+ register unsigned long __r8 asm("r8"); \
+ register unsigned long __r9 asm("r9"); \
+ register unsigned long __r10 asm("r10"); \
+ register unsigned long __r11 asm("r11"); \
+ register unsigned long __r13 asm("r13"); \
+ HMT_medium(); \
+ BUILD_BUG_ON(nr > MAX_HCALL_OPCODE); \
+ if ((nr_in) >= 1) __r4 = (unsigned long)i1; \
+ if ((nr_in) >= 2) __r5 = (unsigned long)i2; \
+ if ((nr_in) >= 3) __r6 = (unsigned long)i3; \
+ if ((nr_in) >= 4) __r7 = (unsigned long)i4; \
+ if ((nr_in) >= 5) __r8 = (unsigned long)i5; \
+ if ((nr_in) >= 6) __r9 = (unsigned long)i6; \
+ if ((nr_in) >= 7) __r10 = (unsigned long)i7; \
+ if ((nr_in) >= 8) __r11 = (unsigned long)i8; \
+ __r13 = (unsigned long)&__get_cpu_var(hcall_stats)[nr >> 2]; \
+ asm volatile("bl .hcall_instrument" : \
+ "+r" (__r3), \
+ "+r" (__r4), \
+ "+r" (__r5), \
+ "+r" (__r6), \
+ "+r" (__r7), \
+ "+r" (__r8), \
+ "+r" (__r9), \
+ "+r" (__r10), \
+ "+r" (__r11), \
+ "+r" (__r13) : \
+ "0" (__r3), \
+ "1" (__r4), \
+ "2" (__r5), \
+ "3" (__r6), \
+ "4" (__r7), \
+ "5" (__r8), \
+ "6" (__r9), \
+ "7" (__r10), \
+ "8" (__r11) : \
+ "cc", "memory", "r14", "r15", "r16"); \
+ *(o1) = (typeof (*(o1)))__r4; \
+ *(o2) = (typeof (*(o2)))__r5; \
+ *(o3) = (typeof (*(o3)))__r6; \
+ *(o4) = (typeof (*(o4)))__r7; \
+ *(o5) = (typeof (*(o5)))__r8; \
+ *(o6) = (typeof (*(o6)))__r9; \
+ *(o7) = (typeof (*(o7)))__r10; \
+ __r3; \
+})
+
+/* inline hypercall statistics */
+struct hcall_stats {
+ unsigned long num_calls; /* number of calls (on this CPU) */
+ unsigned long tb_total; /* total wall time (mftb) of calls. */
+ unsigned long purr_total; /* total cpu time (PURR) of calls. */
+};
+
+DECLARE_PER_CPU(struct hcall_stats[], hcall_stats);
+
+/* resolve variable number of output arguments */
+
+#define __hvcall_out7(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7, i8, o1,
o2, o3, o4, o5, o6, o7) \
+__hvcall_ ## type(nr, nr_in, i1, i2, i3, i4, i5, i6, i7, i8, o1, o2, o3, o4,
o5, o6, o7)
+
+#define __hvcall_out6(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7, i8, o1,
o2, o3, o4, o5, o6) \
+unsigned long o7; __hvcall_out7(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7,
i8, o1, o2, o3, o4, o5, o6, &o7)
+
+#define __hvcall_out5(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7, i8, o1,
o2, o3, o4, o5) \
+unsigned long o6; __hvcall_out6(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7,
i8, o1, o2, o3, o4, o5, &o6)
+
+#define __hvcall_out4(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7, i8, o1,
o2, o3, o4) \
+unsigned long o5; __hvcall_out5(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7,
i8, o1, o2, o3, o4, &o5)
+
+#define __hvcall_out3(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7, i8, o1,
o2, o3) \
+unsigned long o4; __hvcall_out4(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7,
i8, o1, o2, o3, &o4)
+
+#define __hvcall_out2(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7, i8, o1,
o2) \
+unsigned long o3; __hvcall_out3(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7,
i8, o1, o2, &o3)
+
+#define __hvcall_out1(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7, i8, o1) \
+unsigned long o2; __hvcall_out2(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7,
i8, o1, &o2)
+
+#define __hvcall_out0(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7, i8) \
+unsigned long o1; __hvcall_out1(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7,
i8, &o1)
+
+/* resolve variable number of input arguments */
+
+#define __hvcall_in8(type, nr, nr_in, nr_out, i1, i2, i3, i4, i5, i6, i7, i8,
o...) \
+__hvcall_out ## nr_out(type, nr, nr_in, i1, i2, i3, i4, i5, i6, i7, i8, ## o)
+
+#define __hvcall_in7(type, nr, nr_in, nr_out, i1, i2, i3, i4, i5, i6, i7,
o...) \
+__hvcall_in8(type, nr, nr_in, nr_out, i1, i2, i3, i4, i5, i6, i7, 0, ## o)
+
+#define __hvcall_in6(type, nr, nr_in, nr_out, i1, i2, i3, i4, i5, i6, o...) \
+__hvcall_in7(type, nr, nr_in, nr_out, i1, i2, i3, i4, i5, i6, 0, ## o)
+
+#define __hvcall_in5(type, nr, nr_in, nr_out, i1, i2, i3, i4, i5, o...) \
+__hvcall_in6(type, nr, nr_in, nr_out, i1, i2, i3, i4, i5, 0, ## o)
+
+#define __hvcall_in4(type, nr, nr_in, nr_out, i1, i2, i3, i4, o...) \
+__hvcall_in5(type, nr, nr_in, nr_out, i1, i2, i3, i4, 0, ## o)
+
+#define __hvcall_in3(type, nr, nr_in, nr_out, i1, i2, i3, o...) \
+__hvcall_in4(type, nr, nr_in, nr_out, i1, i2, i3, 0, ## o)
+
+#define __hvcall_in2(type, nr, nr_in, nr_out, i1, i2, o...) \
+__hvcall_in3(type, nr, nr_in, nr_out, i1, i2, 0, ## o)
+
+#define __hvcall_in1(type, nr, nr_in, nr_out, i1, o...) \
+__hvcall_in2(type, nr, nr_in, nr_out, i1, 0, ## o)
+
+#define __hvcall_in0(type, nr, nr_in, nr_out, o...) \
+__hvcall_in1(type, nr, nr_in, nr_out, 0, ## o)
+
+#ifndef CONFIG_HCALL_STATS
+/**
+ * hvcall: the main entry point for calling a hypervisor function
+ *
+ * @nr: hcall API number
+ * @nr_in: numer of input arguments
+ * @nr_out: number of output arguments
+ * @args: input and output arguments, number must match nr_in + nr_out
+ *
+ * Arguments can be of any basic type that can be casted to
+ * unsigned long. Output arguments are passed as pointers.
+ */
+#define plpar_hcall(nr, nr_in, nr_out, args...) \
+({ __hvcall_in ## nr_in(plpar, nr, nr_in, nr_out, ## args); })
+#else
+#define plpar_hcall(nr, nr_in, nr_out, args...) \
+({ __hvcall_in ## nr_in(plpar_stats, nr, nr_in, nr_out, ## args); })
+#endif
+
+#if 0
/**
* plpar_hcall_norets: - Make a pseries hypervisor call with no return
arguments
* @opcode: The hypervisor call to make.
@@ -256,6 +451,12 @@
unsigned long purr_delta);
#define HCALL_STAT_ARRAY_SIZE ((MAX_HCALL_OPCODE >> 2) + 1)
+#endif
+
+void update_hcall_stats(unsigned long opcode, unsigned long tb_delta,
+ unsigned long purr_delta);
+#define HCALL_STAT_ARRAY_SIZE ((MAX_HCALL_OPCODE >> 2) + 1)
+
#endif /* __ASSEMBLY__ */
#endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_HVCALL_H */
Index: linus-2.6/arch/powerpc/kernel/rtas.c
===================================================================
--- linus-2.6.orig/arch/powerpc/kernel/rtas.c 2006-09-10 00:17:12.000000000
+0200
+++ linus-2.6/arch/powerpc/kernel/rtas.c 2006-09-10 00:17:27.000000000 +0200
@@ -665,7 +665,7 @@
*/
local_irq_save(flags);
do {
- rc = plpar_hcall_norets(H_JOIN);
+ rc = plpar_hcall(H_JOIN, 0, 0);
smp_rmb();
} while (rc == H_SUCCESS && data->waiting > 0);
if (rc == H_SUCCESS)
@@ -676,7 +676,7 @@
data->args->args[data->args->nargs] =
rtas_call(ibm_suspend_me_token, 0, 1, NULL);
for_each_possible_cpu(i)
- plpar_hcall_norets(H_PROD,i);
+ plpar_hcall(H_PROD, 1, 0, i);
} else {
data->waiting = -EBUSY;
printk(KERN_ERR "Error on H_JOIN hypervisor call\n");
@@ -692,14 +692,11 @@
int i;
long state;
long rc;
- unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
struct rtas_suspend_me_data data;
/* Make sure the state is valid */
- rc = plpar_hcall(H_VASI_STATE, retbuf,
- ((u64)args->args[0] << 32) | args->args[1]);
-
- state = retbuf[0];
+ rc = plpar_hcall(H_VASI_STATE, 1, 1,
+ ((u64)args->args[0] << 32) | args->args[1], &state);
if (rc) {
printk(KERN_ERR "rtas_ibm_suspend_me: vasi_state returned %ld\n",rc);
@@ -730,7 +727,7 @@
* anyone we successfully put to sleep with H_JOIN.
*/
for_each_possible_cpu(i)
- plpar_hcall_norets(H_PROD, i);
+ plpar_hcall(H_PROD, 1, 0, i);
return data.waiting;
}
Index: linus-2.6/arch/powerpc/platforms/pseries/plpar_wrappers.h
===================================================================
--- linus-2.6.orig/arch/powerpc/platforms/pseries/plpar_wrappers.h 2006-09-10
00:17:12.000000000 +0200
+++ linus-2.6/arch/powerpc/platforms/pseries/plpar_wrappers.h 2006-09-10
00:17:27.000000000 +0200
@@ -5,17 +5,17 @@
static inline long poll_pending(void)
{
- return plpar_hcall_norets(H_POLL_PENDING);
+ return plpar_hcall(H_POLL_PENDING, 0, 0);
}
static inline long prod_processor(void)
{
- return plpar_hcall_norets(H_PROD);
+ return plpar_hcall(H_PROD, 0, 0);
}
static inline long cede_processor(void)
{
- return plpar_hcall_norets(H_CEDE);
+ return plpar_hcall(H_CEDE, 0, 0);
}
static inline long vpa_call(unsigned long flags, unsigned long cpu,
@@ -24,7 +24,7 @@
/* flags are in bits 16-18 (counting from most significant bit) */
flags = flags << (63 - 18);
- return plpar_hcall_norets(H_REGISTER_VPA, flags, cpu, vpa);
+ return plpar_hcall(H_REGISTER_VPA, 3, 0, flags, cpu, vpa);
}
static inline long unregister_vpa(unsigned long cpu, unsigned long vpa)
@@ -53,131 +53,86 @@
unsigned long hpte_group, unsigned long hpte_v,
unsigned long hpte_r, unsigned long *slot)
{
- long rc;
- unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
-
- rc = plpar_hcall(H_ENTER, retbuf, flags, hpte_group, hpte_v, hpte_r);
-
- *slot = retbuf[0];
-
- return rc;
+ return plpar_hcall(H_ENTER, 4, 1, flags, hpte_group, hpte_v, hpte_r, slot);
}
static inline long plpar_pte_remove(unsigned long flags, unsigned long ptex,
unsigned long avpn, unsigned long *old_pteh_ret,
unsigned long *old_ptel_ret)
{
- long rc;
- unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
-
- rc = plpar_hcall(H_REMOVE, retbuf, flags, ptex, avpn);
-
- *old_pteh_ret = retbuf[0];
- *old_ptel_ret = retbuf[1];
-
- return rc;
+ return plpar_hcall(H_REMOVE, 3, 2, flags, ptex, avpn, old_pteh_ret,
old_ptel_ret);
}
static inline long plpar_pte_read(unsigned long flags, unsigned long ptex,
unsigned long *old_pteh_ret, unsigned long *old_ptel_ret)
{
- long rc;
- unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
-
- rc = plpar_hcall(H_READ, retbuf, flags, ptex);
-
- *old_pteh_ret = retbuf[0];
- *old_ptel_ret = retbuf[1];
-
- return rc;
+ return plpar_hcall(H_READ, 2, 2, flags, ptex, old_pteh_ret, old_ptel_ret);
}
static inline long plpar_pte_protect(unsigned long flags, unsigned long ptex,
unsigned long avpn)
{
- return plpar_hcall_norets(H_PROTECT, flags, ptex, avpn);
+ return plpar_hcall(H_PROTECT, 3, 0, flags, ptex, avpn);
}
static inline long plpar_tce_get(unsigned long liobn, unsigned long ioba,
unsigned long *tce_ret)
{
- long rc;
- unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
-
- rc = plpar_hcall(H_GET_TCE, retbuf, liobn, ioba);
-
- *tce_ret = retbuf[0];
-
- return rc;
+ return plpar_hcall(H_GET_TCE, 2, 1, liobn, ioba, tce_ret);
}
static inline long plpar_tce_put(unsigned long liobn, unsigned long ioba,
unsigned long tceval)
{
- return plpar_hcall_norets(H_PUT_TCE, liobn, ioba, tceval);
+ return plpar_hcall(H_PUT_TCE, 3, 0, liobn, ioba, tceval);
}
static inline long plpar_tce_put_indirect(unsigned long liobn,
unsigned long ioba, unsigned long page, unsigned long count)
{
- return plpar_hcall_norets(H_PUT_TCE_INDIRECT, liobn, ioba, page, count);
+ return plpar_hcall(H_PUT_TCE_INDIRECT, 4, 0, liobn, ioba, page, count);
}
static inline long plpar_tce_stuff(unsigned long liobn, unsigned long ioba,
unsigned long tceval, unsigned long count)
{
- return plpar_hcall_norets(H_STUFF_TCE, liobn, ioba, tceval, count);
+ return plpar_hcall(H_STUFF_TCE, 4, 0, liobn, ioba, tceval, count);
}
static inline long plpar_get_term_char(unsigned long termno,
unsigned long *len_ret, char *buf_ret)
{
- long rc;
- unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
unsigned long *lbuf = (unsigned long *)buf_ret; /* TODO: alignment? */
- rc = plpar_hcall(H_GET_TERM_CHAR, retbuf, termno);
-
- *len_ret = retbuf[0];
- lbuf[0] = retbuf[1];
- lbuf[1] = retbuf[2];
-
- return rc;
+ return plpar_hcall(H_GET_TERM_CHAR, 1, 3, termno, len_ret, lbuf, lbuf+1);
}
static inline long plpar_put_term_char(unsigned long termno, unsigned long
len,
const char *buffer)
{
unsigned long *lbuf = (unsigned long *)buffer; /* TODO: alignment? */
- return plpar_hcall_norets(H_PUT_TERM_CHAR, termno, len, lbuf[0],
+ return plpar_hcall(H_PUT_TERM_CHAR, 4, 0, termno, len, lbuf[0],
lbuf[1]);
}
static inline long plpar_eoi(unsigned long xirr)
{
- return plpar_hcall_norets(H_EOI, xirr);
+ return plpar_hcall(H_EOI, 1, 0, xirr);
}
static inline long plpar_cppr(unsigned long cppr)
{
- return plpar_hcall_norets(H_CPPR, cppr);
+ return plpar_hcall(H_CPPR, 1, 0, cppr);
}
static inline long plpar_ipi(unsigned long servernum, unsigned long mfrr)
{
- return plpar_hcall_norets(H_IPI, servernum, mfrr);
+ return plpar_hcall(H_IPI, 2, 0, servernum, mfrr);
}
static inline long plpar_xirr(unsigned long *xirr_ret)
{
- long rc;
- unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
-
- rc = plpar_hcall(H_XIRR, retbuf);
-
- *xirr_ret = retbuf[0];
-
- return rc;
+ return plpar_hcall(H_XIRR, 0, 1, xirr_ret);
}
#endif /* _PSERIES_PLPAR_WRAPPERS_H */
Index: linus-2.6/include/asm-powerpc/vio.h
===================================================================
--- linus-2.6.orig/include/asm-powerpc/vio.h 2006-09-10 00:17:12.000000000
+0200
+++ linus-2.6/include/asm-powerpc/vio.h 2006-09-10 00:17:27.000000000 +0200
@@ -34,7 +34,7 @@
/* End architecture-specific constants */
#define h_vio_signal(ua, mode) \
- plpar_hcall_norets(H_VIO_SIGNAL, ua, mode)
+ plpar_hcall(H_VIO_SIGNAL, 2, 0, ua, mode)
#define VIO_IRQ_DISABLE 0UL
#define VIO_IRQ_ENABLE 1UL
Index: linus-2.6/arch/powerpc/platforms/pseries/setup.c
===================================================================
--- linus-2.6.orig/arch/powerpc/platforms/pseries/setup.c 2006-09-10
00:17:12.000000000 +0200
+++ linus-2.6/arch/powerpc/platforms/pseries/setup.c 2006-09-10
00:17:27.000000000 +0200
@@ -215,7 +215,7 @@
set = 1UL << 63;
reset = 0;
- plpar_hcall_norets(H_PERFMON, set, reset);
+ plpar_hcall(H_PERFMON, 2, 0, set, reset);
/* instruct hypervisor to maintain PMCs */
if (firmware_has_feature(FW_FEATURE_SPLPAR))
@@ -355,13 +355,13 @@
static int pseries_set_dabr(unsigned long dabr)
{
- return plpar_hcall_norets(H_SET_DABR, dabr);
+ return plpar_hcall(H_SET_DABR, 1, 0, dabr);
}
static int pseries_set_xdabr(unsigned long dabr)
{
/* We want to catch accesses from kernel and userspace */
- return plpar_hcall_norets(H_SET_XDABR, dabr,
+ return plpar_hcall(H_SET_XDABR, 2, 0, dabr,
H_DABRX_KERNEL | H_DABRX_USER);
}
Index: linus-2.6/arch/powerpc/platforms/pseries/lpar.c
===================================================================
--- linus-2.6.orig/arch/powerpc/platforms/pseries/lpar.c 2006-09-10
00:17:48.000000000 +0200
+++ linus-2.6/arch/powerpc/platforms/pseries/lpar.c 2006-09-10
00:18:10.000000000 +0200
@@ -48,11 +48,6 @@
#define DBG_LOW(fmt...) do { } while(0)
#endif
-/* in hvCall.S */
-EXPORT_SYMBOL(plpar_hcall);
-EXPORT_SYMBOL(plpar_hcall9);
-EXPORT_SYMBOL(plpar_hcall_norets);
-
extern void pSeries_find_serial_port(void);
^ permalink raw reply
* Re: [RFC] inline hypercall implementation for pseries
From: Arnd Bergmann @ 2006-09-10 0:31 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus, anton
In-Reply-To: <200609100042.54291.arnd@arndb.de>
T24gU3VuZGF5IDEwIFNlcHRlbWJlciAyMDA2IDAwOjQyLCBBcm5kIEJlcmdtYW5uIHdyb3RlOgo+
ICugoKCgoKCgLyogZ2V0IHRpbWUgYW5kIFBVUlIgc25hcHNob3RzIGFmdGVyIGhjYWxsICovCj4g
K6CgoKCgoKBtZnRioKCgoHIxNKCgoKCgoKCgoKCgoKCgoKCgoKCgoC8qIHRpbWViYXNlIGFmdGVy
ICovCj4gK6CgoKCgoKBzdWJmoKCgoHIxNSxyMTUscjE0oKCgoKCgoKCgoKCgoC8qIHRpbWUgZGVs
dGEgKi8KPiArQkVHSU5fRlRSX1NFQ1RJT04KPiAroKCgoKCgoG1mc3ByoKCgcjE0LFNQUk5fUFVS
UqCgoKCgoKCgoKCgLyogUFVSUiBhZnRlciAqLwo+ICugoKCgoKCgc3ViZqCgoKByMTYscjE2LHIx
NKCgoKCgoKCgoKCgoKAvKiBkZWx0YSAqLwo+ICtFTkRfRlRSX1NFQ1RJT05fSUZDTFIoQ1BVX0ZU
Ul9QVVJSKQo+ICsKPiAroKCgoKCgoC8qIHVwZGF0ZSBzdGF0c6AqLwo+ICugoKCgoKCgbGSgoKCg
oKByMTQsSENBTExfU1RBVF9DQUxMUyhyMTMpIC8qIGNvdW50ICovCj4gK6CgoKCgoKBhZGRpoKCg
oHIxNCxyMTQsMQo+ICugoKCgoKCgc3RkoKCgoKByMTQsSENBTExfU1RBVF9DQUxMUyhyMTMpCj4g
K6CgoKCgoKBsZCCgIKAgoHIxNCxIQ0FMTF9TVEFUX1RCKHIxMymgoC8qIHRpbWViYXNlICovCj4g
K6CgoKCgoKBhZGSgoKCgoHIxNCxyMTQscjUKPiAroKCgoKCgoHN0ZKCgoKCgcjE0LEhDQUxMX1NU
QVRfVEIocjEzKQo+ICtCRUdJTl9GVFJfU0VDVElPTgo+ICugoKCgoKCgbGSgoKCgoKByMTQsSENB
TExfU1RBVF9QVVJSKHIxMykvKiBQVVJSICovCj4gK6CgoKCgoKBhZGSgoKCgoHIxNCxyMTQscjYK
PiAroKCgoKCgoHN0ZKCgoKCgcjE0LEhDQUxMX1NUQVRfUFVSUihyMTMpCj4gK0VORF9GVFJfU0VD
VElPTl9JRkNMUihDUFVfRlRSX1BVUlIpCgoKSG1tLCBzZWVtcyBJIGN1dCB0b28gbXVjaCB0aGVy
ZSwgaXQgc2hvdWxkIGF0IGxlYXN0IGNvbnRhaW4KYSBIVlNDIGluc3RydWN0aW9uLCBhZnRlciB0
aGUgZmlyc3QgRU5EX0ZUUl9TRUNUSU9OLiBJdCBtYXkKYWxzbyBiZSBiZXR0ZXIgdG8gdXNlIGhp
Z2hlciByZWdpc3RlcnMgaW5zdGVhZCBvZiByMTMuLi5yMTYuCgoJQXJuZCA8PjwK
^ permalink raw reply
* Re: 'make ARCH=ppc defconfig' failing for cross-compile
From: Christian @ 2006-09-10 6:15 UTC (permalink / raw)
To: Judith Lebzelter; +Cc: linuxppc-dev
In-Reply-To: <20060909000512.GF9335@shell0.pdx.osdl.net>
On Fri, 8 Sep 2006, Judith Lebzelter wrote:
> I have been doing cross-compiles for ppc and powerpc on my i686 system.
> In order to do this I generate the .config file like this:
>
> make ARCH=ppc defconfig
> (or make ARCH=powerpc defconfig)
Seems like defconfig has been removed, because there are so many
sub-platforms for ppc:
$ ls arch/ppc/configs/*defconfig | wc -l
56
Just pick the defonfig for your platform, for my PReP that'd be:
$ make ARCH=ppc CROSS_COMPILE=powerpc-604-linux-gnu- prep_defconfig
HTH,
Christian.
--
BOFH excuse #383:
Your processor has taken a ride to Heaven's Gate on the UFO behind Hale-Bopp's comet.
^ permalink raw reply
* Stupid Telnet Question
From: Martin, Tim @ 2006-09-10 18:07 UTC (permalink / raw)
To: linuxppc-embedded
I'm using ELDK 4.0 on a custom PPC74xx board, and NFS mounting the root
file system. When I use the default NFS directory (e.g.
/opt/eldk_4.0/ppc_74xx) read-write, I can telnet into the board fine
(after modifying /etc/xinetd.d/telnet of course).
But this default directory is overkill for my future needs, so I'd like
to use a smaller root file system (but still NFS mount it). As a start,
I looked at the ramdisk in ppc_74xx/images. I unzipped the ramdisk, and
NFS mounted that as the root file system.
I'd also like to have the root file system mounted read-only. So I
attempted to fix all the obvious problems I ran into with mounting ELDK
ramdisk filesystem read-only. This consisted of:
1) "mount -n" ing everything that needed to be mounted, so /etc/mtab
wasn't updated
2) Creating a tmpfs /tmp ramdisk
3) Symlinking /var to /tmp/var, so I can run syslog
4) Symlinking /dev to /tmp/dev, so I can mknod devices in the /etc/rc.sh
script. For starters, I just copied the contents of ELDK_MAKEDEV into
that script, but I will prune it down as I find device files I don't
need. This way the devices can be read-write.
5) Putting those same devices in the /tmp/dev directory so that I could
solve the "Unable to open initial console" chicken-egg problem of no
device files being present when the root fs is mounted before the rc.sh
script runs.
The above steps work in-so-far as I can boot the board and work from the
serial console. Now I'd like to get telnet working. When I just telnet
locally from the serial console to the board (using the loopback IP
127.0.0.1) the telnet daemon connects, but the login program doesn't
give me a chance to type a username or login. =20
Question: What stupid thing have I done to cause this and how can I fix
it?
-------------------------------------------------
This is what my console session looks like:
# telnet 127.0.0.1
Entering character mode
Escape character is '^]'.
Linux 2.6.14 (172.16.5.11) (17:13 on Tuesday, 22 November 2011)
Login incorrect
Login incorrect
Login incorrect
Login incorrect
Connection closed by foreign host.
-------------------------------------------------
And here's what syslog is saying:
Nov 22 17:15:08 172 authpriv.info xinetd[1025]: START: telnet pid=3D1037
from=3D172.16.1.199
Nov 22 17:15:08 172 authpriv.notice login: FAILED LOGIN 1 FROM
172.16.1.199 FOR (null), Authentication failure
Nov 22 17:15:08 172 authpriv.notice login: FAILED LOGIN 2 FROM
172.16.1.199 FOR (null), Authentication failure
Nov 22 17:15:08 172 authpriv.notice login: FAILED LOGIN 3 FROM
172.16.1.199 FOR (null), Authentication failure
Nov 22 17:15:08 172 authpriv.notice login: FAILED LOGIN SESSION FROM
172.16.1.199 FOR (null), Authentication faie
^ permalink raw reply
* Unable to boot kernel 2.6 from u-boot 1.1.4 in Xilinx ML403
From: steve.alexander @ 2006-09-11 3:36 UTC (permalink / raw)
To: linuxppc-embedded
Wolfgang, Aleck,
I think this patch
http://ozlabs.org/pipermail/linuxppc-embedded/2006-August/023912.html
explains the inability to use u-boot for the ml403 (and ml3xx) for the
2.6 kernel.
-SteveA
^ permalink raw reply
* Re: Stupid Telnet Question
From: Ben Warren @ 2006-09-11 4:49 UTC (permalink / raw)
To: Martin, Tim, linuxppc-embedded
In-Reply-To: <821B2170E9E7F04FA38DF7EC21DE4871064A53C4@VCAEXCH01.hq.corp.viasat.com>
Tim,
--- "Martin, Tim" <tim.martin@viasat.com> wrote:
<snip>
> When I just telnet
> locally from the serial console to the board (using
> the loopback IP
> 127.0.0.1) the telnet daemon connects, but the login
> program doesn't
> give me a chance to type a username or login.
>
> Question: What stupid thing have I done to cause
> this and how can I fix
> it?
>
> -------------------------------------------------
> This is what my console session looks like:
>
> # telnet 127.0.0.1
>
> Entering character mode
> Escape character is '^]'.
>
>
> Linux 2.6.14 (172.16.5.11) (17:13 on Tuesday, 22
> November 2011)
>
> Login incorrect
>
> Login incorrect
>
> Login incorrect
>
>
> Login incorrect
> Connection closed by foreign host.
>
> -------------------------------------------------
> And here's what syslog is saying:
>
> Nov 22 17:15:08 172 authpriv.info xinetd[1025]:
> START: telnet pid=1037
> from=172.16.1.199
> Nov 22 17:15:08 172 authpriv.notice login: FAILED
> LOGIN 1 FROM
> 172.16.1.199 FOR (null), Authentication failure
For security reasons, Telnet is typically set up so
that you can't log in using 'root'. This is because
the data channel isn't encrypted so passwords are
easily compromised. If you don't have any other users
set up, it will give the behaviour that you're seeing.
It's been a while since I've done this, but I think
you need to edit /etc/xinetd.d/telnet to allow root
use. Or add a user. Or install SSH.
cheers,
Ben
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox