From: Hans-Joachim Picht <hpicht@redhat.com> Date: Wed, 2 Apr 2008 17:28:41 +0200 Subject: [s390] cio: CHPID configuration event is ignored Message-id: 20080402152841.GD823@blc4eb509856389.ibm.com O-Subject: [RHEL5 U2 PATCH 1/1] s390 - cio: CHPID configuration event is ignored Bugzilla: 431858 Description ============ Move check for reporting the source of a hardware event to the correct position so that CHPID configure events are correctly processed. This is required for a feature which is supposed to configure a CHPID offline when a client uses the "Card Reseat/Replace" dialog at the Service Element (SE). This feature was introduced in BZ 253076 Without this patch, the hardware event that is generated by the SE dialog is ignored and Linux behaves as if the kernel code implementing this feature is not present. Bugzilla ========= BZ 431858 https://bugzilla.redhat.com/show_bug.cgi?id=431858 Upstream status of the patch: ============================= Upstream code base does not contain the bug so no patch submission planned. Test status: ============ The fact that the patch corrects the issue was verified by code review. Unfortunately it is actually not possible to provide a real test case because of the intrusive nature of the operation required to trigger event. Please ACK. With best regards, Hans Acked-by: Pete Zaitcev <zaitcev@redhat.com> diff --git a/drivers/s390/cio/chsc.c b/drivers/s390/cio/chsc.c index 3ffc5c8..83e6753 100644 --- a/drivers/s390/cio/chsc.c +++ b/drivers/s390/cio/chsc.c @@ -573,16 +573,15 @@ chsc_process_crw(void) CIO_CRW_EVENT(2, "chsc_process_crw: Event information " "has been lost due to overflow!\n"); - if (sei_area->rs != 4) { - CIO_CRW_EVENT(2, "chsc_process_crw: reporting source " - "(%04X) isn't a chpid!\n", - sei_area->rsid); - continue; - } - /* which kind of information was stored? */ switch (sei_area->cc) { case 1: /* link incident*/ + if (sei_area->rs != 4) { + CIO_CRW_EVENT(2, "chsc_process_crw: reporting " + "source (%04X) isn't a chpid!\n", + sei_area->rsid); + continue; + } CIO_CRW_EVENT(4, "chsc_process_crw: " "channel subsystem reports link incident," " reporting source is chpid %x\n", @@ -599,6 +598,12 @@ chsc_process_crw(void) break; case 2: /* i/o resource accessibiliy */ + if (sei_area->rs != 4) { + CIO_CRW_EVENT(2, "chsc_process_crw: reporting " + "source (%04X) isn't a chpid!\n", + sei_area->rsid); + continue; + } CIO_CRW_EVENT(4, "chsc_process_crw: " "channel subsystem reports some I/O " "devices may have become accessible\n");