lkml.org 
[lkml]   [2011]   [Apr]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[33/70] sparc64: Fix build errors with gcc-4.6.0
    2.6.38-stable review patch.  If anyone has any objections, please let us know.

    ------------------


    From: David S. Miller <davem@davemloft.net>

    [ Upstream commit c6fee0810df4e0f4cf9c4834d2569ca01c02cffc ]

    Most of the warnings emitted (we fail arch/sparc file
    builds with -Werror) were legitimate but harmless, however
    one case (n2_pcr_write) was a genuine bug.

    Based almost entirely upon a patch by Sam Ravnborg.

    Reported-by: Dennis Gilmore <dennis@ausil.us>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
    ---
    arch/sparc/kernel/iommu.c | 3 ---
    arch/sparc/kernel/ldc.c | 28 ++++++++++++++++++----------
    arch/sparc/kernel/pci.c | 1 +
    arch/sparc/kernel/pci_common.c | 11 +++++++----
    arch/sparc/kernel/pci_fire.c | 2 --
    arch/sparc/kernel/pci_schizo.c | 4 +---
    arch/sparc/kernel/pci_sun4v.c | 3 +--
    arch/sparc/kernel/pcr.c | 2 +-
    arch/sparc/kernel/ptrace_64.c | 3 ++-
    arch/sparc/kernel/smp_64.c | 11 ++++-------
    arch/sparc/kernel/traps_64.c | 3 +--
    11 files changed, 36 insertions(+), 35 deletions(-)

    --- a/arch/sparc/kernel/iommu.c
    +++ b/arch/sparc/kernel/iommu.c
    @@ -333,13 +333,10 @@ static void dma_4u_free_coherent(struct
    void *cpu, dma_addr_t dvma)
    {
    struct iommu *iommu;
    - iopte_t *iopte;
    unsigned long flags, order, npages;

    npages = IO_PAGE_ALIGN(size) >> IO_PAGE_SHIFT;
    iommu = dev->archdata.iommu;
    - iopte = iommu->page_table +
    - ((dvma - iommu->page_table_map_base) >> IO_PAGE_SHIFT);

    spin_lock_irqsave(&iommu->lock, flags);

    --- a/arch/sparc/kernel/ldc.c
    +++ b/arch/sparc/kernel/ldc.c
    @@ -790,16 +790,20 @@ static void send_events(struct ldc_chann
    static irqreturn_t ldc_rx(int irq, void *dev_id)
    {
    struct ldc_channel *lp = dev_id;
    - unsigned long orig_state, hv_err, flags;
    + unsigned long orig_state, flags;
    unsigned int event_mask;

    spin_lock_irqsave(&lp->lock, flags);

    orig_state = lp->chan_state;
    - hv_err = sun4v_ldc_rx_get_state(lp->id,
    - &lp->rx_head,
    - &lp->rx_tail,
    - &lp->chan_state);
    +
    + /* We should probably check for hypervisor errors here and
    + * reset the LDC channel if we get one.
    + */
    + sun4v_ldc_rx_get_state(lp->id,
    + &lp->rx_head,
    + &lp->rx_tail,
    + &lp->chan_state);

    ldcdbg(RX, "RX state[0x%02lx:0x%02lx] head[0x%04lx] tail[0x%04lx]\n",
    orig_state, lp->chan_state, lp->rx_head, lp->rx_tail);
    @@ -904,16 +908,20 @@ out:
    static irqreturn_t ldc_tx(int irq, void *dev_id)
    {
    struct ldc_channel *lp = dev_id;
    - unsigned long flags, hv_err, orig_state;
    + unsigned long flags, orig_state;
    unsigned int event_mask = 0;

    spin_lock_irqsave(&lp->lock, flags);

    orig_state = lp->chan_state;
    - hv_err = sun4v_ldc_tx_get_state(lp->id,
    - &lp->tx_head,
    - &lp->tx_tail,
    - &lp->chan_state);
    +
    + /* We should probably check for hypervisor errors here and
    + * reset the LDC channel if we get one.
    + */
    + sun4v_ldc_tx_get_state(lp->id,
    + &lp->tx_head,
    + &lp->tx_tail,
    + &lp->chan_state);

    ldcdbg(TX, " TX state[0x%02lx:0x%02lx] head[0x%04lx] tail[0x%04lx]\n",
    orig_state, lp->chan_state, lp->tx_head, lp->tx_tail);
    --- a/arch/sparc/kernel/pci.c
    +++ b/arch/sparc/kernel/pci.c
    @@ -675,6 +675,7 @@ static void __devinit pci_bus_register_o
    * humanoid.
    */
    err = sysfs_create_file(&dev->dev.kobj, &dev_attr_obppath.attr);
    + (void) err;
    }
    list_for_each_entry(child_bus, &bus->children, node)
    pci_bus_register_of_sysfs(child_bus);
    --- a/arch/sparc/kernel/pci_common.c
    +++ b/arch/sparc/kernel/pci_common.c
    @@ -295,14 +295,17 @@ static int sun4v_write_pci_cfg(struct pc
    unsigned int bus = bus_dev->number;
    unsigned int device = PCI_SLOT(devfn);
    unsigned int func = PCI_FUNC(devfn);
    - unsigned long ret;

    if (config_out_of_range(pbm, bus, devfn, where)) {
    /* Do nothing. */
    } else {
    - ret = pci_sun4v_config_put(devhandle,
    - HV_PCI_DEVICE_BUILD(bus, device, func),
    - where, size, value);
    + /* We don't check for hypervisor errors here, but perhaps
    + * we should and influence our return value depending upon
    + * what kind of error is thrown.
    + */
    + pci_sun4v_config_put(devhandle,
    + HV_PCI_DEVICE_BUILD(bus, device, func),
    + where, size, value);
    }
    return PCIBIOS_SUCCESSFUL;
    }
    --- a/arch/sparc/kernel/pci_fire.c
    +++ b/arch/sparc/kernel/pci_fire.c
    @@ -214,11 +214,9 @@ static int pci_fire_msi_setup(struct pci

    static int pci_fire_msi_teardown(struct pci_pbm_info *pbm, unsigned long msi)
    {
    - unsigned long msiqid;
    u64 val;

    val = upa_readq(pbm->pbm_regs + MSI_MAP(msi));
    - msiqid = (val & MSI_MAP_EQNUM);

    val &= ~MSI_MAP_VALID;

    --- a/arch/sparc/kernel/pci_schizo.c
    +++ b/arch/sparc/kernel/pci_schizo.c
    @@ -1313,7 +1313,7 @@ static int __devinit schizo_pbm_init(str
    const struct linux_prom64_registers *regs;
    struct device_node *dp = op->dev.of_node;
    const char *chipset_name;
    - int is_pbm_a, err;
    + int err;

    switch (chip_type) {
    case PBM_CHIP_TYPE_TOMATILLO:
    @@ -1343,8 +1343,6 @@ static int __devinit schizo_pbm_init(str
    */
    regs = of_get_property(dp, "reg", NULL);

    - is_pbm_a = ((regs[0].phys_addr & 0x00700000) == 0x00600000);
    -
    pbm->next = pci_pbm_root;
    pci_pbm_root = pbm;

    --- a/arch/sparc/kernel/pci_sun4v.c
    +++ b/arch/sparc/kernel/pci_sun4v.c
    @@ -580,7 +580,7 @@ static int __devinit pci_sun4v_iommu_ini
    {
    static const u32 vdma_default[] = { 0x80000000, 0x80000000 };
    struct iommu *iommu = pbm->iommu;
    - unsigned long num_tsb_entries, sz, tsbsize;
    + unsigned long num_tsb_entries, sz;
    u32 dma_mask, dma_offset;
    const u32 *vdma;

    @@ -596,7 +596,6 @@ static int __devinit pci_sun4v_iommu_ini

    dma_mask = (roundup_pow_of_two(vdma[1]) - 1UL);
    num_tsb_entries = vdma[1] / IO_PAGE_SIZE;
    - tsbsize = num_tsb_entries * sizeof(iopte_t);

    dma_offset = vdma[0];

    --- a/arch/sparc/kernel/pcr.c
    +++ b/arch/sparc/kernel/pcr.c
    @@ -81,7 +81,7 @@ static void n2_pcr_write(u64 val)
    unsigned long ret;

    ret = sun4v_niagara2_setperf(HV_N2_PERF_SPARC_CTL, val);
    - if (val != HV_EOK)
    + if (ret != HV_EOK)
    write_pcr(val);
    }

    --- a/arch/sparc/kernel/ptrace_64.c
    +++ b/arch/sparc/kernel/ptrace_64.c
    @@ -1086,6 +1086,7 @@ asmlinkage int syscall_trace_enter(struc

    asmlinkage void syscall_trace_leave(struct pt_regs *regs)
    {
    +#ifdef CONFIG_AUDITSYSCALL
    if (unlikely(current->audit_context)) {
    unsigned long tstate = regs->tstate;
    int result = AUDITSC_SUCCESS;
    @@ -1095,7 +1096,7 @@ asmlinkage void syscall_trace_leave(stru

    audit_syscall_exit(result, regs->u_regs[UREG_I0]);
    }
    -
    +#endif
    if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
    trace_sys_exit(regs, regs->u_regs[UREG_G1]);

    --- a/arch/sparc/kernel/smp_64.c
    +++ b/arch/sparc/kernel/smp_64.c
    @@ -189,7 +189,7 @@ static inline long get_delta (long *rt,
    void smp_synchronize_tick_client(void)
    {
    long i, delta, adj, adjust_latency = 0, done = 0;
    - unsigned long flags, rt, master_time_stamp, bound;
    + unsigned long flags, rt, master_time_stamp;
    #if DEBUG_TICK_SYNC
    struct {
    long rt; /* roundtrip time */
    @@ -208,10 +208,8 @@ void smp_synchronize_tick_client(void)
    {
    for (i = 0; i < NUM_ROUNDS; i++) {
    delta = get_delta(&rt, &master_time_stamp);
    - if (delta == 0) {
    + if (delta == 0)
    done = 1; /* let's lock on to this... */
    - bound = rt;
    - }

    if (!done) {
    if (i > 0) {
    @@ -933,13 +931,12 @@ void smp_flush_dcache_page_impl(struct p
    void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
    {
    void *pg_addr;
    - int this_cpu;
    u64 data0;

    if (tlb_type == hypervisor)
    return;

    - this_cpu = get_cpu();
    + preempt_disable();

    #ifdef CONFIG_DEBUG_DCFLUSH
    atomic_inc(&dcpage_flushes);
    @@ -964,7 +961,7 @@ void flush_dcache_page_all(struct mm_str
    }
    __local_flush_dcache_page(page);

    - put_cpu();
    + preempt_enable();
    }

    void __irq_entry smp_new_mmu_context_version_client(int irq, struct pt_regs *regs)
    --- a/arch/sparc/kernel/traps_64.c
    +++ b/arch/sparc/kernel/traps_64.c
    @@ -2152,7 +2152,7 @@ static void user_instruction_dump(unsign

    void show_stack(struct task_struct *tsk, unsigned long *_ksp)
    {
    - unsigned long fp, thread_base, ksp;
    + unsigned long fp, ksp;
    struct thread_info *tp;
    int count = 0;
    #ifdef CONFIG_FUNCTION_GRAPH_TRACER
    @@ -2173,7 +2173,6 @@ void show_stack(struct task_struct *tsk,
    flushw_all();

    fp = ksp + STACK_BIAS;
    - thread_base = (unsigned long) tp;

    printk("Call Trace:\n");
    do {



    \
     
     \ /
      Last update: 2011-04-19 22:29    [W:0.032 / U:0.876 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site