Received: by 2002:ab2:2441:0:b0:1f3:1f8c:d0c6 with SMTP id k1csp221083lqe; Thu, 4 Apr 2024 05:03:22 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXv3d02F29ScS5ynP1pjqnt5e53ZDUGz4GHK8gHtfEGgVp3ccgJ3diPbIis/TTC+X8NDHFPc5rR3tEz8XDrBfvHDM/heRV2W9hHlqsclQ== X-Google-Smtp-Source: AGHT+IFNLAeTphLbo7NbRr1E59CA5F7Q6oRFzlQiFrcoRPY/kjsQmantIxz4SnW/leL5nvuuQcX9 X-Received: by 2002:a05:6512:36d1:b0:513:ccda:bc86 with SMTP id e17-20020a05651236d100b00513ccdabc86mr1500744lfs.4.1712232202384; Thu, 04 Apr 2024 05:03:22 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712232202; cv=pass; d=google.com; s=arc-20160816; b=pHWauJN6V2efAeWeWXwnq1nNeq9iXh69gIWwpEr2CTuM/14Yz2nXYvwv8FDhbCyh6a xDTFlbtD+zewaQCkGVT9YkiKOapweOCRPnX2jSJNZAwPGJbLYnJBri7XrSkppuC/oLLr 8/Nu0dkFIBCmAooafZcWjJ221CuUs520C2jFtu6cEPqyRNLOa9L7sKoAN7ud16zOQOhD EDyiI+7V5ZoW4GKw4//j3kc40NKMq0dAQ/UY75vAWKSE3tyjgLQeosUc81w08+2Q5OQ8 u6L9JRSmRRGe6D/LbrlCE0Vk9F6OKWIOxtmV6H2wz9YscAgyOTbn9DtyHSJrzZYe8Vua 9oaA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=0BBQelJ9WYsqv+/ZavPKMbaS74/Kns8UbE3QsYDT2IQ=; fh=wy0qDCMjhsPjtwn9luBIVIgRJhyBtVbo2qbRNtRpW0k=; b=pqHlXvrNKUF8smmjbDbcpjOMeL3N6EKwM5+FDIFT8FFyK1Wi2b3j0T60PaLtwq56LK 7XIQtjj/wZHURE9L8fD9/QxUjG8zQXs92J5rHIZpQtBqttGCVw9HEwXdm8AcBOdLGDv/ ZILkMLtREqljU8YZLGRguIM1g+jsB/3nEkF1pvx0h35zYLcJQndSjpq7dhJsufwDmcN1 /vhS3L4jjhdrA8Z1dGjc4qpgch/V8zcJXzAP38j8Bkns95tYoP7XXj7WlpOr1jIDGa6z HUJbjIHJUbSbA2MiLKC/yNiZ0bWjakmIPOAu43GCwSYx0EY2dCUvybwk8Awsu4z7iIKh cEPg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=rmRMWmew; arc=pass (i=1 spf=pass spfdomain=linux.ibm.com dkim=pass dkdomain=ibm.com dmarc=pass fromdomain=linux.ibm.com); spf=pass (google.com: domain of linux-kernel+bounces-131361-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-131361-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id u18-20020a170906b11200b00a4732257eb2si7617523ejy.338.2024.04.04.05.03.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 05:03:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-131361-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=rmRMWmew; arc=pass (i=1 spf=pass spfdomain=linux.ibm.com dkim=pass dkdomain=ibm.com dmarc=pass fromdomain=linux.ibm.com); spf=pass (google.com: domain of linux-kernel+bounces-131361-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-131361-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=ibm.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 6C76D1F26667 for ; Thu, 4 Apr 2024 12:03:12 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 16BA585279; Thu, 4 Apr 2024 12:03:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="rmRMWmew" Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6920183A10 for ; Thu, 4 Apr 2024 12:03:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712232184; cv=none; b=rG+QZQbzNDDOAf5aQ13ULyFvj5uohvzrtmhLGeCzOc5htiFknRN/t3yyEv/vGGuz5q6x0OfcGurR/VhZcbA+IhaOdhLIfMrKAMczOIVG2N0J7BZkq7DjvimBhwY7Yd5dxh82xafypTbL//1b4x/JMwmPx6kvLXCS6oixUlV40UU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712232184; c=relaxed/simple; bh=4+kvmAOt8o5Z0Sw88Ub69NokR1skVWGhRkZqzMc0zuo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UttIECigWZaoxyYnggG65vgZFBEh069t1CYRP1f4XFXDsjlObqYC08pHbmLFhXy3Kb5aONObkr/X0sRnnvGLsfb7eoNkhKCUEW8iXcikV+kcZXO4a6IkK+tj5ljbtJEA/rmO+8FRsVBH99SZF9vK0o0KJ5AWZD+rLpFuiIecrjs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=rmRMWmew; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Received: from pps.filterd (m0353726.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 434BRlSP020370; Thu, 4 Apr 2024 12:02:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=0BBQelJ9WYsqv+/ZavPKMbaS74/Kns8UbE3QsYDT2IQ=; b=rmRMWmewEdQxZ2vvEKWUtRibDiq7wHpw9dRKh2zqJM/YQyGkBU2Ac2jNaQrYIWNyheNQ rZdxmG9UnTbrtq5HfByJ6KebothSqsNw3owghiQ9x6sDQvCz8/6z2VcnPefXQ44LKLxw AhFqmt369KIMETlFo1PvZQS8K/aNQOsFbtZ+simekCGTsnynSZzsj+e6xX7HG8jYHfkr 8P6M00A1MezlGoW6mKSko7FQUZDJnDBYcGuumX7eCrmqiA14EoUAszEKt6g76OX5pnCM h6JIYFfHJed6U7CQbq3J6vMmMvwF26VOZUX3YjyXOPjrkw83SusW2Psj/2zfL6b83e28 3g== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3x9ubc02gt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 04 Apr 2024 12:02:52 +0000 Received: from m0353726.ppops.net (m0353726.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 434C2qP4015765; Thu, 4 Apr 2024 12:02:52 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3x9ubc02gp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 04 Apr 2024 12:02:52 +0000 Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 434A7nDU008686; Thu, 4 Apr 2024 12:02:50 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3x9epw3y3a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 04 Apr 2024 12:02:50 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 434C2jB746858618 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 4 Apr 2024 12:02:47 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2B5D820043; Thu, 4 Apr 2024 12:02:45 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F38462004F; Thu, 4 Apr 2024 12:02:44 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 4 Apr 2024 12:02:44 +0000 (GMT) From: Niklas Schnelle To: Dave Airlie , Gerd Hoffmann , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Daniel Vetter Cc: Arnd Bergmann , Heiko Carstens , linux-kernel@vger.kernel.org, Niklas Schnelle Subject: [PATCH 1/1] drm: handle HAS_IOPORT dependencies Date: Thu, 4 Apr 2024 14:02:44 +0200 Message-Id: <20240404120244.3659560-2-schnelle@linux.ibm.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240404120244.3659560-1-schnelle@linux.ibm.com> References: <20240404120244.3659560-1-schnelle@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: 0fcoHLSwuDEvWhvGowlRN9l6diRjySDH X-Proofpoint-ORIG-GUID: LgiK4XXbiIyytbzo4hHJA1MK601KN7BV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-04_08,2024-04-04_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 spamscore=0 priorityscore=1501 impostorscore=0 phishscore=0 clxscore=1015 mlxscore=0 suspectscore=0 adultscore=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2404040082 In a future patch HAS_IOPORT=n will disable inb()/outb() and friends at compile time. We thus need to add HAS_IOPORT as dependency for those drivers using them. In the bochs driver there is optional MMIO support detected at runtime, warn if this isn't taken when HAS_IOPORT is not defined. There is also a direct and hard coded use in cirrus.c which according to the comment is only necessary during resume. Let's just skip this as for example s390 which doesn't have I/O port support also doesen't support suspend/resume. Co-developed-by: Arnd Bergmann Signed-off-by: Arnd Bergmann Signed-off-by: Niklas Schnelle --- Note: This patch does not depend any not-yet-mainline HAS_IOPORT changes and may be merged via subsystem specific trees at your earliest convenience. v5->v6: Added HAS_IOPORT for xe driver which copied some I/O port use from existing intel drivers. drivers/gpu/drm/qxl/Kconfig | 1 + drivers/gpu/drm/tiny/bochs.c | 17 +++++++++++++++++ drivers/gpu/drm/tiny/cirrus.c | 2 ++ drivers/gpu/drm/xe/Kconfig | 2 +- 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/qxl/Kconfig b/drivers/gpu/drm/qxl/Kconfig index ca3f51c2a8fe..d0e0d440c8d9 100644 --- a/drivers/gpu/drm/qxl/Kconfig +++ b/drivers/gpu/drm/qxl/Kconfig @@ -2,6 +2,7 @@ config DRM_QXL tristate "QXL virtual GPU" depends on DRM && PCI && MMU + depends on HAS_IOPORT select DRM_KMS_HELPER select DRM_TTM select DRM_TTM_HELPER diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c index c23c9f0cf49c..9ac3b455ddce 100644 --- a/drivers/gpu/drm/tiny/bochs.c +++ b/drivers/gpu/drm/tiny/bochs.c @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -105,7 +106,9 @@ static void bochs_vga_writeb(struct bochs_device *bochs, u16 ioport, u8 val) writeb(val, bochs->mmio + offset); } else { +#ifdef CONFIG_HAS_IOPORT outb(val, ioport); +#endif } } @@ -119,7 +122,11 @@ static u8 bochs_vga_readb(struct bochs_device *bochs, u16 ioport) return readb(bochs->mmio + offset); } else { +#ifdef CONFIG_HAS_IOPORT return inb(ioport); +#else + return 0xff; +#endif } } @@ -132,8 +139,12 @@ static u16 bochs_dispi_read(struct bochs_device *bochs, u16 reg) ret = readw(bochs->mmio + offset); } else { +#ifdef CONFIG_HAS_IOPORT outw(reg, VBE_DISPI_IOPORT_INDEX); ret = inw(VBE_DISPI_IOPORT_DATA); +#else + ret = 0xffff; +#endif } return ret; } @@ -145,8 +156,10 @@ static void bochs_dispi_write(struct bochs_device *bochs, u16 reg, u16 val) writew(val, bochs->mmio + offset); } else { +#ifdef CONFIG_HAS_IOPORT outw(reg, VBE_DISPI_IOPORT_INDEX); outw(val, VBE_DISPI_IOPORT_DATA); +#endif } } @@ -229,6 +242,10 @@ static int bochs_hw_init(struct drm_device *dev) return -ENOMEM; } } else { + if (!IS_ENABLED(CONFIG_HAS_IOPORT)) { + DRM_ERROR("I/O ports are not supported\n"); + return -EIO; + } ioaddr = VBE_DISPI_IOPORT_INDEX; iosize = 2; if (!request_region(ioaddr, iosize, "bochs-drm")) { diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c index 4e3a152f897a..716e1480c30f 100644 --- a/drivers/gpu/drm/tiny/cirrus.c +++ b/drivers/gpu/drm/tiny/cirrus.c @@ -509,8 +509,10 @@ static void cirrus_crtc_helper_atomic_enable(struct drm_crtc *crtc, cirrus_mode_set(cirrus, &crtc_state->mode); +#ifdef CONFIG_HAS_IOPORT /* Unblank (needed on S3 resume, vgabios doesn't do it then) */ outb(VGA_AR_ENABLE_DISPLAY, VGA_ATT_W); +#endif drm_dev_exit(idx); } diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig index 1a556d087e63..519906b8e3de 100644 --- a/drivers/gpu/drm/xe/Kconfig +++ b/drivers/gpu/drm/xe/Kconfig @@ -48,7 +48,7 @@ config DRM_XE config DRM_XE_DISPLAY bool "Enable display support" - depends on DRM_XE && DRM_XE=m + depends on DRM_XE && DRM_XE=m && HAS_IOPORT select FB_IOMEM_HELPERS select I2C select I2C_ALGOBIT -- 2.40.1