mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 01:22:07 +00:00
drm/nouveau/core: make all info-level messages silent for runtime pm
Removes the need for special handling of messages in init paths. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
16c4f227ff
commit
c52f4fa61d
@ -105,7 +105,7 @@ nouveau_dbgopt(const char *optstr, const char *sub)
|
||||
else if (!strncasecmpz(optstr, "warn", len))
|
||||
level = NV_DBG_WARN;
|
||||
else if (!strncasecmpz(optstr, "info", len))
|
||||
level = NV_DBG_INFO;
|
||||
level = NV_DBG_INFO_NORMAL;
|
||||
else if (!strncasecmpz(optstr, "debug", len))
|
||||
level = NV_DBG_DEBUG;
|
||||
else if (!strncasecmpz(optstr, "trace", len))
|
||||
|
@ -27,16 +27,38 @@
|
||||
#include <core/subdev.h>
|
||||
#include <core/printk.h>
|
||||
|
||||
int nv_printk_suspend_level = NV_DBG_DEBUG;
|
||||
int nv_info_debug_level = NV_DBG_INFO_NORMAL;
|
||||
|
||||
void
|
||||
nv_printk_(struct nouveau_object *object, const char *pfx, int level,
|
||||
const char *fmt, ...)
|
||||
nv_printk_(struct nouveau_object *object, int level, const char *fmt, ...)
|
||||
{
|
||||
static const char name[] = { '!', 'E', 'W', ' ', 'D', 'T', 'P', 'S' };
|
||||
const char *pfx;
|
||||
char mfmt[256];
|
||||
va_list args;
|
||||
|
||||
switch (level) {
|
||||
case NV_DBG_FATAL:
|
||||
pfx = KERN_CRIT;
|
||||
break;
|
||||
case NV_DBG_ERROR:
|
||||
pfx = KERN_ERR;
|
||||
break;
|
||||
case NV_DBG_WARN:
|
||||
pfx = KERN_WARNING;
|
||||
break;
|
||||
case NV_DBG_INFO_NORMAL:
|
||||
pfx = KERN_INFO;
|
||||
break;
|
||||
case NV_DBG_DEBUG:
|
||||
case NV_DBG_PARANOIA:
|
||||
case NV_DBG_TRACE:
|
||||
case NV_DBG_SPAM:
|
||||
default:
|
||||
pfx = KERN_DEBUG;
|
||||
break;
|
||||
}
|
||||
|
||||
if (object && !nv_iclass(object, NV_CLIENT_CLASS)) {
|
||||
struct nouveau_object *device = object;
|
||||
struct nouveau_object *subdev = object;
|
||||
@ -74,20 +96,3 @@ nv_printk_(struct nouveau_object *object, const char *pfx, int level,
|
||||
vprintk(mfmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
#define CONV_LEVEL(x) case NV_DBG_##x: return NV_PRINTK_##x
|
||||
|
||||
const char *nv_printk_level_to_pfx(int level)
|
||||
{
|
||||
switch (level) {
|
||||
CONV_LEVEL(FATAL);
|
||||
CONV_LEVEL(ERROR);
|
||||
CONV_LEVEL(WARN);
|
||||
CONV_LEVEL(INFO);
|
||||
CONV_LEVEL(DEBUG);
|
||||
CONV_LEVEL(PARANOIA);
|
||||
CONV_LEVEL(TRACE);
|
||||
CONV_LEVEL(SPAM);
|
||||
}
|
||||
return NV_PRINTK_DEBUG;
|
||||
}
|
||||
|
@ -1,13 +1,20 @@
|
||||
#ifndef __NOUVEAU_DEBUG_H__
|
||||
#define __NOUVEAU_DEBUG_H__
|
||||
|
||||
extern int nv_info_debug_level;
|
||||
|
||||
#define NV_DBG_FATAL 0
|
||||
#define NV_DBG_ERROR 1
|
||||
#define NV_DBG_WARN 2
|
||||
#define NV_DBG_INFO 3
|
||||
#define NV_DBG_INFO nv_info_debug_level
|
||||
#define NV_DBG_DEBUG 4
|
||||
#define NV_DBG_TRACE 5
|
||||
#define NV_DBG_PARANOIA 6
|
||||
#define NV_DBG_SPAM 7
|
||||
|
||||
#define NV_DBG_INFO_NORMAL 3
|
||||
#define NV_DBG_INFO_SILENT NV_DBG_DEBUG
|
||||
|
||||
#define nv_debug_level(a) nv_info_debug_level = NV_DBG_INFO_##a
|
||||
|
||||
#endif
|
||||
|
@ -6,27 +6,12 @@
|
||||
|
||||
struct nouveau_object;
|
||||
|
||||
#define NV_PRINTK_FATAL KERN_CRIT
|
||||
#define NV_PRINTK_ERROR KERN_ERR
|
||||
#define NV_PRINTK_WARN KERN_WARNING
|
||||
#define NV_PRINTK_INFO KERN_INFO
|
||||
#define NV_PRINTK_DEBUG KERN_DEBUG
|
||||
#define NV_PRINTK_PARANOIA KERN_DEBUG
|
||||
#define NV_PRINTK_TRACE KERN_DEBUG
|
||||
#define NV_PRINTK_SPAM KERN_DEBUG
|
||||
|
||||
extern int nv_printk_suspend_level;
|
||||
|
||||
#define NV_DBG_SUSPEND (nv_printk_suspend_level)
|
||||
#define NV_PRINTK_SUSPEND (nv_printk_level_to_pfx(nv_printk_suspend_level))
|
||||
|
||||
const char *nv_printk_level_to_pfx(int level);
|
||||
void __printf(4, 5)
|
||||
nv_printk_(struct nouveau_object *, const char *, int, const char *, ...);
|
||||
void __printf(3, 4)
|
||||
nv_printk_(struct nouveau_object *, int, const char *, ...);
|
||||
|
||||
#define nv_printk(o,l,f,a...) do { \
|
||||
if (NV_DBG_##l <= CONFIG_NOUVEAU_DEBUG) \
|
||||
nv_printk_(nv_object(o), NV_PRINTK_##l, NV_DBG_##l, f, ##a); \
|
||||
nv_printk_(nv_object(o), NV_DBG_##l, f, ##a); \
|
||||
} while(0)
|
||||
|
||||
#define nv_fatal(o,f,a...) nv_printk((o), FATAL, f, ##a)
|
||||
@ -37,16 +22,9 @@ nv_printk_(struct nouveau_object *, const char *, int, const char *, ...);
|
||||
#define nv_trace(o,f,a...) nv_printk((o), TRACE, f, ##a)
|
||||
#define nv_spam(o,f,a...) nv_printk((o), SPAM, f, ##a)
|
||||
|
||||
#define nv_suspend(o,f,a...) nv_printk((o), SUSPEND, f, ##a)
|
||||
|
||||
static inline void nv_suspend_set_printk_level(int level)
|
||||
{
|
||||
nv_printk_suspend_level = level;
|
||||
}
|
||||
|
||||
#define nv_assert(f,a...) do { \
|
||||
if (NV_DBG_FATAL <= CONFIG_NOUVEAU_DEBUG) \
|
||||
nv_printk_(NULL, NV_PRINTK_FATAL, NV_DBG_FATAL, f "\n", ##a); \
|
||||
nv_printk_(NULL, NV_DBG_FATAL, f "\n", ##a); \
|
||||
BUG_ON(1); \
|
||||
} while(0)
|
||||
|
||||
|
@ -2180,7 +2180,7 @@ nvbios_init(struct nouveau_subdev *subdev, bool execute)
|
||||
u16 data;
|
||||
|
||||
if (execute)
|
||||
nv_suspend(bios, "running init tables\n");
|
||||
nv_info(bios, "running init tables\n");
|
||||
while (!ret && (data = (init_script(bios, ++i)))) {
|
||||
struct nvbios_init init = {
|
||||
.subdev = subdev,
|
||||
|
@ -457,7 +457,7 @@ nouveau_display_suspend(struct drm_device *dev)
|
||||
|
||||
nouveau_display_fini(dev);
|
||||
|
||||
NV_SUSPEND(drm, "unpinning framebuffer(s)...\n");
|
||||
NV_INFO(drm, "unpinning framebuffer(s)...\n");
|
||||
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
|
||||
struct nouveau_framebuffer *nouveau_fb;
|
||||
|
||||
|
@ -462,16 +462,16 @@ nouveau_do_suspend(struct drm_device *dev)
|
||||
int ret;
|
||||
|
||||
if (dev->mode_config.num_crtc) {
|
||||
NV_SUSPEND(drm, "suspending display...\n");
|
||||
NV_INFO(drm, "suspending display...\n");
|
||||
ret = nouveau_display_suspend(dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
NV_SUSPEND(drm, "evicting buffers...\n");
|
||||
NV_INFO(drm, "evicting buffers...\n");
|
||||
ttm_bo_evict_mm(&drm->ttm.bdev, TTM_PL_VRAM);
|
||||
|
||||
NV_SUSPEND(drm, "waiting for kernel channels to go idle...\n");
|
||||
NV_INFO(drm, "waiting for kernel channels to go idle...\n");
|
||||
if (drm->cechan) {
|
||||
ret = nouveau_channel_idle(drm->cechan);
|
||||
if (ret)
|
||||
@ -484,7 +484,7 @@ nouveau_do_suspend(struct drm_device *dev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
NV_SUSPEND(drm, "suspending client object trees...\n");
|
||||
NV_INFO(drm, "suspending client object trees...\n");
|
||||
if (drm->fence && nouveau_fence(drm)->suspend) {
|
||||
if (!nouveau_fence(drm)->suspend(drm))
|
||||
return -ENOMEM;
|
||||
@ -496,7 +496,7 @@ nouveau_do_suspend(struct drm_device *dev)
|
||||
goto fail_client;
|
||||
}
|
||||
|
||||
NV_SUSPEND(drm, "suspending kernel object tree...\n");
|
||||
NV_INFO(drm, "suspending kernel object tree...\n");
|
||||
ret = nouveau_client_fini(&drm->client.base, true);
|
||||
if (ret)
|
||||
goto fail_client;
|
||||
@ -510,7 +510,7 @@ fail_client:
|
||||
}
|
||||
|
||||
if (dev->mode_config.num_crtc) {
|
||||
NV_SUSPEND(drm, "resuming display...\n");
|
||||
NV_INFO(drm, "resuming display...\n");
|
||||
nouveau_display_resume(dev);
|
||||
}
|
||||
return ret;
|
||||
@ -529,7 +529,6 @@ int nouveau_pmops_suspend(struct device *dev)
|
||||
if (drm_dev->mode_config.num_crtc)
|
||||
nouveau_fbcon_set_suspend(drm_dev, 1);
|
||||
|
||||
nv_suspend_set_printk_level(NV_DBG_INFO);
|
||||
ret = nouveau_do_suspend(drm_dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
@ -537,8 +536,6 @@ int nouveau_pmops_suspend(struct device *dev)
|
||||
pci_save_state(pdev);
|
||||
pci_disable_device(pdev);
|
||||
pci_set_power_state(pdev, PCI_D3hot);
|
||||
nv_suspend_set_printk_level(NV_DBG_DEBUG);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -548,15 +545,15 @@ nouveau_do_resume(struct drm_device *dev)
|
||||
struct nouveau_drm *drm = nouveau_drm(dev);
|
||||
struct nouveau_cli *cli;
|
||||
|
||||
NV_SUSPEND(drm, "re-enabling device...\n");
|
||||
NV_INFO(drm, "re-enabling device...\n");
|
||||
|
||||
nouveau_agp_reset(drm);
|
||||
|
||||
NV_SUSPEND(drm, "resuming kernel object tree...\n");
|
||||
NV_INFO(drm, "resuming kernel object tree...\n");
|
||||
nouveau_client_init(&drm->client.base);
|
||||
nouveau_agp_init(drm);
|
||||
|
||||
NV_SUSPEND(drm, "resuming client object trees...\n");
|
||||
NV_INFO(drm, "resuming client object trees...\n");
|
||||
if (drm->fence && nouveau_fence(drm)->resume)
|
||||
nouveau_fence(drm)->resume(drm);
|
||||
|
||||
@ -568,7 +565,7 @@ nouveau_do_resume(struct drm_device *dev)
|
||||
nouveau_pm_resume(dev);
|
||||
|
||||
if (dev->mode_config.num_crtc) {
|
||||
NV_SUSPEND(drm, "resuming display...\n");
|
||||
NV_INFO(drm, "resuming display...\n");
|
||||
nouveau_display_repin(dev);
|
||||
}
|
||||
|
||||
@ -592,19 +589,15 @@ int nouveau_pmops_resume(struct device *dev)
|
||||
return ret;
|
||||
pci_set_master(pdev);
|
||||
|
||||
nv_suspend_set_printk_level(NV_DBG_INFO);
|
||||
ret = nouveau_do_resume(drm_dev);
|
||||
if (ret) {
|
||||
nv_suspend_set_printk_level(NV_DBG_DEBUG);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
if (drm_dev->mode_config.num_crtc)
|
||||
nouveau_fbcon_set_suspend(drm_dev, 0);
|
||||
|
||||
nouveau_fbcon_zfill_all(drm_dev);
|
||||
if (drm_dev->mode_config.num_crtc)
|
||||
nouveau_display_resume(drm_dev);
|
||||
nv_suspend_set_printk_level(NV_DBG_DEBUG);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -614,12 +607,10 @@ static int nouveau_pmops_freeze(struct device *dev)
|
||||
struct drm_device *drm_dev = pci_get_drvdata(pdev);
|
||||
int ret;
|
||||
|
||||
nv_suspend_set_printk_level(NV_DBG_INFO);
|
||||
if (drm_dev->mode_config.num_crtc)
|
||||
nouveau_fbcon_set_suspend(drm_dev, 1);
|
||||
|
||||
ret = nouveau_do_suspend(drm_dev);
|
||||
nv_suspend_set_printk_level(NV_DBG_DEBUG);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -629,18 +620,14 @@ static int nouveau_pmops_thaw(struct device *dev)
|
||||
struct drm_device *drm_dev = pci_get_drvdata(pdev);
|
||||
int ret;
|
||||
|
||||
nv_suspend_set_printk_level(NV_DBG_INFO);
|
||||
ret = nouveau_do_resume(drm_dev);
|
||||
if (ret) {
|
||||
nv_suspend_set_printk_level(NV_DBG_DEBUG);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
if (drm_dev->mode_config.num_crtc)
|
||||
nouveau_fbcon_set_suspend(drm_dev, 0);
|
||||
nouveau_fbcon_zfill_all(drm_dev);
|
||||
if (drm_dev->mode_config.num_crtc)
|
||||
nouveau_display_resume(drm_dev);
|
||||
nv_suspend_set_printk_level(NV_DBG_DEBUG);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -844,6 +831,7 @@ static int nouveau_pmops_runtime_suspend(struct device *dev)
|
||||
if (nouveau_runtime_pm == 0)
|
||||
return -EINVAL;
|
||||
|
||||
nv_debug_level(SILENT);
|
||||
drm_kms_helper_poll_disable(drm_dev);
|
||||
vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_OFF);
|
||||
nouveau_switcheroo_optimus_dsm();
|
||||
@ -880,6 +868,7 @@ static int nouveau_pmops_runtime_resume(struct device *dev)
|
||||
nv_mask(device, 0x88488, (1 << 25), (1 << 25));
|
||||
vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_ON);
|
||||
drm_dev->switch_power_state = DRM_SWITCH_POWER_ON;
|
||||
nv_debug_level(NORMAL);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -153,7 +153,6 @@ nouveau_dev(struct drm_device *dev)
|
||||
int nouveau_pmops_suspend(struct device *);
|
||||
int nouveau_pmops_resume(struct device *);
|
||||
|
||||
#define NV_SUSPEND(cli, fmt, args...) nv_suspend((cli), fmt, ##args)
|
||||
#define NV_FATAL(cli, fmt, args...) nv_fatal((cli), fmt, ##args)
|
||||
#define NV_ERROR(cli, fmt, args...) nv_error((cli), fmt, ##args)
|
||||
#define NV_WARN(cli, fmt, args...) nv_warn((cli), fmt, ##args)
|
||||
|
Loading…
Reference in New Issue
Block a user