[Fwd: [Bug 7431] New: ohci1394 Oops after a rmmod/modprobe cycle]

Stefan Richter stefanr at s5r6.in-berlin.de
Sun Nov 5 22:37:12 EST 2006


I wrote:
> Benjamin Herrenschmidt wrote:
>> The machine check means basically that the chip didn't respond on the
>> PCI bus. The most probable cause is that something is wrong with the
>> platform code that switches the chip clock on/off or with the PCI D
>> state change.
>>
>> One thing you can check is wether that's always called properly,
>> especially when starting the chip.
[...]
> How about this patch:
> 
> --- linux.orig/drivers/ieee1394/ohci1394.c	2006-11-02 22:35:16.000000000 +0100
> +++ linux/drivers/ieee1394/ohci1394.c	2006-11-05 12:19:52.000000000 +0100
> @@ -3215,6 +3215,18 @@ static int __devinit ohci1394_pci_probe(
>  	struct ti_ohci *ohci;	/* shortcut to currently handled device */
>  	resource_size_t ohci_base;
> 
> +#ifdef CONFIG_PPC_PMAC
> +	/* Necessary if ohci1394 was loaded and unloaded before */
> +	if (machine_is(powermac)) {
> +		struct device_node *of_node = pci_device_to_OF_node(dev);
> +
> +		if (of_node)
> +			pmac_call_feature(PMAC_FTR_1394_CABLE_POWER, of_node,
> +					  0, 1);
> +			pmac_call_feature(PMAC_FTR_1394_ENABLE, of_node, 0, 1);
> +	}
> +#endif /* CONFIG_PPC_PMAC */
> +
>          if (pci_enable_device(dev))
>  		FAIL(-ENXIO, "Failed to enable OHCI hardware");
>          pci_set_master(dev);
[...]

Hm. There is the following comment in ohci1394_pci_remove():

	/* On UniNorth, power down the cable and turn off the chip
	 * clock when the module is removed to save power on
	 * laptops. Turning it back ON is done by the arch code when
	 * pci_enable_device() is called */

Is this true or wrong in current kernels?
-- 
Stefan Richter
-=====-=-==- =-== --=-=
http://arcgraph.de/sr/



More information about the Linuxppc-dev mailing list