virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH v5 09/44] drm: handle HAS_IOPORT dependencies
       [not found] ` <20230522105049.1467313-10-schnelle@linux.ibm.com>
@ 2023-05-22 12:38   ` Thomas Zimmermann
  2023-05-22 13:06     ` Arnd Bergmann
  2023-05-22 13:14     ` Gerd Hoffmann
  0 siblings, 2 replies; 3+ messages in thread
From: Thomas Zimmermann @ 2023-05-22 12:38 UTC (permalink / raw)
  To: Niklas Schnelle, Arnd Bergmann, Dave Airlie, Gerd Hoffmann,
	David Airlie, Daniel Vetter
  Cc: linux-arch, Arnd Bergmann, Geert Uytterhoeven, Albert Ou,
	Rafael J. Wysocki, Greg Kroah-Hartman, Uwe Kleine-König,
	linux-pci, linux-kernel, dri-devel, virtualization, Alan Stern,
	Paul Walmsley, Bjorn Helgaas, spice-devel, Mauro Carvalho Chehab,
	Palmer Dabbelt


[-- Attachment #1.1.1: Type: text/plain, Size: 4511 bytes --]

Hi

Am 22.05.23 um 12:50 schrieb Niklas Schnelle:
> In a future patch HAS_IOPORT=n will result in inb()/outb() and friends
> not being declared. 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.

I think we should consider making cirrus depend on HAS_IOPORT. The 
driver is only for qemu's cirrus emulation, which IIRC can only be 
enabled for i586. And it has all been deprecated long ago.

> 
> Co-developed-by: Arnd Bergmann <arnd@kernel.org>
> Signed-off-by: Arnd Bergmann <arnd@kernel.org>
> Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
> ---
>   drivers/gpu/drm/qxl/Kconfig   |  1 +
>   drivers/gpu/drm/tiny/bochs.c  | 17 +++++++++++++++++
>   drivers/gpu/drm/tiny/cirrus.c |  2 ++
>   3 files changed, 20 insertions(+)
> 
> 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 d254679a136e..3710339407cc 100644
> --- a/drivers/gpu/drm/tiny/bochs.c
> +++ b/drivers/gpu/drm/tiny/bochs.c
> @@ -2,6 +2,7 @@
>   
>   #include <linux/module.h>
>   #include <linux/pci.h>
> +#include <asm/bug.h>

Why not <linux/bug.h> ?

>   
>   #include <drm/drm_aperture.h>
>   #include <drm/drm_atomic_helper.h>
> @@ -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

Would it be feasible to define inb, inw, outb and outw at the top of 
bochs.c if no HAS_IOPORT has been set?  That would avoid the ifdef 
branching within the code.

>   	}
>   }
>   
> @@ -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");

Use drm_err() here.

Best regards
Thomas

> +			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 594bc472862f..c65fea049bc7 100644
> --- a/drivers/gpu/drm/tiny/cirrus.c
> +++ b/drivers/gpu/drm/tiny/cirrus.c
> @@ -508,8 +508,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);
>   }

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)

[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

[-- Attachment #2: Type: text/plain, Size: 183 bytes --]

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v5 09/44] drm: handle HAS_IOPORT dependencies
  2023-05-22 12:38   ` [PATCH v5 09/44] drm: handle HAS_IOPORT dependencies Thomas Zimmermann
@ 2023-05-22 13:06     ` Arnd Bergmann
  2023-05-22 13:14     ` Gerd Hoffmann
  1 sibling, 0 replies; 3+ messages in thread
From: Arnd Bergmann @ 2023-05-22 13:06 UTC (permalink / raw)
  To: Thomas Zimmermann, Niklas Schnelle, Dave Airlie, Gerd Hoffmann,
	Dave Airlie, Daniel Vetter
  Cc: Linux-Arch, Arnd Bergmann, Geert Uytterhoeven, Albert Ou,
	Rafael J . Wysocki, Greg Kroah-Hartman, Uwe Kleine-König,
	linux-pci, linux-kernel, dri-devel, virtualization, Alan Stern,
	Paul Walmsley, Bjorn Helgaas, spice-devel, Mauro Carvalho Chehab,
	Palmer Dabbelt

On Mon, May 22, 2023, at 14:38, Thomas Zimmermann wrote:
> Am 22.05.23 um 12:50 schrieb Niklas Schnelle:

>> 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.
>
> I think we should consider making cirrus depend on HAS_IOPORT. The 
> driver is only for qemu's cirrus emulation, which IIRC can only be 
> enabled for i586. And it has all been deprecated long ago.

I tried it out in arm64 debvm, and both the kernel and Xorg drivers
are detected just fine according to the log. I only get a black
screen, which could be the result of a missing VGA BIOS or the missing
unblank Port I/O in the driver (I doubt the VGA ports are hooked up
on arm64 qemu), but there is a good chance that it's currently
working for someone else.

      Arnd
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v5 09/44] drm: handle HAS_IOPORT dependencies
  2023-05-22 12:38   ` [PATCH v5 09/44] drm: handle HAS_IOPORT dependencies Thomas Zimmermann
  2023-05-22 13:06     ` Arnd Bergmann
@ 2023-05-22 13:14     ` Gerd Hoffmann
  1 sibling, 0 replies; 3+ messages in thread
From: Gerd Hoffmann @ 2023-05-22 13:14 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: Rafael J. Wysocki, linux-pci, Paul Walmsley, dri-devel,
	virtualization, Dave Airlie, David Airlie, linux-arch,
	Geert Uytterhoeven, Uwe Kleine-König, Alan Stern, Albert Ou,
	Arnd Bergmann, Niklas Schnelle, spice-devel, Bjorn Helgaas,
	Mauro Carvalho Chehab, Arnd Bergmann, Greg Kroah-Hartman,
	linux-kernel, Palmer Dabbelt, Daniel Vetter

  Hi,

> > 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.
> 
> I think we should consider making cirrus depend on HAS_IOPORT. The driver is
> only for qemu's cirrus emulation, which IIRC can only be enabled for i586.

Agree.  cirrus is x86 only (both i386 / x86_64 though).  Just require
HAS_IOPORT and be done with it.

> And it has all been deprecated long ago.

The fact that cirrus used to be the qemu default for many years is
pretty much the only reason it is still somewhat relevant today ...

take care,
  Gerd

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-05-22 13:14 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20230522105049.1467313-1-schnelle@linux.ibm.com>
     [not found] ` <20230522105049.1467313-10-schnelle@linux.ibm.com>
2023-05-22 12:38   ` [PATCH v5 09/44] drm: handle HAS_IOPORT dependencies Thomas Zimmermann
2023-05-22 13:06     ` Arnd Bergmann
2023-05-22 13:14     ` Gerd Hoffmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).