firewire: fw-ohci: add option for remote debugging
This way firewire-ohci can be used for remote debugging like ohci1394. Version with amendment from Fri, 11 Apr 2008 00:08:08 +0200. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Acked-by: Bernhard Kaindl <bk@suse.de>
This commit is contained in:
parent
17cff9ff87
commit
080de8c2c5
|
@ -41,15 +41,19 @@ to a working state and enables physical DMA by default for all remote nodes.
|
||||||
This can be turned off by ohci1394's module parameter phys_dma=0.
|
This can be turned off by ohci1394's module parameter phys_dma=0.
|
||||||
|
|
||||||
The alternative firewire-ohci driver in drivers/firewire uses filtered physical
|
The alternative firewire-ohci driver in drivers/firewire uses filtered physical
|
||||||
DMA, hence is not yet suitable for remote debugging.
|
DMA by default, which is more secure but not suitable for remote debugging.
|
||||||
|
Compile the driver with CONFIG_FIREWIRE_OHCI_REMOTE_DMA (Kernel hacking menu:
|
||||||
|
Remote debugging over FireWire with firewire-ohci) to get unfiltered physical
|
||||||
|
DMA.
|
||||||
|
|
||||||
Because ohci1394 depends on the PCI enumeration to be completed, an
|
Because ohci1394 and firewire-ohci depend on the PCI enumeration to be
|
||||||
initialization routine which runs pretty early (long before console_init()
|
completed, an initialization routine which runs pretty early has been
|
||||||
which makes the printk buffer appear on the console can be called) was written.
|
implemented for x86. This routine runs long before console_init() can be
|
||||||
|
called, i.e. before the printk buffer appears on the console.
|
||||||
|
|
||||||
To activate it, enable CONFIG_PROVIDE_OHCI1394_DMA_INIT (Kernel hacking menu:
|
To activate it, enable CONFIG_PROVIDE_OHCI1394_DMA_INIT (Kernel hacking menu:
|
||||||
Provide code for enabling DMA over FireWire early on boot) and pass the
|
Remote debugging over FireWire early on boot) and pass the parameter
|
||||||
parameter "ohci1394_dma=early" to the recompiled kernel on boot.
|
"ohci1394_dma=early" to the recompiled kernel on boot.
|
||||||
|
|
||||||
Tools
|
Tools
|
||||||
-----
|
-----
|
||||||
|
|
|
@ -1097,6 +1097,11 @@ static void bus_reset_tasklet(unsigned long data)
|
||||||
reg_write(ohci, OHCI1394_ConfigROMhdr, ohci->next_header);
|
reg_write(ohci, OHCI1394_ConfigROMhdr, ohci->next_header);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_FIREWIRE_OHCI_REMOTE_DMA
|
||||||
|
reg_write(ohci, OHCI1394_PhyReqFilterHiSet, ~0);
|
||||||
|
reg_write(ohci, OHCI1394_PhyReqFilterLoSet, ~0);
|
||||||
|
#endif
|
||||||
|
|
||||||
spin_unlock_irqrestore(&ohci->lock, flags);
|
spin_unlock_irqrestore(&ohci->lock, flags);
|
||||||
|
|
||||||
if (free_rom)
|
if (free_rom)
|
||||||
|
@ -1435,6 +1440,9 @@ static int ohci_cancel_packet(struct fw_card *card, struct fw_packet *packet)
|
||||||
static int
|
static int
|
||||||
ohci_enable_phys_dma(struct fw_card *card, int node_id, int generation)
|
ohci_enable_phys_dma(struct fw_card *card, int node_id, int generation)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_FIREWIRE_OHCI_REMOTE_DMA
|
||||||
|
return 0;
|
||||||
|
#else
|
||||||
struct fw_ohci *ohci = fw_ohci(card);
|
struct fw_ohci *ohci = fw_ohci(card);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int n, retval = 0;
|
int n, retval = 0;
|
||||||
|
@ -1466,6 +1474,7 @@ ohci_enable_phys_dma(struct fw_card *card, int node_id, int generation)
|
||||||
out:
|
out:
|
||||||
spin_unlock_irqrestore(&ohci->lock, flags);
|
spin_unlock_irqrestore(&ohci->lock, flags);
|
||||||
return retval;
|
return retval;
|
||||||
|
#endif /* CONFIG_FIREWIRE_OHCI_REMOTE_DMA */
|
||||||
}
|
}
|
||||||
|
|
||||||
static u64
|
static u64
|
||||||
|
|
|
@ -593,7 +593,7 @@ config LATENCYTOP
|
||||||
to find out which userspace is blocking on what kernel operations.
|
to find out which userspace is blocking on what kernel operations.
|
||||||
|
|
||||||
config PROVIDE_OHCI1394_DMA_INIT
|
config PROVIDE_OHCI1394_DMA_INIT
|
||||||
bool "Provide code for enabling DMA over FireWire early on boot"
|
bool "Remote debugging over FireWire early on boot"
|
||||||
depends on PCI && X86
|
depends on PCI && X86
|
||||||
help
|
help
|
||||||
If you want to debug problems which hang or crash the kernel early
|
If you want to debug problems which hang or crash the kernel early
|
||||||
|
@ -621,4 +621,15 @@ config PROVIDE_OHCI1394_DMA_INIT
|
||||||
|
|
||||||
See Documentation/debugging-via-ohci1394.txt for more information.
|
See Documentation/debugging-via-ohci1394.txt for more information.
|
||||||
|
|
||||||
|
config FIREWIRE_OHCI_REMOTE_DMA
|
||||||
|
bool "Remote debugging over FireWire with firewire-ohci"
|
||||||
|
depends on FIREWIRE_OHCI
|
||||||
|
help
|
||||||
|
This option lets you use the FireWire bus for remote debugging
|
||||||
|
with help of the firewire-ohci driver. It enables unfiltered
|
||||||
|
remote DMA in firewire-ohci.
|
||||||
|
See Documentation/debugging-via-ohci1394.txt for more information.
|
||||||
|
|
||||||
|
If unsure, say N.
|
||||||
|
|
||||||
source "samples/Kconfig"
|
source "samples/Kconfig"
|
||||||
|
|
Reference in New Issue