Skip to content

Commit

Permalink
ptp: ocp: Improve PCIe delay estimation
Browse files Browse the repository at this point in the history
The PCIe bus can be pretty busy during boot and probe function can
see excessive delays. Let's find the minimal value out of several
tests and use it as estimated value.

Signed-off-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20240905140028.560454-1-vadim.fedorenko@linux.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Vadim Fedorenko authored and kuba-moo committed Sep 7, 2024
1 parent 9a95eed commit aa05fe6
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions drivers/ptp/ptp_ocp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1558,22 +1558,24 @@ ptp_ocp_watchdog(struct timer_list *t)
static void
ptp_ocp_estimate_pci_timing(struct ptp_ocp *bp)
{
ktime_t start, end;
ktime_t delay;
ktime_t start, end, delay = U64_MAX;
u32 ctrl;
int i;

ctrl = ioread32(&bp->reg->ctrl);
ctrl = OCP_CTRL_READ_TIME_REQ | OCP_CTRL_ENABLE;
for (i = 0; i < 3; i++) {
ctrl = ioread32(&bp->reg->ctrl);
ctrl = OCP_CTRL_READ_TIME_REQ | OCP_CTRL_ENABLE;

iowrite32(ctrl, &bp->reg->ctrl);
iowrite32(ctrl, &bp->reg->ctrl);

start = ktime_get_ns();
start = ktime_get_raw_ns();

ctrl = ioread32(&bp->reg->ctrl);
ctrl = ioread32(&bp->reg->ctrl);

end = ktime_get_ns();
end = ktime_get_raw_ns();

delay = end - start;
delay = min(delay, end - start);
}
bp->ts_window_adjust = (delay >> 5) * 3;
}

Expand Down

0 comments on commit aa05fe6

Please sign in to comment.