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: GlobalBono <of...@em...> - 2012-07-14 22:44:20
|
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/E13072012164453.cfm?WL=527&WS=132430_6215484&WA=156 ] aquí [ http://email.globalbono.com/Go/index.cfm?WL=448&WS=132430_6215484&WA=156 ] Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=156 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=156 ] [ http://email.globalbono.com/Go/index.cfm?WL=504&WS=132430_6215484&WA=156 ] 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=156 ] Antes 15,00¤Dto: 63% Ahorro: 9,41¤ [ http://email.globalbono.com/Go/index.cfm?WL=505&WS=132430_6215484&WA=156 ] 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=156 ] Antes 15,00¤Dto: 53% Ahorro: 8,01¤ [ http://email.globalbono.com/Go/index.cfm?WL=507&WS=132430_6215484&WA=156 ] 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=156 ] Antes 25,00¤Dto: 67% Ahorro: 16,69¤ [ http://email.globalbono.com/Go/index.cfm?WL=503&WS=132430_6215484&WA=156 ] 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=156 ] Antes 19,00¤Dto: 52% Ahorro: 9,90¤ [ http://email.globalbono.com/Go/index.cfm?WL=508&WS=132430_6215484&WA=156 ] 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=156 ] Antes 60,00¤Dto: 58% Ahorro: 35,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=498&WS=132430_6215484&WA=156 ] 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=156 ] Antes 90,00¤Dto: 44% Ahorro: 40,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=518&WS=132430_6215484&WA=156 ] 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=156 ] Antes 90,00¤Dto: 50% Ahorro: 45,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=506&WS=132430_6215484&WA=156 ] 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=156 ] Antes 59,00¤Dto: 36% Ahorro: 21,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=156 ] aquí. |
|
From: GlobalBono <of...@em...> - 2012-07-14 00:01:52
|
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/E13072012162632.cfm?WL=497&WS=132430_6215484&WA=150 ] aquí [ http://email.globalbono.com/Go/index.cfm?WL=448&WS=132430_6215484&WA=150 ] Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=150 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=150 ] [ http://email.globalbono.com/Go/index.cfm?WL=498&WS=132430_6215484&WA=150 ] 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, de antiguo ... 50,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=498&WS=132430_6215484&WA=150 ] Antes 90,00¤Dto: 44% Ahorro: 40,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=451&WS=132430_6215484&WA=150 ] 61% Dto. Aparato de Cavitación Reduce tu celulitis con éste aparato por ultrasonidos con el que reducir el volumen de grasa corpo... 984,12¤ [ http://email.globalbono.com/Go/index.cfm?WL=451&WS=132430_6215484&WA=150 ] Antes 2.500,00¤Dto: 61% Ahorro: 1.515,88¤ [ http://email.globalbono.com/Go/index.cfm?WL=145&WS=132430_6215484&WA=150 ] 52% Dto. Botellero Carrusel Botellero giratorio para que tengas siempre a mano tus vinos preferidos, en un muestrario bonito y... 23,53¤ [ http://email.globalbono.com/Go/index.cfm?WL=145&WS=132430_6215484&WA=150 ] Antes 49,00¤Dto: 52% Ahorro: 25,47¤ [ http://email.globalbono.com/Go/index.cfm?WL=471&WS=132430_6215484&WA=150 ] 59% Dto. Audífono Vuelve a escuchar bien con éste audífono de seis niveles de audición. Porque recuperar la perfecta... 20,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=471&WS=132430_6215484&WA=150 ] Antes 49,00¤Dto: 59% Ahorro: 29,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=470&WS=132430_6215484&WA=150 ] 61% Dto. Llavero Alcoholímetro Controla la cantidad de alcohol que has ingerido antes de ponerte a conducir. Éste descuento te pu... 11,25¤ [ http://email.globalbono.com/Go/index.cfm?WL=470&WS=132430_6215484&WA=150 ] Antes 29,00¤Dto: 61% Ahorro: 17,75¤ [ http://email.globalbono.com/Go/index.cfm?WL=469&WS=132430_6215484&WA=150 ] 75% Dto. Ahuyentador de Insectos y Roedores Líbrate de plagas, insectos y roedores con sólo enchufarlo. Éste ahuyentador transformará la red e... 9,78¤ [ http://email.globalbono.com/Go/index.cfm?WL=469&WS=132430_6215484&WA=150 ] Antes 39,00¤Dto: 75% Ahorro: 29,22¤ [ http://email.globalbono.com/Go/index.cfm?WL=472&WS=132430_6215484&WA=150 ] 73% Dto. Cigarrillo Electrónico Si deseas dejar de fumar, éste es el aliado adecuado. Calmará esa costumbre de ponerte algo en ... 10,49¤ [ http://email.globalbono.com/Go/index.cfm?WL=472&WS=132430_6215484&WA=150 ] Antes 39,00¤Dto: 73% Ahorro: 28,51¤ [ http://email.globalbono.com/Go/index.cfm?WL=473&WS=132430_6215484&WA=150 ] 53% Dto. Recargas de Cigarrillo Electrónico Para que puedas seguir echando humo mientras consigues dejar de fumar, te ofrecemos recargas para ... 9,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=473&WS=132430_6215484&WA=150 ] Antes 19,00¤Dto: 53% Ahorro: 10,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=475&WS=132430_6215484&WA=150 ] 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 Rascayú. Y... 35,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=475&WS=132430_6215484&WA=150 ] Antes 65,00¤Dto: 46% Ahorro: 30,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=468&WS=132430_6215484&WA=150 ] 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ás emblemát... 44,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=468&WS=132430_6215484&WA=150 ] Antes 70,00¤Dto: 37% Ahorro: 26,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=474&WS=132430_6215484&WA=150 ] 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 gastes ni ... 25,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=474&WS=132430_6215484&WA=150 ] Antes 40,00¤Dto: 38% Ahorro: 15,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=150 ] 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. Te invitam... 35,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=150 ] Antes 63,00¤Dto: 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=150 ] aquí. |
|
From: GlobalBono <of...@em...> - 2012-07-13 23:55:55
|
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/E13072012162632.cfm?WL=497&WS=132430_6215484&WA=149 ] aquí [ http://email.globalbono.com/Go/index.cfm?WL=448&WS=132430_6215484&WA=149 ] Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=149 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=149 ] [ http://email.globalbono.com/Go/index.cfm?WL=498&WS=132430_6215484&WA=149 ] 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, de antiguo ... 50,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=498&WS=132430_6215484&WA=149 ] Antes 90,00¤Dto: 44% Ahorro: 40,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=451&WS=132430_6215484&WA=149 ] 61% Dto. Aparato de Cavitación Reduce tu celulitis con éste aparato por ultrasonidos con el que reducir el volumen de grasa corpo... 984,12¤ [ http://email.globalbono.com/Go/index.cfm?WL=451&WS=132430_6215484&WA=149 ] Antes 2.500,00¤Dto: 61% Ahorro: 1.515,88¤ [ http://email.globalbono.com/Go/index.cfm?WL=145&WS=132430_6215484&WA=149 ] 52% Dto. Botellero Carrusel Botellero giratorio para que tengas siempre a mano tus vinos preferidos, en un muestrario bonito y... 23,53¤ [ http://email.globalbono.com/Go/index.cfm?WL=145&WS=132430_6215484&WA=149 ] Antes 49,00¤Dto: 52% Ahorro: 25,47¤ [ http://email.globalbono.com/Go/index.cfm?WL=471&WS=132430_6215484&WA=149 ] 59% Dto. Audífono Vuelve a escuchar bien con éste audífono de seis niveles de audición. Porque recuperar la perfecta... 20,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=471&WS=132430_6215484&WA=149 ] Antes 49,00¤Dto: 59% Ahorro: 29,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=470&WS=132430_6215484&WA=149 ] 61% Dto. Llavero Alcoholímetro Controla la cantidad de alcohol que has ingerido antes de ponerte a conducir. Éste descuento te pu... 11,25¤ [ http://email.globalbono.com/Go/index.cfm?WL=470&WS=132430_6215484&WA=149 ] Antes 29,00¤Dto: 61% Ahorro: 17,75¤ [ http://email.globalbono.com/Go/index.cfm?WL=469&WS=132430_6215484&WA=149 ] 75% Dto. Ahuyentador de Insectos y Roedores Líbrate de plagas, insectos y roedores con sólo enchufarlo. Éste ahuyentador transformará la red e... 9,78¤ [ http://email.globalbono.com/Go/index.cfm?WL=469&WS=132430_6215484&WA=149 ] Antes 39,00¤Dto: 75% Ahorro: 29,22¤ [ http://email.globalbono.com/Go/index.cfm?WL=472&WS=132430_6215484&WA=149 ] 73% Dto. Cigarrillo Electrónico Si deseas dejar de fumar, éste es el aliado adecuado. Calmará esa costumbre de ponerte algo en ... 10,49¤ [ http://email.globalbono.com/Go/index.cfm?WL=472&WS=132430_6215484&WA=149 ] Antes 39,00¤Dto: 73% Ahorro: 28,51¤ [ http://email.globalbono.com/Go/index.cfm?WL=473&WS=132430_6215484&WA=149 ] 53% Dto. Recargas de Cigarrillo Electrónico Para que puedas seguir echando humo mientras consigues dejar de fumar, te ofrecemos recargas para ... 9,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=473&WS=132430_6215484&WA=149 ] Antes 19,00¤Dto: 53% Ahorro: 10,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=475&WS=132430_6215484&WA=149 ] 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 Rascayú. Y... 35,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=475&WS=132430_6215484&WA=149 ] Antes 65,00¤Dto: 46% Ahorro: 30,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=468&WS=132430_6215484&WA=149 ] 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ás emblemát... 44,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=468&WS=132430_6215484&WA=149 ] Antes 70,00¤Dto: 37% Ahorro: 26,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=474&WS=132430_6215484&WA=149 ] 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 gastes ni ... 25,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=474&WS=132430_6215484&WA=149 ] Antes 40,00¤Dto: 38% Ahorro: 15,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=149 ] 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. Te invitam... 35,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=476&WS=132430_6215484&WA=149 ] Antes 63,00¤Dto: 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=149 ] aquí. |
|
From: Thomas G. <tg...@li...> - 2012-07-13 19:20:45
|
On Fri, 13 Jul 2012, Seiji Aguchi wrote: > > 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. > > OK. I will unify these to a single tracepoint. > "x86_irq_vector" or so? I'd rather see a real generic one, which can be used by other architectures for their esoteric non common vectors as well. Something like misc_vector_entry/exit. Any better name is welcome :) Thanks, tglx |
|
From: Seiji A. <sei...@hd...> - 2012-07-13 16:32:51
|
> > > > +DECLARE_EVENT_CLASS(irq_vector, > > > > + > > > > + TP_PROTO(int irq), > > > > + > > > > + TP_ARGS(irq), > > > > + > > > > + TP_STRUCT__entry( > > > > + __field( int, irq ) > > Shouldn't this be vector? > Ok. I will change it to vector. > > > > +DEFINE_EVENT(irq_vector, nmi_entry, DEFINE_EVENT(irq_vector, > > > > +nmi_exit, DEFINE_EVENT(irq_vector, local_timer_entry, > > > > +DEFINE_EVENT(irq_vector, local_timer_exit, > > > > +DEFINE_EVENT(irq_vector, reschedule_entry, > > > > +DEFINE_EVENT(irq_vector, reschedule_exit, > > > > +DEFINE_EVENT(irq_vector, call_function_entry, > > > > +DEFINE_EVENT(irq_vector, call_function_exit, > > > > +DEFINE_EVENT(irq_vector, call_function_single_entry, > > > > +DEFINE_EVENT(irq_vector, call_function_single_exit, > > > > +DEFINE_EVENT(irq_vector, irq_work_entry, DEFINE_EVENT(irq_vector, > > > > +irq_work_exit, DEFINE_EVENT(irq_vector, invalidate_tlb_entry, > > > > +DEFINE_EVENT(irq_vector, invalidate_tlb_exit, > > So this set is pretty generic and applicable across architectures. Good. > Thanks. > > > > +DEFINE_EVENT(irq_vector, error_apic_entry, > > > > +DEFINE_EVENT(irq_vector, error_apic_exit, > > > > +DEFINE_EVENT(irq_vector, thermal_apic_entry, > > > > +DEFINE_EVENT(irq_vector, thermal_apic_exit, > > > > +DEFINE_EVENT(irq_vector, threshold_apic_entry, > > > > +DEFINE_EVENT(irq_vector, threshold_apic_exit, > > > > +DEFINE_EVENT(irq_vector, spurious_apic_entry, > > > > +DEFINE_EVENT(irq_vector, spurious_apic_exit, > > > > +DEFINE_EVENT(irq_vector, x86_platform_ipi_entry, > > > > +DEFINE_EVENT(irq_vector, x86_platform_ipi_exit, > > That part is x86 specific. If we go that route, we'll end up with gazillions of arch specific vectors sooner than later. > > Either we find better and more widely applicable names for them, if there are similar functionalities on other architectures available, > or I'm not familiar with other architectures... >we should have a single generic tracepoint for those which cannot be be mapped to anything useful shared across architectures. > > 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. OK. I will unify these to a single tracepoint. "x86_irq_vector" or so? Seiji |
|
From: Thomas G. <tg...@li...> - 2012-07-13 16:15:56
|
On Fri, 13 Jul 2012, Seiji Aguchi wrote: > Thomas, > > Any comment? Yes :) > > > +DECLARE_EVENT_CLASS(irq_vector, > > > + > > > + TP_PROTO(int irq), > > > + > > > + TP_ARGS(irq), > > > + > > > + TP_STRUCT__entry( > > > + __field( int, irq ) Shouldn't this be vector? > > > +DEFINE_EVENT(irq_vector, nmi_entry, > > > +DEFINE_EVENT(irq_vector, nmi_exit, > > > +DEFINE_EVENT(irq_vector, local_timer_entry, > > > +DEFINE_EVENT(irq_vector, local_timer_exit, > > > +DEFINE_EVENT(irq_vector, reschedule_entry, > > > +DEFINE_EVENT(irq_vector, reschedule_exit, > > > +DEFINE_EVENT(irq_vector, call_function_entry, > > > +DEFINE_EVENT(irq_vector, call_function_exit, > > > +DEFINE_EVENT(irq_vector, call_function_single_entry, > > > +DEFINE_EVENT(irq_vector, call_function_single_exit, > > > +DEFINE_EVENT(irq_vector, irq_work_entry, > > > +DEFINE_EVENT(irq_vector, irq_work_exit, > > > +DEFINE_EVENT(irq_vector, invalidate_tlb_entry, > > > +DEFINE_EVENT(irq_vector, invalidate_tlb_exit, So this set is pretty generic and applicable across architectures. Good. > > > +DEFINE_EVENT(irq_vector, error_apic_entry, > > > +DEFINE_EVENT(irq_vector, error_apic_exit, > > > +DEFINE_EVENT(irq_vector, thermal_apic_entry, > > > +DEFINE_EVENT(irq_vector, thermal_apic_exit, > > > +DEFINE_EVENT(irq_vector, threshold_apic_entry, > > > +DEFINE_EVENT(irq_vector, threshold_apic_exit, > > > +DEFINE_EVENT(irq_vector, spurious_apic_entry, > > > +DEFINE_EVENT(irq_vector, spurious_apic_exit, > > > +DEFINE_EVENT(irq_vector, x86_platform_ipi_entry, > > > +DEFINE_EVENT(irq_vector, x86_platform_ipi_exit, That part is x86 specific. If we go that route, we'll end up with gazillions of arch specific vectors sooner than later. Either we find better and more widely applicable names for them, if there are similar functionalities on other architectures available, or we should have a single generic tracepoint for those which cannot be be mapped to anything useful shared across architectures. 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. Thanks, tglx |
|
From: Seiji A. <sei...@hd...> - 2012-07-13 14:51:15
|
Thomas, Any comment? Steve, > Thomas Gleixner is the unofficial (or is it now official?) maintainer of interrupts. You need his Ack for this change. Thank you for letting me know about this. Seiji > -----Original Message----- > From: Steven Rostedt [mailto:ro...@go...] > Sent: Thursday, July 05, 2012 4:44 PM > To: Seiji Aguchi; Thomas Gleixner > Cc: lin...@vg...; fwe...@gm...; 'mi...@el...' (mi...@el...); vna...@go...; x8...@ke...; > dle...@li...; Satoru Moriya > Subject: Re: [PATCH]trace,x86: add x86 irq vector tracepoints > > Thomas Gleixner is the unofficial (or is it now official?) maintainer of interrupts. You need his Ack for this change. > > -- Steve > > > On Tue, 2012-07-03 at 22:29 +0000, Seiji Aguchi wrote: > > As Vaibhav explained in the thread below, tracepoints for irq vectors > > is 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. > > > > To reduce the overhead, this patch modifies Vaibhav's one to enable each event independently. > > > > Signed-off-by: Vaibhav Nagarnaik <vna...@go...> > > Signed-off-by: Seiji Aguchi <sei...@hd...> > > > > --- > > 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 | 288 ++++++++++++++++++++++++++++++ > > 9 files changed, 322 insertions(+), 0 deletions(-) create mode > > 100644 include/trace/events/irq_vectors.h > > > > diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c > > index 39a222e..db219c9 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_spurious_apic_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_spurious_apic_exit(SPURIOUS_APIC_VECTOR); > > irq_exit(); > > } > > > > @@ -1918,6 +1923,7 @@ void smp_error_interrupt(struct pt_regs *regs) > > > > irq_enter(); > > exit_idle(); > > + trace_error_apic_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_error_apic_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..79cc87a 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_thermal_apic_entry(THERMAL_APIC_VECTOR); > > inc_irq_stat(irq_thermal_count); > > smp_thermal_vector(); > > + trace_thermal_apic_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..45f33a3 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_threshold_apic_entry(THRESHOLD_APIC_VECTOR); > > inc_irq_stat(irq_threshold_count); > > mce_threshold_vector(); > > + trace_threshold_apic_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..e6786a1 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_x86_platform_ipi_entry(X86_PLATFORM_IPI_VECTOR); > > inc_irq_stat(x86_platform_ipis); > > > > if (x86_platform_ipi_callback) > > x86_platform_ipi_callback(); > > > > + trace_x86_platform_ipi_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..4c1cb4e > > --- /dev/null > > +++ b/include/trace/events/irq_vectors.h > > @@ -0,0 +1,288 @@ > > +#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> > > + > > +DECLARE_EVENT_CLASS(irq_vector, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq), > > + > > + TP_STRUCT__entry( > > + __field( int, irq ) > > + ), > > + > > + TP_fast_assign( > > + __entry->irq = irq; > > + ), > > + > > + TP_printk("irq=%d", __entry->irq) > > +); > > + > > +/* > > + * nmi_entry - called before enterring a nmi vector handler */ > > +DEFINE_EVENT(irq_vector, nmi_entry, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * nmi_exit - called immediately after the interrupt vector > > + * handler returns > > + */ > > +DEFINE_EVENT(irq_vector, nmi_exit, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * local_timer_entry - called before enterring a local timer > > +interrupt > > + * vector handler > > + */ > > +DEFINE_EVENT(irq_vector, local_timer_entry, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * local_timer_exit - called immediately after the interrupt vector > > + * handler returns > > + */ > > +DEFINE_EVENT(irq_vector, local_timer_exit, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * error_apic_entry - called before enterring an error apic vector > > +handler */ DEFINE_EVENT(irq_vector, error_apic_entry, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * error_apic_exit - called immediately after the interrupt vector > > + * handler returns > > + */ > > +DEFINE_EVENT(irq_vector, error_apic_exit, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * reschedule_entry - called before enterring a reschedule vector > > +handler */ DEFINE_EVENT(irq_vector, reschedule_entry, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * reschedule_exit - called immediately after the interrupt vector > > + * handler returns > > + */ > > +DEFINE_EVENT(irq_vector, reschedule_exit, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * call_function_entry - called before enterring a call function > > + * vector handler > > + */ > > +DEFINE_EVENT(irq_vector, call_function_entry, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * call_function_exit - called immediately after the interrupt vector > > + * handler returns > > + */ > > +DEFINE_EVENT(irq_vector, call_function_exit, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * call_function_single_entry - called before enterring a call > > +function > > + * single vector handler > > + */ > > +DEFINE_EVENT(irq_vector, call_function_single_entry, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * call_function_single_exit - called immediately after the interrupt > > +vector > > + * handler returns > > + */ > > +DEFINE_EVENT(irq_vector, call_function_single_exit, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * thermal_apic_entry - called before enterring a thermal apic vector > > +handler */ DEFINE_EVENT(irq_vector, thermal_apic_entry, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * thermal_apic_exit - called immediately after the interrupt vector > > + * handler returns > > + */ > > +DEFINE_EVENT(irq_vector, thermal_apic_exit, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * threshold_apic_entry - called before enterring a threshold apic > > + * vector handler > > + */ > > +DEFINE_EVENT(irq_vector, threshold_apic_entry, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * threshold_apic_exit - called immediately after the interrupt > > +vector > > + * handler returns > > + */ > > +DEFINE_EVENT(irq_vector, threshold_apic_exit, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * spurious_apic_entry - called before enterring a spurious apic > > +vector handler */ DEFINE_EVENT(irq_vector, spurious_apic_entry, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * spurious_apic_exit - called immediately after the interrupt vector > > + * handler returns > > + */ > > +DEFINE_EVENT(irq_vector, spurious_apic_exit, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * irq_work_entry - called before enterring an irq work vector > > +handler */ DEFINE_EVENT(irq_vector, irq_work_entry, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * irq_work_exit - called immediately after the interrupt vector > > + * handler returns > > + */ > > +DEFINE_EVENT(irq_vector, irq_work_exit, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * x86_platform_ipi_entry - called before enterring a x86 platform > > +ipi > > + * vector handler > > + */ > > +DEFINE_EVENT(irq_vector, x86_platform_ipi_entry, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * x86_platform_ipi_exit - called immediately after the interrupt > > +vector > > + * handler returns > > + */ > > +DEFINE_EVENT(irq_vector, x86_platform_ipi_exit, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * invalidate_tlb_entry - called before enterring an invalidate tlb > > + * vector handler > > + */ > > +DEFINE_EVENT(irq_vector, invalidate_tlb_entry, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +/* > > + * invalidate_tlb_exit - called immediately after the interrupt > > +vector > > + * handler returns > > + */ > > +DEFINE_EVENT(irq_vector, invalidate_tlb_exit, > > + > > + TP_PROTO(int irq), > > + > > + TP_ARGS(irq) > > +); > > + > > +#endif /* _TRACE_IRQ_VECTORS_H */ > > + > > +/* This part must be outside protection */ #include > > +<trace/define_trace.h> > |
|
From: GlobalBono <of...@em...> - 2012-07-13 00:32:40
|
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/E12072012164053.cfm?WL=465&WS=132430_6215484&WA=142 ] aquí [ http://email.globalbono.com/Go/index.cfm?WL=448&WS=132430_6215484&WA=142 ] Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=142 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=142 ] [ http://email.globalbono.com/Go/index.cfm?WL=451&WS=132430_6215484&WA=142 ] 61% Dto. Aparato de Cavitación Reduce tu celulitis con éste aparato por ultrasonidos con el que r... 984,12¤ [ http://email.globalbono.com/Go/index.cfm?WL=451&WS=132430_6215484&WA=142 ] Antes 2.500,00¤Dto: 61% Ahorro: 1.515,88¤ [ http://email.globalbono.com/Go/index.cfm?WL=452&WS=132430_6215484&WA=142 ] 49% Dto. Piedras Para Bebida Piedras para que mantengas tus bebidas frías o calientes, como tú... 22,82¤ [ http://email.globalbono.com/Go/index.cfm?WL=452&WS=132430_6215484&WA=142 ] Antes 45,00¤Dto: 49% Ahorro: 22,18¤ [ http://email.globalbono.com/Go/index.cfm?WL=453&WS=132430_6215484&WA=142 ] 30% Dto. Grecia: Santorini, Mykonos y Atenas, 8 Días y 7 Noches. ¡Viaje para Singles! La cultura de Atenas con el... 1.325,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=453&WS=132430_6215484&WA=142 ] Antes 1.900,00¤Dto: 30% Ahorro: 575,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=194&WS=132430_6215484&WA=142 ] 56% Dto. Máquina de Sushi Máquina para hacer sushi que te ayudará a prepararlo perfectamente... 12,67¤ [ http://email.globalbono.com/Go/index.cfm?WL=194&WS=132430_6215484&WA=142 ] Antes 29,00¤Dto: 56% Ahorro: 16,33¤ [ http://email.globalbono.com/Go/index.cfm?WL=338&WS=132430_6215484&WA=142 ] 56% Dto. Romántica Escapada a Madrid en Pareja, con Spa, en Hotel Cuatro Estrellas. Escápate a Madrid, disfruta de una sesión de Spa en el Hotel Ágor... 34,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=338&WS=132430_6215484&WA=142 ] Antes 78,00¤Dto: 56% Ahorro: 44,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=353&WS=132430_6215484&WA=142 ] 55% Dto. Peana para Portátil Peana para tu ordenador portátil o netbook con doble ventilador, r... 17,70¤ [ http://email.globalbono.com/Go/index.cfm?WL=353&WS=132430_6215484&WA=142 ] Antes 39,00¤Dto: 55% Ahorro: 21,30¤ [ http://email.globalbono.com/Go/index.cfm?WL=335&WS=132430_6215484&WA=142 ] 52% Dto. Juego de Ping-Pong Diviértete con éste juego de ping pong electrónico, su sensor de m... 14,87¤ [ http://email.globalbono.com/Go/index.cfm?WL=335&WS=132430_6215484&WA=142 ] Antes 31,00¤Dto: 52% Ahorro: 16,13¤ [ http://email.globalbono.com/Go/index.cfm?WL=351&WS=132430_6215484&WA=142 ] 54% Dto. Asa para Ducha Asa para la pared de tu ducha, haz más segura la higiene diaria y ... 8,76¤ [ http://email.globalbono.com/Go/index.cfm?WL=351&WS=132430_6215484&WA=142 ] Antes 19,00¤Dto: 54% Ahorro: 10,24¤ [ http://email.globalbono.com/Go/index.cfm?WL=366&WS=132430_6215484&WA=142 ] 71% Dto. Báscula Pesa Equipajes Báscula para pesar tus maletas, paquetería, mascotas, piezas de ca... 8,46¤ [ http://email.globalbono.com/Go/index.cfm?WL=366&WS=132430_6215484&WA=142 ] Antes 29,00¤Dto: 71% Ahorro: 20,54¤ [ http://email.globalbono.com/Go/index.cfm?WL=356&WS=132430_6215484&WA=142 ] 46% Dto. Visita Las Médulas y Ponferrada, Historia y Cultura en Hotel 4* Pasa una noche en el Hotel Temple Ponferrada cuatro estrellas, pal... 39,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=356&WS=132430_6215484&WA=142 ] Antes 72,00¤Dto: 46% Ahorro: 33,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=367&WS=132430_6215484&WA=142 ] 59% Dto. Noche de Casino y Hotel Cuatro Estrellas en Aljarafe, Sevilla Ven a Sevilla, pasa una noche en el Hotel Vértice Aljarafe 4*, y d... 29,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=367&WS=132430_6215484&WA=142 ] Antes 70,00¤Dto: 59% Ahorro: 41,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=339&WS=132430_6215484&WA=142 ] 43% Dto. Historia y Naturaleza en Tortosa, Crucero por la Desembocadura del Ebro Descubre los secretos del Parque Natural del Delta del Ebro a bord... 39,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=339&WS=132430_6215484&WA=142 ] Antes 68,00¤Dto: 43% Ahorro: 29,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=142 ] aquí. |
|
From: GlobalBono <of...@em...> - 2012-07-12 01:14:17
|
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/E11072012155250.cfm?WL=445&WS=132430_6215484&WA=134 ] aquí Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=134 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=134 ] 55% Dto. Peana para Portátil Peana para tu ordenador portátil o netbook con doble ventilador, r... 17,70 [ http://email.globalbono.com/Go/index.cfm?WL=353&WS=132430_6215484&WA=134 ] Antes 39,00Dto: 55% Ahorro: 21,30 56% Dto. Marco Digital Llavero Llévate fotografías de recuerdo de tus seres queridos a todas part... 12,74 [ http://email.globalbono.com/Go/index.cfm?WL=340&WS=132430_6215484&WA=134 ] Antes 29,00Dto: 56% Ahorro: 16,26 43% Dto. Auricular Stereo Plata Auriculares estéreo plateados ergonómicos. Llévate tu música favor... 8,50 [ http://email.globalbono.com/Go/index.cfm?WL=334&WS=132430_6215484&WA=134 ] Antes 15,00Dto: 43% Ahorro: 6,50 54% Dto. Balón de Yoga Balón de pilates para que hagas tus ejercicios en casa, y tonifiqu... 18,00 [ http://email.globalbono.com/Go/index.cfm?WL=350&WS=132430_6215484&WA=134 ] Antes 39,00Dto: 54% Ahorro: 21,00 59% Dto. Noche de Casino y Hotel Cuatro Estrellas en Aljarafe, Sevilla Ven a Sevilla, pasa una noche en el Hotel Vértice Aljarafe 4*, y d... 29,00 [ http://email.globalbono.com/Go/index.cfm?WL=367&WS=132430_6215484&WA=134 ] Antes 70,00Dto: 59% Ahorro: 41,00 56% Dto. Romántica Escapada a Madrid en Pareja, con Spa, en Hotel Cuatro Estrellas. Escápate a Madrid, disfruta de una sesión de Spa en el Hotel Ágor... 34,00 [ http://email.globalbono.com/Go/index.cfm?WL=338&WS=132430_6215484&WA=134 ] Antes 78,00Dto: 56% Ahorro: 44,00 46% Dto. Visita Las Médulas y Ponferrada, Historia y Cultura en Hotel 4* Pasa una noche en el Hotel Temple Ponferrada cuatro estrellas, pal... 39,00 [ http://email.globalbono.com/Go/index.cfm?WL=356&WS=132430_6215484&WA=134 ] Antes 72,00Dto: 46% Ahorro: 33,00 33% Dto. Escápate a Soria y Visita el Yacimiento Celtíbero de Numancia Escapada cultural que incluye una visita al Yacimiento Celtíbero d... 40,00 [ http://email.globalbono.com/Go/index.cfm?WL=337&WS=132430_6215484&WA=134 ] Antes 60,00Dto: 33% Ahorro: 20,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=134 ] aquí. |
|
From: GlobalBono <of...@em...> - 2012-07-11 00:15:34
|
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/E10072012140722.cfm?WL=433&WS=132430_6215484&WA=125 ] aquí Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=125 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=125 ] 52% Dto. Juego de Ping-Pong Diviértete con éste juego de ping pong electrónico, su sensor de m... 14,87¤ [ http://email.globalbono.com/Go/index.cfm?WL=335&WS=132430_6215484&WA=125 ] Antes 31,00¤Dto: 52% Ahorro: 16,13¤ 31% Dto. Videocámara Sumergible Ir a bucear y grabar un vídeo serán a partir de ahora actividades ... 130,18¤ [ http://email.globalbono.com/Go/index.cfm?WL=336&WS=132430_6215484&WA=125 ] Antes 189,00¤Dto: 31% Ahorro: 58,82¤ 39% Dto. MP3 Clip Plata MP plateado con clip para que te lo puedas llevar a correr, montar... 17,70¤ [ http://email.globalbono.com/Go/index.cfm?WL=352&WS=132430_6215484&WA=125 ] Antes 29,00¤Dto: 39% Ahorro: 11,30¤ 64% Dto. Barranquismo en Rio Verde, Otivar, Granada Iníciate en el barranquismo con un equipo humano y material de pri... 25,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=410&WS=132430_6215484&WA=125 ] Antes 70,00¤Dto: 64% Ahorro: 45,00¤ 71% Dto. Báscula Pesa Equipajes Báscula para pesar tus maletas, paquetería, mascotas, piezas de ca... 8,46¤ [ http://email.globalbono.com/Go/index.cfm?WL=366&WS=132430_6215484&WA=125 ] Antes 29,00¤Dto: 71% Ahorro: 20,54¤ 56% Dto. Romántica Escapada a Madrid en Pareja, con Spa, en Hotel Cuatro Estrellas. Escápate a Madrid, disfruta de una sesión de Spa en el Hotel Ágor... 34,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=338&WS=132430_6215484&WA=125 ] Antes 78,00¤Dto: 56% Ahorro: 44,00¤ 43% Dto. Shopping en La Roca Village, Cava en el ApartHotel Atenea Valles Escapada Chic Shopping, con Tarjeta VIP con un 10 % de descuento e... 34,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=368&WS=132430_6215484&WA=125 ] Antes 60,00¤Dto: 43% Ahorro: 26,00¤ 43% Dto. Historia y Naturaleza en Tortosa, Crucero por la Desembocadura del Ebro Descubre los secretos del Parque Natural del Delta del Ebro a bord... 39,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=339&WS=132430_6215484&WA=125 ] Antes 68,00¤Dto: 43% Ahorro: 29,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=125 ] aquí. |
|
From: GlobalBono <of...@em...> - 2012-07-10 00:27:45
|
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/E09072012180327.cfm?WL=421&WS=132430_6215484&WA=118 ] aquí Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=118 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=118 ] 56% Dto. Marco Digital Llavero Llévate fotografías de recuerdo de tus seres queridos a todas part... 12,74¤ [ http://email.globalbono.com/Go/index.cfm?WL=340&WS=132430_6215484&WA=118 ] Antes 29,00¤Dto: 56% Ahorro: 16,26¤ 55% Dto. Peana para Portátil Peana para tu ordenador portátil o netbook con doble ventilador, r... 17,70¤ [ http://email.globalbono.com/Go/index.cfm?WL=353&WS=132430_6215484&WA=118 ] Antes 39,00¤Dto: 55% Ahorro: 21,30¤ 54% Dto. Balón de Yoga Balón de pilates para que hagas tus ejercicios en casa, y tonifiqu... 18,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=350&WS=132430_6215484&WA=118 ] Antes 39,00¤Dto: 54% Ahorro: 21,00¤ 43% Dto. Auricular Stereo Plata Auriculares estéreo plateados ergonómicos. Llévate tu música favor... 8,50¤ [ http://email.globalbono.com/Go/index.cfm?WL=334&WS=132430_6215484&WA=118 ] Antes 15,00¤Dto: 43% Ahorro: 6,50¤ 49% Dto. Relax y Spa en Torrellano, Elche, en el Hotel Areca 4* Disfruta de Spa y bombones en Torrellano, a 15 minutos de Elche, e... 38,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=355&WS=132430_6215484&WA=118 ] Antes 75,00¤Dto: 49% Ahorro: 37,00¤ 33% Dto. Escápate a Soria y Visita el Yacimiento Celtíbero de Numancia Escapada cultural que incluye una visita al Yacimiento Celtíbero d... 40,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=337&WS=132430_6215484&WA=118 ] Antes 60,00¤Dto: 33% Ahorro: 20,00¤ 46% Dto. Visita Las Médulas y Ponferrada, Historia y Cultura en Hotel 4* Pasa una noche en el Hotel Temple Ponferrada cuatro estrellas, pal... 39,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=356&WS=132430_6215484&WA=118 ] Antes 72,00¤Dto: 46% Ahorro: 33,00¤ 64% Dto. Barranquismo en Rio Verde, Otivar, Granada Iníciate en el barranquismo con un equipo humano y material de pri... 25,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=410&WS=132430_6215484&WA=118 ] Antes 70,00¤Dto: 64% Ahorro: 45,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=118 ] aquí. |
|
From: GlobalBono <of...@em...> - 2012-07-09 00:28:59
|
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/E06072012155040.cfm?WL=407&WS=132430_6215484&WA=108 ] aquí Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=108 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=108 ] 39% Dto. MP3 Clip Plata MP plateado con clip para que te lo puedas llevar a correr, montar... 17,70¤ [ http://email.globalbono.com/Go/index.cfm?WL=352&WS=132430_6215484&WA=108 ] Antes 29,00¤Dto: 39% Ahorro: 11,30¤ 52% Dto. Juego de Ping-Pong Diviértete con éste juego de ping pong electrónico, su sensor de m... 14,87¤ [ http://email.globalbono.com/Go/index.cfm?WL=335&WS=132430_6215484&WA=108 ] Antes 31,00¤Dto: 52% Ahorro: 16,13¤ 31% Dto. Videocámara Sumergible Ir a bucear y grabar un vídeo serán a partir de ahora actividades ... 130,18¤ [ http://email.globalbono.com/Go/index.cfm?WL=336&WS=132430_6215484&WA=108 ] Antes 189,00¤Dto: 31% Ahorro: 58,82¤ 71% Dto. Báscula Pesa Equipajes Báscula para pesar tus maletas, paquetería, mascotas, piezas de ca... 8,46¤ [ http://email.globalbono.com/Go/index.cfm?WL=366&WS=132430_6215484&WA=108 ] Antes 29,00¤Dto: 71% Ahorro: 20,54¤ 54% Dto. Escapada para Parejas en el Hotel Balneario Guitiriz, 4* Pasa una noche inolvidable con tu pareja en un balneario de ensueñ... 65,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=369&WS=132430_6215484&WA=108 ] Antes 140,00¤Dto: 54% Ahorro: 75,00¤ 56% Dto. Romántica Escapada a Madrid en Pareja, con Spa, en Hotel Cuatro Estrellas. Escápate a Madrid, disfruta de una sesión de Spa en el Hotel Ágor... 34,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=338&WS=132430_6215484&WA=108 ] Antes 78,00¤Dto: 56% Ahorro: 44,00¤ 54% Dto. Romanticismo en Granada, Junior Suite en el Hotel AH Granada Palace, 4* La noche granadina te espera, pásala en una Junior Suite en el hot... 41,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=354&WS=132430_6215484&WA=108 ] Antes 90,00¤Dto: 54% Ahorro: 49,00¤ 43% Dto. Historia y Naturaleza en Tortosa, Crucero por la Desembocadura del Ebro Descubre los secretos del Parque Natural del Delta del Ebro a bord... 39,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=339&WS=132430_6215484&WA=108 ] Antes 68,00¤Dto: 43% Ahorro: 29,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=108 ] aquí. |
|
From: GlobalBono <of...@em...> - 2012-07-08 00:29:08
|
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/E06072012154904.cfm?WL=405&WS=132430_6215484&WA=107 ] aquí Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=107 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=107 ] 54% Dto. Asa para Ducha Asa para la pared de tu ducha, haz más segura la higiene diaria y ... 8,76¤ [ http://email.globalbono.com/Go/index.cfm?WL=351&WS=132430_6215484&WA=107 ] Antes 19,00¤Dto: 54% Ahorro: 10,24¤ 55% Dto. Peana para Portátil Peana para tu ordenador portátil o netbook con doble ventilador, r... 17,70¤ [ http://email.globalbono.com/Go/index.cfm?WL=353&WS=132430_6215484&WA=107 ] Antes 39,00¤Dto: 55% Ahorro: 21,30¤ 39% Dto. MP3 Clip Plata MP plateado con clip para que te lo puedas llevar a correr, montar... 17,70¤ [ http://email.globalbono.com/Go/index.cfm?WL=352&WS=132430_6215484&WA=107 ] Antes 29,00¤Dto: 39% Ahorro: 11,30¤ 54% Dto. Balón de Yoga Balón de pilates para que hagas tus ejercicios en casa, y tonifiqu... 18,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=350&WS=132430_6215484&WA=107 ] Antes 39,00¤Dto: 54% Ahorro: 21,00¤ 43% Dto. Shopping en La Roca Village, Cava en el ApartHotel Atenea Valles Escapada Chic Shopping, con Tarjeta VIP con un 10 % de descuento e... 34,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=368&WS=132430_6215484&WA=107 ] Antes 60,00¤Dto: 43% Ahorro: 26,00¤ 49% Dto. Relax y Spa en Torrellano, Elche, en el Hotel Areca 4* Disfruta de Spa y bombones en Torrellano, a 15 minutos de Elche, e... 38,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=355&WS=132430_6215484&WA=107 ] Antes 75,00¤Dto: 49% Ahorro: 37,00¤ 59% Dto. Noche de Casino y Hotel Cuatro Estrellas en Aljarafe, Sevilla Ven a Sevilla, pasa una noche en el Hotel Vértice Aljarafe 4*, y d... 29,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=367&WS=132430_6215484&WA=107 ] Antes 70,00¤Dto: 59% Ahorro: 41,00¤ 54% Dto. Romanticismo en Granada, Junior Suite en el Hotel AH Granada Palace, 4* La noche granadina te espera, pásala en una Junior Suite en el hot... 41,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=354&WS=132430_6215484&WA=107 ] Antes 90,00¤Dto: 54% Ahorro: 49,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=107 ] aquí. |
|
From: GlobalBono <of...@em...> - 2012-07-07 00:27:34
|
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/E06072012154728.cfm?WL=403&WS=132430_6215484&WA=106 ] aquí Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=106 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=106 ] 52% Dto. Juego de Ping-Pong Diviértete con éste juego de ping pong electrónico, su sensor de m... 14,87¤ [ http://email.globalbono.com/Go/index.cfm?WL=335&WS=132430_6215484&WA=106 ] Antes 31,00¤Dto: 52% Ahorro: 16,13¤ 43% Dto. Auricular Stereo Plata Auriculares estéreo plateados ergonómicos. Llévate tu música favor... 8,50¤ [ http://email.globalbono.com/Go/index.cfm?WL=334&WS=132430_6215484&WA=106 ] Antes 15,00¤Dto: 43% Ahorro: 6,50¤ 31% Dto. Videocámara Sumergible Ir a bucear y grabar un vídeo serán a partir de ahora actividades ... 130,18¤ [ http://email.globalbono.com/Go/index.cfm?WL=336&WS=132430_6215484&WA=106 ] Antes 189,00¤Dto: 31% Ahorro: 58,82¤ 56% Dto. Marco Digital Llavero Llévate fotografías de recuerdo de tus seres queridos a todas part... 12,74¤ [ http://email.globalbono.com/Go/index.cfm?WL=340&WS=132430_6215484&WA=106 ] Antes 29,00¤Dto: 56% Ahorro: 16,26¤ 46% Dto. Visita Las Médulas y Ponferrada, Historia y Cultura en Hotel 4* Pasa una noche en el Hotel Temple Ponferrada cuatro estrellas, pal... 39,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=356&WS=132430_6215484&WA=106 ] Antes 72,00¤Dto: 46% Ahorro: 33,00¤ 33% Dto. Escápate a Soria y Visita el Yacimiento Celtíbero de Numancia Escapada cultural que incluye una visita al Yacimiento Celtíbero d... 40,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=337&WS=132430_6215484&WA=106 ] Antes 60,00¤Dto: 33% Ahorro: 20,00¤ 56% Dto. Romántica Escapada a Madrid en Pareja, con Spa, en Hotel Cuatro Estrellas. Escápate a Madrid, disfruta de una sesión de Spa en el Hotel Ágor... 34,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=338&WS=132430_6215484&WA=106 ] Antes 78,00¤Dto: 56% Ahorro: 44,00¤ 43% Dto. Historia y Naturaleza en Tortosa, Crucero por la Desembocadura del Ebro Descubre los secretos del Parque Natural del Delta del Ebro a bord... 39,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=339&WS=132430_6215484&WA=106 ] Antes 68,00¤Dto: 43% Ahorro: 29,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=106 ] aquí. |
|
From: GlobalBono <of...@gl...> - 2012-07-06 22:30:58
|
Asegúrate de no perderte ninguna oferta, añade of...@gl... a tu lista de contactos.
Si no ves correctamente las imágenes, pulsa aquí ( "about:{mirrorpage}" )
Tus Ofertas de hoy
Síguenos en:
( "http://es-es.facebook.com/GlobalBono" ) ( "https://twitter.com/#!/GlobalBono" )
52% Dto. Juego de Ping-Pong
Diviértete con éste juego de ping pong electrónico, su sensor de m...
14,87€
( "http://www.globalbono.com/barcelona/juego-de-ping-pong.html" )
Antes
31,00€ Dto: 52%
Ahorro: 16,13€
43% Dto. Auricular Stereo Plata
Auriculares estéreo plateados ergonómicos. Llévate tu música favor...
8,50€
( "http://www.globalbono.com/barcelona/auricular-stereo-plata.html" )
Antes
15,00€ Dto: 43%
Ahorro: 6,50€
31% Dto. Videocámara Sumergible
Ir a bucear y grabar un vídeo serán a partir de ahora actividades ...
130,18€
( "http://www.globalbono.com/barcelona/videocamara-sumergible.html" )
Antes
189,00€ Dto: 31%
Ahorro: 58,82€
56% Dto. Marco Digital Llavero
Llévate fotografías de recuerdo de tus seres queridos a todas part...
12,74€
( "http://www.globalbono.com/barcelona/marco-digital-llavero.html" )
Antes
29,00€ Dto: 56%
Ahorro: 16,26€
46% Dto. Visita Las Médulas y Ponferrada, Historia y Cultura en Hotel 4*
Pasa una noche en el Hotel Temple Ponferrada cuatro estrellas, pal...
39,00€
( "http://www.globalbono.com/barcelona/visita-las-medulas-y-ponferrada-historia-y-cultura-en-hotel-4.html" )
Antes
72,00€ Dto: 46%
Ahorro: 33,00€
33% Dto. Escápate a Soria y Visita el Yacimiento Celtíbero de Numancia
Escapada cultural que incluye una visita al Yacimiento Celtíbero d...
40,00€
( "http://www.globalbono.com/barcelona/escapate-a-soria-y-visita-el-yacimiento-celtibero-de-numancia.html" )
Antes
60,00€ Dto: 33%
Ahorro: 20,00€
56% Dto. Romántica Escapada a Madrid en Pareja, con Spa, en Hotel Cuatro Estrellas.
Escápate a Madrid, disfruta de una sesión de Spa en el Hotel Ágor...
34,00€
( "http://www.globalbono.com/barcelona/romantica-escapada-a-madrid-en-pareja-con-spa-en-hotel-cuatro-estrellas.html" )
Antes
78,00€ Dto: 56%
Ahorro: 44,00€
43% Dto. Historia y Naturaleza en Tortosa, Crucero por la Desembocadura del Ebro
Descubre los secretos del Parque Natural del Delta del Ebro a bord...
39,00€
( "http://www.globalbono.com/barcelona/historia-y-naturaleza-en-tortosa-crucero-por-la-desembocadura-del-ebro.html" )
Antes
68,00€ Dto: 43%
Ahorro: 29,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 aquí ( "about:{optoutlink}" ).
|
|
From: Ingo M. <mi...@ke...> - 2012-07-06 09:22:48
|
* Steven Rostedt <ro...@go...> wrote: > Thomas Gleixner is the unofficial (or is it now official?) > maintainer of interrupts. You need his Ack for this change. It's been official for a while: IRQ SUBSYSTEM M: Thomas Gleixner <tg...@li...> S: Maintained T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core F: kernel/irq/ I guess the 'F' pattern ought to be extended a bit, to include relevant arch/ files, such as arch/x86/kernel/irq.c. F: arch/*/kernel/irq.c or so? Thanks, Ingo |
|
From: GlobalBono <of...@em...> - 2012-07-06 01:27:56
|
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/E05072012165809.cfm?WL=331&WS=132430_6215484&WA=90 ] aquí Tus Ofertas de hoy Síguenos en: [ http://email.globalbono.com/Go/index.cfm?WL=50&WS=132430_6215484&WA=90 ] [ http://email.globalbono.com/Go/index.cfm?WL=51&WS=132430_6215484&WA=90 ] 50% Dto. Afeitadora Portátil Ya no tendrás excusa para ir sin afeitar, ni siquiera la de que as... 19,45¤ [ http://email.globalbono.com/Go/index.cfm?WL=310&WS=132430_6215484&WA=90 ] Antes 38,90¤Dto: 50% Ahorro: 19,45¤ 50% Dto. Escapada para Aprender a Surfear en Riegu (Asturias) Riegu, en Asturias, coge esta ola y recibe clases de surf junto al... 127,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=192&WS=132430_6215484&WA=90 ] Antes 254,00¤Dto: 50% Ahorro: 127,00¤ 53% Dto. Mini Plancha para Pelo Deja tu pelo perfecto aunque estés de viaje, con esta mini plancha... 16,40¤ [ http://email.globalbono.com/Go/index.cfm?WL=279&WS=132430_6215484&WA=90 ] Antes 35,00¤Dto: 53% Ahorro: 18,60¤ 55% Dto. Picadora de Hielo Olvídate de pica hielos manuales que dan miedo, y llévate a casa e... 22,28¤ [ http://email.globalbono.com/Go/index.cfm?WL=281&WS=132430_6215484&WA=90 ] Antes 49,00¤Dto: 55% Ahorro: 26,72¤ 53% Dto. Radio con Dinamo Radio con dinamo para que puedas olvidarte, si quieres, de enchufe... 21,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=311&WS=132430_6215484&WA=90 ] Antes 45,00¤Dto: 53% Ahorro: 24,00¤ 53% Dto. Andorra, Dos Días y Una Noche al Fresco Bajando en Tobotronc Sube a Andorra y pasa dos días y una noche en régimen de alojamien... 28,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=297&WS=132430_6215484&WA=90 ] Antes 60,00¤Dto: 53% Ahorro: 32,00¤ 45% Dto. Dos días y Una noche entre Trufas y Burbujas en Algeciras. Pasa dos días y una noche entre chocolate y burbujas en el Holiday... 33,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=284&WS=132430_6215484&WA=90 ] Antes 60,00¤Dto: 45% Ahorro: 27,00¤ 50% Dto. Oviedo, Gastronomía de Lujo, Dos Días y Una Noche en Hotel Cinco Estrellas Conoce Oviedo mientras te deleitas con un menú típico asturiano, y... 60,00¤ [ http://email.globalbono.com/Go/index.cfm?WL=240&WS=132430_6215484&WA=90 ] Antes 120,00¤Dto: 50% Ahorro: 60,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=90 ] aquí. |
|
From: Seiji A. <sei...@hd...> - 2012-07-06 00:24:51
|
> 10K is almost certainly more than we need for 99.9% of problems ... I set the default there to test out that pstore would correctly > break a dump into more than one back-end ERST record (about 7K) and never changed it back. So don't treat 10K with any magic > reverence. It's easy to argue that a smaller number is good enough. OK. > There are certainly less over-write worries if you can handle a few (4, 5, 6) simultaneously logged errors of sufficient size to be useful > (must capture all of the panic strings, backtrace and register dump plus "enough" lines before the panic to see any obvious issues). > To handle multiple logs, I will probably introduce a new kernel parameter, like efi_pstore_max_log_num. Users can calculate overall consumption of NVRAM for kmsg logging with it. > If you only get to store two errors, then perhaps one non-over writable panic type entry, and one other "most recent" type entry? > > With just one, like current EFI, then there are certainly hard choices that might not be the best for certain pathological situations. I will consider a policy for multiple logging from now. (In case where oops happens multiple times and kernel hangs, oldest oops may be informative.... I can't decide the policy at this time.) Seiji |
|
From: Luck, T. <ton...@in...> - 2012-07-05 23:13:12
|
> Default value of pstore.kmsg_byte is 10KB. > I think efi_pstore can log 60KB(= 10KB X 6)... 10K is almost certainly more than we need for 99.9% of problems ... I set the default there to test out that pstore would correctly break a dump into more than one back-end ERST record (about 7K) and never changed it back. So don't treat 10K with any magic reverence. It's easy to argue that a smaller number is good enough. There are certainly less over-write worries if you can handle a few (4, 5, 6) simultaneously logged errors of sufficient size to be useful (must capture all of the panic strings, backtrace and register dump plus "enough" lines before the panic to see any obvious issues). If you only get to store two errors, then perhaps one non-over writable panic type entry, and one other "most recent" type entry? With just one, like current EFI, then there are certainly hard choices that might not be the best for certain pathological situations. -Tony |
|
From: Steven R. <ro...@go...> - 2012-07-05 21:56:31
|
Thomas Gleixner is the unofficial (or is it now official?) maintainer of interrupts. You need his Ack for this change. -- Steve On Tue, 2012-07-03 at 22:29 +0000, Seiji Aguchi wrote: > As Vaibhav explained in the thread below, tracepoints for irq vectors > is 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. > > To reduce the overhead, this patch modifies Vaibhav's one to enable each event independently. > > Signed-off-by: Vaibhav Nagarnaik <vna...@go...> > Signed-off-by: Seiji Aguchi <sei...@hd...> > > --- > 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 | 288 ++++++++++++++++++++++++++++++ > 9 files changed, 322 insertions(+), 0 deletions(-) > create mode 100644 include/trace/events/irq_vectors.h > > diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c > index 39a222e..db219c9 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_spurious_apic_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_spurious_apic_exit(SPURIOUS_APIC_VECTOR); > irq_exit(); > } > > @@ -1918,6 +1923,7 @@ void smp_error_interrupt(struct pt_regs *regs) > > irq_enter(); > exit_idle(); > + trace_error_apic_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_error_apic_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..79cc87a 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_thermal_apic_entry(THERMAL_APIC_VECTOR); > inc_irq_stat(irq_thermal_count); > smp_thermal_vector(); > + trace_thermal_apic_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..45f33a3 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_threshold_apic_entry(THRESHOLD_APIC_VECTOR); > inc_irq_stat(irq_threshold_count); > mce_threshold_vector(); > + trace_threshold_apic_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..e6786a1 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_x86_platform_ipi_entry(X86_PLATFORM_IPI_VECTOR); > inc_irq_stat(x86_platform_ipis); > > if (x86_platform_ipi_callback) > x86_platform_ipi_callback(); > > + trace_x86_platform_ipi_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..4c1cb4e > --- /dev/null > +++ b/include/trace/events/irq_vectors.h > @@ -0,0 +1,288 @@ > +#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> > + > +DECLARE_EVENT_CLASS(irq_vector, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq), > + > + TP_STRUCT__entry( > + __field( int, irq ) > + ), > + > + TP_fast_assign( > + __entry->irq = irq; > + ), > + > + TP_printk("irq=%d", __entry->irq) > +); > + > +/* > + * nmi_entry - called before enterring a nmi vector handler > + */ > +DEFINE_EVENT(irq_vector, nmi_entry, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * nmi_exit - called immediately after the interrupt vector > + * handler returns > + */ > +DEFINE_EVENT(irq_vector, nmi_exit, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * local_timer_entry - called before enterring a local timer interrupt > + * vector handler > + */ > +DEFINE_EVENT(irq_vector, local_timer_entry, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * local_timer_exit - called immediately after the interrupt vector > + * handler returns > + */ > +DEFINE_EVENT(irq_vector, local_timer_exit, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * error_apic_entry - called before enterring an error apic vector handler > + */ > +DEFINE_EVENT(irq_vector, error_apic_entry, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * error_apic_exit - called immediately after the interrupt vector > + * handler returns > + */ > +DEFINE_EVENT(irq_vector, error_apic_exit, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * reschedule_entry - called before enterring a reschedule vector handler > + */ > +DEFINE_EVENT(irq_vector, reschedule_entry, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * reschedule_exit - called immediately after the interrupt vector > + * handler returns > + */ > +DEFINE_EVENT(irq_vector, reschedule_exit, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * call_function_entry - called before enterring a call function > + * vector handler > + */ > +DEFINE_EVENT(irq_vector, call_function_entry, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * call_function_exit - called immediately after the interrupt vector > + * handler returns > + */ > +DEFINE_EVENT(irq_vector, call_function_exit, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * call_function_single_entry - called before enterring a call function > + * single vector handler > + */ > +DEFINE_EVENT(irq_vector, call_function_single_entry, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * call_function_single_exit - called immediately after the interrupt vector > + * handler returns > + */ > +DEFINE_EVENT(irq_vector, call_function_single_exit, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * thermal_apic_entry - called before enterring a thermal apic vector handler > + */ > +DEFINE_EVENT(irq_vector, thermal_apic_entry, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * thermal_apic_exit - called immediately after the interrupt vector > + * handler returns > + */ > +DEFINE_EVENT(irq_vector, thermal_apic_exit, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * threshold_apic_entry - called before enterring a threshold apic > + * vector handler > + */ > +DEFINE_EVENT(irq_vector, threshold_apic_entry, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * threshold_apic_exit - called immediately after the interrupt vector > + * handler returns > + */ > +DEFINE_EVENT(irq_vector, threshold_apic_exit, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * spurious_apic_entry - called before enterring a spurious apic vector handler > + */ > +DEFINE_EVENT(irq_vector, spurious_apic_entry, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * spurious_apic_exit - called immediately after the interrupt vector > + * handler returns > + */ > +DEFINE_EVENT(irq_vector, spurious_apic_exit, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * irq_work_entry - called before enterring an irq work vector handler > + */ > +DEFINE_EVENT(irq_vector, irq_work_entry, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * irq_work_exit - called immediately after the interrupt vector > + * handler returns > + */ > +DEFINE_EVENT(irq_vector, irq_work_exit, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * x86_platform_ipi_entry - called before enterring a x86 platform ipi > + * vector handler > + */ > +DEFINE_EVENT(irq_vector, x86_platform_ipi_entry, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * x86_platform_ipi_exit - called immediately after the interrupt vector > + * handler returns > + */ > +DEFINE_EVENT(irq_vector, x86_platform_ipi_exit, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * invalidate_tlb_entry - called before enterring an invalidate tlb > + * vector handler > + */ > +DEFINE_EVENT(irq_vector, invalidate_tlb_entry, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +/* > + * invalidate_tlb_exit - called immediately after the interrupt vector > + * handler returns > + */ > +DEFINE_EVENT(irq_vector, invalidate_tlb_exit, > + > + TP_PROTO(int irq), > + > + TP_ARGS(irq) > +); > + > +#endif /* _TRACE_IRQ_VECTORS_H */ > + > +/* This part must be outside protection */ > +#include <trace/define_trace.h> |
|
From: Seiji A. <sei...@hd...> - 2012-07-05 20:58:15
|
> I understand the above scenario and was the one of was thinking of when I replied. My counter argument is if the NVRAM isn't big > enough to hold more than two panics, then the logs are too big. > > This stuff should be designed to easily accomodate multiple logs (like say 6 or so), then the above situation doesn't matter. > > I just feel this is adding complexity to something that shouldn't need it. > I see. I understand your argument right now. My patch is on assumption that efi_pstore can handle just one log. But if it can handle multiple logs, we can solve my concern simply. Default value of pstore.kmsg_byte is 10KB. I think efi_pstore can log 60KB(= 10KB X 6)... Original code is developed by Matthew and he is EFI expert. So, I have to ask Matthew why current write callback simply erases old entries. Matthew, Do you think efI_pstore should handle just one log? Or do you think latest message is most important? |
|
From: Don Z. <dz...@re...> - 2012-07-05 20:24:54
|
On Thu, Jul 05, 2012 at 08:05:06PM +0000, Seiji Aguchi wrote: > Don, > > Thank you for giving me your comments. > Let me explain what I'm thinking now. > > > I would rather see no records overwritten and just make sure there is enough space for a dozen or so records to buffer multiple > > panics before userspace can run. > > > > Implementing policy like this in the kernel seems like it would be a constant battle between everyone's view point of what is > > important and not important. > > > > I would rather take the viewpoint, if it is important to log it in a space limited NVRAM, then it is important enough not to overwrite > > until userspace explicitly asks it to be deleted. Otherwise why log it, if it is not important? > > > > If the simple policy above is workable, it is easy. > But we have to discuss whether it is useful in each specific use case. > When I posted a patch introducing kernel parameter ,efi_pstore_overwrite, > I thought same thing above. But I changed my mind while considering Tony's comment.... > > When an user can read kmsg via /dev/pstore and erase old entries, we don't need to care. > (Hopefully, some user space apps will be developed near future.) > > Problem here is at very final stage and early stage which an user can't see /dev/pstore. > > 1) At very final stage (system is panicking/rebooting.) > > 1-1) Kernel panics while system is rebooting(or oopsing) > > When kernel panics while system is rebooting, panic message should be logged rather than skipping it. > > 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> > > 1-2) Double panic > In this case, 1s panic message should not be overwritten to detect root cause of system failure. > > 1-3) ) Kernel reboots while system is panicking > Never happens because kmsg_dump in panic case is serialized via smp_send_stop() > > 2) At very early stage (system is booting up.) > 2-1)Previous event is panic, and then panic happens again at boot time. > Previous panic should not be overwritten. > > 2-2)Previous event is reboot, and then panic happens at boot time > This depends on situation. > Some customer would like to have previous reboot message. > Others may want to get latter panic message. > > So, in my current patch, I just decided a policy which error message is prioritized higher than normal message. I understand the above scenario and was the one of was thinking of when I replied. My counter argument is if the NVRAM isn't big enough to hold more than two panics, then the logs are too big. This stuff should be designed to easily accomodate multiple logs (like say 6 or so), then the above situation doesn't matter. I just feel this is adding complexity to something that shouldn't need it. Cheers, Don |
|
From: Seiji A. <sei...@hd...> - 2012-07-05 20:05:20
|
Don,
Thank you for giving me your comments.
Let me explain what I'm thinking now.
> I would rather see no records overwritten and just make sure there is enough space for a dozen or so records to buffer multiple
> panics before userspace can run.
>
> Implementing policy like this in the kernel seems like it would be a constant battle between everyone's view point of what is
> important and not important.
>
> I would rather take the viewpoint, if it is important to log it in a space limited NVRAM, then it is important enough not to overwrite
> until userspace explicitly asks it to be deleted. Otherwise why log it, if it is not important?
>
If the simple policy above is workable, it is easy.
But we have to discuss whether it is useful in each specific use case.
When I posted a patch introducing kernel parameter ,efi_pstore_overwrite,
I thought same thing above. But I changed my mind while considering Tony's comment....
When an user can read kmsg via /dev/pstore and erase old entries, we don't need to care.
(Hopefully, some user space apps will be developed near future.)
Problem here is at very final stage and early stage which an user can't see /dev/pstore.
1) At very final stage (system is panicking/rebooting.)
1-1) Kernel panics while system is rebooting(or oopsing)
When kernel panics while system is rebooting, panic message should be logged rather than skipping it.
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>
1-2) Double panic
In this case, 1s panic message should not be overwritten to detect root cause of system failure.
1-3) ) Kernel reboots while system is panicking
Never happens because kmsg_dump in panic case is serialized via smp_send_stop()
2) At very early stage (system is booting up.)
2-1)Previous event is panic, and then panic happens again at boot time.
Previous panic should not be overwritten.
2-2)Previous event is reboot, and then panic happens at boot time
This depends on situation.
Some customer would like to have previous reboot message.
Others may want to get latter panic message.
So, in my current patch, I just decided a policy which error message is prioritized higher than normal message.
In the most case, an user can read/erase entries in NVRAM and get all messages.
I think it is understandable setting a policy in preparation for rare situation.
Seiji
|
|
From: Luck, T. <ton...@in...> - 2012-07-05 20:03:53
|
>> - In case where an existing entry is oops/shutdown/halt/poweroff >> - It is erasable if an error ,panic, emergency or oops, happen in new event. >> - Oops is erasable because system may still be running and its message may be saved >> into /var/log/messages. > > Then why save it to begin with? It would be useful in the case where an OOPS is followed quickly by a system hang. -Tony |
|
From: Don Z. <dz...@re...> - 2012-07-05 13:32:16
|
On Tue, Jul 03, 2012 at 11:35:47PM +0000, Seiji Aguchi wrote:
> This patch introduces a following rule checking if an existing entry in NVRAM are erasable to avoid missing
> a critical message ,such as panic, before an user check it.
I am not a big fan of this policy.
>
> - 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.
Ok.
>
> - In case where an existing entry is oops/shutdown/halt/poweroff
> - It is erasable if an error ,panic, emergency or oops, happen in new event.
> - Oops is erasable because system may still be running and its message may be saved
> into /var/log/messages.
Then why save it to begin with?
> - Also, normal event ,shutdown/halt/poweroff, is erasable because error message is
> more important than normal message.
Then why happens if you are using these messages to debug a problem on
your system? It would seem one could be misled unless you set a flag
stating that a log was overwritten somewhere.
>
> - In case where an existing entry is unknown event
> - It is erasable because any event supported by pstore outweighs unsupported events.
Again, how does an 'unknown' event get recorded? Shouldn't all events be
known?
I would rather see no records overwritten and just make sure there is
enough space for a dozen or so records to buffer multiple panics before
userspace can run.
Implementing policy like this in the kernel seems like it would be a
constant battle between everyone's view point of what is important and not
important.
I would rather take the viewpoint, if it is important to log it in a space
limited NVRAM, then it is important enough not to overwrite until
userspace explicitly asks it to be deleted. Otherwise why log it, if it
is not important?
Cheers,
Don
>
> Signed-off-by: Seiji Aguchi <sei...@hd...>
> ---
> drivers/firmware/efivars.c | 48 +++++++++++++++++++++++++++++++++++++++++++-
> fs/pstore/platform.c | 4 +-
> include/linux/pstore.h | 5 ++++
> 3 files changed, 54 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c index 4929254..54d9bc6 100644
> --- a/drivers/firmware/efivars.c
> +++ b/drivers/firmware/efivars.c
> @@ -685,6 +685,45 @@ static ssize_t efi_pstore_read(u64 *id, enum pstore_type_id *type,
> return 0;
> }
>
> +
> +static bool can_erase_entry(struct efivar_entry *entry, enum kmsg_dump_reason
> + new_reason)
> +{
> + int prev_reason = 0;
> + const char *prev_why;
> + bool is_erasable = 0;
> +
> + /* Get a reason of previous message */
> + while (1) {
> + prev_why = pstore_get_reason_str(prev_reason);
> + if (!strncmp(entry->var.Data, prev_why, strlen(prev_why)))
> + break;
> + prev_reason++;
> + }
> +
> + /* check if exisiting 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:
> + /* Can erase unknown message */
> + is_erasable = 1;
> + }
> +
> + return is_erasable;
> +}
> +
> 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) @@ -706,7 +745,7 @@ static int efi_pstore_write(enum pstore_type_id type,
> efi_name[i] = stub_name[i];
>
> /*
> - * Clean up any entries with the same name
> + * Search for erasable entry
> */
>
> list_for_each_entry(entry, &efivars->list, list) { @@ -721,6 +760,13 @@ static int efi_pstore_write(enum pstore_type_id type,
> if (entry->var.VariableName[utf16_strlen(efi_name)] == 0)
> continue;
>
> + if (!can_erase_entry(entry, reason)) {
> + /* return without writing new entry */
> + spin_unlock(&efivars->lock);
> + *id = part;
> + return ret;
> + }
> +
> /* found */
> found = entry;
> efivars->ops->set_variable(entry->var.VariableName,
> 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/pstore.h b/include/linux/pstore.h index e1461e1..e9347e9 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
>
>
|