Re: linux-next: manual merge of the kvm tree with the s390 tree

2020-06-03 Thread Stephen Rothwell
Hi all,

On Fri, 29 May 2020 16:46:13 +1000 Stephen Rothwell  
wrote:
>
> Today's linux-next merge of the kvm tree got a conflict in:
> 
>   arch/s390/kvm/vsie.c
> 
> between commit:
> 
>   0b0ed657fe00 ("s390: remove critical section cleanup from entry.S")
> 
> from the s390 tree and commit:
> 
>   d075fc3154be ("KVM: s390: vsie: Move conditional reschedule")
> 
> from the kvm tree.
> 
> diff --cc arch/s390/kvm/vsie.c
> index 4fde24a1856e,ef05b4e167fb..
> --- a/arch/s390/kvm/vsie.c
> +++ b/arch/s390/kvm/vsie.c
> @@@ -1000,9 -1000,9 +1000,6 @@@ static int do_vsie_run(struct kvm_vcpu 
>   
>   handle_last_fault(vcpu, vsie_page);
>   
> - if (need_resched())
> - schedule();
>  -if (test_cpu_flag(CIF_MCCK_PENDING))
>  -s390_handle_mcck();
> --
>   srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
>   
>   /* save current guest state of bp isolation override */

This is now a conflict between the s390 tree and Linus' tree.

-- 
Cheers,
Stephen Rothwell


pgpS5qCLujoYM.pgp
Description: OpenPGP digital signature


linux-next: manual merge of the kvm tree with the s390 tree

2020-05-28 Thread Stephen Rothwell
Hi all,

Today's linux-next merge of the kvm tree got a conflict in:

  arch/s390/kvm/vsie.c

between commit:

  0b0ed657fe00 ("s390: remove critical section cleanup from entry.S")

from the s390 tree and commit:

  d075fc3154be ("KVM: s390: vsie: Move conditional reschedule")

from the kvm tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc arch/s390/kvm/vsie.c
index 4fde24a1856e,ef05b4e167fb..
--- a/arch/s390/kvm/vsie.c
+++ b/arch/s390/kvm/vsie.c
@@@ -1000,9 -1000,9 +1000,6 @@@ static int do_vsie_run(struct kvm_vcpu 
  
handle_last_fault(vcpu, vsie_page);
  
-   if (need_resched())
-   schedule();
 -  if (test_cpu_flag(CIF_MCCK_PENDING))
 -  s390_handle_mcck();
--
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
  
/* save current guest state of bp isolation override */


pgpYOrZArBuRt.pgp
Description: OpenPGP digital signature


Re: linux-next: manual merge of the kvm tree with the s390 tree

2016-07-13 Thread David Hildenbrand
> Hi all,
> 
> Today's linux-next merge of the kvm tree got a conflict in:
> 
>   arch/s390/mm/gmap.c
> 
> between commit:
> 
>   f04540298440 ("s390/mm: fix gmap tlb flush issues")
> 
> from the s390 tree and commit:
> 
>   6ea427bbbd40 ("s390/mm: add reference counter to gmap structure")
> 
> from the kvm tree.
> 
> I fixed it up (I just assumed that the update to gmap_free is no longer
> needed) and can carry the fix as necessary. This is now fixed as far as
> linux-next is concerned, but any non trivial conflicts should be mentioned
> to your upstream maintainer when your tree is submitted for merging.
> You may also want to consider cooperating with the maintainer of the
> conflicting tree to minimise any particularly complex conflicts.
> 

Yes, the tlb flush will be done in gmap_remove() instead of in gmap_free(),
which is also fixed by commit f04540298440. Unfortunately, that stable fix was
inevitable and collided with the already submitted patches for nested
virtualization.

Thanks for fixing that up, looks good to me.

David



linux-next: manual merge of the kvm tree with the s390 tree

2016-07-13 Thread Stephen Rothwell
Hi all,

Today's linux-next merge of the kvm tree got a conflict in:

  arch/s390/mm/gmap.c

between commit:

  f04540298440 ("s390/mm: fix gmap tlb flush issues")

from the s390 tree and commit:

  6ea427bbbd40 ("s390/mm: add reference counter to gmap structure")

from the kvm tree.

I fixed it up (I just assumed that the update to gmap_free is no longer
needed) and can carry the fix as necessary. This is now fixed as far as
linux-next is concerned, but any non trivial conflicts should be mentioned
to your upstream maintainer when your tree is submitted for merging.
You may also want to consider cooperating with the maintainer of the
conflicting tree to minimise any particularly complex conflicts.

-- 
Cheers,
Stephen Rothwell


Re: linux-next: manual merge of the kvm tree with the s390 tree

2016-06-28 Thread Heiko Carstens
On Wed, Jun 29, 2016 at 02:36:58PM +1000, Stephen Rothwell wrote:
> Hi all,
> 
> Today's linux-next merge of the kvm tree got a conflict in:
> 
>   arch/s390/hypfs/hypfs_diag.c
> 
> between commit:
> 
>   e030c1125eab ("s390/hypfs: use basic block for diag inline assembly")
> 
> from the s390 tree and commit:
> 
>   e65f30e0cb29 ("s390: hypfs: Move diag implementation and data definitions")
> 
> from the kvm tree.
> 
> I fixed it up (my fixup patch now looks like below) and can carry the
> fix as necessary. This is now fixed as far as linux-next is concerned,
> but any non trivial conflicts should be mentioned to your upstream
> maintainer when your tree is submitted for merging.  You may also want
> to consider cooperating with the maintainer of the conflicting tree to
> minimise any particularly complex conflicts.
> 
> From: Stephen Rothwell 
> Date: Tue, 14 Jun 2016 14:47:33 +1000
> Subject: [PATCH] s390: merge fix up for __diag204 move
> 
> Signed-off-by: Stephen Rothwell 
> ---
>  arch/s390/kernel/diag.c | 14 --
>  1 file changed, 8 insertions(+), 6 deletions(-)

The fix looks good. Thanks!



linux-next: manual merge of the kvm tree with the s390 tree

2016-06-28 Thread Stephen Rothwell
Hi all,

Today's linux-next merge of the kvm tree got a conflict in:

  arch/s390/hypfs/hypfs_diag.c

between commit:

  e030c1125eab ("s390/hypfs: use basic block for diag inline assembly")

from the s390 tree and commit:

  e65f30e0cb29 ("s390: hypfs: Move diag implementation and data definitions")

from the kvm tree.

I fixed it up (my fixup patch now looks like below) and can carry the
fix as necessary. This is now fixed as far as linux-next is concerned,
but any non trivial conflicts should be mentioned to your upstream
maintainer when your tree is submitted for merging.  You may also want
to consider cooperating with the maintainer of the conflicting tree to
minimise any particularly complex conflicts.

From: Stephen Rothwell 
Date: Tue, 14 Jun 2016 14:47:33 +1000
Subject: [PATCH] s390: merge fix up for __diag204 move

Signed-off-by: Stephen Rothwell 
---
 arch/s390/kernel/diag.c | 14 --
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/arch/s390/kernel/diag.c b/arch/s390/kernel/diag.c
index a44faf4a0454..a97354c8c667 100644
--- a/arch/s390/kernel/diag.c
+++ b/arch/s390/kernel/diag.c
@@ -162,25 +162,27 @@ int diag14(unsigned long rx, unsigned long ry1, unsigned 
long subcode)
 }
 EXPORT_SYMBOL(diag14);
 
-static inline int __diag204(unsigned long subcode, unsigned long size, void 
*addr)
+static inline int __diag204(unsigned long *subcode, unsigned long size, void 
*addr)
 {
-   register unsigned long _subcode asm("0") = subcode;
+   register unsigned long _subcode asm("0") = *subcode;
register unsigned long _size asm("1") = size;
 
asm volatile(
"   diag%2,%0,0x204\n"
-   "0:\n"
+   "0: nopr%%r7\n"
EX_TABLE(0b,0b)
: "+d" (_subcode), "+d" (_size) : "d" (addr) : "memory");
-   if (_subcode)
-   return -1;
+   *subcode = _subcode;
return _size;
 }
 
 int diag204(unsigned long subcode, unsigned long size, void *addr)
 {
diag_stat_inc(DIAG_STAT_X204);
-   return __diag204(subcode, size, addr);
+   size = __diag204(&subcode, size, addr);
+   if (subcode)
+   return -1;
+   return size;
 }
 EXPORT_SYMBOL(diag204);
 
-- 
2.8.1

-- 
Cheers,
Stephen Rothwell


linux-next: manual merge of the kvm tree with the s390 tree

2014-10-06 Thread Stephen Rothwell
Hi all,

Today's linux-next merge of the kvm tree got a conflict in
arch/s390/mm/pgtable.c between commit 9511571c4f0e ("s390: mm: fixing
calls of pte_unmap_unlock") from the s390 tree and commit dc77d344b41f
("KVM: s390/mm: fix up indentation of set_guest_storage_key") from the
kvm tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

-- 
Cheers,
Stephen Rothwells...@canb.auug.org.au

diff --cc arch/s390/mm/pgtable.c
index a0f934a435e2,296b61a4af59..
--- a/arch/s390/mm/pgtable.c
+++ b/arch/s390/mm/pgtable.c
@@@ -644,82 -656,29 +656,29 @@@ void __gmap_zap(struct gmap *gmap, unsi
}
pgste_set_unlock(ptep, pgste);
  out_pte:
 -  pte_unmap_unlock(*ptep, ptl);
 +  pte_unmap_unlock(ptep, ptl);
  }
- 
- /*
-  * this function is assumed to be called with mmap_sem held
-  */
- void __gmap_zap(unsigned long address, struct gmap *gmap)
- {
-   unsigned long *table, *segment_ptr;
-   unsigned long segment, pgstev, ptev;
-   struct gmap_pgtable *mp;
-   struct page *page;
- 
-   segment_ptr = gmap_table_walk(address, gmap);
-   if (IS_ERR(segment_ptr))
-   return;
-   segment = *segment_ptr;
-   if (segment & _SEGMENT_ENTRY_INVALID)
-   return;
-   page = pfn_to_page(segment >> PAGE_SHIFT);
-   mp = (struct gmap_pgtable *) page->index;
-   address = mp->vmaddr | (address & ~PMD_MASK);
-   /* Page table is present */
-   table = (unsigned long *)(segment & _SEGMENT_ENTRY_ORIGIN);
-   table = table + ((address >> 12) & 0xff);
-   pgstev = table[PTRS_PER_PTE];
-   ptev = table[0];
-   /* quick check, checked again with locks held */
-   if (((pgstev & _PGSTE_GPS_USAGE_MASK) == _PGSTE_GPS_USAGE_UNUSED) ||
-   ((pgstev & _PGSTE_GPS_ZERO) && (ptev & _PAGE_INVALID)))
-   gmap_zap_unused(gmap->mm, address);
- }
  EXPORT_SYMBOL_GPL(__gmap_zap);
  
- void gmap_discard(unsigned long from, unsigned long to, struct gmap *gmap)
+ void gmap_discard(struct gmap *gmap, unsigned long from, unsigned long to)
  {
- 
-   unsigned long *table, address, size;
+   unsigned long gaddr, vmaddr, size;
struct vm_area_struct *vma;
-   struct gmap_pgtable *mp;
-   struct page *page;
  
down_read(&gmap->mm->mmap_sem);
-   address = from;
-   while (address < to) {
-   /* Walk the gmap address space page table */
-   table = gmap->table + ((address >> 53) & 0x7ff);
-   if (unlikely(*table & _REGION_ENTRY_INVALID)) {
-   address = (address + PMD_SIZE) & PMD_MASK;
-   continue;
-   }
-   table = (unsigned long *)(*table & _REGION_ENTRY_ORIGIN);
-   table = table + ((address >> 42) & 0x7ff);
-   if (unlikely(*table & _REGION_ENTRY_INVALID)) {
-   address = (address + PMD_SIZE) & PMD_MASK;
+   for (gaddr = from; gaddr < to;
+gaddr = (gaddr + PMD_SIZE) & PMD_MASK) {
+   /* Find the vm address for the guest address */
+   vmaddr = (unsigned long)
+   radix_tree_lookup(&gmap->guest_to_host,
+ gaddr >> PMD_SHIFT);
+   if (!vmaddr)
continue;
-   }
-   table = (unsigned long *)(*table & _REGION_ENTRY_ORIGIN);
-   table = table + ((address >> 31) & 0x7ff);
-   if (unlikely(*table & _REGION_ENTRY_INVALID)) {
-   address = (address + PMD_SIZE) & PMD_MASK;
-   continue;
-   }
-   table = (unsigned long *)(*table & _REGION_ENTRY_ORIGIN);
-   table = table + ((address >> 20) & 0x7ff);
-   if (unlikely(*table & _SEGMENT_ENTRY_INVALID)) {
-   address = (address + PMD_SIZE) & PMD_MASK;
-   continue;
-   }
-   page = pfn_to_page(*table >> PAGE_SHIFT);
-   mp = (struct gmap_pgtable *) page->index;
-   vma = find_vma(gmap->mm, mp->vmaddr);
-   size = min(to - address, PMD_SIZE - (address & ~PMD_MASK));
-   zap_page_range(vma, mp->vmaddr | (address & ~PMD_MASK),
-  size, NULL);
-   address = (address + PMD_SIZE) & PMD_MASK;
+   vmaddr |= gaddr & ~PMD_MASK;
+   /* Find vma in the parent mm */
+   vma = find_vma(gmap->mm, vmaddr);
+   size = min(to - gaddr, PMD_SIZE - (gaddr & ~PMD_MASK));
+   zap_page_range(vma, vmaddr, size, NULL);
}
up_read(&gmap->mm->mmap_sem);
  }
@@@ -994,13 -943,13 +943,13 @@@ retry
}
if (!(pte_val(*ptep) & _PAGE_INVALID) &&
 (pte_val(*ptep) & _PAGE_PROTECT)) {
-   pte_unmap_unlock(ptep, ptl);
-   if (fixu

linux-next: manual merge of the kvm tree with the s390 tree

2013-06-05 Thread Stephen Rothwell
Hi all,

Today's linux-next merge of the kvm tree got a conflict in
arch/s390/include/asm/pgtable.h between commit 338679f7ba4a
("s390/pgtable: Fix guest overindication for change bit") from the s390
tree and commit 0d0dafc1e48f ("s390/kvm: rename RCP_xxx defines to
PGSTE_xxx") from the kvm tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

-- 
Cheers,
Stephen Rothwells...@canb.auug.org.au

diff --cc arch/s390/include/asm/pgtable.h
index e8b6e5b,1d0ad7d..000
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@@ -632,11 -628,10 +628,11 @@@ static inline void pgste_set_unlock(pte
  {
  #ifdef CONFIG_PGSTE
asm(
-   "   nihh%1,0xff7f\n"/* clear RCP_PCL_BIT */
+   "   nihh%1,0xff7f\n"/* clear PCL bit */
"   stg %1,%0\n"
: "=Q" (ptep[PTRS_PER_PTE])
 -  : "d" (pgste_val(pgste)), "Q" (ptep[PTRS_PER_PTE]) : "cc");
 +  : "d" (pgste_val(pgste)), "Q" (ptep[PTRS_PER_PTE])
 +  : "cc", "memory");
preempt_enable();
  #endif
  }
@@@ -712,19 -700,17 +708,19 @@@ static inline void pgste_set_key(pte_t 
  {
  #ifdef CONFIG_PGSTE
unsigned long address;
 -  unsigned long okey, nkey;
 +  unsigned long nkey;
  
 -  if (!pte_present(entry))
 +  if (pte_val(entry) & _PAGE_INVALID)
return;
 +  VM_BUG_ON(!(pte_val(*ptep) & _PAGE_INVALID));
address = pte_val(entry) & PAGE_MASK;
 -  okey = nkey = page_get_storage_key(address);
 -  nkey &= ~(_PAGE_ACC_BITS | _PAGE_FP_BIT);
 -  /* Set page access key and fetch protection bit from pgste */
 -  nkey |= (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56;
 -  if (okey != nkey)
 -  page_set_storage_key(address, nkey, 0);
 +  /*
 +   * Set page access key and fetch protection bit from pgste.
 +   * The guest C/R information is still in the PGSTE, set real
 +   * key C/R to 0.
 +   */
-   nkey = (pgste_val(pgste) & (RCP_ACC_BITS | RCP_FP_BIT)) >> 56;
++  nkey = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56;
 +  page_set_storage_key(address, nkey, 0);
  #endif
  }
  


pgpDb2feB2nif.pgp
Description: PGP signature


Re: linux-next: manual merge of the kvm tree with the s390 tree

2013-01-03 Thread Stephen Rothwell
Hi Martin,

On Thu, 3 Jan 2013 08:31:55 +0100 Martin Schwidefsky  
wrote:
>
> I surprises me a bit that there is only one hunk in the cleanup patch.
> I expected three, the above for virtio_ccw.c, one for irq.c and another
> for irq.h. I checked the resulting tree which is correct! The merge diff
> has a '++' line for irq.c/irq.h:

Those bits were further down in the mail I sent you (after my signature).

Thanks for checking.
-- 
Cheers,
Stephen Rothwells...@canb.auug.org.au


pgp59JYrhJgYx.pgp
Description: PGP signature


Re: linux-next: manual merge of the kvm tree with the s390 tree

2013-01-02 Thread Martin Schwidefsky
Hi Stephen,

On Thu, 3 Jan 2013 12:06:50 +1100
Stephen Rothwell  wrote:

> 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 
> Date: Thu, 3 Jan 2013 12:04:39 +1100
> Subject: [PATCH] KVM: s390: fix for IOINT_VIR name change
> 
> Signed-off-by: Stephen Rothwell 
> ---
>  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,

I surprises me a bit that there is only one hunk in the cleanup patch.
I expected three, the above for virtio_ccw.c, one for irq.c and another
for irq.h. I checked the resulting tree which is correct! The merge diff
has a '++' line for irq.c/irq.h:

irq.h:
 +  IRQIO_PCI,
 +  IRQIO_MSI,
++  IRQIO_VIR,
NMI_NMI,
 -  NR_IRQS,
 +  CPU_RST,

irq.c:
 +  [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"},

Magic ?

-- 
blue skies,
   Martin.

"Reality continues to ruin my life." - Calvin.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


linux-next: manual merge of the kvm tree with the s390 tree

2013-01-02 Thread Stephen Rothwell
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 
Date: Thu, 3 Jan 2013 12:04:39 +1100
Subject: [PATCH] KVM: s390: fix for IOINT_VIR name change

Signed-off-by: Stephen Rothwell 
---
 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 Rothwells...@canb.auug.org.au

diff --cc arch/s390/include/asm/irq.h
index 7def773,aa6d0d7..000
--- 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 
 +#include 
 +#include 
  #include 
  
 -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..000
--- 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-Measureme

linux-next: manual merge of the kvm tree with the s390 tree

2012-08-15 Thread Stephen Rothwell
Hi all,

Today's linux-next merge of the kvm tree got a conflict in
arch/s390/include/asm/processor.h between commit 3c011c612acb
("s390/bpf,jit: BPF Just In Time compiler for s390") from the s390 tree
and commit 9b7fb990e080 ("s390, /dis: Instruction decoding interface") from
the kvm tree.

Just context changes.  I fixed it up (see below) and can carry the fix as
necessary.
-- 
Cheers,
Stephen Rothwells...@canb.auug.org.au

diff --cc arch/s390/include/asm/processor.h
index d4477ba,eac4fb5..000
--- a/arch/s390/include/asm/processor.h
+++ b/arch/s390/include/asm/processor.h
@@@ -140,7 -140,7 +140,8 @@@ extern int kernel_thread(int (*fn)(voi
  extern unsigned long thread_saved_pc(struct task_struct *t);
  
  extern void show_code(struct pt_regs *regs);
 +extern void print_fn_code(unsigned char *code, unsigned long len);
+ extern int insn_to_mnemonic(unsigned char *instruction, char buf[8]);
  
  unsigned long get_wchan(struct task_struct *p);
  #define task_pt_regs(tsk) ((struct pt_regs *) \


pgpkcd7l08Tpw.pgp
Description: PGP signature