From: Arnd Bergmann <arnd@arndb.de>
To: Greg KH <greg@kroah.com>
Cc: Oliver Neukum <oliver@neukum.org>,
Valdis.Kletnieks@vt.edu, Dave Airlie <airlied@gmail.com>,
codalist@telemann.coda.cs.cmu.edu,
ksummit-2010-discuss@lists.linux-foundation.org,
autofs@linux.kernel.org, Jan Harkes <jaharkes@cs.cmu.edu>,
Samuel Ortiz <samuel@sortiz.org>, Jan Kara <jack@suse.cz>,
Arnaldo Carvalho de Melo <acme@ghostprotocols.net>,
netdev@vger.kernel.org, Anders Larsen <al@alarsen.net>,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
Bryan Schumaker <bjschuma@netapp.com>,
Christoph Hellwig <hch@infradead.org>,
Petr Vandrovec <vandrove@vc.cvut.cz>,
Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>,
linux-fsdevel@vger.kernel.org,
Evgeniy Dushistov <dushistov@mail.ru>,
Ingo Molnar <mingo@elte.hu>,
Andrew Hendry <andrew.hendry@gmail.com>,
linux-media@vger.kernel.org
Subject: Re: [Ksummit-2010-discuss] [v2] Remaining BKL users, what to do
Date: Tue, 19 Oct 2010 22:44:41 +0200 [thread overview]
Message-ID: <201010192244.41913.arnd@arndb.de> (raw)
In-Reply-To: <20101019202912.GA30133@kroah.com>
On Tuesday 19 October 2010 22:29:12 Greg KH wrote:
> On Tue, Oct 19, 2010 at 09:40:47PM +0200, Oliver Neukum wrote:
> > Am Dienstag, 19. Oktober 2010, 21:37:35 schrieb Greg KH:
> > > > So no need to clean it up for multiprocessor support.
> > > >
> > > > http://download.intel.com/design/chipsets/datashts/29067602.pdf
> > > > http://www.intel.com/design/chipsets/specupdt/29069403.pdf
> > >
> > > Great, we can just drop all calls to lock_kernel() and the like in the
> > > driver and be done with it, right?
> >
> > No,
> >
> > you still need to switch off preemption.
>
> Hm, how would you do that from within a driver?
I think this would do:
---
drm/i810: remove SMP support and BKL
The i810 and i815 chipsets supported by the i810 drm driver were not
officially designed for SMP operation, so the big kernel lock is
only required for kernel preemption. This disables the driver if
preemption is enabled and removes all calls to lock_kernel in it.
If you own an Acorp 6A815EPD mainboard with a i815 chipset and
two Pentium-III sockets, and want to run recent kernels on it,
tell me about it.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index b755301..e071bc8 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -73,8 +73,8 @@ source "drivers/gpu/drm/radeon/Kconfig"
config DRM_I810
tristate "Intel I810"
- # BKL usage in order to avoid AB-BA deadlocks, may become BROKEN_ON_SMP
- depends on DRM && AGP && AGP_INTEL && BKL
+ # PREEMPT requires BKL support here, which was removed
+ depends on DRM && AGP && AGP_INTEL && !PREEMPT
help
Choose this option if you have an Intel I810 graphics card. If M is
selected, the module will be called i810. AGP support is required
diff --git a/drivers/gpu/drm/i810/i810_dma.c b/drivers/gpu/drm/i810/i810_dma.c
index ff33e53..8f371e8 100644
--- a/drivers/gpu/drm/i810/i810_dma.c
+++ b/drivers/gpu/drm/i810/i810_dma.c
@@ -37,7 +37,6 @@
#include <linux/interrupt.h> /* For task queue support */
#include <linux/delay.h>
#include <linux/slab.h>
-#include <linux/smp_lock.h>
#include <linux/pagemap.h>
#define I810_BUF_FREE 2
@@ -94,7 +93,6 @@ static int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
struct drm_buf *buf;
drm_i810_buf_priv_t *buf_priv;
- lock_kernel();
dev = priv->minor->dev;
dev_priv = dev->dev_private;
buf = dev_priv->mmap_buffer;
@@ -104,7 +102,6 @@ static int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
vma->vm_file = filp;
buf_priv->currently_mapped = I810_BUF_MAPPED;
- unlock_kernel();
if (io_remap_pfn_range(vma, vma->vm_start,
vma->vm_pgoff,
@@ -116,7 +113,7 @@ static int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
static const struct file_operations i810_buffer_fops = {
.open = drm_open,
.release = drm_release,
- .unlocked_ioctl = i810_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = i810_mmap_buffers,
.fasync = drm_fasync,
.llseek = noop_llseek,
@@ -1242,19 +1239,6 @@ int i810_driver_dma_quiescent(struct drm_device *dev)
return 0;
}
-/*
- * call the drm_ioctl under the big kernel lock because
- * to lock against the i810_mmap_buffers function.
- */
-long i810_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
-{
- int ret;
- lock_kernel();
- ret = drm_ioctl(file, cmd, arg);
- unlock_kernel();
- return ret;
-}
-
struct drm_ioctl_desc i810_ioctls[] = {
DRM_IOCTL_DEF_DRV(I810_INIT, i810_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED),
DRM_IOCTL_DEF_DRV(I810_VERTEX, i810_dma_vertex, DRM_AUTH|DRM_UNLOCKED),
diff --git a/drivers/gpu/drm/i810/i810_drv.c b/drivers/gpu/drm/i810/i810_drv.c
index 88bcd33..9642d3c 100644
--- a/drivers/gpu/drm/i810/i810_drv.c
+++ b/drivers/gpu/drm/i810/i810_drv.c
@@ -57,7 +57,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .unlocked_ioctl = i810_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
@@ -79,6 +79,10 @@ static struct drm_driver driver = {
static int __init i810_init(void)
{
+ if (num_present_cpus() > 1) {
+ pr_err("drm/i810 does not support SMP\n");
+ return -EINVAL;
+ }
driver.num_ioctls = i810_max_ioctl;
return drm_init(&driver);
}
next prev parent reply other threads:[~2010-10-19 20:44 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-16 14:32 Remaining BKL users, what to do Arnd Bergmann
2010-09-16 14:32 ` Arnd Bergmann
2010-09-16 14:49 ` Steven Rostedt
2010-09-16 14:49 ` Steven Rostedt
2010-09-16 18:32 ` Jens Axboe
2010-09-16 18:32 ` Jens Axboe
2010-09-17 18:46 ` Arnd Bergmann
2010-09-17 18:46 ` Arnd Bergmann
2010-09-17 18:46 ` Arnd Bergmann
2010-09-16 15:04 ` Jan Kara
2010-09-16 15:04 ` Jan Kara
2010-09-16 21:26 ` Anton Altaparmakov
2010-09-16 21:26 ` Anton Altaparmakov
2010-09-17 10:45 ` Arnd Bergmann
2010-09-17 10:45 ` Arnd Bergmann
2010-09-17 13:32 ` Christoph Hellwig
2010-09-17 13:32 ` Christoph Hellwig
2010-09-17 13:50 ` Arnd Bergmann
2010-09-17 13:50 ` Arnd Bergmann
2010-09-17 14:02 ` Christoph Hellwig
2010-09-17 14:02 ` Christoph Hellwig
2010-09-17 14:56 ` Arnd Bergmann
2010-09-17 14:56 ` Arnd Bergmann
2010-09-17 19:00 ` [PATCH] BKL: Remove BKL from isofs Arnd Bergmann
2010-09-20 10:58 ` Jan Kara
2010-09-20 11:13 ` Arnd Bergmann
2010-09-20 15:18 ` Jan Kara
2010-09-20 15:40 ` Alexander E. Patrakov
2010-09-20 15:50 ` Jan Kara
2010-09-16 15:07 ` Remaining BKL users, what to do Alan Cox
2010-09-16 20:08 ` David Miller
2010-09-16 16:09 ` Anders Larsen
2010-09-16 16:09 ` Anders Larsen
2010-09-16 16:57 ` Samuel Ortiz
2010-09-16 16:57 ` Samuel Ortiz
2010-09-16 20:08 ` David Miller
2010-09-16 20:08 ` David Miller
2010-09-16 19:00 ` Jan Harkes
2010-09-16 19:26 ` Arnd Bergmann
2010-09-20 1:25 ` [autofs] " Ian Kent
2010-10-18 15:42 ` [v2] " Arnd Bergmann
2010-10-18 15:42 ` Arnd Bergmann
2010-10-18 16:19 ` Christoph Hellwig
2010-10-18 16:19 ` Christoph Hellwig
2010-10-18 17:38 ` Arnd Bergmann
2010-10-18 17:38 ` Arnd Bergmann
2010-10-18 18:43 ` [Ksummit-2010-discuss] " Greg KH
2010-10-18 23:00 ` Dave Airlie
2010-10-19 0:40 ` Greg KH
2010-10-19 0:57 ` Dave Airlie
2010-10-19 2:24 ` Greg KH
2010-10-19 2:45 ` Dave Airlie
2010-10-19 3:33 ` Steven Rostedt
2010-10-19 4:03 ` Dave Airlie
2010-10-19 4:03 ` Dave Airlie
2010-10-19 5:00 ` Theodore Kilgore
2010-10-19 4:52 ` Dave Airlie
2010-10-19 7:26 ` Arnd Bergmann
2010-10-19 12:39 ` Steven Rostedt
2010-10-19 13:36 ` Arnd Bergmann
2010-10-19 13:36 ` Arnd Bergmann
2010-10-19 13:43 ` Steven Rostedt
2010-10-19 13:57 ` Arnd Bergmann
2010-10-19 13:57 ` Arnd Bergmann
2010-10-19 13:54 ` Paul Mundt
2010-10-19 13:26 ` Arnd Bergmann
2010-10-19 20:50 ` Dave Airlie
2010-10-19 20:50 ` Dave Airlie
2010-10-20 16:14 ` Ville Syrjälä
2010-10-20 16:14 ` Ville Syrjälä
2010-10-19 18:24 ` Valdis.Kletnieks
2010-10-19 19:37 ` Greg KH
2010-10-19 19:40 ` Oliver Neukum
2010-10-19 20:29 ` Greg KH
2010-10-19 20:38 ` Jiri Kosina
2010-10-19 20:41 ` Alan Cox
2010-10-19 20:48 ` Arnd Bergmann
2010-10-19 20:44 ` Arnd Bergmann [this message]
2010-10-20 4:43 ` Dave Young
2010-10-20 6:50 ` Arnd Bergmann
2010-11-02 1:21 ` Pavel Machek
2010-11-03 6:58 ` Pekka Enberg
2010-11-05 2:27 ` Arnd Bergmann
2010-11-05 7:14 ` Pekka Enberg
2010-10-21 12:42 ` Christoph Hellwig
2010-10-21 12:42 ` Christoph Hellwig
2010-10-21 12:47 ` Christoph Hellwig
2010-10-21 13:38 ` Arnd Bergmann
2010-10-21 13:50 ` [PATCH 1/2] BKL: remove BKL from qnx4 Arnd Bergmann
2010-10-21 15:22 ` Anders Larsen
2010-10-21 13:51 ` [PATCH 2/2] BKL: remove BKL from freevxfs Arnd Bergmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201010192244.41913.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=Valdis.Kletnieks@vt.edu \
--cc=acme@ghostprotocols.net \
--cc=airlied@gmail.com \
--cc=al@alarsen.net \
--cc=andrew.hendry@gmail.com \
--cc=autofs@linux.kernel.org \
--cc=bjschuma@netapp.com \
--cc=codalist@telemann.coda.cs.cmu.edu \
--cc=dri-devel@lists.freedesktop.org \
--cc=dushistov@mail.ru \
--cc=greg@kroah.com \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=jaharkes@cs.cmu.edu \
--cc=ksummit-2010-discuss@lists.linux-foundation.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mikulas@artax.karlin.mff.cuni.cz \
--cc=mingo@elte.hu \
--cc=netdev@vger.kernel.org \
--cc=oliver@neukum.org \
--cc=samuel@sortiz.org \
--cc=vandrove@vc.cvut.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.