OpenCloudOS-Kernel/drivers/gpu/drm/i915
Daniele Ceraolo Spurio ac52da6af8 drm/i915/icl: new context descriptor support
Starting from Gen11 the context descriptor format has been updated in
the HW. The hw_id field has been considerably reduced in size and engine
class and instance fields have been added.

There is a slight name clashing issue because the field that we call
hw_id is actually called SW Context ID in the specs for Gen11+.

With the current size of the hw_id field we can have a maximum of 2k
contexts at any time, but we could use the sw_counter field (which is sw
defined) to increase that because the HW requirement is that
engine_id + sw id + sw_counter is a unique number.
GuC uses a similar method to support more contexts but does its tracking
at lrc level. To avoid doing an implementation that will need to be
reworked once GuC support lands, defer it for now and mark it as TODO.

v2: rebased, add documentation, fix GEN11_ENGINE_INSTANCE_SHIFT
v3: rebased, bring back lost code from i915_gem_context.c
v4: make TODO comment more generic
v5: be consistent with bit ordering, add extra checks (Chris)

Cc: Oscar Mateo <oscar.mateo@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Reviewed-by: Oscar Mateo <oscar.mateo@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180302161501.28594-3-mika.kuoppala@linux.intel.com
Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
2018-03-07 15:07:20 +02:00
..
gvt Merge drm-next into drm-intel-next-queued (this time for real) 2018-03-01 11:14:24 +02:00
selftests drm/i915: Update missing parts after the rename to i915_request 2018-02-23 16:34:32 +00:00
Kconfig drm/i915/fence: Avoid del_timer_sync() from inside a timer 2017-09-19 13:06:21 +01:00
Kconfig.debug drm/i915: Avoid context dereference inside execlists_submission_tasklet 2017-12-19 23:04:45 +00:00
Makefile drm/i915/uc: Make GuC/HuC fw fetch and loading functions/file structure symmetric 2018-03-02 09:04:45 +00:00
dvo.h
dvo_ch7xxx.c drm/i915/dvo: fix debug logging on unknown DID 2017-06-01 15:53:03 +03:00
dvo_ch7017.c drm/i915/lvds: Remove magic from PLL programming 2017-05-10 13:47:55 +03:00
dvo_ivch.c drm/i915/dvo: Remove incorrect kerneldoc markups 2018-02-14 12:04:31 +00:00
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
i915_cmd_parser.c drm/i915/cmdparser: Do not check past the cmd length. 2018-02-06 11:41:40 -08:00
i915_debugfs.c drm/i915: Wedged engine mask makes more sense in hex 2018-03-02 11:56:47 +00:00
i915_drv.c drm/i915/uc: Introduce intel_uc_suspend|resume 2018-03-02 23:11:12 +00:00
i915_drv.h drm/i915/icl: new context descriptor support 2018-03-07 15:07:20 +02:00
i915_gem.c drm/i915/uc: Introduce intel_uc_suspend|resume 2018-03-02 23:11:12 +00:00
i915_gem.h drm/i915/icl: Prepare for more rings 2018-03-01 14:13:47 +02:00
i915_gem_batch_pool.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_batch_pool.h
i915_gem_clflush.c drm: move read_domains and write_domain into i915 2018-02-16 14:12:48 +00:00
i915_gem_clflush.h drm/i915: Force CPU synchronisation even if userspace requests ASYNC 2017-07-27 22:07:24 +02:00
i915_gem_context.c drm/i915/icl: new context descriptor support 2018-03-07 15:07:20 +02:00
i915_gem_context.h drm/i915: Update missing parts after the rename to i915_request 2018-02-23 16:34:32 +00:00
i915_gem_dmabuf.c drm: move read_domains and write_domain into i915 2018-02-16 14:12:48 +00:00
i915_gem_evict.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_execbuffer.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_fence_reg.c drm/i915: Use INTEL_GEN everywhere 2018-02-09 22:29:02 +00:00
i915_gem_fence_reg.h
i915_gem_gtt.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_gtt.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_internal.c drm: move read_domains and write_domain into i915 2018-02-16 14:12:48 +00:00
i915_gem_object.c drm/i915: Split obj->cache_coherent to track r/w 2017-08-15 15:46:57 +01:00
i915_gem_object.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_render_state.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_render_state.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_shrinker.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_stolen.c drm: move read_domains and write_domain into i915 2018-02-16 14:12:48 +00:00
i915_gem_tiling.c drm/i915: Refactor common list iteration over GGTT vma 2017-12-07 23:26:55 +00:00
i915_gem_timeline.c drm/i915: properly init lockdep class 2017-12-14 20:10:01 +02:00
i915_gem_timeline.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_userptr.c drm: move read_domains and write_domain into i915 2018-02-16 14:12:48 +00:00
i915_gemfs.c drm/i915: Disable THP until we have a GPU read BW W/A 2017-11-30 10:11:49 +02:00
i915_gemfs.h drm/i915: introduce simple gemfs 2017-10-07 10:11:41 +01:00
i915_gpu_error.c drm/i915/error: capture uc_state after gen_state 2018-03-06 09:34:46 +00:00
i915_ioc32.c drm/i915: Clean up ancient doc comments for i915_ioc32.c 2018-02-15 16:22:21 +00:00
i915_irq.c drm/i915: Assert that the request is indeed complete when signaled from irq 2018-03-07 12:57:44 +00:00
i915_memcpy.c drm/i915: Do not enable movntdqa optimization in hypervisor guest 2017-12-22 11:12:15 +00:00
i915_mm.c
i915_oa_bdw.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_bdw.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_bxt.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_bxt.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_cflgt2.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_cflgt2.h drm/i915/perf: add support for Coffeelake GT2 2017-09-18 19:46:36 +01:00
i915_oa_cflgt3.c drm/i915/perf: Fix compiler warning for string truncation 2018-02-08 11:16:48 +00:00
i915_oa_cflgt3.h drm/i915/perf: add support for Coffeelake GT3 2017-11-13 15:59:03 +00:00
i915_oa_chv.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_chv.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_cnl.c drm/i915/perf: Fix compiler warning for string truncation 2018-02-08 11:16:49 +00:00
i915_oa_cnl.h drm/i915/perf: enable perf support on CNL 2017-11-13 15:59:24 +00:00
i915_oa_glk.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_glk.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_hsw.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_hsw.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_kblgt2.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_kblgt2.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_kblgt3.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_kblgt3.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_sklgt2.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_sklgt2.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_sklgt3.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_sklgt3.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_sklgt4.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_sklgt4.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_params.c drm/i915: Enable inject_load_failure only in DEBUG config 2018-02-02 14:19:05 +00:00
i915_params.h drm/i915/guc: Keep GuC log disabled by default 2018-01-19 20:35:32 +00:00
i915_pci.c drm/i915/icl: Add the ICL PCI IDs 2018-02-22 11:33:20 +02:00
i915_perf.c drm/i915/perf: fix perf stream opening lock 2018-03-01 14:32:37 +00:00
i915_pmu.c drm/i915/pmu: Fix building without CONFIG_PM 2018-02-07 17:07:45 +00:00
i915_pmu.h drm/i915/pmu: Fix sleep under atomic in RC6 readout 2018-02-07 13:37:34 +00:00
i915_pvinfo.h drm/i915: enable to read CSB and CSB write pointer from HWSP in GVT-g VM 2017-10-16 13:56:29 +03:00
i915_reg.h drm/i915/icl: new context descriptor support 2018-03-07 15:07:20 +02:00
i915_request.c drm/i915: Flush waiters on seqno wraparound 2018-03-06 17:25:56 +00:00
i915_request.h drm/i915/breadcrumbs: Reduce signaler rbtree to a sorted list 2018-03-06 12:12:45 +00:00
i915_selftest.h drm/i915/selftests: Reduce the volume of the timeout message 2017-11-10 11:31:58 +00:00
i915_suspend.c drm/i915: Move i915_gem_restore_fences to i915_gem_resume 2017-09-29 12:30:17 +01:00
i915_sw_fence.c drm/i915/fence: Separate timeout mechanism for awaiting on dma-fences 2018-01-15 10:29:18 +00:00
i915_sw_fence.h main drm pull for v4.13 2017-07-09 18:48:37 -07:00
i915_syncmap.c drm/i915: Fix kerneldoc parameter markup 2018-02-08 15:08:51 +00:00
i915_syncmap.h drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_sysfs.c drm/graphics pull request for v4.16-rc1 2018-02-01 17:48:47 -08:00
i915_trace.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_trace_points.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
i915_utils.h drm/i915: Move some utility functions to i915_util.h 2017-12-22 09:13:47 +00:00
i915_vgpu.c drm/i915: Enable guest i915 full ppgtt functionality 2017-08-15 10:12:48 +08:00
i915_vgpu.h drm/i915: enable to read CSB and CSB write pointer from HWSP in GVT-g VM 2017-10-16 13:56:29 +03:00
i915_vma.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_vma.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
intel_acpi.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
intel_atomic.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_atomic_plane.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_audio.c drm/i915/audio: fix check for av_enc_map overflow 2018-02-15 16:29:13 +02:00
intel_bios.c drm/i915: Fix DSI panels with v1 MIPI sequences without a DEASSERT sequence v3 2018-02-14 11:38:12 +01:00
intel_bios.h
intel_breadcrumbs.c drm/i915: Flush waiters on seqno wraparound 2018-03-06 17:25:56 +00:00
intel_cdclk.c drm/i915/icl: add the main CDCLK functions 2018-02-13 10:16:04 -02:00
intel_color.c drm/i915: Don't mangle the CTM on pre-HSW 2018-02-28 15:17:12 +02:00
intel_crt.c drm/i915: Reinitialize sink scrambling/TMDS clock ratio on HPD 2018-03-06 17:57:24 -05:00
intel_csr.c drm/i915/dmc: DMC 1.07 for Cannonlake 2018-01-04 16:29:12 -08:00
intel_ddi.c drm/i915: Track whether the DP link is trained or not 2018-03-06 17:59:08 -05:00
intel_device_info.c drm/i915/icl: Prepare for more rings 2018-03-01 14:13:47 +02:00
intel_device_info.h drm/i915/icl: Prepare for more rings 2018-03-01 14:13:47 +02:00
intel_display.c drm/i915: Unwind vma pinning for intel_pin_and_fence_fb_obj error path 2018-03-05 12:15:28 +00:00
intel_display.h drm/i915/psr: New power domain for AUX IO. 2018-02-27 12:05:43 -08:00
intel_dp.c drm/i915: Track whether the DP link is trained or not 2018-03-06 17:59:08 -05:00
intel_dp_aux_backlight.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_dp_link_training.c drm/i915: Track whether the DP link is trained or not 2018-03-06 17:59:08 -05:00
intel_dp_mst.c drm/i915: Nuke intel_digital_port->port 2017-11-09 20:06:14 +02:00
intel_dpio_phy.c drm: intel_dpio_phy: fix kernel-doc comments at nested struct 2018-02-19 12:19:04 +02:00
intel_dpll_mgr.c drm/i915/cnl: Simplify dco_fraction calculation. 2017-11-16 09:45:39 -08:00
intel_dpll_mgr.h drm/i915/cnl: Initialize PLLs 2017-06-12 09:42:18 -07:00
intel_drv.h drm/i915: Track whether the DP link is trained or not 2018-03-06 17:59:08 -05:00
intel_dsi.c drm/i915: Provide a device level .mode_valid() hook 2018-01-29 21:55:07 +02:00
intel_dsi.h
intel_dsi_dcs_backlight.c drm/i915: Initialize 'data' in intel_dsi_dcs_backlight.c 2017-08-16 18:02:00 +03:00
intel_dsi_pll.c
intel_dsi_vbt.c drm/i915/bxt: use NULL for GPIO connection ID 2017-08-21 11:52:29 +03:00
intel_dvo.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_engine_cs.c drm/i915/icl: new context descriptor support 2018-03-07 15:07:20 +02:00
intel_fbc.c drm/i915: Handle changing enable_fbc parameter at runtime better. 2018-03-07 10:15:44 +01:00
intel_fbdev.c drm/i915: Only pin the fence for primary planes (and gen2/3) 2018-02-22 17:41:37 +02:00
intel_fifo_underrun.c drm/i915: Don't rmw PIPESTAT enable bits 2017-09-25 16:54:09 +03:00
intel_frontbuffer.c drm/i915/frontbuffer: Mark frontbuffer flush and invalidate with might_sleep() 2018-02-27 12:06:07 -08:00
intel_frontbuffer.h
intel_guc.c drm/i915/uc: Introduce intel_uc_suspend|resume 2018-03-02 23:11:12 +00:00
intel_guc.h drm/i915/uc: Introduce intel_uc_suspend|resume 2018-03-02 23:11:12 +00:00
intel_guc_ads.c drm/i915/guc : Decoupling ADS and logs from submission 2018-01-03 14:02:10 +00:00
intel_guc_ads.h drm/i915/guc : Decoupling ADS and logs from submission 2018-01-03 14:02:10 +00:00
intel_guc_ct.c drm/i915/guc: Assert ctch->vma is allocated 2017-11-06 13:57:37 +00:00
intel_guc_ct.h drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
intel_guc_fw.c drm/i915/uc: Make GuC/HuC fw fetch and loading functions/file structure symmetric 2018-03-02 09:04:45 +00:00
intel_guc_fw.h drm/i915/guc: Move firmware selection to init_early 2017-12-06 14:41:47 +00:00
intel_guc_fwif.h drm/i915/guc: Add support for reset engine using GuC commands 2017-11-02 08:42:11 +00:00
intel_guc_log.c drm/i915/guc: Don't try to create log runtime if there is no log 2018-02-01 12:36:50 +00:00
intel_guc_log.h drm/i915/guc: Update name and prototype of i915_guc_log_control 2018-01-24 19:44:06 +00:00
intel_guc_reg.h drm/i915/guc: Use consistent name for scratch register count 2017-11-24 20:47:39 +00:00
intel_guc_submission.c drm/i915/guc: Fill preempt context once at init time 2018-02-27 10:30:12 +00:00
intel_guc_submission.h drm/i915/guc: Move GuC workqueue allocations outside of the mutex 2017-12-14 08:06:54 +00:00
intel_gvt.c drm/i915/guc: Introduce USES_GUC_xxx helper macros 2017-12-06 14:41:49 +00:00
intel_gvt.h drm/i915/gvt: Add gvt options sanitize function 2017-05-30 15:59:47 +03:00
intel_hangcheck.c drm/i915: Add some newlines to intel_engine_dump() headers 2018-02-05 10:59:59 +00:00
intel_hdcp.c drm/i915: Reauthenticate HDCP on failure 2018-02-05 12:59:23 -05:00
intel_hdmi.c drm/i915: Reinitialize sink scrambling/TMDS clock ratio on HPD 2018-03-06 17:57:24 -05:00
intel_hotplug.c drm/i915: Reinitialize sink scrambling/TMDS clock ratio on HPD 2018-03-06 17:57:24 -05:00
intel_huc.c drm/i915/huc: Mark firmware as failed on auth failure 2018-03-02 23:11:13 +00:00
intel_huc.h drm/i915/uc: Make GuC/HuC fw fetch and loading functions/file structure symmetric 2018-03-02 09:04:45 +00:00
intel_huc_fw.c drm/i915/uc: Make GuC/HuC fw fetch and loading functions/file structure symmetric 2018-03-02 09:04:45 +00:00
intel_huc_fw.h drm/i915/uc: Make GuC/HuC fw fetch and loading functions/file structure symmetric 2018-03-02 09:04:45 +00:00
intel_i2c.c Add HDCP support to i915 drm driver. 2018-02-16 09:36:04 +10:00
intel_lpe_audio.c drm/i915: Avoid leaking lpe audio platdev.data 2018-02-08 17:28:53 +00:00
intel_lrc.c drm/i915/icl: new context descriptor support 2018-03-07 15:07:20 +02:00
intel_lrc.h drm/i915/execlists: Inhibit context save/restore for the fake preempt context 2018-01-24 09:40:15 +00:00
intel_lrc_reg.h drm/i915: Move LRC register offsets to a header file 2018-01-24 09:22:55 +00:00
intel_lspcon.c drm/i915: For HPD connected port use hpd_pin instead of port. 2018-01-30 10:24:19 -08:00
intel_lvds.c drm/i915/lvds: Fixup commentary 2018-02-14 12:04:33 +00:00
intel_mocs.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
intel_mocs.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
intel_modes.c drm/i915: remove redundant ELD connector type update 2018-01-19 11:58:48 +02:00
intel_opregion.c drm/i915: Move opregion definitions to dedicated intel_opregion.h 2017-12-22 09:19:48 +00:00
intel_opregion.h drm/i915: Move opregion definitions to dedicated intel_opregion.h 2017-12-22 09:19:48 +00:00
intel_overlay.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
intel_panel.c drm/i915/panel: Split range scaling calculation for readiblity 2018-02-14 12:02:44 +00:00
intel_pipe_crc.c drm/i915: Make ips_enabled a property depending on whether IPS is enabled, v3. 2017-11-30 16:49:42 +01:00
intel_pm.c drm/i915/cnp: Document WaSouthDisplayDisablePWMCGEGating 2018-03-06 14:41:27 -08:00
intel_psr.c drm/i915/psr: Update PSR2 resolution check for Cannonlake 2018-03-06 14:35:45 -08:00
intel_renderstate.h
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c drm/i915/gen9: Send all components in VF state 2017-08-14 12:15:49 +03:00
intel_ringbuffer.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
intel_ringbuffer.h drm/i915: Flush waiters on seqno wraparound 2018-03-06 17:25:56 +00:00
intel_runtime_pm.c drm/i915/psr: New power domain for AUX IO. 2018-02-27 12:05:43 -08:00
intel_sdvo.c drm/i915: Convert intel_hpd_irq_event() into an encoder hotplug hook 2018-03-06 17:56:29 -05:00
intel_sdvo_regs.h
intel_sideband.c drm/i915: Move rps.hw_lock to dev_priv and s/hw_lock/pcu_lock 2017-10-11 08:56:56 +01:00
intel_sprite.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_tv.c drm/i915/tv: Cleanup up obsolete comments 2018-02-14 12:02:39 +00:00
intel_uc.c drm/i915/uc: Introduce intel_uc_suspend|resume 2018-03-02 23:11:12 +00:00
intel_uc.h drm/i915/uc: Introduce intel_uc_suspend|resume 2018-03-02 23:11:12 +00:00
intel_uc_fw.c drm/i915: Fixup kerneldoc for intel_uc_fw_upload() 2018-02-14 13:28:41 +00:00
intel_uc_fw.h drm/i915/guc: Move firmware selection to init_early 2017-12-06 14:41:47 +00:00
intel_uncore.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_uncore.h Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_vbt_defs.h drm/i915/bios: add DP max link rate to VBT child device struct 2018-02-07 12:32:14 -08:00