Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 334428
b: refs/heads/master
c: 73b7656
h: refs/heads/master
v: v3
  • Loading branch information
David S. Miller committed Oct 16, 2012
1 parent 5eb03c8 commit 5ac94a6
Show file tree
Hide file tree
Showing 108 changed files with 824 additions and 1,175 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ccbfddb78c7bfdce442589ccce6d60f133251b9d
refs/heads/master: 73b7656ce4e09eb137ee6f845a9e11a7f132df1c
65 changes: 62 additions & 3 deletions trunk/Documentation/IPMI.txt
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,13 @@ The driver interface depends on your hardware. If your system
properly provides the SMBIOS info for IPMI, the driver will detect it
and just work. If you have a board with a standard interface (These
will generally be either "KCS", "SMIC", or "BT", consult your hardware
manual), choose the 'IPMI SI handler' option.
manual), choose the 'IPMI SI handler' option. A driver also exists
for direct I2C access to the IPMI management controller. Some boards
support this, but it is unknown if it will work on every board. For
this, choose 'IPMI SMBus handler', but be ready to try to do some
figuring to see if it will work on your system if the SMBIOS/APCI
information is wrong or not present. It is fairly safe to have both
these enabled and let the drivers auto-detect what is present.

You should generally enable ACPI on your system, as systems with IPMI
can have ACPI tables describing them.
Expand All @@ -52,7 +58,8 @@ their job correctly, the IPMI controller should be automatically
detected (via ACPI or SMBIOS tables) and should just work. Sadly,
many boards do not have this information. The driver attempts
standard defaults, but they may not work. If you fall into this
situation, you need to read the section below named 'The SI Driver'.
situation, you need to read the section below named 'The SI Driver' or
"The SMBus Driver" on how to hand-configure your system.

IPMI defines a standard watchdog timer. You can enable this with the
'IPMI Watchdog Timer' config option. If you compile the driver into
Expand Down Expand Up @@ -97,7 +104,12 @@ driver, each open file for this device ties in to the message handler
as an IPMI user.

ipmi_si - A driver for various system interfaces. This supports KCS,
SMIC, and BT interfaces.
SMIC, and BT interfaces. Unless you have an SMBus interface or your
own custom interface, you probably need to use this.

ipmi_smb - A driver for accessing BMCs on the SMBus. It uses the
I2C kernel driver's SMBus interfaces to send and receive IPMI messages
over the SMBus.

ipmi_watchdog - IPMI requires systems to have a very capable watchdog
timer. This driver implements the standard Linux watchdog timer
Expand Down Expand Up @@ -470,6 +482,53 @@ for specifying an interface. Note that when removing an interface,
only the first three parameters (si type, address type, and address)
are used for the comparison. Any options are ignored for removing.

The SMBus Driver
----------------

The SMBus driver allows up to 4 SMBus devices to be configured in the
system. By default, the driver will register any SMBus interfaces it finds
in the I2C address range of 0x20 to 0x4f on any adapter. You can change this
at module load time (for a module) with:

modprobe ipmi_smb.o
addr=<adapter1>,<i2caddr1>[,<adapter2>,<i2caddr2>[,...]]
dbg=<flags1>,<flags2>...
[defaultprobe=1] [dbg_probe=1]

The addresses are specified in pairs, the first is the adapter ID and the
second is the I2C address on that adapter.

The debug flags are bit flags for each BMC found, they are:
IPMI messages: 1, driver state: 2, timing: 4, I2C probe: 8

Setting smb_defaultprobe to zero disabled the default probing of SMBus
interfaces at address range 0x20 to 0x4f. This means that only the
BMCs specified on the smb_addr line will be detected.

Setting smb_dbg_probe to 1 will enable debugging of the probing and
detection process for BMCs on the SMBusses.

Discovering the IPMI compliant BMC on the SMBus can cause devices
on the I2C bus to fail. The SMBus driver writes a "Get Device ID" IPMI
message as a block write to the I2C bus and waits for a response.
This action can be detrimental to some I2C devices. It is highly recommended
that the known I2c address be given to the SMBus driver in the smb_addr
parameter. The default address range will not be used when a smb_addr
parameter is provided.

When compiled into the kernel, the addresses can be specified on the
kernel command line as:

ipmb_smb.addr=<adapter1>,<i2caddr1>[,<adapter2>,<i2caddr2>[,...]]
ipmi_smb.dbg=<flags1>,<flags2>...
ipmi_smb.defaultprobe=0 ipmi_smb.dbg_probe=1

These are the same options as on the module command line.

Note that you might need some I2C changes if CONFIG_IPMI_PANIC_EVENT
is enabled along with this, so the I2C driver knows to run to
completion during sending a panic event.


Other Pieces
------------
Expand Down
1 change: 0 additions & 1 deletion trunk/Documentation/sysrq.txt
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ On all - write a character to /proc/sysrq-trigger. e.g.:
'w' - Dumps tasks that are in uninterruptable (blocked) state.

'x' - Used by xmon interface on ppc/powerpc platforms.
Show global PMU Registers on sparc64.

'y' - Show global CPU Registers [SPARC-64 specific]

Expand Down
16 changes: 15 additions & 1 deletion trunk/MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -4372,7 +4372,7 @@ F: Documentation/scsi/53c700.txt
F: drivers/scsi/53c700*

LED SUBSYSTEM
M: Bryan Wu <cooloney@gmail.com>
M: Bryan Wu <bryan.wu@canonical.com>
M: Richard Purdie <rpurdie@rpsys.net>
L: linux-leds@vger.kernel.org
T: git git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds.git
Expand Down Expand Up @@ -5019,6 +5019,20 @@ F: net/ipv6/
F: include/net/ip*
F: arch/x86/net/*

NETWORKING [IPSEC]
M: Steffen Klassert <steffen.klassert@secunet.com>
M: Herbert Xu <herbert@gondor.apana.org.au>
M: "David S. Miller" <davem@davemloft.net>
L: netdev@vger.kernel.org
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
S: Maintained
F: net/xfrm/
F: net/key/
F: net/ipv4/xfrm*
F: net/ipv6/xfrm*
F: include/uapi/linux/xfrm.h
F: include/net/xfrm.h

NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK)
M: Paul Moore <paul@paul-moore.com>
L: netdev@vger.kernel.org
Expand Down
13 changes: 13 additions & 0 deletions trunk/arch/arm/mach-prima2/include/mach/gpio.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __MACH_GPIO_H
#define __MACH_GPIO_H

/* Pull up/down values */
enum sirfsoc_gpio_pull {
SIRFSOC_GPIO_PULL_NONE,
SIRFSOC_GPIO_PULL_UP,
SIRFSOC_GPIO_PULL_DOWN,
};

void sirfsoc_gpio_set_pull(unsigned gpio, unsigned mode);

#endif
4 changes: 2 additions & 2 deletions trunk/arch/frv/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -867,8 +867,8 @@ ret_from_fork:
ret_from_kernel_thread:
lddi.p @(gr28,#REG_GR(8)),gr20
call schedule_tail
calll.p @(gr21,gr0)
or gr20,gr20,gr8
or.p gr20,gr20,gr8
calll @(gr21,gr0)
bra sys_exit

.globl ret_from_kernel_execve
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/frv/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ int copy_thread(unsigned long clone_flags,
memset(childregs, 0, sizeof(struct pt_regs));
childregs->gr9 = usp; /* function */
childregs->gr8 = arg;
childregs->psr = PSR_S;
chilregs->psr = PSR_S;
p->thread.pc = (unsigned long) ret_from_kernel_thread;
save_user_regs(p->thread.user);
return 0;
Expand Down
2 changes: 0 additions & 2 deletions trunk/arch/frv/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,9 @@ char __initdata redboot_command_line[COMMAND_LINE_SIZE];
#ifdef CONFIG_PM
#define __pminit
#define __pminitdata
#define __pminitconst
#else
#define __pminit __init
#define __pminitdata __initdata
#define __pminitconst __initconst
#endif

struct clock_cmode {
Expand Down
11 changes: 11 additions & 0 deletions trunk/arch/sh/include/asm/Kbuild
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
include include/asm-generic/Kbuild.asm

generic-y += bitsperlong.h
generic-y += cputime.h
Expand Down Expand Up @@ -33,3 +34,13 @@ generic-y += termbits.h
generic-y += termios.h
generic-y += ucontext.h
generic-y += xor.h

header-y += cachectl.h
header-y += cpu-features.h
header-y += hw_breakpoint.h
header-y += posix_types_32.h
header-y += posix_types_64.h
header-y += ptrace_32.h
header-y += ptrace_64.h
header-y += unistd_32.h
header-y += unistd_64.h
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions trunk/arch/sh/include/asm/hw_breakpoint.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
#ifndef __ASM_SH_HW_BREAKPOINT_H
#define __ASM_SH_HW_BREAKPOINT_H

#include <uapi/asm/hw_breakpoint.h>

#ifdef __KERNEL__
#define __ARCH_HW_BREAKPOINT_H

#include <linux/kdebug.h>
Expand Down Expand Up @@ -67,4 +66,5 @@ extern int register_sh_ubc(struct sh_ubc *);

extern struct pmu perf_ops_bp;

#endif /* __KERNEL__ */
#endif /* __ASM_SH_HW_BREAKPOINT_H */
File renamed without changes.
8 changes: 8 additions & 0 deletions trunk/arch/sh/include/asm/posix_types.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
#ifdef __KERNEL__
# ifdef CONFIG_SUPERH32
# include <asm/posix_types_32.h>
# else
# include <asm/posix_types_64.h>
# endif
#else
# ifdef __SH5__
# include <asm/posix_types_64.h>
# else
# include <asm/posix_types_32.h>
# endif
#endif /* __KERNEL__ */
File renamed without changes.
File renamed without changes.
34 changes: 31 additions & 3 deletions trunk/arch/sh/include/asm/ptrace.h
Original file line number Diff line number Diff line change
@@ -1,16 +1,42 @@
#ifndef __ASM_SH_PTRACE_H
#define __ASM_SH_PTRACE_H

/*
* Copyright (C) 1999, 2000 Niibe Yutaka
*/
#ifndef __ASM_SH_PTRACE_H
#define __ASM_SH_PTRACE_H

#define PTRACE_GETREGS 12 /* General registers */
#define PTRACE_SETREGS 13

#define PTRACE_GETFPREGS 14 /* FPU registers */
#define PTRACE_SETFPREGS 15

#define PTRACE_GETFDPIC 31 /* get the ELF fdpic loadmap address */

#define PTRACE_GETFDPIC_EXEC 0 /* [addr] request the executable loadmap */
#define PTRACE_GETFDPIC_INTERP 1 /* [addr] request the interpreter loadmap */

#define PTRACE_GETDSPREGS 55 /* DSP registers */
#define PTRACE_SETDSPREGS 56

#define PT_TEXT_END_ADDR 240
#define PT_TEXT_ADDR 244 /* &(struct user)->start_code */
#define PT_DATA_ADDR 248 /* &(struct user)->start_data */
#define PT_TEXT_LEN 252

#if defined(__SH5__) || defined(CONFIG_CPU_SH5)
#include <asm/ptrace_64.h>
#else
#include <asm/ptrace_32.h>
#endif

#ifdef __KERNEL__

#include <linux/stringify.h>
#include <linux/stddef.h>
#include <linux/thread_info.h>
#include <asm/addrspace.h>
#include <asm/page.h>
#include <uapi/asm/ptrace.h>

#define user_mode(regs) (((regs)->sr & 0x40000000)==0)
#define kernel_stack_pointer(_regs) ((unsigned long)(_regs)->regs[15])
Expand Down Expand Up @@ -114,4 +140,6 @@ static inline unsigned long profile_pc(struct pt_regs *regs)
#define profile_pc profile_pc

#include <asm-generic/ptrace.h>
#endif /* __KERNEL__ */

#endif /* __ASM_SH_PTRACE_H */
75 changes: 74 additions & 1 deletion trunk/arch/sh/include/asm/ptrace_32.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,86 @@
#ifndef __ASM_SH_PTRACE_32_H
#define __ASM_SH_PTRACE_32_H

#include <uapi/asm/ptrace_32.h>
/*
* GCC defines register number like this:
* -----------------------------
* 0 - 15 are integer registers
* 17 - 22 are control/special registers
* 24 - 39 fp registers
* 40 - 47 xd registers
* 48 - fpscr register
* -----------------------------
*
* We follows above, except:
* 16 --- program counter (PC)
* 22 --- syscall #
* 23 --- floating point communication register
*/
#define REG_REG0 0
#define REG_REG15 15

#define REG_PC 16

#define REG_PR 17
#define REG_SR 18
#define REG_GBR 19
#define REG_MACH 20
#define REG_MACL 21

#define REG_SYSCALL 22

#define REG_FPREG0 23
#define REG_FPREG15 38
#define REG_XFREG0 39
#define REG_XFREG15 54

#define REG_FPSCR 55
#define REG_FPUL 56

/*
* This struct defines the way the registers are stored on the
* kernel stack during a system call or other kernel entry.
*/
struct pt_regs {
unsigned long regs[16];
unsigned long pc;
unsigned long pr;
unsigned long sr;
unsigned long gbr;
unsigned long mach;
unsigned long macl;
long tra;
};

/*
* This struct defines the way the DSP registers are stored on the
* kernel stack during a system call or other kernel entry.
*/
struct pt_dspregs {
unsigned long a1;
unsigned long a0g;
unsigned long a1g;
unsigned long m0;
unsigned long m1;
unsigned long a0;
unsigned long x0;
unsigned long x1;
unsigned long y0;
unsigned long y1;
unsigned long dsr;
unsigned long rs;
unsigned long re;
unsigned long mod;
};

#ifdef __KERNEL__

#define MAX_REG_OFFSET offsetof(struct pt_regs, tra)
static inline long regs_return_value(struct pt_regs *regs)
{
return regs->regs[0];
}

#endif /* __KERNEL__ */

#endif /* __ASM_SH_PTRACE_32_H */
12 changes: 11 additions & 1 deletion trunk/arch/sh/include/asm/ptrace_64.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
#ifndef __ASM_SH_PTRACE_64_H
#define __ASM_SH_PTRACE_64_H

#include <uapi/asm/ptrace_64.h>
struct pt_regs {
unsigned long long pc;
unsigned long long sr;
long long syscall_nr;
unsigned long long regs[63];
unsigned long long tregs[8];
unsigned long long pad[2];
};

#ifdef __KERNEL__

#define MAX_REG_OFFSET offsetof(struct pt_regs, tregs[7])
static inline long regs_return_value(struct pt_regs *regs)
{
return regs->regs[3];
}

#endif /* __KERNEL__ */

#endif /* __ASM_SH_PTRACE_64_H */
Loading

0 comments on commit 5ac94a6

Please sign in to comment.