public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: torvalds@osdl.org, jsimmons@infradead.org
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH] back out fbdev sysfs support
Date: Sat, 14 Feb 2004 17:50:37 +0100	[thread overview]
Message-ID: <20040214165037.GA15985@lst.de> (raw)

Hi Linus,

this patch backs out James' sysfs support for fbdev again.  It
introduces a big, race for every driver not converted to
framebuffer_{alloc,release} (that is every driver but Ben's new
radeonfb).

I've left in framebuffer_{alloc,release} as stubs so drivers can be
converted to it gradually and once all drivers are done it can be
enabled again.

<rant>
James, what about pushing the 2GB worth of fbdev driver fixes in your
tree to Linus so people actually get working fb support again instead
of adding new holes?  A maintainers job can't be to apply patches to
his personal CVS repository and sitting on them forever
</rant>


--- 1.82/drivers/video/fbmem.c	Thu Feb 12 18:14:53 2004
+++ edited/drivers/video/fbmem.c	Fri Feb 13 06:00:42 2004
@@ -1228,9 +1228,6 @@
 			break;
 	fb_info->node = i;
 	
-	if (fb_add_class_device(fb_info))
-		return -EINVAL;
-	
 	if (fb_info->pixmap.addr == NULL) {
 		fb_info->pixmap.addr = kmalloc(FBPIXMAPSIZE, GFP_KERNEL);
 		if (fb_info->pixmap.addr) {
@@ -1279,7 +1276,6 @@
 		kfree(fb_info->pixmap.addr);
 	registered_fb[i]=NULL;
 	num_registered_fb--;
-	class_device_del(&fb_info->class_dev);
 	return 0;
 }
 
@@ -1307,8 +1303,6 @@
 	if (register_chrdev(FB_MAJOR,"fb",&fb_fops))
 		printk("unable to get major %d for fb devs\n", FB_MAJOR);
 
-	class_register(&fb_class);
-	
 #ifdef CONFIG_FB_OF
 	if (ofonly) {
 		offb_init();
--- 1.1/drivers/video/fbsysfs.c	Fri Feb  6 12:14:39 2004
+++ edited/drivers/video/fbsysfs.c	Fri Feb 13 08:04:18 2004
@@ -9,50 +9,15 @@
  *	2 of the License, or (at your option) any later version.
  */
 
-#include <linux/config.h>
+/*
+ * Note:  currently there's only stubs for framebuffer_alloc and
+ * framebuffer_release here.  The reson for that is that until all drivers
+ * are converted to use it a sysfsification will open OOPSable races.
+ */
+
 #include <linux/kernel.h>
 #include <linux/fb.h>
 
-#define to_fb_info(class) container_of(class, struct fb_info, class_dev)
-
-static void release_fb_info(struct class_device *class_dev)
-{
-	struct fb_info *info = to_fb_info(class_dev);
-
-	/* This doesn't harm */
-	fb_dealloc_cmap(&info->cmap);
-
-	kfree(info);
-}
-
-struct class fb_class = {
-	.name 		= "graphics",
-	.release 	= &release_fb_info,
-};
-
-static ssize_t show_dev(struct class_device *class_dev, char *buf)
-{
-	struct fb_info *info = to_fb_info(class_dev);
-
-	return sprintf(buf, "%u:%u\n", FB_MAJOR, info->node);
-}
-
-static CLASS_DEVICE_ATTR(dev, S_IRUGO, show_dev, NULL);
-
-int fb_add_class_device(struct fb_info *info)
-{
-	int retval;
-
-	info->class_dev.class = &fb_class;
-	snprintf(info->class_dev.class_id, BUS_ID_SIZE, "fb%d",
-		 info->node);
-	retval = class_device_register(&info->class_dev);
-	if (retval)
-		return retval;
-	return class_device_create_file(&info->class_dev,
-					&class_device_attr_dev);
-}
-
 /**
  * framebuffer_alloc - creates a new frame buffer info structure
  *
@@ -82,7 +47,6 @@
 		return NULL;
 	memset(p, 0, fb_info_size + size);
 	info = (struct fb_info *) p;
-	info->class_dev.dev = dev;
 
 	if (size)
 		info->par = p + fb_info_size;
@@ -103,7 +67,7 @@
  */
 void framebuffer_release(struct fb_info *info)
 {
-	class_device_put(&info->class_dev);
+	kfree(info);
 }
 
 EXPORT_SYMBOL(framebuffer_release);
--- 1.57/include/linux/fb.h	Fri Feb 13 16:19:26 2004
+++ edited/include/linux/fb.h	Fri Feb 13 08:04:27 2004
@@ -448,7 +448,6 @@
 	char *screen_base;		/* Virtual address */
 	struct vc_data *display_fg;	/* Console visible on this display */
 	int currcon;			/* Current VC. */
-	struct class_device class_dev;	/* Sysfs data */	
 	void *pseudo_palette;		/* Fake palette of 16 colors */ 
 	/* From here on everything is device dependent */
 	void *par;	
@@ -533,9 +532,6 @@
 /* drivers/video/fbsysfs.c */
 extern struct fb_info *framebuffer_alloc(size_t size, struct device *dev);
 extern void framebuffer_release(struct fb_info *info);
-extern int fb_add_class_device(struct fb_info *info);
-
-extern struct class fb_class;
 
 /* drivers/video/fbmon.c */
 #define FB_MAXTIMINGS       0

             reply	other threads:[~2004-02-14 16:50 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-02-14 16:50 Christoph Hellwig [this message]
2004-02-14 17:02 ` [PATCH] back out fbdev sysfs support Linus Torvalds
2004-02-14 17:06   ` Christoph Hellwig
2004-02-14 17:28     ` Dave Jones
2004-02-14 23:02       ` Benjamin Herrenschmidt
2004-02-14 17:58   ` viro
2004-02-14 19:57     ` Paul Mundt
2004-02-14 23:04   ` Benjamin Herrenschmidt
2004-02-16 22:49     ` James Simmons
2004-02-16 22:58       ` Benjamin Herrenschmidt
2004-02-16 23:07         ` James Simmons
2004-02-16 22:44 ` James Simmons

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=20040214165037.GA15985@lst.de \
    --to=hch@lst.de \
    --cc=jsimmons@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@osdl.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox