You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'linux-2.6'
This commit is contained in:
@@ -166,7 +166,7 @@ To solve this problem, you really only have two options:
|
||||
The option of being unfailingly polite really doesn't exist. Nobody will
|
||||
trust somebody who is so clearly hiding his true character.
|
||||
|
||||
(*) Paul Simon sang "Fifty Ways to Lose Your Lover", because quite
|
||||
(*) Paul Simon sang "Fifty Ways to Leave Your Lover", because quite
|
||||
frankly, "A Million Ways to Tell a Developer He Is a D*ckhead" doesn't
|
||||
scan nearly as well. But I'm sure he thought about it.
|
||||
|
||||
|
||||
@@ -298,3 +298,11 @@ Why: All mthca hardware also supports MSI-X, which provides
|
||||
Who: Roland Dreier <rolandd@cisco.com>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: sk98lin network driver
|
||||
When: Feburary 2008
|
||||
Why: In kernel tree version of driver is unmaintained. Sk98lin driver
|
||||
replaced by the skge driver.
|
||||
Who: Stephen Hemminger <shemminger@linux-foundation.org>
|
||||
|
||||
---------------------------
|
||||
|
||||
@@ -468,9 +468,6 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
Format:
|
||||
<first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>]
|
||||
|
||||
cpia_pp= [HW,PPT]
|
||||
Format: { parport<nr> | auto | none }
|
||||
|
||||
crashkernel=nn[KMG]@ss[KMG]
|
||||
[KNL] Reserve a chunk of physical memory to
|
||||
hold a kernel to switch to with kexec on panic.
|
||||
|
||||
@@ -96,6 +96,9 @@ routing.txt
|
||||
- the new routing mechanism
|
||||
shaper.txt
|
||||
- info on the module that can shape/limit transmitted traffic.
|
||||
sk98lin.txt
|
||||
- Marvell Yukon Chipset / SysKonnect SK-98xx compliant Gigabit
|
||||
Ethernet Adapter family driver info
|
||||
skfp.txt
|
||||
- SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info.
|
||||
smc9.txt
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
ThinkPad ACPI Extras Driver
|
||||
|
||||
Version 0.15
|
||||
July 1st, 2007
|
||||
Version 0.16
|
||||
August 2nd, 2007
|
||||
|
||||
Borislav Deianov <borislav@users.sf.net>
|
||||
Henrique de Moraes Holschuh <hmh@hmh.eng.br>
|
||||
@@ -161,20 +161,22 @@ system. Enabling the hotkey functionality of thinkpad-acpi signals the
|
||||
firmware that such a driver is present, and modifies how the ThinkPad
|
||||
firmware will behave in many situations.
|
||||
|
||||
The driver enables the hot key feature automatically when loaded. The
|
||||
feature can later be disabled and enabled back at runtime. The driver
|
||||
will also restore the hot key feature to its previous state and mask
|
||||
when it is unloaded.
|
||||
|
||||
When the hotkey feature is enabled and the hot key mask is set (see
|
||||
below), the various hot keys either generate ACPI events in the
|
||||
following format:
|
||||
below), the driver will report HKEY events in the following format:
|
||||
|
||||
ibm/hotkey HKEY 00000080 0000xxxx
|
||||
|
||||
or events over the input layer. The input layer support accepts the
|
||||
standard IOCTLs to remap the keycodes assigned to each hotkey.
|
||||
Some of these events refer to hot key presses, but not all.
|
||||
|
||||
When the input device is open, the driver will suppress any ACPI hot key
|
||||
events that get translated into a meaningful input layer event, in order
|
||||
to avoid sending duplicate events to userspace. Hot keys that are
|
||||
mapped to KEY_RESERVED in the keymap are not translated, and will always
|
||||
generate an ACPI ibm/hotkey HKEY event, and no input layer events.
|
||||
The driver will generate events over the input layer for hot keys and
|
||||
radio switches, and over the ACPI netlink layer for other events. The
|
||||
input layer support accepts the standard IOCTLs to remap the keycodes
|
||||
assigned to each hot key.
|
||||
|
||||
The hot key bit mask allows some control over which hot keys generate
|
||||
events. If a key is "masked" (bit set to 0 in the mask), the firmware
|
||||
@@ -256,6 +258,20 @@ sysfs notes:
|
||||
disabled" postition, and 1 if the switch is in the
|
||||
"radios enabled" position.
|
||||
|
||||
hotkey_report_mode:
|
||||
Returns the state of the procfs ACPI event report mode
|
||||
filter for hot keys. If it is set to 1 (the default),
|
||||
all hot key presses are reported both through the input
|
||||
layer and also as ACPI events through procfs (but not
|
||||
through netlink). If it is set to 2, hot key presses
|
||||
are reported only through the input layer.
|
||||
|
||||
This attribute is read-only in kernels 2.6.23 or later,
|
||||
and read-write on earlier kernels.
|
||||
|
||||
May return -EPERM (write access locked out by module
|
||||
parameter) or -EACCES (read-only).
|
||||
|
||||
input layer notes:
|
||||
|
||||
A Hot key is mapped to a single input layer EV_KEY event, possibly
|
||||
@@ -393,21 +409,63 @@ unknown by the driver if the ThinkPad firmware triggered these events on
|
||||
hot key press or release, but the firmware will do it for either one, not
|
||||
both.
|
||||
|
||||
If a key is mapped to KEY_RESERVED, it generates no input events at all,
|
||||
and it may generate a legacy thinkpad-acpi ACPI hotkey event.
|
||||
|
||||
If a key is mapped to KEY_RESERVED, it generates no input events at all.
|
||||
If a key is mapped to KEY_UNKNOWN, it generates an input event that
|
||||
includes an scan code, and it may also generate a legacy thinkpad-acpi
|
||||
ACPI hotkey event.
|
||||
|
||||
If a key is mapped to anything else, it will only generate legacy
|
||||
thinkpad-acpi ACPI hotkey events if nobody has opened the input device.
|
||||
includes an scan code. If a key is mapped to anything else, it will
|
||||
generate input device EV_KEY events.
|
||||
|
||||
Non hot-key ACPI HKEY event map:
|
||||
0x5001 Lid closed
|
||||
0x5002 Lid opened
|
||||
0x7000 Radio Switch may have changed state
|
||||
|
||||
The above events are not propagated by the driver, except for legacy
|
||||
compatibility purposes when hotkey_report_mode is set to 1.
|
||||
|
||||
Compatibility notes:
|
||||
|
||||
ibm-acpi and thinkpad-acpi 0.15 (mainline kernels before 2.6.23) never
|
||||
supported the input layer, and sent events over the procfs ACPI event
|
||||
interface.
|
||||
|
||||
To avoid sending duplicate events over the input layer and the ACPI
|
||||
event interface, thinkpad-acpi 0.16 implements a module parameter
|
||||
(hotkey_report_mode), and also a sysfs device attribute with the same
|
||||
name.
|
||||
|
||||
Make no mistake here: userspace is expected to switch to using the input
|
||||
layer interface of thinkpad-acpi, together with the ACPI netlink event
|
||||
interface in kernels 2.6.23 and later, or with the ACPI procfs event
|
||||
interface in kernels 2.6.22 and earlier.
|
||||
|
||||
If no hotkey_report_mode module parameter is specified (or it is set to
|
||||
zero), the driver defaults to mode 1 (see below), and on kernels 2.6.22
|
||||
and earlier, also allows one to change the hotkey_report_mode through
|
||||
sysfs. In kernels 2.6.23 and later, where the netlink ACPI event
|
||||
interface is available, hotkey_report_mode cannot be changed through
|
||||
sysfs (it is read-only).
|
||||
|
||||
If the hotkey_report_mode module parameter is set to 1 or 2, it cannot
|
||||
be changed later through sysfs (any writes will return -EPERM to signal
|
||||
that hotkey_report_mode was locked. On 2.6.23 and later, where
|
||||
hotkey_report_mode cannot be changed at all, writes will return -EACES).
|
||||
|
||||
hotkey_report_mode set to 1 makes the driver export through the procfs
|
||||
ACPI event interface all hot key presses (which are *also* sent to the
|
||||
input layer). This is a legacy compatibility behaviour, and it is also
|
||||
the default mode of operation for the driver.
|
||||
|
||||
hotkey_report_mode set to 2 makes the driver filter out the hot key
|
||||
presses from the procfs ACPI event interface, so these events will only
|
||||
be sent through the input layer. Userspace that has been updated to use
|
||||
the thinkpad-acpi input layer interface should set hotkey_report_mode to
|
||||
2.
|
||||
|
||||
Hot key press events are never sent to the ACPI netlink event interface.
|
||||
Really up-to-date userspace under kernel 2.6.23 and later is to use the
|
||||
netlink interface and the input layer interface, and don't bother at all
|
||||
with hotkey_report_mode.
|
||||
|
||||
|
||||
Bluetooth
|
||||
---------
|
||||
|
||||
@@ -407,8 +407,10 @@ Description
|
||||
u32 length; // Length of this frame
|
||||
u32 offset_low; // Offset in the file of the
|
||||
u32 offset_high; // start of this frame
|
||||
u32 mask1; // Bits 0-1 are the type mask:
|
||||
u32 mask1; // Bits 0-2 are the type mask:
|
||||
// 1=I, 2=P, 4=B
|
||||
// 0=End of Program Index, other fields
|
||||
// are invalid.
|
||||
u32 pts; // The PTS of the frame
|
||||
u32 mask2; // Bit 0 is bit 32 of the pts.
|
||||
};
|
||||
|
||||
@@ -165,7 +165,7 @@ static void __init gic_init_irq(void)
|
||||
#endif
|
||||
gic_dist_init(0, __io_address(REALVIEW_GIC_DIST_BASE), 29);
|
||||
gic_cpu_init(0, __io_address(REALVIEW_GIC_CPU_BASE));
|
||||
#ifdef CONFIG_REALVIEW_MPCORE
|
||||
#if defined(CONFIG_REALVIEW_MPCORE) && !defined(CONFIG_REALVIEW_MPCORE_REVB)
|
||||
gic_dist_init(1, __io_address(REALVIEW_GIC1_DIST_BASE), 64);
|
||||
gic_cpu_init(1, __io_address(REALVIEW_GIC1_CPU_BASE));
|
||||
gic_cascade_irq(1, IRQ_EB_IRQ1);
|
||||
|
||||
@@ -323,6 +323,7 @@ static int __init vfp_init(void)
|
||||
* we just need to read the VFPSID register.
|
||||
*/
|
||||
vfp_vector = vfp_testing_entry;
|
||||
barrier();
|
||||
vfpsid = fmrx(FPSID);
|
||||
barrier();
|
||||
vfp_vector = vfp_null_entry;
|
||||
|
||||
@@ -158,10 +158,16 @@ static int bfin_pm_finish(suspend_state_t state)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int bfin_pm_valid(suspend_state_t state)
|
||||
{
|
||||
return (state == PM_SUSPEND_STANDBY);
|
||||
}
|
||||
|
||||
struct pm_ops bfin_pm_ops = {
|
||||
.prepare = bfin_pm_prepare,
|
||||
.enter = bfin_pm_enter,
|
||||
.finish = bfin_pm_finish,
|
||||
.valid = bfin_pm_valid,
|
||||
};
|
||||
|
||||
static int __init bfin_pm_init(void)
|
||||
|
||||
@@ -623,8 +623,8 @@ static unsigned long xen_read_cr2_direct(void)
|
||||
|
||||
static void xen_write_cr4(unsigned long cr4)
|
||||
{
|
||||
/* never allow TSC to be disabled */
|
||||
native_write_cr4(cr4 & ~X86_CR4_TSD);
|
||||
/* Just ignore cr4 changes; Xen doesn't allow us to do
|
||||
anything anyway. */
|
||||
}
|
||||
|
||||
static unsigned long xen_read_cr3(void)
|
||||
|
||||
@@ -55,7 +55,7 @@ EXPORT_SYMBOL(dec_kn_slot_size);
|
||||
|
||||
int dec_tc_bus;
|
||||
|
||||
spinlock_t ioasic_ssr_lock;
|
||||
DEFINE_SPINLOCK(ioasic_ssr_lock);
|
||||
|
||||
volatile u32 *ioasic_base;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2003, 2004 Maciej W. Rozycki
|
||||
* Copyright (C) 2003, 2004, 2007 Maciej W. Rozycki
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -29,7 +29,7 @@ static inline void align_mod(const int align, const int mod)
|
||||
".endr\n\t"
|
||||
".set pop"
|
||||
:
|
||||
: "rn" (align), "rn" (mod));
|
||||
: GCC_IMM_ASM (align), GCC_IMM_ASM (mod));
|
||||
}
|
||||
|
||||
static inline void mult_sh_align_mod(long *v1, long *v2, long *w,
|
||||
|
||||
@@ -199,7 +199,14 @@ static inline void check_wait(void)
|
||||
if ((c->processor_id & 0xff) <= 0x64)
|
||||
break;
|
||||
|
||||
cpu_wait = r4k_wait;
|
||||
/*
|
||||
* Another rev is incremeting c0_count at a reduced clock
|
||||
* rate while in WAIT mode. So we basically have the choice
|
||||
* between using the cp0 timer as clocksource or avoiding
|
||||
* the WAIT instruction. Until more details are known,
|
||||
* disable the use of WAIT for 20Kc entirely.
|
||||
cpu_wait = r4k_wait;
|
||||
*/
|
||||
break;
|
||||
case CPU_RM9000:
|
||||
if ((c->processor_id & 0x00ff) >= 0x40)
|
||||
|
||||
@@ -56,8 +56,6 @@ static struct chan_waitqueues {
|
||||
struct mutex mutex;
|
||||
} channel_wqs[RTLX_CHANNELS];
|
||||
|
||||
static struct irqaction irq;
|
||||
static int irq_num;
|
||||
static struct vpe_notifications notify;
|
||||
static int sp_stopping = 0;
|
||||
|
||||
@@ -111,7 +109,7 @@ static void __used dump_rtlx(void)
|
||||
static int rtlx_init(struct rtlx_info *rtlxi)
|
||||
{
|
||||
if (rtlxi->id != RTLX_ID) {
|
||||
printk(KERN_ERR "no valid RTLX id at 0x%p 0x%x\n", rtlxi, rtlxi->id);
|
||||
printk(KERN_ERR "no valid RTLX id at 0x%p 0x%lx\n", rtlxi, rtlxi->id);
|
||||
return -ENOEXEC;
|
||||
}
|
||||
|
||||
|
||||
@@ -375,7 +375,7 @@ EXPORT(sysn32_call_table)
|
||||
PTR sys_mkdirat
|
||||
PTR sys_mknodat
|
||||
PTR sys_fchownat
|
||||
PTR sys_futimesat /* 6255 */
|
||||
PTR compat_sys_futimesat /* 6255 */
|
||||
PTR sys_newfstatat
|
||||
PTR sys_unlinkat
|
||||
PTR sys_renameat
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/param.h>
|
||||
#include <linux/profile.h>
|
||||
#include <linux/time.h>
|
||||
#include <linux/timex.h>
|
||||
#include <linux/smp.h>
|
||||
|
||||
@@ -256,7 +256,7 @@ asmlinkage void plat_irq_dispatch(void)
|
||||
|
||||
if (irq == MIPSCPU_INT_I8259A)
|
||||
malta_hw0_irqdispatch();
|
||||
else if (irq > 0)
|
||||
else if (irq >= 0)
|
||||
do_IRQ(MIPS_CPU_IRQ_BASE + irq);
|
||||
else
|
||||
spurious_interrupt();
|
||||
|
||||
+25
-1
@@ -57,6 +57,21 @@ static __init int __maybe_unused r10000_llsc_war(void)
|
||||
return R10000_LLSC_WAR;
|
||||
}
|
||||
|
||||
/*
|
||||
* Found by experiment: At least some revisions of the 4kc throw under
|
||||
* some circumstances a machine check exception, triggered by invalid
|
||||
* values in the index register. Delaying the tlbp instruction until
|
||||
* after the next branch, plus adding an additional nop in front of
|
||||
* tlbwi/tlbwr avoids the invalid index register values. Nobody knows
|
||||
* why; it's not an issue caused by the core RTL.
|
||||
*
|
||||
*/
|
||||
static __init int __attribute__((unused)) m4kc_tlbp_war(void)
|
||||
{
|
||||
return (current_cpu_data.processor_id & 0xffff00) ==
|
||||
(PRID_COMP_MIPS | PRID_IMP_4KC);
|
||||
}
|
||||
|
||||
/*
|
||||
* A little micro-assembler, intended for TLB refill handler
|
||||
* synthesizing. It is intentionally kept simple, does only support
|
||||
@@ -894,6 +909,8 @@ static __init void build_tlb_write_entry(u32 **p, struct label **l,
|
||||
case CPU_20KC:
|
||||
case CPU_25KF:
|
||||
case CPU_LOONGSON2:
|
||||
if (m4kc_tlbp_war())
|
||||
i_nop(p);
|
||||
tlbw(p);
|
||||
break;
|
||||
|
||||
@@ -1705,7 +1722,8 @@ build_r4000_tlbchange_handler_head(u32 **p, struct label **l,
|
||||
l_smp_pgtable_change(l, *p);
|
||||
# endif
|
||||
iPTE_LW(p, l, pte, ptr); /* get even pte */
|
||||
build_tlb_probe_entry(p);
|
||||
if (!m4kc_tlbp_war())
|
||||
build_tlb_probe_entry(p);
|
||||
}
|
||||
|
||||
static void __init
|
||||
@@ -1747,6 +1765,8 @@ static void __init build_r4000_tlb_load_handler(void)
|
||||
|
||||
build_r4000_tlbchange_handler_head(&p, &l, &r, K0, K1);
|
||||
build_pte_present(&p, &l, &r, K0, K1, label_nopage_tlbl);
|
||||
if (m4kc_tlbp_war())
|
||||
build_tlb_probe_entry(&p);
|
||||
build_make_valid(&p, &r, K0, K1);
|
||||
build_r4000_tlbchange_handler_tail(&p, &l, &r, K0, K1);
|
||||
|
||||
@@ -1781,6 +1801,8 @@ static void __init build_r4000_tlb_store_handler(void)
|
||||
|
||||
build_r4000_tlbchange_handler_head(&p, &l, &r, K0, K1);
|
||||
build_pte_writable(&p, &l, &r, K0, K1, label_nopage_tlbs);
|
||||
if (m4kc_tlbp_war())
|
||||
build_tlb_probe_entry(&p);
|
||||
build_make_write(&p, &r, K0, K1);
|
||||
build_r4000_tlbchange_handler_tail(&p, &l, &r, K0, K1);
|
||||
|
||||
@@ -1815,6 +1837,8 @@ static void __init build_r4000_tlb_modify_handler(void)
|
||||
|
||||
build_r4000_tlbchange_handler_head(&p, &l, &r, K0, K1);
|
||||
build_pte_modifiable(&p, &l, &r, K0, K1, label_nopage_tlbm);
|
||||
if (m4kc_tlbp_war())
|
||||
build_tlb_probe_entry(&p);
|
||||
/* Present and writable bits set, set accessed and dirty bits. */
|
||||
build_make_write(&p, &r, K0, K1);
|
||||
build_r4000_tlbchange_handler_tail(&p, &l, &r, K0, K1);
|
||||
|
||||
@@ -238,7 +238,7 @@ static void snapshot_tb_and_purr(void *data)
|
||||
struct cpu_purr_data *p = &__get_cpu_var(cpu_purr_data);
|
||||
|
||||
local_irq_save(flags);
|
||||
p->tb = mftb();
|
||||
p->tb = get_tb_or_rtc();
|
||||
p->purr = mfspr(SPRN_PURR);
|
||||
wmb();
|
||||
p->initialized = 1;
|
||||
@@ -316,7 +316,7 @@ static void snapshot_purr(void)
|
||||
*/
|
||||
void snapshot_timebase(void)
|
||||
{
|
||||
__get_cpu_var(last_jiffy) = get_tb();
|
||||
__get_cpu_var(last_jiffy) = get_tb_or_rtc();
|
||||
snapshot_purr();
|
||||
}
|
||||
|
||||
@@ -683,6 +683,8 @@ void timer_interrupt(struct pt_regs * regs)
|
||||
|
||||
write_seqlock(&xtime_lock);
|
||||
tb_next_jiffy = tb_last_jiffy + tb_ticks_per_jiffy;
|
||||
if (__USE_RTC() && tb_next_jiffy >= 1000000000)
|
||||
tb_next_jiffy -= 1000000000;
|
||||
if (per_cpu(last_jiffy, cpu) >= tb_next_jiffy) {
|
||||
tb_last_jiffy = tb_next_jiffy;
|
||||
do_timer(1);
|
||||
@@ -976,7 +978,7 @@ void __init time_init(void)
|
||||
tb_to_ns_scale = scale;
|
||||
tb_to_ns_shift = shift;
|
||||
/* Save the current timebase to pretty up CONFIG_PRINTK_TIME */
|
||||
boot_tb = get_tb();
|
||||
boot_tb = get_tb_or_rtc();
|
||||
|
||||
tm = get_boot_time();
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user