Commit 3208a24f authored by Dave Airlie's avatar Dave Airlie

Merge tag 'drm-misc-next-fixes-2020-04-04' of...

Merge tag 'drm-misc-next-fixes-2020-04-04' of git://anongit.freedesktop.org/drm/drm-misc into drm-next

A bunch of fixes to avoid null pointer dereference in fbcon, fix a return
in xen, some DT bindings fixes, a vc4 issue with 1920x1200 mode validation,
and a conflicting framebuffer in vboxvideo.
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20200404090057.a3m7uw6tavwtcyon@gilmour.lan
parents 0a1a6793 d8a26d8f
...@@ -21,15 +21,6 @@ properties: ...@@ -21,15 +21,6 @@ properties:
- {} - {}
- const: panel-dpi - const: panel-dpi
data-mapping:
enum:
- rgb24
- rgb565
- bgr666
description: |
Describes the media format, how the display panel is connected
to the display interface.
backlight: true backlight: true
enable-gpios: true enable-gpios: true
height-mm: true height-mm: true
...@@ -52,7 +43,6 @@ examples: ...@@ -52,7 +43,6 @@ examples:
compatible = "osddisplays,osd057T0559-34ts", "panel-dpi"; compatible = "osddisplays,osd057T0559-34ts", "panel-dpi";
label = "osddisplay"; label = "osddisplay";
power-supply = <&vcc_supply>; power-supply = <&vcc_supply>;
data-mapping = "rgb565";
backlight = <&backlight>; backlight = <&backlight>;
port { port {
......
...@@ -65,7 +65,7 @@ properties: ...@@ -65,7 +65,7 @@ properties:
ports: ports:
type: object type: object
description: description:
Ports as described in Documentation/devictree/bindings/graph.txt Ports as described in Documentation/devicetree/bindings/graph.txt
properties: properties:
"#address-cells": "#address-cells":
const: 1 const: 1
...@@ -121,7 +121,7 @@ examples: ...@@ -121,7 +121,7 @@ examples:
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/soc/ti,sci_pm_domain.h> #include <dt-bindings/soc/ti,sci_pm_domain.h>
dss: dss@04a00000 { dss: dss@4a00000 {
compatible = "ti,am65x-dss"; compatible = "ti,am65x-dss";
reg = <0x0 0x04a00000 0x0 0x1000>, /* common */ reg = <0x0 0x04a00000 0x0 0x1000>, /* common */
<0x0 0x04a02000 0x0 0x1000>, /* vidl1 */ <0x0 0x04a02000 0x0 0x1000>, /* vidl1 */
......
...@@ -98,7 +98,7 @@ properties: ...@@ -98,7 +98,7 @@ properties:
ports: ports:
type: object type: object
description: description:
Ports as described in Documentation/devictree/bindings/graph.txt Ports as described in Documentation/devicetree/bindings/graph.txt
properties: properties:
"#address-cells": "#address-cells":
const: 1 const: 1
...@@ -154,7 +154,7 @@ examples: ...@@ -154,7 +154,7 @@ examples:
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/soc/ti,sci_pm_domain.h> #include <dt-bindings/soc/ti,sci_pm_domain.h>
dss: dss@04a00000 { dss: dss@4a00000 {
compatible = "ti,j721e-dss"; compatible = "ti,j721e-dss";
reg = <0x00 0x04a00000 0x00 0x10000>, /* common_m */ reg = <0x00 0x04a00000 0x00 0x10000>, /* common_m */
<0x00 0x04a10000 0x00 0x10000>, /* common_s0*/ <0x00 0x04a10000 0x00 0x10000>, /* common_s0*/
......
...@@ -56,7 +56,7 @@ properties: ...@@ -56,7 +56,7 @@ properties:
port: port:
type: object type: object
description: description:
Port as described in Documentation/devictree/bindings/graph.txt. Port as described in Documentation/devicetree/bindings/graph.txt.
The DSS DPI output port node The DSS DPI output port node
max-memory-bandwidth: max-memory-bandwidth:
...@@ -81,7 +81,7 @@ examples: ...@@ -81,7 +81,7 @@ examples:
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
dss: dss@02540000 { dss: dss@2540000 {
compatible = "ti,k2g-dss"; compatible = "ti,k2g-dss";
reg = <0x02540000 0x400>, reg = <0x02540000 0x400>,
<0x02550000 0x1000>, <0x02550000 0x1000>,
......
...@@ -43,11 +43,12 @@ config DMABUF_MOVE_NOTIFY ...@@ -43,11 +43,12 @@ config DMABUF_MOVE_NOTIFY
bool "Move notify between drivers (EXPERIMENTAL)" bool "Move notify between drivers (EXPERIMENTAL)"
default n default n
help help
Don''t pin buffers if the dynamic DMA-buf interface is available on both the Don't pin buffers if the dynamic DMA-buf interface is available on
exporter as well as the importer. This fixes a security problem where both the exporter as well as the importer. This fixes a security
userspace is able to pin unrestricted amounts of memory through DMA-buf. problem where userspace is able to pin unrestricted amounts of memory
But marked experimental because we don''t jet have a consistent execution through DMA-buf.
context and memory management between drivers. This is marked experimental because we don't yet have a consistent
execution context and memory management between drivers.
config DMABUF_SELFTESTS config DMABUF_SELFTESTS
tristate "Selftests for the dma-buf interfaces" tristate "Selftests for the dma-buf interfaces"
......
...@@ -45,7 +45,6 @@ ...@@ -45,7 +45,6 @@
#include <linux/export.h> #include <linux/export.h>
#include <linux/interval_tree_generic.h> #include <linux/interval_tree_generic.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <linux/sched/signal.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/stacktrace.h> #include <linux/stacktrace.h>
...@@ -367,11 +366,6 @@ next_hole(struct drm_mm *mm, ...@@ -367,11 +366,6 @@ next_hole(struct drm_mm *mm,
struct drm_mm_node *node, struct drm_mm_node *node,
enum drm_mm_insert_mode mode) enum drm_mm_insert_mode mode)
{ {
/* Searching is slow; check if we ran out of time/patience */
cond_resched();
if (fatal_signal_pending(current))
return NULL;
switch (mode) { switch (mode) {
default: default:
case DRM_MM_INSERT_BEST: case DRM_MM_INSERT_BEST:
...@@ -563,7 +557,7 @@ int drm_mm_insert_node_in_range(struct drm_mm * const mm, ...@@ -563,7 +557,7 @@ int drm_mm_insert_node_in_range(struct drm_mm * const mm,
return 0; return 0;
} }
return signal_pending(current) ? -ERESTARTSYS : -ENOSPC; return -ENOSPC;
} }
EXPORT_SYMBOL(drm_mm_insert_node_in_range); EXPORT_SYMBOL(drm_mm_insert_node_in_range);
......
...@@ -361,7 +361,6 @@ static int panel_dpi_probe(struct device *dev, ...@@ -361,7 +361,6 @@ static int panel_dpi_probe(struct device *dev,
struct panel_desc *desc; struct panel_desc *desc;
unsigned int bus_flags; unsigned int bus_flags;
struct videomode vm; struct videomode vm;
const char *mapping;
int ret; int ret;
np = dev->of_node; np = dev->of_node;
...@@ -386,16 +385,6 @@ static int panel_dpi_probe(struct device *dev, ...@@ -386,16 +385,6 @@ static int panel_dpi_probe(struct device *dev,
of_property_read_u32(np, "width-mm", &desc->size.width); of_property_read_u32(np, "width-mm", &desc->size.width);
of_property_read_u32(np, "height-mm", &desc->size.height); of_property_read_u32(np, "height-mm", &desc->size.height);
of_property_read_string(np, "data-mapping", &mapping);
if (!strcmp(mapping, "rgb24"))
desc->bus_format = MEDIA_BUS_FMT_RGB888_1X24;
else if (!strcmp(mapping, "rgb565"))
desc->bus_format = MEDIA_BUS_FMT_RGB565_1X16;
else if (!strcmp(mapping, "bgr666"))
desc->bus_format = MEDIA_BUS_FMT_RGB666_1X18;
else if (!strcmp(mapping, "lvds666"))
desc->bus_format = MEDIA_BUS_FMT_RGB666_1X24_CPADHI;
/* Extract bus_flags from display_timing */ /* Extract bus_flags from display_timing */
bus_flags = 0; bus_flags = 0;
vm.flags = timing->flags; vm.flags = timing->flags;
......
...@@ -41,6 +41,10 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -41,6 +41,10 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (!vbox_check_supported(VBE_DISPI_ID_HGSMI)) if (!vbox_check_supported(VBE_DISPI_ID_HGSMI))
return -ENODEV; return -ENODEV;
ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "vboxvideodrmfb");
if (ret)
return ret;
vbox = kzalloc(sizeof(*vbox), GFP_KERNEL); vbox = kzalloc(sizeof(*vbox), GFP_KERNEL);
if (!vbox) if (!vbox)
return -ENOMEM; return -ENOMEM;
......
...@@ -681,11 +681,23 @@ static enum drm_mode_status ...@@ -681,11 +681,23 @@ static enum drm_mode_status
vc4_hdmi_encoder_mode_valid(struct drm_encoder *crtc, vc4_hdmi_encoder_mode_valid(struct drm_encoder *crtc,
const struct drm_display_mode *mode) const struct drm_display_mode *mode)
{ {
/* HSM clock must be 108% of the pixel clock. Additionally, /*
* the AXI clock needs to be at least 25% of pixel clock, but * As stated in RPi's vc4 firmware "HDMI state machine (HSM) clock must
* HSM ends up being the limiting factor. * be faster than pixel clock, infinitesimally faster, tested in
* simulation. Otherwise, exact value is unimportant for HDMI
* operation." This conflicts with bcm2835's vc4 documentation, which
* states HSM's clock has to be at least 108% of the pixel clock.
*
* Real life tests reveal that vc4's firmware statement holds up, and
* users are able to use pixel clocks closer to HSM's, namely for
* 1920x1200@60Hz. So it was decided to have leave a 1% margin between
* both clocks. Which, for RPi0-3 implies a maximum pixel clock of
* 162MHz.
*
* Additionally, the AXI clock needs to be at least 25% of
* pixel clock, but HSM ends up being the limiting factor.
*/ */
if (mode->clock > HSM_CLOCK_FREQ / (1000 * 108 / 100)) if (mode->clock > HSM_CLOCK_FREQ / (1000 * 101 / 100))
return MODE_CLOCK_HIGH; return MODE_CLOCK_HIGH;
return MODE_OK; return MODE_OK;
......
...@@ -401,7 +401,7 @@ static int xen_drm_drv_dumb_create(struct drm_file *filp, ...@@ -401,7 +401,7 @@ static int xen_drm_drv_dumb_create(struct drm_file *filp,
obj = xen_drm_front_gem_create(dev, args->size); obj = xen_drm_front_gem_create(dev, args->size);
if (IS_ERR_OR_NULL(obj)) { if (IS_ERR_OR_NULL(obj)) {
ret = PTR_ERR(obj); ret = PTR_ERR_OR_ZERO(obj);
goto fail; goto fail;
} }
......
...@@ -1282,6 +1282,9 @@ static void fbcon_deinit(struct vc_data *vc) ...@@ -1282,6 +1282,9 @@ static void fbcon_deinit(struct vc_data *vc)
if (!con_is_bound(&fb_con)) if (!con_is_bound(&fb_con))
fbcon_exit(); fbcon_exit();
if (vc->vc_num == logo_shown)
logo_shown = FBCON_LOGO_CANSHOW;
return; return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment