Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha

Pull alpha updates from Matt Turner:
 "A few small fixes and clean ups"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha:
  alpha: fix crash if pthread_create races with signal delivery
  alpha: fix formating of stack content
  alpha: fix reboot on Avanti platform
  alpha: deprecate pci_get_bus_and_slot()
  alpha: Fix mixed up args in EXC macro in futex operations
  alpha: osf_sys.c: use timespec64 where appropriate
  alpha: osf_sys.c: fix put_tv32 regression
  alpha: make thread_saved_pc static
  alpha: make XTABS equivalent to TAB3
This commit is contained in:
Linus Torvalds 2018-02-02 13:46:21 -08:00
commit b89e32ccd1
8 changed files with 26 additions and 18 deletions

View File

@ -20,8 +20,8 @@
"3: .subsection 2\n" \ "3: .subsection 2\n" \
"4: br 1b\n" \ "4: br 1b\n" \
" .previous\n" \ " .previous\n" \
EXC(1b,3b,%1,$31) \ EXC(1b,3b,$31,%1) \
EXC(2b,3b,%1,$31) \ EXC(2b,3b,$31,%1) \
: "=&r" (oldval), "=&r"(ret) \ : "=&r" (oldval), "=&r"(ret) \
: "r" (uaddr), "r"(oparg) \ : "r" (uaddr), "r"(oparg) \
: "memory") : "memory")
@ -82,8 +82,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
"3: .subsection 2\n" "3: .subsection 2\n"
"4: br 1b\n" "4: br 1b\n"
" .previous\n" " .previous\n"
EXC(1b,3b,%0,$31) EXC(1b,3b,$31,%0)
EXC(2b,3b,%0,$31) EXC(2b,3b,$31,%0)
: "+r"(ret), "=&r"(prev), "=&r"(cmp) : "+r"(ret), "=&r"(prev), "=&r"(cmp)
: "r"(uaddr), "r"((long)(int)oldval), "r"(newval) : "r"(uaddr), "r"((long)(int)oldval), "r"(newval)
: "memory"); : "memory");

View File

@ -40,15 +40,12 @@ typedef struct {
struct thread_struct { }; struct thread_struct { };
#define INIT_THREAD { } #define INIT_THREAD { }
/* Return saved PC of a blocked thread. */
struct task_struct;
extern unsigned long thread_saved_pc(struct task_struct *);
/* Do necessary setup to start up a newly executed thread. */ /* Do necessary setup to start up a newly executed thread. */
struct pt_regs; struct pt_regs;
extern void start_thread(struct pt_regs *, unsigned long, unsigned long); extern void start_thread(struct pt_regs *, unsigned long, unsigned long);
/* Free all resources held by a thread. */ /* Free all resources held by a thread. */
struct task_struct;
extern void release_thread(struct task_struct *); extern void release_thread(struct task_struct *);
unsigned long get_wchan(struct task_struct *p); unsigned long get_wchan(struct task_struct *p);

View File

@ -110,7 +110,11 @@ struct ktermios {
#define VTDLY 00200000 #define VTDLY 00200000
#define VT0 00000000 #define VT0 00000000
#define VT1 00200000 #define VT1 00200000
#define XTABS 01000000 /* Hmm.. Linux/i386 considers this part of TABDLY.. */ /*
* Should be equivalent to TAB3, see description of TAB3 in
* POSIX.1-2008, Ch. 11.2.3 "Output Modes"
*/
#define XTABS TAB3
/* c_cflag bit meaning */ /* c_cflag bit meaning */
#define CBAUD 0000037 #define CBAUD 0000037

View File

@ -425,7 +425,7 @@ sys_pciconfig_iobase(long which, unsigned long bus, unsigned long dfn)
if (bus == 0 && dfn == 0) { if (bus == 0 && dfn == 0) {
hose = pci_isa_hose; hose = pci_isa_hose;
} else { } else {
dev = pci_get_bus_and_slot(bus, dfn); dev = pci_get_domain_bus_and_slot(0, bus, dfn);
if (!dev) if (!dev)
return -ENODEV; return -ENODEV;
hose = dev->sysdata; hose = dev->sysdata;

View File

@ -144,7 +144,8 @@ struct pci_iommu_arena
}; };
#if defined(CONFIG_ALPHA_SRM) && \ #if defined(CONFIG_ALPHA_SRM) && \
(defined(CONFIG_ALPHA_CIA) || defined(CONFIG_ALPHA_LCA)) (defined(CONFIG_ALPHA_CIA) || defined(CONFIG_ALPHA_LCA) || \
defined(CONFIG_ALPHA_AVANTI))
# define NEED_SRM_SAVE_RESTORE # define NEED_SRM_SAVE_RESTORE
#else #else
# undef NEED_SRM_SAVE_RESTORE # undef NEED_SRM_SAVE_RESTORE

View File

@ -269,12 +269,13 @@ copy_thread(unsigned long clone_flags, unsigned long usp,
application calling fork. */ application calling fork. */
if (clone_flags & CLONE_SETTLS) if (clone_flags & CLONE_SETTLS)
childti->pcb.unique = regs->r20; childti->pcb.unique = regs->r20;
else
regs->r20 = 0; /* OSF/1 has some strange fork() semantics. */
childti->pcb.usp = usp ?: rdusp(); childti->pcb.usp = usp ?: rdusp();
*childregs = *regs; *childregs = *regs;
childregs->r0 = 0; childregs->r0 = 0;
childregs->r19 = 0; childregs->r19 = 0;
childregs->r20 = 1; /* OSF/1 has some strange fork() semantics. */ childregs->r20 = 1; /* OSF/1 has some strange fork() semantics. */
regs->r20 = 0;
stack = ((struct switch_stack *) regs) - 1; stack = ((struct switch_stack *) regs) - 1;
*childstack = *stack; *childstack = *stack;
childstack->r26 = (unsigned long) ret_from_fork; childstack->r26 = (unsigned long) ret_from_fork;
@ -361,7 +362,7 @@ EXPORT_SYMBOL(dump_elf_task_fp);
* all. -- r~ * all. -- r~
*/ */
unsigned long static unsigned long
thread_saved_pc(struct task_struct *t) thread_saved_pc(struct task_struct *t)
{ {
unsigned long base = (unsigned long)task_stack_page(t); unsigned long base = (unsigned long)task_stack_page(t);

View File

@ -237,7 +237,7 @@ nautilus_init_pci(void)
bus = hose->bus = bridge->bus; bus = hose->bus = bridge->bus;
pcibios_claim_one_bus(bus); pcibios_claim_one_bus(bus);
irongate = pci_get_bus_and_slot(0, 0); irongate = pci_get_domain_bus_and_slot(pci_domain_nr(bus), 0, 0);
bus->self = irongate; bus->self = irongate;
bus->resource[0] = &irongate_io; bus->resource[0] = &irongate_io;
bus->resource[1] = &irongate_mem; bus->resource[1] = &irongate_mem;

View File

@ -160,11 +160,16 @@ void show_stack(struct task_struct *task, unsigned long *sp)
for(i=0; i < kstack_depth_to_print; i++) { for(i=0; i < kstack_depth_to_print; i++) {
if (((long) stack & (THREAD_SIZE-1)) == 0) if (((long) stack & (THREAD_SIZE-1)) == 0)
break; break;
if (i && ((i % 4) == 0)) if ((i % 4) == 0) {
printk("\n "); if (i)
printk("%016lx ", *stack++); pr_cont("\n");
printk(" ");
} else {
pr_cont(" ");
}
pr_cont("%016lx", *stack++);
} }
printk("\n"); pr_cont("\n");
dik_show_trace(sp); dik_show_trace(sp);
} }