You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6
* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6: parisc: add tty driver to PDC console drivers/parisc/iosapic.c: Remove unnecessary kzalloc cast parisc: remove homegrown L1_CACHE_ALIGN macro arch/parisc: Removing undead ifdef CONFIG_PA20 parisc: unwind - optimise linked-list searches for modules parisc: change to new flag variable drivers/char/agp/parisc-agp.c: eliminate memory leak parisc: kill __do_IRQ parisc: convert eisa interrupts to flow handlers parisc: convert gsc and dino pci interrupts to flow handlers parisc: convert suckyio interrupts to flow handlers parisc: convert iosapic interrupts to proper flow handlers parisc: convert cpu interrupts to proper flow handlers parisc: lay groundwork for killing __do_IRQ parisc: add prlimit64 syscall parisc: squelch warning when using dev_get_stats
This commit is contained in:
+9
-20
@@ -296,10 +296,9 @@ static struct pci_port_ops dino_port_ops = {
|
||||
.outl = dino_out32
|
||||
};
|
||||
|
||||
static void dino_disable_irq(unsigned int irq)
|
||||
static void dino_mask_irq(unsigned int irq)
|
||||
{
|
||||
struct irq_desc *desc = irq_to_desc(irq);
|
||||
struct dino_device *dino_dev = desc->chip_data;
|
||||
struct dino_device *dino_dev = get_irq_chip_data(irq);
|
||||
int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS);
|
||||
|
||||
DBG(KERN_WARNING "%s(0x%p, %d)\n", __func__, dino_dev, irq);
|
||||
@@ -309,10 +308,9 @@ static void dino_disable_irq(unsigned int irq)
|
||||
__raw_writel(dino_dev->imr, dino_dev->hba.base_addr+DINO_IMR);
|
||||
}
|
||||
|
||||
static void dino_enable_irq(unsigned int irq)
|
||||
static void dino_unmask_irq(unsigned int irq)
|
||||
{
|
||||
struct irq_desc *desc = irq_to_desc(irq);
|
||||
struct dino_device *dino_dev = desc->chip_data;
|
||||
struct dino_device *dino_dev = get_irq_chip_data(irq);
|
||||
int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS);
|
||||
u32 tmp;
|
||||
|
||||
@@ -347,20 +345,11 @@ static void dino_enable_irq(unsigned int irq)
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned int dino_startup_irq(unsigned int irq)
|
||||
{
|
||||
dino_enable_irq(irq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct irq_chip dino_interrupt_type = {
|
||||
.name = "GSC-PCI",
|
||||
.startup = dino_startup_irq,
|
||||
.shutdown = dino_disable_irq,
|
||||
.enable = dino_enable_irq,
|
||||
.disable = dino_disable_irq,
|
||||
.ack = no_ack_irq,
|
||||
.end = no_end_irq,
|
||||
.name = "GSC-PCI",
|
||||
.unmask = dino_unmask_irq,
|
||||
.mask = dino_mask_irq,
|
||||
.ack = no_ack_irq,
|
||||
};
|
||||
|
||||
|
||||
@@ -391,7 +380,7 @@ ilr_again:
|
||||
int irq = dino_dev->global_irq[local_irq];
|
||||
DBG(KERN_DEBUG "%s(%d, %p) mask 0x%x\n",
|
||||
__func__, irq, intr_dev, mask);
|
||||
__do_IRQ(irq);
|
||||
generic_handle_irq(irq);
|
||||
mask &= ~(1 << local_irq);
|
||||
} while (mask);
|
||||
|
||||
|
||||
+10
-19
@@ -144,7 +144,7 @@ static unsigned int eisa_irq_level __read_mostly; /* default to edge triggered *
|
||||
|
||||
|
||||
/* called by free irq */
|
||||
static void eisa_disable_irq(unsigned int irq)
|
||||
static void eisa_mask_irq(unsigned int irq)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
@@ -164,7 +164,7 @@ static void eisa_disable_irq(unsigned int irq)
|
||||
}
|
||||
|
||||
/* called by request irq */
|
||||
static void eisa_enable_irq(unsigned int irq)
|
||||
static void eisa_unmask_irq(unsigned int irq)
|
||||
{
|
||||
unsigned long flags;
|
||||
EISA_DBG("enable irq %d\n", irq);
|
||||
@@ -182,20 +182,11 @@ static void eisa_enable_irq(unsigned int irq)
|
||||
EISA_DBG("pic1 mask %02x\n", eisa_in8(0xa1));
|
||||
}
|
||||
|
||||
static unsigned int eisa_startup_irq(unsigned int irq)
|
||||
{
|
||||
eisa_enable_irq(irq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct irq_chip eisa_interrupt_type = {
|
||||
.name = "EISA",
|
||||
.startup = eisa_startup_irq,
|
||||
.shutdown = eisa_disable_irq,
|
||||
.enable = eisa_enable_irq,
|
||||
.disable = eisa_disable_irq,
|
||||
.ack = no_ack_irq,
|
||||
.end = no_end_irq,
|
||||
.name = "EISA",
|
||||
.unmask = eisa_unmask_irq,
|
||||
.mask = eisa_mask_irq,
|
||||
.ack = no_ack_irq,
|
||||
};
|
||||
|
||||
static irqreturn_t eisa_irq(int wax_irq, void *intr_dev)
|
||||
@@ -233,7 +224,7 @@ static irqreturn_t eisa_irq(int wax_irq, void *intr_dev)
|
||||
}
|
||||
spin_unlock_irqrestore(&eisa_irq_lock, flags);
|
||||
|
||||
__do_IRQ(irq);
|
||||
generic_handle_irq(irq);
|
||||
|
||||
spin_lock_irqsave(&eisa_irq_lock, flags);
|
||||
/* unmask */
|
||||
@@ -346,10 +337,10 @@ static int __init eisa_probe(struct parisc_device *dev)
|
||||
}
|
||||
|
||||
/* Reserve IRQ2 */
|
||||
irq_to_desc(2)->action = &irq2_action;
|
||||
|
||||
setup_irq(2, &irq2_action);
|
||||
for (i = 0; i < 16; i++) {
|
||||
irq_to_desc(i)->chip = &eisa_interrupt_type;
|
||||
set_irq_chip_and_handler(i, &eisa_interrupt_type,
|
||||
handle_level_irq);
|
||||
}
|
||||
|
||||
EISA_bus = 1;
|
||||
|
||||
+12
-24
@@ -86,7 +86,7 @@ irqreturn_t gsc_asic_intr(int gsc_asic_irq, void *dev)
|
||||
do {
|
||||
int local_irq = __ffs(irr);
|
||||
unsigned int irq = gsc_asic->global_irq[local_irq];
|
||||
__do_IRQ(irq);
|
||||
generic_handle_irq(irq);
|
||||
irr &= ~(1 << local_irq);
|
||||
} while (irr);
|
||||
|
||||
@@ -105,10 +105,9 @@ int gsc_find_local_irq(unsigned int irq, int *global_irqs, int limit)
|
||||
return NO_IRQ;
|
||||
}
|
||||
|
||||
static void gsc_asic_disable_irq(unsigned int irq)
|
||||
static void gsc_asic_mask_irq(unsigned int irq)
|
||||
{
|
||||
struct irq_desc *desc = irq_to_desc(irq);
|
||||
struct gsc_asic *irq_dev = desc->chip_data;
|
||||
struct gsc_asic *irq_dev = get_irq_chip_data(irq);
|
||||
int local_irq = gsc_find_local_irq(irq, irq_dev->global_irq, 32);
|
||||
u32 imr;
|
||||
|
||||
@@ -121,10 +120,9 @@ static void gsc_asic_disable_irq(unsigned int irq)
|
||||
gsc_writel(imr, irq_dev->hpa + OFFSET_IMR);
|
||||
}
|
||||
|
||||
static void gsc_asic_enable_irq(unsigned int irq)
|
||||
static void gsc_asic_unmask_irq(unsigned int irq)
|
||||
{
|
||||
struct irq_desc *desc = irq_to_desc(irq);
|
||||
struct gsc_asic *irq_dev = desc->chip_data;
|
||||
struct gsc_asic *irq_dev = get_irq_chip_data(irq);
|
||||
int local_irq = gsc_find_local_irq(irq, irq_dev->global_irq, 32);
|
||||
u32 imr;
|
||||
|
||||
@@ -141,33 +139,23 @@ static void gsc_asic_enable_irq(unsigned int irq)
|
||||
*/
|
||||
}
|
||||
|
||||
static unsigned int gsc_asic_startup_irq(unsigned int irq)
|
||||
{
|
||||
gsc_asic_enable_irq(irq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct irq_chip gsc_asic_interrupt_type = {
|
||||
.name = "GSC-ASIC",
|
||||
.startup = gsc_asic_startup_irq,
|
||||
.shutdown = gsc_asic_disable_irq,
|
||||
.enable = gsc_asic_enable_irq,
|
||||
.disable = gsc_asic_disable_irq,
|
||||
.ack = no_ack_irq,
|
||||
.end = no_end_irq,
|
||||
.name = "GSC-ASIC",
|
||||
.unmask = gsc_asic_unmask_irq,
|
||||
.mask = gsc_asic_mask_irq,
|
||||
.ack = no_ack_irq,
|
||||
};
|
||||
|
||||
int gsc_assign_irq(struct irq_chip *type, void *data)
|
||||
{
|
||||
static int irq = GSC_IRQ_BASE;
|
||||
struct irq_desc *desc;
|
||||
|
||||
if (irq > GSC_IRQ_MAX)
|
||||
return NO_IRQ;
|
||||
|
||||
desc = irq_to_desc(irq);
|
||||
desc->chip = type;
|
||||
desc->chip_data = data;
|
||||
set_irq_chip_and_handler(irq, type, handle_level_irq);
|
||||
set_irq_chip_data(irq, data);
|
||||
|
||||
return irq++;
|
||||
}
|
||||
|
||||
|
||||
+12
-44
@@ -615,17 +615,10 @@ iosapic_set_irt_data( struct vector_info *vi, u32 *dp0, u32 *dp1)
|
||||
}
|
||||
|
||||
|
||||
static struct vector_info *iosapic_get_vector(unsigned int irq)
|
||||
{
|
||||
struct irq_desc *desc = irq_to_desc(irq);
|
||||
|
||||
return desc->chip_data;
|
||||
}
|
||||
|
||||
static void iosapic_disable_irq(unsigned int irq)
|
||||
static void iosapic_mask_irq(unsigned int irq)
|
||||
{
|
||||
unsigned long flags;
|
||||
struct vector_info *vi = iosapic_get_vector(irq);
|
||||
struct vector_info *vi = get_irq_chip_data(irq);
|
||||
u32 d0, d1;
|
||||
|
||||
spin_lock_irqsave(&iosapic_lock, flags);
|
||||
@@ -635,9 +628,9 @@ static void iosapic_disable_irq(unsigned int irq)
|
||||
spin_unlock_irqrestore(&iosapic_lock, flags);
|
||||
}
|
||||
|
||||
static void iosapic_enable_irq(unsigned int irq)
|
||||
static void iosapic_unmask_irq(unsigned int irq)
|
||||
{
|
||||
struct vector_info *vi = iosapic_get_vector(irq);
|
||||
struct vector_info *vi = get_irq_chip_data(irq);
|
||||
u32 d0, d1;
|
||||
|
||||
/* data is initialized by fixup_irq */
|
||||
@@ -676,36 +669,14 @@ printk("\n");
|
||||
DBG(KERN_DEBUG "enable_irq(%d): eoi(%p, 0x%x)\n", irq,
|
||||
vi->eoi_addr, vi->eoi_data);
|
||||
iosapic_eoi(vi->eoi_addr, vi->eoi_data);
|
||||
}
|
||||
|
||||
/*
|
||||
* PARISC only supports PCI devices below I/O SAPIC.
|
||||
* PCI only supports level triggered in order to share IRQ lines.
|
||||
* ergo I/O SAPIC must always issue EOI on parisc.
|
||||
*
|
||||
* i386/ia64 support ISA devices and have to deal with
|
||||
* edge-triggered interrupts too.
|
||||
*/
|
||||
static void iosapic_end_irq(unsigned int irq)
|
||||
{
|
||||
struct vector_info *vi = iosapic_get_vector(irq);
|
||||
DBG(KERN_DEBUG "end_irq(%d): eoi(%p, 0x%x)\n", irq,
|
||||
vi->eoi_addr, vi->eoi_data);
|
||||
iosapic_eoi(vi->eoi_addr, vi->eoi_data);
|
||||
cpu_end_irq(irq);
|
||||
}
|
||||
|
||||
static unsigned int iosapic_startup_irq(unsigned int irq)
|
||||
{
|
||||
iosapic_enable_irq(irq);
|
||||
return 0;
|
||||
cpu_eoi_irq(irq);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
static int iosapic_set_affinity_irq(unsigned int irq,
|
||||
const struct cpumask *dest)
|
||||
{
|
||||
struct vector_info *vi = iosapic_get_vector(irq);
|
||||
struct vector_info *vi = get_irq_chip_data(irq);
|
||||
u32 d0, d1, dummy_d0;
|
||||
unsigned long flags;
|
||||
int dest_cpu;
|
||||
@@ -730,13 +701,10 @@ static int iosapic_set_affinity_irq(unsigned int irq,
|
||||
#endif
|
||||
|
||||
static struct irq_chip iosapic_interrupt_type = {
|
||||
.name = "IO-SAPIC-level",
|
||||
.startup = iosapic_startup_irq,
|
||||
.shutdown = iosapic_disable_irq,
|
||||
.enable = iosapic_enable_irq,
|
||||
.disable = iosapic_disable_irq,
|
||||
.ack = cpu_ack_irq,
|
||||
.end = iosapic_end_irq,
|
||||
.name = "IO-SAPIC-level",
|
||||
.unmask = iosapic_unmask_irq,
|
||||
.mask = iosapic_mask_irq,
|
||||
.ack = cpu_ack_irq,
|
||||
#ifdef CONFIG_SMP
|
||||
.set_affinity = iosapic_set_affinity_irq,
|
||||
#endif
|
||||
@@ -891,8 +859,8 @@ void *iosapic_register(unsigned long hpa)
|
||||
isi->isi_version = iosapic_rd_version(isi);
|
||||
isi->isi_num_vectors = IOSAPIC_IRDT_MAX_ENTRY(isi->isi_version) + 1;
|
||||
|
||||
vip = isi->isi_vector = (struct vector_info *)
|
||||
kzalloc(sizeof(struct vector_info) * isi->isi_num_vectors, GFP_KERNEL);
|
||||
vip = isi->isi_vector = kcalloc(isi->isi_num_vectors,
|
||||
sizeof(struct vector_info), GFP_KERNEL);
|
||||
if (vip == NULL) {
|
||||
kfree(isi);
|
||||
return NULL;
|
||||
|
||||
@@ -346,8 +346,8 @@ static __inline__ int led_get_net_activity(void)
|
||||
#ifndef CONFIG_NET
|
||||
return 0;
|
||||
#else
|
||||
static unsigned long rx_total_last, tx_total_last;
|
||||
unsigned long rx_total, tx_total;
|
||||
static u64 rx_total_last, tx_total_last;
|
||||
u64 rx_total, tx_total;
|
||||
struct net_device *dev;
|
||||
int retval;
|
||||
|
||||
@@ -356,7 +356,7 @@ static __inline__ int led_get_net_activity(void)
|
||||
/* we are running as a workqueue task, so we can use an RCU lookup */
|
||||
rcu_read_lock();
|
||||
for_each_netdev_rcu(&init_net, dev) {
|
||||
const struct net_device_stats *stats;
|
||||
const struct rtnl_link_stats64 *stats;
|
||||
struct rtnl_link_stats64 temp;
|
||||
struct in_device *in_dev = __in_dev_get_rcu(dev);
|
||||
if (!in_dev || !in_dev->ifa_list)
|
||||
|
||||
@@ -139,7 +139,7 @@ superio_interrupt(int parent_irq, void *devp)
|
||||
}
|
||||
|
||||
/* Call the appropriate device's interrupt */
|
||||
__do_IRQ(local_irq);
|
||||
generic_handle_irq(local_irq);
|
||||
|
||||
/* set EOI - forces a new interrupt if a lower priority device
|
||||
* still needs service.
|
||||
@@ -286,7 +286,7 @@ superio_init(struct pci_dev *pcidev)
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_87560_LIO, superio_init);
|
||||
|
||||
static void superio_disable_irq(unsigned int irq)
|
||||
static void superio_mask_irq(unsigned int irq)
|
||||
{
|
||||
u8 r8;
|
||||
|
||||
@@ -303,7 +303,7 @@ static void superio_disable_irq(unsigned int irq)
|
||||
outb (r8,IC_PIC1+1);
|
||||
}
|
||||
|
||||
static void superio_enable_irq(unsigned int irq)
|
||||
static void superio_unmask_irq(unsigned int irq)
|
||||
{
|
||||
u8 r8;
|
||||
|
||||
@@ -319,20 +319,11 @@ static void superio_enable_irq(unsigned int irq)
|
||||
outb (r8,IC_PIC1+1);
|
||||
}
|
||||
|
||||
static unsigned int superio_startup_irq(unsigned int irq)
|
||||
{
|
||||
superio_enable_irq(irq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct irq_chip superio_interrupt_type = {
|
||||
.name = SUPERIO,
|
||||
.startup = superio_startup_irq,
|
||||
.shutdown = superio_disable_irq,
|
||||
.enable = superio_enable_irq,
|
||||
.disable = superio_disable_irq,
|
||||
.name = SUPERIO,
|
||||
.unmask = superio_unmask_irq,
|
||||
.mask = superio_mask_irq,
|
||||
.ack = no_ack_irq,
|
||||
.end = no_end_irq,
|
||||
};
|
||||
|
||||
#ifdef DEBUG_SUPERIO_INIT
|
||||
@@ -363,9 +354,7 @@ int superio_fixup_irq(struct pci_dev *pcidev)
|
||||
#endif
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
struct irq_desc *desc = irq_to_desc(i);
|
||||
|
||||
desc->chip = &superio_interrupt_type;
|
||||
set_irq_chip_and_handler(i, &superio_interrupt_type, handle_level_irq);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user