[POWERPC] Fix per-cpu allocation on oldworld SMP powermacs
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c63c4faa8cf055319c7ed557d2050c1c3776fac5 Commit: c63c4faa8cf055319c7ed557d2050c1c3776fac5 Parent: eedab661a51966c454e38c17266a531aa58b4a98 Author: Paul Mackerras [EMAIL PROTECTED] AuthorDate: Thu Jun 7 22:42:19 2007 +1000 Committer: Paul Mackerras [EMAIL PROTECTED] CommitDate: Thu Jun 14 11:56:17 2007 +1000 [POWERPC] Fix per-cpu allocation on oldworld SMP powermacs The per-cpu area(a) for the secondary CPU(s) isn't getting allocated on old SMP powermacs that don't have the secondary CPU(s) listed in the device tree, as per-cpu areas are now only allocated for CPUs in the cpu_possible_map, and we aren't setting the bits for the secondary CPU(s) until smp_prepare_cpus(), which is after per-cpu allocation. Therefore this sets the bits for CPUs 1..3 in cpu_possible_map in pmac_setup_arch, so they get per-cpu data allocated. Signed-off-by: Paul Mackerras [EMAIL PROTECTED] --- arch/powerpc/platforms/powermac/setup.c | 13 - arch/powerpc/platforms/powermac/smp.c |1 - 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c index 07b1c4e..9565715 100644 --- a/arch/powerpc/platforms/powermac/setup.c +++ b/arch/powerpc/platforms/powermac/setup.c @@ -363,8 +363,19 @@ static void __init pmac_setup_arch(void) smp_ops = core99_smp_ops; } #ifdef CONFIG_PPC32 - else + else { + /* +* We have to set bits in cpu_possible_map here since the +* secondary CPU(s) aren't in the device tree, and +* setup_per_cpu_areas only allocates per-cpu data for +* CPUs in the cpu_possible_map. +*/ + int cpu; + + for (cpu = 1; cpu 4 cpu NR_CPUS; ++cpu) + cpu_set(cpu, cpu_possible_map); smp_ops = psurge_smp_ops; + } #endif #endif /* CONFIG_SMP */ diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c index 686ed82..cb2d894 100644 --- a/arch/powerpc/platforms/powermac/smp.c +++ b/arch/powerpc/platforms/powermac/smp.c @@ -317,7 +317,6 @@ static int __init smp_psurge_probe(void) ncpus = NR_CPUS; for (i = 1; i ncpus ; ++i) { cpu_set(i, cpu_present_map); - cpu_set(i, cpu_possible_map); set_hard_smp_processor_id(i, i); } - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[POWERPC] Fix console output getting dropped on platforms without udbg_putc
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=220ddc0847ebd42d18ee78c7e1c2f4c2e3be637d Commit: 220ddc0847ebd42d18ee78c7e1c2f4c2e3be637d Parent: c63c4faa8cf055319c7ed557d2050c1c3776fac5 Author: Milton Miller [EMAIL PROTECTED] AuthorDate: Sun Jun 10 14:32:43 2007 +1000 Committer: Paul Mackerras [EMAIL PROTECTED] CommitDate: Thu Jun 14 11:56:17 2007 +1000 [POWERPC] Fix console output getting dropped on platforms without udbg_putc Previously, registering this early console would just result in dropping early buffered printk output until a udbg_putc was registered. However, commit 69331af79cf29e26d1231152a172a1a10c2df511 clears the CON_PRINTBUFFER flag on the main console when a CON_BOOT (early) console has been registered, resulting in the buffered messages never being displayed to the user. This fixes the problem by making sure we don't register udbg_console on platforms that don't implement udbg_putc. Signed-off-by: Milton Miller [EMAIL PROTECTED] Acked-by: Mark A. Greer [EMAIL PROTECTED] Signed-off-by: Paul Mackerras [EMAIL PROTECTED] --- arch/powerpc/kernel/udbg.c |8 +++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/arch/powerpc/kernel/udbg.c b/arch/powerpc/kernel/udbg.c index 87703df..cbca1df 100644 --- a/arch/powerpc/kernel/udbg.c +++ b/arch/powerpc/kernel/udbg.c @@ -151,12 +151,18 @@ static struct console udbg_console = { static int early_console_initialized; -/* called by setup_system */ +/* + * Called by setup_system after ppc_md-probe and ppc_md-early_init. + * Call it again after setting udbg_putc in ppc_md-setup_arch. + */ void register_early_udbg_console(void) { if (early_console_initialized) return; + if (!udbg_putc) + return; + if (strstr(boot_command_line, udbg-immortal)) { printk(KERN_INFO early console immortal !\n); udbg_console.flags = ~CON_BOOT; - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
block: always requeue !fs requests at the front
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bc90ba093af2e5022b9d055a2148b54a6aa35bc9 Commit: bc90ba093af2e5022b9d055a2148b54a6aa35bc9 Parent: e126c7b6bbb0c5b5fc3ecf2fd1ae67c803b747cc Author: Tejun Heo [EMAIL PROTECTED] AuthorDate: Fri Jun 15 13:24:28 2007 +0200 Committer: Linus Torvalds [EMAIL PROTECTED] CommitDate: Fri Jun 15 16:12:20 2007 -0700 block: always requeue !fs requests at the front SCSI marks internal commands with REQ_PREEMPT and push it at the front of the request queue using blk_execute_rq(). When entering suspended or frozen state, SCSI devices are quiesced using scsi_device_quiesce(). In quiesced state, only REQ_PREEMPT requests are processed. This is how SCSI blocks other requests out while suspending and resuming. As all internal commands are pushed at the front of the queue, this usually works. Unfortunately, this interacts badly with ordered requeueing. To preserve request order on requeueing (due to busy device, active EH or other failures), requests are sorted according to ordered sequence on requeue if IO barrier is in progress. The following sequence deadlocks. 1. IO barrier sequence issues. 2. Suspend requested. Queue is quiesced with part or all of IO barrier sequence at the front. 3. During suspending or resuming, SCSI issues internal command which gets deferred and requeued for some reason. As the command is issued after the IO barrier in #1, ordered requeueing code puts the request after IO barrier sequence. 4. The device is ready to process requests again but still is in quiesced state and the first request of the queue isn't REQ_PREEMPT, so command processing is deadlocked - suspending/resuming waits for the issued request to complete while the request can't be processed till device is put back into running state by resuming. This can be fixed by always putting !fs requests at the front when requeueing. The following thread reports this deadlock. http://thread.gmane.org/gmane.linux.kernel/537473 Signed-off-by: Tejun Heo [EMAIL PROTECTED] Acked-by: David Greaves [EMAIL PROTECTED] Acked-by: Jeff Garzik [EMAIL PROTECTED] Signed-off-by: Jens Axboe [EMAIL PROTECTED] Signed-off-by: Linus Torvalds [EMAIL PROTECTED] --- block/ll_rw_blk.c |9 + 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c index 6b5173a..c99b463 100644 --- a/block/ll_rw_blk.c +++ b/block/ll_rw_blk.c @@ -340,6 +340,15 @@ unsigned blk_ordered_req_seq(struct request *rq) if (rq == q-post_flush_rq) return QUEUE_ORDSEQ_POSTFLUSH; + /* +* !fs requests don't need to follow barrier ordering. Always +* put them at the front. This fixes the following deadlock. +* +* http://thread.gmane.org/gmane.linux.kernel/537473 +*/ + if (!blk_fs_request(rq)) + return QUEUE_ORDSEQ_DRAIN; + if ((rq-cmd_flags REQ_ORDERED_COLOR) == (q-orig_bar_rq-cmd_flags REQ_ORDERED_COLOR)) return QUEUE_ORDSEQ_DRAIN; - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[AVR32] ratelimit segfault reporting rate
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=126187f1e00048abec4d4a2eb3eeae396fbaa944 Commit: 126187f1e00048abec4d4a2eb3eeae396fbaa944 Parent: eedab661a51966c454e38c17266a531aa58b4a98 Author: Andrea Righi [EMAIL PROTECTED] AuthorDate: Wed May 23 14:14:52 2007 -0700 Committer: Haavard Skinnemoen [EMAIL PROTECTED] CommitDate: Thu Jun 14 18:30:49 2007 +0200 [AVR32] ratelimit segfault reporting rate Limit the rate of the kernel logging for the segfaults of user applications, to avoid potential message floods or denial-of-service attacks. Signed-off-by: Andrea Righi [EMAIL PROTECTED] Signed-off-by: Andrew Morton [EMAIL PROTECTED] Signed-off-by: Haavard Skinnemoen [EMAIL PROTECTED] --- arch/avr32/mm/fault.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c index e011f1c..4b24952 100644 --- a/arch/avr32/mm/fault.c +++ b/arch/avr32/mm/fault.c @@ -158,7 +158,7 @@ bad_area: up_read(mm-mmap_sem); if (user_mode(regs)) { - if (exception_trace) + if (exception_trace printk_ratelimit()) printk(%s%s[%d]: segfault at %08lx pc %08lx sp %08lx ecr %lu\n, is_init(tsk) ? KERN_EMERG : KERN_INFO, - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[AVR32] gpio_*_cansleep() fix
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2ae795b02aa46a99d845958ae8d7bc8afa04292b Commit: 2ae795b02aa46a99d845958ae8d7bc8afa04292b Parent: 126187f1e00048abec4d4a2eb3eeae396fbaa944 Author: David Brownell [EMAIL PROTECTED] AuthorDate: Thu May 24 13:52:08 2007 -0700 Committer: Haavard Skinnemoen [EMAIL PROTECTED] CommitDate: Thu Jun 14 18:30:49 2007 +0200 [AVR32] gpio_*_cansleep() fix The AVR32 asm/gpio.h was missing the gpio_*_cansleep() calls, breaking compilation for some code using them. Signed-off-by: David Brownell [EMAIL PROTECTED] Signed-off-by: Haavard Skinnemoen [EMAIL PROTECTED] --- include/asm-avr32/arch-at32ap/gpio.h |2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/include/asm-avr32/arch-at32ap/gpio.h b/include/asm-avr32/arch-at32ap/gpio.h index 80a21aa..af7f953 100644 --- a/include/asm-avr32/arch-at32ap/gpio.h +++ b/include/asm-avr32/arch-at32ap/gpio.h @@ -14,6 +14,8 @@ int gpio_direction_output(unsigned int gpio, int value); int gpio_get_value(unsigned int gpio); void gpio_set_value(unsigned int gpio, int value); +#include asm-generic/gpio.h /* cansleep wrappers */ + static inline int gpio_to_irq(unsigned int gpio) { return gpio + GPIO_IRQ_BASE; - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[AVR32] STK1000: Set SPI_MODE_3 in the ltv350qv board info
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2fdfe8d9a2687718b07a35196b89fbf48ba0c82f Commit: 2fdfe8d9a2687718b07a35196b89fbf48ba0c82f Parent: 2ae795b02aa46a99d845958ae8d7bc8afa04292b Author: Haavard Skinnemoen [EMAIL PROTECTED] AuthorDate: Tue May 29 21:33:37 2007 +0200 Committer: Haavard Skinnemoen [EMAIL PROTECTED] CommitDate: Thu Jun 14 18:30:50 2007 +0200 [AVR32] STK1000: Set SPI_MODE_3 in the ltv350qv board info In the latest incarnation of the ltv350qv driver the call to spi_setup() has been removed. So we need to initialize things more carefully in the board info struct. Signed-off-by: Haavard Skinnemoen [EMAIL PROTECTED] --- arch/avr32/boards/atstk1000/atstk1002.c |1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c index fe1dbe2..e253e86 100644 --- a/arch/avr32/boards/atstk1000/atstk1002.c +++ b/arch/avr32/boards/atstk1000/atstk1002.c @@ -42,6 +42,7 @@ static struct spi_board_info spi0_board_info[] __initdata = { .modalias = ltv350qv, .max_speed_hz = 1600, .chip_select= 1, + .mode = SPI_MODE_3, }, }; - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[AVR32] Define ARCH_KMALLOC_MINALIGN to L1_CACHE_BYTES
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=093d0faf57e59feee224217273f944e10e4e3562 Commit: 093d0faf57e59feee224217273f944e10e4e3562 Parent: 2fdfe8d9a2687718b07a35196b89fbf48ba0c82f Author: Haavard Skinnemoen [EMAIL PROTECTED] AuthorDate: Mon Jun 11 17:17:14 2007 +0200 Committer: Haavard Skinnemoen [EMAIL PROTECTED] CommitDate: Thu Jun 14 18:30:50 2007 +0200 [AVR32] Define ARCH_KMALLOC_MINALIGN to L1_CACHE_BYTES This allows SLUB debugging to be used without fear of messing up DMA transfers. SPI is one example that easily breaks without this patch. Signed-off-by: Haavard Skinnemoen [EMAIL PROTECTED] --- include/asm-avr32/cache.h |9 + 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/include/asm-avr32/cache.h b/include/asm-avr32/cache.h index dabb955..d3cf35a 100644 --- a/include/asm-avr32/cache.h +++ b/include/asm-avr32/cache.h @@ -4,6 +4,15 @@ #define L1_CACHE_SHIFT 5 #define L1_CACHE_BYTES (1 L1_CACHE_SHIFT) +/* + * Memory returned by kmalloc() may be used for DMA, so we must make + * sure that all such allocations are cache aligned. Otherwise, + * unrelated code may cause parts of the buffer to be read into the + * cache before the transfer is done, causing old data to be seen by + * the CPU. + */ +#define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES + #ifndef __ASSEMBLER__ struct cache_info { unsigned int ways; - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[MIPS] Malta: Fix for SOCitSC based Maltas
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b72c05262298cc2ac92edb657f5ea3a97ad5ea3d Commit: b72c05262298cc2ac92edb657f5ea3a97ad5ea3d Parent: eedab661a51966c454e38c17266a531aa58b4a98 Author: Chris Dearman [EMAIL PROTECTED] AuthorDate: Fri Apr 27 15:58:41 2007 +0100 Committer: Ralf Baechle [EMAIL PROTECTED] CommitDate: Thu Jun 14 18:25:14 2007 +0100 [MIPS] Malta: Fix for SOCitSC based Maltas And an attempt to tidy up the core/controller differences. Signed-off-by: Chris Dearman [EMAIL PROTECTED] Signed-off-by: Ralf Baechle [EMAIL PROTECTED] --- arch/mips/mips-boards/generic/init.c | 62 arch/mips/mips-boards/generic/pci.c | 20 +++-- arch/mips/mips-boards/malta/malta_int.c | 42 +++ arch/mips/mips-boards/malta/malta_setup.c |4 +- include/asm-mips/mips-boards/generic.h| 22 +- include/asm-mips/mips-boards/msc01_pci.h |1 + 6 files changed, 87 insertions(+), 64 deletions(-) diff --git a/arch/mips/mips-boards/generic/init.c b/arch/mips/mips-boards/generic/init.c index 88e9c2a..4eabc1e 100644 --- a/arch/mips/mips-boards/generic/init.c +++ b/arch/mips/mips-boards/generic/init.c @@ -57,7 +57,8 @@ int *_prom_argv, *_prom_envp; int init_debug = 0; -unsigned int mips_revision_corid; +int mips_revision_corid; +int mips_revision_sconid; /* Bonito64 system controller register base. */ unsigned long _pcictrl_bonito; @@ -275,13 +276,38 @@ void __init prom_init(void) else mips_revision_corid = MIPS_REVISION_CORID_CORE_EMUL_MSC; } - switch(mips_revision_corid) { + + mips_revision_sconid = MIPS_REVISION_SCONID; + if (mips_revision_sconid == MIPS_REVISION_SCON_OTHER) { + switch (mips_revision_corid) { + case MIPS_REVISION_CORID_QED_RM5261: + case MIPS_REVISION_CORID_CORE_LV: + case MIPS_REVISION_CORID_CORE_FPGA: + case MIPS_REVISION_CORID_CORE_FPGAR2: + mips_revision_sconid = MIPS_REVISION_SCON_GT64120; + break; + case MIPS_REVISION_CORID_CORE_EMUL_BON: + case MIPS_REVISION_CORID_BONITO64: + case MIPS_REVISION_CORID_CORE_20K: + mips_revision_sconid = MIPS_REVISION_SCON_BONITO; + break; + case MIPS_REVISION_CORID_CORE_MSC: + case MIPS_REVISION_CORID_CORE_FPGA2: + case MIPS_REVISION_CORID_CORE_FPGA3: + case MIPS_REVISION_CORID_CORE_24K: + case MIPS_REVISION_CORID_CORE_EMUL_MSC: + mips_revision_sconid = MIPS_REVISION_SCON_SOCIT; + break; + default: + mips_display_message(CC Error); + while (1); /* We die here... */ + } + } + + switch (mips_revision_sconid) { u32 start, map, mask, data; - case MIPS_REVISION_CORID_QED_RM5261: - case MIPS_REVISION_CORID_CORE_LV: - case MIPS_REVISION_CORID_CORE_FPGA: - case MIPS_REVISION_CORID_CORE_FPGAR2: + case MIPS_REVISION_SCON_GT64120: /* * Setup the North bridge to do Master byte-lane swapping * when running in bigendian. @@ -305,9 +331,7 @@ void __init prom_init(void) set_io_port_base(MALTA_GT_PORT_BASE); break; - case MIPS_REVISION_CORID_CORE_EMUL_BON: - case MIPS_REVISION_CORID_BONITO64: - case MIPS_REVISION_CORID_CORE_20K: + case MIPS_REVISION_SCON_BONITO: _pcictrl_bonito_pcicfg = (unsigned long)ioremap(BONITO_PCICFG_BASE, BONITO_PCICFG_SIZE); /* @@ -334,13 +358,10 @@ void __init prom_init(void) set_io_port_base(MALTA_BONITO_PORT_BASE); break; - case MIPS_REVISION_CORID_CORE_MSC: - case MIPS_REVISION_CORID_CORE_FPGA2: - case MIPS_REVISION_CORID_CORE_FPGA3: - case MIPS_REVISION_CORID_CORE_24K: - case MIPS_REVISION_CORID_CORE_EMUL_MSC: + case MIPS_REVISION_SCON_SOCIT: + case MIPS_REVISION_SCON_ROCIT: _pcictrl_msc = (unsigned long)ioremap(MIPS_MSC01_PCI_REG_BASE, 0x2000); - + mips_pci_controller: mb(); MSC_READ(MSC01_PCI_CFG, data); MSC_WRITE(MSC01_PCI_CFG, data ~MSC01_PCI_CFG_EN_BIT); @@ -374,10 +395,15 @@ void __init prom_init(void) set_io_port_base(MALTA_MSC_PORT_BASE); break; + case MIPS_REVISION_SCON_SOCITSC: + case MIPS_REVISION_SCON_SOCITSCP: + _pcictrl_msc = (unsigned long)ioremap(MIPS_SOCITSC_PCI_REG_BASE, 0x2000); + goto mips_pci_controller; + default: - /* Unknown Core card */ -
[MIPS] Separate performance counter interrupts
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ffe9ee4709cf513fb80e9b7e04d214dd8b76a10d Commit: ffe9ee4709cf513fb80e9b7e04d214dd8b76a10d Parent: b72c05262298cc2ac92edb657f5ea3a97ad5ea3d Author: Chris Dearman [EMAIL PROTECTED] AuthorDate: Thu May 24 22:24:20 2007 +0100 Committer: Ralf Baechle [EMAIL PROTECTED] CommitDate: Thu Jun 14 18:25:15 2007 +0100 [MIPS] Separate performance counter interrupts Support for performance counter overflow interrupt that is on a separate interrupt from the timer. Signed-off-by: Chris Dearman [EMAIL PROTECTED] Signed-off-by: Ralf Baechle [EMAIL PROTECTED] --- arch/mips/kernel/smp-mt.c| 12 ++-- arch/mips/kernel/time.c | 44 + arch/mips/mips-boards/generic/time.c | 118 ++--- arch/mips/oprofile/op_model_mipsxx.c |7 ++- 4 files changed, 135 insertions(+), 46 deletions(-) diff --git a/arch/mips/kernel/smp-mt.c b/arch/mips/kernel/smp-mt.c index 64b62bd..b8fa7dd 100644 --- a/arch/mips/kernel/smp-mt.c +++ b/arch/mips/kernel/smp-mt.c @@ -129,13 +129,13 @@ static irqreturn_t ipi_call_interrupt(int irq, void *dev_id) static struct irqaction irq_resched = { .handler= ipi_resched_interrupt, - .flags = IRQF_DISABLED, + .flags = IRQF_DISABLED|IRQF_PERCPU, .name = IPI_resched }; static struct irqaction irq_call = { .handler= ipi_call_interrupt, - .flags = IRQF_DISABLED, + .flags = IRQF_DISABLED|IRQF_PERCPU, .name = IPI_call }; @@ -275,10 +275,7 @@ void __init plat_prepare_cpus(unsigned int max_cpus) setup_irq(cpu_ipi_resched_irq, irq_resched); setup_irq(cpu_ipi_call_irq, irq_call); - /* need to mark IPI's as IRQ_PER_CPU */ - irq_desc[cpu_ipi_resched_irq].status |= IRQ_PER_CPU; set_irq_handler(cpu_ipi_resched_irq, handle_percpu_irq); - irq_desc[cpu_ipi_call_irq].status |= IRQ_PER_CPU; set_irq_handler(cpu_ipi_call_irq, handle_percpu_irq); } @@ -326,8 +323,11 @@ void prom_boot_secondary(int cpu, struct task_struct *idle) void prom_init_secondary(void) { + /* Enable per-cpu interrupts */ + + /* This is Malta specific: IPI,performance and timer inetrrupts */ write_c0_status((read_c0_status() ~ST0_IM ) | - (STATUSF_IP0 | STATUSF_IP1 | STATUSF_IP7)); + (STATUSF_IP0 | STATUSF_IP1 | STATUSF_IP6 | STATUSF_IP7)); } void prom_smp_finish(void) diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c index 751b4a1..7def1ff 100644 --- a/arch/mips/kernel/time.c +++ b/arch/mips/kernel/time.c @@ -199,6 +199,30 @@ int (*perf_irq)(void) = null_perf_irq; EXPORT_SYMBOL(null_perf_irq); EXPORT_SYMBOL(perf_irq); +/* + * Performance counter IRQ or -1 if shared with timer + */ +int mipsxx_perfcount_irq; +EXPORT_SYMBOL(mipsxx_perfcount_irq); + +/* + * Possibly handle a performance counter interrupt. + * Return true if the timer interrupt should not be checked + */ +static inline int handle_perf_irq (int r2) +{ + /* +* The performance counter overflow interrupt may be shared with the +* timer interrupt (mipsxx_perfcount_irq 0). If it is and a +* performance counter has overflowed (perf_irq() == IRQ_HANDLED) +* and we can't reliably determine if a counter interrupt has also +* happened (!r2) then don't check for a timer interrupt. +*/ + return (mipsxx_perfcount_irq 0) + perf_irq() == IRQ_HANDLED + !r2; +} + asmlinkage void ll_timer_interrupt(int irq) { int r2 = cpu_has_mips_r2; @@ -206,19 +230,13 @@ asmlinkage void ll_timer_interrupt(int irq) irq_enter(); kstat_this_cpu.irqs[irq]++; - /* -* Suckage alert: -* Before R2 of the architecture there was no way to see if a -* performance counter interrupt was pending, so we have to run the -* performance counter interrupt handler anyway. -*/ - if (!r2 || (read_c0_cause() (1 26))) - if (perf_irq()) - goto out; + if (handle_perf_irq(r2)) + goto out; - /* we keep interrupt disabled all the time */ - if (!r2 || (read_c0_cause() (1 30))) - timer_interrupt(irq, NULL); + if (r2 ((read_c0_cause() (1 30)) == 0)) + goto out; + + timer_interrupt(irq, NULL); out: irq_exit(); @@ -258,7 +276,7 @@ unsigned int mips_hpt_frequency; static struct irqaction timer_irqaction = { .handler = timer_interrupt, - .flags = IRQF_DISABLED, + .flags = IRQF_DISABLED | IRQF_PERCPU, .name = timer, }; diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c index b41db9e..33432ea 100644 ---
[MIPS] Fix builds where MSC01E_xxx is undefined.
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7b4f4ec21038ac13c63d130357d1c3015ec3f3e8 Commit: 7b4f4ec21038ac13c63d130357d1c3015ec3f3e8 Parent: ffe9ee4709cf513fb80e9b7e04d214dd8b76a10d Author: Chris Dearman [EMAIL PROTECTED] AuthorDate: Thu May 24 22:46:25 2007 +0100 Committer: Ralf Baechle [EMAIL PROTECTED] CommitDate: Thu Jun 14 18:25:15 2007 +0100 [MIPS] Fix builds where MSC01E_xxx is undefined. Signed-off-by: Chris Dearman [EMAIL PROTECTED] Signed-off-by: Ralf Baechle [EMAIL PROTECTED] --- arch/mips/mips-boards/generic/time.c |5 - 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c index 33432ea..8f1000f 100644 --- a/arch/mips/mips-boards/generic/time.c +++ b/arch/mips/mips-boards/generic/time.c @@ -295,11 +295,14 @@ void __init plat_perf_setup(struct irqaction *irq) void __init plat_timer_setup(struct irqaction *irq) { int hwint = 0; +#ifdef MSC01E_INT_BASE if (cpu_has_veic) { set_vi_handler (MSC01E_INT_CPUCTR, mips_timer_dispatch); mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR; } - else { + else +#endif + { if (cpu_has_mips_r2) /* * Read IntCtl.IPTI to determine the timer interrupt - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
KVM: Prevent guest fpu state from leaking into the host
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7702fd1f6fea57921f2e643d27a23a2d0394499c Commit: 7702fd1f6fea57921f2e643d27a23a2d0394499c Parent: 22b1a9203ea634ac0ee5240e021613da3328275f Author: Avi Kivity [EMAIL PROTECTED] AuthorDate: Thu Jun 14 16:27:40 2007 +0300 Committer: Avi Kivity [EMAIL PROTECTED] CommitDate: Fri Jun 15 12:30:59 2007 +0300 KVM: Prevent guest fpu state from leaking into the host The lazy fpu changes did not take into account that some vmexit handlers can sleep. Move loading the guest state into the inner loop so that it can be reloaded if necessary, and move loading the host state into vmx_vcpu_put() so it can be performed whenever we relinquish the vcpu. Signed-off-by: Avi Kivity [EMAIL PROTECTED] --- drivers/kvm/kvm.h |3 +++ drivers/kvm/kvm_main.c | 22 ++ drivers/kvm/vmx.c | 12 +++- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h index 1c040d8..152312c 100644 --- a/drivers/kvm/kvm.h +++ b/drivers/kvm/kvm.h @@ -304,6 +304,7 @@ struct kvm_vcpu { char *host_fx_image; char *guest_fx_image; int fpu_active; + int guest_fpu_loaded; int mmio_needed; int mmio_read_completed; @@ -508,6 +509,8 @@ void fx_init(struct kvm_vcpu *vcpu); void load_msrs(struct vmx_msr_entry *e, int n); void save_msrs(struct vmx_msr_entry *e, int n); void kvm_resched(struct kvm_vcpu *vcpu); +void kvm_load_guest_fpu(struct kvm_vcpu *vcpu); +void kvm_put_guest_fpu(struct kvm_vcpu *vcpu); int kvm_read_guest(struct kvm_vcpu *vcpu, gva_t addr, diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c index da985b3..8f1f07a 100644 --- a/drivers/kvm/kvm_main.c +++ b/drivers/kvm/kvm_main.c @@ -253,6 +253,28 @@ int kvm_write_guest(struct kvm_vcpu *vcpu, gva_t addr, unsigned long size, } EXPORT_SYMBOL_GPL(kvm_write_guest); +void kvm_load_guest_fpu(struct kvm_vcpu *vcpu) +{ + if (!vcpu-fpu_active || vcpu-guest_fpu_loaded) + return; + + vcpu-guest_fpu_loaded = 1; + fx_save(vcpu-host_fx_image); + fx_restore(vcpu-guest_fx_image); +} +EXPORT_SYMBOL_GPL(kvm_load_guest_fpu); + +void kvm_put_guest_fpu(struct kvm_vcpu *vcpu) +{ + if (!vcpu-guest_fpu_loaded) + return; + + vcpu-guest_fpu_loaded = 0; + fx_save(vcpu-guest_fx_image); + fx_restore(vcpu-host_fx_image); +} +EXPORT_SYMBOL_GPL(kvm_put_guest_fpu); + /* * Switches to specified vcpu, until a matching vcpu_put() */ diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c index 184238e..c1ac106 100644 --- a/drivers/kvm/vmx.c +++ b/drivers/kvm/vmx.c @@ -280,6 +280,7 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu) static void vmx_vcpu_put(struct kvm_vcpu *vcpu) { + kvm_put_guest_fpu(vcpu); put_cpu(); } @@ -1847,10 +1848,8 @@ again: if (vcpu-guest_debug.enabled) kvm_guest_debug_pre(vcpu); - if (vcpu-fpu_active) { - fx_save(vcpu-host_fx_image); - fx_restore(vcpu-guest_fx_image); - } + kvm_load_guest_fpu(vcpu); + /* * Loading guest fpu may have cleared host cr0.ts */ @@ -2012,11 +2011,6 @@ again: } #endif - if (vcpu-fpu_active) { - fx_save(vcpu-guest_fx_image); - fx_restore(vcpu-host_fx_image); - } - vcpu-interrupt_window_open = (vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) 3) == 0; asm (mov %0, %%ds; mov %0, %%es : : r(__USER_DS)); - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
splice: adjust balance_dirty_pages_ratelimited() call
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=17ee4f49ab2c802c7818fa71c4e7e351a7230b86 Commit: 17ee4f49ab2c802c7818fa71c4e7e351a7230b86 Parent: 22b1a9203ea634ac0ee5240e021613da3328275f Author: Jens Axboe [EMAIL PROTECTED] AuthorDate: Fri Jun 15 13:10:37 2007 +0200 Committer: Jens Axboe [EMAIL PROTECTED] CommitDate: Fri Jun 15 13:10:37 2007 +0200 splice: adjust balance_dirty_pages_ratelimited() call As we have potentially dirtied more than 1 page, we should indicate as such to the dirty page balancing. So call balance_dirty_pages_ratelimited_nr() and pass in the approximate number of pages we dirtied. Signed-off-by: Jens Axboe [EMAIL PROTECTED] --- fs/splice.c | 10 -- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/fs/splice.c b/fs/splice.c index cb21136..12d247f 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -811,7 +811,10 @@ generic_file_splice_write_nolock(struct pipe_inode_info *pipe, struct file *out, ret = __splice_from_pipe(pipe, out, ppos, len, flags, pipe_to_file); if (ret 0) { + unsigned long nr_pages; + *ppos += ret; + nr_pages = (ret + PAGE_CACHE_SIZE - 1) PAGE_CACHE_SHIFT; /* * If file or inode is SYNC and we actually wrote some data, @@ -824,7 +827,7 @@ generic_file_splice_write_nolock(struct pipe_inode_info *pipe, struct file *out, if (err) ret = err; } - balance_dirty_pages_ratelimited(mapping); + balance_dirty_pages_ratelimited_nr(mapping, nr_pages); } return ret; @@ -863,7 +866,10 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out, ret = splice_from_pipe(pipe, out, ppos, len, flags, pipe_to_file); if (ret 0) { + unsigned long nr_pages; + *ppos += ret; + nr_pages = (ret + PAGE_CACHE_SIZE - 1) PAGE_CACHE_SHIFT; /* * If file or inode is SYNC and we actually wrote some data, @@ -878,7 +884,7 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out, if (err) ret = err; } - balance_dirty_pages_ratelimited(mapping); + balance_dirty_pages_ratelimited_nr(mapping, nr_pages); } return ret; - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
splice: fix leak of pages on short splice to pipe
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=00de00bdad278783b3664ad2969954a707f5944a Commit: 00de00bdad278783b3664ad2969954a707f5944a Parent: 17ee4f49ab2c802c7818fa71c4e7e351a7230b86 Author: Jens Axboe [EMAIL PROTECTED] AuthorDate: Fri Jun 15 13:14:22 2007 +0200 Committer: Jens Axboe [EMAIL PROTECTED] CommitDate: Fri Jun 15 13:14:22 2007 +0200 splice: fix leak of pages on short splice to pipe If the destination pipe is full and we already transferred data, we break out instead of waiting for more pipe room. The exit logic looks at spd-nr_pages to see if we moved everything inside the spd container, but we decrement that variable in the loop to decide when spd has emptied. Instead we want to compare to the original page count in the spd, so cache that in a local variable. Signed-off-by: Jens Axboe [EMAIL PROTECTED] --- fs/splice.c |3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/fs/splice.c b/fs/splice.c index 12d247f..186fad4 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -176,6 +176,7 @@ static const struct pipe_buf_operations user_page_pipe_buf_ops = { static ssize_t splice_to_pipe(struct pipe_inode_info *pipe, struct splice_pipe_desc *spd) { + unsigned int spd_pages = spd-nr_pages; int ret, do_wakeup, page_nr; ret = 0; @@ -254,7 +255,7 @@ static ssize_t splice_to_pipe(struct pipe_inode_info *pipe, kill_fasync(pipe-fasync_readers, SIGIO, POLL_IN); } - while (page_nr spd-nr_pages) + while (page_nr spd_pages) page_cache_release(spd-pages[page_nr++]); return ret; - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Blackfin arch: remove defconfig file
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=db94d9d24526f83c432f0e5620078f02f7ae76ca Commit: db94d9d24526f83c432f0e5620078f02f7ae76ca Parent: eedab661a51966c454e38c17266a531aa58b4a98 Author: Mike Frysinger [EMAIL PROTECTED] AuthorDate: Mon Jun 11 15:31:30 2007 +0800 Committer: Bryan Wu [EMAIL PROTECTED] CommitDate: Mon Jun 11 15:31:30 2007 +0800 Blackfin arch: remove defconfig file Since we have board-specific defconfigs and the default is set to BF537-STAMP, we no longer need this one Signed-off-by: Mike Frysinger [EMAIL PROTECTED] Signed-off-by: Bryan Wu [EMAIL PROTECTED] --- arch/blackfin/defconfig | 1327 --- 1 files changed, 0 insertions(+), 1327 deletions(-) diff --git a/arch/blackfin/defconfig b/arch/blackfin/defconfig deleted file mode 100644 index a513fbe..000 --- a/arch/blackfin/defconfig +++ /dev/null @@ -1,1327 +0,0 @@ -# -# Automatically generated make config: don't edit -# Linux kernel version: 2.6.20.4 -# -# CONFIG_MMU is not set -# CONFIG_FPU is not set -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -CONFIG_BLACKFIN=y -CONFIG_BFIN=y -CONFIG_SEMAPHORE_SLEEPERS=y -CONFIG_GENERIC_FIND_NEXT_BIT=y -CONFIG_GENERIC_HWEIGHT=y -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y -# CONFIG_GENERIC_TIME is not set -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_FORCE_MAX_ZONEORDER=14 -CONFIG_IRQCHIP_DEMUX_GPIO=y -CONFIG_DEFCONFIG_LIST=/lib/modules/$UNAME_RELEASE/.config - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -CONFIG_BROKEN_ON_SMP=y -CONFIG_INIT_ENV_ARG_LIMIT=32 - -# -# General setup -# -CONFIG_LOCALVERSION= -CONFIG_LOCALVERSION_AUTO=y -CONFIG_SYSVIPC=y -# CONFIG_IPC_NS is not set -# CONFIG_POSIX_MQUEUE is not set -# CONFIG_BSD_PROCESS_ACCT is not set -# CONFIG_TASKSTATS is not set -# CONFIG_UTS_NS is not set -# CONFIG_AUDIT is not set -# CONFIG_IKCONFIG is not set -CONFIG_SYSFS_DEPRECATED=y -# CONFIG_RELAY is not set -CONFIG_INITRAMFS_SOURCE= -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set -CONFIG_SYSCTL=y -CONFIG_EMBEDDED=y -CONFIG_UID16=y -CONFIG_SYSCTL_SYSCALL=y -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_EXTRA_PASS is not set -CONFIG_HOTPLUG=y -CONFIG_PRINTK=y -CONFIG_BUG=y -CONFIG_ELF_CORE=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_EPOLL=y -CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 -# CONFIG_LIMIT_PAGECACHE is not set -CONFIG_BUDDY=y -# CONFIG_NP2 is not set -CONFIG_SLAB=y -CONFIG_VM_EVENT_COUNTERS=y -CONFIG_RT_MUTEXES=y -CONFIG_TINY_SHMEM=y -CONFIG_BASE_SMALL=0 -# CONFIG_SLOB is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -# CONFIG_MODULE_FORCE_UNLOAD is not set -# CONFIG_MODVERSIONS is not set -# CONFIG_MODULE_SRCVERSION_ALL is not set -CONFIG_KMOD=y - -# -# Block layer -# -CONFIG_BLOCK=y -# CONFIG_LBD is not set -# CONFIG_BLK_DEV_IO_TRACE is not set -# CONFIG_LSF is not set - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_AS=y -# CONFIG_IOSCHED_DEADLINE is not set -CONFIG_IOSCHED_CFQ=y -CONFIG_DEFAULT_AS=y -# CONFIG_DEFAULT_DEADLINE is not set -# CONFIG_DEFAULT_CFQ is not set -# CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED=anticipatory -# CONFIG_PREEMPT_NONE is not set -CONFIG_PREEMPT_VOLUNTARY=y -# CONFIG_PREEMPT is not set - -# -# Blackfin Processor Options -# - -# -# Processor and Board Settings -# -# CONFIG_BF531 is not set -# CONFIG_BF532 is not set -# CONFIG_BF533 is not set -# CONFIG_BF534 is not set -# CONFIG_BF536 is not set -CONFIG_BF537=y -# CONFIG_BF561 is not set -CONFIG_BF_REV_0_2=y -# CONFIG_BF_REV_0_3 is not set -# CONFIG_BF_REV_0_4 is not set -# CONFIG_BF_REV_0_5 is not set -CONFIG_BFIN_SINGLE_CORE=y -# CONFIG_BFIN533_EZKIT is not set -# CONFIG_BFIN533_STAMP is not set -CONFIG_BFIN537_STAMP=y -# CONFIG_BFIN533_BLUETECHNIX_CM is not set -# CONFIG_BFIN537_BLUETECHNIX_CM is not set -# CONFIG_BFIN561_BLUETECHNIX_CM is not set -# CONFIG_BFIN561_EZKIT is not set -# CONFIG_PNAV10 is not set -# CONFIG_GENERIC_BOARD is not set -CONFIG_MEM_MT48LC32M8A2_75=y -CONFIG_IRQ_PLL_WAKEUP=7 - -# -# BF537 Specific Configuration -# - -# -# PORT F/G Selection -# -CONFIG_BF537_PORT_F=y -# CONFIG_BF537_PORT_G is not set -# CONFIG_BF537_PORT_H is not set - -# -# Interrupt Priority Assignment -# - -# -# Priority -# -CONFIG_IRQ_DMA_ERROR=7 -CONFIG_IRQ_ERROR=7 -CONFIG_IRQ_RTC=8 -CONFIG_IRQ_PPI=8 -CONFIG_IRQ_SPORT0_RX=9 -CONFIG_IRQ_SPORT0_TX=9 -CONFIG_IRQ_SPORT1_RX=9 -CONFIG_IRQ_SPORT1_TX=9 -CONFIG_IRQ_TWI=10 -CONFIG_IRQ_SPI=10 -CONFIG_IRQ_UART0_RX=10 -CONFIG_IRQ_UART0_TX=10 -CONFIG_IRQ_UART1_RX=10 -CONFIG_IRQ_UART1_TX=10 -CONFIG_IRQ_CAN_RX=11 -CONFIG_IRQ_CAN_TX=11 -CONFIG_IRQ_MAC_RX=11 -CONFIG_IRQ_MAC_TX=11 -CONFIG_IRQ_TMR0=12 -CONFIG_IRQ_TMR1=12 -CONFIG_IRQ_TMR2=12 -CONFIG_IRQ_TMR3=12 -CONFIG_IRQ_TMR4=12 -CONFIG_IRQ_TMR5=12 -CONFIG_IRQ_TMR6=12 -CONFIG_IRQ_TMR7=12 -CONFIG_IRQ_PROG_INTA=12 -CONFIG_IRQ_PORTG_INTB=12 -CONFIG_IRQ_MEM_DMA0=13 -CONFIG_IRQ_MEM_DMA1=13
Blackfin arch: spelling fixes
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d2d50aa97d695d83ccb2341488d977e8cfe36555 Commit: d2d50aa97d695d83ccb2341488d977e8cfe36555 Parent: ac1bd53c067397947b5d805c631519282f5678fe Author: Simon Arlott [EMAIL PROTECTED] AuthorDate: Mon Jun 11 15:31:30 2007 +0800 Committer: Bryan Wu [EMAIL PROTECTED] CommitDate: Mon Jun 11 15:31:30 2007 +0800 Blackfin arch: spelling fixes Signed-off-by: Simon Arlott [EMAIL PROTECTED] Signed-off-by: Bryan Wu [EMAIL PROTECTED] --- arch/blackfin/kernel/irqchip.c |2 +- arch/blackfin/kernel/traps.c|2 +- arch/blackfin/mach-bf533/boards/cm_bf533.c |2 +- arch/blackfin/mach-bf533/boards/ezkit.c |2 +- arch/blackfin/mach-bf533/ints-priority.c|2 +- arch/blackfin/mach-bf537/boards/generic_board.c |2 +- arch/blackfin/mach-bf537/boards/pnav10.c|2 +- arch/blackfin/mach-bf537/boards/stamp.c |2 +- arch/blackfin/mach-bf537/ints-priority.c|2 +- arch/blackfin/mach-bf561/boards/cm_bf561.c |4 ++-- arch/blackfin/mach-bf561/ints-priority.c|2 +- arch/blackfin/mach-common/ints-priority-dc.c|2 +- arch/blackfin/mach-common/ints-priority-sc.c|2 +- arch/blackfin/mm/blackfin_sram.c|6 +++--- 14 files changed, 17 insertions(+), 17 deletions(-) diff --git a/arch/blackfin/kernel/irqchip.c b/arch/blackfin/kernel/irqchip.c index df5bf02..80996a1 100644 --- a/arch/blackfin/kernel/irqchip.c +++ b/arch/blackfin/kernel/irqchip.c @@ -91,7 +91,7 @@ int show_interrupts(struct seq_file *p, void *v) } /* - * do_IRQ handles all hardware IRQ's. Decoded IRQs should not + * do_IRQ handles all hardware IRQs. Decoded IRQs should not * come via this function. Instead, they should provide their * own 'handler' */ diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index 9932ede..5ab87b0 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c @@ -557,7 +557,7 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr) break; #ifndef CONFIG_DEBUG_HWERR /* If one of the last few instructions was a STI -* it is likily that the error occured awhile ago +* it is likely that the error occured awhile ago * and we just noticed */ if (x = 0x0040 x = 0x0047 i = 0) diff --git a/arch/blackfin/mach-bf533/boards/cm_bf533.c b/arch/blackfin/mach-bf533/boards/cm_bf533.c index 23a7f60..edd31ce 100644 --- a/arch/blackfin/mach-bf533/boards/cm_bf533.c +++ b/arch/blackfin/mach-bf533/boards/cm_bf533.c @@ -1,7 +1,7 @@ /* * File: arch/blackfin/mach-bf533/boards/cm_bf533.c * Based on: arch/blackfin/mach-bf533/boards/ezkit.c - * Author: Aidan Williams [EMAIL PROTECTED] Copright 2005 + * Author: Aidan Williams [EMAIL PROTECTED] Copyright 2005 * * Created: 2005 * Description: Board description file diff --git a/arch/blackfin/mach-bf533/boards/ezkit.c b/arch/blackfin/mach-bf533/boards/ezkit.c index 747298e..0b522d9 100644 --- a/arch/blackfin/mach-bf533/boards/ezkit.c +++ b/arch/blackfin/mach-bf533/boards/ezkit.c @@ -1,6 +1,6 @@ /* * File: arch/blackfin/mach-bf533/ezkit.c - * Based on: Orginal Work + * Based on: Original Work * Author: Aidan Williams [EMAIL PROTECTED] * * Created: 2005 diff --git a/arch/blackfin/mach-bf533/ints-priority.c b/arch/blackfin/mach-bf533/ints-priority.c index 36a6933..a3e1789 100644 --- a/arch/blackfin/mach-bf533/ints-priority.c +++ b/arch/blackfin/mach-bf533/ints-priority.c @@ -4,7 +4,7 @@ * Author: Michael Hennerich * * Created: ? - * Description: Set up the interupt priorities + * Description: Set up the interrupt priorities * * Modified: * Copyright 2004-2006 Analog Devices Inc. diff --git a/arch/blackfin/mach-bf537/boards/generic_board.c b/arch/blackfin/mach-bf537/boards/generic_board.c index 9019c0e..fd57e74 100644 --- a/arch/blackfin/mach-bf537/boards/generic_board.c +++ b/arch/blackfin/mach-bf537/boards/generic_board.c @@ -55,7 +55,7 @@ static struct resource bfin_pcmcia_cf_resources[] = { .end = 0x20312000, .flags = IORESOURCE_MEM, },{ - .start = 0x20311000, /* Attribute Memeory */ + .start = 0x20311000, /* Attribute Memory */ .end = 0x20311FFF, .flags = IORESOURCE_MEM, },{ diff --git a/arch/blackfin/mach-bf537/boards/pnav10.c b/arch/blackfin/mach-bf537/boards/pnav10.c index 40d3a1b..8aaf76d 100644 --- a/arch/blackfin/mach-bf537/boards/pnav10.c +++ b/arch/blackfin/mach-bf537/boards/pnav10.c @@ -59,7 +59,7 @@ static struct resource bfin_pcmcia_cf_resources[] = { .end = 0x20312000,
Blackfin arch: fix bug ad1836 fails to build properly for BF533-EZKIT
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=75ed405c63b3fc2402fb8ff825b0ebffcff26b57 Commit: 75ed405c63b3fc2402fb8ff825b0ebffcff26b57 Parent: d2d50aa97d695d83ccb2341488d977e8cfe36555 Author: Roy Huang [EMAIL PROTECTED] AuthorDate: Thu Jun 14 12:54:44 2007 +0800 Committer: Bryan Wu [EMAIL PROTECTED] CommitDate: Thu Jun 14 12:54:44 2007 +0800 Blackfin arch: fix bug ad1836 fails to build properly for BF533-EZKIT bug log here: http://blackfin.uclinux.org/gf/project/uclinux-dist/tracker/?action=TrackerItemEdittracker_item_id=3166 Signed-off-by: Roy Huang [EMAIL PROTECTED] Signed-off-by: Bryan Wu [EMAIL PROTECTED] --- include/asm-blackfin/mach-common/def_LPBlackfin.h | 22 + 1 files changed, 22 insertions(+), 0 deletions(-) diff --git a/include/asm-blackfin/mach-common/def_LPBlackfin.h b/include/asm-blackfin/mach-common/def_LPBlackfin.h index 7610352..be1ece8 100644 --- a/include/asm-blackfin/mach-common/def_LPBlackfin.h +++ b/include/asm-blackfin/mach-common/def_LPBlackfin.h @@ -42,6 +42,12 @@ #if defined(ANOMALY_05000198) +#define bfin_read8(addr) ({ unsigned char __v; \ + __asm__ __volatile__ (NOP;\n\t \ + %0 = b[%1] (z);\n\t \ + : =d(__v) : a(addr)); \ + __v; }) + #define bfin_read16(addr) ({ unsigned __v; \ __asm__ __volatile__ (NOP;\n\t\ %0 = w[%1] (z);\n\t\ @@ -52,6 +58,11 @@ %0 = [%1];\n\t\ : =d(__v) : a(addr)); __v; }) +#define bfin_write8(addr, val) ({ \ + __asm__ __volatile__ (NOP;\n\t \ + b[%0] = %1;\n\t \ + : : a(addr), d(val) : memory);}) + #define bfin_write16(addr,val) ({\ __asm__ __volatile__ (NOP;\n\t\ w[%0] = %1;\n\t\ @@ -64,6 +75,12 @@ #else +#define bfin_read8(addr) ({ unsigned char __v; \ + __asm__ __volatile__ ( \ + %0 = b[%1] (z);\n\t \ + :=d(__v) : a(addr)); \ + __v; }) + #define bfin_read16(addr) ({ unsigned __v; \ __asm__ __volatile__ (\ %0 = w[%1] (z);\n\t\ @@ -74,6 +91,11 @@ %0 = [%1];\n\t\ : =d(__v) : a(addr)); __v; }) +#define bfin_write8(addr, val) ({ \ + __asm__ __volatile__ ( \ + b[%0] = %1; \n\t \ + ::a(addr), d(val) : memory);}) + #define bfin_write16(addr,val) ({\ __asm__ __volatile__ (\ w[%0] = %1;\n\t\ - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Blackfin arch: all symbols were offset by 4k, since we didn't have the __text label.
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5716e514ed526a819775c45a73f1c8b65309e9d3 Commit: 5716e514ed526a819775c45a73f1c8b65309e9d3 Parent: 75ed405c63b3fc2402fb8ff825b0ebffcff26b57 Author: Robin Getz [EMAIL PROTECTED] AuthorDate: Mon Jun 11 15:31:30 2007 +0800 Committer: Bryan Wu [EMAIL PROTECTED] CommitDate: Mon Jun 11 15:31:30 2007 +0800 Blackfin arch: all symbols were offset by 4k, since we didn't have the __text label. Bug tracker: http://blackfin.uclinux.org/gf/project/uclinux-dist/tracker/?action=TrackerItemEdittracker_item_id=3231 Singed-off-by: Robin Getz [EMAIL PROTECTED] Signed-off-by: Bryan Wu [EMAIL PROTECTED] --- arch/blackfin/kernel/vmlinux.lds.S |1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S index 86fe679..19b853a 100644 --- a/arch/blackfin/kernel/vmlinux.lds.S +++ b/arch/blackfin/kernel/vmlinux.lds.S @@ -52,6 +52,7 @@ SECTIONS .text : { +__text = .; _text = .; __stext = .; TEXT_TEXT - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Blackfin arch: scrub old console defines
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4dfefcf05417f98292a92f2face186d261867952 Commit: 4dfefcf05417f98292a92f2face186d261867952 Parent: e3b2d3f33b3c1ef36b5c77ef581506915c73aad6 Author: Mike Frysinger [EMAIL PROTECTED] AuthorDate: Mon Jun 11 15:31:30 2007 +0800 Committer: Bryan Wu [EMAIL PROTECTED] CommitDate: Mon Jun 11 15:31:30 2007 +0800 Blackfin arch: scrub old console defines since they arent respected anymore (use console=) and just confuse people Signed-off-by: Mike Frysinger [EMAIL PROTECTED] Signed-off-by: Bryan Wu [EMAIL PROTECTED] --- arch/blackfin/Kconfig | 35 --- 1 files changed, 0 insertions(+), 35 deletions(-) diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index b1b111b..1fad856 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig @@ -394,41 +394,6 @@ config BFIN_IDLE_LED_PIN default 0x08 if (BFIN533_STAMP BFIN_IDLE_LED_NUM = 2) default 0x10 if (BFIN533_STAMP BFIN_IDLE_LED_NUM = 3) -comment Console UART Setup - -choice - prompt Baud Rate - default BAUD_57600 -config BAUD_9600 - bool 9600 -config BAUD_19200 - bool 19200 -config BAUD_38400 - bool 38400 -config BAUD_57600 - bool 57600 -config BAUD_115200 - bool 115200 -endchoice - -choice - prompt Parity - default BAUD_NO_PARITY -config BAUD_NO_PARITY - bool No Parity -config BAUD_PARITY - bool Parity -endchoice - -choice - prompt Stop Bits - default BAUD_1_STOPBIT -config BAUD_1_STOPBIT - bool 1 -config BAUD_2_STOPBIT - bool 2 -endchoice - endmenu - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Blackfin arch: fixup Blackfin MAINTIANERS team member list
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e3b2d3f33b3c1ef36b5c77ef581506915c73aad6 Commit: e3b2d3f33b3c1ef36b5c77ef581506915c73aad6 Parent: bc61b4e69d26a1b9627d52ab45064eee9284aa72 Author: Bryan Wu [EMAIL PROTECTED] AuthorDate: Mon Jun 11 15:31:30 2007 +0800 Committer: Bryan Wu [EMAIL PROTECTED] CommitDate: Mon Jun 11 15:31:30 2007 +0800 Blackfin arch: fixup Blackfin MAINTIANERS team member list Signed-off-by: Bryan Wu [EMAIL PROTECTED] --- MAINTAINERS | 70 ++ 1 files changed, 36 insertions(+), 34 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 4c715a7..8b26d9e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -723,42 +723,44 @@ M:[EMAIL PROTECTED] S: Maintained BLACKFIN ARCHITECTURE -P: Aubrey Li -M: [EMAIL PROTECTED] -P: Bernd Schmidt -M: [EMAIL PROTECTED] -P: Bryan Wu -M: [EMAIL PROTECTED] -P: Grace Pan -M: [EMAIL PROTECTED] -P: Michael Hennerich -M: [EMAIL PROTECTED] -P: Mike Frysinger -M: [EMAIL PROTECTED] -P: Jane Lv -M: [EMAIL PROTECTED] -P: Jerry Zeng -M: [EMAIL PROTECTED] -P: Jie Zhang -M: [EMAIL PROTECTED] -P: Robin Getz -M: [EMAIL PROTECTED] -P: Roy Huang -M: [EMAIL PROTECTED] -P: Sonic Zhang -M: [EMAIL PROTECTED] -P: Yi Li -M: [EMAIL PROTECTED] -L: [EMAIL PROTECTED] -W: http://blackfin.uclinux.org -S: Supported +P: Aubrey Li +M: [EMAIL PROTECTED] +P: Bernd Schmidt +M: [EMAIL PROTECTED] +P: Bryan Wu +M: [EMAIL PROTECTED] +P: Grace Pan +M: [EMAIL PROTECTED] +P: Marc Hoffman +M: [EMAIL PROTECTED] +P: Michael Hennerich +M: [EMAIL PROTECTED] +P: Mike Frysinger +M: [EMAIL PROTECTED] +P: Jerry Zeng +M: [EMAIL PROTECTED] +P: Jie Zhang +M: [EMAIL PROTECTED] +P: Robin Getz +M: [EMAIL PROTECTED] +P: Roy Huang +M: [EMAIL PROTECTED] +P: Sonic Zhang +M: [EMAIL PROTECTED] +P: Vivi Li +M: [EMAIL PROTECTED] +P: Yi Li +M: [EMAIL PROTECTED] +L: [EMAIL PROTECTED] (subscribers-only) +W: http://blackfin.uclinux.org +S: Supported BLACKFIN SERIAL DRIVER -P: Aubrey Li -M: [EMAIL PROTECTED] -L: [EMAIL PROTECTED] -W: http://blackfin.uclinux.org -S: Supported +P: Aubrey Li +M: [EMAIL PROTECTED] +L: [EMAIL PROTECTED] (subscribers-only) +W: http://blackfin.uclinux.org +S: Supported BAYCOM/HDLCDRV DRIVERS FOR AX.25 P: Thomas Sailer - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Blackfin arch: try to split up functions like this into smaller units according to LKML review
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5af4c2b367c9c3dcc0cb02880df3a8581bb12a87 Commit: 5af4c2b367c9c3dcc0cb02880df3a8581bb12a87 Parent: 51be24c351bc9ee4937121100adb098eeb1effdd Author: Aubrey Li [EMAIL PROTECTED] AuthorDate: Thu Jun 14 13:28:47 2007 +0800 Committer: Bryan Wu [EMAIL PROTECTED] CommitDate: Thu Jun 14 13:28:47 2007 +0800 Blackfin arch: try to split up functions like this into smaller units according to LKML review Signed-off-by: Aubrey Li [EMAIL PROTECTED] Signed-off-by: Bryan Wu [EMAIL PROTECTED] --- arch/blackfin/kernel/setup.c | 233 ++ 1 files changed, 121 insertions(+), 112 deletions(-) diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index d9517e7..0ba5f4a 100644 --- a/arch/blackfin/kernel/setup.c +++ b/arch/blackfin/kernel/setup.c @@ -471,6 +471,67 @@ close_cplbtab(struct cplb_tab *table) return 0; } +/* helper function */ +static void __fill_code_cplbtab(struct cplb_tab *t, int i, + u32 a_start, u32 a_end) +{ + if (cplb_data[i].psize) { + fill_cplbtab(t, + cplb_data[i].start, + cplb_data[i].end, + cplb_data[i].psize, + cplb_data[i].i_conf); + } else { +#if (defined(CONFIG_BLKFIN_CACHE) defined(ANOMALY_05000263)) + if (i == SDRAM_KERN) { + fill_cplbtab(t, + cplb_data[i].start, + cplb_data[i].end, + SIZE_4M, + cplb_data[i].i_conf); + } else { +#endif + fill_cplbtab(t, + cplb_data[i].start, + a_start, + SIZE_1M, + cplb_data[i].i_conf); + fill_cplbtab(t, + a_start, + a_end, + SIZE_4M, + cplb_data[i].i_conf); + fill_cplbtab(t, a_end, + cplb_data[i].end, + SIZE_1M, + cplb_data[i].i_conf); + } + } +} + +static void __fill_data_cplbtab(struct cplb_tab *t, int i, + u32 a_start, u32 a_end) +{ + if (cplb_data[i].psize) { + fill_cplbtab(t, + cplb_data[i].start, + cplb_data[i].end, + cplb_data[i].psize, + cplb_data[i].d_conf); + } else { + fill_cplbtab(t, + cplb_data[i].start, + a_start, SIZE_1M, + cplb_data[i].d_conf); + fill_cplbtab(t, a_start, + a_end, SIZE_4M, + cplb_data[i].d_conf); + fill_cplbtab(t, a_end, + cplb_data[i].end, + SIZE_1M, + cplb_data[i].d_conf); + } +} static void __init generate_cpl_tables(void) { @@ -540,130 +601,78 @@ static void __init generate_cpl_tables(void) cplb_data[RES_MEM].i_conf = SDRAM_INON_CHBL; for (i = ZERO_P; i = L2_MEM; i++) { + if (!cplb_data[i].valid) + continue; - if (cplb_data[i].valid) { + as_1m = cplb_data[i].start % SIZE_1M; - as_1m = cplb_data[i].start % SIZE_1M; + /* +* We need to make sure all sections are properly 1M aligned +* However between Kernel Memory and the Kernel mtd section, +* depending on the rootfs size, there can be overlapping +* memory areas. +*/ - /* We need to make sure all sections are properly 1M aligned -* However between Kernel Memory and the Kernel mtd section, depending on the -* rootfs size, there can be overlapping memory areas. -*/ - - if (as_1m i!=L1I_MEM i!=L1D_MEM) { + if (as_1m i != L1I_MEM i != L1D_MEM) { #ifdef CONFIG_MTD_UCLINUX - if (i == SDRAM_RAM_MTD) { - if ((cplb_data[SDRAM_KERN].end + 1) cplb_data[SDRAM_RAM_MTD].start) - cplb_data[SDRAM_RAM_MTD].start =
Blackfin serial driver: ignore framing and parity errors
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9808901b6c63a1c850b072e624c228901a9eaf10 Commit: 9808901b6c63a1c850b072e624c228901a9eaf10 Parent: c16c3ca79abcb69a9e45f7c15f8358b3915c0e49 Author: Mike Frysinger [EMAIL PROTECTED] AuthorDate: Mon Jun 11 15:31:30 2007 +0800 Committer: Bryan Wu [EMAIL PROTECTED] CommitDate: Mon Jun 11 15:31:30 2007 +0800 Blackfin serial driver: ignore framing and parity errors if we get a break signal, we want to ignore framing and parity errors because those will always be set (by nature of the signal) Signed-off-by: Mike Frysinger [EMAIL PROTECTED] Signed-off-by: Bryan Wu [EMAIL PROTECTED] --- drivers/serial/bfin_5xx.c |2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c index aeb3cc2..9d356fc 100644 --- a/drivers/serial/bfin_5xx.c +++ b/drivers/serial/bfin_5xx.c @@ -185,6 +185,7 @@ static void bfin_serial_rx_chars(struct bfin_serial_port *uart) uart-port.icount.brk++; if (uart_handle_break(uart-port)) goto ignore_char; + status = ~(PE | FE); } if (status PE) uart-port.icount.parity++; @@ -341,6 +342,7 @@ static void bfin_serial_dma_rx_chars(struct bfin_serial_port *uart) uart-port.icount.brk++; if (uart_handle_break(uart-port)) goto dma_ignore_char; + status = ~(PE | FE); } if (status PE) uart-port.icount.parity++; - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Blackfin serial driver: actually implement the break_ctl() function
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cf68676222e54cd0a31efd968da00e65f9a0963f Commit: cf68676222e54cd0a31efd968da00e65f9a0963f Parent: 9808901b6c63a1c850b072e624c228901a9eaf10 Author: Mike Frysinger [EMAIL PROTECTED] AuthorDate: Mon Jun 11 16:12:49 2007 +0800 Committer: Bryan Wu [EMAIL PROTECTED] CommitDate: Mon Jun 11 16:12:49 2007 +0800 Blackfin serial driver: actually implement the break_ctl() function Signed-off-by: Mike Frysinger [EMAIL PROTECTED] Signed-off-by: Bryan Wu [EMAIL PROTECTED] --- drivers/serial/bfin_5xx.c |8 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c index 9d356fc..a9d2027 100644 --- a/drivers/serial/bfin_5xx.c +++ b/drivers/serial/bfin_5xx.c @@ -519,6 +519,14 @@ static void bfin_serial_mctrl_check(struct bfin_serial_port *uart) */ static void bfin_serial_break_ctl(struct uart_port *port, int break_state) { + struct bfin_serial_port *uart = (struct bfin_serial_port *)port; + u16 lcr = UART_GET_LCR(uart); + if (break_state) + lcr |= SB; + else + lcr = ~SB; + UART_PUT_LCR(uart, lcr); + SSYNC(); } static int bfin_serial_startup(struct uart_port *port) - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Blackfin RTC drivers: update MAINTAINERS information
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=566da5b2666e62a7b061b42964658697183bef1c Commit: 566da5b2666e62a7b061b42964658697183bef1c Parent: 19aa6382e3c927b8ec5caec7b74c3dc555101146 Author: Mike Frysinger [EMAIL PROTECTED] AuthorDate: Mon Jun 11 15:31:30 2007 +0800 Committer: Bryan Wu [EMAIL PROTECTED] CommitDate: Mon Jun 11 15:31:30 2007 +0800 Blackfin RTC drivers: update MAINTAINERS information Signed-off-by: Mike Frysinger [EMAIL PROTECTED] Signed-off-by: Bryan Wu [EMAIL PROTECTED] Cc: Alessandro Zummo [EMAIL PROTECTED] --- MAINTAINERS |8 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 8b26d9e..bef7977 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -755,6 +755,14 @@ L: [EMAIL PROTECTED] (subscribers-only) W: http://blackfin.uclinux.org S: Supported +BLACKFIN RTC DRIVER +P: Mike Frysinger +M: [EMAIL PROTECTED] +M: [EMAIL PROTECTED] +L: [EMAIL PROTECTED] (subscribers-only) +W: http://blackfin.uclinux.org +S: Supported + BLACKFIN SERIAL DRIVER P: Aubrey Li M: [EMAIL PROTECTED] - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Blackfin SPI driver: tweak spi cleanup function to match newer kernel changes
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=27bb9e79bcfedc1888d23c3c212c189fa8534fe7 Commit: 27bb9e79bcfedc1888d23c3c212c189fa8534fe7 Parent: 566da5b2666e62a7b061b42964658697183bef1c Author: Mike Frysinger [EMAIL PROTECTED] AuthorDate: Mon Jun 11 15:31:30 2007 +0800 Committer: Bryan Wu [EMAIL PROTECTED] CommitDate: Mon Jun 11 15:31:30 2007 +0800 Blackfin SPI driver: tweak spi cleanup function to match newer kernel changes Signed-off-by: Mike Frysinger [EMAIL PROTECTED] Signed-off-by: Bryan Wu [EMAIL PROTECTED] Cc: David Brownell [EMAIL PROTECTED] --- drivers/spi/spi_bfin5xx.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/spi/spi_bfin5xx.c b/drivers/spi/spi_bfin5xx.c index 7d2d9ec..a2d4884 100644 --- a/drivers/spi/spi_bfin5xx.c +++ b/drivers/spi/spi_bfin5xx.c @@ -1082,7 +1082,7 @@ static int setup(struct spi_device *spi) */ static void cleanup(struct spi_device *spi) { - struct chip_data *chip = spi_get_ctldata((struct spi_device *)spi); + struct chip_data *chip = spi_get_ctldata(spi); kfree(chip); } - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Resume from RAM on HPC nx6325 broken
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ce9b2b0abbf019d5259eb089a1cc256852930f67 Commit: ce9b2b0abbf019d5259eb089a1cc256852930f67 Parent: d09c6b809432668371b5de9102f4f9aa6a7c79cc Author: Rafael J. Wysocki [EMAIL PROTECTED] AuthorDate: Sat Jun 16 02:24:43 2007 +0200 Committer: Bartlomiej Zolnierkiewicz [EMAIL PROTECTED] CommitDate: Sat Jun 16 02:24:43 2007 +0200 Resume from RAM on HPC nx6325 broken generic_ide_resume() should check if dev-driver is not NULL before applying to_ide_driver() to it. Fix that. Signed-off-by: Rafael J. Wysocki [EMAIL PROTECTED] Signed-off-by: Andrew Morton [EMAIL PROTECTED] Signed-off-by: Bartlomiej Zolnierkiewicz [EMAIL PROTECTED] --- drivers/ide/ide.c |9 ++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index 0af0d16..0cd76bf 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c @@ -1010,7 +1010,6 @@ static int generic_ide_resume(struct device *dev) { ide_drive_t *drive = dev-driver_data; ide_hwif_t *hwif = HWIF(drive); - ide_driver_t *drv = to_ide_driver(dev-driver); struct request rq; struct request_pm_state rqpm; ide_task_t args; @@ -1033,8 +1032,12 @@ static int generic_ide_resume(struct device *dev) err = ide_do_drive_cmd(drive, rq, ide_head_wait); - if (err == 0 drv drv-resume) - drv-resume(drive); + if (err == 0 dev-driver) { + ide_driver_t *drv = to_ide_driver(dev-driver); + + if (drv-resume) + drv-resume(drive); + } return err; } - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
ide-scsi: fix OOPS in idescsi_expiry()
Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d1be0a8225f2cb1cdc356ebb0ae6800f023ce67d Commit: d1be0a8225f2cb1cdc356ebb0ae6800f023ce67d Parent: ce9b2b0abbf019d5259eb089a1cc256852930f67 Author: Bartlomiej Zolnierkiewicz [EMAIL PROTECTED] AuthorDate: Sat Jun 16 02:24:44 2007 +0200 Committer: Bartlomiej Zolnierkiewicz [EMAIL PROTECTED] CommitDate: Sat Jun 16 02:24:44 2007 +0200 ide-scsi: fix OOPS in idescsi_expiry() drive-driver_data contains pointer to Scsi_Host not idescsi_scsi_t. Signed-off-by: Bartlomiej Zolnierkiewicz [EMAIL PROTECTED] --- drivers/scsi/ide-scsi.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c index 8263f75..bb90df8 100644 --- a/drivers/scsi/ide-scsi.c +++ b/drivers/scsi/ide-scsi.c @@ -463,7 +463,7 @@ static inline unsigned long get_timeout(idescsi_pc_t *pc) static int idescsi_expiry(ide_drive_t *drive) { - idescsi_scsi_t *scsi = drive-driver_data; + idescsi_scsi_t *scsi = drive_to_idescsi(drive); idescsi_pc_t *pc = scsi-pc; #if IDESCSI_DEBUG_LOG - To unsubscribe from this list: send the line unsubscribe git-commits-head in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html