Messages in this thread | | | Date | Mon, 23 Nov 2009 19:32:20 +0100 | From | Ingo Molnar <> | Subject | Re: RFC: Put printk buffer in video ram |
| |
* Maxim Levitsky <maximlevitsky@gmail.com> wrote:
> On Sun, 2009-11-22 at 14:15 +0200, Maxim Levitsky wrote: > > On Sun, 2009-11-22 at 09:25 +0100, Ingo Molnar wrote: > > > * Frederic Weisbecker <fweisbec@gmail.com> wrote: > > > > > > > On Sun, Nov 22, 2009 at 04:05:06AM +0200, Maxim Levitsky wrote: > > > > > After doing some successful debugging by placing printk buffer in video > > > > > ram, here I publish cleaned version of it. > > > > > > > > > > I discovered that on my system video ram isn't cleared on reboot, and I > > > > > took advantage of that by placing printk buffer directly there. > > > > > This allows to capture oopses/panicks almost from everywhere. > > > > > It is also very simple to setup. > > Few more thoughts: > > First of all, if I implement this as a console driver, I won't be able > to capture all kernel log, but only from the point I register the > console.
Adding an early console driver would solve this, right?
There's an earlyprintk=..,keep option that also allows such a console driver to be active during normal system operation - that way you could get this feature with a single console driver.
> My implementation, also isn't set up very early, but I copy already > written log to the memory buffer. > > Problem of automatic unregistration isn't a problem, its just a feature, > I could skip using. > > Secondary, I found out that system ram isn't cleared ether on my > notebook, however I found out that I can't reserve small memory range > with 'memmap' kernel parameter. System just panics. > I used for reference 'memmap=2M$0x60000000' > My system has 2GB of memory. > > I could reserve the memory same way using the code, but it would > probably fail in same way. Also I could try early reservations, but I am > not sure I can reserve _any_ address range. I test this. > > I think that patches to put printk buffer at predefined area in system > ram were once posted on LKML.
The way to early-reserve memory on x86 is to use find_e820_area() + reserve_early().
Ingo
| |