Skip to content

Commit

Permalink
x86/platform/intel/iosf: Add debugfs config option for IOSF
Browse files Browse the repository at this point in the history
Makes the IOSF sideband available through debugfs. Allows
developers to experiment with using the sideband to provide
debug and analytical tools for units on the SoC.

Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Link: http://lkml.kernel.org/r/1411017231-20807-4-git-send-email-david.e.box@linux.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
  • Loading branch information
David E. Box authored and Ingo Molnar committed Sep 19, 2014
1 parent ced3ce7 commit ed2226b
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 4 deletions.
13 changes: 13 additions & 0 deletions arch/x86/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,19 @@ config IOSF_MBI

You should say Y if you are running a kernel on one of these SoC's.

config IOSF_MBI_DEBUG
bool "Enable IOSF sideband access through debugfs"
depends on IOSF_MBI && DEBUG_FS
---help---
Select this option to expose the IOSF sideband access registers (MCR,
MDR, MCRX) through debugfs to write and read register information from
different units on the SoC. This is most useful for obtaining device
state information for debug and analysis. As this is a general access
mechanism, users of this option would have specific knowledge of the
device they want to access.

If you don't require the option or are in doubt, say N.

config X86_RDC321X
bool "RDC R-321x SoC"
depends on X86_32
Expand Down
23 changes: 19 additions & 4 deletions arch/x86/kernel/iosf_mbi.c
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ bool iosf_mbi_available(void)
}
EXPORT_SYMBOL(iosf_mbi_available);

/********************** debugfs begin ****************************/
#ifdef CONFIG_IOSF_MBI_DEBUG
static u32 dbg_mdr;
static u32 dbg_mcr;
static u32 dbg_mcrx;
Expand Down Expand Up @@ -229,6 +229,7 @@ static int mcr_set(void *data, u64 val)
DEFINE_SIMPLE_ATTRIBUTE(iosf_mcr_fops, mcr_get, mcr_set , "%llx\n");

static struct dentry *iosf_dbg;

static void iosf_sideband_debug_init(void)
{
struct dentry *d;
Expand Down Expand Up @@ -257,7 +258,20 @@ static void iosf_sideband_debug_init(void)
cleanup:
debugfs_remove_recursive(d);
}
/********************** debugfs end ****************************/

static void iosf_debugfs_init(void)
{
iosf_sideband_debug_init();
}

static void iosf_debugfs_remove(void)
{
debugfs_remove_recursive(iosf_dbg);
}
#else
static inline void iosf_debugfs_init(void) { }
static inline void iosf_debugfs_remove(void) { }
#endif /* CONFIG_IOSF_MBI_DEBUG */

static int iosf_mbi_probe(struct pci_dev *pdev,
const struct pci_device_id *unused)
Expand Down Expand Up @@ -290,13 +304,14 @@ static struct pci_driver iosf_mbi_pci_driver = {

static int __init iosf_mbi_init(void)
{
iosf_sideband_debug_init();
iosf_debugfs_init();

return pci_register_driver(&iosf_mbi_pci_driver);
}

static void __exit iosf_mbi_exit(void)
{
debugfs_remove_recursive(iosf_dbg);
iosf_debugfs_remove();

pci_unregister_driver(&iosf_mbi_pci_driver);
if (mbi_pdev) {
Expand Down

0 comments on commit ed2226b

Please sign in to comment.