~ubuntu-branches/debian/wheezy/linux-2.6/wheezy

« back to all changes in this revision

Viewing changes to arch/ia64/kernel/irq.c

  • Committer: Bazaar Package Importer
  • Author(s): Ben Hutchings, Ben Hutchings, Aurelien Jarno
  • Date: 2011-06-07 12:14:05 UTC
  • mfrom: (43.1.9 sid)
  • Revision ID: james.westby@ubuntu.com-20110607121405-i3h1rd7nrnd2b73h
Tags: 2.6.39-2
[ Ben Hutchings ]
* [x86] Enable BACKLIGHT_APPLE, replacing BACKLIGHT_MBP_NVIDIA
  (Closes: #627492)
* cgroups: Disable memory resource controller by default. Allow it
  to be enabled using kernel parameter 'cgroup_enable=memory'.
* rt2800usb: Enable support for more USB devices including
  Linksys WUSB600N (Closes: #596626) (this change was accidentally
  omitted from 2.6.39-1)
* [x86] Remove Celeron from list of processors supporting PAE. Most
  'Celeron M' models do not.
* Update debconf template translations:
  - Swedish (Martin Bagge) (Closes: #628932)
  - French (David Prévot) (Closes: #628191)
* aufs: Update for 2.6.39 (Closes: #627837)
* Add stable 2.6.39.1, including:
  - ext4: dont set PageUptodate in ext4_end_bio()
  - pata_cmd64x: fix boot crash on parisc (Closes: #622997, #622745)
  - ext3: Fix fs corruption when make_indexed_dir() fails
  - netfilter: nf_ct_sip: validate Content-Length in TCP SIP messages
  - sctp: fix race between sctp_bind_addr_free() and
    sctp_bind_addr_conflict()
  - sctp: fix memory leak of the ASCONF queue when free asoc
  - md/bitmap: fix saving of events_cleared and other state
  - cdc_acm: Fix oops when Droids MuIn LCD is connected
  - cx88: Fix conversion from BKL to fine-grained locks (Closes: #619827)
  - keys: Set cred->user_ns in key_replace_session_keyring (CVE-2011-2184)
  - tmpfs: fix race between truncate and writepage
  - nfs41: Correct offset for LAYOUTCOMMIT
  - xen/mmu: fix a race window causing leave_mm BUG()
  - ext4: fix possible use-after-free in ext4_remove_li_request()
  For the complete list of changes, see:
   http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.39.1
* Bump ABI to 2
* netfilter: Enable IP_SET, IP_SET_BITMAP_IP, IP_SET_BITMAP_IPMAC,
  IP_SET_BITMAP_PORT, IP_SET_HASH_IP, IP_SET_HASH_IPPORT,
  IP_SET_HASH_IPPORTIP, IP_SET_HASH_IPPORTNET, IP_SET_HASH_NET,
  IP_SET_HASH_NETPORT, IP_SET_LIST_SET, NETFILTER_XT_SET as modules
  (Closes: #629401)

[ Aurelien Jarno ]
* [mipsel/loongson-2f] Disable_SCSI_LPFC to workaround GCC ICE.

Show diffs side-by-side

added added

removed removed

Lines of Context:
53
53
/*
54
54
 * /proc/interrupts printing:
55
55
 */
56
 
 
57
 
int show_interrupts(struct seq_file *p, void *v)
 
56
int arch_show_interrupts(struct seq_file *p, int prec)
58
57
{
59
 
        int i = *(loff_t *) v, j;
60
 
        struct irqaction * action;
61
 
        unsigned long flags;
62
 
 
63
 
        if (i == 0) {
64
 
                char cpuname[16];
65
 
                seq_printf(p, "     ");
66
 
                for_each_online_cpu(j) {
67
 
                        snprintf(cpuname, 10, "CPU%d", j);
68
 
                        seq_printf(p, "%10s ", cpuname);
69
 
                }
70
 
                seq_putc(p, '\n');
71
 
        }
72
 
 
73
 
        if (i < NR_IRQS) {
74
 
                raw_spin_lock_irqsave(&irq_desc[i].lock, flags);
75
 
                action = irq_desc[i].action;
76
 
                if (!action)
77
 
                        goto skip;
78
 
                seq_printf(p, "%3d: ",i);
79
 
#ifndef CONFIG_SMP
80
 
                seq_printf(p, "%10u ", kstat_irqs(i));
81
 
#else
82
 
                for_each_online_cpu(j) {
83
 
                        seq_printf(p, "%10u ", kstat_irqs_cpu(i, j));
84
 
                }
85
 
#endif
86
 
                seq_printf(p, " %14s", irq_desc[i].chip->name);
87
 
                seq_printf(p, "  %s", action->name);
88
 
 
89
 
                for (action=action->next; action; action = action->next)
90
 
                        seq_printf(p, ", %s", action->name);
91
 
 
92
 
                seq_putc(p, '\n');
93
 
skip:
94
 
                raw_spin_unlock_irqrestore(&irq_desc[i].lock, flags);
95
 
        } else if (i == NR_IRQS)
96
 
                seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count));
 
58
        seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count));
97
59
        return 0;
98
60
}
99
61
 
103
65
void set_irq_affinity_info (unsigned int irq, int hwid, int redir)
104
66
{
105
67
        if (irq < NR_IRQS) {
106
 
                cpumask_copy(irq_desc[irq].affinity,
 
68
                cpumask_copy(irq_get_irq_data(irq)->affinity,
107
69
                             cpumask_of(cpu_logical_id(hwid)));
108
70
                irq_redir[irq] = (char) (redir & 0xff);
109
71
        }
130
92
 */
131
93
static void migrate_irqs(void)
132
94
{
133
 
        struct irq_desc *desc;
134
95
        int             irq, new_cpu;
135
96
 
136
97
        for (irq=0; irq < NR_IRQS; irq++) {
137
 
                desc = irq_desc + irq;
 
98
                struct irq_desc *desc = irq_to_desc(irq);
 
99
                struct irq_data *data = irq_desc_get_irq_data(desc);
 
100
                struct irq_chip *chip = irq_data_get_irq_chip(data);
138
101
 
139
 
                if (desc->status == IRQ_DISABLED)
 
102
                if (irqd_irq_disabled(data))
140
103
                        continue;
141
104
 
142
105
                /*
145
108
                 * tell CPU not to respond to these local intr sources.
146
109
                 * such as ITV,CPEI,MCA etc.
147
110
                 */
148
 
                if (desc->status == IRQ_PER_CPU)
 
111
                if (irqd_is_per_cpu(data))
149
112
                        continue;
150
113
 
151
 
                if (cpumask_any_and(irq_desc[irq].affinity, cpu_online_mask)
 
114
                if (cpumask_any_and(data->affinity, cpu_online_mask)
152
115
                    >= nr_cpu_ids) {
153
116
                        /*
154
117
                         * Save it for phase 2 processing
160
123
                        /*
161
124
                         * Al three are essential, currently WARN_ON.. maybe panic?
162
125
                         */
163
 
                        if (desc->chip && desc->chip->disable &&
164
 
                                desc->chip->enable && desc->chip->set_affinity) {
165
 
                                desc->chip->disable(irq);
166
 
                                desc->chip->set_affinity(irq,
167
 
                                                         cpumask_of(new_cpu));
168
 
                                desc->chip->enable(irq);
 
126
                        if (chip && chip->irq_disable &&
 
127
                                chip->irq_enable && chip->irq_set_affinity) {
 
128
                                chip->irq_disable(data);
 
129
                                chip->irq_set_affinity(data,
 
130
                                                       cpumask_of(new_cpu), false);
 
131
                                chip->irq_enable(data);
169
132
                        } else {
170
 
                                WARN_ON((!(desc->chip) || !(desc->chip->disable) ||
171
 
                                                !(desc->chip->enable) ||
172
 
                                                !(desc->chip->set_affinity)));
 
133
                                WARN_ON((!chip || !chip->irq_disable ||
 
134
                                         !chip->irq_enable ||
 
135
                                         !chip->irq_set_affinity));
173
136
                        }
174
137
                }
175
138
        }