Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 362957
b: refs/heads/master
c: 8127b39
h: refs/heads/master
i:
  362955: 0aca9d2
v: v3
  • Loading branch information
Linus Torvalds committed Apr 29, 2013
1 parent c389654 commit 0910cf2
Show file tree
Hide file tree
Showing 192 changed files with 3,170 additions and 2,826 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9bf9d47a29afbf7a43eae74a988a4aefe88ccbfd
refs/heads/master: 8127b39e700f965a60fca443d23f3e171bf7c3a9
2 changes: 1 addition & 1 deletion trunk/Documentation/ia64/err_inject.txt
Original file line number Diff line number Diff line change
Expand Up @@ -882,7 +882,7 @@ int err_inj()
cpu=parameters[i].cpu;
k = cpu%64;
j = cpu/64;
mask[j]=1<<k;
mask[j] = 1UL << k;

if (sched_setaffinity(0, MASK_SIZE*8, mask)==-1) {
perror("Error sched_setaffinity:");
Expand Down
1 change: 1 addition & 0 deletions trunk/Documentation/kdump/kdump.txt
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ Boot into System Kernel
On ia64, 256M@256M is a generous value that typically works.
The region may be automatically placed on ia64, see the
dump-capture kernel config option notes above.
If use sparse memory, the size should be rounded to GRANULE boundaries.

On s390x, typically use "crashkernel=xxM". The value of xx is dependent
on the memory consumption of the kdump system. In general this is not
Expand Down
3 changes: 2 additions & 1 deletion trunk/Documentation/s390/s390dbf.txt
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,8 @@ Parameter: id: handle for debug log

Return Value: none

Description: frees memory for a debug log
Description: frees memory for a debug log and removes all registered debug
views.
Must not be called within an interrupt handler

---------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion trunk/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
VERSION = 3
PATCHLEVEL = 9
SUBLEVEL = 0
EXTRAVERSION = -rc8
EXTRAVERSION =
NAME = Unicycling Gorilla

# *DOCUMENTATION*
Expand Down
18 changes: 11 additions & 7 deletions trunk/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
Original file line number Diff line number Diff line change
Expand Up @@ -2714,16 +2714,22 @@ static struct omap_ocp2scp_dev ocp2scp_dev_attr[] = {
{ }
};

static struct omap_hwmod_opt_clk ocp2scp_usb_phy_opt_clks[] = {
{ .role = "48mhz", .clk = "ocp2scp_usb_phy_phy_48m" },
};

/* ocp2scp_usb_phy */
static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = {
.name = "ocp2scp_usb_phy",
.class = &omap44xx_ocp2scp_hwmod_class,
.clkdm_name = "l3_init_clkdm",
.main_clk = "func_48m_fclk",
/*
* ocp2scp_usb_phy_phy_48m is provided by the OMAP4 PRCM IP
* block as an "optional clock," and normally should never be
* specified as the main_clk for an OMAP IP block. However it
* turns out that this clock is actually the main clock for
* the ocp2scp_usb_phy IP block:
* http://lists.infradead.org/pipermail/linux-arm-kernel/2012-September/119943.html
* So listing ocp2scp_usb_phy_phy_48m as a main_clk here seems
* to be the best workaround.
*/
.main_clk = "ocp2scp_usb_phy_phy_48m",
.prcm = {
.omap4 = {
.clkctrl_offs = OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET,
Expand All @@ -2732,8 +2738,6 @@ static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = {
},
},
.dev_attr = ocp2scp_dev_attr,
.opt_clks = ocp2scp_usb_phy_opt_clks,
.opt_clks_cnt = ARRAY_SIZE(ocp2scp_usb_phy_opt_clks),
};

/*
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/ia64/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ config IA64_DIG

config IA64_DIG_VTD
bool "DIG+Intel+IOMMU"
select DMAR
select INTEL_IOMMU
select PCI_MSI

config IA64_HP_ZX1
Expand Down
5 changes: 2 additions & 3 deletions trunk/arch/ia64/include/asm/futex.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,16 +106,15 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
return -EFAULT;

{
register unsigned long r8 __asm ("r8");
register unsigned long r8 __asm ("r8") = 0;
unsigned long prev;
__asm__ __volatile__(
" mf;; \n"
" mov %0=r0 \n"
" mov ar.ccv=%4;; \n"
"[1:] cmpxchg4.acq %1=[%2],%3,ar.ccv \n"
" .xdata4 \"__ex_table\", 1b-., 2f-. \n"
"[2:]"
: "=r" (r8), "=r" (prev)
: "+r" (r8), "=&r" (prev)
: "r" (uaddr), "r" (newval),
"rO" ((long) (unsigned) oldval)
: "memory");
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/ia64/include/asm/mca.h
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ extern unsigned long __per_cpu_mca[NR_CPUS];
extern int cpe_vector;
extern int ia64_cpe_irq;
extern void ia64_mca_init(void);
extern void ia64_mca_irq_init(void);
extern void ia64_mca_cpu_init(void *);
extern void ia64_os_mca_dispatch(void);
extern void ia64_os_mca_dispatch_end(void);
Expand Down
5 changes: 2 additions & 3 deletions trunk/arch/ia64/include/asm/numa.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,13 @@ extern int paddr_to_nid(unsigned long paddr);

extern void map_cpu_to_node(int cpu, int nid);
extern void unmap_cpu_from_node(int cpu, int nid);

extern void numa_clear_node(int cpu);

#else /* !CONFIG_NUMA */
#define map_cpu_to_node(cpu, nid) do{}while(0)
#define unmap_cpu_from_node(cpu, nid) do{}while(0)

#define paddr_to_nid(addr) 0

#define numa_clear_node(cpu) do { } while (0)
#endif /* CONFIG_NUMA */

#endif /* _ASM_IA64_NUMA_H */
49 changes: 1 addition & 48 deletions trunk/arch/ia64/kernel/fsys.S
Original file line number Diff line number Diff line change
Expand Up @@ -90,53 +90,6 @@ ENTRY(fsys_getpid)
FSYS_RETURN
END(fsys_getpid)

ENTRY(fsys_getppid)
.prologue
.altrp b6
.body
add r17=IA64_TASK_GROUP_LEADER_OFFSET,r16
;;
ld8 r17=[r17] // r17 = current->group_leader
add r9=TI_FLAGS+IA64_TASK_SIZE,r16
;;

ld4 r9=[r9]
add r17=IA64_TASK_REAL_PARENT_OFFSET,r17 // r17 = &current->group_leader->real_parent
;;
and r9=TIF_ALLWORK_MASK,r9

1: ld8 r18=[r17] // r18 = current->group_leader->real_parent
;;
cmp.ne p8,p0=0,r9
add r8=IA64_TASK_TGID_OFFSET,r18 // r8 = &current->group_leader->real_parent->tgid
;;

/*
* The .acq is needed to ensure that the read of tgid has returned its data before
* we re-check "real_parent".
*/
ld4.acq r8=[r8] // r8 = current->group_leader->real_parent->tgid
#ifdef CONFIG_SMP
/*
* Re-read current->group_leader->real_parent.
*/
ld8 r19=[r17] // r19 = current->group_leader->real_parent
(p8) br.spnt.many fsys_fallback_syscall
;;
cmp.ne p6,p0=r18,r19 // did real_parent change?
mov r19=0 // i must not leak kernel bits...
(p6) br.cond.spnt.few 1b // yes -> redo the read of tgid and the check
;;
mov r17=0 // i must not leak kernel bits...
mov r18=0 // i must not leak kernel bits...
#else
mov r17=0 // i must not leak kernel bits...
mov r18=0 // i must not leak kernel bits...
mov r19=0 // i must not leak kernel bits...
#endif
FSYS_RETURN
END(fsys_getppid)

ENTRY(fsys_set_tid_address)
.prologue
.altrp b6
Expand Down Expand Up @@ -614,7 +567,7 @@ paravirt_fsyscall_table:
data8 0 // chown
data8 0 // lseek // 1040
data8 fsys_getpid // getpid
data8 fsys_getppid // getppid
data8 0 // getppid
data8 0 // mount
data8 0 // umount
data8 0 // setuid // 1045
Expand Down
34 changes: 32 additions & 2 deletions trunk/arch/ia64/kernel/iosapic.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
* PCI pin -> global system interrupt (GSI) -> IA-64 vector <-> IRQ
*
* Note: The term "IRQ" is loosely used everywhere in Linux kernel to
* describeinterrupts. Now we use "IRQ" only for Linux IRQ's. ISA IRQ
* describe interrupts. Now we use "IRQ" only for Linux IRQ's. ISA IRQ
* (isa_irq) is the only exception in this source code.
*/

Expand Down Expand Up @@ -1010,6 +1010,26 @@ iosapic_check_gsi_range (unsigned int gsi_base, unsigned int ver)
return 0;
}

static int
iosapic_delete_rte(unsigned int irq, unsigned int gsi)
{
struct iosapic_rte_info *rte, *temp;

list_for_each_entry_safe(rte, temp, &iosapic_intr_info[irq].rtes,
rte_list) {
if (rte->iosapic->gsi_base + rte->rte_index == gsi) {
if (rte->refcnt)
return -EBUSY;

list_del(&rte->rte_list);
kfree(rte);
return 0;
}
}

return -EINVAL;
}

int iosapic_init(unsigned long phys_addr, unsigned int gsi_base)
{
int num_rte, err, index;
Expand Down Expand Up @@ -1069,7 +1089,7 @@ int iosapic_init(unsigned long phys_addr, unsigned int gsi_base)

int iosapic_remove(unsigned int gsi_base)
{
int index, err = 0;
int i, irq, index, err = 0;
unsigned long flags;

spin_lock_irqsave(&iosapic_lock, flags);
Expand All @@ -1087,6 +1107,16 @@ int iosapic_remove(unsigned int gsi_base)
goto out;
}

for (i = gsi_base; i < gsi_base + iosapic_lists[index].num_rte; i++) {
irq = __gsi_to_irq(i);
if (irq < 0)
continue;

err = iosapic_delete_rte(irq, i);
if (err)
goto out;
}

iounmap(iosapic_lists[index].addr);
iosapic_free(index);
out:
Expand Down
8 changes: 8 additions & 0 deletions trunk/arch/ia64/kernel/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
#include <linux/interrupt.h>
#include <linux/kernel_stat.h>

#include <asm/mca.h>

/*
* 'what should we do if we get a hw irq event on an illegal vector'.
* each architecture has to answer this themselves.
Expand Down Expand Up @@ -83,6 +85,12 @@ bool is_affinity_mask_valid(const struct cpumask *cpumask)

#endif /* CONFIG_SMP */

int __init arch_early_irq_init(void)
{
ia64_mca_irq_init();
return 0;
}

#ifdef CONFIG_HOTPLUG_CPU
unsigned int vectors_in_migration[NR_IRQS];

Expand Down
37 changes: 24 additions & 13 deletions trunk/arch/ia64/kernel/mca.c
Original file line number Diff line number Diff line change
Expand Up @@ -2074,22 +2074,16 @@ ia64_mca_init(void)
printk(KERN_INFO "MCA related initialization done\n");
}


/*
* ia64_mca_late_init
*
* Opportunity to setup things that require initialization later
* than ia64_mca_init. Setup a timer to poll for CPEs if the
* platform doesn't support an interrupt driven mechanism.
*
* Inputs : None
* Outputs : Status
* These pieces cannot be done in ia64_mca_init() because it is called before
* early_irq_init() which would wipe out our percpu irq registrations. But we
* cannot leave them until ia64_mca_late_init() because by then all the other
* processors have been brought online and have set their own CMC vectors to
* point at a non-existant action. Called from arch_early_irq_init().
*/
static int __init
ia64_mca_late_init(void)
void __init ia64_mca_irq_init(void)
{
if (!mca_init)
return 0;

/*
* Configure the CMCI/P vector and handler. Interrupts for CMC are
* per-processor, so AP CMC interrupts are setup in smp_callin() (smpboot.c).
Expand All @@ -2108,6 +2102,23 @@ ia64_mca_late_init(void)
/* Setup the CPEI/P handler */
register_percpu_irq(IA64_CPEP_VECTOR, &mca_cpep_irqaction);
#endif
}

/*
* ia64_mca_late_init
*
* Opportunity to setup things that require initialization later
* than ia64_mca_init. Setup a timer to poll for CPEs if the
* platform doesn't support an interrupt driven mechanism.
*
* Inputs : None
* Outputs : Status
*/
static int __init
ia64_mca_late_init(void)
{
if (!mca_init)
return 0;

register_hotcpu_notifier(&mca_cpu_notifier);

Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/ia64/kernel/mca_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ init_record_index_pools(void)

/* - 3 - */
slidx_pool.max_idx = (rec_max_size/sect_min_size) * 2 + 1;
slidx_pool.buffer = (slidx_list_t *)
slidx_pool.buffer =
kmalloc(slidx_pool.max_idx * sizeof(slidx_list_t), GFP_KERNEL);

return slidx_pool.buffer ? 0 : -ENOMEM;
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/ia64/kvm/vtlb.c
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ u64 guest_vhpt_lookup(u64 iha, u64 *pte)
"srlz.d;;"
"ssm psr.i;;"
"srlz.d;;"
: "=r"(ret) : "r"(iha), "r"(pte):"memory");
: "=&r"(ret) : "r"(iha), "r"(pte) : "memory");

return ret;
}
Expand Down
14 changes: 9 additions & 5 deletions trunk/arch/ia64/mm/ioremap.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,19 @@
#include <asm/meminit.h>

static inline void __iomem *
__ioremap (unsigned long phys_addr)
__ioremap_uc(unsigned long phys_addr)
{
return (void __iomem *) (__IA64_UNCACHED_OFFSET | phys_addr);
}

void __iomem *
early_ioremap (unsigned long phys_addr, unsigned long size)
{
return __ioremap(phys_addr);
u64 attr;
attr = kern_mem_attribute(phys_addr, size);
if (attr & EFI_MEMORY_WB)
return (void __iomem *) phys_to_virt(phys_addr);
return __ioremap_uc(phys_addr);
}

void __iomem *
Expand All @@ -47,7 +51,7 @@ ioremap (unsigned long phys_addr, unsigned long size)
if (attr & EFI_MEMORY_WB)
return (void __iomem *) phys_to_virt(phys_addr);
else if (attr & EFI_MEMORY_UC)
return __ioremap(phys_addr);
return __ioremap_uc(phys_addr);

/*
* Some chipsets don't support UC access to memory. If
Expand Down Expand Up @@ -93,7 +97,7 @@ ioremap (unsigned long phys_addr, unsigned long size)
return (void __iomem *) (offset + (char __iomem *)addr);
}

return __ioremap(phys_addr);
return __ioremap_uc(phys_addr);
}
EXPORT_SYMBOL(ioremap);

Expand All @@ -103,7 +107,7 @@ ioremap_nocache (unsigned long phys_addr, unsigned long size)
if (kern_mem_attribute(phys_addr, size) & EFI_MEMORY_WB)
return NULL;

return __ioremap(phys_addr);
return __ioremap_uc(phys_addr);
}
EXPORT_SYMBOL(ioremap_nocache);

Expand Down
Loading

0 comments on commit 0910cf2

Please sign in to comment.