Hin-Tak Leung wrote: > On Wed, May 6, 2009 at 7:02 PM, John W. Linville <linville@xxxxxxxxxxxxx> wrote: >> This definitely needs to fail more gracefully in the event of a >> kmalloc failure... >> >> Signed-off-by: John W. Linville <linville@xxxxxxxxxxxxx> OK guys. Thanks for your support and sorry for the delay: I add to struggle with drm git to compile with 2.6.30-rc4-git3 (due to various non yet integraed things my automated rebuild procedure does git fetch for drm, xf86-video-nouveau, ...) , leading to no X server which for me is more annoying than a trace in a USB wireless driver that I seldom use only to test some new wireless feature (two GE port onboard). The patch fix the DMA warning and the driver seems to work (just associated it) but I must say that the allocation failure handling path and the fact that we use now kmalloc for allocating a few bytes in such a routine makes me worry about possible negative performance impact unless theses routines are used only in a slow configuration path (did no took time to red the code due to many other problems). BTW if someone know who I should send this attached patch for DRM git, I would gladly forward it. -- eric
diff --git a/linux-core/drm_os_linux.h b/linux-core/drm_os_linux.h index f58296b..b47420e 100644 --- a/linux-core/drm_os_linux.h +++ b/linux-core/drm_os_linux.h @@ -32,11 +32,6 @@ /** IRQ handler arguments and return type and values */ #define DRM_IRQ_ARGS int irq, void *arg /** backwards compatibility with old irq return values */ -#ifndef IRQ_HANDLED -typedef void irqreturn_t; -#define IRQ_HANDLED /* nothing */ -#define IRQ_NONE /* nothing */ -#endif /** AGP types */ #if __OS_HAS_AGP diff --git a/linux-core/drm_sysfs.c b/linux-core/drm_sysfs.c index 6de9367..637f5c2 100644 --- a/linux-core/drm_sysfs.c +++ b/linux-core/drm_sysfs.c @@ -162,14 +162,14 @@ int drm_sysfs_device_add(struct drm_minor *minor) int err; int i, j; char *minor_str; - + minor->kdev.parent = &minor->dev->pdev->dev; minor->kdev.class = drm_class; minor->kdev.release = drm_sysfs_device_release; minor->kdev.devt = minor->device; - minor_str = "card%d"; - - snprintf(minor->kdev.bus_id, BUS_ID_SIZE, minor_str, minor->index); + minor_str = "card%d"; + + dev_set_name(&minor->kdev, minor_str, minor->index); err = device_register(&minor->kdev); if (err) {