PS3: Remove dev_dbg redefinition in ehci-ps3.c and ohci-ps3.c
Subsystems (6)
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/6 PS3: Remove dev_dbg redefinition in ehci-ps3.c and ohci-ps3.c
Commit 404d5b185b4eb56d6fa2f7bd27833f8df1c38ce4 changed the definition of dev_dbg in the !DEBUG case from being a #define to being a static inline. There was code in usb/host/ehci-ps3.c and ohci-ps3.c to do exactly that, which fails to compile now. This fixes it by removing the redefinition, as the redefinition is now superfluous.
--- drivers/usb/host/ehci-ps3.c | 7 ------- drivers/usb/host/ohci-ps3.c | 8 -------- 2 files changed, 15 deletions(-)
drivers/usb/host/ehci-ps3.c +0 -7
@@ -73,13 +73,6 @@ static const struct hc_driver ps3_ehci_h#endif }; -#if !defined(DEBUG ) -#undef dev_dbg -static inline int __attribute__ ((format (printf,2 ,3 )))dev_dbg ( -const struct device *_dev,const char *fmt, ...) {return 0 ;} -#endif - -static int ps3_ehci_sb_probe (struct ps3_system_bus_device *dev) {int result;
drivers/usb/host/ohci-ps3.c +0 -8
@@ -75,14 +75,6 @@ static const struct hc_driver ps3_ohci_h#endif }; -/* redefine dev_dbg to do a syntax check */ - -#if !defined(DEBUG ) -#undef dev_dbg -static inline int __attribute__ ((format (printf,2 ,3 )))dev_dbg ( -const struct device *_dev,const char *fmt, ...) {return 0 ;} -#endif -static int ps3_ohci_sb_probe (struct ps3_system_bus_device *dev) {int result;
PATCH 2/6 PS3: Add DABR support
In reply to a message not in the archiveAdd PS3 support for the PowerPC processor's Data Address Breakpoint Register (DABR).
--- arch/powerpc/platforms/ps3/setup.c | 7 +++++++ 1 files changed, 7 insertions(+)
arch/powerpc/platforms/ps3/setup.c +7 -0
@@ -137,6 +137,12 @@ early_param("ps3fb", early_parse_ps3fb);#define prealloc_ps3fb_videomemory () do { } while (0)#endif +static int ps3_set_dabr (u64 dabr) +{ +enum {DABR_USER =1 ,DABR_KERNEL =2 ,}; + +return lv1_set_dabr (dabr,DABR_KERNEL |DABR_USER ) ?-1 :0 ; +}static void __init ps3_setup_arch (void ) {
@@ -234,6 +240,7 @@ define_machine(ps3) { .get_boot_time = ps3_get_boot_time, .set_rtc_time = ps3_set_rtc_time, .get_rtc_time = ps3_get_rtc_time, + .set_dabr = ps3_set_dabr, .calibrate_decr = ps3_calibrate_decr, .progress = ps3_progress, .restart = ps3_restart,
PATCH 3/6 PS3: Remove duplicate variable assignement
In reply to a message not in the archiveA minor change to remove a duplicate variable assignement in ps3_mm_shutdown();
--- arch/powerpc/platforms/ps3/mm.c | 1 - 1 file changed, 1 deletion(-)
arch/powerpc/platforms/ps3/mm.c +0 -1
@@ -826,5 +826,4 @@ void __init ps3_mm_init(void)void ps3_mm_shutdown (void ) {ps3_mm_region_destroy (&map.r1); - map.total = map.rm.size; }
PATCH 4/6 PS3: Interrupt routine fixups.
In reply to a message not in the archiveFixups for the ps3 interrupt routines to support all HV device in a generic way.
--- arch/powerpc/platforms/ps3/interrupt.c | 234 +++++++++++++++++++++++---------- arch/powerpc/platforms/ps3/smp.c | 6 arch/powerpc/platforms/ps3/spu.c | 16 +- drivers/ps3/vuart.c | 8 - drivers/usb/host/ehci-ps3.c | 4 drivers/usb/host/ohci-ps3.c | 4 drivers/video/ps3fb.c | 12 - include/asm-powerpc/ps3.h | 33 ++-- 8 files changed, 211 insertions(+), 106 deletions(-)
arch/powerpc/platforms/ps3/interrupt.c +166 -68
@@ -89,7 +89,18 @@ struct ps3_private { static DEFINE_PER_CPU(struct ps3_private, ps3_private); -int ps3_alloc_irq (enum ps3_cpu_binding cpu,unsigned long outlet, +/** +* ps3_virq_setup - virq related setup. +* @cpu: enum ps3_cpu_binding indicating the cpu the interrupt should be +* serviced on. +* @outlet: The HV outlet from the various create outlet routines. +* @virq: The assigned Linux virq. +* +* Calls irq_create_mapping() to get a virq and sets the chip data to +* ps3_private data. +*/ + +int ps3_virq_setup (enum ps3_cpu_binding cpu,unsigned long outlet,unsigned int *virq) {int result;
@@ -111,17 +122,6 @@ int ps3_alloc_irq(enum ps3_cpu_binding c goto fail_create; } -/* Binds outlet to cpu + virq. */ - - result =lv1_connect_irq_plug_ext (pd->node, pd->cpu, *virq, outlet,0 ); - -if (result) { -pr_info ("%s:%d: lv1_connect_irq_plug_ext failed: %s\n" , - __func__, __LINE__,ps3_result (result)); - result = -EPERM ; - goto fail_connect; - } -pr_debug ("%s:%d: outlet %lu => cpu %u, virq %u\n" , __func__, __LINE__, outlet, cpu, *virq);
@@ -136,94 +136,118 @@ int ps3_alloc_irq(enum ps3_cpu_binding creturn result; fail_set: -lv1_disconnect_irq_plug_ext (pd->node, pd->cpu, *virq); -fail_connect:irq_dispose_mapping (*virq); fail_create:return result; } -EXPORT_SYMBOL_GPL (ps3_alloc_irq); -int ps3_free_irq (unsigned int virq) +/** +* ps3_virq_destroy - virq related teardown. +* @virq: The assigned Linux virq. +* +* Clears chip data and calls irq_dispose_mapping() for the virq. +*/ + +int ps3_virq_destroy (unsigned int virq) { -int result;const struct ps3_private *pd =get_irq_chip_data (virq);pr_debug ("%s:%d: node %lu, cpu %d, virq %u\n" , __func__, __LINE__, pd->node, pd->cpu, virq); - result =lv1_disconnect_irq_plug_ext (pd->node, pd->cpu, virq); - -if (result) -pr_info ("%s:%d: lv1_disconnect_irq_plug_ext failed: %s\n" , - __func__, __LINE__,ps3_result (result)); -set_irq_chip_data (virq,NULL );irq_dispose_mapping (virq); -return result; + +pr_debug ("%s:%d <-\n" , __func__, __LINE__); +return 0 ; } -EXPORT_SYMBOL_GPL (ps3_free_irq);/** -* ps3_alloc_io_irq - Assign a virq to a system bus device. +* ps3_irq_plug_setup - Generic outlet and virq related setup. * @cpu: enum ps3_cpu_binding indicating the cpu the interrupt should be * serviced on. -* @interrupt_id: The device interrupt id read from the system repository. +* @outlet: The HV outlet from the various create outlet routines. * @virq: The assigned Linux virq. * -* An io irq represents a non-virtualized device interrupt. interrupt_id -* coresponds to the interrupt number of the interrupt controller. +* Sets up virq and connects the irq plug. */ -int ps3_alloc_io_irq (enum ps3_cpu_binding cpu,unsigned int interrupt_id, +int ps3_irq_plug_setup (enum ps3_cpu_binding cpu,unsigned long outlet,unsigned int *virq) {int result; -unsigned long outlet; +struct ps3_private *pd; - result =lv1_construct_io_irq_outlet (interrupt_id, &outlet); + result =ps3_virq_setup (cpu, outlet, virq);if (result) { -pr_debug ("%s:%d: lv1_construct_io_irq_outlet failed: %s\n" , - __func__, __LINE__,ps3_result (result)); -return result; +pr_debug ("%s:%d: ps3_virq_setup failed\n" , __func__, __LINE__); + goto fail_setup; } - result =ps3_alloc_irq (cpu, outlet, virq); -BUG_ON (result); + pd =get_irq_chip_data (*virq); + +/* Binds outlet to cpu + virq. */ + + result =lv1_connect_irq_plug_ext (pd->node, pd->cpu, *virq, outlet,0 ); +if (result) { +pr_info ("%s:%d: lv1_connect_irq_plug_ext failed: %s\n" , + __func__, __LINE__,ps3_result (result)); + result = -EPERM ; + goto fail_connect; + } + +return result; + +fail_connect: +ps3_virq_destroy (*virq); +fail_setup:return result; } -EXPORT_SYMBOL_GPL (ps3_alloc_io_irq); +EXPORT_SYMBOL_GPL (ps3_irq_plug_setup); + +/** +* ps3_irq_plug_destroy - Generic outlet and virq related teardown. +* @virq: The assigned Linux virq. +* +* Disconnects the irq plug and tears down virq. +* Do not call for system bus event interrupts setup with +* ps3_sb_event_receive_port_setup(). +*/ -int ps3_free_io_irq (unsigned int virq) +int ps3_irq_plug_destroy (unsigned int virq) {int result; +const struct ps3_private *pd =get_irq_chip_data (virq); - result =lv1_destruct_io_irq_outlet (virq_to_hw (virq)); +pr_debug ("%s:%d: node %lu, cpu %d, virq %u\n" , __func__, __LINE__, + pd->node, pd->cpu, virq); + + result =lv1_disconnect_irq_plug_ext (pd->node, pd->cpu, virq);if (result) -pr_debug ("%s:%d: lv1_destruct_io_irq_outlet failed: %s\n" , - __func__, __LINE__,ps3_result (result)); +pr_info ("%s:%d: lv1_disconnect_irq_plug_ext failed: %s\n" , + __func__, __LINE__,ps3_result (result)); -ps3_free_irq (virq); +ps3_virq_destroy (virq);return result; } -EXPORT_SYMBOL_GPL (ps3_free_io_irq); +EXPORT_SYMBOL_GPL (ps3_irq_plug_destroy);/** -* ps3_alloc_event_irq - Allocate a virq for use with a system event. +* ps3_event_receive_port_setup - Setup an event receive port. * @cpu: enum ps3_cpu_binding indicating the cpu the interrupt should be * serviced on. * @virq: The assigned Linux virq. * * The virq can be used with lv1_connect_interrupt_event_receive_port() to -* arrange to receive events, or with ps3_send_event_locally() to signal -* events. +* arrange to receive interrupts from system-bus devices, or with +* ps3_send_event_locally() to signal events. */ -int ps3_alloc_event_irq (enum ps3_cpu_binding cpu,unsigned int *virq) +int ps3_event_receive_port_setup (enum ps3_cpu_binding cpu,unsigned int *virq) {int result;unsigned long outlet;
@@ -237,17 +261,27 @@ int ps3_alloc_event_irq(enum ps3_cpu_binreturn result; } - result =ps3_alloc_irq (cpu, outlet, virq); + result =ps3_irq_plug_setup (cpu, outlet, virq);BUG_ON (result);return result; } +EXPORT_SYMBOL_GPL (ps3_event_receive_port_setup); + +/** +* ps3_event_receive_port_destroy - Destroy an event receive port. +* @virq: The assigned Linux virq. +* +* Since ps3_event_receive_port_destroy destroys the receive port outlet, +* SB devices need to call disconnect_interrupt_event_receive_port() before +* this. +*/ -int ps3_free_event_irq (unsigned int virq) +int ps3_event_receive_port_destroy (unsigned int virq) {int result; -pr_debug (" -> %s:%d\n" , __func__, __LINE__); +pr_debug (" -> %s:%d virq: %u\n" , __func__, __LINE__, virq); result =lv1_destruct_event_receive_port (virq_to_hw (virq));
@@ -255,11 +289,17 @@ int ps3_free_event_irq(unsigned int virqpr_debug ("%s:%d: lv1_destruct_event_receive_port failed: %s\n" , __func__, __LINE__,ps3_result (result)); -ps3_free_irq (virq); +/* lv1_destruct_event_receive_port() destroys the IRQ plug, +* so don't call ps3_irq_plug_destroy() here. +*/ + + result =ps3_virq_destroy (virq); +BUG_ON (result);pr_debug (" <- %s:%d\n" , __func__, __LINE__);return result; } +EXPORT_SYMBOL_GPL (ps3_event_receive_port_destroy);int ps3_send_event_locally (unsigned int virq) {
@@ -267,7 +307,7 @@ int ps3_send_event_locally(unsigned int }/** -* ps3_connect_event_irq - Assign a virq to a system bus device. +* ps3_sb_event_receive_port_setup - Setup a system bus event receive port. * @cpu: enum ps3_cpu_binding indicating the cpu the interrupt should be * serviced on. * @did: The HV device identifier read from the system repository.
@@ -278,13 +318,15 @@ int ps3_send_event_locally(unsigned int* coresponds to the software interrupt number. */ -int ps3_connect_event_irq (enum ps3_cpu_binding cpu, +int ps3_sb_event_receive_port_setup (enum ps3_cpu_binding cpu,const struct ps3_device_id *did,unsigned int interrupt_id,unsigned int *virq) { +/* this should go in system-bus.c */ +int result; - result =ps3_alloc_event_irq (cpu, virq); + result =ps3_event_receive_port_setup (cpu, virq);if (result)return result;
@@ -296,7 +338,7 @@ int ps3_connect_event_irq(enum ps3_cpu_bpr_debug ("%s:%d: lv1_connect_interrupt_event_receive_port" " failed: %s\n" , __func__, __LINE__,ps3_result (result)); -ps3_free_event_irq (*virq); +ps3_event_receive_port_destroy (*virq); *virq =NO_IRQ ;return result; }
@@ -306,10 +348,13 @@ int ps3_connect_event_irq(enum ps3_cpu_breturn 0 ; } +EXPORT_SYMBOL (ps3_sb_event_receive_port_setup); -int ps3_disconnect_event_irq (const struct ps3_device_id *did, +int ps3_sb_event_receive_port_destroy (const struct ps3_device_id *did,unsigned int interrupt_id,unsigned int virq) { +/* this should go in system-bus.c */ +int result; pr_debug(" -> %s:%d: interrupt_id %u, virq %u\n", __func__, __LINE__,
@@ -323,14 +368,65 @@ int ps3_disconnect_event_irq(const struc" failed: %s\n" , __func__, __LINE__, ps3_result(result)); -ps3_free_event_irq (virq); + result =ps3_event_receive_port_destroy (virq); +BUG_ON (result);pr_debug (" <- %s:%d\n" , __func__, __LINE__);return result; } +EXPORT_SYMBOL (ps3_sb_event_receive_port_destroy);/** -* ps3_alloc_vuart_irq - Configure the system virtual uart virq. +* ps3_io_irq_setup - Setup a system bus io irq. +* @cpu: enum ps3_cpu_binding indicating the cpu the interrupt should be +* serviced on. +* @interrupt_id: The device interrupt id read from the system repository. +* @virq: The assigned Linux virq. +* +* An io irq represents a non-virtualized device interrupt. interrupt_id +* coresponds to the interrupt number of the interrupt controller. +*/ + +int ps3_io_irq_setup (enum ps3_cpu_binding cpu,unsigned int interrupt_id, +unsigned int *virq) +{ +int result; +unsigned long outlet; + + result =lv1_construct_io_irq_outlet (interrupt_id, &outlet); + +if (result) { +pr_debug ("%s:%d: lv1_construct_io_irq_outlet failed: %s\n" , + __func__, __LINE__,ps3_result (result)); +return result; + } + + result =ps3_irq_plug_setup (cpu, outlet, virq); +BUG_ON (result); + +return result; +} +EXPORT_SYMBOL_GPL (ps3_io_irq_setup); + +int ps3_io_irq_destroy (unsigned int virq) +{ +int result; + + result =lv1_destruct_io_irq_outlet (virq_to_hw (virq)); + +if (result) +pr_debug ("%s:%d: lv1_destruct_io_irq_outlet failed: %s\n" , + __func__, __LINE__,ps3_result (result)); + + result =ps3_irq_plug_destroy (virq); +BUG_ON (result); + +return result; +} +EXPORT_SYMBOL_GPL (ps3_io_irq_destroy); + +/** +* ps3_vuart_irq_setup - Setup the system virtual uart virq. * @cpu: enum ps3_cpu_binding indicating the cpu the interrupt should be * serviced on. * @virt_addr_bmp: The caller supplied virtual uart interrupt bitmap.
@@ -340,7 +436,7 @@ int ps3_disconnect_event_irq(const struc* freeing the interrupt will return a wrong state error. */ -int ps3_alloc_vuart_irq (enum ps3_cpu_binding cpu,void * virt_addr_bmp, +int ps3_vuart_irq_setup (enum ps3_cpu_binding cpu,void * virt_addr_bmp,unsigned int *virq) {int result;
@@ -359,13 +455,13 @@ int ps3_alloc_vuart_irq(enum ps3_cpu_binreturn result; } - result =ps3_alloc_irq (cpu, outlet, virq); + result =ps3_irq_plug_setup (cpu, outlet, virq);BUG_ON (result);return result; } -int ps3_free_vuart_irq (unsigned int virq) +int ps3_vuart_irq_destroy (unsigned int virq) {int result;
@@ -377,13 +473,14 @@ int ps3_free_vuart_irq(unsigned int virqreturn result; } -ps3_free_irq (virq); + result =ps3_irq_plug_destroy (virq); +BUG_ON (result);return result; }/** -* ps3_alloc_spe_irq - Configure an spe virq. +* ps3_spe_irq_setup - Setup an spe virq. * @cpu: enum ps3_cpu_binding indicating the cpu the interrupt should be * serviced on. * @spe_id: The spe_id returned from lv1_construct_logical_spe().
@@ -392,7 +489,7 @@ int ps3_free_vuart_irq(unsigned int virq* */ -int ps3_alloc_spe_irq (enum ps3_cpu_binding cpu,unsigned long spe_id, +int ps3_spe_irq_setup (enum ps3_cpu_binding cpu,unsigned long spe_id,unsigned int class,unsigned int *virq) {int result;
@@ -408,15 +505,16 @@ int ps3_alloc_spe_irq(enum ps3_cpu_bindireturn result; } - result =ps3_alloc_irq (cpu, outlet, virq); + result =ps3_irq_plug_setup (cpu, outlet, virq);BUG_ON (result);return result; } -int ps3_free_spe_irq (unsigned int virq) +int ps3_spe_irq_destroy (unsigned int virq) { -ps3_free_irq (virq); +int result =ps3_irq_plug_destroy (virq); +BUG_ON (result);return 0 ; }
arch/powerpc/platforms/ps3/smp.c +4 -2
@@ -110,7 +110,7 @@ static void __init ps3_smp_setup_cpu(intBUILD_BUG_ON (PPC_MSG_DEBUGGER_BREAK !=3 );for (i =0 ; i <MSG_COUNT ; i++) { - result =ps3_alloc_event_irq (cpu, &virqs[i]); + result =ps3_event_receive_port_setup (cpu, &virqs[i]);if (result)continue ;
@@ -134,11 +134,13 @@ void ps3_smp_cleanup_cpu(int cpu)int i;DBG (" -> %s:%d: (%d)\n" , __func__, __LINE__, cpu); +for (i =0 ; i <MSG_COUNT ; i++) { -ps3_free_event_irq (virqs[i]);free_irq (virqs[i], (void *)(long )i); +ps3_event_receive_port_destroy (virqs[i]); virqs[i] =NO_IRQ ; } +DBG (" <- %s:%d: (%d)\n" , __func__, __LINE__, cpu); }
arch/powerpc/platforms/ps3/spu.c +8 -8
@@ -230,19 +230,19 @@ static int __init setup_interrupts(struc {int result; - result =ps3_alloc_spe_irq (PS3_BINDING_CPU_ANY ,spu_pdata (spu)->spe_id, + result =ps3_spe_irq_setup (PS3_BINDING_CPU_ANY ,spu_pdata (spu)->spe_id,0 , &spu->irqs[0 ]);if (result) goto fail_alloc_0; - result =ps3_alloc_spe_irq (PS3_BINDING_CPU_ANY ,spu_pdata (spu)->spe_id, + result =ps3_spe_irq_setup (PS3_BINDING_CPU_ANY ,spu_pdata (spu)->spe_id,1 , &spu->irqs[1 ]);if (result) goto fail_alloc_1; - result =ps3_alloc_spe_irq (PS3_BINDING_CPU_ANY ,spu_pdata (spu)->spe_id, + result =ps3_spe_irq_setup (PS3_BINDING_CPU_ANY ,spu_pdata (spu)->spe_id,2 , &spu->irqs[2 ]);if (result)
@@ -251,9 +251,9 @@ static int __init setup_interrupts(strucreturn result; fail_alloc_2: -ps3_free_spe_irq (spu->irqs[1 ]); +ps3_spe_irq_destroy (spu->irqs[1 ]); fail_alloc_1: -ps3_free_spe_irq (spu->irqs[0 ]); +ps3_spe_irq_destroy (spu->irqs[0 ]); fail_alloc_0: spu->irqs[0 ] = spu->irqs[1 ] = spu->irqs[2 ] =NO_IRQ ;return result;
@@ -301,9 +301,9 @@ static int ps3_destroy_spu(struct spu *s result =lv1_disable_logical_spe (spu_pdata (spu)->spe_id,0 );BUG_ON (result); -ps3_free_spe_irq (spu->irqs[2 ]); -ps3_free_spe_irq (spu->irqs[1 ]); -ps3_free_spe_irq (spu->irqs[0 ]); +ps3_spe_irq_destroy (spu->irqs[2 ]); +ps3_spe_irq_destroy (spu->irqs[1 ]); +ps3_spe_irq_destroy (spu->irqs[0 ]); spu->irqs[0 ] = spu->irqs[1 ] = spu->irqs[2 ] =NO_IRQ ;
drivers/ps3/vuart.c +4 -4
@@ -886,12 +886,12 @@ static int ps3_vuart_probe(struct deviceif (++vuart_bus_priv.use_count ==1 ) { - result =ps3_alloc_vuart_irq (PS3_BINDING_CPU_ANY , + result =ps3_vuart_irq_setup (PS3_BINDING_CPU_ANY , (void *)&vuart_bus_priv.bmp.status, &vuart_bus_priv.virq);if (result) {dev_dbg (&dev->core, -"%s:%d: ps3_alloc_vuart_irq failed (%d)\n" , +"%s:%d: ps3_vuart_irq_setup failed (%d)\n" , __func__, __LINE__, result); result = -EPERM ; goto fail_alloc_irq;
@@ -937,7 +937,7 @@ static int ps3_vuart_probe(struct device fail_probe:ps3_vuart_set_interrupt_mask (dev,0 ); fail_request_irq: -ps3_free_vuart_irq (vuart_bus_priv.virq); +ps3_vuart_irq_destroy (vuart_bus_priv.virq); vuart_bus_priv.virq =NO_IRQ ; fail_alloc_irq: --vuart_bus_priv.use_count;
@@ -975,7 +975,7 @@ static int ps3_vuart_remove(struct devicif (--vuart_bus_priv.use_count ==0 ) {BUG ();free_irq (vuart_bus_priv.virq, &vuart_bus_priv); -ps3_free_vuart_irq (vuart_bus_priv.virq); +ps3_vuart_irq_destroy (vuart_bus_priv.virq); vuart_bus_priv.virq =NO_IRQ ; }
drivers/usb/host/ehci-ps3.c +2 -2
@@ -97,7 +97,7 @@ static int ps3_ehci_sb_probe(struct ps3_dev_dbg (&dev->core,"%s:%d: mmio mapped_addr %lxh\n" , __func__, __LINE__, dev->m_region->lpar_addr); - result =ps3_alloc_io_irq (PS3_BINDING_CPU_ANY , dev->interrupt_id, &virq); + result =ps3_io_irq_setup (PS3_BINDING_CPU_ANY , dev->interrupt_id, &virq);if (result) { dev_dbg(&dev->core, "%s:%d: ps3_construct_io_irq(%d) failed.\n",
@@ -155,7 +155,7 @@ fail_add_hcd: fail_ioremap:usb_put_hcd (hcd); fail_create_hcd: -ps3_free_io_irq (virq); +ps3_io_irq_destroy (virq); fail_irq:ps3_free_mmio_region (dev->m_region); fail_mmio:
drivers/usb/host/ohci-ps3.c +2 -2
@@ -99,7 +99,7 @@ static int ps3_ohci_sb_probe(struct ps3_dev_dbg (&dev->core,"%s:%d: mmio mapped_addr %lxh\n" , __func__, __LINE__, dev->m_region->lpar_addr); - result =ps3_alloc_io_irq (PS3_BINDING_CPU_ANY , dev->interrupt_id, &virq); + result =ps3_io_irq_setup (PS3_BINDING_CPU_ANY , dev->interrupt_id, &virq);if (result) { dev_dbg(&dev->core, "%s:%d: ps3_construct_io_irq(%d) failed.\n",
@@ -157,7 +157,7 @@ fail_add_hcd: fail_ioremap:usb_put_hcd (hcd); fail_create_hcd: -ps3_free_io_irq (virq); +ps3_io_irq_destroy (virq); fail_irq:ps3_free_mmio_region (dev->m_region); fail_mmio:
drivers/video/ps3fb.c +6 -6
@@ -885,8 +885,8 @@ static int ps3fb_vsync_settings(struct g } ps3fb.dev = dev; - error =ps3_alloc_irq (PS3_BINDING_CPU_ANY , dinfo->irq.irq_outlet, - &ps3fb.irq_no); + error =ps3_irq_plug_setup (PS3_BINDING_CPU_ANY , dinfo->irq.irq_outlet, + &ps3fb.irq_no);if (error) {printk (KERN_ERR "%s: ps3_alloc_irq failed %d\n" , __FUNCTION__, error);
@@ -898,7 +898,7 @@ static int ps3fb_vsync_settings(struct gif (error) {printk (KERN_ERR "%s: request_irq failed %d\n" , __FUNCTION__, error); -ps3_free_irq (ps3fb.irq_no); +ps3_irq_plug_destroy (ps3fb.irq_no);return error; }
@@ -1059,7 +1059,7 @@ err_framebuffer_release:framebuffer_release (info); err_free_irq:free_irq (ps3fb.irq_no, ps3fb.dev); -ps3_free_irq (ps3fb.irq_no); +ps3_irq_plug_destroy (ps3fb.irq_no); err_iounmap_dinfo:iounmap ((u8 __iomem *)ps3fb.dinfo); err_gpu_context_free:
@@ -1075,7 +1075,7 @@ static void ps3fb_shutdown(struct platfops3fb_flip_ctl (0 );/* flip off */ ps3fb.dinfo->irq.mask =0 ;free_irq (ps3fb.irq_no, ps3fb.dev); -ps3_free_irq (ps3fb.irq_no); +ps3_irq_plug_destroy (ps3fb.irq_no);iounmap ((u8 __iomem *)ps3fb.dinfo); }
@@ -1085,7 +1085,7 @@ void ps3fb_cleanup(void)if (ps3fb.irq_no) {free_irq (ps3fb.irq_no, ps3fb.dev); -ps3_free_irq (ps3fb.irq_no); +ps3_irq_plug_destroy (ps3fb.irq_no); }iounmap ((u8 __iomem *)ps3fb.dinfo);
include/asm-powerpc/ps3.h +19 -14
@@ -167,26 +167,31 @@ enum ps3_cpu_binding { PS3_BINDING_CPU_1 = 1, }; -int ps3_alloc_io_irq (enum ps3_cpu_binding cpu,unsigned int interrupt_id, +int ps3_virq_setup (enum ps3_cpu_binding cpu,unsigned long outlet,unsigned int *virq); -int ps3_free_io_irq (unsigned int virq); -int ps3_alloc_event_irq (enum ps3_cpu_binding cpu,unsigned int *virq); -int ps3_free_event_irq (unsigned int virq); +int ps3_virq_destroy (unsigned int virq); +int ps3_irq_plug_setup (enum ps3_cpu_binding cpu,unsigned long outlet, +unsigned int *virq); +int ps3_irq_plug_destroy (unsigned int virq); +int ps3_event_receive_port_setup (enum ps3_cpu_binding cpu,unsigned int *virq); +int ps3_event_receive_port_destroy (unsigned int virq);int ps3_send_event_locally (unsigned int virq); -int ps3_connect_event_irq (enum ps3_cpu_binding cpu, -const struct ps3_device_id *did,unsigned int interrupt_id, + +int ps3_io_irq_setup (enum ps3_cpu_binding cpu,unsigned int interrupt_id,unsigned int *virq); -int ps3_disconnect_event_irq (const struct ps3_device_id *did, -unsigned int interrupt_id,unsigned int virq); -int ps3_alloc_vuart_irq (enum ps3_cpu_binding cpu,void * virt_addr_bmp, +int ps3_io_irq_destroy (unsigned int virq); +int ps3_vuart_irq_setup (enum ps3_cpu_binding cpu,void * virt_addr_bmp,unsigned int *virq); -int ps3_free_vuart_irq (unsigned int virq); -int ps3_alloc_spe_irq (enum ps3_cpu_binding cpu,unsigned long spe_id, +int ps3_vuart_irq_destroy (unsigned int virq); +int ps3_spe_irq_setup (enum ps3_cpu_binding cpu,unsigned long spe_id,unsigned int class,unsigned int *virq); -int ps3_free_spe_irq (unsigned int virq); -int ps3_alloc_irq (enum ps3_cpu_binding cpu,unsigned long outlet, +int ps3_spe_irq_destroy (unsigned int virq); + +int ps3_sb_event_receive_port_setup (enum ps3_cpu_binding cpu, +const struct ps3_device_id *did,unsigned int interrupt_id,unsigned int *virq); -int ps3_free_irq (unsigned int virq); +int ps3_sb_event_receive_port_destroy (const struct ps3_device_id *did, +unsigned int interrupt_id,unsigned int virq);/* lv1 result codes */
PATCH 5/6 PS3: Fix system slowdown
In reply to a message not in the archiveFrom: Takao Shinohara <[email protected]>
The PS3 HV will deliver soft-disabled interrupts at the next HV call or interrupt. Add an HV call to local_irq_restore() to force the timely delivery of any pending interrupts.
This fixes the system slowdown bug reported here
http://bugzilla.kernel.org/show_bug.cgi?id=8260
From: Takao Shinohara <[email protected]>
---
I made a request to change the behavior of the lv1 hypervisor to better support the way we do soft-disable on Linux, but it is still not been decided if and when that support will be done.
arch/powerpc/kernel/irq.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
arch/powerpc/kernel/irq.c +11 -0
@@ -67,6 +67,7 @@#ifdef CONFIG_PPC64 #include <asm/paca.h> #include <asm/firmware.h> +#include <asm/lv1call.h> #endif int __irq_offset_value;
@@ -162,6 +163,16 @@ void local_irq_restore(unsigned long en) local_paca->hard_enabled = en;if ((int )mfspr (SPRN_DEC ) <0 )mtspr (SPRN_DEC ,1 ); + +/* +* Force the delivery of pending soft-disabled interrupts on PS3. +* Any HV call will have this side effect. +*/ +if (firmware_has_feature (FW_FEATURE_PS3_LV1 )) { +u64 tmp; +lv1_get_version_info (&tmp); + } + hard_irq_enable(); }#endif /* CONFIG_PPC64 */
Re: [patch 5/6] PS3: Fix system slowdown
Quoted 11 lines · Geoff Levand
From: Takao Shinohara <[email protected]>
The PS3 HV will deliver soft-disabled interrupts at the next HV call or interrupt. Add an HV call to
local_irq_restore()to force the timely delivery of any pending interrupts.This fixes the system slowdown bug reported here
http://bugzilla.kernel.org/show_bug.cgi?id=8260From: Takao Shinohara <[email protected]>
Signed-off-by Geoff Levand <[email protected]>
Note: It would be nicer to do the HV call from assembly, using a firmware feature section, when the interrupt actually happens. The main reason I haven't done a patch yet is that it happens in an exception vectors with only few registers available nad the HV call will clobber a lot more than we have saved.
Ben.
Quoted 37 lines
---
I made a request to change the behavior of the lv1 hypervisor to better support the way we do soft-disable on Linux, but it is still not been decided if and when that support will be done.
arch/powerpc/kernel/irq.c | 11 +++++++++++ 1 file changed, 11 insertions(+)arch/powerpc/kernel/irq.c +11
-0@@ -67,6 +67,7 @@#ifdef CONFIG_PPC64 #include <asm/paca.h> #include <asm/firmware.h> +#include <asm/lv1call.h> #endif int __irq_offset_value;@@ -162,6 +163,16 @@ void local_irq_restore(unsigned long en) local_paca->hard_enabled = en;if ((int )mfspr (SPRN_DEC ) <0 )mtspr (SPRN_DEC ,1 ); + +/* +* Force the delivery of pending soft-disabled interrupts on PS3. +* Any HV call will have this side effect. +*/ +if (firmware_has_feature (FW_FEATURE_PS3_LV1 )) { +u64 tmp; +lv1_get_version_info (&tmp); + } + hard_irq_enable(); }#endif /* CONFIG_PPC64 */
PATCH 6/6 PS3: Defconfig updates
In reply to a message not in the archiveUpdates to ps3_defconfig for linux-2.6.21.
--- arch/powerpc/configs/ps3_defconfig | 329 ++++++++++++++++++++++++++++--------- 1 file changed, 255 insertions(+), 74 deletions(-)
arch/powerpc/configs/ps3_defconfig +255 -74
@@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.20-rc6 -# Thu Jan 25 13:35:34 2007 +# Linux kernel version: 2.6.21 +# Mon Apr 30 12:03:35 2007 # CONFIG_PPC64=y CONFIG_64BIT=y
@@ -60,6 +60,7 @@ CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y # CONFIG_IPC_NS is not set +CONFIG_SYSVIPC_SYSCTL=y # CONFIG_POSIX_MQUEUE is not set # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_TASKSTATS is not set
@@ -69,6 +70,7 @@ CONFIG_SYSVIPC=y # CONFIG_CPUSETS is not set CONFIG_SYSFS_DEPRECATED=y # CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SYSCTL=y
@@ -131,13 +133,36 @@ CONFIG_PPC_MULTIPLATFORM=y # CONFIG_PPC_PSERIES is not set # CONFIG_PPC_ISERIES is not set # CONFIG_PPC_MPC52xx is not set +# CONFIG_PPC_MPC5200 is not set # CONFIG_PPC_PMAC is not set # CONFIG_PPC_MAPLE is not set # CONFIG_PPC_PASEMI is not set +# CONFIG_PPC_CELLEB is not set +CONFIG_PPC_PS3=y + +# +# PS3 Platform Options +# +# CONFIG_PS3_ADVANCED is not set +CONFIG_PS3_HTAB_SIZE=20 +# CONFIG_PS3_DYNAMIC_DMA is not set +CONFIG_PS3_USE_LPAR_ADDR=y +CONFIG_PS3_VUART=y +CONFIG_PS3_PS3AV=y +CONFIG_PS3_SYS_MANAGER=y CONFIG_PPC_CELL=y # CONFIG_PPC_CELL_NATIVE is not set # CONFIG_PPC_IBM_CELL_BLADE is not set -CONFIG_PPC_PS3=y + +# +# Cell Broadband Engine options +# +CONFIG_SPU_FS=y +CONFIG_SPU_BASE=y +# CONFIG_PQ2ADS is not set +# CONFIG_MPIC is not set +# CONFIG_MPIC_WEIRD is not set +# CONFIG_PPC_I8259 is not set # CONFIG_U3_DART is not set # CONFIG_PPC_RTAS is not set # CONFIG_MMIO_NVRAM is not set
@@ -146,24 +171,7 @@ CONFIG_PPC_PS3=y # CONFIG_PPC_INDIRECT_IO is not set # CONFIG_GENERIC_IOMAP is not set # CONFIG_CPU_FREQ is not set -# CONFIG_WANT_EARLY_SERIAL is not set -# CONFIG_MPIC is not set - -# -# Cell Broadband Engine options -# -CONFIG_SPU_FS=y -CONFIG_SPU_BASE=y -# CONFIG_CBE_RAS is not set - -# -# PS3 Platform Options -# -CONFIG_PS3_HTAB_SIZE=20 -# CONFIG_PS3_DYNAMIC_DMA is not set -CONFIG_PS3_USE_LPAR_ADDR=y -CONFIG_PS3_VUART=y -CONFIG_PS3_PS3AV=y +# CONFIG_CPM2 is not set # # Kernel options
@@ -179,10 +187,10 @@ CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_BKL is not set CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=y -CONFIG_FORCE_MAX_ZONEORDER=9 +CONFIG_FORCE_MAX_ZONEORDER=13 # CONFIG_IOMMU_VMERGE is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y -# CONFIG_KEXEC is not set +CONFIG_KEXEC=y # CONFIG_CRASH_DUMP is not set # CONFIG_IRQ_ALL_CPUS is not set # CONFIG_NUMA is not set
@@ -203,22 +211,22 @@ CONFIG_MEMORY_HOTPLUG=y CONFIG_MEMORY_HOTPLUG_SPARSE=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_RESOURCES_64BIT=y +CONFIG_ZONE_DMA_FLAG=1 CONFIG_ARCH_MEMORY_PROBE=y -CONFIG_PPC_64K_PAGES=y +# CONFIG_PPC_64K_PAGES is not set # CONFIG_SCHED_SMT is not set CONFIG_PROC_DEVICETREE=y -CONFIG_CMDLINE_BOOL=y -CONFIG_CMDLINE="root=/dev/sda1 ip=dhcp" +# CONFIG_CMDLINE_BOOL is not set # CONFIG_PM is not set # CONFIG_SECCOMP is not set +# CONFIG_WANT_DEVICE_TREE is not set CONFIG_ISA_DMA_API=y # # Bus options # +CONFIG_ZONE_DMA=y CONFIG_GENERIC_ISA_DMA=y -# CONFIG_MPIC_WEIRD is not set -# CONFIG_PPC_I8259 is not set # CONFIG_PCI is not set # CONFIG_PCI_DOMAINS is not set
@@ -240,10 +248,13 @@ CONFIG_NET=y # # Networking options # -# CONFIG_NETDEBUG is not set CONFIG_PACKET=y CONFIG_PACKET_MMAP=y CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set # CONFIG_NET_KEY is not set CONFIG_INET=y # CONFIG_IP_MULTICAST is not set
@@ -261,7 +272,7 @@ CONFIG_IP_PNP_DHCP=y # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set # CONFIG_INET_XFRM_TUNNEL is not set -# CONFIG_INET_TUNNEL is not set +CONFIG_INET_TUNNEL=y # CONFIG_INET_XFRM_MODE_TRANSPORT is not set # CONFIG_INET_XFRM_MODE_TUNNEL is not set # CONFIG_INET_XFRM_MODE_BEET is not set
@@ -270,9 +281,23 @@ CONFIG_IP_PNP_DHCP=y CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set -# CONFIG_IPV6 is not set +CONFIG_IPV6=y +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set # CONFIG_INET6_XFRM_TUNNEL is not set # CONFIG_INET6_TUNNEL is not set +CONFIG_INET6_XFRM_MODE_TRANSPORT=y +CONFIG_INET6_XFRM_MODE_TUNNEL=y +CONFIG_INET6_XFRM_MODE_BEET=y +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +CONFIG_IPV6_SIT=y +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set # CONFIG_NETWORK_SECMARK is not set # CONFIG_NETFILTER is not set
@@ -313,7 +338,31 @@ CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_NET_PKTGEN is not set # CONFIG_HAMRADIO is not set # CONFIG_IRDA is not set -# CONFIG_BT is not set +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +# CONFIG_BT_RFCOMM_TTY is not set +# CONFIG_BT_BNEP is not set +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIUSB=m +CONFIG_BT_HCIUSB_SCO=y +# CONFIG_BT_HCIUART is not set +# CONFIG_BT_HCIBCM203X is not set +# CONFIG_BT_HCIBPA10X is not set +# CONFIG_BT_HCIBFUSB is not set +# CONFIG_BT_HCIVHCI is not set +# CONFIG_AF_RXRPC is not set + +# +# Wireless +# +# CONFIG_CFG80211 is not set +CONFIG_WIRELESS_EXT=y # CONFIG_IEEE80211 is not set #
@@ -327,16 +376,13 @@ CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y # CONFIG_FW_LOADER is not set # CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set # # Connector - unified userspace <-> kernelspace linker # # CONFIG_CONNECTOR is not set - -# -# Memory Technology Devices (MTD) -# # CONFIG_MTD is not set #
@@ -347,24 +393,27 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y # # Plug and Play support # +# CONFIG_PNPACPI is not set # # Block devices # # CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_COW_COMMON is not set -# CONFIG_BLK_DEV_LOOP is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_CRYPTOLOOP is not set # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_UB is not set -# CONFIG_BLK_DEV_RAM is not set -# CONFIG_BLK_DEV_INITRD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65535 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set # # Misc devices # -# CONFIG_TIFM_CORE is not set # # ATA/ATAPI/MFM/RLL support
@@ -388,7 +437,7 @@ CONFIG_BLK_DEV_SD=y # CONFIG_CHR_DEV_OSST is not set CONFIG_BLK_DEV_SR=y # CONFIG_BLK_DEV_SR_VENDOR is not set -# CONFIG_CHR_DEV_SG is not set +CONFIG_CHR_DEV_SG=m # CONFIG_CHR_DEV_SCH is not set #
@@ -413,6 +462,7 @@ CONFIG_BLK_DEV_SR=y # # CONFIG_ISCSI_TCP is not set # CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_ESP_CORE is not set # # Serial ATA (prod) and Parallel ATA (experimental) drivers
@@ -460,7 +510,7 @@ CONFIG_NETDEVICES=y # Ethernet (10 or 100Mbit) # # CONFIG_NET_ETHERNET is not set -CONFIG_MII=y +CONFIG_MII=m # # Ethernet (1000 Mbit)
@@ -475,9 +525,10 @@ CONFIG_MII=y # # -# Wireless LAN (non-hamradio) +# Wireless LAN # -# CONFIG_NET_RADIO is not set +# CONFIG_WLAN_PRE80211 is not set +# CONFIG_WLAN_80211 is not set # # Wan interfaces
@@ -551,7 +602,8 @@ CONFIG_HW_CONSOLE=y # Non-8250 serial port support # CONFIG_UNIX98_PTYS=y -# CONFIG_LEGACY_PTYS is not set +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=16 # # IPMI
@@ -598,6 +650,11 @@ CONFIG_GEN_RTC=y # CONFIG_HWMON_VID is not set # +# Multifunction device drivers +# +# CONFIG_MFD_SM501 is not set + +# # Multimedia devices # # CONFIG_VIDEO_DEV is not set
@@ -611,15 +668,22 @@ CONFIG_GEN_RTC=y # # Graphics support # -# CONFIG_FIRMWARE_EDID is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_SVGALIB is not set # CONFIG_FB_MACMODES is not set # CONFIG_FB_BACKLIGHT is not set # CONFIG_FB_MODE_HELPERS is not set # CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# # CONFIG_FB_OF is not set # CONFIG_FB_VGA16 is not set # CONFIG_FB_S1D13XXX is not set
@@ -634,7 +698,7 @@ CONFIG_FB_PS3_DEFAULT_SIZE_M=18 # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y -# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y # CONFIG_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y
@@ -646,17 +710,62 @@ CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set CONFIG_LOGO_LINUX_CLUT224=y -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set # # Sound # -# CONFIG_SOUND is not set +CONFIG_SOUND=y + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=y +# CONFIG_SND_SEQUENCER is not set +# CONFIG_SND_MIXER_OSS is not set +# CONFIG_SND_PCM_OSS is not set +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set + +# +# Generic devices +# +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +# +# ALSA PowerMac devices +# + +# +# ALSA PowerMac requires I2C +# + +# +# USB devices +# +# CONFIG_SND_USB_AUDIO is not set +# CONFIG_SND_USB_USX2Y is not set + +# +# SoC audio support +# +# CONFIG_SND_SOC is not set + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set # # HID Devices # CONFIG_HID=y +# CONFIG_HID_DEBUG is not set # # USB support
@@ -665,13 +774,13 @@ CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y CONFIG_USB=y -CONFIG_USB_DEBUG=y +# CONFIG_USB_DEBUG is not set # # Miscellaneous USB options # -# CONFIG_USB_DEVICEFS is not set -# CONFIG_USB_BANDWIDTH is not set +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_DEVICE_CLASS is not set # CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_OTG is not set
@@ -704,7 +813,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y # # may also be needed; see USB_STORAGE Help for more information # -CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_DEBUG is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set
@@ -720,10 +829,16 @@ CONFIG_USB_STORAGE=y # # USB Input Devices # -CONFIG_USB_HID=y +CONFIG_USB_HID=m # CONFIG_USB_HIDINPUT_POWERBOOK is not set # CONFIG_HID_FF is not set # CONFIG_USB_HIDDEV is not set + +# +# USB HID Boot Protocol drivers +# +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set # CONFIG_USB_AIPTEK is not set # CONFIG_USB_WACOM is not set # CONFIG_USB_ACECAD is not set
@@ -736,6 +851,7 @@ CONFIG_USB_HID=y # CONFIG_USB_ATI_REMOTE2 is not set # CONFIG_USB_KEYSPAN_REMOTE is not set # CONFIG_USB_APPLETOUCH is not set +# CONFIG_USB_GTCO is not set # # USB Imaging devices
@@ -748,15 +864,16 @@ CONFIG_USB_HID=y # # CONFIG_USB_CATC is not set # CONFIG_USB_KAWETH is not set -# CONFIG_USB_PEGASUS is not set +CONFIG_USB_PEGASUS=m # CONFIG_USB_RTL8150 is not set -CONFIG_USB_USBNET_MII=y -CONFIG_USB_USBNET=y -CONFIG_USB_NET_CDCETHER=y +CONFIG_USB_USBNET_MII=m +CONFIG_USB_USBNET=m +# CONFIG_USB_NET_CDCETHER is not set +# CONFIG_USB_NET_DM9601 is not set # CONFIG_USB_NET_GL620A is not set # CONFIG_USB_NET_NET1080 is not set # CONFIG_USB_NET_PLUSB is not set -CONFIG_USB_NET_MCS7830=y +CONFIG_USB_NET_MCS7830=m # CONFIG_USB_NET_RNDIS_HOST is not set # CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_ZAURUS is not set
@@ -781,6 +898,7 @@ CONFIG_USB_MON=y # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set +# CONFIG_USB_BERRY_CHARGE is not set # CONFIG_USB_LED is not set # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set
@@ -791,6 +909,8 @@ CONFIG_USB_MON=y # CONFIG_USB_SISUSBVGA is not set # CONFIG_USB_LD is not set # CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set # # USB DSL modem support
@@ -846,13 +966,19 @@ CONFIG_USB_MON=y # # +# Auxiliary Display support +# + +# # Virtualization # # # File systems # -# CONFIG_EXT2_FS is not set +CONFIG_EXT2_FS=m +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y CONFIG_EXT3_FS_XATTR=y # CONFIG_EXT3_FS_POSIX_ACL is not set
@@ -871,27 +997,30 @@ CONFIG_FS_MBCACHE=y # CONFIG_ROMFS_FS is not set CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y -# CONFIG_QUOTA is not set +CONFIG_QUOTA=y +# CONFIG_QFMT_V1 is not set +CONFIG_QFMT_V2=y +CONFIG_QUOTACTL=y CONFIG_DNOTIFY=y # CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set +CONFIG_AUTOFS4_FS=y # CONFIG_FUSE_FS is not set # # CD-ROM/DVD Filesystems # -CONFIG_ISO9660_FS=y +CONFIG_ISO9660_FS=m CONFIG_JOLIET=y # CONFIG_ZISOFS is not set -CONFIG_UDF_FS=y +CONFIG_UDF_FS=m CONFIG_UDF_NLS=y # # DOS/FAT/NT Filesystems # -CONFIG_FAT_FS=y +CONFIG_FAT_FS=m # CONFIG_MSDOS_FS is not set -CONFIG_VFAT_FS=y +CONFIG_VFAT_FS=m CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_NTFS_FS is not set
@@ -933,7 +1062,7 @@ CONFIG_RAMFS=y CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_NFS_V3_ACL is not set -# CONFIG_NFS_V4 is not set +CONFIG_NFS_V4=y # CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set CONFIG_ROOT_NFS=y
@@ -941,10 +1070,16 @@ CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y -# CONFIG_RPCSEC_GSS_KRB5 is not set +CONFIG_SUNRPC_GSS=y +CONFIG_RPCSEC_GSS_KRB5=y # CONFIG_RPCSEC_GSS_SPKM3 is not set # CONFIG_SMB_FS is not set -# CONFIG_CIFS is not set +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +# CONFIG_CIFS_WEAK_PW_HASH is not set +# CONFIG_CIFS_XATTR is not set +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_EXPERIMENTAL is not set # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set
@@ -1004,6 +1139,8 @@ CONFIG_NLS_ISO8859_1=y # Distributed Lock Manager # # CONFIG_DLM is not set +# CONFIG_UCC_SLOW is not set +# CONFIG_UCC_FAST is not set # # Library routines
@@ -1014,7 +1151,8 @@ CONFIG_BITREVERSE=y CONFIG_CRC32=y # CONFIG_LIBCRC32C is not set CONFIG_PLIST=y -CONFIG_IOMAP_COPY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y # # Instrumentation Support
@@ -1032,16 +1170,16 @@ CONFIG_ENABLE_MUST_CHECK=y # CONFIG_DEBUG_FS is not set # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set CONFIG_LOG_BUF_SHIFT=17 CONFIG_DETECT_SOFTLOCKUP=y # CONFIG_SCHEDSTATS is not set -CONFIG_DEBUG_SLAB=y -# CONFIG_DEBUG_SLAB_LEAK is not set +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_RT_MUTEX_TESTER is not set CONFIG_DEBUG_SPINLOCK=y CONFIG_DEBUG_MUTEXES=y -CONFIG_DEBUG_RWSEMS=y CONFIG_DEBUG_SPINLOCK_SLEEP=y # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_DEBUG_KOBJECT is not set
@@ -1051,8 +1189,10 @@ CONFIG_DEBUG_INFO=y CONFIG_DEBUG_LIST=y CONFIG_FORCED_INLINING=y # CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_FAULT_INJECTION is not set CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_DEBUGGER is not set CONFIG_IRQSTACKS=y # CONFIG_BOOTX_TEXT is not set
@@ -1063,6 +1203,8 @@ CONFIG_PPC_EARLY_DEBUG=y # CONFIG_PPC_EARLY_DEBUG_RTAS_CONSOLE is not set # CONFIG_PPC_EARLY_DEBUG_MAPLE is not set # CONFIG_PPC_EARLY_DEBUG_ISERIES is not set +# CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set +# CONFIG_PPC_EARLY_DEBUG_BEAT is not set # # Security options
@@ -1073,4 +1215,43 @@ CONFIG_PPC_EARLY_DEBUG=y # # Cryptographic options # -# CONFIG_CRYPTO is not set +CONFIG_CRYPTO=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_MANAGER=y +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +# CONFIG_CRYPTO_SHA1 is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_GF128MUL is not set +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_PCBC=m +# CONFIG_CRYPTO_LRW is not set +CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Hardware crypto devices +#