Compare commits
11 Commits
v2.6.37-rc
...
v2.6.12.2
| Author | SHA1 | Date | |
|---|---|---|---|
| 8880093614 | |||
| 1b1f824632 | |||
| 1ef0867a52 | |||
| 2e8e121926 | |||
| 26b1062c23 | |||
| 986bd43014 | |||
| 906aa4d200 | |||
| 49bbb3966e | |||
| f5b3c54381 | |||
| df0112ae92 | |||
| fe3d5c8793 |
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
||||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 12
|
||||
EXTRAVERSION =
|
||||
EXTRAVERSION = .2
|
||||
NAME=Woozy Numbat
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
||||
@ -945,6 +945,13 @@ access_uarea (struct task_struct *child, unsigned long addr,
|
||||
*data = (pt->cr_ipsr & IPSR_MASK);
|
||||
return 0;
|
||||
|
||||
case PT_AR_RSC:
|
||||
if (write_access)
|
||||
pt->ar_rsc = *data | (3 << 2); /* force PL3 */
|
||||
else
|
||||
*data = pt->ar_rsc;
|
||||
return 0;
|
||||
|
||||
case PT_AR_RNAT:
|
||||
urbs_end = ia64_get_user_rbs_end(child, pt, NULL);
|
||||
rnat_addr = (long) ia64_rse_rnat_addr((long *)
|
||||
@ -996,9 +1003,6 @@ access_uarea (struct task_struct *child, unsigned long addr,
|
||||
case PT_AR_BSPSTORE:
|
||||
ptr = pt_reg_addr(pt, ar_bspstore);
|
||||
break;
|
||||
case PT_AR_RSC:
|
||||
ptr = pt_reg_addr(pt, ar_rsc);
|
||||
break;
|
||||
case PT_AR_UNAT:
|
||||
ptr = pt_reg_addr(pt, ar_unat);
|
||||
break;
|
||||
@ -1234,7 +1238,7 @@ ptrace_getregs (struct task_struct *child, struct pt_all_user_regs __user *ppr)
|
||||
static long
|
||||
ptrace_setregs (struct task_struct *child, struct pt_all_user_regs __user *ppr)
|
||||
{
|
||||
unsigned long psr, ec, lc, rnat, bsp, cfm, nat_bits, val = 0;
|
||||
unsigned long psr, rsc, ec, lc, rnat, bsp, cfm, nat_bits, val = 0;
|
||||
struct unw_frame_info info;
|
||||
struct switch_stack *sw;
|
||||
struct ia64_fpreg fpval;
|
||||
@ -1267,7 +1271,7 @@ ptrace_setregs (struct task_struct *child, struct pt_all_user_regs __user *ppr)
|
||||
/* app regs */
|
||||
|
||||
retval |= __get_user(pt->ar_pfs, &ppr->ar[PT_AUR_PFS]);
|
||||
retval |= __get_user(pt->ar_rsc, &ppr->ar[PT_AUR_RSC]);
|
||||
retval |= __get_user(rsc, &ppr->ar[PT_AUR_RSC]);
|
||||
retval |= __get_user(pt->ar_bspstore, &ppr->ar[PT_AUR_BSPSTORE]);
|
||||
retval |= __get_user(pt->ar_unat, &ppr->ar[PT_AUR_UNAT]);
|
||||
retval |= __get_user(pt->ar_ccv, &ppr->ar[PT_AUR_CCV]);
|
||||
@ -1365,6 +1369,7 @@ ptrace_setregs (struct task_struct *child, struct pt_all_user_regs __user *ppr)
|
||||
retval |= __get_user(nat_bits, &ppr->nat);
|
||||
|
||||
retval |= access_uarea(child, PT_CR_IPSR, &psr, 1);
|
||||
retval |= access_uarea(child, PT_AR_RSC, &rsc, 1);
|
||||
retval |= access_uarea(child, PT_AR_EC, &ec, 1);
|
||||
retval |= access_uarea(child, PT_AR_LC, &lc, 1);
|
||||
retval |= access_uarea(child, PT_AR_RNAT, &rnat, 1);
|
||||
|
||||
@ -94,7 +94,7 @@ sys_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, long arg2,
|
||||
static long
|
||||
restore_sigcontext (struct sigcontext __user *sc, struct sigscratch *scr)
|
||||
{
|
||||
unsigned long ip, flags, nat, um, cfm;
|
||||
unsigned long ip, flags, nat, um, cfm, rsc;
|
||||
long err;
|
||||
|
||||
/* Always make any pending restarted system calls return -EINTR */
|
||||
@ -106,7 +106,7 @@ restore_sigcontext (struct sigcontext __user *sc, struct sigscratch *scr)
|
||||
err |= __get_user(ip, &sc->sc_ip); /* instruction pointer */
|
||||
err |= __get_user(cfm, &sc->sc_cfm);
|
||||
err |= __get_user(um, &sc->sc_um); /* user mask */
|
||||
err |= __get_user(scr->pt.ar_rsc, &sc->sc_ar_rsc);
|
||||
err |= __get_user(rsc, &sc->sc_ar_rsc);
|
||||
err |= __get_user(scr->pt.ar_unat, &sc->sc_ar_unat);
|
||||
err |= __get_user(scr->pt.ar_fpsr, &sc->sc_ar_fpsr);
|
||||
err |= __get_user(scr->pt.ar_pfs, &sc->sc_ar_pfs);
|
||||
@ -119,6 +119,7 @@ restore_sigcontext (struct sigcontext __user *sc, struct sigscratch *scr)
|
||||
err |= __copy_from_user(&scr->pt.r15, &sc->sc_gr[15], 8); /* r15 */
|
||||
|
||||
scr->pt.cr_ifs = cfm | (1UL << 63);
|
||||
scr->pt.ar_rsc = rsc | (3 << 2); /* force PL3 */
|
||||
|
||||
/* establish new instruction pointer: */
|
||||
scr->pt.cr_iip = ip & ~0x3UL;
|
||||
|
||||
@ -435,6 +435,7 @@ acpi_pci_irq_enable (
|
||||
/* Interrupt Line values above 0xF are forbidden */
|
||||
if (dev->irq >= 0 && (dev->irq <= 0xF)) {
|
||||
printk(" - using IRQ %d\n", dev->irq);
|
||||
acpi_register_gsi(dev->irq, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW);
|
||||
return_VALUE(0);
|
||||
}
|
||||
else {
|
||||
|
||||
@ -2307,6 +2307,7 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
|
||||
tso = e1000_tso(adapter, skb);
|
||||
if (tso < 0) {
|
||||
dev_kfree_skb_any(skb);
|
||||
spin_unlock_irqrestore(&adapter->tx_lock, flags);
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
|
||||
@ -396,7 +396,7 @@ int pci_register_driver(struct pci_driver *drv)
|
||||
/* FIXME, once all of the existing PCI drivers have been fixed to set
|
||||
* the pci shutdown function, this test can go away. */
|
||||
if (!drv->driver.shutdown)
|
||||
drv->driver.shutdown = pci_device_shutdown,
|
||||
drv->driver.shutdown = pci_device_shutdown;
|
||||
drv->driver.owner = drv->owner;
|
||||
drv->driver.kobj.ktype = &pci_driver_kobj_type;
|
||||
pci_init_dynids(&drv->dynids);
|
||||
|
||||
@ -1150,7 +1150,7 @@ iospace_error_exit:
|
||||
*/
|
||||
int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
|
||||
{
|
||||
int ret;
|
||||
int ret = -ENODEV;
|
||||
device_reg_t __iomem *reg;
|
||||
struct Scsi_Host *host;
|
||||
scsi_qla_host_t *ha;
|
||||
@ -1161,7 +1161,7 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
|
||||
fc_port_t *fcport;
|
||||
|
||||
if (pci_enable_device(pdev))
|
||||
return -1;
|
||||
goto probe_out;
|
||||
|
||||
host = scsi_host_alloc(&qla2x00_driver_template,
|
||||
sizeof(scsi_qla_host_t));
|
||||
@ -1183,9 +1183,8 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
|
||||
|
||||
/* Configure PCI I/O space */
|
||||
ret = qla2x00_iospace_config(ha);
|
||||
if (ret != 0) {
|
||||
goto probe_alloc_failed;
|
||||
}
|
||||
if (ret)
|
||||
goto probe_failed;
|
||||
|
||||
/* Sanitize the information from PCI BIOS. */
|
||||
host->irq = pdev->irq;
|
||||
@ -1258,23 +1257,10 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
|
||||
qla_printk(KERN_WARNING, ha,
|
||||
"[ERROR] Failed to allocate memory for adapter\n");
|
||||
|
||||
goto probe_alloc_failed;
|
||||
ret = -ENOMEM;
|
||||
goto probe_failed;
|
||||
}
|
||||
|
||||
pci_set_drvdata(pdev, ha);
|
||||
host->this_id = 255;
|
||||
host->cmd_per_lun = 3;
|
||||
host->unique_id = ha->instance;
|
||||
host->max_cmd_len = MAX_CMDSZ;
|
||||
host->max_channel = ha->ports - 1;
|
||||
host->max_id = ha->max_targets;
|
||||
host->max_lun = ha->max_luns;
|
||||
host->transportt = qla2xxx_transport_template;
|
||||
if (scsi_add_host(host, &pdev->dev))
|
||||
goto probe_alloc_failed;
|
||||
|
||||
qla2x00_alloc_sysfs_attr(ha);
|
||||
|
||||
if (qla2x00_initialize_adapter(ha) &&
|
||||
!(ha->device_flags & DFLG_NO_CABLE)) {
|
||||
|
||||
@ -1285,11 +1271,10 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
|
||||
"Adapter flags %x.\n",
|
||||
ha->host_no, ha->device_flags));
|
||||
|
||||
ret = -ENODEV;
|
||||
goto probe_failed;
|
||||
}
|
||||
|
||||
qla2x00_init_host_attr(ha);
|
||||
|
||||
/*
|
||||
* Startup the kernel thread for this host adapter
|
||||
*/
|
||||
@ -1299,17 +1284,26 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
|
||||
qla_printk(KERN_WARNING, ha,
|
||||
"Unable to start DPC thread!\n");
|
||||
|
||||
ret = -ENODEV;
|
||||
goto probe_failed;
|
||||
}
|
||||
wait_for_completion(&ha->dpc_inited);
|
||||
|
||||
host->this_id = 255;
|
||||
host->cmd_per_lun = 3;
|
||||
host->unique_id = ha->instance;
|
||||
host->max_cmd_len = MAX_CMDSZ;
|
||||
host->max_channel = ha->ports - 1;
|
||||
host->max_lun = MAX_LUNS;
|
||||
host->transportt = qla2xxx_transport_template;
|
||||
|
||||
if (IS_QLA2100(ha) || IS_QLA2200(ha))
|
||||
ret = request_irq(host->irq, qla2100_intr_handler,
|
||||
SA_INTERRUPT|SA_SHIRQ, ha->brd_info->drv_name, ha);
|
||||
else
|
||||
ret = request_irq(host->irq, qla2300_intr_handler,
|
||||
SA_INTERRUPT|SA_SHIRQ, ha->brd_info->drv_name, ha);
|
||||
if (ret != 0) {
|
||||
if (ret) {
|
||||
qla_printk(KERN_WARNING, ha,
|
||||
"Failed to reserve interrupt %d already in use.\n",
|
||||
host->irq);
|
||||
@ -1363,9 +1357,18 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
|
||||
msleep(10);
|
||||
}
|
||||
|
||||
pci_set_drvdata(pdev, ha);
|
||||
ha->flags.init_done = 1;
|
||||
num_hosts++;
|
||||
|
||||
ret = scsi_add_host(host, &pdev->dev);
|
||||
if (ret)
|
||||
goto probe_failed;
|
||||
|
||||
qla2x00_alloc_sysfs_attr(ha);
|
||||
|
||||
qla2x00_init_host_attr(ha);
|
||||
|
||||
qla_printk(KERN_INFO, ha, "\n"
|
||||
" QLogic Fibre Channel HBA Driver: %s\n"
|
||||
" QLogic %s - %s\n"
|
||||
@ -1384,9 +1387,6 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
|
||||
probe_failed:
|
||||
fc_remove_host(ha->host);
|
||||
|
||||
scsi_remove_host(host);
|
||||
|
||||
probe_alloc_failed:
|
||||
qla2x00_free_device(ha);
|
||||
|
||||
scsi_host_put(host);
|
||||
@ -1394,7 +1394,8 @@ probe_alloc_failed:
|
||||
probe_disable_device:
|
||||
pci_disable_device(pdev);
|
||||
|
||||
return -1;
|
||||
probe_out:
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(qla2x00_probe_one);
|
||||
|
||||
|
||||
@ -649,6 +649,7 @@ static inline int de_thread(struct task_struct *tsk)
|
||||
}
|
||||
sig->group_exit_task = NULL;
|
||||
sig->notify_count = 0;
|
||||
sig->real_timer.data = (unsigned long)current;
|
||||
spin_unlock_irq(lock);
|
||||
|
||||
/*
|
||||
|
||||
@ -116,7 +116,8 @@ __asm__ __volatile__(
|
||||
"orb $1,%%al\n"
|
||||
"3:"
|
||||
:"=a" (__res), "=&S" (d0), "=&D" (d1)
|
||||
:"1" (cs),"2" (ct));
|
||||
:"1" (cs),"2" (ct)
|
||||
:"memory");
|
||||
return __res;
|
||||
}
|
||||
|
||||
@ -138,8 +139,9 @@ __asm__ __volatile__(
|
||||
"3:\tsbbl %%eax,%%eax\n\t"
|
||||
"orb $1,%%al\n"
|
||||
"4:"
|
||||
:"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2)
|
||||
:"1" (cs),"2" (ct),"3" (count));
|
||||
:"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2)
|
||||
:"1" (cs),"2" (ct),"3" (count)
|
||||
:"memory");
|
||||
return __res;
|
||||
}
|
||||
|
||||
@ -158,7 +160,9 @@ __asm__ __volatile__(
|
||||
"movl $1,%1\n"
|
||||
"2:\tmovl %1,%0\n\t"
|
||||
"decl %0"
|
||||
:"=a" (__res), "=&S" (d0) : "1" (s),"0" (c));
|
||||
:"=a" (__res), "=&S" (d0)
|
||||
:"1" (s),"0" (c)
|
||||
:"memory");
|
||||
return __res;
|
||||
}
|
||||
|
||||
@ -175,7 +179,9 @@ __asm__ __volatile__(
|
||||
"leal -1(%%esi),%0\n"
|
||||
"2:\ttestb %%al,%%al\n\t"
|
||||
"jne 1b"
|
||||
:"=g" (__res), "=&S" (d0), "=&a" (d1) :"0" (0),"1" (s),"2" (c));
|
||||
:"=g" (__res), "=&S" (d0), "=&a" (d1)
|
||||
:"0" (0),"1" (s),"2" (c)
|
||||
:"memory");
|
||||
return __res;
|
||||
}
|
||||
|
||||
@ -189,7 +195,9 @@ __asm__ __volatile__(
|
||||
"scasb\n\t"
|
||||
"notl %0\n\t"
|
||||
"decl %0"
|
||||
:"=c" (__res), "=&D" (d0) :"1" (s),"a" (0), "0" (0xffffffffu));
|
||||
:"=c" (__res), "=&D" (d0)
|
||||
:"1" (s),"a" (0), "0" (0xffffffffu)
|
||||
:"memory");
|
||||
return __res;
|
||||
}
|
||||
|
||||
@ -333,7 +341,9 @@ __asm__ __volatile__(
|
||||
"je 1f\n\t"
|
||||
"movl $1,%0\n"
|
||||
"1:\tdecl %0"
|
||||
:"=D" (__res), "=&c" (d0) : "a" (c),"0" (cs),"1" (count));
|
||||
:"=D" (__res), "=&c" (d0)
|
||||
:"a" (c),"0" (cs),"1" (count)
|
||||
:"memory");
|
||||
return __res;
|
||||
}
|
||||
|
||||
@ -369,7 +379,7 @@ __asm__ __volatile__(
|
||||
"je 2f\n\t"
|
||||
"stosb\n"
|
||||
"2:"
|
||||
: "=&c" (d0), "=&D" (d1)
|
||||
:"=&c" (d0), "=&D" (d1)
|
||||
:"a" (c), "q" (count), "0" (count/4), "1" ((long) s)
|
||||
:"memory");
|
||||
return (s);
|
||||
@ -392,7 +402,8 @@ __asm__ __volatile__(
|
||||
"jne 1b\n"
|
||||
"3:\tsubl %2,%0"
|
||||
:"=a" (__res), "=&d" (d0)
|
||||
:"c" (s),"1" (count));
|
||||
:"c" (s),"1" (count)
|
||||
:"memory");
|
||||
return __res;
|
||||
}
|
||||
/* end of additional stuff */
|
||||
@ -473,7 +484,8 @@ static inline void * memscan(void * addr, int c, size_t size)
|
||||
"dec %%edi\n"
|
||||
"1:"
|
||||
: "=D" (addr), "=c" (size)
|
||||
: "0" (addr), "1" (size), "a" (c));
|
||||
: "0" (addr), "1" (size), "a" (c)
|
||||
: "memory");
|
||||
return addr;
|
||||
}
|
||||
|
||||
|
||||
@ -1164,7 +1164,7 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
|
||||
{
|
||||
pgd_t *pgd;
|
||||
unsigned long next;
|
||||
unsigned long end = addr + size;
|
||||
unsigned long end = addr + PAGE_ALIGN(size);
|
||||
struct mm_struct *mm = vma->vm_mm;
|
||||
int err;
|
||||
|
||||
|
||||
@ -315,8 +315,8 @@ err:
|
||||
static void netlink_remove(struct sock *sk)
|
||||
{
|
||||
netlink_table_grab();
|
||||
nl_table[sk->sk_protocol].hash.entries--;
|
||||
sk_del_node_init(sk);
|
||||
if (sk_del_node_init(sk))
|
||||
nl_table[sk->sk_protocol].hash.entries--;
|
||||
if (nlk_sk(sk)->groups)
|
||||
__sk_del_bind_node(sk);
|
||||
netlink_table_ungrab();
|
||||
@ -429,7 +429,12 @@ retry:
|
||||
err = netlink_insert(sk, pid);
|
||||
if (err == -EADDRINUSE)
|
||||
goto retry;
|
||||
return 0;
|
||||
|
||||
/* If 2 threads race to autobind, that is fine. */
|
||||
if (err == -EBUSY)
|
||||
err = 0;
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static inline int netlink_capable(struct socket *sock, unsigned int flag)
|
||||
|
||||
Reference in New Issue
Block a user