You can subscribe to this list here.
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(32) |
Jun
(66) |
Jul
(102) |
Aug
(78) |
Sep
(106) |
Oct
(137) |
Nov
(147) |
Dec
(147) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2010 |
Jan
(71) |
Feb
(139) |
Mar
(86) |
Apr
(76) |
May
(57) |
Jun
(10) |
Jul
(12) |
Aug
(6) |
Sep
(8) |
Oct
(12) |
Nov
(12) |
Dec
(18) |
| 2011 |
Jan
(16) |
Feb
(19) |
Mar
(3) |
Apr
(1) |
May
(16) |
Jun
(17) |
Jul
(74) |
Aug
(22) |
Sep
(18) |
Oct
(24) |
Nov
(21) |
Dec
(30) |
| 2012 |
Jan
(31) |
Feb
(16) |
Mar
(22) |
Apr
(25) |
May
(18) |
Jun
(13) |
Jul
(83) |
Aug
(49) |
Sep
(20) |
Oct
(60) |
Nov
(35) |
Dec
(28) |
| 2013 |
Jan
(39) |
Feb
(61) |
Mar
(35) |
Apr
(21) |
May
(45) |
Jun
(56) |
Jul
(20) |
Aug
(9) |
Sep
(10) |
Oct
(31) |
Nov
(8) |
Dec
(4) |
| 2014 |
Jan
(6) |
Feb
(7) |
Mar
(7) |
Apr
(6) |
May
(4) |
Jun
(8) |
Jul
(5) |
Aug
(2) |
Sep
(4) |
Oct
(4) |
Nov
(11) |
Dec
(5) |
| 2015 |
Jan
(4) |
Feb
(4) |
Mar
(3) |
Apr
(4) |
May
(9) |
Jun
(4) |
Jul
(15) |
Aug
(8) |
Sep
(16) |
Oct
(18) |
Nov
(15) |
Dec
(7) |
| 2016 |
Jan
(20) |
Feb
(9) |
Mar
(15) |
Apr
(24) |
May
(16) |
Jun
(28) |
Jul
(22) |
Aug
(23) |
Sep
(18) |
Oct
(30) |
Nov
(40) |
Dec
(9) |
| 2017 |
Jan
(1) |
Feb
(8) |
Mar
(37) |
Apr
(26) |
May
(25) |
Jun
(46) |
Jul
(24) |
Aug
(9) |
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <val...@vt...> - 2012-07-21 20:52:30
|
On Thu, 19 Jul 2012 21:11:44 -0000, Seiji Aguchi said: > [Solution] > To avoid losing a critical message, this patchset is based on a following concept. > - A basic policy is _not_ to overwrite existing entries. > > - However, if kernel panics while a system is rebooting, a critical message > can't be saved by the policy above. > (In this case, panic message is critical.) OK, system boots in "overwrite mode", and when done booting, we go into "non-overwrite mode". Makes sense to me. Only part I'm missing is how/when/why we leave overwrite mode - what makes the change, and how? (If I missed an ioctl or /sys entry or something that userspace toggles to say "I'll take care of it from here", please point me at it and I'll go re-read after I find some more caffeine ;) |
|
From: Seiji A. <sei...@hd...> - 2012-07-20 18:49:23
|
Tony, > The big question is what happens when EFI runs out of space. According to EFI specification, set_variable service returns EFI_OUT_OF_RESOURCES. If it doesn't work, the firmware should be fixed. >Matthew avoided the question by implementing the "just one record" policy. I think we need to ask Matthew the reason why he introduced "just one record" policy rather than guessing it by reading his original source code. Seiji > -----Original Message----- > From: Luck, Tony [mailto:ton...@in...] > Sent: Friday, July 20, 2012 12:56 PM > To: Don Zickus; Seiji Aguchi > Cc: lin...@vg...; lin...@vg...; mi...@go...; Matthew Garrett (mj...@re...); dle- > de...@li...; Satoru Moriya > Subject: RE: [RFC][PATCH v2 2/3] Hold multiple logs > > > > What is the harm of not using this and just letting the number be > > > infinite (or until EFI runs out of space)? Is it a big deal if extra failures are logged? > > The big question is what happens when EFI runs out of space. Matthew avoided the question by implementing the "just one record" > policy. Was this because he has some specific knowledge about what happens, or does he just have an irrational[1] fear that the EFI > implementation will handle this poorly? > > Without some tests on at least a couple of different platforms that show that EFI handles out of space conditions gracefully, I continue > to have concerns. > > -Tony > > [1] Perhaps his fears are rational given how many other places he has found EFI not doing what we'd expect or want. |
|
From: Luck, T. <ton...@in...> - 2012-07-20 16:56:40
|
> > What is the harm of not using this and just letting the number be infinite (or until EFI runs out of space)? Is it a big deal if extra failures > > are logged? The big question is what happens when EFI runs out of space. Matthew avoided the question by implementing the "just one record" policy. Was this because he has some specific knowledge about what happens, or does he just have an irrational[1] fear that the EFI implementation will handle this poorly? Without some tests on at least a couple of different platforms that show that EFI handles out of space conditions gracefully, I continue to have concerns. -Tony [1] Perhaps his fears are rational given how many other places he has found EFI not doing what we'd expect or want. |
|
From: Don Z. <dz...@re...> - 2012-07-20 14:29:45
|
On Fri, Jul 20, 2012 at 01:24:38PM +0000, Seiji Aguchi wrote: > > > What is the harm of not using this and just letting the number be infinite (or until EFI runs out of space)? Is it a big deal if extra failures > > are logged? > > > There may be someone using NVRAM for other purposes. > Actually, we have the user interface, /sys/firmware/efi/vars/new_vars, del_vars. > > In this case, they want to avoid filling with unneeded logs. Sure, which is why it needs to be cleaned out regularly. This isn't much different than with /var/logs or even /boot. The former can suck up lots of disk space for no reason and the later can use up limited space if you install to many kernels. I don't know, I am not a fan of this policy in the kernel, I would rather keep it simple, like an on/off switch. If you decide you want to use efi for logging than you better make sure you have an app to clean it up. Otherwise the user shouldn't turn it on. Creating rules like this seems to be complicating things to me IMHO. But I will gladly defer to someone else's judgement. Cheers, Don > > > The hope would be a daemon would clear the old logs out and you never run out of space. > > In most case > But as Tony mentioned, NVRAM may be filled with multiple oops even if we have the daemon. > > Seiji |
|
From: Seiji A. <sei...@hd...> - 2012-07-20 13:43:02
|
> > The hope would be a daemon would clear the old logs out and you never run out of space. > > In most case > But as Tony mentioned, NVRAM may be filled with multiple oops even if we have the daemon. Oops... I meant that in most case, the daemon can erase entries. But as Tony mentioned, NVRAM may be filled with multiple oops even if we have the daemon. |
|
From: Seiji A. <sei...@hd...> - 2012-07-20 13:24:52
|
> What is the harm of not using this and just letting the number be infinite (or until EFI runs out of space)? Is it a big deal if extra failures > are logged? There may be someone using NVRAM for other purposes. Actually, we have the user interface, /sys/firmware/efi/vars/new_vars, del_vars. In this case, they want to avoid filling with unneeded logs. > The hope would be a daemon would clear the old logs out and you never run out of space. In most case But as Tony mentioned, NVRAM may be filled with multiple oops even if we have the daemon. Seiji |
|
From: Don Z. <dz...@re...> - 2012-07-20 03:03:40
|
On Fri, Jul 20, 2012 at 12:39:24AM +0000, Seiji Aguchi wrote: > > Thank you for describing this in detail. > > > Yes - if the OOPs is instrumental in the path leading to the hang/panic - then the OOPS is the first place to look for the root cause of > > the problem. But it will be a case by case analysis. > > Sometimes the OOPS might be unconnected. If possible we'd like to log more information to allow detective work to decide whether > > there is a connection. But as I mentioned above there are severe limits to how much better things are by storing more information. > > I understand the reason why you think 3 or 4 logs are reasonable. > There are some cases 2nd or 3rd oops is critical.... > > I have some enterprise customers who are sensitive for a software failure and specify panic_on_oops=1. > In this case, they don't need 3,4 logs. 2 logs are enough. > > So, kernel parameter should be as follows. > > Log_num =1 > - For users who want to hold just one log. > > Log_num=2 > - For users who can handle multiple logs and 1st oops is concerned. (by specifying panic_on_oops=1) > > Log_num=3,4 > - for users who care about 2nd or 3rd oops. > > Log_num=5 or more > Invalid value. What is the harm of not using this and just letting the number be infinite (or until EFI runs out of space)? Is it a big deal if extra failures are logged? The hope would be a daemon would clear the old logs out and you never run out of space. Cheers, Don |
Cabestan. Layout Doble Asegúrate de no perderte ninguna oferta, añade of...@gl... a tu lista de contactos. Si no ves correctamente las imágenes, pulsa [ http://email.globalbono.com/E19072012164518.cfm?WL=613&WS=132430_6215484&WA=198 ] aquí [ http://email.globalbono.com/Go/index.cfm?WL=564&WS=132430_6215484&WA=198 ] Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=198 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=198 ] [ http://email.globalbono.com/Go/index.cfm?WL=470&WS=132430_6215484&WA=198 ] 61% Dto. Llavero Alcoholímetro Controla la cantidad de alcohol que has ingerido antes de ponerte a conducir. Éste descu... 11,25 [ http://email.globalbono.com/Go/index.cfm?WL=470&WS=132430_6215484&WA=198 ] Antes 29,00Dto: 61% Ahorro: 17,75 [ http://email.globalbono.com/Go/index.cfm?WL=452&WS=132430_6215484&WA=198 ] 49% Dto. Piedras Para Bebida Piedras para que mantengas tus bebidas frías o calientes, como tú prefieras, mételas a ... 22,82 [ http://email.globalbono.com/Go/index.cfm?WL=452&WS=132430_6215484&WA=198 ] Antes 45,00Dto: 49% Ahorro: 22,18 [ http://email.globalbono.com/Go/index.cfm?WL=145&WS=132430_6215484&WA=198 ] 52% Dto. Botellero Carrusel Botellero giratorio para que tengas siempre a mano tus vinos preferidos, en un muestrari... 23,53 [ http://email.globalbono.com/Go/index.cfm?WL=145&WS=132430_6215484&WA=198 ] Antes 49,00Dto: 52% Ahorro: 25,47 [ http://email.globalbono.com/Go/index.cfm?WL=506&WS=132430_6215484&WA=198 ] 36% Dto. Siéntete como Pez en el Agua en el Aquarium de Barcelona Porque sin duda es una experiencia como nunca antes has tenido, te invitamos a que camin... 38,00 [ http://email.globalbono.com/Go/index.cfm?WL=506&WS=132430_6215484&WA=198 ] Antes 59,00Dto: 36% Ahorro: 21,00 [ http://email.globalbono.com/Go/index.cfm?WL=472&WS=132430_6215484&WA=198 ] 73% Dto. Cigarrillo Electrónico Si deseas dejar de fumar, éste es el aliado adecuado. Calmará esa costumbre de ponert... 10,49 [ http://email.globalbono.com/Go/index.cfm?WL=472&WS=132430_6215484&WA=198 ] Antes 39,00Dto: 73% Ahorro: 28,51 [ http://email.globalbono.com/Go/index.cfm?WL=504&WS=132430_6215484&WA=198 ] 63% Dto. Plantillas Viscoelásticas Camina, o estate de pie durante horas, sin dolor ni molestias, con estas plantillas visc... 5,59 [ http://email.globalbono.com/Go/index.cfm?WL=504&WS=132430_6215484&WA=198 ] Antes 15,00Dto: 63% Ahorro: 9,41 [ http://email.globalbono.com/Go/index.cfm?WL=475&WS=132430_6215484&WA=198 ] 46% Dto. Noche de Mojitos y Música en Vivo en Algeciras Disfruta de la noche gaditana, de buena música en vivo, y del mejor ambiente en la Sala ... 35,00 [ http://email.globalbono.com/Go/index.cfm?WL=475&WS=132430_6215484&WA=198 ] Antes 65,00Dto: 46% Ahorro: 30,00 [ http://email.globalbono.com/Go/index.cfm?WL=468&WS=132430_6215484&WA=198 ] 37% Dto. Lorca, Abierta por Restauración. Sigue los Trabajos de Reconstrucción en Primera Persona Ven a Lorca a seguir una ruta por las iglesias en restauración, visita los monumentos má... 44,00 [ http://email.globalbono.com/Go/index.cfm?WL=468&WS=132430_6215484&WA=198 ] Antes 70,00Dto: 37% Ahorro: 26,00 [ http://email.globalbono.com/Go/index.cfm?WL=503&WS=132430_6215484&WA=198 ] 52% Dto. Organizador de Zapatos Ten organizados tus zapatos, por pares, de una forma de lo más práctica, con éste zapate... 9,10 [ http://email.globalbono.com/Go/index.cfm?WL=503&WS=132430_6215484&WA=198 ] Antes 19,00Dto: 52% Ahorro: 9,90 [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=198 ] 44% Dto. Valencia y su Albufera, Conócela en Barca, Descansa en Hotel Cuatro Estrellas Valencia no es sólo playa. Es cultura, museos y arquitectura. Y es también su Albufera. ... 35,00 [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=198 ] Antes 63,00Dto: 44% Ahorro: 28,00 De conformidad con lo que establece la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal, le informamos que sus datos personales serán incorporados a un fichero bajo la responsabilidad de GlobalBono, con la finalidad de poder atender los compromisos derivados de la relación que mantenemos con usted. Puede ejercer sus derechos de acceso, cancelación, rectificación y oposición mediante un escrito a la dirección email in...@gl.... Si en el plazo de 30 días no nos comunica lo contrario, entenderemos que los datos no han sido modificados, que se compromete a notificarnos cualquier variación y que tenemos el consentimiento para utilizarlos a fin de poder fidelizar la relación entre las partes. ¿Quieres dejar de recibir este email? Haz click [ http://email.globalbono.com/baja/form_baja_GB.cfm?WL=182&WS=132430_6215484&WA=198 ] aquí. |
|
From: Seiji A. <sei...@hd...> - 2012-07-20 00:39:41
|
Thank you for describing this in detail. > Yes - if the OOPs is instrumental in the path leading to the hang/panic - then the OOPS is the first place to look for the root cause of > the problem. But it will be a case by case analysis. > Sometimes the OOPS might be unconnected. If possible we'd like to log more information to allow detective work to decide whether > there is a connection. But as I mentioned above there are severe limits to how much better things are by storing more information. I understand the reason why you think 3 or 4 logs are reasonable. There are some cases 2nd or 3rd oops is critical.... I have some enterprise customers who are sensitive for a software failure and specify panic_on_oops=1. In this case, they don't need 3,4 logs. 2 logs are enough. So, kernel parameter should be as follows. Log_num =1 - For users who want to hold just one log. Log_num=2 - For users who can handle multiple logs and 1st oops is concerned. (by specifying panic_on_oops=1) Log_num=3,4 - for users who care about 2nd or 3rd oops. Log_num=5 or more Invalid value. If there is misunderstanding, please let me know. Seiji > -----Original Message----- > From: Luck, Tony [mailto:ton...@in...] > Sent: Thursday, July 19, 2012 7:42 PM > To: Seiji Aguchi; lin...@vg...; lin...@vg...; mi...@go...; dz...@re...; Matthew > Garrett (mj...@re...) > Cc: dle...@li...; Satoru Moriya > Subject: RE: [RFC][PATCH v2 2/3] Hold multiple logs > > > If you are concerned about multiple OOPS case, I think an user app which logs from /dev/pstore to /var/log should be developed. > > Agreed - we need an app/daemon to do this. > > > Once it is developed, we don't need to care about multiple oops case and the appropriate number is two. > > Only if you can guarantee that the app/daemon will run and save the first OOPS before the next occurs. Even if the system were > running normally this might be difficult to achieve.. but in this case we know the system isn't running normally (it just OOPSed twice!). > > However - there is progressively less value in collecting additional consecutive OOPS. Perhaps one is enough 90% or even 99% of the > time. I'm naturally paranoid so having two or three would make me feel happy that most of the remaining 10% or 1% of the cases > were covered. > > > - In case where system is workable after oops. > > The user app will erase an entry in NVRAM. > > And we can get the message via /var/log. > > Yes - the system can keep running after many types of OOPs - so the OOPS will be logged in /var/log (or by the app/daemon copying > from pstore, or both). > > > - In case where system hangs up or panics due to the oops. > > Oops is the critical message and we don't need care about subsequent events. > > Yes - if the OOPs is instrumental in the path leading to the hang/panic - then the OOPS is the first place to look for the root cause of > the problem. But it will be a case by case analysis. > Sometimes the OOPS might be unconnected. If possible we'd like to log more information to allow detective work to decide whether > there is a connection. But as I mentioned above there are severe limits to how much better things are by storing more information. > > -Tony |
|
From: Luck, T. <ton...@in...> - 2012-07-19 23:42:34
|
> If you are concerned about multiple OOPS case, I think an user app which logs from /dev/pstore to /var/log should be developed. Agreed - we need an app/daemon to do this. > Once it is developed, we don't need to care about multiple oops case and the appropriate number is two. Only if you can guarantee that the app/daemon will run and save the first OOPS before the next occurs. Even if the system were running normally this might be difficult to achieve ... but in this case we know the system isn't running normally (it just OOPSed twice!). However - there is progressively less value in collecting additional consecutive OOPS. Perhaps one is enough 90% or even 99% of the time. I'm naturally paranoid so having two or three would make me feel happy that most of the remaining 10% or 1% of the cases were covered. > - In case where system is workable after oops. > The user app will erase an entry in NVRAM. > And we can get the message via /var/log. Yes - the system can keep running after many types of OOPs - so the OOPS will be logged in /var/log (or by the app/daemon copying from pstore, or both). > - In case where system hangs up or panics due to the oops. > Oops is the critical message and we don't need care about subsequent events. Yes - if the OOPs is instrumental in the path leading to the hang/panic - then the OOPS is the first place to look for the root cause of the problem. But it will be a case by case analysis. Sometimes the OOPS might be unconnected. If possible we'd like to log more information to allow detective work to decide whether there is a connection. But as I mentioned above there are severe limits to how much better things are by storing more information. -Tony |
|
From: Seiji A. <sei...@hd...> - 2012-07-19 23:08:33
|
> > I think that 3 or 4 logs should be plenty to cover almost all situations. E.g. > with 3 logs you could capture 2 OOPS (and perhaps miss some other OOPS) and then get the final panic that kills the system. Messier > crashes are of course possible ... but that would give lots of clues on where the problems lie. > Thank you for letting my know your idea. Let me explain my opinion. If you are concerned about multiple OOPS case, I think an user app which logs from /dev/pstore to /var/log should be developed. Once it is developed, we don't need to care about multiple oops case and the appropriate number is two. - In case where system is workable after oops. The user app will erase an entry in NVRAM. And we can get the message via /var/log. - In case where system hangs up or panics due to the oops. Oops is the critical message and we don't need care about subsequent events. What do you think? > If you don't know what is the appropriate number ... then how will users decide? We should really give them some guidance ... > especially if there are odd problems[1] if they pick a number that is too big. You are right. There is no user app above right now. So, I was in stuck... But I understand I shouldn't have introduce efi_pstore_log_num. Seiji |
Cabestan. Layout Doble Asegúrate de no perderte ninguna oferta, añade of...@gl... a tu lista de contactos. Si no ves correctamente las imágenes, pulsa [ http://email.globalbono.com/E19072012164518.cfm?WL=613&WS=132430_6215484&WA=197 ] aquí [ http://email.globalbono.com/Go/index.cfm?WL=564&WS=132430_6215484&WA=197 ] Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=197 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=197 ] [ http://email.globalbono.com/Go/index.cfm?WL=470&WS=132430_6215484&WA=197 ] 61% Dto. Llavero Alcoholímetro Controla la cantidad de alcohol que has ingerido antes de ponerte a conducir. Éste descu... 11,25 [ http://email.globalbono.com/Go/index.cfm?WL=470&WS=132430_6215484&WA=197 ] Antes 29,00Dto: 61% Ahorro: 17,75 [ http://email.globalbono.com/Go/index.cfm?WL=452&WS=132430_6215484&WA=197 ] 49% Dto. Piedras Para Bebida Piedras para que mantengas tus bebidas frías o calientes, como tú prefieras, mételas a ... 22,82 [ http://email.globalbono.com/Go/index.cfm?WL=452&WS=132430_6215484&WA=197 ] Antes 45,00Dto: 49% Ahorro: 22,18 [ http://email.globalbono.com/Go/index.cfm?WL=145&WS=132430_6215484&WA=197 ] 52% Dto. Botellero Carrusel Botellero giratorio para que tengas siempre a mano tus vinos preferidos, en un muestrari... 23,53 [ http://email.globalbono.com/Go/index.cfm?WL=145&WS=132430_6215484&WA=197 ] Antes 49,00Dto: 52% Ahorro: 25,47 [ http://email.globalbono.com/Go/index.cfm?WL=506&WS=132430_6215484&WA=197 ] 36% Dto. Siéntete como Pez en el Agua en el Aquarium de Barcelona Porque sin duda es una experiencia como nunca antes has tenido, te invitamos a que camin... 38,00 [ http://email.globalbono.com/Go/index.cfm?WL=506&WS=132430_6215484&WA=197 ] Antes 59,00Dto: 36% Ahorro: 21,00 [ http://email.globalbono.com/Go/index.cfm?WL=472&WS=132430_6215484&WA=197 ] 73% Dto. Cigarrillo Electrónico Si deseas dejar de fumar, éste es el aliado adecuado. Calmará esa costumbre de ponert... 10,49 [ http://email.globalbono.com/Go/index.cfm?WL=472&WS=132430_6215484&WA=197 ] Antes 39,00Dto: 73% Ahorro: 28,51 [ http://email.globalbono.com/Go/index.cfm?WL=504&WS=132430_6215484&WA=197 ] 63% Dto. Plantillas Viscoelásticas Camina, o estate de pie durante horas, sin dolor ni molestias, con estas plantillas visc... 5,59 [ http://email.globalbono.com/Go/index.cfm?WL=504&WS=132430_6215484&WA=197 ] Antes 15,00Dto: 63% Ahorro: 9,41 [ http://email.globalbono.com/Go/index.cfm?WL=475&WS=132430_6215484&WA=197 ] 46% Dto. Noche de Mojitos y Música en Vivo en Algeciras Disfruta de la noche gaditana, de buena música en vivo, y del mejor ambiente en la Sala ... 35,00 [ http://email.globalbono.com/Go/index.cfm?WL=475&WS=132430_6215484&WA=197 ] Antes 65,00Dto: 46% Ahorro: 30,00 [ http://email.globalbono.com/Go/index.cfm?WL=468&WS=132430_6215484&WA=197 ] 37% Dto. Lorca, Abierta por Restauración. Sigue los Trabajos de Reconstrucción en Primera Persona Ven a Lorca a seguir una ruta por las iglesias en restauración, visita los monumentos má... 44,00 [ http://email.globalbono.com/Go/index.cfm?WL=468&WS=132430_6215484&WA=197 ] Antes 70,00Dto: 37% Ahorro: 26,00 [ http://email.globalbono.com/Go/index.cfm?WL=503&WS=132430_6215484&WA=197 ] 52% Dto. Organizador de Zapatos Ten organizados tus zapatos, por pares, de una forma de lo más práctica, con éste zapate... 9,10 [ http://email.globalbono.com/Go/index.cfm?WL=503&WS=132430_6215484&WA=197 ] Antes 19,00Dto: 52% Ahorro: 9,90 [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=197 ] 44% Dto. Valencia y su Albufera, Conócela en Barca, Descansa en Hotel Cuatro Estrellas Valencia no es sólo playa. Es cultura, museos y arquitectura. Y es también su Albufera. ... 35,00 [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=197 ] Antes 63,00Dto: 44% Ahorro: 28,00 De conformidad con lo que establece la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal, le informamos que sus datos personales serán incorporados a un fichero bajo la responsabilidad de GlobalBono, con la finalidad de poder atender los compromisos derivados de la relación que mantenemos con usted. Puede ejercer sus derechos de acceso, cancelación, rectificación y oposición mediante un escrito a la dirección email in...@gl.... Si en el plazo de 30 días no nos comunica lo contrario, entenderemos que los datos no han sido modificados, que se compromete a notificarnos cualquier variación y que tenemos el consentimiento para utilizarlos a fin de poder fidelizar la relación entre las partes. ¿Quieres dejar de recibir este email? Haz click [ http://email.globalbono.com/baja/form_baja_GB.cfm?WL=182&WS=132430_6215484&WA=197 ] aquí. |
|
From: Luck, T. <ton...@in...> - 2012-07-19 22:12:10
|
> If users specify a number of that is too big, the message will be meaningless. > I just couldn't decide the appropriate number by myself. > Then, I make it tunable. I think that 3 or 4 logs should be plenty to cover almost all situations. E.g. with 3 logs you could capture 2 OOPS (and perhaps miss some other OOPS) and then get the final panic that kills the system. Messier crashes are of course possible ... but that would give lots of clues on where the problems lie. I was just wondering whether you had successfully stored 2, or 3, or more logs - and if you'd seen any problems doing so. Matthew seemed very worried about the amount of available space for EFI. If you don't know what is the appropriate number ... then how will users decide? We should really give them some guidance ... especially if there are odd problems[1] if they pick a number that is too big. -Tony [1] I don't know if there will be problems ... I don't know what else EFI will store here, and what would happen if it ran out of space. |
|
From: Seiji A. <sei...@hd...> - 2012-07-19 21:44:06
|
> How big a value for efi_pstore_log_num have you tried? Did you see any problems with EFI running out of space? Do you get some > helpful error message if you pick a number that is too big? Please calm down... This is RFC patch. If users specify a number of that is too big, the message will be meaningless. I just couldn't decide the appropriate number by myself. Then, I make it tunable. So, I would like to hear about your opinion. Do you agree with an idea holding multiple logs? If so, which number is appropriate? Seiji |
|
From: Luck, T. <ton...@in...> - 2012-07-19 21:23:39
|
> With this patch, efi_pstore can hold multiple logs with a new kernel parameter, efi_pstore_log_num. How big a value for efi_pstore_log_num have you tried? Did you see any problems with EFI running out of space? Do you get some helpful error message if you pick a number that is too big? -Tony |
|
From: Seiji A. <sei...@hd...> - 2012-07-19 21:14:49
|
[Problem]
When efi_pstore holds just one log and it doesn't overwrite an exisiting entry,
we lose a critical message if kernel panics while system is rebooting.
[Solution]
If users decide that NVRAM size is not big enough to hold multiple logs,
efi_pstore has to handle just one log and avoid a critical messages by
overwriting existing entry.
This patch adds some logic checking if an existing entry is erasable in case of
holding just one log.
The rule is as follows.
- In case where an existing entry is panic or emergency
- It is not erasable because if panic/emergency event is lost, we have no way
to detect the root cause. We shouldn't overwrite them for any reason.
- In case where an existing entry is oops/shutdown/halt/poweroff
- It is erasable if an error ,panic, emergency or oops, happens in new event
because we will probably get messages of multiple events by erasing
an existing entry.
ex)
Even though reboot message is overwritten by panic one, we will probably save both
final part of reboot message and panic message as follows.
Example of kmsg in NVRAM
<snip>
Panic#1 <- header supplied by pstore
<6>kvm: exiting hardware virtualization
<5>sd 0:0:0:0: [sda] Synchronizing SCSI cache
<0>Restarting system. <- reboot message
<0>BUG: soft lockup - CPU#0 stuck for 22s! [swapper/0:0]
<0> Kernel panic - not syncing: softlockup: hung tasks <- panic message
<0>Pid: 0, comm: swapper/0 Not tainted 3.3.8 #4 Call Trace:
<0><IRQ> [<ffffffff8136bdd5>] panic+0xb8/0x1c4
<0>[<ffffffff81071f37>] watchdog_timer_fn+0x139/0x15d
<0>[<ffffffff81071dfe>] ? __touch_watchdog+0x1f/0x1f
<snip>
Signed-off-by: Seiji Aguchi <sei...@hd...>
---
drivers/firmware/Makefile | 2 +
drivers/firmware/efivars.c | 111 ++++++++++++++++++++++++++++++++++++++++++-
fs/pstore/platform.c | 4 +-
include/linux/kmsg_dump.h | 8 ++--
include/linux/pstore.h | 5 ++
5 files changed, 121 insertions(+), 9 deletions(-)
diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile
index 5a7e273..8f7724c 100644
--- a/drivers/firmware/Makefile
+++ b/drivers/firmware/Makefile
@@ -14,3 +14,5 @@ obj-$(CONFIG_ISCSI_IBFT) += iscsi_ibft.o
obj-$(CONFIG_FIRMWARE_MEMMAP) += memmap.o
obj-$(CONFIG_GOOGLE_FIRMWARE) += google/
+
+CFLAGS_efivars.o += -Wswitch-enum
diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
index 55188d7..29628a2 100644
--- a/drivers/firmware/efivars.c
+++ b/drivers/firmware/efivars.c
@@ -730,6 +730,85 @@ static unsigned long get_current_log_num(efi_char16_t *efi_name,
return current_log_num;
}
+static bool can_erase_entry(struct efivar_entry *entry, enum kmsg_dump_reason
+ new_reason)
+{
+ enum kmsg_dump_reason prev_reason = 0;
+ const char *prev_why;
+ bool is_erasable = 0;
+
+ /* Get a reason of previous message */
+ while (prev_reason < INT_MAX) {
+ prev_why = pstore_get_reason_str(prev_reason);
+ if (!strncmp(entry->var.Data, prev_why, strlen(prev_why)))
+ break;
+ prev_reason++;
+ }
+
+ /* check if existing message is erasable */
+
+ switch (prev_reason) {
+ case KMSG_DUMP_PANIC:
+ case KMSG_DUMP_EMERG:
+ /* Never erase panic or emergency message */
+ break;
+ case KMSG_DUMP_OOPS:
+ case KMSG_DUMP_RESTART:
+ case KMSG_DUMP_HALT:
+ case KMSG_DUMP_POWEROFF:
+ /* Can erase if new one is error message */
+ if (new_reason <= KMSG_DUMP_EMERG)
+ is_erasable = 1;
+ break;
+ /*
+ * Default is not specified to complain if a new KMSG_DUMP enum
+ * value is added without considering this logic.
+ */
+ }
+
+ return is_erasable;
+}
+
+static int clean_up_existing_entry(efi_char16_t *efi_name, ssize_t size,
+ enum kmsg_dump_reason reason,
+ struct pstore_info *psi,
+ struct efivar_entry **found)
+{
+ efi_guid_t vendor = LINUX_EFI_CRASH_GUID;
+ struct efivars *efivars = psi->data;
+ struct efivar_entry *entry;
+ int ret = -EEXIST;
+
+ list_for_each_entry(entry, &efivars->list, list) {
+ get_var_data_locked(efivars, &entry->var);
+
+ if (efi_guidcmp(entry->var.VendorGuid, vendor))
+ continue;
+ if (utf16_strncmp(entry->var.VariableName, efi_name,
+ utf16_strlen(efi_name)))
+ continue;
+ /* Needs to be a prefix */
+ if (entry->var.VariableName[utf16_strlen(efi_name)] == 0)
+ continue;
+
+ if (!can_erase_entry(entry, reason))
+ break;
+ /* Erasable entry is found */
+ *found = entry;
+ efivars->ops->set_variable(entry->var.VariableName,
+ &entry->var.VendorGuid,
+ PSTORE_EFI_ATTRIBUTES,
+ 0, NULL);
+ ret = 0;
+ break;
+ }
+
+ if (*found)
+ list_del(&(*found)->list);
+
+ return ret;
+}
+
static int efi_pstore_write(enum pstore_type_id type,
enum kmsg_dump_reason reason, u64 *id,
unsigned int part, size_t size, struct pstore_info *psi)
@@ -739,6 +818,7 @@ static int efi_pstore_write(enum pstore_type_id type,
efi_char16_t efi_name[DUMP_NAME_LEN];
efi_guid_t vendor = LINUX_EFI_CRASH_GUID;
struct efivars *efivars = psi->data;
+ struct efivar_entry *found = NULL;
int i, ret = 0;
unsigned long current_log_num;
@@ -753,9 +833,31 @@ static int efi_pstore_write(enum pstore_type_id type,
current_log_num = get_current_log_num(efi_name, efivars);
if (current_log_num >= efi_pstore_log_num) {
- spin_unlock(&efivars->lock);
- *id = part;
- return -EEXIST;
+ switch (efi_pstore_log_num) {
+ case 1:
+ /*
+ * In case where efi_pstore handles just one log,
+ * it tries to overwrite an existing entry to avoid losing
+ * panic message.
+ */
+ ret = clean_up_existing_entry(efi_name, size, reason,
+ psi, &found);
+ if (ret) {
+ /* Can't clean up existing entry */
+ spin_unlock(&efivars->lock);
+ *id = part;
+ return ret;
+ }
+ break;
+ default:
+ /*
+ * In case where efi_pstore handles multiple logs,
+ * it doesn't erase any existing entries.
+ */
+ spin_unlock(&efivars->lock);
+ *id = part;
+ return -EEXIST;
+ }
}
for (i = 0; i < DUMP_NAME_LEN; i++)
@@ -766,6 +868,9 @@ static int efi_pstore_write(enum pstore_type_id type,
spin_unlock(&efivars->lock);
+ if (found)
+ efivar_unregister(found);
+
if (size)
ret = efivar_create_sysfs_entry(efivars,
utf16_strsize(efi_name,
diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c
index 03ce7a9..32715eb 100644
--- a/fs/pstore/platform.c
+++ b/fs/pstore/platform.c
@@ -68,7 +68,7 @@ void pstore_set_kmsg_bytes(int bytes)
/* Tag each group of saved records with a sequence number */
static int oopscount;
-static const char *get_reason_str(enum kmsg_dump_reason reason)
+const char *pstore_get_reason_str(enum kmsg_dump_reason reason)
{
switch (reason) {
case KMSG_DUMP_PANIC:
@@ -104,7 +104,7 @@ static void pstore_dump(struct kmsg_dumper *dumper,
int is_locked = 0;
int ret;
- why = get_reason_str(reason);
+ why = pstore_get_reason_str(reason);
if (in_nmi()) {
is_locked = spin_trylock(&psinfo->buf_lock);
diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h
index d6bd501..c578812 100644
--- a/include/linux/kmsg_dump.h
+++ b/include/linux/kmsg_dump.h
@@ -16,12 +16,12 @@
#include <linux/list.h>
/*
- * Keep this list arranged in rough order of priority. Anything listed after
- * KMSG_DUMP_OOPS will not be logged by default unless printk.always_kmsg_dump
- * is passed to the kernel.
+ * Keep this list arranged in rough order of priority.
+ * - Anything listed after KMSG_DUMP_OOPS will not be logged by default unless
+ * printk.always_kmsg_dump is passed to the kernel.
+ * - In EFI driver, KMSG_DUMP_EMERG and up may overwrite existing entries.
*/
enum kmsg_dump_reason {
- KMSG_DUMP_UNDEF,
KMSG_DUMP_PANIC,
KMSG_DUMP_OOPS,
KMSG_DUMP_EMERG,
diff --git a/include/linux/pstore.h b/include/linux/pstore.h
index 92cb90e..af7b90a 100644
--- a/include/linux/pstore.h
+++ b/include/linux/pstore.h
@@ -54,12 +54,17 @@ struct pstore_info {
#ifdef CONFIG_PSTORE
extern int pstore_register(struct pstore_info *);
+extern const char *pstore_get_reason_str(enum kmsg_dump_reason reason);
#else
static inline int
pstore_register(struct pstore_info *psi)
{
return -ENODEV;
}
+static const char *pstore_get_reason_str(enum kmsg_dump_reason reason)
+{
+ return NULL;
+}
#endif
#endif /*_LINUX_PSTORE_H*/
-- 1.7.1
|
|
From: Seiji A. <sei...@hd...> - 2012-07-19 21:14:05
|
[Problem]
When efi_pstore holds just one log and it doesn't overwrite an exisiting entry,
we lose a critical message if kernel panics while system is rebooting.
[Solution]
With this patch, efi_pstore can hold multiple logs with a new kernel parameter, efi_pstore_log_num.
We can simply avoid losing a critical message in case mutiple events happen.
[Patch Description]
- Introduce a new kernel parameter specifying the number of logs efi_pstore holds.
- Pass ctime to an argument of erase callback.
- Current variable name consists of type, id and ctime. So, when handling mutiple logs,
pstore should pass ctime to erase callback to avoid erasing invisible entries via /dev/pstore.
Signed-off-by: Seiji Aguchi <sei...@hd...>
---
Documentation/kernel-parameters.txt | 6 ++++++
drivers/acpi/apei/erst.c | 4 ++--
drivers/firmware/efivars.c | 33 +++++++++++++++++++++++++--------
fs/pstore/inode.c | 2 +-
fs/pstore/ram.c | 2 +-
include/linux/pstore.h | 2 +-
6 files changed, 36 insertions(+), 13 deletions(-)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index a92c5eb..9d38561 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -786,6 +786,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
edd= [EDD]
Format: {"off" | "on" | "skip[mbr]"}
+ efivars.efi_pstore_log_num=
+ Set the maximum number of logs efi_pstore saves into
+ NVRAM. n >= 1 limits the number of logs. n <= 0 is
+ invalid.
+ default: 1
+
eisa_irq_edge= [PARISC,HW]
See header of drivers/parisc/eisa.c.
diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c
index e4d9d24..0bd6ae4 100644
--- a/drivers/acpi/apei/erst.c
+++ b/drivers/acpi/apei/erst.c
@@ -938,7 +938,7 @@ static int erst_writer(enum pstore_type_id type, enum kmsg_dump_reason reason,
u64 *id, unsigned int part,
size_t size, struct pstore_info *psi);
static int erst_clearer(enum pstore_type_id type, u64 id,
- struct pstore_info *psi);
+ struct timespec time, struct pstore_info *psi);
static struct pstore_info erst_info = {
.owner = THIS_MODULE,
@@ -1102,7 +1102,7 @@ static int erst_writer(enum pstore_type_id type, enum kmsg_dump_reason reason,
}
static int erst_clearer(enum pstore_type_id type, u64 id,
- struct pstore_info *psi)
+ struct timespec time, struct pstore_info *psi)
{
return erst_clear(id);
}
diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
index 75a7c82..55188d7 100644
--- a/drivers/firmware/efivars.c
+++ b/drivers/firmware/efivars.c
@@ -628,6 +628,27 @@ efivar_unregister(struct efivar_entry *var)
#ifdef CONFIG_PSTORE
+static unsigned long efi_pstore_log_num = 1;
+static int param_set_efi_pstore_log_num(const char *val,
+ struct kernel_param *kp)
+{
+ int ret;
+ unsigned long l;
+
+ ret = kstrtoul(val, 0, &l);
+ if (ret || l == 0)
+ return -EINVAL;
+
+ ret = param_set_ulong(val, kp);
+ if (ret)
+ return -EINVAL;
+
+ return 0;
+}
+
+module_param_call(efi_pstore_log_num, param_set_efi_pstore_log_num,
+ param_get_ulong, &efi_pstore_log_num, S_IRUGO | S_IWUSR);
+
static int efi_pstore_open(struct pstore_info *psi)
{
struct efivars *efivars = psi->data;
@@ -731,7 +752,7 @@ static int efi_pstore_write(enum pstore_type_id type,
current_log_num = get_current_log_num(efi_name, efivars);
- if (current_log_num >= 1) {
+ if (current_log_num >= efi_pstore_log_num) {
spin_unlock(&efivars->lock);
*id = part;
return -EEXIST;
@@ -756,7 +777,7 @@ static int efi_pstore_write(enum pstore_type_id type,
};
static int efi_pstore_erase(enum pstore_type_id type, u64 id,
- struct pstore_info *psi)
+ struct timespec time, struct pstore_info *psi)
{
char stub_name[DUMP_NAME_LEN];
efi_char16_t efi_name[DUMP_NAME_LEN];
@@ -765,7 +786,7 @@ static int efi_pstore_erase(enum pstore_type_id type, u64 id,
struct efivar_entry *entry, *found = NULL;
int i;
- sprintf(stub_name, "dump-type%u-%llu-", type, id);
+ sprintf(stub_name, "dump-type%u-%llu-%lu", type, id, time.tv_sec);
spin_lock(&efivars->lock);
@@ -783,10 +804,6 @@ static int efi_pstore_erase(enum pstore_type_id type, u64 id,
if (utf16_strncmp(entry->var.VariableName, efi_name,
utf16_strlen(efi_name)))
continue;
- /* Needs to be a prefix */
- if (entry->var.VariableName[utf16_strlen(efi_name)]
- == 0)
- continue;
/* found */
found = entry;
@@ -832,7 +849,7 @@ static int efi_pstore_write(enum pstore_type_id type,
}
static int efi_pstore_erase(enum pstore_type_id type, u64 id,
- struct pstore_info *psi)
+ struct timespec time, struct pstore_info *psi)
{
return 0;
}
diff --git a/fs/pstore/inode.c b/fs/pstore/inode.c
index 11a2aa2..9acd703 100644
--- a/fs/pstore/inode.c
+++ b/fs/pstore/inode.c
@@ -75,7 +75,7 @@ static int pstore_unlink(struct inode *dir, struct dentry *dentry)
struct pstore_private *p = dentry->d_inode->i_private;
if (p->psi->erase)
- p->psi->erase(p->type, p->id, p->psi);
+ p->psi->erase(p->type, p->id, dentry->d_inode->i_ctime, p->psi);
return simple_unlink(dir, dentry);
}
diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
index 453030f..06357c9 100644
--- a/fs/pstore/ram.c
+++ b/fs/pstore/ram.c
@@ -178,7 +178,7 @@ static int ramoops_pstore_write(enum pstore_type_id type,
}
static int ramoops_pstore_erase(enum pstore_type_id type, u64 id,
- struct pstore_info *psi)
+ timespec time, struct pstore_info *psi)
{
struct ramoops_context *cxt = psi->data;
diff --git a/include/linux/pstore.h b/include/linux/pstore.h
index e1461e1..92cb90e 100644
--- a/include/linux/pstore.h
+++ b/include/linux/pstore.h
@@ -48,7 +48,7 @@ struct pstore_info {
enum kmsg_dump_reason reason, u64 *id,
unsigned int part, size_t size, struct pstore_info *psi);
int (*erase)(enum pstore_type_id type, u64 id,
- struct pstore_info *psi);
+ struct timespec time, struct pstore_info *psi);
void *data;
};
-- 1.7.1
|
|
From: Seiji A. <sei...@hd...> - 2012-07-19 21:13:06
|
[Problem]
Currently, efi_pstore driver simply overwrites existing panic messages in NVRAM.
So, in the following scenario, we will lose 1st panic messages.
1. kernel panics.
2. efi_pstore is kicked and write panic messages to NVRAM.
3. system reboots.
4. kernel panics again before a user checks the 1st panic messages in NVRAM.
[Solution]
This patch remove a logic erasing existing entries from write callback to
avoid losing an existing critical message.
[Patch Description]
- Remove a logic erasing existing entries from write callback
- Add the logic above to erase callback.
Signed-off-by: Seiji Aguchi <sei...@hd...>
---
drivers/firmware/efivars.c | 92 +++++++++++++++++++++++++++++++++-----------
1 files changed, 69 insertions(+), 23 deletions(-)
diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
index 47408e8..75a7c82 100644
--- a/drivers/firmware/efivars.c
+++ b/drivers/firmware/efivars.c
@@ -685,6 +685,30 @@ static ssize_t efi_pstore_read(u64 *id, enum pstore_type_id *type,
return 0;
}
+static unsigned long get_current_log_num(efi_char16_t *efi_name,
+ struct efivars *efivars)
+{
+ efi_guid_t vendor = LINUX_EFI_CRASH_GUID;
+ struct efivar_entry *entry;
+ unsigned long current_log_num = 0;
+
+ list_for_each_entry(entry, &efivars->list, list) {
+ get_var_data_locked(efivars, &entry->var);
+
+ if (efi_guidcmp(entry->var.VendorGuid, vendor))
+ continue;
+ if (utf16_strncmp(entry->var.VariableName, efi_name,
+ utf16_strlen(efi_name)))
+ continue;
+ /* Needs to be a prefix */
+ if (entry->var.VariableName[utf16_strlen(efi_name)] == 0)
+ continue;
+ current_log_num++;
+ }
+
+ return current_log_num;
+}
+
static int efi_pstore_write(enum pstore_type_id type,
enum kmsg_dump_reason reason, u64 *id,
unsigned int part, size_t size, struct pstore_info *psi)
@@ -694,8 +718,8 @@ static int efi_pstore_write(enum pstore_type_id type,
efi_char16_t efi_name[DUMP_NAME_LEN];
efi_guid_t vendor = LINUX_EFI_CRASH_GUID;
struct efivars *efivars = psi->data;
- struct efivar_entry *entry, *found = NULL;
int i, ret = 0;
+ unsigned long current_log_num;
sprintf(stub_name, "dump-type%u-%u-", type, part);
sprintf(name, "%s%lu", stub_name, get_seconds());
@@ -705,6 +729,48 @@ static int efi_pstore_write(enum pstore_type_id type,
for (i = 0; i < DUMP_NAME_LEN; i++)
efi_name[i] = stub_name[i];
+ current_log_num = get_current_log_num(efi_name, efivars);
+
+ if (current_log_num >= 1) {
+ spin_unlock(&efivars->lock);
+ *id = part;
+ return -EEXIST;
+ }
+
+ for (i = 0; i < DUMP_NAME_LEN; i++)
+ efi_name[i] = name[i];
+
+ efivars->ops->set_variable(efi_name, &vendor, PSTORE_EFI_ATTRIBUTES,
+ size, psi->buf);
+
+ spin_unlock(&efivars->lock);
+
+ if (size)
+ ret = efivar_create_sysfs_entry(efivars,
+ utf16_strsize(efi_name,
+ DUMP_NAME_LEN * 2),
+ efi_name, &vendor);
+
+ *id = part;
+ return ret;
+};
+
+static int efi_pstore_erase(enum pstore_type_id type, u64 id,
+ struct pstore_info *psi)
+{
+ char stub_name[DUMP_NAME_LEN];
+ efi_char16_t efi_name[DUMP_NAME_LEN];
+ efi_guid_t vendor = LINUX_EFI_CRASH_GUID;
+ struct efivars *efivars = psi->data;
+ struct efivar_entry *entry, *found = NULL;
+ int i;
+
+ sprintf(stub_name, "dump-type%u-%llu-", type, id);
+
+ spin_lock(&efivars->lock);
+
+ for (i = 0; i < DUMP_NAME_LEN; i++)
+ efi_name[i] = stub_name[i];
/*
* Clean up any entries with the same name
*/
@@ -718,7 +784,8 @@ static int efi_pstore_write(enum pstore_type_id type,
utf16_strlen(efi_name)))
continue;
/* Needs to be a prefix */
- if (entry->var.VariableName[utf16_strlen(efi_name)] == 0)
+ if (entry->var.VariableName[utf16_strlen(efi_name)]
+ == 0)
continue;
/* found */
@@ -732,32 +799,11 @@ static int efi_pstore_write(enum pstore_type_id type,
if (found)
list_del(&found->list);
- for (i = 0; i < DUMP_NAME_LEN; i++)
- efi_name[i] = name[i];
-
- efivars->ops->set_variable(efi_name, &vendor, PSTORE_EFI_ATTRIBUTES,
- size, psi->buf);
-
spin_unlock(&efivars->lock);
if (found)
efivar_unregister(found);
- if (size)
- ret = efivar_create_sysfs_entry(efivars,
- utf16_strsize(efi_name,
- DUMP_NAME_LEN * 2),
- efi_name, &vendor);
-
- *id = part;
- return ret;
-};
-
-static int efi_pstore_erase(enum pstore_type_id type, u64 id,
- struct pstore_info *psi)
-{
- efi_pstore_write(type, 0, &id, (unsigned int)id, 0, psi);
-
return 0;
}
#else
-- 1.7.1
|
|
From: Seiji A. <sei...@hd...> - 2012-07-19 21:11:53
|
This patchset avoids losing a critical message like panic in NVRAM.
[Problem]
Currently, efi_pstore driver simply overwrites existing panic messages in NVRAM.
So, in the following scenario, we will lose 1st panic messages.
1. kernel panics.
2. efi_pstore is kicked and write panic messages to NVRAM.
3. system reboots.
4. kernel panics again before a user checks the 1st panic messages in NVRAM.
[Solution]
To avoid losing a critical message, this patchset is based on a following concept.
- A basic policy is _not_ to overwrite existing entries.
- However, if kernel panics while a system is rebooting, a critical message
can't be saved by the policy above.
(In this case, panic message is critical.)
- So, two approaches are taken by this patchset.
- First one is holding multiple logs.
- Second one is introducing some logic overwriting entries
for holding just one log.
[Patch Descriptions]
Patch 1/3 and 2/3 take fist approach, _not_ overwriting entries.
Patch 3/3 takes second approach, adding some logic overwriting entries.
1/3: Avoid overwriting existing entry
This patch just avoid overwriting entries to save the 1st critical message
without being influenced by subsequent events.
2/3: Hold multiple logs
With this patch, efi_pstore can hold multiple logs.
We can simply avoid losing a critical message in case mutiple events happen.
3/3: Check if existing entry is erasable
This patch adds some logic checking if an existing entry is erasable for
holding just one log.
If users decide that NVRAM size is not big enough to hold multiple logs,
efi_pstore have to handle just one log and avoid a critical messages by
overwriting existing entry.
NVRAM size may vary among different boxes, and the appropriate log size depends
on each user's system. efi_pstore should be flexible in preparation for various
user's choice.
Change v1 -> v2
1/3
- Freshly created to avoid overwriting entries.
2/3
- Freshly created to handle multiple logs.
- Add an additional change passing ctime to arguments of erase_callback.
3/3
- This is based on previous 2/2 patch
- Add comments to kernel/printk.h in preparation for future change
without considering this patch.
- Remove infinite loop to avoid potential hang up.
- Add CFLAGS, -Wswitch-enum and remove default case from switch sentence
in preparation for future change without considering this patch.
- Change a return value to -EEXIST when an erasable entry is not found.
- Remove KMSG_DUMP_UNDEF from kmsg_dump_reason because no one uses it.
Documentation/kernel-parameters.txt | 6 +
drivers/acpi/apei/erst.c | 4 +-
drivers/firmware/Makefile | 2 +
drivers/firmware/efivars.c | 212 +++++++++++++++++++++++++++++++----
fs/pstore/inode.c | 2 +-
fs/pstore/platform.c | 4 +-
fs/pstore/ram.c | 2 +-
include/linux/kmsg_dump.h | 8 +-
include/linux/pstore.h | 7 +-
9 files changed, 214 insertions(+), 33 deletions(-)
|
|
From: GlobalBono <of...@em...> - 2012-07-18 22:44:35
|
Cabestan. Layout Doble Asegúrate de no perderte ninguna oferta, añade of...@gl... a tu lista de contactos. Si no ves correctamente las imágenes, pulsa [ http://email.globalbono.com/E18072012160813.cfm?WL=589&WS=132430_6215484&WA=188 ] aquí [ http://email.globalbono.com/Go/index.cfm?WL=564&WS=132430_6215484&WA=188 ] Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=188 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=188 ] [ http://email.globalbono.com/Go/index.cfm?WL=469&WS=132430_6215484&WA=188 ] 75% Dto. Ahuyentador de Insectos y Roedores Líbrate de plagas, insectos y roedores con sólo enchufarlo. Éste ahuyentador transformar... 9,78¤ [ http://email.globalbono.com/Go/index.cfm?WL=469&WS=132430_6215484&WA=188 ] Antes 39,00¤Dto: 75% Ahorro: 29,22¤ [ http://email.globalbono.com/Go/index.cfm?WL=451&WS=132430_6215484&WA=188 ] 61% Dto. Aparato de Cavitación Reduce tu celulitis con éste aparato por ultrasonidos con el que reducir el volumen de g... 984,12¤ [ http://email.globalbono.com/Go/index.cfm?WL=451&WS=132430_6215484&WA=188 ] Antes 2.500,00¤Dto: 61% Ahorro: 1.515,88¤ [ http://email.globalbono.com/Go/index.cfm?WL=57&WS=132430_6215484&WA=188 ] 46% Dto. Ahorrador de Energía Ahorra energía mientras proteges tus aparatos eléctricos de las subidas y bajadas de ten... 26,82¤ [ http://email.globalbono.com/Go/index.cfm?WL=57&WS=132430_6215484&WA=188 ] Antes 50,00¤Dto: 46% Ahorro: 23,18¤ [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=188 ] 44% Dto. Valencia y su Albufera, Conócela en Barca, Descansa en Hotel Cuatro Estrellas Valencia no es sólo playa. Es cultura, museos y arquitectura. Y es también su Albufera. ... 35,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=188 ] Antes 63,00¤Dto: 44% Ahorro: 28,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=471&WS=132430_6215484&WA=188 ] 59% Dto. Audífono Vuelve a escuchar bien con éste audífono de seis niveles de audición. Porque recuperar l... 20,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=471&WS=132430_6215484&WA=188 ] Antes 49,00¤Dto: 59% Ahorro: 29,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=505&WS=132430_6215484&WA=188 ] 53% Dto. Picador de Ajos Picador de ajos con veinte cuchillas a tu servicio, para que piques bien fino ajos, j... 6,99¤ [ http://email.globalbono.com/Go/index.cfm?WL=505&WS=132430_6215484&WA=188 ] Antes 15,00¤Dto: 53% Ahorro: 8,01¤ [ http://email.globalbono.com/Go/index.cfm?WL=518&WS=132430_6215484&WA=188 ] 50% Dto. Tranquilidad y Adrenalina en el Valle de Arán, Hotel Cuatro Estrellas Aléjate de playas masificadas y opta por la montaña y la adrenalina. Haz rafting en la N... 45,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=518&WS=132430_6215484&WA=188 ] Antes 90,00¤Dto: 50% Ahorro: 45,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=508&WS=132430_6215484&WA=188 ] 58% Dto. Escápate a las Rebajas de Las Rozas Village, desde un Hotel Tres Estrellas Compras y más compras en un outlet de lujo como Las Rozas Village ¿y en rebajas? No lo d... 25,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=508&WS=132430_6215484&WA=188 ] Antes 60,00¤Dto: 58% Ahorro: 35,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=473&WS=132430_6215484&WA=188 ] 53% Dto. Recargas de Cigarrillo Electrónico Para que puedas seguir echando humo mientras consigues dejar de fumar, te ofrecemos reca... 9,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=473&WS=132430_6215484&WA=188 ] Antes 19,00¤Dto: 53% Ahorro: 10,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=498&WS=132430_6215484&WA=188 ] 44% Dto. Málaga y el Museo Carmen Thyssen. Sé el Primero de tus Amigos en Conocerlo Málaga es historia, pero también modernidad. Te invitamos a conocer todo lo que tiene, d... 50,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=498&WS=132430_6215484&WA=188 ] Antes 90,00¤Dto: 44% Ahorro: 40,00¤ De conformidad con lo que establece la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal, le informamos que sus datos personales serán incorporados a un fichero bajo la responsabilidad de GlobalBono, con la finalidad de poder atender los compromisos derivados de la relación que mantenemos con usted. Puede ejercer sus derechos de acceso, cancelación, rectificación y oposición mediante un escrito a la dirección email in...@gl.... Si en el plazo de 30 días no nos comunica lo contrario, entenderemos que los datos no han sido modificados, que se compromete a notificarnos cualquier variación y que tenemos el consentimiento para utilizarlos a fin de poder fidelizar la relación entre las partes. ¿Quieres dejar de recibir este email? Haz click [ http://email.globalbono.com/baja/form_baja_GB.cfm?WL=182&WS=132430_6215484&WA=188 ] aquí. |
|
From: GlobalBono <of...@em...> - 2012-07-18 22:25:33
|
Cabestan. Layout Doble Asegúrate de no perderte ninguna oferta, añade of...@gl... a tu lista de contactos. Si no ves correctamente las imágenes, pulsa [ http://email.globalbono.com/E18072012160813.cfm?WL=589&WS=132430_6215484&WA=187 ] aquí [ http://email.globalbono.com/Go/index.cfm?WL=564&WS=132430_6215484&WA=187 ] Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=187 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=187 ] [ http://email.globalbono.com/Go/index.cfm?WL=469&WS=132430_6215484&WA=187 ] 75% Dto. Ahuyentador de Insectos y Roedores Líbrate de plagas, insectos y roedores con sólo enchufarlo. Éste ahuyentador transformar... 9,78¤ [ http://email.globalbono.com/Go/index.cfm?WL=469&WS=132430_6215484&WA=187 ] Antes 39,00¤Dto: 75% Ahorro: 29,22¤ [ http://email.globalbono.com/Go/index.cfm?WL=451&WS=132430_6215484&WA=187 ] 61% Dto. Aparato de Cavitación Reduce tu celulitis con éste aparato por ultrasonidos con el que reducir el volumen de g... 984,12¤ [ http://email.globalbono.com/Go/index.cfm?WL=451&WS=132430_6215484&WA=187 ] Antes 2.500,00¤Dto: 61% Ahorro: 1.515,88¤ [ http://email.globalbono.com/Go/index.cfm?WL=57&WS=132430_6215484&WA=187 ] 46% Dto. Ahorrador de Energía Ahorra energía mientras proteges tus aparatos eléctricos de las subidas y bajadas de ten... 26,82¤ [ http://email.globalbono.com/Go/index.cfm?WL=57&WS=132430_6215484&WA=187 ] Antes 50,00¤Dto: 46% Ahorro: 23,18¤ [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=187 ] 44% Dto. Valencia y su Albufera, Conócela en Barca, Descansa en Hotel Cuatro Estrellas Valencia no es sólo playa. Es cultura, museos y arquitectura. Y es también su Albufera. ... 35,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=187 ] Antes 63,00¤Dto: 44% Ahorro: 28,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=471&WS=132430_6215484&WA=187 ] 59% Dto. Audífono Vuelve a escuchar bien con éste audífono de seis niveles de audición. Porque recuperar l... 20,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=471&WS=132430_6215484&WA=187 ] Antes 49,00¤Dto: 59% Ahorro: 29,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=505&WS=132430_6215484&WA=187 ] 53% Dto. Picador de Ajos Picador de ajos con veinte cuchillas a tu servicio, para que piques bien fino ajos, j... 6,99¤ [ http://email.globalbono.com/Go/index.cfm?WL=505&WS=132430_6215484&WA=187 ] Antes 15,00¤Dto: 53% Ahorro: 8,01¤ [ http://email.globalbono.com/Go/index.cfm?WL=518&WS=132430_6215484&WA=187 ] 50% Dto. Tranquilidad y Adrenalina en el Valle de Arán, Hotel Cuatro Estrellas Aléjate de playas masificadas y opta por la montaña y la adrenalina. Haz rafting en la N... 45,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=518&WS=132430_6215484&WA=187 ] Antes 90,00¤Dto: 50% Ahorro: 45,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=508&WS=132430_6215484&WA=187 ] 58% Dto. Escápate a las Rebajas de Las Rozas Village, desde un Hotel Tres Estrellas Compras y más compras en un outlet de lujo como Las Rozas Village ¿y en rebajas? No lo d... 25,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=508&WS=132430_6215484&WA=187 ] Antes 60,00¤Dto: 58% Ahorro: 35,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=473&WS=132430_6215484&WA=187 ] 53% Dto. Recargas de Cigarrillo Electrónico Para que puedas seguir echando humo mientras consigues dejar de fumar, te ofrecemos reca... 9,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=473&WS=132430_6215484&WA=187 ] Antes 19,00¤Dto: 53% Ahorro: 10,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=498&WS=132430_6215484&WA=187 ] 44% Dto. Málaga y el Museo Carmen Thyssen. Sé el Primero de tus Amigos en Conocerlo Málaga es historia, pero también modernidad. Te invitamos a conocer todo lo que tiene, d... 50,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=498&WS=132430_6215484&WA=187 ] Antes 90,00¤Dto: 44% Ahorro: 40,00¤ De conformidad con lo que establece la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal, le informamos que sus datos personales serán incorporados a un fichero bajo la responsabilidad de GlobalBono, con la finalidad de poder atender los compromisos derivados de la relación que mantenemos con usted. Puede ejercer sus derechos de acceso, cancelación, rectificación y oposición mediante un escrito a la dirección email in...@gl.... Si en el plazo de 30 días no nos comunica lo contrario, entenderemos que los datos no han sido modificados, que se compromete a notificarnos cualquier variación y que tenemos el consentimiento para utilizarlos a fin de poder fidelizar la relación entre las partes. ¿Quieres dejar de recibir este email? Haz click [ http://email.globalbono.com/baja/form_baja_GB.cfm?WL=182&WS=132430_6215484&WA=187 ] aquí. |
|
From: GlobalBono <of...@em...> - 2012-07-17 23:31:35
|
Cabestan. Layout Doble Asegúrate de no perderte ninguna oferta, añade of...@gl... a tu lista de contactos. Si no ves correctamente las imágenes, pulsa [ http://email.globalbono.com/E17072012152505.cfm?WL=577&WS=132430_6215484&WA=179 ] aquí [ http://email.globalbono.com/Go/index.cfm?WL=564&WS=132430_6215484&WA=179 ] Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=179 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=179 ] [ http://email.globalbono.com/Go/index.cfm?WL=507&WS=132430_6215484&WA=179 ] 67% Dto. Afilador de Cuchillos Afila tus cuchillos de una forma cómoda y segura con éste afilador. Como bien sabemos qu... 8,31 [ http://email.globalbono.com/Go/index.cfm?WL=507&WS=132430_6215484&WA=179 ] Antes 25,00Dto: 67% Ahorro: 16,69 [ http://email.globalbono.com/Go/index.cfm?WL=452&WS=132430_6215484&WA=179 ] 49% Dto. Piedras Para Bebida Piedras para que mantengas tus bebidas frías o calientes, como tú prefieras, mételas a ... 22,82 [ http://email.globalbono.com/Go/index.cfm?WL=452&WS=132430_6215484&WA=179 ] Antes 45,00Dto: 49% Ahorro: 22,18 [ http://email.globalbono.com/Go/index.cfm?WL=502&WS=132430_6215484&WA=179 ] 48% Dto. Chimenea de Bioetanol Chimenea de bioetanol para que redecores tu hogar como siempre quisiste, pero que nunca ... 256,65 [ http://email.globalbono.com/Go/index.cfm?WL=502&WS=132430_6215484&WA=179 ] Antes 495,00Dto: 48% Ahorro: 238,35 [ http://email.globalbono.com/Go/index.cfm?WL=145&WS=132430_6215484&WA=179 ] 52% Dto. Botellero Carrusel Botellero giratorio para que tengas siempre a mano tus vinos preferidos, en un muestrari... 23,53 [ http://email.globalbono.com/Go/index.cfm?WL=145&WS=132430_6215484&WA=179 ] Antes 49,00Dto: 52% Ahorro: 25,47 [ http://email.globalbono.com/Go/index.cfm?WL=470&WS=132430_6215484&WA=179 ] 61% Dto. Llavero Alcoholímetro Controla la cantidad de alcohol que has ingerido antes de ponerte a conducir. Éste descu... 11,25 [ http://email.globalbono.com/Go/index.cfm?WL=470&WS=132430_6215484&WA=179 ] Antes 29,00Dto: 61% Ahorro: 17,75 [ http://email.globalbono.com/Go/index.cfm?WL=472&WS=132430_6215484&WA=179 ] 73% Dto. Cigarrillo Electrónico Si deseas dejar de fumar, éste es el aliado adecuado. Calmará esa costumbre de ponert... 10,49 [ http://email.globalbono.com/Go/index.cfm?WL=472&WS=132430_6215484&WA=179 ] Antes 39,00Dto: 73% Ahorro: 28,51 [ http://email.globalbono.com/Go/index.cfm?WL=468&WS=132430_6215484&WA=179 ] 37% Dto. Lorca, Abierta por Restauración. Sigue los Trabajos de Reconstrucción en Primera Persona Ven a Lorca a seguir una ruta por las iglesias en restauración, visita los monumentos má... 44,00 [ http://email.globalbono.com/Go/index.cfm?WL=468&WS=132430_6215484&WA=179 ] Antes 70,00Dto: 37% Ahorro: 26,00 [ http://email.globalbono.com/Go/index.cfm?WL=474&WS=132430_6215484&WA=179 ] 38% Dto. Escápate a Benicarló y Disfruta de sus Playas con Bandera Azul Disfruta de una playa sin igual en Benicarló, hospédate en éste económico hotel y no te ... 25,00 [ http://email.globalbono.com/Go/index.cfm?WL=474&WS=132430_6215484&WA=179 ] Antes 40,00Dto: 38% Ahorro: 15,00 [ http://email.globalbono.com/Go/index.cfm?WL=504&WS=132430_6215484&WA=179 ] 63% Dto. Plantillas Viscoelásticas Camina, o estate de pie durante horas, sin dolor ni molestias, con estas plantillas visc... 5,59 [ http://email.globalbono.com/Go/index.cfm?WL=504&WS=132430_6215484&WA=179 ] Antes 15,00Dto: 63% Ahorro: 9,41 [ http://email.globalbono.com/Go/index.cfm?WL=475&WS=132430_6215484&WA=179 ] 46% Dto. Noche de Mojitos y Música en Vivo en Algeciras Disfruta de la noche gaditana, de buena música en vivo, y del mejor ambiente en la Sala ... 35,00 [ http://email.globalbono.com/Go/index.cfm?WL=475&WS=132430_6215484&WA=179 ] Antes 65,00Dto: 46% Ahorro: 30,00 De conformidad con lo que establece la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal, le informamos que sus datos personales serán incorporados a un fichero bajo la responsabilidad de GlobalBono, con la finalidad de poder atender los compromisos derivados de la relación que mantenemos con usted. Puede ejercer sus derechos de acceso, cancelación, rectificación y oposición mediante un escrito a la dirección email in...@gl.... Si en el plazo de 30 días no nos comunica lo contrario, entenderemos que los datos no han sido modificados, que se compromete a notificarnos cualquier variación y que tenemos el consentimiento para utilizarlos a fin de poder fidelizar la relación entre las partes. ¿Quieres dejar de recibir este email? Haz click [ http://email.globalbono.com/baja/form_baja_GB.cfm?WL=182&WS=132430_6215484&WA=179 ] aquí. |
|
From: Seiji A. <sei...@hd...> - 2012-07-17 21:47:39
|
Change log v1 -> v2 - Modify variable name from irq to vector. - Merge arch-specific tracepoints below to an arch_irq_vector_entry/exit. - error_apic_vector - thermal_apic_vector - threshold_apic_vector - spurious_apic_vector - x86_platform_ipi_vector As Vaibhav explained in the thread below, tracepoints for irq vectors are useful. http://www.spinics.net/lists/mm-commits/msg85707.html <snip> The current interrupt traces from irq_handler_entry and irq_handler_exit provide when an interrupt is handled. They provide good data about when the system has switched to kernel space and how it affects the currently running processes. There are some IRQ vectors which trigger the system into kernel space, which are not handled in generic IRQ handlers. Tracing such events gives us the information about IRQ interaction with other system events. The trace also tells where the system is spending its time. We want to know which cores are handling interrupts and how they are affecting other processes in the system. Also, the trace provides information about when the cores are idle and which interrupts are changing that state. <snip> On the other hand, my usecase is tracing just local timer event and getting a value of instruction pointer. I suggested to add an argument local timer event to get instruction pointer before. But there is another way to get it with external module like systemtap. So, I don't need to add any argument to irq vector tracepoints now. Vaibhav's patch shared a trace point ,irq_vector_entry/irq_vector_exit, in all events. But there is an above use case to trace specific irq_vector rather than tracing all events. In this case, we are concerned about overhead due to unwanted events. This patch modifies Vaibhav's one as follows. - Separate generic, and across-architecture tracepoints to enable independently. - nmi_vector - local_timer_vector - reschedule_vector - call_function_vector - call_function_single_vector - irq_work_entry_vector - invalidate_tlb_vector - Rename architecture-specific tracepoints from irq_vector_entry/exit to arch_irq_vector_entry/exit. - error_apic_vector - thermal_apic_vector - threshold_apic_vector - spurious_apic_vector - x86_platform_ipi_vector Those x86 specific ones are not really frequently raised vectors, so enabling them all won't affect performance and readability of the traces too much. Signed-off-by: Seiji Aguchi <sei...@hd...> --- arch/x86/include/asm/irq_vectors.h | 9 ++ arch/x86/kernel/apic/apic.c | 7 + arch/x86/kernel/cpu/mcheck/therm_throt.c | 3 + arch/x86/kernel/cpu/mcheck/threshold.c | 3 + arch/x86/kernel/irq.c | 5 + arch/x86/kernel/irq_work.c | 3 + arch/x86/kernel/nmi.c | 3 + arch/x86/kernel/smp.c | 7 + arch/x86/mm/tlb.c | 3 + include/trace/events/irq_vectors.h | 231 ++++++++++++++++++++++++++++++ 10 files changed, 274 insertions(+), 0 deletions(-) create mode 100644 include/trace/events/irq_vectors.h diff --git a/arch/x86/include/asm/irq_vectors.h b/arch/x86/include/asm/irq_vectors.h index 4b44487..5ccd770 100644 --- a/arch/x86/include/asm/irq_vectors.h +++ b/arch/x86/include/asm/irq_vectors.h @@ -169,4 +169,13 @@ static inline int invalid_vm86_irq(int irq) # define NR_IRQS NR_IRQS_LEGACY #endif +#define irq_vector_name(vector) { vector, #vector } + +#define irq_vector_name_table \ + irq_vector_name(ERROR_APIC_VECTOR), \ + irq_vector_name(THERMAL_APIC_VECTOR), \ + irq_vector_name(THRESHOLD_APIC_VECTOR), \ + irq_vector_name(SPURIOUS_APIC_VECTOR), \ + irq_vector_name(X86_PLATFORM_IPI_VECTOR) + #endif /* _ASM_X86_IRQ_VECTORS_H */ diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index 39a222e..56bce91 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -34,6 +34,7 @@ #include <linux/dmi.h> #include <linux/smp.h> #include <linux/mm.h> +#include <trace/events/irq_vectors.h> #include <asm/irq_remapping.h> #include <asm/perf_event.h> @@ -895,7 +896,9 @@ void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs) */ irq_enter(); exit_idle(); + trace_local_timer_entry(LOCAL_TIMER_VECTOR); local_apic_timer_interrupt(); + trace_local_timer_exit(LOCAL_TIMER_VECTOR); irq_exit(); set_irq_regs(old_regs); @@ -1881,6 +1884,7 @@ void smp_spurious_interrupt(struct pt_regs *regs) irq_enter(); exit_idle(); + trace_arch_irq_vector_entry(SPURIOUS_APIC_VECTOR); /* * Check if this really is a spurious interrupt and ACK it * if it is a vectored one. Just in case... @@ -1895,6 +1899,7 @@ void smp_spurious_interrupt(struct pt_regs *regs) /* see sw-dev-man vol 3, chapter 7.4.13.5 */ pr_info("spurious APIC interrupt on CPU#%d, " "should never happen.\n", smp_processor_id()); + trace_arch_irq_vector_exit(SPURIOUS_APIC_VECTOR); irq_exit(); } @@ -1918,6 +1923,7 @@ void smp_error_interrupt(struct pt_regs *regs) irq_enter(); exit_idle(); + trace_arch_irq_vector_entry(ERROR_APIC_VECTOR); /* First tickle the hardware, only then report what went on. -- REW */ v0 = apic_read(APIC_ESR); apic_write(APIC_ESR, 0); @@ -1938,6 +1944,7 @@ void smp_error_interrupt(struct pt_regs *regs) apic_printk(APIC_DEBUG, KERN_CONT "\n"); + trace_arch_irq_vector_exit(ERROR_APIC_VECTOR); irq_exit(); } diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c index 47a1870..63c2cc8 100644 --- a/arch/x86/kernel/cpu/mcheck/therm_throt.c +++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c @@ -23,6 +23,7 @@ #include <linux/init.h> #include <linux/smp.h> #include <linux/cpu.h> +#include <trace/events/irq_vectors.h> #include <asm/processor.h> #include <asm/apic.h> @@ -382,8 +383,10 @@ asmlinkage void smp_thermal_interrupt(struct pt_regs *regs) { irq_enter(); exit_idle(); + trace_arch_irq_vector_entry(THERMAL_APIC_VECTOR); inc_irq_stat(irq_thermal_count); smp_thermal_vector(); + trace_arch_irq_vector_exit(THERMAL_APIC_VECTOR); irq_exit(); /* Ack only at the end to avoid potential reentry */ ack_APIC_irq(); diff --git a/arch/x86/kernel/cpu/mcheck/threshold.c b/arch/x86/kernel/cpu/mcheck/threshold.c index aa578ca..de74768 100644 --- a/arch/x86/kernel/cpu/mcheck/threshold.c +++ b/arch/x86/kernel/cpu/mcheck/threshold.c @@ -3,6 +3,7 @@ */ #include <linux/interrupt.h> #include <linux/kernel.h> +#include <trace/events/irq_vectors.h> #include <asm/irq_vectors.h> #include <asm/apic.h> @@ -21,8 +22,10 @@ asmlinkage void smp_threshold_interrupt(void) { irq_enter(); exit_idle(); + trace_arch_irq_vector_entry(THRESHOLD_APIC_VECTOR); inc_irq_stat(irq_threshold_count); mce_threshold_vector(); + trace_arch_irq_vector_exit(THRESHOLD_APIC_VECTOR); irq_exit(); /* Ack only at the end to avoid potential reentry */ ack_APIC_irq(); diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c index 3dafc60..575524d 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c @@ -18,6 +18,9 @@ #include <asm/mce.h> #include <asm/hw_irq.h> +#define CREATE_TRACE_POINTS +#include <trace/events/irq_vectors.h> + atomic_t irq_err_count; /* Function pointer for generic interrupt vector handling */ @@ -218,11 +221,13 @@ void smp_x86_platform_ipi(struct pt_regs *regs) exit_idle(); + trace_arch_irq_vector_entry(X86_PLATFORM_IPI_VECTOR); inc_irq_stat(x86_platform_ipis); if (x86_platform_ipi_callback) x86_platform_ipi_callback(); + trace_arch_irq_vector_exit(X86_PLATFORM_IPI_VECTOR); irq_exit(); set_irq_regs(old_regs); diff --git a/arch/x86/kernel/irq_work.c b/arch/x86/kernel/irq_work.c index ca8f703..2cf7505 100644 --- a/arch/x86/kernel/irq_work.c +++ b/arch/x86/kernel/irq_work.c @@ -8,13 +8,16 @@ #include <linux/irq_work.h> #include <linux/hardirq.h> #include <asm/apic.h> +#include <trace/events/irq_vectors.h> void smp_irq_work_interrupt(struct pt_regs *regs) { irq_enter(); ack_APIC_irq(); + trace_irq_work_entry(IRQ_WORK_VECTOR); inc_irq_stat(apic_irq_work_irqs); irq_work_run(); + trace_irq_work_exit(IRQ_WORK_VECTOR); irq_exit(); } diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c index a0b2f84..84e8102 100644 --- a/arch/x86/kernel/nmi.c +++ b/arch/x86/kernel/nmi.c @@ -28,6 +28,7 @@ #include <asm/mach_traps.h> #include <asm/nmi.h> #include <asm/x86_init.h> +#include <trace/events/irq_vectors.h> struct nmi_desc { spinlock_t lock; @@ -463,12 +464,14 @@ do_nmi(struct pt_regs *regs, long error_code) nmi_nesting_preprocess(regs); nmi_enter(); + trace_nmi_entry(NMI_VECTOR); inc_irq_stat(__nmi_count); if (!ignore_nmis) default_do_nmi(regs); + trace_nmi_exit(NMI_VECTOR); nmi_exit(); /* On i386, may loop back to preprocess */ diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c index 48d2b7d..5b2d6de 100644 --- a/arch/x86/kernel/smp.c +++ b/arch/x86/kernel/smp.c @@ -23,6 +23,7 @@ #include <linux/interrupt.h> #include <linux/cpu.h> #include <linux/gfp.h> +#include <trace/events/irq_vectors.h> #include <asm/mtrr.h> #include <asm/tlbflush.h> @@ -252,8 +253,10 @@ finish: void smp_reschedule_interrupt(struct pt_regs *regs) { ack_APIC_irq(); + trace_reschedule_entry(RESCHEDULE_VECTOR); inc_irq_stat(irq_resched_count); scheduler_ipi(); + trace_reschedule_exit(RESCHEDULE_VECTOR); /* * KVM uses this interrupt to force a cpu out of guest mode */ @@ -263,8 +266,10 @@ void smp_call_function_interrupt(struct pt_regs *regs) { ack_APIC_irq(); irq_enter(); + trace_call_function_entry(CALL_FUNCTION_VECTOR); generic_smp_call_function_interrupt(); inc_irq_stat(irq_call_count); + trace_call_function_exit(CALL_FUNCTION_VECTOR); irq_exit(); } @@ -272,8 +277,10 @@ void smp_call_function_single_interrupt(struct pt_regs *regs) { ack_APIC_irq(); irq_enter(); + trace_call_function_single_entry(CALL_FUNCTION_SINGLE_VECTOR); generic_smp_call_function_single_interrupt(); inc_irq_stat(irq_call_count); + trace_call_function_single_exit(CALL_FUNCTION_SINGLE_VECTOR); irq_exit(); } diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index 5e57e11..8a66e91 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c @@ -5,6 +5,7 @@ #include <linux/smp.h> #include <linux/interrupt.h> #include <linux/module.h> +#include <trace/events/irq_vectors.h> #include <linux/cpu.h> #include <asm/tlbflush.h> @@ -143,6 +144,7 @@ void smp_invalidate_interrupt(struct pt_regs *regs) sender = ~regs->orig_ax - INVALIDATE_TLB_VECTOR_START; f = &flush_state[sender]; + trace_invalidate_tlb_entry(INVALIDATE_TLB_VECTOR_START + sender); if (!cpumask_test_cpu(cpu, to_cpumask(f->flush_cpumask))) goto out; /* @@ -169,6 +171,7 @@ out: cpumask_clear_cpu(cpu, to_cpumask(f->flush_cpumask)); smp_mb__after_clear_bit(); inc_irq_stat(irq_tlb_count); + trace_invalidate_tlb_exit(INVALIDATE_TLB_VECTOR_START + sender); } static void flush_tlb_others_ipi(const struct cpumask *cpumask, diff --git a/include/trace/events/irq_vectors.h b/include/trace/events/irq_vectors.h new file mode 100644 index 0000000..7c0ccce --- /dev/null +++ b/include/trace/events/irq_vectors.h @@ -0,0 +1,231 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM irq_vectors + +#if !defined(_TRACE_IRQ_VECTORS_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_IRQ_VECTORS_H + +#include <linux/tracepoint.h> +#include <asm/irq.h> + +#ifndef irq_vector_name_table +#define irq_vector_name_table { -1, NULL } +#endif + + +/* + * This class is used by generic ,cross-architecture tracepoints. + */ +DECLARE_EVENT_CLASS(irq_vector, + + TP_PROTO(int vector), + + TP_ARGS(vector), + + TP_STRUCT__entry( + __field( int, vector ) + ), + + TP_fast_assign( + __entry->vector = vector; + ), + + TP_printk("vector=%d", __entry->vector) +); + +/* + * nmi_entry - called before enterring a nmi vector handler + */ +DEFINE_EVENT(irq_vector, nmi_entry, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * nmi_exit - called immediately after the interrupt vector + * handler returns + */ +DEFINE_EVENT(irq_vector, nmi_exit, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * local_timer_entry - called before enterring a local timer interrupt + * vector handler + */ +DEFINE_EVENT(irq_vector, local_timer_entry, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * local_timer_exit - called immediately after the interrupt vector + * handler returns + */ +DEFINE_EVENT(irq_vector, local_timer_exit, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * reschedule_entry - called before enterring a reschedule vector handler + */ +DEFINE_EVENT(irq_vector, reschedule_entry, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * reschedule_exit - called immediately after the interrupt vector + * handler returns + */ +DEFINE_EVENT(irq_vector, reschedule_exit, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * call_function_entry - called before enterring a call function + * vector handler + */ +DEFINE_EVENT(irq_vector, call_function_entry, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * call_function_exit - called immediately after the interrupt vector + * handler returns + */ +DEFINE_EVENT(irq_vector, call_function_exit, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * call_function_single_entry - called before enterring a call function + * single vector handler + */ +DEFINE_EVENT(irq_vector, call_function_single_entry, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * call_function_single_exit - called immediately after the interrupt vector + * handler returns + */ +DEFINE_EVENT(irq_vector, call_function_single_exit, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * irq_work_entry - called before enterring an irq work vector handler + */ +DEFINE_EVENT(irq_vector, irq_work_entry, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * irq_work_exit - called immediately after the interrupt vector + * handler returns + */ +DEFINE_EVENT(irq_vector, irq_work_exit, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * invalidate_tlb_entry - called before enterring an invalidate tlb + * vector handler + */ +DEFINE_EVENT(irq_vector, invalidate_tlb_entry, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * invalidate_tlb_exit - called immediately after the interrupt vector + * handler returns + */ +DEFINE_EVENT(irq_vector, invalidate_tlb_exit, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * This class is used by arch-specific tracepoints. + */ +DECLARE_EVENT_CLASS(arch_irq_vector, + + TP_PROTO(int vector), + + TP_ARGS(vector), + + TP_STRUCT__entry( + __field( int, vector ) + ), + + TP_fast_assign( + __entry->vector = vector; + ), + + TP_printk("vector=%d name=%s", __entry->vector, + __print_symbolic(__entry->vector, irq_vector_name_table)) +); + +/* + * arch_irq_vector_entry - called before enterring a interrupt vector handler + */ +DEFINE_EVENT(arch_irq_vector, arch_irq_vector_entry, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +/* + * arch_irq_vector_exit - called immediately after the interrupt vector + * handler returns + */ +DEFINE_EVENT(arch_irq_vector, arch_irq_vector_exit, + + TP_PROTO(int vector), + + TP_ARGS(vector) +); + +#endif /* _TRACE_IRQ_VECTORS_H */ + +/* This part must be outside protection */ +#include <trace/define_trace.h> -- 1.7.1 |
|
From: GlobalBono <of...@em...> - 2012-07-16 22:09:57
|
Cabestan. Layout Doble Asegúrate de no perderte ninguna oferta, añade of...@gl... a tu lista de contactos. Si no ves correctamente las imágenes, pulsa [ http://email.globalbono.com/E16072012164454.cfm?WL=563&WS=132430_6215484&WA=171 ] aquí [ http://email.globalbono.com/Go/index.cfm?WL=564&WS=132430_6215484&WA=171 ] Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=171 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=171 ] [ http://email.globalbono.com/Go/index.cfm?WL=507&WS=132430_6215484&WA=171 ] 67% Dto. Afilador de Cuchillos Afila tus cuchillos de una forma cómoda y segura con éste afilador. Como bien sabemos qu... 8,31 [ http://email.globalbono.com/Go/index.cfm?WL=507&WS=132430_6215484&WA=171 ] Antes 25,00Dto: 67% Ahorro: 16,69 [ http://email.globalbono.com/Go/index.cfm?WL=58&WS=132430_6215484&WA=171 ] 50% Dto. Aparato de Cardio Aparato para cardio con el que podrás quemar grasa y tonificar los músculos, ayudándote ... 124,84 [ http://email.globalbono.com/Go/index.cfm?WL=58&WS=132430_6215484&WA=171 ] Antes 250,00Dto: 50% Ahorro: 125,16 [ http://email.globalbono.com/Go/index.cfm?WL=145&WS=132430_6215484&WA=171 ] 52% Dto. Botellero Carrusel Botellero giratorio para que tengas siempre a mano tus vinos preferidos, en un muestrari... 23,53 [ http://email.globalbono.com/Go/index.cfm?WL=145&WS=132430_6215484&WA=171 ] Antes 49,00Dto: 52% Ahorro: 25,47 [ http://email.globalbono.com/Go/index.cfm?WL=471&WS=132430_6215484&WA=171 ] 59% Dto. Audífono Vuelve a escuchar bien con éste audífono de seis niveles de audición. Porque recuperar l... 20,00 [ http://email.globalbono.com/Go/index.cfm?WL=471&WS=132430_6215484&WA=171 ] Antes 49,00Dto: 59% Ahorro: 29,00 [ http://email.globalbono.com/Go/index.cfm?WL=504&WS=132430_6215484&WA=171 ] 63% Dto. Plantillas Viscoelásticas Camina, o estate de pie durante horas, sin dolor ni molestias, con estas plantillas visc... 5,59 [ http://email.globalbono.com/Go/index.cfm?WL=504&WS=132430_6215484&WA=171 ] Antes 15,00Dto: 63% Ahorro: 9,41 [ http://email.globalbono.com/Go/index.cfm?WL=518&WS=132430_6215484&WA=171 ] 50% Dto. Tranquilidad y Adrenalina en el Valle de Arán, Hotel Cuatro Estrellas Aléjate de playas masificadas y opta por la montaña y la adrenalina. Haz rafting en la N... 45,00 [ http://email.globalbono.com/Go/index.cfm?WL=518&WS=132430_6215484&WA=171 ] Antes 90,00Dto: 50% Ahorro: 45,00 [ http://email.globalbono.com/Go/index.cfm?WL=474&WS=132430_6215484&WA=171 ] 38% Dto. Escápate a Benicarló y Disfruta de sus Playas con Bandera Azul Disfruta de una playa sin igual en Benicarló, hospédate en éste económico hotel y no te ... 25,00 [ http://email.globalbono.com/Go/index.cfm?WL=474&WS=132430_6215484&WA=171 ] Antes 40,00Dto: 38% Ahorro: 15,00 [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=171 ] 44% Dto. Valencia y su Albufera, Conócela en Barca, Descansa en Hotel Cuatro Estrellas Valencia no es sólo playa. Es cultura, museos y arquitectura. Y es también su Albufera. ... 35,00 [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=171 ] Antes 63,00Dto: 44% Ahorro: 28,00 De conformidad con lo que establece la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal, le informamos que sus datos personales serán incorporados a un fichero bajo la responsabilidad de GlobalBono, con la finalidad de poder atender los compromisos derivados de la relación que mantenemos con usted. Puede ejercer sus derechos de acceso, cancelación, rectificación y oposición mediante un escrito a la dirección email in...@gl.... Si en el plazo de 30 días no nos comunica lo contrario, entenderemos que los datos no han sido modificados, que se compromete a notificarnos cualquier variación y que tenemos el consentimiento para utilizarlos a fin de poder fidelizar la relación entre las partes. ¿Quieres dejar de recibir este email? Haz click [ http://email.globalbono.com/baja/form_baja_GB.cfm?WL=182&WS=132430_6215484&WA=171 ] aquí. |
|
From: GlobalBono <of...@em...> - 2012-07-15 22:53:05
|
Cabestan. Layout Doble Asegúrate de no perderte ninguna oferta, añade of...@gl... a tu lista de contactos. Si no ves correctamente las imágenes, pulsa [ http://email.globalbono.com/E13072012165934.cfm?WL=541&WS=132430_6215484&WA=163 ] aquí [ http://email.globalbono.com/Go/index.cfm?WL=448&WS=132430_6215484&WA=163 ] Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=163 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=163 ] [ http://email.globalbono.com/Go/index.cfm?WL=473&WS=132430_6215484&WA=163 ] 53% Dto. Recargas de Cigarrillo Electrónico Para que puedas seguir echando humo mientras consigues dejar de fumar, te ofrecemos reca... 9,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=473&WS=132430_6215484&WA=163 ] Antes 19,00¤Dto: 53% Ahorro: 10,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=472&WS=132430_6215484&WA=163 ] 73% Dto. Cigarrillo Electrónico Si deseas dejar de fumar, éste es el aliado adecuado. Calmará esa costumbre de ponert... 10,49¤ [ http://email.globalbono.com/Go/index.cfm?WL=472&WS=132430_6215484&WA=163 ] Antes 39,00¤Dto: 73% Ahorro: 28,51¤ [ http://email.globalbono.com/Go/index.cfm?WL=469&WS=132430_6215484&WA=163 ] 75% Dto. Ahuyentador de Insectos y Roedores Líbrate de plagas, insectos y roedores con sólo enchufarlo. Éste ahuyentador transformar... 9,78¤ [ http://email.globalbono.com/Go/index.cfm?WL=469&WS=132430_6215484&WA=163 ] Antes 39,00¤Dto: 75% Ahorro: 29,22¤ [ http://email.globalbono.com/Go/index.cfm?WL=503&WS=132430_6215484&WA=163 ] 52% Dto. Organizador de Zapatos Ten organizados tus zapatos, por pares, de una forma de lo más práctica, con éste zapate... 9,10¤ [ http://email.globalbono.com/Go/index.cfm?WL=503&WS=132430_6215484&WA=163 ] Antes 19,00¤Dto: 52% Ahorro: 9,90¤ [ http://email.globalbono.com/Go/index.cfm?WL=474&WS=132430_6215484&WA=163 ] 38% Dto. Escápate a Benicarló y Disfruta de sus Playas con Bandera Azul Disfruta de una playa sin igual en Benicarló, hospédate en éste económico hotel y no te ... 25,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=474&WS=132430_6215484&WA=163 ] Antes 40,00¤Dto: 38% Ahorro: 15,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=163 ] 44% Dto. Valencia y su Albufera, Conócela en Barca, Descansa en Hotel Cuatro Estrellas Valencia no es sólo playa. Es cultura, museos y arquitectura. Y es también su Albufera. ... 35,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=163 ] Antes 63,00¤Dto: 44% Ahorro: 28,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=518&WS=132430_6215484&WA=163 ] 50% Dto. Tranquilidad y Adrenalina en el Valle de Arán, Hotel Cuatro Estrellas Aléjate de playas masificadas y opta por la montaña y la adrenalina. Haz rafting en la N... 45,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=518&WS=132430_6215484&WA=163 ] Antes 90,00¤Dto: 50% Ahorro: 45,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=530&WS=132430_6215484&WA=163 ] 47% Dto. Zaragoza y su Acuario Fluvial, el Más Grande de Europa Acércate a Zaragoza y podrás conocer el mayor Acuario de agua dulce de Europa. Con su di... 36,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=530&WS=132430_6215484&WA=163 ] Antes 68,00¤Dto: 47% Ahorro: 32,00¤ De conformidad con lo que establece la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal, le informamos que sus datos personales serán incorporados a un fichero bajo la responsabilidad de GlobalBono, con la finalidad de poder atender los compromisos derivados de la relación que mantenemos con usted. Puede ejercer sus derechos de acceso, cancelación, rectificación y oposición mediante un escrito a la dirección email in...@gl.... Si en el plazo de 30 días no nos comunica lo contrario, entenderemos que los datos no han sido modificados, que se compromete a notificarnos cualquier variación y que tenemos el consentimiento para utilizarlos a fin de poder fidelizar la relación entre las partes. ¿Quieres dejar de recibir este email? Haz click [ http://email.globalbono.com/baja/form_baja_GB.cfm?WL=182&WS=132430_6215484&WA=163 ] aquí. |