From: "Yong, Jonathan" <jonathan.yong@intel.com>
To: mj@ucw.cz
Cc: linux-pci@vger.kernel.org, bhelgaas@google.com, jonathan.yong@intel.com
Subject: [PATCH] lspci: Decode Precision Time Measurement capabiltity
Date: Tue, 10 May 2016 03:15:55 +0000 [thread overview]
Message-ID: <1462850155-13790-2-git-send-email-jonathan.yong@intel.com> (raw)
In-Reply-To: <1462850155-13790-1-git-send-email-jonathan.yong@intel.com>
Section 7.32 Precision Time Management (or Measurement) from the
PCI Express Base 3.1 specification is an optional Extended Capability
for discovering and controlling the distribution of a PTM Hierarchy.
Signed-off-by: Yong, Jonathan <jonathan.yong@intel.com>
---
| 1 +
ls-ecaps.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 63 insertions(+)
--git a/lib/header.h b/lib/header.h
index b8f7dc1..8463641 100644
--- a/lib/header.h
+++ b/lib/header.h
@@ -230,6 +230,7 @@
#define PCI_EXT_CAP_ID_LTR 0x18 /* Latency Tolerance Reporting */
#define PCI_EXT_CAP_ID_PASID 0x1b /* Process Address Space ID */
#define PCI_EXT_CAP_ID_L1PM 0x1e /* L1 PM Substates */
+#define PCI_EXT_CAP_ID_PTM 0x1f /* Precision Time Measurement */
/*** Definitions of capabilities ***/
diff --git a/ls-ecaps.c b/ls-ecaps.c
index 8298435..0273240 100644
--- a/ls-ecaps.c
+++ b/ls-ecaps.c
@@ -548,6 +548,65 @@ cap_l1pm(struct device *d, int where)
}
}
+static void
+cap_ptm(struct device *d, int where)
+{
+ u32 buff;
+ u16 clock;
+
+ printf("Precision Time Measurement\n");
+
+ if (verbose < 2)
+ return;
+
+ if (!config_fetch(d, where + 4, 8))
+ {
+ printf("\t\t<unreadable>\n");
+ return;
+ }
+
+ buff = get_conf_long(d, where + 4);
+ printf("\t\tPTMCap: ");
+ printf("Requester:%c Responder:%c Root:%c\n",
+ FLAG(buff, 0x1),
+ FLAG(buff, 0x2),
+ FLAG(buff, 0x4));
+
+ clock = BITS(buff, 8, 8);
+ printf("\t\tPTMClockGranularity: ");
+ switch (clock)
+ {
+ case 0x00:
+ printf("Unimplemented\n");
+ break;
+ case 0xff:
+ printf("Greater than 254ns\n");
+ break;
+ default:
+ printf("%huns\n", clock);
+ }
+
+ buff = get_conf_long(d, where + 8);
+ printf("\t\tPTMControl: ");
+ printf("Enabled:%c RootSelected:%c\n",
+ FLAG(buff, 0x1),
+ FLAG(buff, 0x2));
+
+ clock = BITS(buff, 8, 8);
+ printf("\t\tPTMEffectiveGranularity: ");
+ switch (clock)
+ {
+ case 0x00:
+ printf("Unknown\n");
+ break;
+ case 0xff:
+ printf("Greater than 254ns\n");
+ break;
+ default:
+ printf("%huns\n", clock);
+ }
+}
+
void
show_ext_caps(struct device *d)
{
@@ -635,6 +694,9 @@ show_ext_caps(struct device *d)
case PCI_EXT_CAP_ID_L1PM:
cap_l1pm(d, where);
break;
+ case PCI_EXT_CAP_ID_PTM:
+ cap_ptm(d, where);
+ break;
default:
printf("#%02x\n", id);
break;
--
2.7.3
next prev parent reply other threads:[~2016-05-10 3:15 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-10 3:15 [PATCH] lspci: Decode PTM Registers Yong, Jonathan
2016-05-10 3:15 ` Yong, Jonathan [this message]
2016-05-14 9:24 ` [PATCH] lspci: Decode Precision Time Measurement capabiltity Martin Mares
2016-05-17 5:53 ` Yong, Jonathan
2016-05-17 5:53 ` Martin Mares
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1462850155-13790-2-git-send-email-jonathan.yong@intel.com \
--to=jonathan.yong@intel.com \
--cc=bhelgaas@google.com \
--cc=linux-pci@vger.kernel.org \
--cc=mj@ucw.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.