From 0601fd25a5e01d0da638efef13c58b64f198bafb Mon Sep 17 00:00:00 2001 From: Thomas Fleury Date: Tue, 23 Jan 2018 14:20:43 -0800 Subject: gpu: nvgpu: gv100: nvlink endpoint driver The following changes implements the initial (as per bringup) nvlink driver. (1) SW initialization of nvlink core driver structures (2) Nvlink interrupt handling (3) Device initialization (IOCTRL, pll and clocks, device level intr) (4) Falcon support for minion (5) Minion load and bootstrapping (6) Link initialization and DL PROD settings (7) Device Interface init (and switching HSHUB to nvlink) (8) HS set/get mode for both link and sublink (9) Topology discovery and VBIOS settings. (10) Ensures we get physical contiguous memory when Nvlink is enabled This driver includes a hack for the current single dev/single link limitation. JIRA: EVLR-2331 JIRA: EVLR-2330 JIRA: EVLR-2329 JIRA: EVLR-2328 Change-Id: Idca9a819179376cc655784482b24b575a52fa9e5 Signed-off-by: Thomas Fleury Reviewed-on: https://git-master.nvidia.com/r/1656790 Reviewed-by: mobile promotions Tested-by: mobile promotions --- .../gpu/nvgpu/include/nvgpu/hw/gv100/hw_minion_gv100.h | 8 ++++++++ drivers/gpu/nvgpu/include/nvgpu/nvlink.h | 15 ++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) (limited to 'drivers/gpu/nvgpu/include') diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gv100/hw_minion_gv100.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gv100/hw_minion_gv100.h index c59a6e6b..a57ea97a 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/hw/gv100/hw_minion_gv100.h +++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gv100/hw_minion_gv100.h @@ -892,6 +892,14 @@ static inline u32 minion_nvlink_link_intr_code_dlreq_f(void) { return 0x2U; } +static inline u32 minion_nvlink_link_intr_code_pmdisabled_v(void) +{ + return 0x00000003U; +} +static inline u32 minion_nvlink_link_intr_code_pmdisabled_f(void) +{ + return 0x3U; +} static inline u32 minion_nvlink_link_intr_subcode_f(u32 v) { return (v & 0xffU) << 8U; diff --git a/drivers/gpu/nvgpu/include/nvgpu/nvlink.h b/drivers/gpu/nvgpu/include/nvgpu/nvlink.h index 48851ff1..18e0aab6 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/nvlink.h +++ b/drivers/gpu/nvgpu/include/nvgpu/nvlink.h @@ -182,11 +182,10 @@ struct nvgpu_nvlink_dev { u8 train_at_boot; u32 ac_coupling_mask; - u32 init_disabled_links; u32 connected_links; u32 initialized_links; u32 enabled_links; - u32 topology_connected_links; + u32 init_pll_done; enum nvgpu_nvlink_speed speed; @@ -195,12 +194,18 @@ struct nvgpu_nvlink_dev { u32 hshub_config1; u32 hshub_config2; u32 hshub_config6; + + /* tlc cached errors */ + u32 tlc_rx_err_status_0[NVLINK_MAX_LINKS_SW]; + u32 tlc_rx_err_status_1[NVLINK_MAX_LINKS_SW]; + u32 tlc_tx_err_status_0[NVLINK_MAX_LINKS_SW]; + /* priv struct */ void *priv; }; -u32 nvgpu_nvlink_enumerate(struct gk20a *g); -u32 nvgpu_nvlink_train(struct gk20a *g, u32 link_id, bool from_off); -u32 nvgpu_nvlink_probe(struct gk20a *g); +int nvgpu_nvlink_enumerate(struct gk20a *g); +int nvgpu_nvlink_train(struct gk20a *g, u32 link_id, bool from_off); +int nvgpu_nvlink_probe(struct gk20a *g); #endif -- cgit v1.2.2