diff mbox series

[11/60] drm/gud: Add support for the nomodeset kernel parameter

Message ID 20211215010008.2545520-12-javierm@redhat.com (mailing list archive)
State Superseded, archived
Headers show
Series drm: Make all drivers to honour the nomodeset parameter | expand

Commit Message

Javier Martinez Canillas Dec. 15, 2021, 12:59 a.m. UTC
According to disable Documentation/admin-guide/kernel-parameters.txt, this
parameter can be used to disable kernel modesetting.

DRM drivers will not perform display-mode changes or accelerated rendering
and only the systewm system framebuffer will be available if it was set-up.

But only a few DRM drivers currently check for nomodeset, make this driver
to also support the command line parameter.

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
---

 drivers/gpu/drm/gud/gud_drv.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Noralf Trønnes Dec. 15, 2021, 9:37 p.m. UTC | #1
Den 15.12.2021 01.59, skrev Javier Martinez Canillas:
> According to disable Documentation/admin-guide/kernel-parameters.txt, this
> parameter can be used to disable kernel modesetting.
> 
> DRM drivers will not perform display-mode changes or accelerated rendering
> and only the systewm system framebuffer will be available if it was set-up.
> 
> But only a few DRM drivers currently check for nomodeset, make this driver
> to also support the command line parameter.
> 
> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
> ---
> 

I don't understand why this is applicable to USB drivers, there's no way
the firmware can setup a framebuffer and continue pushing pixels over
USB when Linux has been given control over the USB bus?

The same argument goes for the SPI drivers in drm/tiny/ as well.

Noralf.

>  drivers/gpu/drm/gud/gud_drv.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/gud/gud_drv.c b/drivers/gpu/drm/gud/gud_drv.c
> index 3f9d4b9a1e3d..4d253d249512 100644
> --- a/drivers/gpu/drm/gud/gud_drv.c
> +++ b/drivers/gpu/drm/gud/gud_drv.c
> @@ -446,6 +446,9 @@ static int gud_probe(struct usb_interface *intf, const struct usb_device_id *id)
>  	u32 *formats;
>  	int ret, i;
>  
> +	if (drm_firmware_drivers_only())
> +		return -ENODEV;
> +
>  	ret = usb_find_bulk_out_endpoint(intf->cur_altsetting, &bulk_out);
>  	if (ret)
>  		return ret;
>
Javier Martinez Canillas Dec. 15, 2021, 9:50 p.m. UTC | #2
Hello Noralf,

On 12/15/21 22:37, Noralf Trønnes wrote:
> 
> 
> Den 15.12.2021 01.59, skrev Javier Martinez Canillas:
>> According to disable Documentation/admin-guide/kernel-parameters.txt, this
>> parameter can be used to disable kernel modesetting.
>>
>> DRM drivers will not perform display-mode changes or accelerated rendering
>> and only the systewm system framebuffer will be available if it was set-up.
>>
>> But only a few DRM drivers currently check for nomodeset, make this driver
>> to also support the command line parameter.
>>
>> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
>> ---
>>
> 
> I don't understand why this is applicable to USB drivers, there's no way
> the firmware can setup a framebuffer and continue pushing pixels over
> USB when Linux has been given control over the USB bus?
> 
> The same argument goes for the SPI drivers in drm/tiny/ as well.
> 

That's a very good point. I included these mostly for consistency but if it's
OK for the KMS drivers to just ignore the "nomodeset" parameter, I could drop
all that are not for devices in the PCI or platform buses.

Best regards,
Thomas Zimmermann Dec. 16, 2021, 8:20 a.m. UTC | #3
Hi

Am 15.12.21 um 22:37 schrieb Noralf Trønnes:
> 
> 
> Den 15.12.2021 01.59, skrev Javier Martinez Canillas:
>> According to disable Documentation/admin-guide/kernel-parameters.txt, this
>> parameter can be used to disable kernel modesetting.
>>
>> DRM drivers will not perform display-mode changes or accelerated rendering
>> and only the systewm system framebuffer will be available if it was set-up.
>>
>> But only a few DRM drivers currently check for nomodeset, make this driver
>> to also support the command line parameter.
>>
>> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
>> ---
>>
> 
> I don't understand why this is applicable to USB drivers, there's no way
> the firmware can setup a framebuffer and continue pushing pixels over
> USB when Linux has been given control over the USB bus?
> 
> The same argument goes for the SPI drivers in drm/tiny/ as well.

The intended semantics of the option is to disable every display output 
except for the buffer provided by the firmware.

With USB it still would still disable the driver. That's useful if only 
for debugging. There are also systems with hard-wired USB displays where 
one cannot just unplug the adapter.

Admittedly, USB graphics is a bit of an odd use case, but neither is it 
too far fetched IMHO.

Best regards
Thomas

> 
> Noralf.
> 
>>   drivers/gpu/drm/gud/gud_drv.c | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/gud/gud_drv.c b/drivers/gpu/drm/gud/gud_drv.c
>> index 3f9d4b9a1e3d..4d253d249512 100644
>> --- a/drivers/gpu/drm/gud/gud_drv.c
>> +++ b/drivers/gpu/drm/gud/gud_drv.c
>> @@ -446,6 +446,9 @@ static int gud_probe(struct usb_interface *intf, const struct usb_device_id *id)
>>   	u32 *formats;
>>   	int ret, i;
>>   
>> +	if (drm_firmware_drivers_only())
>> +		return -ENODEV;
>> +
>>   	ret = usb_find_bulk_out_endpoint(intf->cur_altsetting, &bulk_out);
>>   	if (ret)
>>   		return ret;
>>
Noralf Trønnes Dec. 16, 2021, 3:47 p.m. UTC | #4
Den 16.12.2021 09.20, skrev Thomas Zimmermann:
> Hi
> 
> Am 15.12.21 um 22:37 schrieb Noralf Trønnes:
>>
>>
>> Den 15.12.2021 01.59, skrev Javier Martinez Canillas:
>>> According to disable Documentation/admin-guide/kernel-parameters.txt,
>>> this
>>> parameter can be used to disable kernel modesetting.
>>>
>>> DRM drivers will not perform display-mode changes or accelerated
>>> rendering
>>> and only the systewm system framebuffer will be available if it was
>>> set-up.
>>>
>>> But only a few DRM drivers currently check for nomodeset, make this
>>> driver
>>> to also support the command line parameter.
>>>
>>> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
>>> ---
>>>
>>
>> I don't understand why this is applicable to USB drivers, there's no way
>> the firmware can setup a framebuffer and continue pushing pixels over
>> USB when Linux has been given control over the USB bus?
>>
>> The same argument goes for the SPI drivers in drm/tiny/ as well.
> 
> The intended semantics of the option is to disable every display output
> except for the buffer provided by the firmware.
> 

If that's the case this patch is:

Acked-by: Noralf Trønnes <noralf@tronnes.org>

> With USB it still would still disable the driver. That's useful if only
> for debugging. There are also systems with hard-wired USB displays where
> one cannot just unplug the adapter.
> 
> Admittedly, USB graphics is a bit of an odd use case, but neither is it
> too far fetched IMHO.
> 
> Best regards
> Thomas
> 
>>
>> Noralf.
>>
>>>   drivers/gpu/drm/gud/gud_drv.c | 3 +++
>>>   1 file changed, 3 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/gud/gud_drv.c
>>> b/drivers/gpu/drm/gud/gud_drv.c
>>> index 3f9d4b9a1e3d..4d253d249512 100644
>>> --- a/drivers/gpu/drm/gud/gud_drv.c
>>> +++ b/drivers/gpu/drm/gud/gud_drv.c
>>> @@ -446,6 +446,9 @@ static int gud_probe(struct usb_interface *intf,
>>> const struct usb_device_id *id)
>>>       u32 *formats;
>>>       int ret, i;
>>>   +    if (drm_firmware_drivers_only())
>>> +        return -ENODEV;
>>> +
>>>       ret = usb_find_bulk_out_endpoint(intf->cur_altsetting, &bulk_out);
>>>       if (ret)
>>>           return ret;
>>>
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/gud/gud_drv.c b/drivers/gpu/drm/gud/gud_drv.c
index 3f9d4b9a1e3d..4d253d249512 100644
--- a/drivers/gpu/drm/gud/gud_drv.c
+++ b/drivers/gpu/drm/gud/gud_drv.c
@@ -446,6 +446,9 @@  static int gud_probe(struct usb_interface *intf, const struct usb_device_id *id)
 	u32 *formats;
 	int ret, i;
 
+	if (drm_firmware_drivers_only())
+		return -ENODEV;
+
 	ret = usb_find_bulk_out_endpoint(intf->cur_altsetting, &bulk_out);
 	if (ret)
 		return ret;