Re: [kvm-unit-tests PATCH v12 9/9] s390x: css: ssch/tsch with sense and interrupt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 2020-07-14 13:38, Thomas Huth wrote:
On 14/07/2020 13.15, Pierre Morel wrote:
After a channel is enabled we start a SENSE_ID command using
the SSCH instruction to recognize the control unit and device.

This tests the success of SSCH, the I/O interruption and the TSCH
instructions.

The SENSE_ID command response is tested to report 0xff inside
its reserved field and to report the same control unit type
as the cu_type kernel argument.

Without the cu_type kernel argument, the test expects a device
with a default control unit type of 0x3832, a.k.a virtio-net-ccw.

Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxx>
---
[...]
@@ -102,6 +113,19 @@ struct irb {
  	uint32_t emw[8];
  } __attribute__ ((aligned(4)));
+#define CCW_CMD_SENSE_ID 0xe4
+#define CSS_SENSEID_COMMON_LEN	8
+struct senseid {
+	/* common part */
+	uint8_t reserved;        /* always 0x'FF' */
+	uint16_t cu_type;        /* control unit type */
+	uint8_t cu_model;        /* control unit model */
+	uint16_t dev_type;       /* device type */
+	uint8_t dev_model;       /* device model */
+	uint8_t unused;          /* padding byte */
+	uint8_t padding[256 - 10]; /* Extra padding for CCW */
+} __attribute__ ((aligned(4))) __attribute__ ((packed));

Is that padding[256 - 10] right? If I count right, there are only 8
bytes before the padding field, so "10" sounds wrong here?


No it is not, should be 248 or 256 - 8.


[...]
diff --git a/lib/s390x/css_lib.c b/lib/s390x/css_lib.c
index e47a945..274c293 100644
--- a/lib/s390x/css_lib.c
+++ b/lib/s390x/css_lib.c
[...]
+/*
+ * css_residual_count
+ * Return the residual count, if it is valid.
+ *
+ * Return value:
+ * Success: the residual count
+ * Not meaningful: -1 (-1 can not be a valid count)
+ */
+int css_residual_count(unsigned int schid)
+{
+
+	if (!(irb.scsw.ctrl & (SCSW_SC_PENDING | SCSW_SC_PRIMARY)))
+		goto invalid;
+
+	if (irb.scsw.dev_stat)
+		if (irb.scsw.sch_stat & ~(SCSW_SCHS_PCI | SCSW_SCHS_IL))
+			goto invalid;
+
+	return irb.scsw.count;
+
+invalid:
+	return -1;
+}

Cosmetical nit: Unless you want to add something between "invalid:" and
"return -1" later, I'd rather replace "goto invalid" with "return -1"
and get rid of the "invalid" label here.

  Thomas


OK, since I need to respin for the padding above.

Thanks,
Pierre

--
Pierre Morel
IBM Lab Boeblingen



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux