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:
Steve French 2005-12-31 10:27:22 -08:00
commit eea60caef6
253 changed files with 2298 additions and 2343 deletions

View file

@ -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

View file

@ -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"

View file

@ -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, \

View file

@ -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:

View file

@ -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

View file

@ -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.

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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);
} }

View file

@ -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

View file

@ -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
} }
/* /*

View file

@ -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);

View file

@ -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);

View file

@ -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) }

View file

@ -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;

View file

@ -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;

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 */

View file

@ -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);

View file

@ -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;
} }

View file

@ -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 = {

View file

@ -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];

View file

@ -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

View file

@ -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, &regs[0], child); fill_ebus_child(node, &regs[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, &regs[0], child); fill_ebus_child(node, &regs[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)

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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
} }

View file

@ -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)
{ {

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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
} }

View file

@ -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;

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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();
} }

View file

@ -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;

View file

@ -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);

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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];

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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;

View file

@ -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

View file

@ -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)

View file

@ -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);

View file

@ -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;

View file

@ -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)
{ {

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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();

View file

@ -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)

View file

@ -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)

View file

@ -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;

View file

@ -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) {

View file

@ -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,

View file

@ -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

View file

@ -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);

View file

@ -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;
} }

View file

@ -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.

View file

@ -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;
/* /*

View file

@ -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. */

View file

@ -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;

View file

@ -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);

View file

@ -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

View file

@ -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;

View file

@ -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 },

View file

@ -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;

View file

@ -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;
} }

View file

@ -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);

View file

@ -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.

View file

@ -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)

View file

@ -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 },

View file

@ -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;
} }

View file

@ -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"

View file

@ -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;
} }

View file

@ -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);
} }

View file

@ -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.");

View file

@ -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);

View file

@ -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 {

View file

@ -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