Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
commit
eea60caef6
253 changed files with 2298 additions and 2343 deletions
10
MAINTAINERS
10
MAINTAINERS
|
@ -536,7 +536,7 @@ P: Mauro Carvalho Chehab
|
||||||
M: mchehab@brturbo.com.br
|
M: mchehab@brturbo.com.br
|
||||||
L: video4linux-list@redhat.com
|
L: video4linux-list@redhat.com
|
||||||
W: http://linuxtv.org
|
W: http://linuxtv.org
|
||||||
T: quilt http://www.linuxtv.org/download/quilt/
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
BUSLOGIC SCSI DRIVER
|
BUSLOGIC SCSI DRIVER
|
||||||
|
@ -834,7 +834,7 @@ P: LinuxTV.org Project
|
||||||
M: linux-dvb-maintainer@linuxtv.org
|
M: linux-dvb-maintainer@linuxtv.org
|
||||||
L: linux-dvb@linuxtv.org (subscription required)
|
L: linux-dvb@linuxtv.org (subscription required)
|
||||||
W: http://linuxtv.org/
|
W: http://linuxtv.org/
|
||||||
T: quilt http://www.linuxtv.org/download/quilt/
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
EATA-DMA SCSI DRIVER
|
EATA-DMA SCSI DRIVER
|
||||||
|
@ -1284,8 +1284,8 @@ T: git kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
INPUT (KEYBOARD, MOUSE, JOYSTICK) DRIVERS
|
INPUT (KEYBOARD, MOUSE, JOYSTICK) DRIVERS
|
||||||
P: Vojtech Pavlik
|
P: Dmitry Torokhov
|
||||||
M: vojtech@suse.cz
|
M: dtor_core@ameritech.net
|
||||||
L: linux-input@atrey.karlin.mff.cuni.cz
|
L: linux-input@atrey.karlin.mff.cuni.cz
|
||||||
L: linux-joystick@atrey.karlin.mff.cuni.cz
|
L: linux-joystick@atrey.karlin.mff.cuni.cz
|
||||||
T: git kernel.org:/pub/scm/linux/kernel/git/dtor/input.git
|
T: git kernel.org:/pub/scm/linux/kernel/git/dtor/input.git
|
||||||
|
@ -2896,7 +2896,7 @@ P: Mauro Carvalho Chehab
|
||||||
M: mchehab@brturbo.com.br
|
M: mchehab@brturbo.com.br
|
||||||
L: video4linux-list@redhat.com
|
L: video4linux-list@redhat.com
|
||||||
W: http://linuxtv.org
|
W: http://linuxtv.org
|
||||||
T: quilt http://www.linuxtv.org/download/quilt/
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
W1 DALLAS'S 1-WIRE BUS
|
W1 DALLAS'S 1-WIRE BUS
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -1,8 +1,8 @@
|
||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 15
|
SUBLEVEL = 15
|
||||||
EXTRAVERSION =-rc5
|
EXTRAVERSION =-rc7
|
||||||
NAME=Affluent Albatross
|
NAME=Sliding Snow Leopard
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
# To see a list of typical targets execute "make help"
|
# To see a list of typical targets execute "make help"
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
#define CAT1(x,y) x##y
|
#define CAT1(x,y) x##y
|
||||||
#define CAT(x,y) CAT1(x,y)
|
#define CAT(x,y) CAT1(x,y)
|
||||||
|
|
||||||
#define DO_DEFAULT_RTC rtc_port: 0x70
|
#define DO_DEFAULT_RTC .rtc_port = 0x70
|
||||||
|
|
||||||
#define DO_EV4_MMU \
|
#define DO_EV4_MMU \
|
||||||
.max_asn = EV4_MAX_ASN, \
|
.max_asn = EV4_MAX_ASN, \
|
||||||
|
|
|
@ -131,7 +131,7 @@ __syscall_start:
|
||||||
.long sys_wait4
|
.long sys_wait4
|
||||||
/* 115 */ .long sys_swapoff
|
/* 115 */ .long sys_swapoff
|
||||||
.long sys_sysinfo
|
.long sys_sysinfo
|
||||||
.long sys_ipc_wrapper
|
.long sys_ipc
|
||||||
.long sys_fsync
|
.long sys_fsync
|
||||||
.long sys_sigreturn_wrapper
|
.long sys_sigreturn_wrapper
|
||||||
/* 120 */ .long sys_clone_wrapper
|
/* 120 */ .long sys_clone_wrapper
|
||||||
|
@ -254,7 +254,7 @@ __syscall_start:
|
||||||
.long sys_fremovexattr
|
.long sys_fremovexattr
|
||||||
.long sys_tkill
|
.long sys_tkill
|
||||||
.long sys_sendfile64
|
.long sys_sendfile64
|
||||||
/* 240 */ .long sys_futex_wrapper
|
/* 240 */ .long sys_futex
|
||||||
.long sys_sched_setaffinity
|
.long sys_sched_setaffinity
|
||||||
.long sys_sched_getaffinity
|
.long sys_sched_getaffinity
|
||||||
.long sys_io_setup
|
.long sys_io_setup
|
||||||
|
@ -284,7 +284,7 @@ __syscall_start:
|
||||||
.long sys_fstatfs64
|
.long sys_fstatfs64
|
||||||
.long sys_tgkill
|
.long sys_tgkill
|
||||||
.long sys_utimes
|
.long sys_utimes
|
||||||
/* 270 */ .long sys_arm_fadvise64_64_wrapper
|
/* 270 */ .long sys_arm_fadvise64_64
|
||||||
.long sys_pciconfig_iobase
|
.long sys_pciconfig_iobase
|
||||||
.long sys_pciconfig_read
|
.long sys_pciconfig_read
|
||||||
.long sys_pciconfig_write
|
.long sys_pciconfig_write
|
||||||
|
@ -333,7 +333,7 @@ __syscall_start:
|
||||||
.long sys_inotify_init
|
.long sys_inotify_init
|
||||||
.long sys_inotify_add_watch
|
.long sys_inotify_add_watch
|
||||||
.long sys_inotify_rm_watch
|
.long sys_inotify_rm_watch
|
||||||
.long sys_mbind_wrapper
|
.long sys_mbind
|
||||||
/* 320 */ .long sys_get_mempolicy
|
/* 320 */ .long sys_get_mempolicy
|
||||||
.long sys_set_mempolicy
|
.long sys_set_mempolicy
|
||||||
__syscall_end:
|
__syscall_end:
|
||||||
|
|
|
@ -611,6 +611,47 @@ ENTRY(__switch_to)
|
||||||
.globl __kuser_helper_start
|
.globl __kuser_helper_start
|
||||||
__kuser_helper_start:
|
__kuser_helper_start:
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reference prototype:
|
||||||
|
*
|
||||||
|
* void __kernel_memory_barrier(void)
|
||||||
|
*
|
||||||
|
* Input:
|
||||||
|
*
|
||||||
|
* lr = return address
|
||||||
|
*
|
||||||
|
* Output:
|
||||||
|
*
|
||||||
|
* none
|
||||||
|
*
|
||||||
|
* Clobbered:
|
||||||
|
*
|
||||||
|
* the Z flag might be lost
|
||||||
|
*
|
||||||
|
* Definition and user space usage example:
|
||||||
|
*
|
||||||
|
* typedef void (__kernel_dmb_t)(void);
|
||||||
|
* #define __kernel_dmb (*(__kernel_dmb_t *)0xffff0fa0)
|
||||||
|
*
|
||||||
|
* Apply any needed memory barrier to preserve consistency with data modified
|
||||||
|
* manually and __kuser_cmpxchg usage.
|
||||||
|
*
|
||||||
|
* This could be used as follows:
|
||||||
|
*
|
||||||
|
* #define __kernel_dmb() \
|
||||||
|
* asm volatile ( "mov r0, #0xffff0fff; mov lr, pc; sub pc, r0, #95" \
|
||||||
|
* : : : "lr","cc" )
|
||||||
|
*/
|
||||||
|
|
||||||
|
__kuser_memory_barrier: @ 0xffff0fa0
|
||||||
|
|
||||||
|
#if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_SMP)
|
||||||
|
mcr p15, 0, r0, c7, c10, 5 @ dmb
|
||||||
|
#endif
|
||||||
|
mov pc, lr
|
||||||
|
|
||||||
|
.align 5
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reference prototype:
|
* Reference prototype:
|
||||||
*
|
*
|
||||||
|
@ -642,6 +683,8 @@ __kuser_helper_start:
|
||||||
* The C flag is also set if *ptr was changed to allow for assembly
|
* The C flag is also set if *ptr was changed to allow for assembly
|
||||||
* optimization in the calling code.
|
* optimization in the calling code.
|
||||||
*
|
*
|
||||||
|
* Note: this routine already includes memory barriers as needed.
|
||||||
|
*
|
||||||
* For example, a user space atomic_add implementation could look like this:
|
* For example, a user space atomic_add implementation could look like this:
|
||||||
*
|
*
|
||||||
* #define atomic_add(ptr, val) \
|
* #define atomic_add(ptr, val) \
|
||||||
|
@ -698,10 +741,16 @@ __kuser_cmpxchg: @ 0xffff0fc0
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
mcr p15, 0, r0, c7, c10, 5 @ dmb
|
||||||
|
#endif
|
||||||
ldrex r3, [r2]
|
ldrex r3, [r2]
|
||||||
subs r3, r3, r0
|
subs r3, r3, r0
|
||||||
strexeq r3, r1, [r2]
|
strexeq r3, r1, [r2]
|
||||||
rsbs r0, r3, #0
|
rsbs r0, r3, #0
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
mcr p15, 0, r0, c7, c10, 5 @ dmb
|
||||||
|
#endif
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -145,7 +145,7 @@ ENTRY(vector_swi)
|
||||||
#endif
|
#endif
|
||||||
enable_irq
|
enable_irq
|
||||||
|
|
||||||
str r4, [sp, #-S_OFF]! @ push fifth arg
|
stmdb sp!, {r4, r5} @ push fifth and sixth args
|
||||||
|
|
||||||
get_thread_info tsk
|
get_thread_info tsk
|
||||||
ldr ip, [tsk, #TI_FLAGS] @ check for syscall tracing
|
ldr ip, [tsk, #TI_FLAGS] @ check for syscall tracing
|
||||||
|
@ -204,7 +204,7 @@ ENTRY(sys_call_table)
|
||||||
* Special system call wrappers
|
* Special system call wrappers
|
||||||
*/
|
*/
|
||||||
@ r0 = syscall number
|
@ r0 = syscall number
|
||||||
@ r5 = syscall table
|
@ r8 = syscall table
|
||||||
.type sys_syscall, #function
|
.type sys_syscall, #function
|
||||||
sys_syscall:
|
sys_syscall:
|
||||||
eor scno, r0, #__NR_SYSCALL_BASE
|
eor scno, r0, #__NR_SYSCALL_BASE
|
||||||
|
@ -255,22 +255,6 @@ sys_sigaltstack_wrapper:
|
||||||
ldr r2, [sp, #S_OFF + S_SP]
|
ldr r2, [sp, #S_OFF + S_SP]
|
||||||
b do_sigaltstack
|
b do_sigaltstack
|
||||||
|
|
||||||
sys_futex_wrapper:
|
|
||||||
str r5, [sp, #4] @ push sixth arg
|
|
||||||
b sys_futex
|
|
||||||
|
|
||||||
sys_arm_fadvise64_64_wrapper:
|
|
||||||
str r5, [sp, #4] @ push r5 to stack
|
|
||||||
b sys_arm_fadvise64_64
|
|
||||||
|
|
||||||
sys_mbind_wrapper:
|
|
||||||
str r5, [sp, #4]
|
|
||||||
b sys_mbind
|
|
||||||
|
|
||||||
sys_ipc_wrapper:
|
|
||||||
str r5, [sp, #4] @ push sixth arg
|
|
||||||
b sys_ipc
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note: off_4k (r5) is always units of 4K. If we can't do the requested
|
* Note: off_4k (r5) is always units of 4K. If we can't do the requested
|
||||||
* offset, we return EINVAL.
|
* offset, we return EINVAL.
|
||||||
|
|
|
@ -101,6 +101,8 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case R_ARM_PC24:
|
case R_ARM_PC24:
|
||||||
|
case R_ARM_CALL:
|
||||||
|
case R_ARM_JUMP24:
|
||||||
offset = (*(u32 *)loc & 0x00ffffff) << 2;
|
offset = (*(u32 *)loc & 0x00ffffff) << 2;
|
||||||
if (offset & 0x02000000)
|
if (offset & 0x02000000)
|
||||||
offset -= 0x04000000;
|
offset -= 0x04000000;
|
||||||
|
|
|
@ -155,19 +155,20 @@ int pxa_pm_enter(suspend_state_t state)
|
||||||
PSPR = 0;
|
PSPR = 0;
|
||||||
|
|
||||||
/* restore registers */
|
/* restore registers */
|
||||||
|
RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1); RESTORE_GPLEVEL(2);
|
||||||
|
RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2);
|
||||||
RESTORE(GAFR0_L); RESTORE(GAFR0_U);
|
RESTORE(GAFR0_L); RESTORE(GAFR0_U);
|
||||||
RESTORE(GAFR1_L); RESTORE(GAFR1_U);
|
RESTORE(GAFR1_L); RESTORE(GAFR1_U);
|
||||||
RESTORE(GAFR2_L); RESTORE(GAFR2_U);
|
RESTORE(GAFR2_L); RESTORE(GAFR2_U);
|
||||||
RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1); RESTORE_GPLEVEL(2);
|
|
||||||
RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2);
|
|
||||||
RESTORE(GRER0); RESTORE(GRER1); RESTORE(GRER2);
|
RESTORE(GRER0); RESTORE(GRER1); RESTORE(GRER2);
|
||||||
RESTORE(GFER0); RESTORE(GFER1); RESTORE(GFER2);
|
RESTORE(GFER0); RESTORE(GFER1); RESTORE(GFER2);
|
||||||
RESTORE(PGSR0); RESTORE(PGSR1); RESTORE(PGSR2);
|
RESTORE(PGSR0); RESTORE(PGSR1); RESTORE(PGSR2);
|
||||||
|
|
||||||
#ifdef CONFIG_PXA27x
|
#ifdef CONFIG_PXA27x
|
||||||
RESTORE(MDREFR);
|
RESTORE(MDREFR);
|
||||||
RESTORE(GAFR3_L); RESTORE(GAFR3_U); RESTORE_GPLEVEL(3);
|
RESTORE_GPLEVEL(3); RESTORE(GPDR3);
|
||||||
RESTORE(GPDR3); RESTORE(GRER3); RESTORE(GFER3); RESTORE(PGSR3);
|
RESTORE(GAFR3_L); RESTORE(GAFR3_U);
|
||||||
|
RESTORE(GRER3); RESTORE(GFER3); RESTORE(PGSR3);
|
||||||
RESTORE(PWER); RESTORE(PCFR); RESTORE(PRER);
|
RESTORE(PWER); RESTORE(PCFR); RESTORE(PRER);
|
||||||
RESTORE(PFER); RESTORE(PKWR);
|
RESTORE(PFER); RESTORE(PKWR);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -245,7 +245,7 @@ void iounmap(volatile void __iomem *addr)
|
||||||
addr < phys_to_virt(ISA_END_ADDRESS))
|
addr < phys_to_virt(ISA_END_ADDRESS))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
addr = (volatile void *)(PAGE_MASK & (unsigned long __force)addr);
|
addr = (volatile void __iomem *)(PAGE_MASK & (unsigned long __force)addr);
|
||||||
|
|
||||||
/* Use the vm area unlocked, assuming the caller
|
/* Use the vm area unlocked, assuming the caller
|
||||||
ensures there isn't another iounmap for the same address
|
ensures there isn't another iounmap for the same address
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
obj-y := i386.o
|
obj-y := i386.o
|
||||||
|
|
||||||
obj-$(CONFIG_PCI_BIOS) += pcbios.o
|
obj-$(CONFIG_PCI_BIOS) += pcbios.o
|
||||||
obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o
|
obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o direct.o
|
||||||
obj-$(CONFIG_PCI_DIRECT) += direct.o
|
obj-$(CONFIG_PCI_DIRECT) += direct.o
|
||||||
|
|
||||||
pci-y := fixup.o
|
pci-y := fixup.o
|
||||||
|
|
|
@ -155,7 +155,7 @@ static __init void unreachable_devices(void)
|
||||||
addr = get_base_addr(0, 0, PCI_DEVFN(i, 0));
|
addr = get_base_addr(0, 0, PCI_DEVFN(i, 0));
|
||||||
if (addr != 0)
|
if (addr != 0)
|
||||||
pci_exp_set_dev_base(addr, 0, PCI_DEVFN(i, 0));
|
pci_exp_set_dev_base(addr, 0, PCI_DEVFN(i, 0));
|
||||||
if (addr == 0 || readl((u32 *)addr) != val1)
|
if (addr == 0 || readl((u32 __iomem *)mmcfg_virt_addr) != val1)
|
||||||
set_bit(i, fallback_slots);
|
set_bit(i, fallback_slots);
|
||||||
spin_unlock_irqrestore(&pci_config_lock, flags);
|
spin_unlock_irqrestore(&pci_config_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,7 +113,7 @@ CONFIG_IOSAPIC=y
|
||||||
CONFIG_IA64_SGI_SN_XP=m
|
CONFIG_IA64_SGI_SN_XP=m
|
||||||
CONFIG_FORCE_MAX_ZONEORDER=17
|
CONFIG_FORCE_MAX_ZONEORDER=17
|
||||||
CONFIG_SMP=y
|
CONFIG_SMP=y
|
||||||
CONFIG_NR_CPUS=512
|
CONFIG_NR_CPUS=1024
|
||||||
# CONFIG_HOTPLUG_CPU is not set
|
# CONFIG_HOTPLUG_CPU is not set
|
||||||
CONFIG_SCHED_SMT=y
|
CONFIG_SCHED_SMT=y
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
|
|
|
@ -721,11 +721,13 @@ flush_thread (void)
|
||||||
/* drop floating-point and debug-register state if it exists: */
|
/* drop floating-point and debug-register state if it exists: */
|
||||||
current->thread.flags &= ~(IA64_THREAD_FPH_VALID | IA64_THREAD_DBG_VALID);
|
current->thread.flags &= ~(IA64_THREAD_FPH_VALID | IA64_THREAD_DBG_VALID);
|
||||||
ia64_drop_fpu(current);
|
ia64_drop_fpu(current);
|
||||||
|
#ifdef CONFIG_IA32_SUPPORT
|
||||||
if (IS_IA32_PROCESS(ia64_task_regs(current))) {
|
if (IS_IA32_PROCESS(ia64_task_regs(current))) {
|
||||||
ia32_drop_partial_page_list(current);
|
ia32_drop_partial_page_list(current);
|
||||||
current->thread.task_size = IA32_PAGE_OFFSET;
|
current->thread.task_size = IA32_PAGE_OFFSET;
|
||||||
set_fs(USER_DS);
|
set_fs(USER_DS);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -249,3 +249,32 @@ time_init (void)
|
||||||
*/
|
*/
|
||||||
set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec);
|
set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SMALLUSECS 100
|
||||||
|
|
||||||
|
void
|
||||||
|
udelay (unsigned long usecs)
|
||||||
|
{
|
||||||
|
unsigned long start;
|
||||||
|
unsigned long cycles;
|
||||||
|
unsigned long smallusecs;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Execute the non-preemptible delay loop (because the ITC might
|
||||||
|
* not be synchronized between CPUS) in relatively short time
|
||||||
|
* chunks, allowing preemption between the chunks.
|
||||||
|
*/
|
||||||
|
while (usecs > 0) {
|
||||||
|
smallusecs = (usecs > SMALLUSECS) ? SMALLUSECS : usecs;
|
||||||
|
preempt_disable();
|
||||||
|
cycles = smallusecs*local_cpu_data->cyc_per_usec;
|
||||||
|
start = ia64_get_itc();
|
||||||
|
|
||||||
|
while (ia64_get_itc() - start < cycles)
|
||||||
|
cpu_relax();
|
||||||
|
|
||||||
|
preempt_enable();
|
||||||
|
usecs -= smallusecs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(udelay);
|
||||||
|
|
|
@ -53,7 +53,7 @@ static void uncached_ipi_visibility(void *data)
|
||||||
if ((status != PAL_VISIBILITY_OK) &&
|
if ((status != PAL_VISIBILITY_OK) &&
|
||||||
(status != PAL_VISIBILITY_OK_REMOTE_NEEDED))
|
(status != PAL_VISIBILITY_OK_REMOTE_NEEDED))
|
||||||
printk(KERN_DEBUG "pal_prefetch_visibility() returns %i on "
|
printk(KERN_DEBUG "pal_prefetch_visibility() returns %i on "
|
||||||
"CPU %i\n", status, get_cpu());
|
"CPU %i\n", status, raw_smp_processor_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ static void uncached_ipi_mc_drain(void *data)
|
||||||
status = ia64_pal_mc_drain();
|
status = ia64_pal_mc_drain();
|
||||||
if (status)
|
if (status)
|
||||||
printk(KERN_WARNING "ia64_pal_mc_drain() failed with %i on "
|
printk(KERN_WARNING "ia64_pal_mc_drain() failed with %i on "
|
||||||
"CPU %i\n", status, get_cpu());
|
"CPU %i\n", status, raw_smp_processor_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ uncached_get_new_chunk(struct gen_pool *poolp)
|
||||||
status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL);
|
status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL);
|
||||||
|
|
||||||
dprintk(KERN_INFO "pal_prefetch_visibility() returns %i on cpu %i\n",
|
dprintk(KERN_INFO "pal_prefetch_visibility() returns %i on cpu %i\n",
|
||||||
status, get_cpu());
|
status, raw_smp_processor_id());
|
||||||
|
|
||||||
if (!status) {
|
if (!status) {
|
||||||
status = smp_call_function(uncached_ipi_visibility, NULL, 0, 1);
|
status = smp_call_function(uncached_ipi_visibility, NULL, 0, 1);
|
||||||
|
|
|
@ -177,6 +177,9 @@ SECTIONS
|
||||||
}
|
}
|
||||||
. = ALIGN(PAGE_SIZE); /* make sure the gate page doesn't expose kernel data */
|
. = ALIGN(PAGE_SIZE); /* make sure the gate page doesn't expose kernel data */
|
||||||
|
|
||||||
|
.data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET)
|
||||||
|
{ *(.data.read_mostly) }
|
||||||
|
|
||||||
.data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET)
|
.data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET)
|
||||||
{ *(.data.cacheline_aligned) }
|
{ *(.data.cacheline_aligned) }
|
||||||
|
|
||||||
|
|
|
@ -202,7 +202,7 @@ sn2_global_tlb_purge(struct mm_struct *mm, unsigned long start,
|
||||||
unsigned long end, unsigned long nbits)
|
unsigned long end, unsigned long nbits)
|
||||||
{
|
{
|
||||||
int i, opt, shub1, cnode, mynasid, cpu, lcpu = 0, nasid, flushed = 0;
|
int i, opt, shub1, cnode, mynasid, cpu, lcpu = 0, nasid, flushed = 0;
|
||||||
int mymm = (mm == current->active_mm);
|
int mymm = (mm == current->active_mm && current->mm);
|
||||||
volatile unsigned long *ptc0, *ptc1;
|
volatile unsigned long *ptc0, *ptc1;
|
||||||
unsigned long itc, itc2, flags, data0 = 0, data1 = 0, rr_value;
|
unsigned long itc, itc2, flags, data0 = 0, data1 = 0, rr_value;
|
||||||
short nasids[MAX_NUMNODES], nix;
|
short nasids[MAX_NUMNODES], nix;
|
||||||
|
|
|
@ -25,7 +25,7 @@ union br_ptr {
|
||||||
*/
|
*/
|
||||||
void pcireg_control_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits)
|
void pcireg_control_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits)
|
||||||
{
|
{
|
||||||
union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base;
|
union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base;
|
||||||
|
|
||||||
if (pcibus_info) {
|
if (pcibus_info) {
|
||||||
switch (pcibus_info->pbi_bridge_type) {
|
switch (pcibus_info->pbi_bridge_type) {
|
||||||
|
@ -38,14 +38,14 @@ void pcireg_control_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits)
|
||||||
default:
|
default:
|
||||||
panic
|
panic
|
||||||
("pcireg_control_bit_clr: unknown bridgetype bridge 0x%p",
|
("pcireg_control_bit_clr: unknown bridgetype bridge 0x%p",
|
||||||
(void *)ptr);
|
ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void pcireg_control_bit_set(struct pcibus_info *pcibus_info, uint64_t bits)
|
void pcireg_control_bit_set(struct pcibus_info *pcibus_info, uint64_t bits)
|
||||||
{
|
{
|
||||||
union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base;
|
union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base;
|
||||||
|
|
||||||
if (pcibus_info) {
|
if (pcibus_info) {
|
||||||
switch (pcibus_info->pbi_bridge_type) {
|
switch (pcibus_info->pbi_bridge_type) {
|
||||||
|
@ -58,7 +58,7 @@ void pcireg_control_bit_set(struct pcibus_info *pcibus_info, uint64_t bits)
|
||||||
default:
|
default:
|
||||||
panic
|
panic
|
||||||
("pcireg_control_bit_set: unknown bridgetype bridge 0x%p",
|
("pcireg_control_bit_set: unknown bridgetype bridge 0x%p",
|
||||||
(void *)ptr);
|
ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ void pcireg_control_bit_set(struct pcibus_info *pcibus_info, uint64_t bits)
|
||||||
*/
|
*/
|
||||||
uint64_t pcireg_tflush_get(struct pcibus_info *pcibus_info)
|
uint64_t pcireg_tflush_get(struct pcibus_info *pcibus_info)
|
||||||
{
|
{
|
||||||
union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base;
|
union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base;
|
||||||
uint64_t ret = 0;
|
uint64_t ret = 0;
|
||||||
|
|
||||||
if (pcibus_info) {
|
if (pcibus_info) {
|
||||||
|
@ -82,7 +82,7 @@ uint64_t pcireg_tflush_get(struct pcibus_info *pcibus_info)
|
||||||
default:
|
default:
|
||||||
panic
|
panic
|
||||||
("pcireg_tflush_get: unknown bridgetype bridge 0x%p",
|
("pcireg_tflush_get: unknown bridgetype bridge 0x%p",
|
||||||
(void *)ptr);
|
ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ uint64_t pcireg_tflush_get(struct pcibus_info *pcibus_info)
|
||||||
*/
|
*/
|
||||||
uint64_t pcireg_intr_status_get(struct pcibus_info * pcibus_info)
|
uint64_t pcireg_intr_status_get(struct pcibus_info * pcibus_info)
|
||||||
{
|
{
|
||||||
union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base;
|
union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base;
|
||||||
uint64_t ret = 0;
|
uint64_t ret = 0;
|
||||||
|
|
||||||
if (pcibus_info) {
|
if (pcibus_info) {
|
||||||
|
@ -112,7 +112,7 @@ uint64_t pcireg_intr_status_get(struct pcibus_info * pcibus_info)
|
||||||
default:
|
default:
|
||||||
panic
|
panic
|
||||||
("pcireg_intr_status_get: unknown bridgetype bridge 0x%p",
|
("pcireg_intr_status_get: unknown bridgetype bridge 0x%p",
|
||||||
(void *)ptr);
|
ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -123,7 +123,7 @@ uint64_t pcireg_intr_status_get(struct pcibus_info * pcibus_info)
|
||||||
*/
|
*/
|
||||||
void pcireg_intr_enable_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits)
|
void pcireg_intr_enable_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits)
|
||||||
{
|
{
|
||||||
union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base;
|
union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base;
|
||||||
|
|
||||||
if (pcibus_info) {
|
if (pcibus_info) {
|
||||||
switch (pcibus_info->pbi_bridge_type) {
|
switch (pcibus_info->pbi_bridge_type) {
|
||||||
|
@ -136,14 +136,14 @@ void pcireg_intr_enable_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits)
|
||||||
default:
|
default:
|
||||||
panic
|
panic
|
||||||
("pcireg_intr_enable_bit_clr: unknown bridgetype bridge 0x%p",
|
("pcireg_intr_enable_bit_clr: unknown bridgetype bridge 0x%p",
|
||||||
(void *)ptr);
|
ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void pcireg_intr_enable_bit_set(struct pcibus_info *pcibus_info, uint64_t bits)
|
void pcireg_intr_enable_bit_set(struct pcibus_info *pcibus_info, uint64_t bits)
|
||||||
{
|
{
|
||||||
union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base;
|
union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base;
|
||||||
|
|
||||||
if (pcibus_info) {
|
if (pcibus_info) {
|
||||||
switch (pcibus_info->pbi_bridge_type) {
|
switch (pcibus_info->pbi_bridge_type) {
|
||||||
|
@ -156,7 +156,7 @@ void pcireg_intr_enable_bit_set(struct pcibus_info *pcibus_info, uint64_t bits)
|
||||||
default:
|
default:
|
||||||
panic
|
panic
|
||||||
("pcireg_intr_enable_bit_set: unknown bridgetype bridge 0x%p",
|
("pcireg_intr_enable_bit_set: unknown bridgetype bridge 0x%p",
|
||||||
(void *)ptr);
|
ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -167,7 +167,7 @@ void pcireg_intr_enable_bit_set(struct pcibus_info *pcibus_info, uint64_t bits)
|
||||||
void pcireg_intr_addr_addr_set(struct pcibus_info *pcibus_info, int int_n,
|
void pcireg_intr_addr_addr_set(struct pcibus_info *pcibus_info, int int_n,
|
||||||
uint64_t addr)
|
uint64_t addr)
|
||||||
{
|
{
|
||||||
union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base;
|
union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base;
|
||||||
|
|
||||||
if (pcibus_info) {
|
if (pcibus_info) {
|
||||||
switch (pcibus_info->pbi_bridge_type) {
|
switch (pcibus_info->pbi_bridge_type) {
|
||||||
|
@ -186,7 +186,7 @@ void pcireg_intr_addr_addr_set(struct pcibus_info *pcibus_info, int int_n,
|
||||||
default:
|
default:
|
||||||
panic
|
panic
|
||||||
("pcireg_intr_addr_addr_get: unknown bridgetype bridge 0x%p",
|
("pcireg_intr_addr_addr_get: unknown bridgetype bridge 0x%p",
|
||||||
(void *)ptr);
|
ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -196,7 +196,7 @@ void pcireg_intr_addr_addr_set(struct pcibus_info *pcibus_info, int int_n,
|
||||||
*/
|
*/
|
||||||
void pcireg_force_intr_set(struct pcibus_info *pcibus_info, int int_n)
|
void pcireg_force_intr_set(struct pcibus_info *pcibus_info, int int_n)
|
||||||
{
|
{
|
||||||
union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base;
|
union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base;
|
||||||
|
|
||||||
if (pcibus_info) {
|
if (pcibus_info) {
|
||||||
switch (pcibus_info->pbi_bridge_type) {
|
switch (pcibus_info->pbi_bridge_type) {
|
||||||
|
@ -209,7 +209,7 @@ void pcireg_force_intr_set(struct pcibus_info *pcibus_info, int int_n)
|
||||||
default:
|
default:
|
||||||
panic
|
panic
|
||||||
("pcireg_force_intr_set: unknown bridgetype bridge 0x%p",
|
("pcireg_force_intr_set: unknown bridgetype bridge 0x%p",
|
||||||
(void *)ptr);
|
ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -219,7 +219,7 @@ void pcireg_force_intr_set(struct pcibus_info *pcibus_info, int int_n)
|
||||||
*/
|
*/
|
||||||
uint64_t pcireg_wrb_flush_get(struct pcibus_info *pcibus_info, int device)
|
uint64_t pcireg_wrb_flush_get(struct pcibus_info *pcibus_info, int device)
|
||||||
{
|
{
|
||||||
union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base;
|
union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base;
|
||||||
uint64_t ret = 0;
|
uint64_t ret = 0;
|
||||||
|
|
||||||
if (pcibus_info) {
|
if (pcibus_info) {
|
||||||
|
@ -233,7 +233,7 @@ uint64_t pcireg_wrb_flush_get(struct pcibus_info *pcibus_info, int device)
|
||||||
__sn_readq_relaxed(&ptr->pic.p_wr_req_buf[device]);
|
__sn_readq_relaxed(&ptr->pic.p_wr_req_buf[device]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
panic("pcireg_wrb_flush_get: unknown bridgetype bridge 0x%p", (void *)ptr);
|
panic("pcireg_wrb_flush_get: unknown bridgetype bridge 0x%p", ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -244,7 +244,7 @@ uint64_t pcireg_wrb_flush_get(struct pcibus_info *pcibus_info, int device)
|
||||||
void pcireg_int_ate_set(struct pcibus_info *pcibus_info, int ate_index,
|
void pcireg_int_ate_set(struct pcibus_info *pcibus_info, int ate_index,
|
||||||
uint64_t val)
|
uint64_t val)
|
||||||
{
|
{
|
||||||
union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base;
|
union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base;
|
||||||
|
|
||||||
if (pcibus_info) {
|
if (pcibus_info) {
|
||||||
switch (pcibus_info->pbi_bridge_type) {
|
switch (pcibus_info->pbi_bridge_type) {
|
||||||
|
@ -257,15 +257,15 @@ void pcireg_int_ate_set(struct pcibus_info *pcibus_info, int ate_index,
|
||||||
default:
|
default:
|
||||||
panic
|
panic
|
||||||
("pcireg_int_ate_set: unknown bridgetype bridge 0x%p",
|
("pcireg_int_ate_set: unknown bridgetype bridge 0x%p",
|
||||||
(void *)ptr);
|
ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t *pcireg_int_ate_addr(struct pcibus_info *pcibus_info, int ate_index)
|
uint64_t __iomem *pcireg_int_ate_addr(struct pcibus_info *pcibus_info, int ate_index)
|
||||||
{
|
{
|
||||||
union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base;
|
union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base;
|
||||||
uint64_t *ret = (uint64_t *) 0;
|
uint64_t __iomem *ret = NULL;
|
||||||
|
|
||||||
if (pcibus_info) {
|
if (pcibus_info) {
|
||||||
switch (pcibus_info->pbi_bridge_type) {
|
switch (pcibus_info->pbi_bridge_type) {
|
||||||
|
@ -278,7 +278,7 @@ uint64_t *pcireg_int_ate_addr(struct pcibus_info *pcibus_info, int ate_index)
|
||||||
default:
|
default:
|
||||||
panic
|
panic
|
||||||
("pcireg_int_ate_addr: unknown bridgetype bridge 0x%p",
|
("pcireg_int_ate_addr: unknown bridgetype bridge 0x%p",
|
||||||
(void *)ptr);
|
ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -38,10 +38,10 @@ tioca_gart_init(struct tioca_kernel *tioca_kern)
|
||||||
uint64_t offset;
|
uint64_t offset;
|
||||||
struct page *tmp;
|
struct page *tmp;
|
||||||
struct tioca_common *tioca_common;
|
struct tioca_common *tioca_common;
|
||||||
struct tioca *ca_base;
|
struct tioca __iomem *ca_base;
|
||||||
|
|
||||||
tioca_common = tioca_kern->ca_common;
|
tioca_common = tioca_kern->ca_common;
|
||||||
ca_base = (struct tioca *)tioca_common->ca_common.bs_base;
|
ca_base = (struct tioca __iomem *)tioca_common->ca_common.bs_base;
|
||||||
|
|
||||||
if (list_empty(tioca_kern->ca_devices))
|
if (list_empty(tioca_kern->ca_devices))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -215,7 +215,7 @@ tioca_fastwrite_enable(struct tioca_kernel *tioca_kern)
|
||||||
{
|
{
|
||||||
int cap_ptr;
|
int cap_ptr;
|
||||||
uint32_t reg;
|
uint32_t reg;
|
||||||
struct tioca *tioca_base;
|
struct tioca __iomem *tioca_base;
|
||||||
struct pci_dev *pdev;
|
struct pci_dev *pdev;
|
||||||
struct tioca_common *common;
|
struct tioca_common *common;
|
||||||
|
|
||||||
|
@ -257,7 +257,7 @@ tioca_fastwrite_enable(struct tioca_kernel *tioca_kern)
|
||||||
* Set ca's fw to match
|
* Set ca's fw to match
|
||||||
*/
|
*/
|
||||||
|
|
||||||
tioca_base = (struct tioca *)common->ca_common.bs_base;
|
tioca_base = (struct tioca __iomem*)common->ca_common.bs_base;
|
||||||
__sn_setq_relaxed(&tioca_base->ca_control1, CA_AGP_FW_ENABLE);
|
__sn_setq_relaxed(&tioca_base->ca_control1, CA_AGP_FW_ENABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ static uint64_t
|
||||||
tioca_dma_d48(struct pci_dev *pdev, uint64_t paddr)
|
tioca_dma_d48(struct pci_dev *pdev, uint64_t paddr)
|
||||||
{
|
{
|
||||||
struct tioca_common *tioca_common;
|
struct tioca_common *tioca_common;
|
||||||
struct tioca *ca_base;
|
struct tioca __iomem *ca_base;
|
||||||
uint64_t ct_addr;
|
uint64_t ct_addr;
|
||||||
dma_addr_t bus_addr;
|
dma_addr_t bus_addr;
|
||||||
uint32_t node_upper;
|
uint32_t node_upper;
|
||||||
|
@ -330,7 +330,7 @@ tioca_dma_d48(struct pci_dev *pdev, uint64_t paddr)
|
||||||
struct pcidev_info *pcidev_info = SN_PCIDEV_INFO(pdev);
|
struct pcidev_info *pcidev_info = SN_PCIDEV_INFO(pdev);
|
||||||
|
|
||||||
tioca_common = (struct tioca_common *)pcidev_info->pdi_pcibus_info;
|
tioca_common = (struct tioca_common *)pcidev_info->pdi_pcibus_info;
|
||||||
ca_base = (struct tioca *)tioca_common->ca_common.bs_base;
|
ca_base = (struct tioca __iomem *)tioca_common->ca_common.bs_base;
|
||||||
|
|
||||||
ct_addr = PHYS_TO_TIODMA(paddr);
|
ct_addr = PHYS_TO_TIODMA(paddr);
|
||||||
if (!ct_addr)
|
if (!ct_addr)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.15-rc1
|
# Linux kernel version: 2.6.15-rc5
|
||||||
# Tue Nov 15 14:36:20 2005
|
# Tue Dec 20 15:59:26 2005
|
||||||
#
|
#
|
||||||
CONFIG_PPC64=y
|
CONFIG_PPC64=y
|
||||||
CONFIG_64BIT=y
|
CONFIG_64BIT=y
|
||||||
|
@ -53,6 +53,7 @@ CONFIG_KOBJECT_UEVENT=y
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
# CONFIG_CPUSETS is not set
|
# CONFIG_CPUSETS is not set
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
# CONFIG_EMBEDDED is not set
|
# CONFIG_EMBEDDED is not set
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
# CONFIG_KALLSYMS_ALL is not set
|
# CONFIG_KALLSYMS_ALL is not set
|
||||||
|
@ -151,7 +152,7 @@ CONFIG_FLATMEM_MANUAL=y
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||||
# CONFIG_PPC_64K_PAGES is not set
|
# CONFIG_PPC_64K_PAGES is not set
|
||||||
CONFIG_SCHED_SMT=y
|
CONFIG_SCHED_SMT=y
|
||||||
CONFIG_PROC_DEVICETREE=y
|
CONFIG_PROC_DEVICETREE=y
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.15-rc1
|
# Linux kernel version: 2.6.15-rc5
|
||||||
# Tue Nov 15 14:39:20 2005
|
# Tue Dec 20 15:59:30 2005
|
||||||
#
|
#
|
||||||
CONFIG_PPC64=y
|
CONFIG_PPC64=y
|
||||||
CONFIG_64BIT=y
|
CONFIG_64BIT=y
|
||||||
|
@ -53,6 +53,7 @@ CONFIG_IKCONFIG=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
# CONFIG_CPUSETS is not set
|
# CONFIG_CPUSETS is not set
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
# CONFIG_EMBEDDED is not set
|
# CONFIG_EMBEDDED is not set
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
# CONFIG_KALLSYMS_ALL is not set
|
# CONFIG_KALLSYMS_ALL is not set
|
||||||
|
@ -162,7 +163,7 @@ CONFIG_FLATMEM_MANUAL=y
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||||
# CONFIG_PPC_64K_PAGES is not set
|
# CONFIG_PPC_64K_PAGES is not set
|
||||||
# CONFIG_SCHED_SMT is not set
|
# CONFIG_SCHED_SMT is not set
|
||||||
CONFIG_PROC_DEVICETREE=y
|
CONFIG_PROC_DEVICETREE=y
|
||||||
|
@ -1203,6 +1204,7 @@ CONFIG_USB_MON=y
|
||||||
CONFIG_USB_SERIAL=m
|
CONFIG_USB_SERIAL=m
|
||||||
CONFIG_USB_SERIAL_GENERIC=y
|
CONFIG_USB_SERIAL_GENERIC=y
|
||||||
# CONFIG_USB_SERIAL_AIRPRIME is not set
|
# CONFIG_USB_SERIAL_AIRPRIME is not set
|
||||||
|
# CONFIG_USB_SERIAL_ANYDATA is not set
|
||||||
CONFIG_USB_SERIAL_BELKIN=m
|
CONFIG_USB_SERIAL_BELKIN=m
|
||||||
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
|
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
|
||||||
# CONFIG_USB_SERIAL_CP2101 is not set
|
# CONFIG_USB_SERIAL_CP2101 is not set
|
||||||
|
@ -1233,7 +1235,6 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
|
||||||
CONFIG_USB_SERIAL_KLSI=m
|
CONFIG_USB_SERIAL_KLSI=m
|
||||||
CONFIG_USB_SERIAL_KOBIL_SCT=m
|
CONFIG_USB_SERIAL_KOBIL_SCT=m
|
||||||
CONFIG_USB_SERIAL_MCT_U232=m
|
CONFIG_USB_SERIAL_MCT_U232=m
|
||||||
# CONFIG_USB_SERIAL_NOKIA_DKU2 is not set
|
|
||||||
CONFIG_USB_SERIAL_PL2303=m
|
CONFIG_USB_SERIAL_PL2303=m
|
||||||
# CONFIG_USB_SERIAL_HP4X is not set
|
# CONFIG_USB_SERIAL_HP4X is not set
|
||||||
CONFIG_USB_SERIAL_SAFE=m
|
CONFIG_USB_SERIAL_SAFE=m
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.15-rc1
|
# Linux kernel version: 2.6.15-rc5
|
||||||
# Tue Nov 15 14:38:09 2005
|
# Tue Dec 20 15:59:32 2005
|
||||||
#
|
#
|
||||||
CONFIG_PPC64=y
|
CONFIG_PPC64=y
|
||||||
CONFIG_64BIT=y
|
CONFIG_64BIT=y
|
||||||
|
@ -55,6 +55,7 @@ CONFIG_IKCONFIG=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
# CONFIG_CPUSETS is not set
|
# CONFIG_CPUSETS is not set
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
# CONFIG_EMBEDDED is not set
|
# CONFIG_EMBEDDED is not set
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
# CONFIG_KALLSYMS_ALL is not set
|
# CONFIG_KALLSYMS_ALL is not set
|
||||||
|
@ -144,7 +145,7 @@ CONFIG_FLATMEM_MANUAL=y
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||||
# CONFIG_PPC_64K_PAGES is not set
|
# CONFIG_PPC_64K_PAGES is not set
|
||||||
# CONFIG_SCHED_SMT is not set
|
# CONFIG_SCHED_SMT is not set
|
||||||
CONFIG_PROC_DEVICETREE=y
|
CONFIG_PROC_DEVICETREE=y
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.15-rc1
|
# Linux kernel version: 2.6.15-rc5
|
||||||
# Tue Nov 15 14:38:58 2005
|
# Tue Dec 20 15:59:36 2005
|
||||||
#
|
#
|
||||||
CONFIG_PPC64=y
|
CONFIG_PPC64=y
|
||||||
CONFIG_64BIT=y
|
CONFIG_64BIT=y
|
||||||
|
@ -53,6 +53,7 @@ CONFIG_IKCONFIG=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
# CONFIG_CPUSETS is not set
|
# CONFIG_CPUSETS is not set
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
# CONFIG_EMBEDDED is not set
|
# CONFIG_EMBEDDED is not set
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
CONFIG_KALLSYMS_ALL=y
|
CONFIG_KALLSYMS_ALL=y
|
||||||
|
@ -149,7 +150,7 @@ CONFIG_FLATMEM_MANUAL=y
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||||
# CONFIG_PPC_64K_PAGES is not set
|
# CONFIG_PPC_64K_PAGES is not set
|
||||||
# CONFIG_SCHED_SMT is not set
|
# CONFIG_SCHED_SMT is not set
|
||||||
CONFIG_PROC_DEVICETREE=y
|
CONFIG_PROC_DEVICETREE=y
|
||||||
|
@ -242,7 +243,6 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# QoS and/or fair queueing
|
# QoS and/or fair queueing
|
||||||
#
|
#
|
||||||
# CONFIG_NET_SCHED is not set
|
# CONFIG_NET_SCHED is not set
|
||||||
# CONFIG_NET_CLS_ROUTE is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Network testing
|
# Network testing
|
||||||
|
@ -794,6 +794,7 @@ CONFIG_USB_SERIAL=y
|
||||||
# CONFIG_USB_SERIAL_CONSOLE is not set
|
# CONFIG_USB_SERIAL_CONSOLE is not set
|
||||||
CONFIG_USB_SERIAL_GENERIC=y
|
CONFIG_USB_SERIAL_GENERIC=y
|
||||||
# CONFIG_USB_SERIAL_AIRPRIME is not set
|
# CONFIG_USB_SERIAL_AIRPRIME is not set
|
||||||
|
# CONFIG_USB_SERIAL_ANYDATA is not set
|
||||||
# CONFIG_USB_SERIAL_BELKIN is not set
|
# CONFIG_USB_SERIAL_BELKIN is not set
|
||||||
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
|
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
|
||||||
# CONFIG_USB_SERIAL_CP2101 is not set
|
# CONFIG_USB_SERIAL_CP2101 is not set
|
||||||
|
@ -824,7 +825,6 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
|
||||||
# CONFIG_USB_SERIAL_KLSI is not set
|
# CONFIG_USB_SERIAL_KLSI is not set
|
||||||
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
|
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
|
||||||
# CONFIG_USB_SERIAL_MCT_U232 is not set
|
# CONFIG_USB_SERIAL_MCT_U232 is not set
|
||||||
# CONFIG_USB_SERIAL_NOKIA_DKU2 is not set
|
|
||||||
# CONFIG_USB_SERIAL_PL2303 is not set
|
# CONFIG_USB_SERIAL_PL2303 is not set
|
||||||
# CONFIG_USB_SERIAL_HP4X is not set
|
# CONFIG_USB_SERIAL_HP4X is not set
|
||||||
# CONFIG_USB_SERIAL_SAFE is not set
|
# CONFIG_USB_SERIAL_SAFE is not set
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.15-rc1
|
# Linux kernel version: 2.6.15-rc5
|
||||||
# Fri Nov 18 16:23:24 2005
|
# Tue Dec 20 15:59:38 2005
|
||||||
#
|
#
|
||||||
CONFIG_PPC64=y
|
CONFIG_PPC64=y
|
||||||
CONFIG_64BIT=y
|
CONFIG_64BIT=y
|
||||||
|
@ -54,6 +54,7 @@ CONFIG_IKCONFIG=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_CPUSETS=y
|
CONFIG_CPUSETS=y
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
# CONFIG_EMBEDDED is not set
|
# CONFIG_EMBEDDED is not set
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
CONFIG_KALLSYMS_ALL=y
|
CONFIG_KALLSYMS_ALL=y
|
||||||
|
@ -176,7 +177,7 @@ CONFIG_HAVE_MEMORY_PRESENT=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
CONFIG_SPARSEMEM_EXTREME=y
|
CONFIG_SPARSEMEM_EXTREME=y
|
||||||
# CONFIG_MEMORY_HOTPLUG is not set
|
# CONFIG_MEMORY_HOTPLUG is not set
|
||||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||||
# CONFIG_PPC_64K_PAGES is not set
|
# CONFIG_PPC_64K_PAGES is not set
|
||||||
# CONFIG_SCHED_SMT is not set
|
# CONFIG_SCHED_SMT is not set
|
||||||
CONFIG_PROC_DEVICETREE=y
|
CONFIG_PROC_DEVICETREE=y
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.15-rc1
|
# Linux kernel version: 2.6.15-rc5
|
||||||
# Tue Nov 15 14:36:55 2005
|
# Tue Dec 20 15:59:40 2005
|
||||||
#
|
#
|
||||||
CONFIG_PPC64=y
|
CONFIG_PPC64=y
|
||||||
CONFIG_64BIT=y
|
CONFIG_64BIT=y
|
||||||
|
@ -55,6 +55,7 @@ CONFIG_IKCONFIG=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_CPUSETS=y
|
CONFIG_CPUSETS=y
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
# CONFIG_EMBEDDED is not set
|
# CONFIG_EMBEDDED is not set
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
CONFIG_KALLSYMS_ALL=y
|
CONFIG_KALLSYMS_ALL=y
|
||||||
|
@ -163,7 +164,7 @@ CONFIG_HAVE_MEMORY_PRESENT=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
CONFIG_SPARSEMEM_EXTREME=y
|
CONFIG_SPARSEMEM_EXTREME=y
|
||||||
# CONFIG_MEMORY_HOTPLUG is not set
|
# CONFIG_MEMORY_HOTPLUG is not set
|
||||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||||
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
|
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
|
||||||
# CONFIG_PPC_64K_PAGES is not set
|
# CONFIG_PPC_64K_PAGES is not set
|
||||||
CONFIG_SCHED_SMT=y
|
CONFIG_SCHED_SMT=y
|
||||||
|
|
|
@ -183,8 +183,8 @@ syscall_exit_trace_cont:
|
||||||
ld r13,GPR13(r1) /* returning to usermode */
|
ld r13,GPR13(r1) /* returning to usermode */
|
||||||
1: ld r2,GPR2(r1)
|
1: ld r2,GPR2(r1)
|
||||||
li r12,MSR_RI
|
li r12,MSR_RI
|
||||||
andc r10,r10,r12
|
andc r11,r10,r12
|
||||||
mtmsrd r10,1 /* clear MSR.RI */
|
mtmsrd r11,1 /* clear MSR.RI */
|
||||||
ld r1,GPR1(r1)
|
ld r1,GPR1(r1)
|
||||||
mtlr r4
|
mtlr r4
|
||||||
mtcr r5
|
mtcr r5
|
||||||
|
|
|
@ -247,7 +247,7 @@ long ppc64_personality(unsigned long personality)
|
||||||
#define OVERRIDE_MACHINE 0
|
#define OVERRIDE_MACHINE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline int override_machine(char *mach)
|
static inline int override_machine(char __user *mach)
|
||||||
{
|
{
|
||||||
if (OVERRIDE_MACHINE) {
|
if (OVERRIDE_MACHINE) {
|
||||||
/* change ppc64 to ppc */
|
/* change ppc64 to ppc */
|
||||||
|
|
|
@ -514,7 +514,7 @@ void __init htab_initialize(void)
|
||||||
#undef KB
|
#undef KB
|
||||||
#undef MB
|
#undef MB
|
||||||
|
|
||||||
void __init htab_initialize_secondary(void)
|
void htab_initialize_secondary(void)
|
||||||
{
|
{
|
||||||
if (!platform_is_lpar())
|
if (!platform_is_lpar())
|
||||||
mtspr(SPRN_SDR1, _SDR1);
|
mtspr(SPRN_SDR1, _SDR1);
|
||||||
|
|
|
@ -48,11 +48,6 @@ static struct hw_interrupt_type xics_pic = {
|
||||||
.set_affinity = xics_set_affinity
|
.set_affinity = xics_set_affinity
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct hw_interrupt_type xics_8259_pic = {
|
|
||||||
.typename = " XICS/8259",
|
|
||||||
.ack = xics_mask_and_ack_irq,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* This is used to map real irq numbers to virtual */
|
/* This is used to map real irq numbers to virtual */
|
||||||
static struct radix_tree_root irq_map = RADIX_TREE_INIT(GFP_ATOMIC);
|
static struct radix_tree_root irq_map = RADIX_TREE_INIT(GFP_ATOMIC);
|
||||||
|
|
||||||
|
@ -367,12 +362,7 @@ int xics_get_irq(struct pt_regs *regs)
|
||||||
/* for sanity, this had better be < NR_IRQS - 16 */
|
/* for sanity, this had better be < NR_IRQS - 16 */
|
||||||
if (vec == xics_irq_8259_cascade_real) {
|
if (vec == xics_irq_8259_cascade_real) {
|
||||||
irq = i8259_irq(regs);
|
irq = i8259_irq(regs);
|
||||||
if (irq == -1) {
|
xics_end_irq(irq_offset_up(xics_irq_8259_cascade));
|
||||||
/* Spurious cascaded interrupt. Still must ack xics */
|
|
||||||
xics_end_irq(irq_offset_up(xics_irq_8259_cascade));
|
|
||||||
|
|
||||||
irq = -1;
|
|
||||||
}
|
|
||||||
} else if (vec == XICS_IRQ_SPURIOUS) {
|
} else if (vec == XICS_IRQ_SPURIOUS) {
|
||||||
irq = -1;
|
irq = -1;
|
||||||
} else {
|
} else {
|
||||||
|
@ -542,6 +532,7 @@ nextnode:
|
||||||
xics_irq_8259_cascade_real = *ireg;
|
xics_irq_8259_cascade_real = *ireg;
|
||||||
xics_irq_8259_cascade
|
xics_irq_8259_cascade
|
||||||
= virt_irq_create_mapping(xics_irq_8259_cascade_real);
|
= virt_irq_create_mapping(xics_irq_8259_cascade_real);
|
||||||
|
i8259_init(0, 0);
|
||||||
of_node_put(np);
|
of_node_put(np);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -565,12 +556,7 @@ nextnode:
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
}
|
}
|
||||||
|
|
||||||
xics_8259_pic.enable = i8259_pic.enable;
|
for (i = irq_offset_value(); i < NR_IRQS; ++i)
|
||||||
xics_8259_pic.disable = i8259_pic.disable;
|
|
||||||
xics_8259_pic.end = i8259_pic.end;
|
|
||||||
for (i = 0; i < 16; ++i)
|
|
||||||
get_irq_desc(i)->handler = &xics_8259_pic;
|
|
||||||
for (; i < NR_IRQS; ++i)
|
|
||||||
get_irq_desc(i)->handler = &xics_pic;
|
get_irq_desc(i)->handler = &xics_pic;
|
||||||
|
|
||||||
xics_setup_cpu();
|
xics_setup_cpu();
|
||||||
|
@ -590,7 +576,6 @@ static int __init xics_setup_i8259(void)
|
||||||
no_action, 0, "8259 cascade", NULL))
|
no_action, 0, "8259 cascade", NULL))
|
||||||
printk(KERN_ERR "xics_setup_i8259: couldn't get 8259 "
|
printk(KERN_ERR "xics_setup_i8259: couldn't get 8259 "
|
||||||
"cascade\n");
|
"cascade\n");
|
||||||
i8259_init(0, 0);
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -130,10 +130,11 @@ mpc85xx_cds_show_cpuinfo(struct seq_file *m)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CPM2
|
#ifdef CONFIG_CPM2
|
||||||
static void cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs)
|
static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
while((irq = cpm2_get_irq(regs)) >= 0)
|
while((irq = cpm2_get_irq(regs)) >= 0)
|
||||||
__do_IRQ(irq, regs);
|
__do_IRQ(irq, regs);
|
||||||
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct irqaction cpm2_irqaction = {
|
static struct irqaction cpm2_irqaction = {
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
#include <asm/dma.h>
|
||||||
#include <asm/ppc4xx_dma.h>
|
#include <asm/ppc4xx_dma.h>
|
||||||
|
|
||||||
ppc_dma_ch_t dma_channels[MAX_PPC4xx_DMA_CHANNELS];
|
ppc_dma_ch_t dma_channels[MAX_PPC4xx_DMA_CHANNELS];
|
||||||
|
|
|
@ -55,6 +55,10 @@ config NR_CPUS
|
||||||
depends on SMP
|
depends on SMP
|
||||||
default "32"
|
default "32"
|
||||||
|
|
||||||
|
config SPARC
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
# Identify this as a Sparc32 build
|
# Identify this as a Sparc32 build
|
||||||
config SPARC32
|
config SPARC32
|
||||||
bool
|
bool
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include <asm/oplib.h>
|
#include <asm/oplib.h>
|
||||||
#include <asm/bpp.h>
|
#include <asm/bpp.h>
|
||||||
|
|
||||||
struct linux_ebus *ebus_chain = 0;
|
struct linux_ebus *ebus_chain = NULL;
|
||||||
|
|
||||||
/* We are together with pcic.c under CONFIG_PCI. */
|
/* We are together with pcic.c under CONFIG_PCI. */
|
||||||
extern unsigned int pcic_pin_to_irq(unsigned int, char *name);
|
extern unsigned int pcic_pin_to_irq(unsigned int, char *name);
|
||||||
|
@ -46,7 +46,7 @@ static struct ebus_device_irq je1_1[] = {
|
||||||
{ "SUNW,CS4231", 0 },
|
{ "SUNW,CS4231", 0 },
|
||||||
{ "parallel", 0 },
|
{ "parallel", 0 },
|
||||||
{ "se", 2 },
|
{ "se", 2 },
|
||||||
{ 0, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -55,7 +55,7 @@ static struct ebus_device_irq je1_1[] = {
|
||||||
*/
|
*/
|
||||||
static struct ebus_system_entry ebus_blacklist[] = {
|
static struct ebus_system_entry ebus_blacklist[] = {
|
||||||
{ "SUNW,JavaEngine1", je1_1 },
|
{ "SUNW,JavaEngine1", je1_1 },
|
||||||
{ 0, 0 }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct ebus_device_irq *ebus_blackp = NULL;
|
static struct ebus_device_irq *ebus_blackp = NULL;
|
||||||
|
@ -233,7 +233,7 @@ void __init fill_ebus_device(int node, struct linux_ebus_device *dev)
|
||||||
ebus_alloc(sizeof(struct linux_ebus_child));
|
ebus_alloc(sizeof(struct linux_ebus_child));
|
||||||
|
|
||||||
child = dev->children;
|
child = dev->children;
|
||||||
child->next = 0;
|
child->next = NULL;
|
||||||
child->parent = dev;
|
child->parent = dev;
|
||||||
child->bus = dev->bus;
|
child->bus = dev->bus;
|
||||||
fill_ebus_child(node, ®s[0], child);
|
fill_ebus_child(node, ®s[0], child);
|
||||||
|
@ -243,7 +243,7 @@ void __init fill_ebus_device(int node, struct linux_ebus_device *dev)
|
||||||
ebus_alloc(sizeof(struct linux_ebus_child));
|
ebus_alloc(sizeof(struct linux_ebus_child));
|
||||||
|
|
||||||
child = child->next;
|
child = child->next;
|
||||||
child->next = 0;
|
child->next = NULL;
|
||||||
child->parent = dev;
|
child->parent = dev;
|
||||||
child->bus = dev->bus;
|
child->bus = dev->bus;
|
||||||
fill_ebus_child(node, ®s[0], child);
|
fill_ebus_child(node, ®s[0], child);
|
||||||
|
@ -275,7 +275,7 @@ void __init ebus_init(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pdev = pci_get_device(PCI_VENDOR_ID_SUN, PCI_DEVICE_ID_SUN_EBUS, 0);
|
pdev = pci_get_device(PCI_VENDOR_ID_SUN, PCI_DEVICE_ID_SUN_EBUS, NULL);
|
||||||
if (!pdev) {
|
if (!pdev) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -284,7 +284,7 @@ void __init ebus_init(void)
|
||||||
|
|
||||||
ebus_chain = ebus = (struct linux_ebus *)
|
ebus_chain = ebus = (struct linux_ebus *)
|
||||||
ebus_alloc(sizeof(struct linux_ebus));
|
ebus_alloc(sizeof(struct linux_ebus));
|
||||||
ebus->next = 0;
|
ebus->next = NULL;
|
||||||
|
|
||||||
while (ebusnd) {
|
while (ebusnd) {
|
||||||
|
|
||||||
|
@ -325,8 +325,8 @@ void __init ebus_init(void)
|
||||||
ebus_alloc(sizeof(struct linux_ebus_device));
|
ebus_alloc(sizeof(struct linux_ebus_device));
|
||||||
|
|
||||||
dev = ebus->devices;
|
dev = ebus->devices;
|
||||||
dev->next = 0;
|
dev->next = NULL;
|
||||||
dev->children = 0;
|
dev->children = NULL;
|
||||||
dev->bus = ebus;
|
dev->bus = ebus;
|
||||||
fill_ebus_device(nd, dev);
|
fill_ebus_device(nd, dev);
|
||||||
|
|
||||||
|
@ -335,8 +335,8 @@ void __init ebus_init(void)
|
||||||
ebus_alloc(sizeof(struct linux_ebus_device));
|
ebus_alloc(sizeof(struct linux_ebus_device));
|
||||||
|
|
||||||
dev = dev->next;
|
dev = dev->next;
|
||||||
dev->next = 0;
|
dev->next = NULL;
|
||||||
dev->children = 0;
|
dev->children = NULL;
|
||||||
dev->bus = ebus;
|
dev->bus = ebus;
|
||||||
fill_ebus_device(nd, dev);
|
fill_ebus_device(nd, dev);
|
||||||
}
|
}
|
||||||
|
@ -353,7 +353,7 @@ void __init ebus_init(void)
|
||||||
ebus->next = (struct linux_ebus *)
|
ebus->next = (struct linux_ebus *)
|
||||||
ebus_alloc(sizeof(struct linux_ebus));
|
ebus_alloc(sizeof(struct linux_ebus));
|
||||||
ebus = ebus->next;
|
ebus = ebus->next;
|
||||||
ebus->next = 0;
|
ebus->next = NULL;
|
||||||
++num_ebus;
|
++num_ebus;
|
||||||
}
|
}
|
||||||
if (pdev)
|
if (pdev)
|
||||||
|
|
|
@ -55,7 +55,7 @@ static int led_read_proc(char *buf, char **start, off_t offset, int count,
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int led_write_proc(struct file *file, const char *buffer,
|
static int led_write_proc(struct file *file, const char __user *buffer,
|
||||||
unsigned long count, void *data)
|
unsigned long count, void *data)
|
||||||
{
|
{
|
||||||
char *buf = NULL;
|
char *buf = NULL;
|
||||||
|
|
|
@ -161,7 +161,7 @@ static struct pcic_sn2list pcic_known_sysnames[] = {
|
||||||
static int pcic0_up;
|
static int pcic0_up;
|
||||||
static struct linux_pcic pcic0;
|
static struct linux_pcic pcic0;
|
||||||
|
|
||||||
void * __iomem pcic_regs;
|
void __iomem *pcic_regs;
|
||||||
volatile int pcic_speculative;
|
volatile int pcic_speculative;
|
||||||
volatile int pcic_trapped;
|
volatile int pcic_trapped;
|
||||||
|
|
||||||
|
|
|
@ -894,7 +894,7 @@ asmlinkage long sunos_sysconf (int name)
|
||||||
ret = ARG_MAX;
|
ret = ARG_MAX;
|
||||||
break;
|
break;
|
||||||
case _SC_CHILD_MAX:
|
case _SC_CHILD_MAX:
|
||||||
ret = CHILD_MAX;
|
ret = -1; /* no limit */
|
||||||
break;
|
break;
|
||||||
case _SC_CLK_TCK:
|
case _SC_CLK_TCK:
|
||||||
ret = HZ;
|
ret = HZ;
|
||||||
|
|
|
@ -49,7 +49,7 @@ DEFINE_SPINLOCK(rtc_lock);
|
||||||
enum sparc_clock_type sp_clock_typ;
|
enum sparc_clock_type sp_clock_typ;
|
||||||
DEFINE_SPINLOCK(mostek_lock);
|
DEFINE_SPINLOCK(mostek_lock);
|
||||||
void __iomem *mstk48t02_regs = NULL;
|
void __iomem *mstk48t02_regs = NULL;
|
||||||
static struct mostek48t08 *mstk48t08_regs = NULL;
|
static struct mostek48t08 __iomem *mstk48t08_regs = NULL;
|
||||||
static int set_rtc_mmss(unsigned long);
|
static int set_rtc_mmss(unsigned long);
|
||||||
static int sbus_do_settimeofday(struct timespec *tv);
|
static int sbus_do_settimeofday(struct timespec *tv);
|
||||||
|
|
||||||
|
@ -342,7 +342,7 @@ static __inline__ void clock_probe(void)
|
||||||
/* XXX r/o attribute is somewhere in r.flags */
|
/* XXX r/o attribute is somewhere in r.flags */
|
||||||
r.flags = clk_reg[0].which_io;
|
r.flags = clk_reg[0].which_io;
|
||||||
r.start = clk_reg[0].phys_addr;
|
r.start = clk_reg[0].phys_addr;
|
||||||
mstk48t08_regs = (struct mostek48t08 *) sbus_ioremap(&r, 0,
|
mstk48t08_regs = sbus_ioremap(&r, 0,
|
||||||
sizeof(struct mostek48t08), "mk48t08");
|
sizeof(struct mostek48t08), "mk48t08");
|
||||||
|
|
||||||
mstk48t02_regs = &mstk48t08_regs->regs;
|
mstk48t02_regs = &mstk48t08_regs->regs;
|
||||||
|
|
|
@ -85,19 +85,9 @@ SECTIONS
|
||||||
}
|
}
|
||||||
_end = . ;
|
_end = . ;
|
||||||
PROVIDE (end = .);
|
PROVIDE (end = .);
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) }
|
/DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) }
|
||||||
|
|
||||||
|
STABS_DEBUG
|
||||||
|
|
||||||
|
DWARF_DEBUG
|
||||||
}
|
}
|
||||||
|
|
|
@ -497,7 +497,7 @@ static void __init sun4c_probe_mmu(void)
|
||||||
patch_kernel_fault_handler();
|
patch_kernel_fault_handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
volatile unsigned long *sun4c_memerr_reg = NULL;
|
volatile unsigned long __iomem *sun4c_memerr_reg = NULL;
|
||||||
|
|
||||||
void __init sun4c_probe_memerr_reg(void)
|
void __init sun4c_probe_memerr_reg(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
|
|
||||||
mainmenu "Linux/UltraSPARC Kernel Configuration"
|
mainmenu "Linux/UltraSPARC Kernel Configuration"
|
||||||
|
|
||||||
|
config SPARC
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config SPARC64
|
config SPARC64
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -17,7 +17,6 @@ CC := $(shell if $(CC) -m64 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then
|
||||||
NEW_GCC := $(call cc-option-yn, -m64 -mcmodel=medlow)
|
NEW_GCC := $(call cc-option-yn, -m64 -mcmodel=medlow)
|
||||||
NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi)
|
NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi)
|
||||||
UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; )
|
UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; )
|
||||||
INLINE_LIMIT := $(call cc-option-yn, -m64 -finline-limit=100000)
|
|
||||||
|
|
||||||
export NEW_GCC
|
export NEW_GCC
|
||||||
|
|
||||||
|
@ -49,10 +48,6 @@ else
|
||||||
AFLAGS += -m64 -mcpu=ultrasparc $(CC_UNDECL)
|
AFLAGS += -m64 -mcpu=ultrasparc $(CC_UNDECL)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(INLINE_LIMIT),y)
|
|
||||||
CFLAGS := $(CFLAGS) -finline-limit=100000
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_MCOUNT),y)
|
ifeq ($(CONFIG_MCOUNT),y)
|
||||||
CFLAGS := $(CFLAGS) -pg
|
CFLAGS := $(CFLAGS) -pg
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -854,7 +854,7 @@ asmlinkage s32 sunos_sysconf (int name)
|
||||||
ret = ARG_MAX;
|
ret = ARG_MAX;
|
||||||
break;
|
break;
|
||||||
case _SC_CHILD_MAX:
|
case _SC_CHILD_MAX:
|
||||||
ret = CHILD_MAX;
|
ret = -1; /* no limit */
|
||||||
break;
|
break;
|
||||||
case _SC_CLK_TCK:
|
case _SC_CLK_TCK:
|
||||||
ret = HZ;
|
ret = HZ;
|
||||||
|
|
|
@ -90,19 +90,9 @@ SECTIONS
|
||||||
}
|
}
|
||||||
_end = . ;
|
_end = . ;
|
||||||
PROVIDE (end = .);
|
PROVIDE (end = .);
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) }
|
/DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) }
|
||||||
|
|
||||||
|
STABS_DEBUG
|
||||||
|
|
||||||
|
DWARF_DEBUG
|
||||||
}
|
}
|
||||||
|
|
|
@ -353,7 +353,7 @@ asmlinkage int solaris_sysconf(int id)
|
||||||
{
|
{
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case SOLARIS_CONFIG_NGROUPS: return NGROUPS_MAX;
|
case SOLARIS_CONFIG_NGROUPS: return NGROUPS_MAX;
|
||||||
case SOLARIS_CONFIG_CHILD_MAX: return CHILD_MAX;
|
case SOLARIS_CONFIG_CHILD_MAX: return -1; /* no limit */
|
||||||
case SOLARIS_CONFIG_OPEN_FILES: return OPEN_MAX;
|
case SOLARIS_CONFIG_OPEN_FILES: return OPEN_MAX;
|
||||||
case SOLARIS_CONFIG_POSIX_VER: return 199309;
|
case SOLARIS_CONFIG_POSIX_VER: return 199309;
|
||||||
case SOLARIS_CONFIG_PAGESIZE: return PAGE_SIZE;
|
case SOLARIS_CONFIG_PAGESIZE: return PAGE_SIZE;
|
||||||
|
|
|
@ -289,6 +289,8 @@ source "arch/um/Kconfig.net"
|
||||||
|
|
||||||
source "drivers/net/Kconfig"
|
source "drivers/net/Kconfig"
|
||||||
|
|
||||||
|
source "drivers/connector/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|
||||||
source "security/Kconfig"
|
source "security/Kconfig"
|
||||||
|
|
|
@ -12,3 +12,7 @@ CHECKFLAGS += -m64
|
||||||
|
|
||||||
ELF_ARCH := i386:x86-64
|
ELF_ARCH := i386:x86-64
|
||||||
ELF_FORMAT := elf64-x86-64
|
ELF_FORMAT := elf64-x86-64
|
||||||
|
|
||||||
|
# Not on all 64-bit distros /lib is a symlink to /lib64. PLD is an example.
|
||||||
|
|
||||||
|
LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib64
|
||||||
|
|
|
@ -6,8 +6,12 @@
|
||||||
#ifndef __SYSDEP_STUB_H
|
#ifndef __SYSDEP_STUB_H
|
||||||
#define __SYSDEP_STUB_H
|
#define __SYSDEP_STUB_H
|
||||||
|
|
||||||
|
#include <sys/mman.h>
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
|
#include "stub-data.h"
|
||||||
|
#include "kern_constants.h"
|
||||||
|
#include "uml-config.h"
|
||||||
|
|
||||||
extern void stub_segv_handler(int sig);
|
extern void stub_segv_handler(int sig);
|
||||||
extern void stub_clone_handler(void);
|
extern void stub_clone_handler(void);
|
||||||
|
@ -76,23 +80,22 @@ static inline long stub_syscall5(long syscall, long arg1, long arg2, long arg3,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline long stub_syscall6(long syscall, long arg1, long arg2, long arg3,
|
|
||||||
long arg4, long arg5, long arg6)
|
|
||||||
{
|
|
||||||
long ret;
|
|
||||||
|
|
||||||
__asm__ volatile ("push %%ebp ; movl %%eax,%%ebp ; movl %1,%%eax ; "
|
|
||||||
"int $0x80 ; pop %%ebp"
|
|
||||||
: "=a" (ret)
|
|
||||||
: "g" (syscall), "b" (arg1), "c" (arg2), "d" (arg3),
|
|
||||||
"S" (arg4), "D" (arg5), "0" (arg6));
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void trap_myself(void)
|
static inline void trap_myself(void)
|
||||||
{
|
{
|
||||||
__asm("int3");
|
__asm("int3");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void remap_stack(int fd, unsigned long offset)
|
||||||
|
{
|
||||||
|
__asm__ volatile ("movl %%eax,%%ebp ; movl %0,%%eax ; int $0x80 ;"
|
||||||
|
"movl %7, %%ebx ; movl %%eax, (%%ebx)"
|
||||||
|
: : "g" (STUB_MMAP_NR), "b" (UML_CONFIG_STUB_DATA),
|
||||||
|
"c" (UM_KERN_PAGE_SIZE),
|
||||||
|
"d" (PROT_READ | PROT_WRITE),
|
||||||
|
"S" (MAP_FIXED | MAP_SHARED), "D" (fd),
|
||||||
|
"a" (offset),
|
||||||
|
"i" (&((struct stub_data *) UML_CONFIG_STUB_DATA)->err)
|
||||||
|
: "memory");
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -6,8 +6,12 @@
|
||||||
#ifndef __SYSDEP_STUB_H
|
#ifndef __SYSDEP_STUB_H
|
||||||
#define __SYSDEP_STUB_H
|
#define __SYSDEP_STUB_H
|
||||||
|
|
||||||
|
#include <sys/mman.h>
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
#include <sysdep/ptrace_user.h>
|
#include <sysdep/ptrace_user.h>
|
||||||
|
#include "stub-data.h"
|
||||||
|
#include "kern_constants.h"
|
||||||
|
#include "uml-config.h"
|
||||||
|
|
||||||
extern void stub_segv_handler(int sig);
|
extern void stub_segv_handler(int sig);
|
||||||
extern void stub_clone_handler(void);
|
extern void stub_clone_handler(void);
|
||||||
|
@ -81,23 +85,23 @@ static inline long stub_syscall5(long syscall, long arg1, long arg2, long arg3,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline long stub_syscall6(long syscall, long arg1, long arg2, long arg3,
|
|
||||||
long arg4, long arg5, long arg6)
|
|
||||||
{
|
|
||||||
long ret;
|
|
||||||
|
|
||||||
__asm__ volatile ("movq %5,%%r10 ; movq %6,%%r8 ; "
|
|
||||||
"movq %7, %%r9; " __syscall : "=a" (ret)
|
|
||||||
: "0" (syscall), "D" (arg1), "S" (arg2), "d" (arg3),
|
|
||||||
"g" (arg4), "g" (arg5), "g" (arg6)
|
|
||||||
: __syscall_clobber, "r10", "r8", "r9" );
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void trap_myself(void)
|
static inline void trap_myself(void)
|
||||||
{
|
{
|
||||||
__asm("int3");
|
__asm("int3");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void remap_stack(long fd, unsigned long offset)
|
||||||
|
{
|
||||||
|
__asm__ volatile ("movq %4,%%r10 ; movq %5,%%r8 ; "
|
||||||
|
"movq %6, %%r9; " __syscall "; movq %7, %%rbx ; "
|
||||||
|
"movq %%rax, (%%rbx)":
|
||||||
|
: "a" (STUB_MMAP_NR), "D" (UML_CONFIG_STUB_DATA),
|
||||||
|
"S" (UM_KERN_PAGE_SIZE),
|
||||||
|
"d" (PROT_READ | PROT_WRITE),
|
||||||
|
"g" (MAP_FIXED | MAP_SHARED), "g" (fd),
|
||||||
|
"g" (offset),
|
||||||
|
"i" (&((struct stub_data *) UML_CONFIG_STUB_DATA)->err)
|
||||||
|
: __syscall_clobber, "r10", "r8", "r9" );
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -18,11 +18,10 @@
|
||||||
* on some systems.
|
* on some systems.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define STUB_DATA(field) (((struct stub_data *) UML_CONFIG_STUB_DATA)->field)
|
|
||||||
|
|
||||||
void __attribute__ ((__section__ (".__syscall_stub")))
|
void __attribute__ ((__section__ (".__syscall_stub")))
|
||||||
stub_clone_handler(void)
|
stub_clone_handler(void)
|
||||||
{
|
{
|
||||||
|
struct stub_data *data = (struct stub_data *) UML_CONFIG_STUB_DATA;
|
||||||
long err;
|
long err;
|
||||||
|
|
||||||
err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD,
|
err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD,
|
||||||
|
@ -35,17 +34,21 @@ stub_clone_handler(void)
|
||||||
if(err)
|
if(err)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
err = stub_syscall3(__NR_setitimer, ITIMER_VIRTUAL,
|
err = stub_syscall3(__NR_setitimer, ITIMER_VIRTUAL,
|
||||||
(long) &STUB_DATA(timer), 0);
|
(long) &data->timer, 0);
|
||||||
if(err)
|
if(err)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
err = stub_syscall6(STUB_MMAP_NR, UML_CONFIG_STUB_DATA,
|
remap_stack(data->fd, data->offset);
|
||||||
UM_KERN_PAGE_SIZE, PROT_READ | PROT_WRITE,
|
goto done;
|
||||||
MAP_FIXED | MAP_SHARED, STUB_DATA(fd),
|
|
||||||
STUB_DATA(offset));
|
|
||||||
out:
|
out:
|
||||||
/* save current result. Parent: pid; child: retcode of mmap */
|
/* save current result.
|
||||||
STUB_DATA(err) = err;
|
* Parent: pid;
|
||||||
|
* child: retcode of mmap already saved and it jumps around this
|
||||||
|
* assignment
|
||||||
|
*/
|
||||||
|
data->err = err;
|
||||||
|
done:
|
||||||
trap_myself();
|
trap_myself();
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,16 +116,16 @@ static int stop_ptraced_child(int pid, void *stack, int exitcode,
|
||||||
if(!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) {
|
if(!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) {
|
||||||
int exit_with = WEXITSTATUS(status);
|
int exit_with = WEXITSTATUS(status);
|
||||||
if (exit_with == 2)
|
if (exit_with == 2)
|
||||||
printk("check_ptrace : child exited with status 2. "
|
printf("check_ptrace : child exited with status 2. "
|
||||||
"Serious trouble happening! Try updating your "
|
"Serious trouble happening! Try updating your "
|
||||||
"host skas patch!\nDisabling SYSEMU support.");
|
"host skas patch!\nDisabling SYSEMU support.");
|
||||||
printk("check_ptrace : child exited with exitcode %d, while "
|
printf("check_ptrace : child exited with exitcode %d, while "
|
||||||
"expecting %d; status 0x%x", exit_with,
|
"expecting %d; status 0x%x", exit_with,
|
||||||
exitcode, status);
|
exitcode, status);
|
||||||
if (mustpanic)
|
if (mustpanic)
|
||||||
panic("\n");
|
panic("\n");
|
||||||
else
|
else
|
||||||
printk("\n");
|
printf("\n");
|
||||||
ret = -1;
|
ret = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ static void __init check_sysemu(void)
|
||||||
void *stack;
|
void *stack;
|
||||||
int pid, n, status, count=0;
|
int pid, n, status, count=0;
|
||||||
|
|
||||||
printk("Checking syscall emulation patch for ptrace...");
|
printf("Checking syscall emulation patch for ptrace...");
|
||||||
sysemu_supported = 0;
|
sysemu_supported = 0;
|
||||||
pid = start_ptraced_child(&stack);
|
pid = start_ptraced_child(&stack);
|
||||||
|
|
||||||
|
@ -207,10 +207,10 @@ static void __init check_sysemu(void)
|
||||||
goto fail_stopped;
|
goto fail_stopped;
|
||||||
|
|
||||||
sysemu_supported = 1;
|
sysemu_supported = 1;
|
||||||
printk("OK\n");
|
printf("OK\n");
|
||||||
set_using_sysemu(!force_sysemu_disabled);
|
set_using_sysemu(!force_sysemu_disabled);
|
||||||
|
|
||||||
printk("Checking advanced syscall emulation patch for ptrace...");
|
printf("Checking advanced syscall emulation patch for ptrace...");
|
||||||
pid = start_ptraced_child(&stack);
|
pid = start_ptraced_child(&stack);
|
||||||
|
|
||||||
if(ptrace(PTRACE_OLDSETOPTIONS, pid, 0,
|
if(ptrace(PTRACE_OLDSETOPTIONS, pid, 0,
|
||||||
|
@ -246,7 +246,7 @@ static void __init check_sysemu(void)
|
||||||
goto fail_stopped;
|
goto fail_stopped;
|
||||||
|
|
||||||
sysemu_supported = 2;
|
sysemu_supported = 2;
|
||||||
printk("OK\n");
|
printf("OK\n");
|
||||||
|
|
||||||
if ( !force_sysemu_disabled )
|
if ( !force_sysemu_disabled )
|
||||||
set_using_sysemu(sysemu_supported);
|
set_using_sysemu(sysemu_supported);
|
||||||
|
@ -255,7 +255,7 @@ static void __init check_sysemu(void)
|
||||||
fail:
|
fail:
|
||||||
stop_ptraced_child(pid, stack, 1, 0);
|
stop_ptraced_child(pid, stack, 1, 0);
|
||||||
fail_stopped:
|
fail_stopped:
|
||||||
printk("missing\n");
|
printf("missing\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init check_ptrace(void)
|
static void __init check_ptrace(void)
|
||||||
|
@ -263,7 +263,7 @@ static void __init check_ptrace(void)
|
||||||
void *stack;
|
void *stack;
|
||||||
int pid, syscall, n, status;
|
int pid, syscall, n, status;
|
||||||
|
|
||||||
printk("Checking that ptrace can change system call numbers...");
|
printf("Checking that ptrace can change system call numbers...");
|
||||||
pid = start_ptraced_child(&stack);
|
pid = start_ptraced_child(&stack);
|
||||||
|
|
||||||
if(ptrace(PTRACE_OLDSETOPTIONS, pid, 0, (void *)PTRACE_O_TRACESYSGOOD) < 0)
|
if(ptrace(PTRACE_OLDSETOPTIONS, pid, 0, (void *)PTRACE_O_TRACESYSGOOD) < 0)
|
||||||
|
@ -292,7 +292,7 @@ static void __init check_ptrace(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stop_ptraced_child(pid, stack, 0, 1);
|
stop_ptraced_child(pid, stack, 0, 1);
|
||||||
printk("OK\n");
|
printf("OK\n");
|
||||||
check_sysemu();
|
check_sysemu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -472,6 +472,8 @@ int can_do_skas(void)
|
||||||
|
|
||||||
int have_devanon = 0;
|
int have_devanon = 0;
|
||||||
|
|
||||||
|
/* Runs on boot kernel stack - already safe to use printk. */
|
||||||
|
|
||||||
void check_devanon(void)
|
void check_devanon(void)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
|
|
@ -34,6 +34,11 @@ EXPORT_SYMBOL(strstr);
|
||||||
int sym(void); \
|
int sym(void); \
|
||||||
EXPORT_SYMBOL(sym);
|
EXPORT_SYMBOL(sym);
|
||||||
|
|
||||||
|
extern void readdir64(void) __attribute__((weak));
|
||||||
|
EXPORT_SYMBOL(readdir64);
|
||||||
|
extern void truncate64(void) __attribute__((weak));
|
||||||
|
EXPORT_SYMBOL(truncate64);
|
||||||
|
|
||||||
#ifdef SUBARCH_i386
|
#ifdef SUBARCH_i386
|
||||||
EXPORT_SYMBOL(vsyscall_ehdr);
|
EXPORT_SYMBOL(vsyscall_ehdr);
|
||||||
EXPORT_SYMBOL(vsyscall_end);
|
EXPORT_SYMBOL(vsyscall_end);
|
||||||
|
|
|
@ -21,11 +21,6 @@ define unprofile
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
||||||
# The stubs and unmap.o can't try to call mcount or update basic block data
|
|
||||||
define unprofile
|
|
||||||
$(patsubst -pg,,$(patsubst -fprofile-arcs -ftest-coverage,,$(1)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
# cmd_make_link checks to see if the $(foo-dir) variable starts with a /. If
|
# cmd_make_link checks to see if the $(foo-dir) variable starts with a /. If
|
||||||
# so, it's considered to be a path relative to $(srcdir) rather than
|
# so, it's considered to be a path relative to $(srcdir) rather than
|
||||||
# $(srcdir)/arch/$(SUBARCH). This is because x86_64 wants to get ldt.c from
|
# $(srcdir)/arch/$(SUBARCH). This is because x86_64 wants to get ldt.c from
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
obj-y = bitops.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \
|
obj-y := bitops.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \
|
||||||
ptrace_user.o semaphore.o signal.o sigcontext.o stub.o stub_segv.o \
|
ptrace_user.o semaphore.o signal.o sigcontext.o syscalls.o sysrq.o \
|
||||||
syscalls.o sysrq.o sys_call_table.o
|
sys_call_table.o
|
||||||
|
|
||||||
|
obj-$(CONFIG_MODE_SKAS) += stub.o stub_segv.o
|
||||||
|
|
||||||
obj-$(CONFIG_HIGHMEM) += highmem.o
|
obj-$(CONFIG_HIGHMEM) += highmem.o
|
||||||
obj-$(CONFIG_MODULES) += module.o
|
obj-$(CONFIG_MODULES) += module.o
|
||||||
|
|
|
@ -6,8 +6,9 @@
|
||||||
|
|
||||||
#XXX: why into lib-y?
|
#XXX: why into lib-y?
|
||||||
lib-y = bitops.o bugs.o csum-partial.o delay.o fault.o ldt.o mem.o memcpy.o \
|
lib-y = bitops.o bugs.o csum-partial.o delay.o fault.o ldt.o mem.o memcpy.o \
|
||||||
ptrace.o ptrace_user.o sigcontext.o signal.o stub.o \
|
ptrace.o ptrace_user.o sigcontext.o signal.o syscalls.o \
|
||||||
stub_segv.o syscalls.o syscall_table.o sysrq.o thunk.o
|
syscall_table.o sysrq.o thunk.o
|
||||||
|
lib-$(CONFIG_MODE_SKAS) += stub.o stub_segv.o
|
||||||
|
|
||||||
obj-y := ksyms.o
|
obj-y := ksyms.o
|
||||||
obj-$(CONFIG_MODULES) += module.o um_module.o
|
obj-$(CONFIG_MODULES) += module.o um_module.o
|
||||||
|
|
|
@ -348,7 +348,7 @@ size_zones(unsigned long *z, unsigned long *h,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Compute holes */
|
/* Compute holes */
|
||||||
w = 0;
|
w = start_pfn;
|
||||||
for (i = 0; i < MAX_NR_ZONES; i++) {
|
for (i = 0; i < MAX_NR_ZONES; i++) {
|
||||||
unsigned long s = w;
|
unsigned long s = w;
|
||||||
w += z[i];
|
w += z[i];
|
||||||
|
|
|
@ -263,7 +263,7 @@ void iounmap(volatile void __iomem *addr)
|
||||||
addr < phys_to_virt(ISA_END_ADDRESS))
|
addr < phys_to_virt(ISA_END_ADDRESS))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
addr = (volatile void *)(PAGE_MASK & (unsigned long __force)addr);
|
addr = (volatile void __iomem *)(PAGE_MASK & (unsigned long __force)addr);
|
||||||
/* Use the vm area unlocked, assuming the caller
|
/* Use the vm area unlocked, assuming the caller
|
||||||
ensures there isn't another iounmap for the same address
|
ensures there isn't another iounmap for the same address
|
||||||
in parallel. Reuse of the virtual address is prevented by
|
in parallel. Reuse of the virtual address is prevented by
|
||||||
|
|
|
@ -11,7 +11,7 @@ obj-y += fixup.o
|
||||||
obj-$(CONFIG_ACPI) += acpi.o
|
obj-$(CONFIG_ACPI) += acpi.o
|
||||||
obj-y += legacy.o irq.o common.o
|
obj-y += legacy.o irq.o common.o
|
||||||
# mmconfig has a 64bit special
|
# mmconfig has a 64bit special
|
||||||
obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o
|
obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o direct.o
|
||||||
|
|
||||||
obj-$(CONFIG_NUMA) += k8-bus.o
|
obj-$(CONFIG_NUMA) += k8-bus.o
|
||||||
|
|
||||||
|
|
|
@ -18,11 +18,11 @@ static DECLARE_BITMAP(fallback_slots, 32);
|
||||||
/* Static virtual mapping of the MMCONFIG aperture */
|
/* Static virtual mapping of the MMCONFIG aperture */
|
||||||
struct mmcfg_virt {
|
struct mmcfg_virt {
|
||||||
struct acpi_table_mcfg_config *cfg;
|
struct acpi_table_mcfg_config *cfg;
|
||||||
char *virt;
|
char __iomem *virt;
|
||||||
};
|
};
|
||||||
static struct mmcfg_virt *pci_mmcfg_virt;
|
static struct mmcfg_virt *pci_mmcfg_virt;
|
||||||
|
|
||||||
static char *get_virt(unsigned int seg, unsigned bus)
|
static char __iomem *get_virt(unsigned int seg, unsigned bus)
|
||||||
{
|
{
|
||||||
int cfg_num = -1;
|
int cfg_num = -1;
|
||||||
struct acpi_table_mcfg_config *cfg;
|
struct acpi_table_mcfg_config *cfg;
|
||||||
|
@ -43,9 +43,9 @@ static char *get_virt(unsigned int seg, unsigned bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *pci_dev_base(unsigned int seg, unsigned int bus, unsigned int devfn)
|
static char __iomem *pci_dev_base(unsigned int seg, unsigned int bus, unsigned int devfn)
|
||||||
{
|
{
|
||||||
char *addr;
|
char __iomem *addr;
|
||||||
if (seg == 0 && bus == 0 && test_bit(PCI_SLOT(devfn), &fallback_slots))
|
if (seg == 0 && bus == 0 && test_bit(PCI_SLOT(devfn), &fallback_slots))
|
||||||
return NULL;
|
return NULL;
|
||||||
addr = get_virt(seg, bus);
|
addr = get_virt(seg, bus);
|
||||||
|
@ -57,7 +57,7 @@ static char *pci_dev_base(unsigned int seg, unsigned int bus, unsigned int devfn
|
||||||
static int pci_mmcfg_read(unsigned int seg, unsigned int bus,
|
static int pci_mmcfg_read(unsigned int seg, unsigned int bus,
|
||||||
unsigned int devfn, int reg, int len, u32 *value)
|
unsigned int devfn, int reg, int len, u32 *value)
|
||||||
{
|
{
|
||||||
char *addr;
|
char __iomem *addr;
|
||||||
|
|
||||||
/* Why do we have this when nobody checks it. How about a BUG()!? -AK */
|
/* Why do we have this when nobody checks it. How about a BUG()!? -AK */
|
||||||
if (unlikely(!value || (bus > 255) || (devfn > 255) || (reg > 4095)))
|
if (unlikely(!value || (bus > 255) || (devfn > 255) || (reg > 4095)))
|
||||||
|
@ -85,7 +85,7 @@ static int pci_mmcfg_read(unsigned int seg, unsigned int bus,
|
||||||
static int pci_mmcfg_write(unsigned int seg, unsigned int bus,
|
static int pci_mmcfg_write(unsigned int seg, unsigned int bus,
|
||||||
unsigned int devfn, int reg, int len, u32 value)
|
unsigned int devfn, int reg, int len, u32 value)
|
||||||
{
|
{
|
||||||
char *addr;
|
char __iomem *addr;
|
||||||
|
|
||||||
/* Why do we have this when nobody checks it. How about a BUG()!? -AK */
|
/* Why do we have this when nobody checks it. How about a BUG()!? -AK */
|
||||||
if (unlikely((bus > 255) || (devfn > 255) || (reg > 4095)))
|
if (unlikely((bus > 255) || (devfn > 255) || (reg > 4095)))
|
||||||
|
@ -127,7 +127,7 @@ static __init void unreachable_devices(void)
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < 32; i++) {
|
for (i = 0; i < 32; i++) {
|
||||||
u32 val1;
|
u32 val1;
|
||||||
char *addr;
|
char __iomem *addr;
|
||||||
|
|
||||||
pci_conf1_read(0, 0, PCI_DEVFN(i,0), 0, 4, &val1);
|
pci_conf1_read(0, 0, PCI_DEVFN(i,0), 0, 4, &val1);
|
||||||
if (val1 == 0xffffffff)
|
if (val1 == 0xffffffff)
|
||||||
|
|
|
@ -442,11 +442,37 @@ error:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Send basic block requests */
|
||||||
|
static int __blk_send_generic(request_queue_t *q, struct gendisk *bd_disk, int cmd, int data)
|
||||||
|
{
|
||||||
|
struct request *rq;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
rq = blk_get_request(q, WRITE, __GFP_WAIT);
|
||||||
|
rq->flags |= REQ_BLOCK_PC;
|
||||||
|
rq->data = NULL;
|
||||||
|
rq->data_len = 0;
|
||||||
|
rq->timeout = BLK_DEFAULT_TIMEOUT;
|
||||||
|
memset(rq->cmd, 0, sizeof(rq->cmd));
|
||||||
|
rq->cmd[0] = cmd;
|
||||||
|
rq->cmd[4] = data;
|
||||||
|
rq->cmd_len = 6;
|
||||||
|
err = blk_execute_rq(q, bd_disk, rq, 0);
|
||||||
|
blk_put_request(rq);
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int blk_send_start_stop(request_queue_t *q, struct gendisk *bd_disk, int data)
|
||||||
|
{
|
||||||
|
return __blk_send_generic(q, bd_disk, GPCMD_START_STOP_UNIT, data);
|
||||||
|
}
|
||||||
|
|
||||||
int scsi_cmd_ioctl(struct file *file, struct gendisk *bd_disk, unsigned int cmd, void __user *arg)
|
int scsi_cmd_ioctl(struct file *file, struct gendisk *bd_disk, unsigned int cmd, void __user *arg)
|
||||||
{
|
{
|
||||||
request_queue_t *q;
|
request_queue_t *q;
|
||||||
struct request *rq;
|
int err;
|
||||||
int close = 0, err;
|
|
||||||
|
|
||||||
q = bd_disk->queue;
|
q = bd_disk->queue;
|
||||||
if (!q)
|
if (!q)
|
||||||
|
@ -564,19 +590,10 @@ int scsi_cmd_ioctl(struct file *file, struct gendisk *bd_disk, unsigned int cmd,
|
||||||
err = sg_scsi_ioctl(file, q, bd_disk, arg);
|
err = sg_scsi_ioctl(file, q, bd_disk, arg);
|
||||||
break;
|
break;
|
||||||
case CDROMCLOSETRAY:
|
case CDROMCLOSETRAY:
|
||||||
close = 1;
|
err = blk_send_start_stop(q, bd_disk, 0x03);
|
||||||
|
break;
|
||||||
case CDROMEJECT:
|
case CDROMEJECT:
|
||||||
rq = blk_get_request(q, WRITE, __GFP_WAIT);
|
err = blk_send_start_stop(q, bd_disk, 0x02);
|
||||||
rq->flags |= REQ_BLOCK_PC;
|
|
||||||
rq->data = NULL;
|
|
||||||
rq->data_len = 0;
|
|
||||||
rq->timeout = BLK_DEFAULT_TIMEOUT;
|
|
||||||
memset(rq->cmd, 0, sizeof(rq->cmd));
|
|
||||||
rq->cmd[0] = GPCMD_START_STOP_UNIT;
|
|
||||||
rq->cmd[4] = 0x02 + (close != 0);
|
|
||||||
rq->cmd_len = 6;
|
|
||||||
err = blk_execute_rq(q, bd_disk, rq, 0);
|
|
||||||
blk_put_request(rq);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
err = -ENOTTY;
|
err = -ENOTTY;
|
||||||
|
|
|
@ -274,8 +274,6 @@ static void acpi_processor_idle(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cx->usage++;
|
|
||||||
|
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
#ifdef CONFIG_HOTPLUG_CPU
|
||||||
/*
|
/*
|
||||||
* Check for P_LVL2_UP flag before entering C2 and above on
|
* Check for P_LVL2_UP flag before entering C2 and above on
|
||||||
|
@ -283,9 +281,12 @@ static void acpi_processor_idle(void)
|
||||||
* detection phase, to work cleanly with logical CPU hotplug.
|
* detection phase, to work cleanly with logical CPU hotplug.
|
||||||
*/
|
*/
|
||||||
if ((cx->type != ACPI_STATE_C1) && (num_online_cpus() > 1) &&
|
if ((cx->type != ACPI_STATE_C1) && (num_online_cpus() > 1) &&
|
||||||
!pr->flags.has_cst && acpi_fadt.plvl2_up)
|
!pr->flags.has_cst && !acpi_fadt.plvl2_up)
|
||||||
cx->type = ACPI_STATE_C1;
|
cx = &pr->power.states[ACPI_STATE_C1];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
cx->usage++;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sleep:
|
* Sleep:
|
||||||
* ------
|
* ------
|
||||||
|
@ -386,6 +387,15 @@ static void acpi_processor_idle(void)
|
||||||
|
|
||||||
next_state = pr->power.state;
|
next_state = pr->power.state;
|
||||||
|
|
||||||
|
#ifdef CONFIG_HOTPLUG_CPU
|
||||||
|
/* Don't do promotion/demotion */
|
||||||
|
if ((cx->type == ACPI_STATE_C1) && (num_online_cpus() > 1) &&
|
||||||
|
!pr->flags.has_cst && !acpi_fadt.plvl2_up) {
|
||||||
|
next_state = cx;
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Promotion?
|
* Promotion?
|
||||||
* ----------
|
* ----------
|
||||||
|
@ -557,7 +567,7 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)
|
||||||
* Check for P_LVL2_UP flag before entering C2 and above on
|
* Check for P_LVL2_UP flag before entering C2 and above on
|
||||||
* an SMP system.
|
* an SMP system.
|
||||||
*/
|
*/
|
||||||
if ((num_online_cpus() > 1) && acpi_fadt.plvl2_up)
|
if ((num_online_cpus() > 1) && !acpi_fadt.plvl2_up)
|
||||||
return_VALUE(-ENODEV);
|
return_VALUE(-ENODEV);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -102,8 +102,8 @@ static int cpu_has_cpufreq(unsigned int cpu)
|
||||||
{
|
{
|
||||||
struct cpufreq_policy policy;
|
struct cpufreq_policy policy;
|
||||||
if (!acpi_thermal_cpufreq_is_init || cpufreq_get_policy(&policy, cpu))
|
if (!acpi_thermal_cpufreq_is_init || cpufreq_get_policy(&policy, cpu))
|
||||||
return -ENODEV;
|
return 0;
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int acpi_thermal_cpufreq_increase(unsigned int cpu)
|
static int acpi_thermal_cpufreq_increase(unsigned int cpu)
|
||||||
|
|
|
@ -84,14 +84,14 @@ acpi_status acpi_ut_allocate_owner_id(acpi_owner_id * owner_id)
|
||||||
|
|
||||||
/* Find a free owner ID */
|
/* Find a free owner ID */
|
||||||
|
|
||||||
for (i = 0; i < 32; i++) {
|
for (i = 0; i < 64; i++) {
|
||||||
if (!(acpi_gbl_owner_id_mask & (1 << i))) {
|
if (!(acpi_gbl_owner_id_mask & (1ULL << i))) {
|
||||||
ACPI_DEBUG_PRINT((ACPI_DB_VALUES,
|
ACPI_DEBUG_PRINT((ACPI_DB_VALUES,
|
||||||
"Current owner_id mask: %8.8X New ID: %2.2X\n",
|
"Current owner_id mask: %16.16LX New ID: %2.2X\n",
|
||||||
acpi_gbl_owner_id_mask,
|
acpi_gbl_owner_id_mask,
|
||||||
(unsigned int)(i + 1)));
|
(unsigned int)(i + 1)));
|
||||||
|
|
||||||
acpi_gbl_owner_id_mask |= (1 << i);
|
acpi_gbl_owner_id_mask |= (1ULL << i);
|
||||||
*owner_id = (acpi_owner_id) (i + 1);
|
*owner_id = (acpi_owner_id) (i + 1);
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
@ -106,7 +106,7 @@ acpi_status acpi_ut_allocate_owner_id(acpi_owner_id * owner_id)
|
||||||
*/
|
*/
|
||||||
*owner_id = 0;
|
*owner_id = 0;
|
||||||
status = AE_OWNER_ID_LIMIT;
|
status = AE_OWNER_ID_LIMIT;
|
||||||
ACPI_REPORT_ERROR(("Could not allocate new owner_id (32 max), AE_OWNER_ID_LIMIT\n"));
|
ACPI_REPORT_ERROR(("Could not allocate new owner_id (64 max), AE_OWNER_ID_LIMIT\n"));
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
(void)acpi_ut_release_mutex(ACPI_MTX_CACHES);
|
(void)acpi_ut_release_mutex(ACPI_MTX_CACHES);
|
||||||
|
@ -123,7 +123,7 @@ acpi_status acpi_ut_allocate_owner_id(acpi_owner_id * owner_id)
|
||||||
* control method or unloading a table. Either way, we would
|
* control method or unloading a table. Either way, we would
|
||||||
* ignore any error anyway.
|
* ignore any error anyway.
|
||||||
*
|
*
|
||||||
* DESCRIPTION: Release a table or method owner ID. Valid IDs are 1 - 32
|
* DESCRIPTION: Release a table or method owner ID. Valid IDs are 1 - 64
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ void acpi_ut_release_owner_id(acpi_owner_id * owner_id_ptr)
|
||||||
|
|
||||||
/* Zero is not a valid owner_iD */
|
/* Zero is not a valid owner_iD */
|
||||||
|
|
||||||
if ((owner_id == 0) || (owner_id > 32)) {
|
if ((owner_id == 0) || (owner_id > 64)) {
|
||||||
ACPI_REPORT_ERROR(("Invalid owner_id: %2.2X\n", owner_id));
|
ACPI_REPORT_ERROR(("Invalid owner_id: %2.2X\n", owner_id));
|
||||||
return_VOID;
|
return_VOID;
|
||||||
}
|
}
|
||||||
|
@ -158,8 +158,8 @@ void acpi_ut_release_owner_id(acpi_owner_id * owner_id_ptr)
|
||||||
|
|
||||||
/* Free the owner ID only if it is valid */
|
/* Free the owner ID only if it is valid */
|
||||||
|
|
||||||
if (acpi_gbl_owner_id_mask & (1 << owner_id)) {
|
if (acpi_gbl_owner_id_mask & (1ULL << owner_id)) {
|
||||||
acpi_gbl_owner_id_mask ^= (1 << owner_id);
|
acpi_gbl_owner_id_mask ^= (1ULL << owner_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
(void)acpi_ut_release_mutex(ACPI_MTX_CACHES);
|
(void)acpi_ut_release_mutex(ACPI_MTX_CACHES);
|
||||||
|
|
|
@ -123,7 +123,7 @@ static int __init adummy_init(void)
|
||||||
}
|
}
|
||||||
memset(adummy_dev, 0, sizeof(struct adummy_dev));
|
memset(adummy_dev, 0, sizeof(struct adummy_dev));
|
||||||
|
|
||||||
atm_dev = atm_dev_register(DEV_LABEL, &adummy_ops, -1, 0);
|
atm_dev = atm_dev_register(DEV_LABEL, &adummy_ops, -1, NULL);
|
||||||
if (!atm_dev) {
|
if (!atm_dev) {
|
||||||
printk(KERN_ERR DEV_LABEL ": atm_dev_register() failed\n");
|
printk(KERN_ERR DEV_LABEL ": atm_dev_register() failed\n");
|
||||||
err = -ENODEV;
|
err = -ENODEV;
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
static struct sysdev_class memory_sysdev_class = {
|
static struct sysdev_class memory_sysdev_class = {
|
||||||
set_kset_name(MEMORY_CLASS_NAME),
|
set_kset_name(MEMORY_CLASS_NAME),
|
||||||
};
|
};
|
||||||
EXPORT_SYMBOL(memory_sysdev_class);
|
|
||||||
|
|
||||||
static char *memory_hotplug_name(struct kset *kset, struct kobject *kobj)
|
static char *memory_hotplug_name(struct kset *kset, struct kobject *kobj)
|
||||||
{
|
{
|
||||||
|
|
|
@ -687,7 +687,7 @@ config NVRAM
|
||||||
|
|
||||||
config RTC
|
config RTC
|
||||||
tristate "Enhanced Real Time Clock Support"
|
tristate "Enhanced Real Time Clock Support"
|
||||||
depends on !PPC32 && !PARISC && !IA64 && !M68K
|
depends on !PPC32 && !PARISC && !IA64 && !M68K && (!SPARC || PCI)
|
||||||
---help---
|
---help---
|
||||||
If you say Y here and create a character special file /dev/rtc with
|
If you say Y here and create a character special file /dev/rtc with
|
||||||
major number 10 and minor number 135 using mknod ("man mknod"), you
|
major number 10 and minor number 135 using mknod ("man mknod"), you
|
||||||
|
@ -735,7 +735,7 @@ config SGI_IP27_RTC
|
||||||
|
|
||||||
config GEN_RTC
|
config GEN_RTC
|
||||||
tristate "Generic /dev/rtc emulation"
|
tristate "Generic /dev/rtc emulation"
|
||||||
depends on RTC!=y && !IA64 && !ARM && !M32R && !SPARC32 && !SPARC64
|
depends on RTC!=y && !IA64 && !ARM && !M32R && !SPARC
|
||||||
---help---
|
---help---
|
||||||
If you say Y here and create a character special file /dev/rtc with
|
If you say Y here and create a character special file /dev/rtc with
|
||||||
major number 10 and minor number 135 using mknod ("man mknod"), you
|
major number 10 and minor number 135 using mknod ("man mknod"), you
|
||||||
|
|
|
@ -1311,7 +1311,7 @@ static void radeon_set_pcigart(drm_radeon_private_t * dev_priv, int on)
|
||||||
|
|
||||||
static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
|
static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
|
||||||
{
|
{
|
||||||
drm_radeon_private_t *dev_priv = dev->dev_private;;
|
drm_radeon_private_t *dev_priv = dev->dev_private;
|
||||||
DRM_DEBUG("\n");
|
DRM_DEBUG("\n");
|
||||||
|
|
||||||
dev_priv->is_pci = init->is_pci;
|
dev_priv->is_pci = init->is_pci;
|
||||||
|
@ -1522,7 +1522,7 @@ static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
|
||||||
|
|
||||||
dev_priv->gart_size = init->gart_size;
|
dev_priv->gart_size = init->gart_size;
|
||||||
dev_priv->gart_vm_start = dev_priv->fb_location
|
dev_priv->gart_vm_start = dev_priv->fb_location
|
||||||
+ RADEON_READ(RADEON_CONFIG_APER_SIZE) * 2;
|
+ RADEON_READ(RADEON_CONFIG_APER_SIZE);
|
||||||
|
|
||||||
#if __OS_HAS_AGP
|
#if __OS_HAS_AGP
|
||||||
if (!dev_priv->is_pci)
|
if (!dev_priv->is_pci)
|
||||||
|
|
|
@ -379,6 +379,7 @@ extern int r300_do_cp_cmdbuf(drm_device_t * dev, DRMFILE filp,
|
||||||
# define RADEON_PLL_WR_EN (1 << 7)
|
# define RADEON_PLL_WR_EN (1 << 7)
|
||||||
#define RADEON_CLOCK_CNTL_INDEX 0x0008
|
#define RADEON_CLOCK_CNTL_INDEX 0x0008
|
||||||
#define RADEON_CONFIG_APER_SIZE 0x0108
|
#define RADEON_CONFIG_APER_SIZE 0x0108
|
||||||
|
#define RADEON_CONFIG_MEMSIZE 0x00f8
|
||||||
#define RADEON_CRTC_OFFSET 0x0224
|
#define RADEON_CRTC_OFFSET 0x0224
|
||||||
#define RADEON_CRTC_OFFSET_CNTL 0x0228
|
#define RADEON_CRTC_OFFSET_CNTL 0x0228
|
||||||
# define RADEON_CRTC_TILE_EN (1 << 15)
|
# define RADEON_CRTC_TILE_EN (1 << 15)
|
||||||
|
|
|
@ -2399,7 +2399,8 @@ static int init_one_smi(int intf_num, struct smi_info **smi)
|
||||||
new_smi->handlers->cleanup(new_smi->si_sm);
|
new_smi->handlers->cleanup(new_smi->si_sm);
|
||||||
kfree(new_smi->si_sm);
|
kfree(new_smi->si_sm);
|
||||||
}
|
}
|
||||||
new_smi->io_cleanup(new_smi);
|
if (new_smi->io_cleanup)
|
||||||
|
new_smi->io_cleanup(new_smi);
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
@ -2518,7 +2519,8 @@ static void __exit cleanup_one_si(struct smi_info *to_clean)
|
||||||
|
|
||||||
kfree(to_clean->si_sm);
|
kfree(to_clean->si_sm);
|
||||||
|
|
||||||
to_clean->io_cleanup(to_clean);
|
if (to_clean->io_cleanup)
|
||||||
|
to_clean->io_cleanup(to_clean);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __exit void cleanup_ipmi_si(void)
|
static __exit void cleanup_ipmi_si(void)
|
||||||
|
|
|
@ -930,8 +930,8 @@ static void kbd_refresh_leds(struct input_handle *handle)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(CONFIG_ALPHA) ||\
|
#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(CONFIG_ALPHA) ||\
|
||||||
defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_SPARC32) ||\
|
defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_SPARC) ||\
|
||||||
defined(CONFIG_SPARC64) || defined(CONFIG_PARISC) || defined(CONFIG_SUPERH) ||\
|
defined(CONFIG_PARISC) || defined(CONFIG_SUPERH) ||\
|
||||||
(defined(CONFIG_ARM) && defined(CONFIG_KEYBOARD_ATKBD) && !defined(CONFIG_ARCH_RPC))
|
(defined(CONFIG_ARM) && defined(CONFIG_KEYBOARD_ATKBD) && !defined(CONFIG_ARCH_RPC))
|
||||||
|
|
||||||
#define HW_RAW(dev) (test_bit(EV_MSC, dev->evbit) && test_bit(MSC_RAW, dev->mscbit) &&\
|
#define HW_RAW(dev) (test_bit(EV_MSC, dev->evbit) && test_bit(MSC_RAW, dev->mscbit) &&\
|
||||||
|
@ -958,7 +958,7 @@ static unsigned short x86_keycodes[256] =
|
||||||
extern int mac_hid_mouse_emulate_buttons(int, int, int);
|
extern int mac_hid_mouse_emulate_buttons(int, int, int);
|
||||||
#endif /* CONFIG_MAC_EMUMOUSEBTN */
|
#endif /* CONFIG_MAC_EMUMOUSEBTN */
|
||||||
|
|
||||||
#if defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64)
|
#ifdef CONFIG_SPARC
|
||||||
static int sparc_l1_a_state = 0;
|
static int sparc_l1_a_state = 0;
|
||||||
extern void sun_do_break(void);
|
extern void sun_do_break(void);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1045,7 +1045,7 @@ static void kbd_keycode(unsigned int keycode, int down,
|
||||||
|
|
||||||
if (keycode == KEY_LEFTALT || keycode == KEY_RIGHTALT)
|
if (keycode == KEY_LEFTALT || keycode == KEY_RIGHTALT)
|
||||||
sysrq_alt = down;
|
sysrq_alt = down;
|
||||||
#if defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64)
|
#ifdef CONFIG_SPARC
|
||||||
if (keycode == KEY_STOP)
|
if (keycode == KEY_STOP)
|
||||||
sparc_l1_a_state = down;
|
sparc_l1_a_state = down;
|
||||||
#endif
|
#endif
|
||||||
|
@ -1072,7 +1072,7 @@ static void kbd_keycode(unsigned int keycode, int down,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64)
|
#ifdef CONFIG_SPARC
|
||||||
if (keycode == KEY_A && sparc_l1_a_state) {
|
if (keycode == KEY_A && sparc_l1_a_state) {
|
||||||
sparc_l1_a_state = 0;
|
sparc_l1_a_state = 0;
|
||||||
sun_do_break();
|
sun_do_break();
|
||||||
|
|
|
@ -69,7 +69,7 @@ typedef struct _MW_ABILITIES {
|
||||||
typedef struct _MW_READWRITE {
|
typedef struct _MW_READWRITE {
|
||||||
unsigned short usDspAddress; /* The dsp address */
|
unsigned short usDspAddress; /* The dsp address */
|
||||||
unsigned long ulDataLength; /* The size in bytes of the data or user buffer */
|
unsigned long ulDataLength; /* The size in bytes of the data or user buffer */
|
||||||
void *pBuf; /* Input:variable sized buffer */
|
void __user *pBuf; /* Input:variable sized buffer */
|
||||||
} MW_READWRITE, *pMW_READWRITE;
|
} MW_READWRITE, *pMW_READWRITE;
|
||||||
|
|
||||||
#define IOCTL_MW_RESET _IO(MWAVE_MINOR,1)
|
#define IOCTL_MW_RESET _IO(MWAVE_MINOR,1)
|
||||||
|
|
|
@ -1444,6 +1444,7 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
|
||||||
dev_link_t *link;
|
dev_link_t *link;
|
||||||
int size;
|
int size;
|
||||||
int rc;
|
int rc;
|
||||||
|
void __user *argp = (void __user *)arg;
|
||||||
#ifdef PCMCIA_DEBUG
|
#ifdef PCMCIA_DEBUG
|
||||||
char *ioctl_names[CM_IOC_MAXNR + 1] = {
|
char *ioctl_names[CM_IOC_MAXNR + 1] = {
|
||||||
[_IOC_NR(CM_IOCGSTATUS)] "CM_IOCGSTATUS",
|
[_IOC_NR(CM_IOCGSTATUS)] "CM_IOCGSTATUS",
|
||||||
|
@ -1481,11 +1482,11 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
|
||||||
_IOC_DIR(cmd), _IOC_READ, _IOC_WRITE, size, cmd);
|
_IOC_DIR(cmd), _IOC_READ, _IOC_WRITE, size, cmd);
|
||||||
|
|
||||||
if (_IOC_DIR(cmd) & _IOC_READ) {
|
if (_IOC_DIR(cmd) & _IOC_READ) {
|
||||||
if (!access_ok(VERIFY_WRITE, (void *)arg, size))
|
if (!access_ok(VERIFY_WRITE, argp, size))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
if (_IOC_DIR(cmd) & _IOC_WRITE) {
|
if (_IOC_DIR(cmd) & _IOC_WRITE) {
|
||||||
if (!access_ok(VERIFY_READ, (void *)arg, size))
|
if (!access_ok(VERIFY_READ, argp, size))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1506,14 +1507,14 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
|
||||||
status |= CM_NO_READER;
|
status |= CM_NO_READER;
|
||||||
if (test_bit(IS_BAD_CARD, &dev->flags))
|
if (test_bit(IS_BAD_CARD, &dev->flags))
|
||||||
status |= CM_BAD_CARD;
|
status |= CM_BAD_CARD;
|
||||||
if (copy_to_user((int *)arg, &status, sizeof(int)))
|
if (copy_to_user(argp, &status, sizeof(int)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
case CM_IOCGATR:
|
case CM_IOCGATR:
|
||||||
DEBUGP(4, dev, "... in CM_IOCGATR\n");
|
DEBUGP(4, dev, "... in CM_IOCGATR\n");
|
||||||
{
|
{
|
||||||
struct atreq *atreq = (struct atreq *) arg;
|
struct atreq __user *atreq = argp;
|
||||||
int tmp;
|
int tmp;
|
||||||
/* allow nonblocking io and being interrupted */
|
/* allow nonblocking io and being interrupted */
|
||||||
if (wait_event_interruptible
|
if (wait_event_interruptible
|
||||||
|
@ -1597,7 +1598,7 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
|
||||||
{
|
{
|
||||||
struct ptsreq krnptsreq;
|
struct ptsreq krnptsreq;
|
||||||
|
|
||||||
if (copy_from_user(&krnptsreq, (struct ptsreq *) arg,
|
if (copy_from_user(&krnptsreq, argp,
|
||||||
sizeof(struct ptsreq)))
|
sizeof(struct ptsreq)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
|
@ -1641,7 +1642,7 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
|
||||||
int old_pc_debug = 0;
|
int old_pc_debug = 0;
|
||||||
|
|
||||||
old_pc_debug = pc_debug;
|
old_pc_debug = pc_debug;
|
||||||
if (copy_from_user(&pc_debug, (int *)arg, sizeof(int)))
|
if (copy_from_user(&pc_debug, argp, sizeof(int)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
if (old_pc_debug != pc_debug)
|
if (old_pc_debug != pc_debug)
|
||||||
|
|
|
@ -419,7 +419,7 @@ vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
|
||||||
while (this_round > 1) {
|
while (this_round > 1) {
|
||||||
unsigned short w;
|
unsigned short w;
|
||||||
|
|
||||||
w = get_unaligned(((const unsigned short *)con_buf0));
|
w = get_unaligned(((unsigned short *)con_buf0));
|
||||||
vcs_scr_writew(vc, w, org++);
|
vcs_scr_writew(vc, w, org++);
|
||||||
con_buf0 += 2;
|
con_buf0 += 2;
|
||||||
this_round -= 2;
|
this_round -= 2;
|
||||||
|
|
|
@ -72,7 +72,7 @@ static __inline__ void booke_wdt_ping(void)
|
||||||
/*
|
/*
|
||||||
* booke_wdt_write:
|
* booke_wdt_write:
|
||||||
*/
|
*/
|
||||||
static ssize_t booke_wdt_write (struct file *file, const char *buf,
|
static ssize_t booke_wdt_write (struct file *file, const char __user *buf,
|
||||||
size_t count, loff_t *ppos)
|
size_t count, loff_t *ppos)
|
||||||
{
|
{
|
||||||
booke_wdt_ping();
|
booke_wdt_ping();
|
||||||
|
@ -92,14 +92,15 @@ static int booke_wdt_ioctl (struct inode *inode, struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
u32 tmp = 0;
|
u32 tmp = 0;
|
||||||
|
u32 __user *p = (u32 __user *)arg;
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case WDIOC_GETSUPPORT:
|
case WDIOC_GETSUPPORT:
|
||||||
if (copy_to_user ((struct watchdog_info *) arg, &ident,
|
if (copy_to_user ((struct watchdog_info __user *) arg, &ident,
|
||||||
sizeof(struct watchdog_info)))
|
sizeof(struct watchdog_info)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
case WDIOC_GETSTATUS:
|
case WDIOC_GETSTATUS:
|
||||||
return put_user(ident.options, (u32 *) arg);
|
return put_user(ident.options, p);
|
||||||
case WDIOC_GETBOOTSTATUS:
|
case WDIOC_GETBOOTSTATUS:
|
||||||
/* XXX: something is clearing TSR */
|
/* XXX: something is clearing TSR */
|
||||||
tmp = mfspr(SPRN_TSR) & TSR_WRS(3);
|
tmp = mfspr(SPRN_TSR) & TSR_WRS(3);
|
||||||
|
@ -109,14 +110,14 @@ static int booke_wdt_ioctl (struct inode *inode, struct file *file,
|
||||||
booke_wdt_ping();
|
booke_wdt_ping();
|
||||||
return 0;
|
return 0;
|
||||||
case WDIOC_SETTIMEOUT:
|
case WDIOC_SETTIMEOUT:
|
||||||
if (get_user(booke_wdt_period, (u32 *) arg))
|
if (get_user(booke_wdt_period, p))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
mtspr(SPRN_TCR, (mfspr(SPRN_TCR)&~WDTP(0))|WDTP(booke_wdt_period));
|
mtspr(SPRN_TCR, (mfspr(SPRN_TCR)&~WDTP(0))|WDTP(booke_wdt_period));
|
||||||
return 0;
|
return 0;
|
||||||
case WDIOC_GETTIMEOUT:
|
case WDIOC_GETTIMEOUT:
|
||||||
return put_user(booke_wdt_period, (u32 *) arg);
|
return put_user(booke_wdt_period, p);
|
||||||
case WDIOC_SETOPTIONS:
|
case WDIOC_SETOPTIONS:
|
||||||
if (get_user(tmp, (u32 *) arg))
|
if (get_user(tmp, p))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (tmp == WDIOS_ENABLECARD) {
|
if (tmp == WDIOS_ENABLECARD) {
|
||||||
booke_wdt_ping();
|
booke_wdt_ping();
|
||||||
|
@ -172,7 +173,7 @@ static int __init booke_wdt_init(void)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
printk (KERN_INFO "PowerPC Book-E Watchdog Timer Loaded\n");
|
printk (KERN_INFO "PowerPC Book-E Watchdog Timer Loaded\n");
|
||||||
ident.firmware_version = cpu_specs[0].pvr_value;
|
ident.firmware_version = cur_cpu_spec->pvr_value;
|
||||||
|
|
||||||
ret = misc_register(&booke_wdt_miscdev);
|
ret = misc_register(&booke_wdt_miscdev);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
|
|
@ -320,7 +320,7 @@ static int
|
||||||
wdrtas_ioctl(struct inode *inode, struct file *file,
|
wdrtas_ioctl(struct inode *inode, struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
int __user *argp = (void *)arg;
|
int __user *argp = (void __user *)arg;
|
||||||
int i;
|
int i;
|
||||||
static struct watchdog_info wdinfo = {
|
static struct watchdog_info wdinfo = {
|
||||||
.options = WDRTAS_SUPPORTED_MASK,
|
.options = WDRTAS_SUPPORTED_MASK,
|
||||||
|
|
|
@ -26,7 +26,7 @@ comment "FC4 drivers"
|
||||||
|
|
||||||
config FC4_SOC
|
config FC4_SOC
|
||||||
tristate "Sun SOC/Sbus"
|
tristate "Sun SOC/Sbus"
|
||||||
depends on FC4!=n && (SPARC32 || SPARC64)
|
depends on FC4!=n && SPARC
|
||||||
help
|
help
|
||||||
Serial Optical Channel is an interface card with one or two Fibre
|
Serial Optical Channel is an interface card with one or two Fibre
|
||||||
Optic ports, each of which can be connected to a disk array. Note
|
Optic ports, each of which can be connected to a disk array. Note
|
||||||
|
@ -38,7 +38,7 @@ config FC4_SOC
|
||||||
|
|
||||||
config FC4_SOCAL
|
config FC4_SOCAL
|
||||||
tristate "Sun SOC+ (aka SOCAL)"
|
tristate "Sun SOC+ (aka SOCAL)"
|
||||||
depends on FC4!=n && (SPARC32 || SPARC64)
|
depends on FC4!=n && SPARC
|
||||||
---help---
|
---help---
|
||||||
Serial Optical Channel Plus is an interface card with up to two
|
Serial Optical Channel Plus is an interface card with up to two
|
||||||
Fibre Optic ports. This card supports FC Arbitrated Loop (usually
|
Fibre Optic ports. This card supports FC Arbitrated Loop (usually
|
||||||
|
@ -62,7 +62,7 @@ config SCSI_PLUTO
|
||||||
be called pluto.
|
be called pluto.
|
||||||
|
|
||||||
config SCSI_FCAL
|
config SCSI_FCAL
|
||||||
tristate "Sun Enterprise Network Array (A5000 and EX500)" if SPARC32 || SPARC64
|
tristate "Sun Enterprise Network Array (A5000 and EX500)" if SPARC
|
||||||
depends on FC4!=n && SCSI
|
depends on FC4!=n && SCSI
|
||||||
help
|
help
|
||||||
This driver drives FC-AL disks connected through a Fibre Channel
|
This driver drives FC-AL disks connected through a Fibre Channel
|
||||||
|
@ -75,7 +75,7 @@ config SCSI_FCAL
|
||||||
|
|
||||||
config SCSI_FCAL
|
config SCSI_FCAL
|
||||||
prompt "Generic FC-AL disk driver"
|
prompt "Generic FC-AL disk driver"
|
||||||
depends on FC4!=n && SCSI && !SPARC32 && !SPARC64
|
depends on FC4!=n && SCSI && !SPARC
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
|
|
@ -105,8 +105,8 @@ static int create_packet(void *data, size_t length)
|
||||||
int ordernum = 0;
|
int ordernum = 0;
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
unsigned int packet_array_size = 0;
|
unsigned int packet_array_size = 0;
|
||||||
void **invalid_addr_packet_array = 0;
|
void **invalid_addr_packet_array = NULL;
|
||||||
void *packet_data_temp_buf = 0;
|
void *packet_data_temp_buf = NULL;
|
||||||
unsigned int idx = 0;
|
unsigned int idx = 0;
|
||||||
|
|
||||||
pr_debug("create_packet: entry \n");
|
pr_debug("create_packet: entry \n");
|
||||||
|
@ -178,7 +178,7 @@ static int create_packet(void *data, size_t length)
|
||||||
packet_data_temp_buf),
|
packet_data_temp_buf),
|
||||||
allocation_floor);
|
allocation_floor);
|
||||||
invalid_addr_packet_array[idx++] = packet_data_temp_buf;
|
invalid_addr_packet_array[idx++] = packet_data_temp_buf;
|
||||||
packet_data_temp_buf = 0;
|
packet_data_temp_buf = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
spin_lock(&rbu_data.lock);
|
spin_lock(&rbu_data.lock);
|
||||||
|
|
|
@ -529,14 +529,15 @@ mv64xxx_i2c_probe(struct platform_device *pd)
|
||||||
i2c_set_adapdata(&drv_data->adapter, drv_data);
|
i2c_set_adapdata(&drv_data->adapter, drv_data);
|
||||||
|
|
||||||
if (request_irq(drv_data->irq, mv64xxx_i2c_intr, 0,
|
if (request_irq(drv_data->irq, mv64xxx_i2c_intr, 0,
|
||||||
MV64XXX_I2C_CTLR_NAME, drv_data)) {
|
MV64XXX_I2C_CTLR_NAME, drv_data)) {
|
||||||
|
dev_err(&drv_data->adapter.dev,
|
||||||
dev_err(dev, "mv64xxx: Can't register intr handler "
|
"mv64xxx: Can't register intr handler irq: %d\n",
|
||||||
"irq: %d\n", drv_data->irq);
|
drv_data->irq);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto exit_unmap_regs;
|
goto exit_unmap_regs;
|
||||||
} else if ((rc = i2c_add_adapter(&drv_data->adapter)) != 0) {
|
} else if ((rc = i2c_add_adapter(&drv_data->adapter)) != 0) {
|
||||||
dev_err(dev, "mv64xxx: Can't add i2c adapter, rc: %d\n", -rc);
|
dev_err(&drv_data->adapter.dev,
|
||||||
|
"mv64xxx: Can't add i2c adapter, rc: %d\n", -rc);
|
||||||
goto exit_free_irq;
|
goto exit_free_irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -807,14 +807,6 @@ config BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
|
||||||
depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX
|
depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config BLK_DEV_IDE_AU1XXX_BURSTABLE_ON
|
|
||||||
bool "Enable burstable Mode on DbDMA"
|
|
||||||
default false
|
|
||||||
depends BLK_DEV_IDE_AU1XXX
|
|
||||||
help
|
|
||||||
This option enable the burstable Flag on DbDMA controller
|
|
||||||
(cf. "AMD Alchemy 'Au1200' Processor Data Book - PRELIMINARY").
|
|
||||||
|
|
||||||
config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ
|
config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ
|
||||||
int "Maximum transfer size (KB) per request (up to 128)"
|
int "Maximum transfer size (KB) per request (up to 128)"
|
||||||
default "128"
|
default "128"
|
||||||
|
@ -940,7 +932,7 @@ config BLK_DEV_Q40IDE
|
||||||
|
|
||||||
config BLK_DEV_MPC8xx_IDE
|
config BLK_DEV_MPC8xx_IDE
|
||||||
bool "MPC8xx IDE support"
|
bool "MPC8xx IDE support"
|
||||||
depends on 8xx
|
depends on 8xx && IDE=y && BLK_DEV_IDE=y
|
||||||
help
|
help
|
||||||
This option provides support for IDE on Motorola MPC8xx Systems.
|
This option provides support for IDE on Motorola MPC8xx Systems.
|
||||||
Please see 'Type of MPC8xx IDE interface' for details.
|
Please see 'Type of MPC8xx IDE interface' for details.
|
||||||
|
|
|
@ -1292,7 +1292,6 @@ static ide_startstop_t cdrom_start_seek (ide_drive_t *drive, unsigned int block)
|
||||||
struct cdrom_info *info = drive->driver_data;
|
struct cdrom_info *info = drive->driver_data;
|
||||||
|
|
||||||
info->dma = 0;
|
info->dma = 0;
|
||||||
info->cmd = 0;
|
|
||||||
info->start_seek = jiffies;
|
info->start_seek = jiffies;
|
||||||
return cdrom_start_packet_command(drive, 0, cdrom_start_seek_continuation);
|
return cdrom_start_packet_command(drive, 0, cdrom_start_seek_continuation);
|
||||||
}
|
}
|
||||||
|
@ -1344,8 +1343,6 @@ static ide_startstop_t cdrom_start_read (ide_drive_t *drive, unsigned int block)
|
||||||
(rq->nr_sectors & (sectors_per_frame - 1)))
|
(rq->nr_sectors & (sectors_per_frame - 1)))
|
||||||
info->dma = 0;
|
info->dma = 0;
|
||||||
|
|
||||||
info->cmd = READ;
|
|
||||||
|
|
||||||
/* Start sending the read request to the drive. */
|
/* Start sending the read request to the drive. */
|
||||||
return cdrom_start_packet_command(drive, 32768, cdrom_start_read_continuation);
|
return cdrom_start_packet_command(drive, 32768, cdrom_start_read_continuation);
|
||||||
}
|
}
|
||||||
|
@ -1484,7 +1481,6 @@ static ide_startstop_t cdrom_do_packet_command (ide_drive_t *drive)
|
||||||
struct cdrom_info *info = drive->driver_data;
|
struct cdrom_info *info = drive->driver_data;
|
||||||
|
|
||||||
info->dma = 0;
|
info->dma = 0;
|
||||||
info->cmd = 0;
|
|
||||||
rq->flags &= ~REQ_FAILED;
|
rq->flags &= ~REQ_FAILED;
|
||||||
len = rq->data_len;
|
len = rq->data_len;
|
||||||
|
|
||||||
|
@ -1891,7 +1887,6 @@ static ide_startstop_t cdrom_start_write(ide_drive_t *drive, struct request *rq)
|
||||||
/* use dma, if possible. we don't need to check more, since we
|
/* use dma, if possible. we don't need to check more, since we
|
||||||
* know that the transfer is always (at least!) frame aligned */
|
* know that the transfer is always (at least!) frame aligned */
|
||||||
info->dma = drive->using_dma ? 1 : 0;
|
info->dma = drive->using_dma ? 1 : 0;
|
||||||
info->cmd = WRITE;
|
|
||||||
|
|
||||||
info->devinfo.media_written = 1;
|
info->devinfo.media_written = 1;
|
||||||
|
|
||||||
|
@ -1916,7 +1911,6 @@ static ide_startstop_t cdrom_do_block_pc(ide_drive_t *drive, struct request *rq)
|
||||||
rq->flags |= REQ_QUIET;
|
rq->flags |= REQ_QUIET;
|
||||||
|
|
||||||
info->dma = 0;
|
info->dma = 0;
|
||||||
info->cmd = 0;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* sg request
|
* sg request
|
||||||
|
@ -1925,7 +1919,6 @@ static ide_startstop_t cdrom_do_block_pc(ide_drive_t *drive, struct request *rq)
|
||||||
int mask = drive->queue->dma_alignment;
|
int mask = drive->queue->dma_alignment;
|
||||||
unsigned long addr = (unsigned long) page_address(bio_page(rq->bio));
|
unsigned long addr = (unsigned long) page_address(bio_page(rq->bio));
|
||||||
|
|
||||||
info->cmd = rq_data_dir(rq);
|
|
||||||
info->dma = drive->using_dma;
|
info->dma = drive->using_dma;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -480,7 +480,6 @@ struct cdrom_info {
|
||||||
|
|
||||||
struct request request_sense_request;
|
struct request request_sense_request;
|
||||||
int dma;
|
int dma;
|
||||||
int cmd;
|
|
||||||
unsigned long last_block;
|
unsigned long last_block;
|
||||||
unsigned long start_seek;
|
unsigned long start_seek;
|
||||||
/* Buffer to hold mechanism status and changer slot table. */
|
/* Buffer to hold mechanism status and changer slot table. */
|
||||||
|
|
|
@ -1034,12 +1034,12 @@ static int ide_disk_remove(struct device *dev)
|
||||||
struct ide_disk_obj *idkp = drive->driver_data;
|
struct ide_disk_obj *idkp = drive->driver_data;
|
||||||
struct gendisk *g = idkp->disk;
|
struct gendisk *g = idkp->disk;
|
||||||
|
|
||||||
ide_cacheflush_p(drive);
|
|
||||||
|
|
||||||
ide_unregister_subdriver(drive, idkp->driver);
|
ide_unregister_subdriver(drive, idkp->driver);
|
||||||
|
|
||||||
del_gendisk(g);
|
del_gendisk(g);
|
||||||
|
|
||||||
|
ide_cacheflush_p(drive);
|
||||||
|
|
||||||
ide_disk_put(idkp);
|
ide_disk_put(idkp);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -90,11 +90,6 @@
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
||||||
struct drive_list_entry {
|
|
||||||
const char *id_model;
|
|
||||||
const char *id_firmware;
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct drive_list_entry drive_whitelist [] = {
|
static const struct drive_list_entry drive_whitelist [] = {
|
||||||
|
|
||||||
{ "Micropolis 2112A" , "ALL" },
|
{ "Micropolis 2112A" , "ALL" },
|
||||||
|
@ -139,7 +134,7 @@ static const struct drive_list_entry drive_blacklist [] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* in_drive_list - look for drive in black/white list
|
* ide_in_drive_list - look for drive in black/white list
|
||||||
* @id: drive identifier
|
* @id: drive identifier
|
||||||
* @drive_table: list to inspect
|
* @drive_table: list to inspect
|
||||||
*
|
*
|
||||||
|
@ -147,7 +142,7 @@ static const struct drive_list_entry drive_blacklist [] = {
|
||||||
* Returns 1 if the drive is found in the table.
|
* Returns 1 if the drive is found in the table.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int in_drive_list(struct hd_driveid *id, const struct drive_list_entry *drive_table)
|
int ide_in_drive_list(struct hd_driveid *id, const struct drive_list_entry *drive_table)
|
||||||
{
|
{
|
||||||
for ( ; drive_table->id_model ; drive_table++)
|
for ( ; drive_table->id_model ; drive_table++)
|
||||||
if ((!strcmp(drive_table->id_model, id->model)) &&
|
if ((!strcmp(drive_table->id_model, id->model)) &&
|
||||||
|
@ -157,6 +152,8 @@ static int in_drive_list(struct hd_driveid *id, const struct drive_list_entry *d
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EXPORT_SYMBOL_GPL(ide_in_drive_list);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ide_dma_intr - IDE DMA interrupt handler
|
* ide_dma_intr - IDE DMA interrupt handler
|
||||||
* @drive: the drive the interrupt is for
|
* @drive: the drive the interrupt is for
|
||||||
|
@ -663,7 +660,7 @@ int __ide_dma_bad_drive (ide_drive_t *drive)
|
||||||
{
|
{
|
||||||
struct hd_driveid *id = drive->id;
|
struct hd_driveid *id = drive->id;
|
||||||
|
|
||||||
int blacklist = in_drive_list(id, drive_blacklist);
|
int blacklist = ide_in_drive_list(id, drive_blacklist);
|
||||||
if (blacklist) {
|
if (blacklist) {
|
||||||
printk(KERN_WARNING "%s: Disabling (U)DMA for %s (blacklisted)\n",
|
printk(KERN_WARNING "%s: Disabling (U)DMA for %s (blacklisted)\n",
|
||||||
drive->name, id->model);
|
drive->name, id->model);
|
||||||
|
@ -677,7 +674,7 @@ EXPORT_SYMBOL(__ide_dma_bad_drive);
|
||||||
int __ide_dma_good_drive (ide_drive_t *drive)
|
int __ide_dma_good_drive (ide_drive_t *drive)
|
||||||
{
|
{
|
||||||
struct hd_driveid *id = drive->id;
|
struct hd_driveid *id = drive->id;
|
||||||
return in_drive_list(id, drive_whitelist);
|
return ide_in_drive_list(id, drive_whitelist);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(__ide_dma_good_drive);
|
EXPORT_SYMBOL(__ide_dma_good_drive);
|
||||||
|
|
|
@ -1 +1,4 @@
|
||||||
obj-$(CONFIG_BLK_DEV_IDE_SWARM) += swarm.o
|
obj-$(CONFIG_BLK_DEV_IDE_SWARM) += swarm.o
|
||||||
|
obj-$(CONFIG_BLK_DEV_IDE_AU1XXX) += au1xxx-ide.o
|
||||||
|
|
||||||
|
EXTRA_CFLAGS := -Idrivers/ide
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -622,12 +622,18 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev, ide_pci_device_t * d)
|
||||||
ide_hwif_t *hwif;
|
ide_hwif_t *hwif;
|
||||||
int h;
|
int h;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Find an empty HWIF; if none available, return -ENOMEM.
|
||||||
|
*/
|
||||||
for (h = 0; h < MAX_HWIFS; ++h) {
|
for (h = 0; h < MAX_HWIFS; ++h) {
|
||||||
hwif = &ide_hwifs[h];
|
hwif = &ide_hwifs[h];
|
||||||
/* Find an empty HWIF */
|
|
||||||
if (hwif->chipset == ide_unknown)
|
if (hwif->chipset == ide_unknown)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (h == MAX_HWIFS) {
|
||||||
|
printk(KERN_ERR "%s: too many IDE interfaces, no room in table\n", d->name);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
/* Get the CmdBlk and CtrlBlk Base Registers */
|
/* Get the CmdBlk and CtrlBlk Base Registers */
|
||||||
base = pci_resource_start(dev, 0) + IOC4_CMD_OFFSET;
|
base = pci_resource_start(dev, 0) + IOC4_CMD_OFFSET;
|
||||||
|
|
|
@ -80,6 +80,7 @@ static struct via_isa_bridge {
|
||||||
u16 flags;
|
u16 flags;
|
||||||
} via_isa_bridges[] = {
|
} via_isa_bridges[] = {
|
||||||
{ "vt6410", PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
{ "vt6410", PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
||||||
|
{ "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
||||||
{ "vt8237", PCI_DEVICE_ID_VIA_8237, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
{ "vt8237", PCI_DEVICE_ID_VIA_8237, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
||||||
{ "vt8235", PCI_DEVICE_ID_VIA_8235, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
{ "vt8235", PCI_DEVICE_ID_VIA_8235, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
||||||
{ "vt8233a", PCI_DEVICE_ID_VIA_8233A, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
{ "vt8233a", PCI_DEVICE_ID_VIA_8233A, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
||||||
|
|
|
@ -41,6 +41,7 @@ struct hpsb_host {
|
||||||
/* this nodes state */
|
/* this nodes state */
|
||||||
unsigned in_bus_reset:1;
|
unsigned in_bus_reset:1;
|
||||||
unsigned is_shutdown:1;
|
unsigned is_shutdown:1;
|
||||||
|
unsigned resume_packet_sent:1;
|
||||||
|
|
||||||
/* this nodes' duties on the bus */
|
/* this nodes' duties on the bus */
|
||||||
unsigned is_root:1;
|
unsigned is_root:1;
|
||||||
|
|
|
@ -1349,6 +1349,33 @@ static void nodemgr_update_pdrv(struct node_entry *ne)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Write the BROADCAST_CHANNEL as per IEEE1394a 8.3.2.3.11 and 8.4.2.3. This
|
||||||
|
* seems like an optional service but in the end it is practically mandatory
|
||||||
|
* as a consequence of these clauses.
|
||||||
|
*
|
||||||
|
* Note that we cannot do a broadcast write to all nodes at once because some
|
||||||
|
* pre-1394a devices would hang. */
|
||||||
|
static void nodemgr_irm_write_bc(struct node_entry *ne, int generation)
|
||||||
|
{
|
||||||
|
const u64 bc_addr = (CSR_REGISTER_BASE | CSR_BROADCAST_CHANNEL);
|
||||||
|
quadlet_t bc_remote, bc_local;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (!ne->host->is_irm || ne->generation != generation ||
|
||||||
|
ne->nodeid == ne->host->node_id)
|
||||||
|
return;
|
||||||
|
|
||||||
|
bc_local = cpu_to_be32(ne->host->csr.broadcast_channel);
|
||||||
|
|
||||||
|
/* Check if the register is implemented and 1394a compliant. */
|
||||||
|
ret = hpsb_read(ne->host, ne->nodeid, generation, bc_addr, &bc_remote,
|
||||||
|
sizeof(bc_remote));
|
||||||
|
if (!ret && bc_remote & cpu_to_be32(0x80000000) &&
|
||||||
|
bc_remote != bc_local)
|
||||||
|
hpsb_node_write(ne, bc_addr, &bc_local, sizeof(bc_local));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void nodemgr_probe_ne(struct host_info *hi, struct node_entry *ne, int generation)
|
static void nodemgr_probe_ne(struct host_info *hi, struct node_entry *ne, int generation)
|
||||||
{
|
{
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
|
@ -1360,6 +1387,8 @@ static void nodemgr_probe_ne(struct host_info *hi, struct node_entry *ne, int ge
|
||||||
if (!dev)
|
if (!dev)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
nodemgr_irm_write_bc(ne, generation);
|
||||||
|
|
||||||
/* If "needs_probe", then this is either a new or changed node we
|
/* If "needs_probe", then this is either a new or changed node we
|
||||||
* rescan totally. If the generation matches for an existing node
|
* rescan totally. If the generation matches for an existing node
|
||||||
* (one that existed prior to the bus reset) we send update calls
|
* (one that existed prior to the bus reset) we send update calls
|
||||||
|
@ -1413,9 +1442,25 @@ static void nodemgr_node_probe(struct host_info *hi, int generation)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Because we are a 1394a-2000 compliant IRM, we need to inform all the other
|
static int nodemgr_send_resume_packet(struct hpsb_host *host)
|
||||||
* nodes of the broadcast channel. (Really we're only setting the validity
|
{
|
||||||
* bit). Other IRM responsibilities go in here as well. */
|
struct hpsb_packet *packet;
|
||||||
|
int ret = 1;
|
||||||
|
|
||||||
|
packet = hpsb_make_phypacket(host,
|
||||||
|
0x003c0000 | NODEID_TO_NODE(host->node_id) << 24);
|
||||||
|
if (packet) {
|
||||||
|
packet->no_waiter = 1;
|
||||||
|
packet->generation = get_hpsb_generation(host);
|
||||||
|
ret = hpsb_send_packet(packet);
|
||||||
|
}
|
||||||
|
if (ret)
|
||||||
|
HPSB_WARN("fw-host%d: Failed to broadcast resume packet",
|
||||||
|
host->id);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Perform a few high-level IRM responsibilities. */
|
||||||
static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles)
|
static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles)
|
||||||
{
|
{
|
||||||
quadlet_t bc;
|
quadlet_t bc;
|
||||||
|
@ -1424,13 +1469,8 @@ static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles)
|
||||||
if (!host->is_irm || host->irm_id == (nodeid_t)-1)
|
if (!host->is_irm || host->irm_id == (nodeid_t)-1)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
host->csr.broadcast_channel |= 0x40000000; /* set validity bit */
|
/* We are a 1394a-2000 compliant IRM. Set the validity bit. */
|
||||||
|
host->csr.broadcast_channel |= 0x40000000;
|
||||||
bc = cpu_to_be32(host->csr.broadcast_channel);
|
|
||||||
|
|
||||||
hpsb_write(host, LOCAL_BUS | ALL_NODES, get_hpsb_generation(host),
|
|
||||||
(CSR_REGISTER_BASE | CSR_BROADCAST_CHANNEL),
|
|
||||||
&bc, sizeof(quadlet_t));
|
|
||||||
|
|
||||||
/* If there is no bus manager then we should set the root node's
|
/* If there is no bus manager then we should set the root node's
|
||||||
* force_root bit to promote bus stability per the 1394
|
* force_root bit to promote bus stability per the 1394
|
||||||
|
@ -1463,6 +1503,13 @@ static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Some devices suspend their ports while being connected to an inactive
|
||||||
|
* host adapter, i.e. if connected before the low-level driver is
|
||||||
|
* loaded. They become visible either when physically unplugged and
|
||||||
|
* replugged, or when receiving a resume packet. Send one once. */
|
||||||
|
if (!host->resume_packet_sent && !nodemgr_send_resume_packet(host))
|
||||||
|
host->resume_packet_sent = 1;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -172,7 +172,7 @@ static int warrior_connect(struct serio *serio, struct serio_driver *drv)
|
||||||
input_set_abs_params(input_dev, ABS_Y, -64, 64, 0, 8);
|
input_set_abs_params(input_dev, ABS_Y, -64, 64, 0, 8);
|
||||||
input_set_abs_params(input_dev, ABS_THROTTLE, -112, 112, 0, 0);
|
input_set_abs_params(input_dev, ABS_THROTTLE, -112, 112, 0, 0);
|
||||||
input_set_abs_params(input_dev, ABS_HAT0X, -1, 1, 0, 0);
|
input_set_abs_params(input_dev, ABS_HAT0X, -1, 1, 0, 0);
|
||||||
input_set_abs_params(input_dev, ABS_HAT0X, -1, 1, 0, 0);
|
input_set_abs_params(input_dev, ABS_HAT0Y, -1, 1, 0, 0);
|
||||||
|
|
||||||
serio_set_drvdata(serio, warrior);
|
serio_set_drvdata(serio, warrior);
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ config INPUT_PCSPKR
|
||||||
|
|
||||||
config INPUT_SPARCSPKR
|
config INPUT_SPARCSPKR
|
||||||
tristate "SPARC Speaker support"
|
tristate "SPARC Speaker support"
|
||||||
depends on PCI && (SPARC32 || SPARC64)
|
depends on PCI && SPARC
|
||||||
help
|
help
|
||||||
Say Y here if you want the standard Speaker on Sparc PCI systems
|
Say Y here if you want the standard Speaker on Sparc PCI systems
|
||||||
to be used for bells and whistles.
|
to be used for bells and whistles.
|
||||||
|
|
|
@ -320,7 +320,7 @@ static struct dmi_system_id dmi_ids[] = {
|
||||||
},
|
},
|
||||||
.driver_data = keymap_acer_aspire_1500
|
.driver_data = keymap_acer_aspire_1500
|
||||||
},
|
},
|
||||||
{ 0, }
|
{ NULL, }
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init select_keymap(void)
|
static int __init select_keymap(void)
|
||||||
|
|
|
@ -42,7 +42,7 @@ static struct alps_model_info alps_model_data[] = {
|
||||||
{ { 0x53, 0x02, 0x14 }, 0xf8, 0xf8, 0 },
|
{ { 0x53, 0x02, 0x14 }, 0xf8, 0xf8, 0 },
|
||||||
{ { 0x63, 0x02, 0x0a }, 0xf8, 0xf8, 0 },
|
{ { 0x63, 0x02, 0x0a }, 0xf8, 0xf8, 0 },
|
||||||
{ { 0x63, 0x02, 0x14 }, 0xf8, 0xf8, 0 },
|
{ { 0x63, 0x02, 0x14 }, 0xf8, 0xf8, 0 },
|
||||||
{ { 0x63, 0x02, 0x28 }, 0xf8, 0xf8, 0 },
|
{ { 0x63, 0x02, 0x28 }, 0xf8, 0xf8, ALPS_FW_BK_2 }, /* Fujitsu Siemens S6010 */
|
||||||
{ { 0x63, 0x02, 0x3c }, 0x8f, 0x8f, ALPS_WHEEL }, /* Toshiba Satellite S2400-103 */
|
{ { 0x63, 0x02, 0x3c }, 0x8f, 0x8f, ALPS_WHEEL }, /* Toshiba Satellite S2400-103 */
|
||||||
{ { 0x63, 0x02, 0x50 }, 0xef, 0xef, ALPS_FW_BK_1 }, /* NEC Versa L320 */
|
{ { 0x63, 0x02, 0x50 }, 0xef, 0xef, ALPS_FW_BK_1 }, /* NEC Versa L320 */
|
||||||
{ { 0x63, 0x02, 0x64 }, 0xf8, 0xf8, 0 },
|
{ { 0x63, 0x02, 0x64 }, 0xf8, 0xf8, 0 },
|
||||||
|
|
|
@ -95,7 +95,7 @@ static void sermouse_process_msc(struct sermouse *sermouse, signed char data, st
|
||||||
|
|
||||||
input_sync(dev);
|
input_sync(dev);
|
||||||
|
|
||||||
if (++sermouse->count == (5 - ((sermouse->type == SERIO_SUN) << 1)))
|
if (++sermouse->count == 5)
|
||||||
sermouse->count = 0;
|
sermouse->count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#include "i8042-ip22io.h"
|
#include "i8042-ip22io.h"
|
||||||
#elif defined(CONFIG_PPC)
|
#elif defined(CONFIG_PPC)
|
||||||
#include "i8042-ppcio.h"
|
#include "i8042-ppcio.h"
|
||||||
#elif defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64)
|
#elif defined(CONFIG_SPARC)
|
||||||
#include "i8042-sparcio.h"
|
#include "i8042-sparcio.h"
|
||||||
#elif defined(CONFIG_X86) || defined(CONFIG_IA64)
|
#elif defined(CONFIG_X86) || defined(CONFIG_IA64)
|
||||||
#include "i8042-x86ia64io.h"
|
#include "i8042-x86ia64io.h"
|
||||||
|
|
|
@ -933,7 +933,7 @@ static void do_monitor_cpu_combined(void)
|
||||||
if (state0->overtemp > 0) {
|
if (state0->overtemp > 0) {
|
||||||
state0->rpm = state0->mpu.rmaxn_exhaust_fan;
|
state0->rpm = state0->mpu.rmaxn_exhaust_fan;
|
||||||
state0->intake_rpm = intake = state0->mpu.rmaxn_intake_fan;
|
state0->intake_rpm = intake = state0->mpu.rmaxn_intake_fan;
|
||||||
pump = state0->pump_min;
|
pump = state0->pump_max;
|
||||||
goto do_set_fans;
|
goto do_set_fans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1729,7 +1729,7 @@ level_show(mddev_t *mddev, char *page)
|
||||||
if (p == NULL && mddev->raid_disks == 0)
|
if (p == NULL && mddev->raid_disks == 0)
|
||||||
return 0;
|
return 0;
|
||||||
if (mddev->level >= 0)
|
if (mddev->level >= 0)
|
||||||
return sprintf(page, "RAID-%d\n", mddev->level);
|
return sprintf(page, "raid%d\n", mddev->level);
|
||||||
else
|
else
|
||||||
return sprintf(page, "%s\n", p->name);
|
return sprintf(page, "%s\n", p->name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -406,7 +406,7 @@ static int ca_send_message(struct dst_state *state, struct ca_msg *p_ca_message,
|
||||||
}
|
}
|
||||||
dprintk(verbose, DST_CA_DEBUG, 1, " ");
|
dprintk(verbose, DST_CA_DEBUG, 1, " ");
|
||||||
|
|
||||||
if (copy_from_user(p_ca_message, (void *)arg, sizeof (struct ca_msg))) {
|
if (copy_from_user(p_ca_message, arg, sizeof (struct ca_msg))) {
|
||||||
result = -EFAULT;
|
result = -EFAULT;
|
||||||
goto free_mem_and_exit;
|
goto free_mem_and_exit;
|
||||||
}
|
}
|
||||||
|
@ -579,7 +579,7 @@ static int dst_ca_release(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dst_ca_read(struct file *file, char __user *buffer, size_t length, loff_t *offset)
|
static ssize_t dst_ca_read(struct file *file, char __user *buffer, size_t length, loff_t *offset)
|
||||||
{
|
{
|
||||||
int bytes_read = 0;
|
int bytes_read = 0;
|
||||||
|
|
||||||
|
@ -588,7 +588,7 @@ static int dst_ca_read(struct file *file, char __user *buffer, size_t length, lo
|
||||||
return bytes_read;
|
return bytes_read;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dst_ca_write(struct file *file, const char __user *buffer, size_t length, loff_t *offset)
|
static ssize_t dst_ca_write(struct file *file, const char __user *buffer, size_t length, loff_t *offset)
|
||||||
{
|
{
|
||||||
dprintk(verbose, DST_CA_DEBUG, 1, " Device write.");
|
dprintk(verbose, DST_CA_DEBUG, 1, " Device write.");
|
||||||
|
|
||||||
|
|
|
@ -176,6 +176,9 @@ static void init_av7110_av(struct av7110 *av7110)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dev->pci->subsystem_vendor == 0x13c2 && dev->pci->subsystem_device == 0x000e)
|
||||||
|
av7110_fw_cmd(av7110, COMTYPE_AUDIODAC, SpdifSwitch, 1, 0); // SPDIF on
|
||||||
|
|
||||||
ret = av7110_set_volume(av7110, av7110->mixer.volume_left, av7110->mixer.volume_right);
|
ret = av7110_set_volume(av7110, av7110->mixer.volume_left, av7110->mixer.volume_right);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
printk("dvb-ttpci:cannot set volume :%d\n",ret);
|
printk("dvb-ttpci:cannot set volume :%d\n",ret);
|
||||||
|
|
|
@ -143,7 +143,8 @@ enum av7110_audio_command {
|
||||||
MainSwitch,
|
MainSwitch,
|
||||||
ADSwitch,
|
ADSwitch,
|
||||||
SendDiSEqC,
|
SendDiSEqC,
|
||||||
SetRegister
|
SetRegister,
|
||||||
|
SpdifSwitch
|
||||||
};
|
};
|
||||||
|
|
||||||
enum av7110_request_command {
|
enum av7110_request_command {
|
||||||
|
|
|
@ -333,24 +333,30 @@ static int set_input(struct i2c_client *client, enum cx25840_input input)
|
||||||
|
|
||||||
static int set_v4lstd(struct i2c_client *client, v4l2_std_id std)
|
static int set_v4lstd(struct i2c_client *client, v4l2_std_id std)
|
||||||
{
|
{
|
||||||
u8 fmt;
|
u8 fmt=0; /* zero is autodetect */
|
||||||
|
|
||||||
switch (std) {
|
/* First tests should be against specific std */
|
||||||
/* zero is autodetect */
|
if (std & V4L2_STD_NTSC_M_JP) {
|
||||||
case 0: fmt = 0x0; break;
|
fmt=0x2;
|
||||||
/* default ntsc to ntsc-m */
|
} else if (std & V4L2_STD_NTSC_443) {
|
||||||
case V4L2_STD_NTSC:
|
fmt=0x3;
|
||||||
case V4L2_STD_NTSC_M: fmt = 0x1; break;
|
} else if (std & V4L2_STD_PAL_M) {
|
||||||
case V4L2_STD_NTSC_M_JP: fmt = 0x2; break;
|
fmt=0x5;
|
||||||
case V4L2_STD_NTSC_443: fmt = 0x3; break;
|
} else if (std & V4L2_STD_PAL_N) {
|
||||||
case V4L2_STD_PAL: fmt = 0x4; break;
|
fmt=0x6;
|
||||||
case V4L2_STD_PAL_M: fmt = 0x5; break;
|
} else if (std & V4L2_STD_PAL_Nc) {
|
||||||
case V4L2_STD_PAL_N: fmt = 0x6; break;
|
fmt=0x7;
|
||||||
case V4L2_STD_PAL_Nc: fmt = 0x7; break;
|
} else if (std & V4L2_STD_PAL_60) {
|
||||||
case V4L2_STD_PAL_60: fmt = 0x8; break;
|
fmt=0x8;
|
||||||
case V4L2_STD_SECAM: fmt = 0xc; break;
|
} else {
|
||||||
default:
|
/* Then, test against generic ones */
|
||||||
return -ERANGE;
|
if (std & V4L2_STD_NTSC) {
|
||||||
|
fmt=0x1;
|
||||||
|
} else if (std & V4L2_STD_PAL) {
|
||||||
|
fmt=0x4;
|
||||||
|
} else if (std & V4L2_STD_SECAM) {
|
||||||
|
fmt=0xc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cx25840_and_or(client, 0x400, ~0xf, fmt);
|
cx25840_and_or(client, 0x400, ~0xf, fmt);
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue