Skip to content
Tags give the ability to mark specific points in history as being important
  • drm-intel-fixes-2020-07-08
    One display's fbc patch fixing fence_y_offset calculation
    from Ville and 4 patches from Chris on GEM: 1 fixing a debugfs
    panic and others fixing vma construction and pin under vm->mutex.
    
  • drm-intel-next-2020-07-02
    drm/i915 features for v5.9
    
    Highlights:
    - Rocket Lake (RKL) platform enabling (Matt Roper, Lucas, José, Aditya)
    
    Gem/GT:
    - Numerous selftest fixes and improvements (Chris)
    - TGL, RKL, EHL workaround updates (Matts Atwood and Roper, Clint, Swathi Dhanavanthri, Chris)
    - Retry faulthandlers on ENOSPC to avoid oomkiller (Chris)
    - Numerous refactorings and cleanups (Chris)
    - Several GT fixes around init/suspend/resume/shutdown (Chris)
    - Whitelist CTX_TIMESTAMP register on non-RCS (Chris)
    - Track if an engine requires forcewake w/a (Chris)
    - Locking improvements (Chris)
    - Timeslicing improvements (Chris)
    - Add a safety submission flush in the heartbeat (Chris)
    - Flush gen3 relocs harder (Chris)
    - Discard a misplaced GGTT vma (Chris)
    - Reduce relocation paths to async GPU relocations only (Chris)
    - It's all build up with no pay off (Chris' own words...)
    
    Display:
    - A plethora of DP MST fixes (Imre)
    - Implement proper dbuf global state (Ville)
    - Consider dbuf bandwidth when calculating CDCLK (Stan)
    - FBC fixes and refactoring (Ville)
    - PSR fixes and improvements (José, Gwan-gyeong)
    - Cursor size fixes (Ville)
    - Overlay color and gamma fixes (Ville)
    - Fix and improve FSB and HRAWCLK read out (Ville)
    - Pre allocate and late cleanup of DSB cmd buffer (Animesh)
    - Stop using mode->private_flags (Ville)
    - Add plane color encoding support for YCBCR_BT2020 (Kishore Kadiyala)
    - Update TGL Type-C DP and DKL HBR and HBR+ vswing tables (José)
    - Fix DSI connector init error path (Vivek)
    - A plethora of DP vswing/preemph fixes and refactoring (Ville)
    - Fix TGL DKL vswing sequence selection (Vandita)
    - Fix ICL hotplug interrupt disabling after storm detection (Imre)
    - Retry HDCP link integrity check on failure (Oliver Barta)
    - Fix TBT DPLL fractional divider (Imre)
    - Fix ICL+ HBR3 source rate (Matt Atwood)
    - Fix gen2 spurious underruns (Ville)
    - Fix potential NULL dereference, some spelling fixes (Colin Ian King)
    - Fix NULL dereference on encoder state probe (Chris)
    
    Other:
    - Backmerge to get mmap locking API (Jani)
    - Distinguish Comet Lake from Coffee Lake (Chris)
    - Various compiler warning fixes (Arnd Bergmann, Nathan Chancellor)
    - WARN* conversions to drm_WARN* (Pankaj)
    - Switch to device specific parameters with debugfs access (Jani)
    - Fix agp/intel error path leak (Qiushi Wu)
    - Forcewake power optimization (Chris)
    - Irq handler optimization (Chris)
  • drm-intel-fixes-2020-07-01
    drm/i915 fixes for v5.8-rc4:
    - GVT fixes
    - Include asm sources for render cache clear batches
  • drm-intel-fixes-2020-06-18
    - Fix for timeslicing and virtual engines/unpremptable requests
      (+ 1 dependency patch)
    - Fixes into TypeC register programming and interrupt storm detecting
    - Disable DIP on MST ports with the transcoder clock still on
    - Avoid missing GT workarounds at reset for HSW and older gens
    - Fix for unwinding multiple requests missing force restore
    - Fix encoder type check for DDI vswing sequence
    - Build warning fixes
  • drm-intel-next-fixes-2020-06-10
    - Avoid use after free in cmdparser
    - Avoid NULL dereference when probing all display encoders
    - Fixup to module parameter type
  • drm-intel-next-fixes-2020-06-04
    - Includes gvt-next-fixes-2020-05-28
    - Use after free fix for display global state.
    - Whitelisting context-local timestamp on Gen9
      and two scheduler fixes with deps (Cc: stable)
    - Removal of write flag from sysfs files where
      ineffective
  • drm-intel-fixes-2020-05-28
    couple compilation fixes for gcc-9+, and couple fixes for timeslicing,
    one to respect I915_REQUEST_NOPREEMPT flag and another to incorporate
    virtual engine into timeslicing.
    
  • drm-intel-next-fixes-2020-05-28
    One empty list iteration bug (Cc: stable), One use after free fix
    and three workload scheduling fixups.
  • drm-intel-next-fixes-2020-05-20
    Fix for TypeC power domain toggling on resets (Cc: stable).
    Two compile time warning fixes.
  • drm-intel-next-2020-05-15
    UAPI Changes:
    
    - drm/i915: Show per-engine default property values in sysfs
    
        By providing the default values configured into the kernel via sysfs, it
        is much more convenient for userspace to restore those sane defaults, or
        at least know what are considered good baseline. This is useful, for
        example, to cleanup after any failed userspace prior to commencing new
        jobs.
    
    Cross-subsystem Changes:
    
    - video/hdmi: Add Unpack only function for DRM infoframe
    - Includes pull request gvt-next-2020-05-12
    
    Driver Changes:
    
    - Restore Cherryview back to full-ppgtt (Chris, Mika)
    - Document locking guidelines for i915 (Chris, Daniel, Joonas)
    - Fix GitLab #1746: Handle idling during i915_gem_evict_something busy loops (Chris)
    - Display WA #1105: Require linear fb stride to be multiple of 512 bytes on
      gen9/glk (Ville)
    - Add Wa_14010685332 for ICP/ICL (Matt R)
    - Restrict w/a 1607087056 for EHL/JSL (Swathi)
    - Fix interrupt handling for DP AUX transactions on Tigerlake (Imre)
    - Revert "drm/i915/tgl: Include ro parts of l3 to invalidate" (Mika)
    - Fix HDC pipeline flush hardware bit on Gen12 (Mika)
    - Flush L3 when flushing render on Gen12 (Mika)
    - Invalidate aux table entries forcibly between BB on Gen12 (Mika)
    - Add aux table invalidate for all engines on Gen12 (Mika)
    - Force pte cacheline to main memory Gen8+ (Mika)
    - Add and enable TGL+ SAGV support (Stanislav)
    - Implement vm_ops->access on i915 mmaps for GDB (Chris, Kristian)
    - Replace zero-length array with flexible-array (Gustavo)
    - Improve batch buffer pool effectiveness to mitigate soft-rc6 hit (Chris)
    - Remove wait priority boosting (Chris)
    - Keep driver module referenced when PMU is active (Chris)
    - Sanitize RPS interrupts upon resume (Chris)
    - Extend pcode read timeout to 20 ms (Chris)
    - Wait for ACT sent before enabling MST pipe (Ville)
    - Extend support to async relocations to SNB (Chris)
    - Remove CNL pre-prod workarounds (Ville)
    - Don't enable WaIncreaseLatencyIPCEnabled when IPC is disabled (Sultan)
    - Record the active CCID from before reset (Chris)
    - Mark concurrent submissions with a weak-dependency (Chris)
    - Peel dma-fence-chains for await to allow engine-to-engine sync (Lionel)
    - Prevent using semaphores to chain up to external fences (Chris)
    - Fix GLK watermark calculations (Ville)
    - Emit await(batch) before MI_BB_START (Chris)
    - Reset execlists registers before HWSP (Chris)
    - Drop no-semaphore boosting in favor of fast timeslicing (Chris)
    - Fix enabled infoframe states of lspcon (Gwan-gyeong)
    - Program DP SDPs on pipe updates (Gwan-gyeong)
    - Stop sending DP SDPs on ddi disable (Gwan-gyeong)
    - Store CS timestamp frequency in Hz (Ville)
    
    - Remove unused HAS_FWTABLE macro (Pascal)
    - Use batchbuffer chaining for relocations to save ring space (Chris)
    - Try different engines for relocs if MI ops not supported (Chris, Tvrtko)
    - Lazily acquire the device wakeref for freeing objects (Chris)
    - Streamline display code arithmetics around rounding etc. (Ville)
    - Use bw state for per crtc SAGV evaluation (Stanislav)
    - Track active_pipes in bw_state (Stanislav)
    - Nuke mode.vrefresh usage (Ville)
    - Warn if the FBC is still writing to stolen on removal (Chris)
    - Added new PCode commands prepping for QGV rescricting (Stansilav)
    - Stop holding onto the pinned_default_state (Chris)
    - Propagate error from completed fences (Chris)
    - Ignore submit-fences on the same timeline (Chris)
    - Pull waiting on an external dma-fence into its routine (Chris)
    - Replace the hardcoded I915_FENCE_TIMEOUT with Kconfig (Chris)
    - Mark up the racy read of execlists->context_tag (Chris)
    - Tidy up the return handling for completed dma-fences (Chris)
    - Introduce skl_plane_wm_level accessor (Stanislav)
    - Extract SKL SAGV checking (Stanislav)
    - Make active_pipes check skl specific (Stanislav)
    - Suspend tasklets before resume sanitization (Chris)
    - Remove redundant exec_fence (Chris)
    - Mark the addition of the initial-breadcrumb in the request (Chris)
    - Transfer old virtual breadcrumbs to irq_worker (Chris)
    - Read the DP SDPs from the video DIP (Gwan-gyeong)
    - Program DP SDPs with computed configs (Gwan-gyeong)
    - Add state readout for DP VSC and DP HDR Metadata Infoframe SDP
      (Gwan-gyeong)
    - Add compute routine for DP PSR VSC SDP (Gwan-gyeong)
    - Use new DP VSC SDP compute routine on PSR (Gwan-gyeong)
    - Restrict qgv points which don't have enough bandwidth. (Stanislav)
    - Nuke pointless div by 64bit (Ville)
    
    - Static checker code fixes (Nathan, Mika, Chris)
    - Add logging function for DP VSC SDP (Gwan-gyeong)
    - Include HDMI DRM infoframe, DP HDR metadata and DP VSC SDP in the
      crtc state dump (Gwan-gyeong)
    - Make timeslicing explicit engine property (Chris, Tvrtko)
    - Selftest and debugging improvements (Chris)
    - Align variable names with BSpec (Ville)
    - Tidy up gen8+ breadcrumb emission code (Chris)
    - Turn intel_digital_port_connected() in a vfunc (Ville)
    - Use stashed away hpd isr bits in intel_digital_port_connected() (Ville)
    - Extract i915_cs_timestamp_{ns_to_ticks,tick_to_ns}() (Ville)
  • drm-intel-fixes-2020-05-13-1
    - Handle idling during i915_gem_evict_something busy loops (Chris)
    - Mark current submissions with a weak-dependency (Chris)
    - Propagate errror from completed fences (Chris)
    - Fixes on execlist to avoid GPU hang situation (Chris)
    - Fixes couple deadlocks (Chris)
    - Timeslice preemption fixes (Chris)
    - Fix Display Port interrupt handling on Tiger Lake (Imre)
    - Reduce debug noise around Frame Buffer Compression
    +(Peter)
    - Fix logic around IPC W/a for Coffee Lake and Kaby Lake
    +(Sultan)
    - Avoid dereferencing a dead context (Chris)
    
  • drm-intel-fixes-2020-05-07
    - Fixes on execlist to avoid GPU hang situation (Chris)
    - Fixes couple deadlocks (Chris)
    - Timeslice preemption fixes (Chris)
    - Fix Display Port interrupt handling on Tiger Lake (Imre)
    - Reduce debug noise around Frame Buffer Compression (Peter)
    - Fix logic around IPC W/a for Coffee Lake and Kaby Lake (Sultan)
    - Avoid dereferencing a dead context (Chris)
    
  • drm-intel-fixes-2020-04-30
    - Fix selftest refcnt leak (Xiyu)
    - Fix gem vma lock (Chris)
    - Fix gt's i915_request.timeline acquire by checking if cacheline is valid (Chris)
    - Fix IRQ postinistall fault masks (Matt)
    
  • drm-intel-next-2020-04-30
    Driver Changes:
    
    - Fix GitLab #1698: Performance regression with Linux 5.7-rc1 on
      Iris Plus 655 and 4K screen (Chris)
    - Add Wa_14011059788 for Tigerlake (Matt A)
    - Add per ctx batchbuffer wa for timestamp for Gen12 (Mika)
    - Use indirect ctx bb to load cmd buffer control value
      from context image to avoid corruption (Mika)
    - Enable DP Display Audio WA (Uma, Jani)
    - Update forcewake firmware ranges for Icelake (Radhakrishna)
    - Add missing deinitialization cases of load failure for display (Jose)
    - Implement TC cold sequences for Icelake and Tigerlake (Jose)
    - Unbreak enable_dpcd_backlight modparam (Lyude)
    - Move the late flush_submission in retire to the end (Chris)
    - Demote "Reducing compressed framebufer size" message to info (Peter)
    - Push MST link retraining to the hotplug work (Ville)
    - Hold obj->vma.lock over for_each_ggtt_vma() (Chris)
    - Fix timeout handling during TypeC AUX power well enabling for ICL (Imre)
    - Fix skl+ non-scaled pfit modes (Ville)
    - Prefer soft-rc6 over RPS DOWN_TIMEOUT (Chris)
    - Sanitize GT first before poisoning HWSP (Chris)
    - Fix up clock RPS frequency readout (Chris)
    - Avoid reusing the same logical CCID (Chris)
    - Avoid dereferencing a dead context (Chris)
    - Always enable busy-stats for execlists (Chris)
    - Apply the aggressive downclocking to parking (Chris)
    - Restore aggressive post-boost downclocking (Chris)
    
    - Scrub execlists state on resume (Chris)
    - Add debugfs attributes for LPSP (Ansuman)
    - Improvements to kernel selftests (Chris, Mika)
    - Add tiled blits selftest (Zbigniew)
    - Fix error handling in __live_lrc_indirect_ctx_bb() (Dan)
    - Add pre/post plane updates for SAGV (Stanislav)
    - Add ICL PG3 PW ID for EHL (Anshuman)
    - Fix Sphinx build duplicate label warning (Jani)
    - Error log non-zero audio power refcount after unbind (Jani)
    - Remove object_is_locked assertion from unpin_from_display_plane (Chris)
    - Use single set of AUX powerwell ops for gen11+ (Matt R)
    - Prefer drm_WARN_ON over WARN_ON (Pankaj)
    - Poison residual state [HWSP] across resume (Chris, Tvrtko)
    - Convert request-before-CS assertion to debug (Chris)
    - Carefully order virtual_submission_tasklet (Chris)
    - Check carefully for an idle engine in wait-for-idle (Chris)
    - Only close vma we open (Chris)
    - Trace RPS events (Chris)
    - Use the RPM config register to determine clk frequencies (Chris)
    - Drop rq->ring->vma peeking from error capture (Chris)
    - Check preempt-timeout target before submit_ports (Chris)
    - Check HWSP cacheline is valid before acquiring (Chris)
    - Use proper fault mask in interrupt postinstall too (Matt R)
    - Keep a no-frills swappable copy of the default context state (Chris)
    
    - Add atomic helpers for bandwidth (Stanislav)
    - Refactor setting dma info to a common helper from device info (Michael)
    - Refactor DDI transcoder code for clairty (Ville)
    - Extend PG3 power well ID to ICL (Anshuman)
    - Refactor PFIT code for readability and future extensibility (Ville)
    - Clarify code split between intel_ddi.c and intel_dp.c (Ville)
    - Move out code to return the digital_port of the aux ch (Jose)
    - Move rps.enabled/active  and use of RPS interrupts to flags (Chris)
    - Remove superfluous inlines and dead code (Jani)
    - Re-disable -Wframe-address from top-level Makefile (Nick)
    - Static checker and spelling fixes (Colin, Nathan)
    - Split long lines (Ville)
  • drm-intel-fixes-2020-04-23
    - Tigerlake Workaround - disabling media recompression (Matt)
    - Fix RPS interrupts for right GPU frequency (Chris)
    - HDCP fix prime check (Oliver)
    - Tigerlake Thunderbolt power well fix (Matt)
    - Tigerlake DP link training fixes (Jose)
    - Documentation sphinx build fix (Jani)
    - Fix enable_dpcd_backlight modparam (Lyude)
    
  • drm-intel-next-2020-04-17
    UAPI Changes:
    
    - drm/i915/perf: introduce global sseu pinning
      Allow userspace to request at perf/OA open full SSEU configuration
      on the system to be able to benchmark 3D workloads, at the cost of not
      being able to run media workloads. (Lionel)
    
      Userspace changes: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4021
    
    - drm/i915/perf: add new open param to configure polling of OA buffer
      Let application choose how often the OA buffer should be checked on
      the CPU side for data availability for choosig between CPU overhead
      and realtime nature of data.
    
      Userspace changes: https://patchwork.freedesktop.org/series/74655/
    
      (i915 perf recorder is a tool to capture i915 perf data for viewing
      in GPUVis.)
    
    - drm/i915/perf: remove generated code
      Removal of the machine generated perf/OA test configurations from i915.
      Used by Mesa v17.1-18.0, and shortly replaced by userspace supplied OA
      configurations. Removal of configs causes affected Mesa versions to
      fall back to earlier kernel behaviour (potentially missing metrics).
      (Lionel)
    
    Cross-subsystem Changes:
    
    - Backmerge of drm-next
    
    - Includes tag 'topic/phy-compliance-2020-04-08' from
      git://anongit.freedesktop.org/drm/drm-misc
    
    Driver Changes:
    
    - Fix for GitLab issue #27: Support 5k tiled dual DP display on SKL (Ville)
    - Fix https://github.com/thesofproject/linux/issues/1719: Broken audio after
      S3 resume on JSL platforms. (Kai)
    - Add new Tigerlake PCI IDs (Swathi D.)
    - Add missing Tigerlake W/As (Matt R.)
    - Extended Wa_2006604312 to EHL (Matt A)
    - Add DPCD link_rate quirk for Apple 15" MBP 2017 (v3) (Mario)
    - Make Wa_14010229206 apply to all Tigerlake steppings (Swathi d)
    - Extend hotplug detect retry on TypeC connectors to 5 seconds (Imre)
    - Yield the timeslice if caught waiting on a user semaphore (Chris)
    - Limit the residual W/A batch to Haswell due to instability on IVB/BYT (Chris)
    - TBT AUX should use TC power well ops on Tigerlake (Matt R)
    - Update PMINTRMSK holding fw to make it effective for RPS (Francisco, Chris)
    - Add YUV444 packed format support for skl+ (Stanislav)
    - Invalidate OA TLB when closing perf stream to avoid corruption (Umesh)
    - HDCP: fix Ri prime check done during link check (Oliver)
    - Rearm heartbeat on sysfs interval change (Chris)
    - Fix crtc nv12 etc. plane bitmasks for DPMS off (Ville)
    - Treat idling as a RPS downclock event (Chris)
    - Leave rps->cur_freq on unpark (Chris)
    - Ignore short pulse when EDP panel powered off (Anshuman)
    - Keep the engine awake until the next jiffie, to avoid ping-pong on
      moderate load (Chris)
    - Select the deepest available parking mode for rc6 on IVB (Chris)
    - Optimizations to direct submission execlist path (Chris)
    - Avoid NULL pointer dereference at intel_read_infoframe() (Chris)
    - Fix mode private_flags comparison at atomic_check (Uma, Ville)
    - Use forced codec wake on all gen9+ platforms (Kai)
    - Schedule oa_config after modifying the contexts (Chris, Lionel)
    - Explicitly reset both reg and context runtime on GPU reset (Chris)
    - Don't enable DDI IO power on a TypeC port in TBT mode (Imre)
    - Fixes to TGL, ICL and EHL vswing tables (Jose)
    - Fill all the unused space in the GGTT (Chris, imre)
    - Ignore readonly failures when updating relocs (Chris)
    - Attempt to find free space earlier for non-pinned VMAs (Chris)
    - Only wait for GPU activity before unbinding a GGTT fence (Chris)
    - Avoid data loss on small userspace perf OA polling (Ashutosh)
    - Watch out for unevictable nodes during eviction (Matt A)
    - Reinforce the barrier after GTT updates for Ironlake (Chris)
    
    - Convert various parts of driver to use drm_device based logging (Wambui, Jani)
    - Avoid dereferencing already closed context for engine (Chris)
    - Enable non-contiguous pipe fusing (Anshuman)
    - Add HW readout of Gamma LUT on ICL (Swati S.)
    - Use explicit flag to mark unreachable intel_context (Chris)
    - Cancel a hung context if already closed (Chris)
    - Add DP VSC/HDR SDP data structures and write routines (Gwan-gyeong)
    - Report context-is-closed prior to pinning at execbuf (Chris)
    - Mark timeline->cacheline as destroyed after rcu grace period (Chris)
    - Avoid live-lock with i915_vma_parked() (Chris)
    - Avoid gem_context->mutex for simple vma lookup (Chris)
    - Rely on direct submission to the queue (Chris)
    - Configure DSI transcoder to operate in TE GATE command mode (Vandita)
    - Add DI vblank calculation for command mode (Vandita)
    - Disable periodic command mode if programmed by GOP (Vandita)
    - Use private flags to indicate TE in cmd mode (Vandita)
    - Make fences a nice-to-have for FBC on GEN9+ (Jose)
    - Fix work queuing issue with mixed virtual engine/physical engine
      submissions (Chris)
    - Drop final few uses of drm_i915_private.engine (Chris)
    - Return early after MISSING_CASE for write_dp_sdp (Chris)
    - Include port sync state in the state dump (Ville)
    - ELSP workaround switching back to a completed context (Chris)
    - Include priority info in trace_ports (Chris)
    - Allow for different modes of interruptible i915_active_wait (Chris)
    - Split eb_vma into its own allocation (Chris)
    - Don't read perf head/tail pointers outside critical section (Lionel)
    - Pause CS flow before execlists reset (Chris)
    - Make fence revocation unequivocal (Chris)
    - Drop cached obj->bind_count (Chris)
    - Peek at the next submission for error interrupts (Chris)
    - Utilize rcu iteration of context engines (Chris)
    - Keep a per-engine request pool for power management ops (Chris)
    - Refactor port sync code into normal modeset flow (Ville)
    - Check current i915_vma.pin_count status first on unbind (Chris)
    - Free request pool from virtual engines (Chris)
    - Flush all the reloc_gpu batch (Chris)
    - Make exclusive awaits on i915_active optional and allow async waits (Chris)
    - Wait until the context is finally retired before releasing engines (Chris)
    
    - Prefer '%ps' for printing function symbol names (Chris)
    - Allow setting generic data pointer on intel GT debugfs (Andi)
    - Constify DP link computation code more (Ville)
    - Simplify MST master transcoder computation (Ville)
    - Move TRANS_DDI_FUNC_CTL2 programming where it belongs (Ville)
    - Move icl_get_trans_port_sync_config() into the DDI code (Ville)
    - Add definitions for VRR registers and bits (Aditya)
    - Refactor hardware fence code (Chris)
    - Start passing latency as parameter to WM calculation (Stanislav)
    - Kernel selftest and debug tracing improvements (Matt A, Chris, Mika)
    - Fixes to CI found corner cases and lockdep splats (Chris)
    - Overall fixes and refactoring to GEM code (Chris)
    - Overall fixes and refactoring to display code (Ville)
    - GuC/HuC code improvements (Daniele, Michal Wa)
    - Static code checker fixes (Nathan, Ville, Colin, Chris)
    - Fix spelling mistake (Chen)
  • drm-intel-fixes-2020-04-15
    - Fix guest page access by using the brand new VFIO dma r/w interface (Yan)
    - Fix for i915 perf read buffers (Ashutosh)
    
  • drm-intel-next-fixes-2020-04-08
    - Flush all the reloc_gpu batch (Chris)
    - Ignore readonly failures when updating relocs (Chris)
    - Fill all the unused space in the GGTT (Chris)
    - Return the right vswing table (Jose)
    - Don't enable DDI IO power on a TypeC port in TBT mode for ICL+ (Imre)
    
  • drm-intel-next-fixes-2020-04-02
    Only gvt fixes on this round:
    
    - Fix non-privilege access warning (Tina)
    - Fix display port type (Tina)
    - BDW cmd parser missed SWTESS_BASE_ADDRESS (Yan)
    - Bypass length check of LRI (Yan)
    - Fix one klocwork warning (Tina)
    
  • drm-intel-next-fixes-2020-03-27
    Fixes for instability on Baytrail and Haswell;
    Ice Lake RPS; Sandy Bridge RC6; and few others around
    GT hangchec/reset; livelock; and a null dereference.