From nobody Mon Sep 28 10:46:33 2026 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 02E093655C0 for ; Sun, 23 Aug 2026 08:32:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787473943; cv=none; b=pX2yHHlYUO6Romz8HM1MJSshk9FeVzoNYNL65aGp6PuJhRDEbZsiXi7AYQ93cNtWs2QLQMEhvzlLf/A1LkJlXJvljEMOU/WfZS3HgEx6gPy2ttB/9eVpNMY1l1yujou+5BV4T7xoMczaOoCfcf8B9SZGSk5MLYS6hYES6cge4GY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787473943; c=relaxed/simple; bh=vUvkRrronDpTt1PgxyxNtY1bv1mpDbjyNJ2RFEMPB+E=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=XxtjlJ2zNJLBmTXL7NvJKqK2Q9jn7tsOuOdPSu5AcHa0ahlYrqFeAKFNsAuFDaGAe7fET0zptOXOC8bdBnGA+rM9f4+eG/+honVb1OBq485vakN1KMQjkwpJuF/ZzdgJqjU1dcBLMNR5tmnNPoD4NP/qW/5bl1C9RHQFe3e+gGg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=URsc0hwW; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="URsc0hwW" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2ccf2360620so20722235ad.3 for ; Sun, 23 Aug 2026 01:32:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787473941; x=1788078741; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=gQjZACrYdNbBdH+jtlaQgBXai3RCK9BnyKOFi8yya1Q=; b=URsc0hwWefUO1VLMUBPrPp1RRbcwj5ioOtp2q/VH6P3HRSfi3DISELL1kyFSNHrFIs PHvZHoilsiyiTN3tv8QpvqoIpbbD/PGDPdb5ZsxcDvMWhKtPj6xFUVCrXik8HAN6hRN5 egR2AbClIY7d04f8iymwGQH3CezFhy1OimEeTrdR48EsqSUxilmgBAHkI746QEZwGO8s /nozXtBrJwNGFSFMZ5ZW3D+QUlicZpg9Vqw2zO7kk7kdfKoZzWVMCQs4GqJ3OpvEfKv7 qRhSx4WeI5CdKAUJ7i5THyDDvdLPCduzoKT2nPmCWptMbFiQFyvTFOLZAdZPqq2uWZ7U +jlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787473941; x=1788078741; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=gQjZACrYdNbBdH+jtlaQgBXai3RCK9BnyKOFi8yya1Q=; b=hGpEjC/MYHOR6mucjZZh+rsmR0KfYBVI9IULWZR+x/wawl+VpOpVrKVmkQDHCdGcBc 0r8x0BLfqp9TvJwJSrXOCkkVsurq0AVio+0PEHjkOJXh0e8l4i7eN18YY5Xm0zJGnoD+ 9FqOCvBbdHDLe8pTMIImHt6N/znbW6D6L36ikgNIi7Q+llDSF9uaoT6fmdAhK29TIhjc 6bQ6iuxuQrZ8e0ScSGl7Rvs+OngXeXQc5dW/4fjbqLVbPnvxB02fxhmb7tTm5a69VDKL gkTrAawl5vMXVcYGvRNwTHaLNyeqZE672+VbVBh/SGIPtfOLlp7jpO0lf5m2bnH3WUSO AThQ== X-Forwarded-Encrypted: i=1; AHgh+Rrt4s0kOI1agh+t0GdR5BXMJJLHOogPMJ2Xx+Rb2T5KxqtkmQx6Z+Lmu3CShF4xT3gtX/km3dEwI0aAhOI=@vger.kernel.org X-Gm-Message-State: AFuF++m8DRfhIXw7qMj5+6aXJM5V491PbuWX0qUj5+69eMiQiSay4J4A fdGsRWFUsKAbZjPbGYoxyGOKjbpte5EFA8YY2ma9kC7LZJgKMJ3hyUGN X-Gm-Gg: AR+sD12QtFrYuFO23QGlu7s6XdfmVVUEGd8NR1RRS76NTTw3LTBGlNXyp3n7oDLTuDB t9dG8rwESXEHAkhkzI+X4FTfDA5e87FAPtuGTm8j4IGvWjqaEI/F2Ma1e+yXPqz5g6gemtKoD1T 2+slgNSGWDIy6rtIZcIY3c+kuTn8SzxSbt0Cz1MSRYIdjC1fjhVoNHpzsqWzZZnmFkPNXkLykfH nzgwr/CBzCy3IoFHU0bunJbbc77aOh4NaNw2MjWK9+1WqMpQPziBt/4SGNjl5p7EO4+bRLID2gf dBgjzUk8/UT/7xojbyFMVTm/pG14JuYsQnApArdqEU4BhZErjEx00BTlcmRadPjJazCG37vb76j DrnTYuSpfMA8FaL3ZGks5LOhT3yPQ8yY9tuMRNqKTVFPWwCNSodyZfNuZn7sv/ds79x4HR8syg4 Hmdmt+QL2LIA7/d8UWq2DSMPq8X0/tx1+q36yeQnaUjmxTSioHAqHK6S/FlwvatvBjI8RJTHldv WSFzwk= X-Received: by 2002:a17:90b:2785:b0:38f:23d6:b4ad with SMTP id 98e67ed59e1d1-395c3594cf5mr34224184a91.8.1787473941256; Sun, 23 Aug 2026 01:32:21 -0700 (PDT) Received: from 138.101.136.61.ha.cnc ([61.136.101.138]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395e4a15829sm5378703a91.14.2026.08.23.01.32.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Aug 2026 01:32:20 -0700 (PDT) From: fausten X-Google-Original-From: fausten To: dri-devel@lists.freedesktop.org, zack.rusin@broadcom.com Cc: bcm-kernel-feedback-list@broadcom.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, linux-kernel@vger.kernel.org, fausten Subject: [PATCH] drm/vmwgfx: Treat zero SVGA_REG_CURSOR_MAX_DIMENSION as unset Date: Sun, 23 Aug 2026 16:32:11 +0800 Message-Id: <20260823083211.2654733-1-yunfeng.li.nb@email.com> X-Mailer: git-send-email 2.33.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The cursor plane code validates cursor dimensions against SVGA_REG_CURSOR_MAX_DIMENSION before every cursor update, and rejects the update with -EINVAL if the cursor is larger than the reported maximum. However, some SVGA implementations do not implement this register and return 0 for it. In that case every cursor update is rejected, and the log is spammed with: [drm] Cursor dimensions (64, 64) exceed device max 0 The visible symptom is that the hardware cursor never appears at all on VMware Fusion guests (SVGA version 2), making the mouse pointer invisible even though the input devices work fine. Treat a reported maximum of 0 as "not implemented" and skip the dimension check in that case, restoring the pre-existing behaviour of accepting the cursor. Tested on VMware Fusion with an SVGA version 2 device where the cursor previously did not show up. Fixes: d5ed8749168a ("drm/vmwgfx: enforce cursor size limits for MOB cursor= s") Signed-off-by: fausten --- drivers/gpu/drm/vmwgfx/vmwgfx_cursor_plane.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_cursor_plane.c b/drivers/gpu/drm= /vmwgfx/vmwgfx_cursor_plane.c index d1e7df500..fbdd23ecb 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_cursor_plane.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_cursor_plane.c @@ -237,8 +237,10 @@ static int vmw_cursor_mob_get(struct vmw_cursor_plane = *vcp, mob_max_size =3D vmw_read(dev_priv, SVGA_REG_MOB_MAX_SIZE); cursor_max_dim =3D vmw_read(dev_priv, SVGA_REG_CURSOR_MAX_DIMENSION); =20 - if (size > mob_max_size || vps->base.crtc_w > cursor_max_dim || - vps->base.crtc_h > cursor_max_dim) + /* Some SVGA implementations (e.g. VMware Fusion) report 0 here. */ + if (cursor_max_dim && + (size > mob_max_size || vps->base.crtc_w > cursor_max_dim || + vps->base.crtc_h > cursor_max_dim)) return -EINVAL; =20 if (vps->cursor.mob) { @@ -748,8 +750,10 @@ int vmw_cursor_plane_atomic_check(struct drm_plane *pl= ane, u32 cursor_max_dim =3D vmw_read(vmw, SVGA_REG_CURSOR_MAX_DIMENSION); =20 - if (new_state->crtc_w > cursor_max_dim || - new_state->crtc_h > cursor_max_dim) { + /* Some SVGA implementations (e.g. VMware Fusion) report 0 here. */ + if (cursor_max_dim && + (new_state->crtc_w > cursor_max_dim || + new_state->crtc_h > cursor_max_dim)) { drm_warn(&vmw->drm, "Cursor dimensions (%d, %d) exceed device max %u\n", new_state->crtc_w, new_state->crtc_h, --=20 2.33.0