tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/urgent
head:   f60606c4ce402963dc552c62910ffa7080b4a628
commit: f60606c4ce402963dc552c62910ffa7080b4a628 [3/3] x86/apic/vector: Handle 
vector release on CPU unplug correctly
config: x86_64-randconfig-x017-201807 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        git checkout f60606c4ce402963dc552c62910ffa7080b4a628
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   arch/x86//kernel/apic/vector.c: In function 'apic_update_vector':
>> arch/x86//kernel/apic/vector.c:151:11: error: 'struct apic' has no member 
>> named 'vector'
     if (!apic->vector || apicd->vector == MANAGED_IRQ_SHUTDOWN_VECTOR)
              ^~

vim +151 arch/x86//kernel/apic/vector.c

   131  
   132  static void apic_update_vector(struct irq_data *irqd, unsigned int 
newvec,
   133                                 unsigned int newcpu)
   134  {
   135          struct apic_chip_data *apicd = apic_chip_data(irqd);
   136          struct irq_desc *desc = irq_data_to_desc(irqd);
   137          bool managed = irqd_affinity_is_managed(irqd);
   138  
   139          lockdep_assert_held(&vector_lock);
   140  
   141          trace_vector_update(irqd->irq, newvec, newcpu, apicd->vector,
   142                              apicd->cpu);
   143  
   144          /*
   145           * If there is no vector associated or if the associated vector 
is
   146           * the shutdown vector, which is associated to make PCI/MSI
   147           * shutdown mode work, then there is nothing to release. Clear 
out
   148           * prev_vector for this and the offlined target case.
   149           */
   150          apicd->prev_vector = 0;
 > 151          if (!apic->vector || apicd->vector == 
 > MANAGED_IRQ_SHUTDOWN_VECTOR)
   152                  goto setnew;
   153          /*
   154           * If the target CPU of the previous vector is online, then mark
   155           * the vector as move in progress and store it for cleanup when 
the
   156           * first interrupt on the new vector arrives. If the target CPU 
is
   157           * offline then the regular release mechanism via the cleanup
   158           * vector is not possible and the vector can be immediately 
freed
   159           * in the underlying matrix allocator.
   160           */
   161          if (cpu_online(apicd->cpu)) {
   162                  apicd->move_in_progress = true;
   163                  apicd->prev_vector = apicd->vector;
   164                  apicd->prev_cpu = apicd->cpu;
   165          } else {
   166                  irq_matrix_free(vector_matrix, apicd->cpu, 
apicd->vector,
   167                                  managed);
   168          }
   169  
   170  setnew:
   171          apicd->vector = newvec;
   172          apicd->cpu = newcpu;
   173          BUG_ON(!IS_ERR_OR_NULL(per_cpu(vector_irq, newcpu)[newvec]));
   174          per_cpu(vector_irq, newcpu)[newvec] = desc;
   175  }
   176  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to