KERN_PCI
KERN_ACPI
v4: fix some checkpatch error and warning
v5: add default with DEFINE_LOGLEVE_SETUP_DEF
KERN_APIC
v6: set the default only one time
v7: expand msg_loglevel to 2 digi bits. so KERN_APIC could start from 10
usage:
in .h to have
#define KERN_PCI "<pci>"
in .c to have
DEFINE_LOGLEVEL_SETUP(pci, KERN_PCI, "pci:");
then could use
printk(KERN_DEBUG KERN_PCI fmt, ...);
and command line
loglevel=3,pci:8
you can add different printk to different files of one subsys if you like
not just one susbsys one tag, and don't need to update kernel.h to add more tags
YH
--
so could make subsys easy to add loglevel and xxx_printk
v2: make it more genric, so subsys user only need to two line macro
v3: add back nameStr, so could find out iommu: and iommu_gart: and etc
v4: use printk intead of pci_printk
v5: fix checkpatch error and warning
v6: add DEFINE_LOGLEVEL_SETUP_DEF to take default
v7: call tag_loglevel_setup only one time, so could take several loglevel like
loglevel=4 loglevel=acpi:8 loglevel=pci:8 loglevel=apic:8 is the same as
loglevel=4,acpi:8,pci:8,apic:8
v8: add _SPEW, _EXTRA
expand msg_level to 2 digi bits
call tag_name_level_setup second time if user change console_loglevel
add get_tag_level, so could use it to find out current level of spcified tag
usage:
in .h to have
#define KERN_PCI "<pci>"
in .c to have
DEFINE_LOGLEVEL_SETUP(pci, KERN_PCI, "pci:");
then could use
printk(KERN_DEBUG KERN_PCI fmt, ...);
and command line
loglevel=pci:8
you can add different printk to different files of one subsys if you like
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
---
arch/x86/kernel/vmlinux_32.lds.S | 1
arch/x86/kernel/vmlinux_64.lds.S | 2
include/asm-generic/vmlinux.lds.h | 8 +
include/linux/init.h | 22 +++++
include/linux/kernel.h | 4
init/main.c | 156 ++++++++++++++++++++++++++++++++++++--
kernel/printk.c | 90 ++++++++++++++++++---
7 files changed, 259 insertions(+), 24 deletions(-)
Index: linux-2.6/arch/x86/kernel/vmlinux_32.lds.S
===================================================================
--- linux-2.6.orig/arch/x86/kernel/vmlinux_32.lds.S
+++ linux-2.6/arch/x86/kernel/vmlinux_32.lds.S
@@ -145,6 +145,7 @@ SECTIONS
*(.x86_cpu_dev.init)
__x86_cpu_dev_end = .;
}
+ LOGLEVEL_SETUP_INIT(8)
DYN_ARRAY_INIT(8)
SECURITY_INIT
. = ALIGN(4);
Index: linux-2.6/arch/x86/kernel/vmlinux_64.lds.S
===================================================================
--- ...use DEFINE_LOGLEVEL_SETUP to set loglevel for pci
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
---
drivers/pci/pci.c | 2 ++
include/linux/pci.h | 2 ++
2 files changed, 4 insertions(+)
Index: linux-2.6/drivers/pci/pci.c
===================================================================
--- linux-2.6.orig/drivers/pci/pci.c
+++ linux-2.6/drivers/pci/pci.c
@@ -1953,6 +1953,8 @@ static int __devinit pci_setup(char *str
}
early_param("pci", pci_setup);
+DEFINE_LOGLEVEL_SETUP(pci, KERN_PCI, "pci:");
+
device_initcall_sync(pci_init);
EXPORT_SYMBOL(pci_reenable_device);
Index: linux-2.6/include/linux/pci.h
===================================================================
--- linux-2.6.orig/include/linux/pci.h
+++ linux-2.6/include/linux/pci.h
@@ -55,6 +55,8 @@
/* Include the ID list */
#include <linux/pci_ids.h>
+#define KERN_PCI "<pci>"
+
/* pci_slot represents a physical slot */
struct pci_slot {
struct pci_bus *bus; /* The bus this slot is on */
--
v2: use printk(KERN_DEBUG KERN_PCI ...
v3: fix checkpatch error and warning
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
---
drivers/pci/probe.c | 28 +++++++++++++++++-----------
1 file changed, 17 insertions(+), 11 deletions(-)
Index: linux-2.6/drivers/pci/probe.c
===================================================================
--- linux-2.6.orig/drivers/pci/probe.c
+++ linux-2.6/drivers/pci/probe.c
@@ -304,7 +304,8 @@ static int __pci_read_base(struct pci_de
} else {
res->start = l64;
res->end = l64 + sz64;
- printk(KERN_DEBUG "PCI: %s reg %x 64bit mmio: [%llx, %llx]\n",
+ printk(KERN_DEBUG KERN_PCI
+ "PCI: %s reg %x 64bit mmio: [%llx, %llx]\n",
pci_name(dev), pos, res->start, res->end);
}
} else {
@@ -315,9 +316,10 @@ static int __pci_read_base(struct pci_de
res->start = l;
res->end = l + sz;
- printk(KERN_DEBUG "PCI: %s reg %x %s: [%llx, %llx]\n", pci_name(dev),
- pos, (res->flags & IORESOURCE_IO) ? "io port":"32bit mmio",
- res->start, res->end);
+ printk(KERN_DEBUG KERN_PCI "PCI: %s reg %x %s: [%llx, %llx]\n",
+ pci_name(dev), pos,
+ (res->flags & IORESOURCE_IO) ? "io port" : "32bit mmio",
+ res->start, res->end);
}
out:
@@ -388,8 +390,9 @@ void __devinit pci_read_bridge_bases(str
res->start = base;
if (!res->end)
res->end = limit + 0xfff;
- printk(KERN_DEBUG "PCI: bridge %s io port: [%llx, %llx]\n",
- pci_name(dev), res->start, res->end);
+ printk(KERN_DEBUG KERN_PCI
+ "PCI: bridge %s io port: [%llx, %llx]\n",
+ pci_name(dev), res->start, res->end);
}
res = child->resource[1];
@@ -401,8 +404,9 @@ void __devinit pci_read_bridge_bases(str
res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM;
res->start = base;
res->end = limit + 0xfffff;
- printk(KERN_DEBUG "PCI: bridge %s 32bit mmio: [%llx, %llx]\n",
- pci_name(dev), res->start, res->end);
+ printk(KERN_DEBUG KERN_PCI
+ "PCI: bridge %s 32bit mmio: [%llx, ...use DEFINE_LOGLEVEL_SETUP to set loglevel for acpi
v2: use <acpi, "acpi:"> instead
v3: use KERN_ACPI
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
---
drivers/acpi/osl.c | 2 ++
include/linux/acpi.h | 1 +
2 files changed, 3 insertions(+)
Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c
+++ linux-2.6/drivers/acpi/osl.c
@@ -75,6 +75,8 @@ EXPORT_SYMBOL(acpi_in_debugger);
extern char line_buf[80];
#endif /*ENABLE_DEBUGGER */
+DEFINE_LOGLEVEL_SETUP(acpi, KERN_ACPI, "acpi:");
+
static unsigned int acpi_irq_irq;
static acpi_osd_handler acpi_irq_handler;
static void *acpi_irq_context;
Index: linux-2.6/include/linux/acpi.h
===================================================================
--- linux-2.6.orig/include/linux/acpi.h
+++ linux-2.6/include/linux/acpi.h
@@ -43,6 +43,7 @@
#include <asm/acpi.h>
#include <linux/dmi.h>
+#define KERN_ACPI "<acpi>"
enum acpi_irq_model_id {
ACPI_IRQ_MODEL_PIC = 0,
--
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
---
drivers/acpi/numa.c | 9 +++++++++
1 file changed, 9 insertions(+)
Index: linux-2.6/drivers/acpi/numa.c
===================================================================
--- linux-2.6.orig/drivers/acpi/numa.c
+++ linux-2.6/drivers/acpi/numa.c
@@ -150,6 +150,15 @@ static __init int slit_valid(struct acpi
{
int i, j;
int d = slit->locality_count;
+ printk(KERN_DEBUG KERN_ACPI "ACPI: SLIT: nodes = %d\n", d);
+ for (i = 0; i < d; i++) {
+ printk(KERN_DEBUG KERN_ACPI " ");
+ for (j = 0; j < d; j++) {
+ u8 val = slit->entry[d*i + j];
+ printk(KERN_CONT KERN_ACPI " %d", val);
+ }
+ printk(KERN_CONT KERN_ACPI "\n");
+ }
for (i = 0; i < d; i++) {
for (j = 0; j < d; j++) {
u8 val = slit->entry[d*i + j];
--
and kill apic_printk
using loglevel=apic:8 intead
v2: make it quiet = 10, verbose = 11, debug = 12
use get_tag_level to exit some print functions
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
---
Documentation/kernel-parameters.txt | 6
arch/x86/kernel/apic.c | 108 +++++-------
arch/x86/kernel/io_apic.c | 241 +++++++++++++---------------
arch/x86/kernel/mpparse.c | 10 -
arch/x86/kernel/smpboot.c | 11 -
include/asm-x86/apic.h | 24 +-
include/asm-x86/es7000/wakecpu.h | 6
include/asm-x86/mach-default/mach_wakecpu.h | 6
8 files changed, 188 insertions(+), 224 deletions(-)
Index: linux-2.6/Documentation/kernel-parameters.txt
===================================================================
--- linux-2.6.orig/Documentation/kernel-parameters.txt
+++ linux-2.6/Documentation/kernel-parameters.txt
@@ -306,12 +306,6 @@ and is between 256 and 4096 characters.
not play well with APC CPU idle - disable it if you have
APC and your system crashes randomly.
- apic= [APIC,i386] Advanced Programmable Interrupt Controller
- Change the output verbosity whilst booting
- Format: { quiet (default) | verbose | debug }
- Change the amount of debugging information output
- when initialising the APIC and IO-APIC components.
-
apm= [APM] Advanced Power Management
See header of arch/x86/kernel/apm_32.c.
Index: linux-2.6/arch/x86/kernel/apic.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/apic.c
+++ linux-2.6/arch/x86/kernel/apic.c
@@ -58,6 +58,8 @@
# error SPURIOUS_APIC_VECTOR definition error
#endif
+DEFINE_LOGLEVEL_SETUP(apic, KERN_APIC, "apic:");
+
#ifdef CONFIG_X86_32
/*
* Knob to control our willingness to enable the local APIC.
@@ -123,8 +125,6 @@ char system_vectors[NR_VECTORS] = { [0 .
/*
* Debug level, exported for io_apic.c
...Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
---
drivers/pci/quirks.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
Index: linux-2.6/drivers/pci/quirks.c
===================================================================
--- linux-2.6.orig/drivers/pci/quirks.c
+++ linux-2.6/drivers/pci/quirks.c
@@ -1689,8 +1689,7 @@ static void pci_do_fixups(struct pci_dev
if ((f->vendor == dev->vendor || f->vendor == (u16) PCI_ANY_ID) &&
(f->device == dev->device || f->device == (u16) PCI_ANY_ID)) {
#ifdef DEBUG
- dev_dbg(&dev->dev, "calling ");
- print_fn_descriptor_symbol("%s\n", f->hook);
+ dev_dbg(&dev->dev, "calling %pF\n", f->hook);
#endif
f->hook(dev);
}
--
use DEFINE_LOGLEVEL_SETUP to set loglevel for dev so could use loglevel=4,dev:8 it will only print out info with dev_printk Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> --- drivers/base/core.c | 2 ++ include/linux/device.h | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) Index: linux-2.6/drivers/base/core.c =================================================================== --- linux-2.6.orig/drivers/base/core.c +++ linux-2.6/drivers/base/core.c @@ -26,6 +26,8 @@ #include "base.h" #include "power/power.h" +DEFINE_LOGLEVEL_SETUP(dev, KERN_DEV, "dev:"); + int (*platform_notify)(struct device *dev) = NULL; int (*platform_notify_remove)(struct device *dev) = NULL; static struct kobject *dev_kobj; Index: linux-2.6/include/linux/device.h =================================================================== --- linux-2.6.orig/include/linux/device.h +++ linux-2.6/include/linux/device.h @@ -518,10 +518,12 @@ extern void device_shutdown(void); /* drivers/base/sys.c */ extern void sysdev_shutdown(void); +#define KERN_DEV "<dev>" + /* debugging and troubleshooting/diagnostic helpers. */ extern const char *dev_driver_string(const struct device *dev); #define dev_printk(level, dev, format, arg...) \ - printk(level "%s %s: " format , dev_driver_string(dev) , \ + printk(level KERN_DEV "%s %s: " format , dev_driver_string(dev) , \ dev_name(dev) , ## arg) #define dev_emerg(dev, format, arg...) \ @@ -538,6 +540,8 @@ extern const char *dev_driver_string(con dev_printk(KERN_NOTICE , dev , format , ## arg) #define dev_info(dev, format, arg...) \ dev_printk(KERN_INFO , dev , format , ## arg) +#define dev_debug(dev, format, arg...) \ + dev_printk(KERN_DEBUG , dev , format , ## arg) #ifdef DEBUG #define dev_dbg(dev, format, arg...) \ --
| Greg KH | Og dreams of kernels |
| Jens Axboe | [PATCH 31/33] Fusion: sg chaining support |
| Arnd Bergmann | Re: finding your own dead "CONFIG_" variables |
| Mark Brown | [PATCH 2/2] Subject: natsemi: Allow users to disable workaround for DspCfg reset |
| Tony Breeds | [LGUEST] Look in object dir for .config |
git: | |
| Brian Downing | Re: Git in a Nutshell guide |
| John Benes | Re: master has some toys |
| Matthias Lederhofer | [PATCH 4/7] introduce GIT_WORK_TREE to specify the work tree |
| Alexander Sulfrian | [RFC/PATCH] RE: git calls SSH_ASKPASS even if DISPLAY is not set |
| Junio C Hamano | Re: Rss produced by git is not valid xml? |
| Linux Kernel Mailing List | iSeries: fix section mismatch in iseries_veth |
| Linux Kernel Mailing List | ixbge: remove TX lo |
