lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 3 Jan 2013 12:06:50 +1100
From:	Stephen Rothwell <sfr@...b.auug.org.au>
To:	Avi Kivity <avi@...ranet.com>,
	Marcelo Tosatti <mtosatti@...hat.com>
Cc:	linux-next@...r.kernel.org, linux-kernel@...r.kernel.org,
	Cornelia Huck <cornelia.huck@...ibm.com>,
	Gleb Natapov <gleb@...hat.com>,
	Heiko Carstens <heiko.carstens@...ibm.com>,
	Martin Schwidefsky <schwidefsky@...ibm.com>
Subject: linux-next: manual merge of the kvm tree with the s390 tree

Hi all,

Today's linux-next merge of the kvm tree got conflicts in
arch/s390/include/asm/irq.h and arch/s390/kernel/irq.c between commit
bfb048f594d5 ("s390/irq: remove split irq fields from /proc/stat") from
the s390 tree and commit 7e64e0597fd6 ("KVM: s390: Add a channel I/O
based virtio transport driver") from the kvm tree.

I fixed it up (I think - see below) including the following merge fix
patch and can carry the fix as necessary (more action may be required).

From: Stephen Rothwell <sfr@...b.auug.org.au>
Date: Thu, 3 Jan 2013 12:04:39 +1100
Subject: [PATCH] KVM: s390: fix for IOINT_VIR name change

Signed-off-by: Stephen Rothwell <sfr@...b.auug.org.au>
---
 drivers/s390/kvm/virtio_ccw.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c
index 1a5aff3..f94a0b1 100644
--- a/drivers/s390/kvm/virtio_ccw.c
+++ b/drivers/s390/kvm/virtio_ccw.c
@@ -745,7 +745,7 @@ static struct ccw_driver virtio_ccw_driver = {
 	.set_offline = virtio_ccw_offline,
 	.set_online = virtio_ccw_online,
 	.notify = virtio_ccw_cio_notify,
-	.int_class = IOINT_VIR,
+	.int_class = IRQIO_VIR,
 };
 
 static int __init pure_hex(char **cp, unsigned int *val, int min_digit,
-- 
1.7.10.280.gaa39

-- 
Cheers,
Stephen Rothwell                    sfr@...b.auug.org.au

diff --cc arch/s390/include/asm/irq.h
index 7def773,aa6d0d7..0000000
--- a/arch/s390/include/asm/irq.h
+++ b/arch/s390/include/asm/irq.h
@@@ -2,61 -2,44 +2,62 @@@
  #define _ASM_IRQ_H
  
  #include <linux/hardirq.h>
 +#include <linux/percpu.h>
 +#include <linux/cache.h>
  #include <linux/types.h>
  
 -enum interruption_class {
 +enum interruption_main_class {
  	EXTERNAL_INTERRUPT,
  	IO_INTERRUPT,
 -	EXTINT_CLK,
 -	EXTINT_EXC,
 -	EXTINT_EMS,
 -	EXTINT_TMR,
 -	EXTINT_TLA,
 -	EXTINT_PFL,
 -	EXTINT_DSD,
 -	EXTINT_VRT,
 -	EXTINT_SCP,
 -	EXTINT_IUC,
 -	EXTINT_CMS,
 -	EXTINT_CMC,
 -	EXTINT_CMR,
 -	IOINT_CIO,
 -	IOINT_QAI,
 -	IOINT_DAS,
 -	IOINT_C15,
 -	IOINT_C70,
 -	IOINT_TAP,
 -	IOINT_VMR,
 -	IOINT_LCS,
 -	IOINT_CLW,
 -	IOINT_CTC,
 -	IOINT_APB,
 -	IOINT_ADM,
 -	IOINT_CSC,
 -	IOINT_PCI,
 -	IOINT_MSI,
 -	IOINT_VIR,
 +	NR_IRQS
 +};
 +
 +enum interruption_class {
 +	IRQEXT_CLK,
 +	IRQEXT_EXC,
 +	IRQEXT_EMS,
 +	IRQEXT_TMR,
 +	IRQEXT_TLA,
 +	IRQEXT_PFL,
 +	IRQEXT_DSD,
 +	IRQEXT_VRT,
 +	IRQEXT_SCP,
 +	IRQEXT_IUC,
 +	IRQEXT_CMS,
 +	IRQEXT_CMC,
 +	IRQEXT_CMR,
 +	IRQIO_CIO,
 +	IRQIO_QAI,
 +	IRQIO_DAS,
 +	IRQIO_C15,
 +	IRQIO_C70,
 +	IRQIO_TAP,
 +	IRQIO_VMR,
 +	IRQIO_LCS,
 +	IRQIO_CLW,
 +	IRQIO_CTC,
 +	IRQIO_APB,
 +	IRQIO_ADM,
 +	IRQIO_CSC,
 +	IRQIO_PCI,
 +	IRQIO_MSI,
++	IRQIO_VIR,
  	NMI_NMI,
 -	NR_IRQS,
 +	CPU_RST,
 +	NR_ARCH_IRQS
  };
  
 +struct irq_stat {
 +	unsigned int irqs[NR_ARCH_IRQS];
 +};
 +
 +DECLARE_PER_CPU_SHARED_ALIGNED(struct irq_stat, irq_stat);
 +
 +static __always_inline void inc_irq_stat(enum interruption_class irq)
 +{
 +	__get_cpu_var(irq_stat).irqs[irq]++;
 +}
 +
  struct ext_code {
  	unsigned short subcode;
  	unsigned short code;
diff --cc arch/s390/kernel/irq.c
index 9df824e,a9806ea..0000000
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@@ -32,57 -29,39 +32,58 @@@ struct irq_class 
  	char *desc;
  };
  
 -static const struct irq_class intrclass_names[] = {
 +/*
 + * The list of "main" irq classes on s390. This is the list of interrrupts
 + * that appear both in /proc/stat ("intr" line) and /proc/interrupts.
 + * Historically only external and I/O interrupts have been part of /proc/stat.
 + * We can't add the split external and I/O sub classes since the first field
 + * in the "intr" line in /proc/stat is supposed to be the sum of all other
 + * fields.
 + * Since the external and I/O interrupt fields are already sums we would end
 + * up with having a sum which accounts each interrupt twice.
 + */
 +static const struct irq_class irqclass_main_desc[NR_IRQS] = {
  	[EXTERNAL_INTERRUPT] = {.name = "EXT"},
 -	[IO_INTERRUPT]	     = {.name = "I/O"},
 -	[EXTINT_CLK] = {.name = "CLK", .desc = "[EXT] Clock Comparator"},
 -	[EXTINT_EXC] = {.name = "EXC", .desc = "[EXT] External Call"},
 -	[EXTINT_EMS] = {.name = "EMS", .desc = "[EXT] Emergency Signal"},
 -	[EXTINT_TMR] = {.name = "TMR", .desc = "[EXT] CPU Timer"},
 -	[EXTINT_TLA] = {.name = "TAL", .desc = "[EXT] Timing Alert"},
 -	[EXTINT_PFL] = {.name = "PFL", .desc = "[EXT] Pseudo Page Fault"},
 -	[EXTINT_DSD] = {.name = "DSD", .desc = "[EXT] DASD Diag"},
 -	[EXTINT_VRT] = {.name = "VRT", .desc = "[EXT] Virtio"},
 -	[EXTINT_SCP] = {.name = "SCP", .desc = "[EXT] Service Call"},
 -	[EXTINT_IUC] = {.name = "IUC", .desc = "[EXT] IUCV"},
 -	[EXTINT_CMS] = {.name = "CMS", .desc = "[EXT] CPU-Measurement: Sampling"},
 -	[EXTINT_CMC] = {.name = "CMC", .desc = "[EXT] CPU-Measurement: Counter"},
 -	[EXTINT_CMR] = {.name = "CMR", .desc = "[EXT] CPU-Measurement: RI"},
 -	[IOINT_CIO]  = {.name = "CIO", .desc = "[I/O] Common I/O Layer Interrupt"},
 -	[IOINT_QAI]  = {.name = "QAI", .desc = "[I/O] QDIO Adapter Interrupt"},
 -	[IOINT_DAS]  = {.name = "DAS", .desc = "[I/O] DASD"},
 -	[IOINT_C15]  = {.name = "C15", .desc = "[I/O] 3215"},
 -	[IOINT_C70]  = {.name = "C70", .desc = "[I/O] 3270"},
 -	[IOINT_TAP]  = {.name = "TAP", .desc = "[I/O] Tape"},
 -	[IOINT_VMR]  = {.name = "VMR", .desc = "[I/O] Unit Record Devices"},
 -	[IOINT_LCS]  = {.name = "LCS", .desc = "[I/O] LCS"},
 -	[IOINT_CLW]  = {.name = "CLW", .desc = "[I/O] CLAW"},
 -	[IOINT_CTC]  = {.name = "CTC", .desc = "[I/O] CTC"},
 -	[IOINT_APB]  = {.name = "APB", .desc = "[I/O] AP Bus"},
 -	[IOINT_ADM]  = {.name = "ADM", .desc = "[I/O] EADM Subchannel"},
 -	[IOINT_CSC]  = {.name = "CSC", .desc = "[I/O] CHSC Subchannel"},
 -	[IOINT_PCI]  = {.name = "PCI", .desc = "[I/O] PCI Interrupt" },
 -	[IOINT_MSI] =  {.name = "MSI", .desc = "[I/O] MSI Interrupt" },
 -	[IOINT_VIR]  = {.name = "VIR", .desc = "[I/O] Virtual I/O Devices"},
 +	[IO_INTERRUPT]	     = {.name = "I/O"}
 +};
 +
 +/*
 + * The list of split external and I/O interrupts that appear only in
 + * /proc/interrupts.
 + * In addition this list contains non external / I/O events like NMIs.
 + */
 +static const struct irq_class irqclass_sub_desc[NR_ARCH_IRQS] = {
 +	[IRQEXT_CLK] = {.name = "CLK", .desc = "[EXT] Clock Comparator"},
 +	[IRQEXT_EXC] = {.name = "EXC", .desc = "[EXT] External Call"},
 +	[IRQEXT_EMS] = {.name = "EMS", .desc = "[EXT] Emergency Signal"},
 +	[IRQEXT_TMR] = {.name = "TMR", .desc = "[EXT] CPU Timer"},
 +	[IRQEXT_TLA] = {.name = "TAL", .desc = "[EXT] Timing Alert"},
 +	[IRQEXT_PFL] = {.name = "PFL", .desc = "[EXT] Pseudo Page Fault"},
 +	[IRQEXT_DSD] = {.name = "DSD", .desc = "[EXT] DASD Diag"},
 +	[IRQEXT_VRT] = {.name = "VRT", .desc = "[EXT] Virtio"},
 +	[IRQEXT_SCP] = {.name = "SCP", .desc = "[EXT] Service Call"},
 +	[IRQEXT_IUC] = {.name = "IUC", .desc = "[EXT] IUCV"},
 +	[IRQEXT_CMS] = {.name = "CMS", .desc = "[EXT] CPU-Measurement: Sampling"},
 +	[IRQEXT_CMC] = {.name = "CMC", .desc = "[EXT] CPU-Measurement: Counter"},
 +	[IRQEXT_CMR] = {.name = "CMR", .desc = "[EXT] CPU-Measurement: RI"},
 +	[IRQIO_CIO]  = {.name = "CIO", .desc = "[I/O] Common I/O Layer Interrupt"},
 +	[IRQIO_QAI]  = {.name = "QAI", .desc = "[I/O] QDIO Adapter Interrupt"},
 +	[IRQIO_DAS]  = {.name = "DAS", .desc = "[I/O] DASD"},
 +	[IRQIO_C15]  = {.name = "C15", .desc = "[I/O] 3215"},
 +	[IRQIO_C70]  = {.name = "C70", .desc = "[I/O] 3270"},
 +	[IRQIO_TAP]  = {.name = "TAP", .desc = "[I/O] Tape"},
 +	[IRQIO_VMR]  = {.name = "VMR", .desc = "[I/O] Unit Record Devices"},
 +	[IRQIO_LCS]  = {.name = "LCS", .desc = "[I/O] LCS"},
 +	[IRQIO_CLW]  = {.name = "CLW", .desc = "[I/O] CLAW"},
 +	[IRQIO_CTC]  = {.name = "CTC", .desc = "[I/O] CTC"},
 +	[IRQIO_APB]  = {.name = "APB", .desc = "[I/O] AP Bus"},
 +	[IRQIO_ADM]  = {.name = "ADM", .desc = "[I/O] EADM Subchannel"},
 +	[IRQIO_CSC]  = {.name = "CSC", .desc = "[I/O] CHSC Subchannel"},
 +	[IRQIO_PCI]  = {.name = "PCI", .desc = "[I/O] PCI Interrupt" },
 +	[IRQIO_MSI]  = {.name = "MSI", .desc = "[I/O] MSI Interrupt" },
++	[IRQIO_VIR]  = {.name = "VIR", .desc = "[I/O] Virtual I/O Devices"},
  	[NMI_NMI]    = {.name = "NMI", .desc = "[NMI] Machine Check"},
 +	[CPU_RST]    = {.name = "RST", .desc = "[CPU] CPU Restart"},
  };
  
  /*

Content of type "application/pgp-signature" skipped

Powered by blists - more mailing lists