From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linuxfoundation.org ([140.211.169.12]:55816 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751282AbdHDVjM (ORCPT ); Fri, 4 Aug 2017 17:39:12 -0400 Date: Fri, 4 Aug 2017 14:39:10 -0700 From: Greg Kroah-Hartman To: Sudip Mukherjee Cc: linux-kernel@vger.kernel.org, Teddy Wang , stable@vger.kernel.org Subject: Re: [PATCH] staging: sm750fb: avoid conflicting vesafb Message-ID: <20170804213910.GA3441@kroah.com> References: <1501363063-4261-1-git-send-email-sudipm.mukherjee@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1501363063-4261-1-git-send-email-sudipm.mukherjee@gmail.com> Sender: stable-owner@vger.kernel.org List-ID: On Sat, Jul 29, 2017 at 10:17:43PM +0100, Sudip Mukherjee wrote: > From: Teddy Wang > > commit 740c433ec35187b45abe08bb6c45a321a791be8e upstream > > If vesafb is enabled in the config then /dev/fb0 is created by vesa > and this sm750 driver gets fb1, fb2. But we need to be fb0 and fb1 to > effectively work with xorg. > So if it has been alloted fb1, then try to remove the other fb0. > > In the previous send, why #ifdef is used was asked. > https://lkml.org/lkml/2017/6/25/57 > > Answered at: https://lkml.org/lkml/2017/6/25/69 > Also pasting here for reference. > > 'Did a quick research into "why". > The patch d8801e4df91e ("x86/PCI: Set IORESOURCE_ROM_SHADOW only for the > default VGA device") has started setting IORESOURCE_ROM_SHADOW in flags > for a default VGA device and that is being done only for x86. > And so, we will need that #ifdef to check IORESOURCE_ROM_SHADOW as that > needs to be checked only for a x86 and not for other arch.' > > Cc: # v4.4 > Signed-off-by: Teddy Wang > Signed-off-by: Sudip Mukherjee > Signed-off-by: Greg Kroah-Hartman > --- > drivers/staging/sm750fb/sm750.c | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c > index 860e1c2..2a89dc2 100644 > --- a/drivers/staging/sm750fb/sm750.c > +++ b/drivers/staging/sm750fb/sm750.c > @@ -1002,6 +1002,26 @@ NO_PARAM: > } > } > > +static int lynxfb_kick_out_firmware_fb(struct pci_dev *pdev) > +{ > + struct apertures_struct *ap; > + bool primary = false; > + > + ap = alloc_apertures(1); > + if (!ap) > + return -ENOMEM; > + > + ap->ranges[0].base = pci_resource_start(pdev, 0); > + ap->ranges[0].size = pci_resource_len(pdev, 0); > +#ifdef CONFIG_X86 > + primary = pdev->resource[PCI_ROM_RESOURCE].flags & > + IORESOURCE_ROM_SHADOW; > +#endif > + remove_conflicting_framebuffers(ap, "sm750_fb1", primary); > + kfree(ap); > + return 0; > +} > + > static int lynxfb_pci_probe(struct pci_dev *pdev, > const struct pci_device_id *ent) > { > @@ -1009,6 +1029,10 @@ static int lynxfb_pci_probe(struct pci_dev *pdev, > struct sm750_dev *sm750_dev = NULL; > int fbidx; > > + err = lynxfb_kick_out_firmware_fb(pdev); > + if (err) > + return err; > + This breaks the build, so I have to drop it. Please be more careful :( greg k-h