On Fri, 30 Apr 2010, Ben Hutchings wrote:On Fri, 2010-04-30 at 13:23 -0700, Peter P Waskiewicz Jr wrote:+int irq_register_affinity_hint(unsigned int irq, const struct cpumask *m)
+{
+ struct irq_desc *desc = irq_to_desc(irq);
+ unsigned long flags;
+
+ if (!desc)
+ return -EINVAL;
Is it possible for irq_to_desc(irq) to be NULL? This function already
assumes that the caller 'owns' the IRQ.
Oh come on. Driver writers get everything wrong and not checking on an
invalid irq number is better than crashing :)
+static int irq_affinity_hint_proc_show(struct seq_file *m, void *v)
+{
+ struct irq_desc *desc = irq_to_desc((long)m->private);
+ unsigned long flags;
+ cpumask_var_t mask;
+ int ret = -EINVAL;
I don't think this should be returning -EINVAL if the affinity hint is
missing. That means 'invalid argument', but there is nothing invalid
about trying to read() the corresponding file. The file should simply
be empty if there is no hint. (Actually it might be better if it didn't
appear at all, but that would be a pain to implement.)
I agree that -EINVAL is not really a good match.
How about just returning CPU_MASK_ALL if desc->affinity_hint is not
set ?