Showing error 539

User: Jiri Slaby
Error type: Calling function from invalid context
Error type description: Some function is called at inappropriate place like sleep inside critical sections or interrupt handlers
File location: drivers/net/qla3xxx.c
Line in file: 113
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:19:02 UTC


Source:

  83typedef struct {
  84        PHY_DEVICE_et phyDevice;
  85        u32                phyIdOUI;
  86        u16                phyIdModel;
  87        char                 *name;
  88} PHY_DEVICE_INFO_t;
  89
  90static const PHY_DEVICE_INFO_t PHY_DEVICES[] =
  91        {{PHY_TYPE_UNKNOWN,    0x000000, 0x0, "PHY_TYPE_UNKNOWN"},
  92         {PHY_VITESSE_VSC8211, 0x0003f1, 0xb, "PHY_VITESSE_VSC8211"},
  93         {PHY_AGERE_ET1011C,   0x00a0bc, 0x1, "PHY_AGERE_ET1011C"},
  94};
  95
  96
  97/*
  98 * Caller must take hw_lock.
  99 */
 100static int ql_sem_spinlock(struct ql3_adapter *qdev,
 101                            u32 sem_mask, u32 sem_bits)
 102{
 103        struct ql3xxx_port_registers __iomem *port_regs = qdev->mem_map_registers;
 104        u32 value;
 105        unsigned int seconds = 3;
 106
 107        do {
 108                writel((sem_mask | sem_bits),
 109                       &port_regs->CommonRegs.semaphoreReg);
 110                value = readl(&port_regs->CommonRegs.semaphoreReg);
 111                if ((value & (sem_mask >> 16)) == sem_bits)
 112                        return 0;
 113                ssleep(1);
 114        } while(--seconds);
 115        return -1;
 116}
 117
 118static void ql_sem_unlock(struct ql3_adapter *qdev, u32 sem_mask)
 119{
 120        struct ql3xxx_port_registers __iomem *port_regs = qdev->mem_map_registers;
 121        writel(sem_mask, &port_regs->CommonRegs.semaphoreReg);
 122        readl(&port_regs->CommonRegs.semaphoreReg);
 123}
Show full sources