From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593770896; cv=none; d=zohomail.com; s=zohoarc; b=EAUs1O70DsN3ToMsOBUPe0GDQapBngbInysdz0ypGv6pGt2K5V1xnY5fVqVC9gFEUzahe9Pd36xpeWWHOU385nG75GWYVMAUk+xkRPK68uVFPsQ+OhP+D6AeOX+QinDNvIv73X9ziYqUjUoVhuH7jlohu3aDxc4CEEY7KCSeDhE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593770896; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7qWpc9lIScV+M2rFXmNrjrCgZvcXIh2hCmScus9pENU=; b=JUs/E+CM3fC0Lt9BZww5vbBDkznqY/He+8zpOylbxyFGnluHeU/W0e9ojsbdOPeyvG6ULtWMq17FjRQrWLu6XvngAydQCyanvo9MdOho7NhP49e+qNA0T9LVtSidZYzgfNHpvfo7BuaeHmJBjpXTm71Oib0726wSdA6Ou1EmPYo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1593770896146756.0718642686843; Fri, 3 Jul 2020 03:08:16 -0700 (PDT) Received: from localhost ([::1]:39512 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIcA-0004jW-T3 for importer@patchew.org; Fri, 03 Jul 2020 06:08:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56466) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIb3-00033s-BW for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:05 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:49808 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIb1-0005VG-JM for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:05 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-467-AVrlznyIPqu0wZoo9QZQaw-1; Fri, 03 Jul 2020 06:07:00 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6A873186A200; Fri, 3 Jul 2020 10:06:59 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D1EE17923E; Fri, 3 Jul 2020 10:06:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770822; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7qWpc9lIScV+M2rFXmNrjrCgZvcXIh2hCmScus9pENU=; b=HCIKLLRCgpGDT7/8Bpvt97pbB7QkYEz5bOncvjVovOat9OktUSIhgwf56x0B/Ro/xmG0WT vcTetZN/foW/nwdAK3fT1alOb4LmJc5cEiFy9Irs/K3ZR1eavsagHXVkI7EZzbAg/xZcqQ MLml6is7AjBuZABjfAEPAdpUniDy5gw= X-MC-Unique: AVrlznyIPqu0wZoo9QZQaw-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 01/14] pc-bios: s390x: cio.c cleanup and compile fix Date: Fri, 3 Jul 2020 12:06:37 +0200 Message-Id: <20200703100650.621212-2-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.81; envelope-from=cohuck@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 01:34:15 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , Janosch Frank , Pierre Morel , David Hildenbrand , Cornelia Huck , qemu-devel@nongnu.org, Christian Borntraeger , qemu-s390x@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Janosch Frank Let's initialize the structs at the beginning to ease reading and also zeroing all other fields. This also makes the compiler stop complaining about sense_id_ccw.flags being ored into when it's not initialized. Signed-off-by: Janosch Frank Reviewed-by: Pierre Morel Reviewed-by: Thomas Huth Reviewed-by: David Hildenbrand Reviewed-by: Christian Borntraeger Reviewed-by: Cornelia Huck Message-Id: <20200624075226.92728-2-frankja@linux.ibm.com> Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/cio.c | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/pc-bios/s390-ccw/cio.c b/pc-bios/s390-ccw/cio.c index 339ec5fbe7a4..83ca27ab41d2 100644 --- a/pc-bios/s390-ccw/cio.c +++ b/pc-bios/s390-ccw/cio.c @@ -49,13 +49,13 @@ void enable_subchannel(SubChannelId schid) =20 uint16_t cu_type(SubChannelId schid) { - Ccw1 sense_id_ccw; SenseId sense_data; - - sense_id_ccw.cmd_code =3D CCW_CMD_SENSE_ID; - sense_id_ccw.cda =3D ptr2u32(&sense_data); - sense_id_ccw.count =3D sizeof(sense_data); - sense_id_ccw.flags |=3D CCW_FLAG_SLI; + Ccw1 sense_id_ccw =3D { + .cmd_code =3D CCW_CMD_SENSE_ID, + .flags =3D CCW_FLAG_SLI, + .count =3D sizeof(sense_data), + .cda =3D ptr2u32(&sense_data), + }; =20 if (do_cio(schid, CU_TYPE_UNKNOWN, ptr2u32(&sense_id_ccw), CCW_FMT1)) { panic("Failed to run SenseID CCw\n"); @@ -67,13 +67,13 @@ uint16_t cu_type(SubChannelId schid) int basic_sense(SubChannelId schid, uint16_t cutype, void *sense_data, uint16_t data_size) { - Ccw1 senseCcw; + Ccw1 senseCcw =3D { + .cmd_code =3D CCW_CMD_BASIC_SENSE, + .count =3D data_size, + .cda =3D ptr2u32(sense_data), + }; Irb irb; =20 - senseCcw.cmd_code =3D CCW_CMD_BASIC_SENSE; - senseCcw.cda =3D ptr2u32(sense_data); - senseCcw.count =3D data_size; - return __do_cio(schid, ptr2u32(&senseCcw), CCW_FMT1, &irb); } =20 @@ -314,7 +314,17 @@ static void print_irb_err(Irb *irb) */ static int __do_cio(SubChannelId schid, uint32_t ccw_addr, int fmt, Irb *i= rb) { - CmdOrb orb =3D {}; + /* + * QEMU's CIO implementation requires prefetch and 64-bit idaws. We + * allow all paths. + */ + CmdOrb orb =3D { + .fmt =3D fmt, + .pfch =3D 1, + .c64 =3D 1, + .lpm =3D 0xFF, + .cpa =3D ccw_addr, + }; int rc; =20 IPL_assert(fmt =3D=3D 0 || fmt =3D=3D 1, "Invalid ccw format"); @@ -324,12 +334,6 @@ static int __do_cio(SubChannelId schid, uint32_t ccw_a= ddr, int fmt, Irb *irb) IPL_assert(ccw_addr <=3D 0xFFFFFF - 8, "Invalid ccw address"); } =20 - orb.fmt =3D fmt; - orb.pfch =3D 1; /* QEMU's cio implementation requires prefetch */ - orb.c64 =3D 1; /* QEMU's cio implementation requires 64-bit idaws */ - orb.lpm =3D 0xFF; /* All paths allowed */ - orb.cpa =3D ccw_addr; - rc =3D ssch(schid, &orb); if (rc =3D=3D 1 || rc =3D=3D 2) { /* Subchannel status pending or busy. Eat status and ask for retry= . */ --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593770904; cv=none; d=zohomail.com; s=zohoarc; b=gJN4UCpdbHj2Fkjn886MunYMLVpsxJvKRGsYEPoX69RjazzAquREqEDv8XE87IkgHxZE87X+3RiEB0Ou2rnvQYwRU0g3KMlOXpkltGHxl+zQkt8+BkIBwiXPCzWPxU8nuj8ZKA2OCC8Q5Pd0TJqMfznjpzBVqq+WKgn/e1V5aeI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593770904; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=TjbwQvkJITrWTA9A+5iaXR+6ePtF3qplJa1F/ZCt38g=; b=gESXxlz/j+I1/r4Bxdo/W0KMwiGY4xSxvQvLXUW329p025Azg6kVLsq6u8M2hmfd/uJ46o/ny4ICc3g3piypntmMdRnxXifwDoqtM5UK4nYv+KMNWFKCjhCqQ4Xcy3DwQ65slueLbpxToUd+S25wk+zHzh5saLTWaC1GRm0m+Ys= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1593770904615535.3653012570798; Fri, 3 Jul 2020 03:08:24 -0700 (PDT) Received: from localhost ([::1]:39974 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIcJ-0004um-DG for importer@patchew.org; Fri, 03 Jul 2020 06:08:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56508) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIb7-0003BV-5p for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:09 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:32841) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIb5-0005Vn-FU for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:08 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-21-KVzH04uaNXifbm8UL3bhKw-1; Fri, 03 Jul 2020 06:07:02 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9AA6E800402; Fri, 3 Jul 2020 10:07:01 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3A9F27923E; Fri, 3 Jul 2020 10:07:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770826; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TjbwQvkJITrWTA9A+5iaXR+6ePtF3qplJa1F/ZCt38g=; b=ZCwk/9yc1VSPwYdfVvunUkAgf6jWpFFdre6ABJGDHhR2BQibOEHBmDcnrjzT5HJSSMgA3g 8UkbFMygMtm2d4BoGTTDRhzs8+X8xgxT82d+oAtDnOyLF7x4p7Z92x5FsUNq69mVqpmYGL OG5V2sR74hy3ariFyjSrxrcEhTdHlow= X-MC-Unique: KVzH04uaNXifbm8UL3bhKw-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 02/14] pc-bios: s390x: Consolidate timing functions into time.h Date: Fri, 3 Jul 2020 12:06:38 +0200 Message-Id: <20200703100650.621212-3-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.81; envelope-from=cohuck@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 01:34:15 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , qemu-s390x@nongnu.org, David Hildenbrand , qemu-devel@nongnu.org, Janosch Frank Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Janosch Frank Let's consolidate timing related functions into one header. Signed-off-by: Janosch Frank Acked-by: Thomas Huth Reviewed-by: David Hildenbrand Message-Id: <20200624075226.92728-3-frankja@linux.ibm.com> Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/menu.c | 1 + pc-bios/s390-ccw/netmain.c | 15 +++------------ pc-bios/s390-ccw/s390-ccw.h | 8 ++++---- pc-bios/s390-ccw/s390-time.h | 23 +++++++++++++++++++++++ pc-bios/s390-ccw/virtio-net.c | 1 + pc-bios/s390-ccw/virtio-scsi.c | 1 + pc-bios/s390-ccw/virtio.c | 18 +++--------------- 7 files changed, 36 insertions(+), 31 deletions(-) create mode 100644 pc-bios/s390-ccw/s390-time.h diff --git a/pc-bios/s390-ccw/menu.c b/pc-bios/s390-ccw/menu.c index ce3815b2010d..de8260a5d6cf 100644 --- a/pc-bios/s390-ccw/menu.c +++ b/pc-bios/s390-ccw/menu.c @@ -12,6 +12,7 @@ #include "libc.h" #include "s390-ccw.h" #include "sclp.h" +#include "s390-time.h" =20 #define KEYCODE_NO_INP '\0' #define KEYCODE_ESCAPE '\033' diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c index 309ffa30d992..f1ee63577ad7 100644 --- a/pc-bios/s390-ccw/netmain.c +++ b/pc-bios/s390-ccw/netmain.c @@ -35,6 +35,7 @@ #include "s390-ccw.h" #include "cio.h" #include "virtio.h" +#include "s390-time.h" =20 #define DEFAULT_BOOT_RETRIES 10 #define DEFAULT_TFTP_RETRIES 20 @@ -57,24 +58,14 @@ static SubChannelId net_schid =3D { .one =3D 1 }; static uint8_t mac[6]; static uint64_t dest_timer; =20 -static uint64_t get_timer_ms(void) -{ - uint64_t clk; - - asm volatile(" stck %0 " : : "Q"(clk) : "memory"); - - /* Bit 51 is incremented each microsecond */ - return (clk >> (63 - 51)) / 1000; -} - void set_timer(int val) { - dest_timer =3D get_timer_ms() + val; + dest_timer =3D get_time_ms() + val; } =20 int get_timer(void) { - return dest_timer - get_timer_ms(); + return dest_timer - get_time_ms(); } =20 int get_sec_ticks(void) diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h index 21f27e79906e..fae1de363fb4 100644 --- a/pc-bios/s390-ccw/s390-ccw.h +++ b/pc-bios/s390-ccw/s390-ccw.h @@ -74,8 +74,6 @@ unsigned long virtio_load_direct(ulong rec_list1, ulong r= ec_list2, bool virtio_is_supported(SubChannelId schid); void virtio_blk_setup_device(SubChannelId schid); int virtio_read(ulong sector, void *load_addr); -u64 get_clock(void); -ulong get_second(void); =20 /* bootmap.c */ void zipl_load(void); @@ -153,11 +151,13 @@ static inline void yield(void) =20 #define MAX_SECTOR_SIZE 4096 =20 +#include "s390-time.h" + static inline void sleep(unsigned int seconds) { - ulong target =3D get_second() + seconds; + ulong target =3D get_time_seconds() + seconds; =20 - while (get_second() < target) { + while (get_time_seconds() < target) { yield(); } } diff --git a/pc-bios/s390-ccw/s390-time.h b/pc-bios/s390-ccw/s390-time.h new file mode 100644 index 000000000000..ed6d98237185 --- /dev/null +++ b/pc-bios/s390-ccw/s390-time.h @@ -0,0 +1,23 @@ +#ifndef TIME_H +#define TIME_H + +static inline u64 get_clock(void) +{ + u64 r; + + asm volatile("stck %0" : "=3DQ" (r) : : "cc"); + return r; +} + +static inline u64 get_time_ms(void) +{ + /* Bit 51 is incremented each microsecond */ + return (get_clock() >> 12) / 1000; +} + +static inline u64 get_time_seconds(void) +{ + return get_time_ms() / 1000; +} + +#endif diff --git a/pc-bios/s390-ccw/virtio-net.c b/pc-bios/s390-ccw/virtio-net.c index ff7f4dad2597..a13f3b6fb9b4 100644 --- a/pc-bios/s390-ccw/virtio-net.c +++ b/pc-bios/s390-ccw/virtio-net.c @@ -19,6 +19,7 @@ #include #include "s390-ccw.h" #include "virtio.h" +#include "s390-time.h" =20 #ifndef DEBUG_VIRTIO_NET #define DEBUG_VIRTIO_NET 0 diff --git a/pc-bios/s390-ccw/virtio-scsi.c b/pc-bios/s390-ccw/virtio-scsi.c index 4fe4b9d261a6..7bf0be4ffa31 100644 --- a/pc-bios/s390-ccw/virtio-scsi.c +++ b/pc-bios/s390-ccw/virtio-scsi.c @@ -14,6 +14,7 @@ #include "virtio.h" #include "scsi.h" #include "virtio-scsi.h" +#include "s390-time.h" =20 static ScsiDevice default_scsi_device; static VirtioScsiCmdReq req; diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c index fb40ca982853..ab49840db853 100644 --- a/pc-bios/s390-ccw/virtio.c +++ b/pc-bios/s390-ccw/virtio.c @@ -15,6 +15,7 @@ #include "virtio-scsi.h" #include "bswap.h" #include "helper.h" +#include "s390-time.h" =20 #define VRING_WAIT_REPLY_TIMEOUT 30 =20 @@ -157,19 +158,6 @@ void vring_send_buf(VRing *vr, void *p, int len, int f= lags) } } =20 -u64 get_clock(void) -{ - u64 r; - - asm volatile("stck %0" : "=3DQ" (r) : : "cc"); - return r; -} - -ulong get_second(void) -{ - return (get_clock() >> 12) / 1000000; -} - int vr_poll(VRing *vr) { if (vr->used->idx =3D=3D vr->used_idx) { @@ -194,7 +182,7 @@ int vr_poll(VRing *vr) */ int vring_wait_reply(void) { - ulong target_second =3D get_second() + vdev.wait_reply_timeout; + ulong target_second =3D get_time_seconds() + vdev.wait_reply_timeout; =20 /* Wait for any queue to be updated by the host */ do { @@ -207,7 +195,7 @@ int vring_wait_reply(void) if (r) { return 0; } - } while (!vdev.wait_reply_timeout || (get_second() < target_second)); + } while (!vdev.wait_reply_timeout || (get_time_seconds() < target_seco= nd)); =20 return 1; } --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593770991; cv=none; d=zohomail.com; s=zohoarc; b=WrKOtT3XTMjO7edfKEoxs4EzAqRfOVbNr5w5idoPsZglUk26CgxKxSyEwOIxBl6OKzrBgMCOeNN5FKX+4XKo/AjzoC+/Yar/MQKUFumPFmZpFC+9CcQbnr2hFX9EtQ+qBy0LDAHhSjKo11L4Gy4KkTurbWzr6RxSZX2jMu/9LbI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593770991; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=cK8XQ/AwHb11iJk2QEEDG6fctSSOnbBRHMWUdWthbPU=; b=ZV9pi/gfWX06JKlRcAr/evUYDrsyCKqg+n6pkfwjc33ZzhILPvyxXRKCWnOxTqjwc6i8KvjjOPmnwglqISNlUAGjDTOKe9S/ZxerfYD1Unq9Yu+NOPbzN25pGy2Bok0Q1rj4qQ53aNVldUJHfav/bPez6EWC2JtQB2R676oEsOk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1593770991385270.5839727746808; Fri, 3 Jul 2020 03:09:51 -0700 (PDT) Received: from localhost ([::1]:48496 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIdi-0008KG-4L for importer@patchew.org; Fri, 03 Jul 2020 06:09:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56510) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIb7-0003Ck-S6 for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:09 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:28355 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIb6-0005Vv-1X for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:09 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-254-aRU1dli2MX2x0AICkDjG1A-1; Fri, 03 Jul 2020 06:07:04 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BF0DC800403; Fri, 3 Jul 2020 10:07:03 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 60C527923E; Fri, 3 Jul 2020 10:07:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770827; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cK8XQ/AwHb11iJk2QEEDG6fctSSOnbBRHMWUdWthbPU=; b=P+2kAuKIS1XreJ/SLNZYcqZs/jdidueyJbRTsKA92TM5OCjiR43LoPtx8cQLBusFQOeDFH 4hDyoHHjTnLBL/DI1i9qv7vk1jYbZG4Gufbqh8v1HI4ZQg+0gS80tHwsgkKH4aVYzPBl6a I8u+LYZJF97sDxhBkdeb8sYsb/ar6Nc= X-MC-Unique: aRU1dli2MX2x0AICkDjG1A-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 03/14] pc-bios: s390x: Move sleep and yield to helper.h Date: Fri, 3 Jul 2020 12:06:39 +0200 Message-Id: <20200703100650.621212-4-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.120; envelope-from=cohuck@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 03:38:32 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , Janosch Frank , David Hildenbrand , qemu-devel@nongnu.org, Christian Borntraeger , qemu-s390x@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Janosch Frank They are definitely helper functions. Signed-off-by: Janosch Frank Reviewed-by: Christian Borntraeger Reviewed-by: Thomas Huth Reviewed-by: David Hildenbrand Message-Id: <20200624075226.92728-4-frankja@linux.ibm.com> Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/helper.h | 17 +++++++++++++++++ pc-bios/s390-ccw/s390-ccw.h | 18 ------------------ pc-bios/s390-ccw/virtio-net.c | 1 + pc-bios/s390-ccw/virtio-scsi.c | 1 + 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/pc-bios/s390-ccw/helper.h b/pc-bios/s390-ccw/helper.h index 78d5bc74421b..32a453b63425 100644 --- a/pc-bios/s390-ccw/helper.h +++ b/pc-bios/s390-ccw/helper.h @@ -14,6 +14,7 @@ #define S390_CCW_HELPER_H =20 #include "s390-ccw.h" +#include "s390-time.h" =20 /* Avoids compiler warnings when casting a pointer to a u32 */ static inline uint32_t ptr2u32(void *ptr) @@ -28,4 +29,20 @@ static inline void *u32toptr(uint32_t n) return (void *)(uint64_t)n; } =20 +static inline void yield(void) +{ + asm volatile ("diag 0,0,0x44" + : : + : "memory", "cc"); +} + +static inline void sleep(unsigned int seconds) +{ + ulong target =3D get_time_seconds() + seconds; + + while (get_time_seconds() < target) { + yield(); + } +} + #endif diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h index fae1de363fb4..c5820e43aed1 100644 --- a/pc-bios/s390-ccw/s390-ccw.h +++ b/pc-bios/s390-ccw/s390-ccw.h @@ -142,26 +142,8 @@ static inline void debug_print_addr(const char *desc, = void *p) #define KVM_S390_VIRTIO_SET_STATUS 2 #define KVM_S390_VIRTIO_CCW_NOTIFY 3 =20 -static inline void yield(void) -{ - asm volatile ("diag 0,0,0x44" - : : - : "memory", "cc"); -} - #define MAX_SECTOR_SIZE 4096 =20 -#include "s390-time.h" - -static inline void sleep(unsigned int seconds) -{ - ulong target =3D get_time_seconds() + seconds; - - while (get_time_seconds() < target) { - yield(); - } -} - static inline void IPL_assert(bool term, const char *message) { if (!term) { diff --git a/pc-bios/s390-ccw/virtio-net.c b/pc-bios/s390-ccw/virtio-net.c index a13f3b6fb9b4..2fcb0a58c5b0 100644 --- a/pc-bios/s390-ccw/virtio-net.c +++ b/pc-bios/s390-ccw/virtio-net.c @@ -20,6 +20,7 @@ #include "s390-ccw.h" #include "virtio.h" #include "s390-time.h" +#include "helper.h" =20 #ifndef DEBUG_VIRTIO_NET #define DEBUG_VIRTIO_NET 0 diff --git a/pc-bios/s390-ccw/virtio-scsi.c b/pc-bios/s390-ccw/virtio-scsi.c index 7bf0be4ffa31..eddfb8a7ad56 100644 --- a/pc-bios/s390-ccw/virtio-scsi.c +++ b/pc-bios/s390-ccw/virtio-scsi.c @@ -15,6 +15,7 @@ #include "scsi.h" #include "virtio-scsi.h" #include "s390-time.h" +#include "helper.h" =20 static ScsiDevice default_scsi_device; static VirtioScsiCmdReq req; --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593770910; cv=none; d=zohomail.com; s=zohoarc; b=Qm2n0zbIMCAEHLzfzvhjmWsnWczVUjSag5LpXVzO4VBl0skkE0GwI5yKrMwenn/GIRFygXhbZbXJXxg+SNep1XKcRcRBXtgXjcNo+g2jzJKCpwRQsDoplzwVOb+O8Ew1CGyKJgcGVfXqVDypVGgbXKR8Jgjr2Fnzdiq8DDe9nEI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593770910; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=WXcLYdyAsOR9Mteeheh8+N7Y20u/vLKQhDl19KIwhTU=; b=fsyRWwqtH7mN9QXp5qY7NXf2JTOqcIpDVwAQIroZsy0JwZkPmVhZAkDjBeZflt8GjTnZHBTjKRddPbZQUktBljNFI5zuK53DEsyhFI3QcL+S9Qfl8l5P2rrD8USF9ep8b2WbrSlQFvsu4uj13I327QdAgSJq9Cr6iEJd4dc0bCQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1593770910125867.7992611950118; Fri, 3 Jul 2020 03:08:30 -0700 (PDT) Received: from localhost ([::1]:40552 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIcO-00059D-Rn for importer@patchew.org; Fri, 03 Jul 2020 06:08:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56540) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIbC-0003Mv-DJ for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:14 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:49565 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIbA-0005X7-LX for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:14 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-492-bk50CHWRNFONyPWL90zUnA-1; Fri, 03 Jul 2020 06:07:09 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B0CA4800C64; Fri, 3 Jul 2020 10:07:08 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 873CF1053B1B; Fri, 3 Jul 2020 10:07:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770831; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=WXcLYdyAsOR9Mteeheh8+N7Y20u/vLKQhDl19KIwhTU=; b=DjsONlliAUcqtJYohrtAU6HczwooZEFkITH+S/y6rsEFyA3xhc4e7wL91UMtJPNBvga53q 2Bf8R02gaHFCwTDz/BPW7uUgZp3N5N1OJD1CZBJ3MPOcaN5AeXIx0ZZ+S2rV8GtEbemkF7 KhCPA5oB0iYBo1r9puOn4YBelwLwnyU= X-MC-Unique: bk50CHWRNFONyPWL90zUnA-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 04/14] pc-bios: s390x: Get rid of magic offsets into the lowcore Date: Fri, 3 Jul 2020 12:06:40 +0200 Message-Id: <20200703100650.621212-5-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.61; envelope-from=cohuck@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 03:17:33 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , Janosch Frank , David Hildenbrand , Cornelia Huck , qemu-devel@nongnu.org, qemu-s390x@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Janosch Frank If we have a lowcore struct that has members for offsets that we want to touch, why not use it? Signed-off-by: Janosch Frank Reviewed-by: David Hildenbrand Reviewed-by: Thomas Huth Reviewed-by: Cornelia Huck Message-Id: <20200624075226.92728-5-frankja@linux.ibm.com> Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/cio.h | 17 +++++++++++------ pc-bios/s390-ccw/main.c | 8 +++----- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/pc-bios/s390-ccw/cio.h b/pc-bios/s390-ccw/cio.h index aaa432deddb9..1e5d4e92e12c 100644 --- a/pc-bios/s390-ccw/cio.h +++ b/pc-bios/s390-ccw/cio.h @@ -122,12 +122,17 @@ typedef struct schib { } __attribute__ ((packed, aligned(4))) Schib; =20 typedef struct subchannel_id { - __u32 cssid:8; - __u32:4; - __u32 m:1; - __u32 ssid:2; - __u32 one:1; - __u32 sch_no:16; + union { + struct { + __u16 cssid:8; + __u16 reserved:4; + __u16 m:1; + __u16 ssid:2; + __u16 one:1; + }; + __u16 sch_id; + }; + __u16 sch_no; } __attribute__ ((packed, aligned(4))) SubChannelId; =20 struct chsc_header { diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c index 4e65b411e1d8..8b912454c940 100644 --- a/pc-bios/s390-ccw/main.c +++ b/pc-bios/s390-ccw/main.c @@ -36,11 +36,9 @@ LowCore *lowcore; /* Yes, this *is* a pointer to address= 0 */ */ void write_subsystem_identification(void) { - SubChannelId *schid =3D (SubChannelId *) 184; - uint32_t *zeroes =3D (uint32_t *) 188; - - *schid =3D blk_schid; - *zeroes =3D 0; + lowcore->subchannel_id =3D blk_schid.sch_id; + lowcore->subchannel_nr =3D blk_schid.sch_no; + lowcore->io_int_parm =3D 0; } =20 void write_iplb_location(void) --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593770996; cv=none; d=zohomail.com; s=zohoarc; b=EBQUSAeADji8s5x2BwPVVaiTZbVbMC4mUlPww18RDRCzhM2xI31sOzXn63aHXGGA2aKZ4PILtSJfSiHnjqpvYMUXoq10Zv5ZNcTHF7uoPuW2skNzKoMtWwGzQk3ERdiSJZyYLHMI6Nn+Z4/WP5GqF4VPRID5sO2GoPH391hg4mQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593770996; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Qpo7lzs7HI8egtRTuVxnmn8CelWexfSXKEoV3unwii4=; b=LM3q1OhqB+QRZrKq9D5CKcPAIixpQufIJgE2E+BD8kHmZXVP+LcK5Lt1KpWKo3uFMHS3dbIhz4LQmxPKgV/nvg2Fbvk8iUJatPL36VdFEgellK2V6hUXPFIiewDc+Zxqw2nBhWwV03EAY1/g00G1Rsy2Rq0JEu8Xs+t1eWD5MNg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15937709965001004.1185756112636; Fri, 3 Jul 2020 03:09:56 -0700 (PDT) Received: from localhost ([::1]:49032 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIdn-00007C-8t for importer@patchew.org; Fri, 03 Jul 2020 06:09:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56604) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIbH-0003WM-9q for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:19 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:34734 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIbE-0005Yq-Gv for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:18 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-432-78ztatxVPoiL1ebYPuScYg-1; Fri, 03 Jul 2020 06:07:11 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D1C438015F5; Fri, 3 Jul 2020 10:07:10 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 76A6E46; Fri, 3 Jul 2020 10:07:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770835; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Qpo7lzs7HI8egtRTuVxnmn8CelWexfSXKEoV3unwii4=; b=Az+1JT65+O2i8G4uE6cAR3x4ZbvPCUiR1mzO887OwsqTNh2mX751vbQbIdkwPVFz+TO39L NJ6hchz1jbWNr/ybraAbI3V0F5NKzAw+dw2JgMjEwhVnbKzOCAZX+ci2ZT5mMffJ9zu2ON M7Ia+FOqxZSHyrhQZNYO9REGA2jBeHg= X-MC-Unique: 78ztatxVPoiL1ebYPuScYg-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 05/14] pc-bios: s390x: Rename PSW_MASK_ZMODE to PSW_MASK_64 Date: Fri, 3 Jul 2020 12:06:41 +0200 Message-Id: <20200703100650.621212-6-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.120; envelope-from=cohuck@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 03:38:32 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Janosch Frank Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Janosch Frank This constant enables 64 bit addressing, not the ESAME architecture, so it shouldn't be named ZMODE. Signed-off-by: Janosch Frank Reviewed-by: Thomas Huth Message-Id: <20200624075226.92728-7-frankja@linux.ibm.com> Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/s390-arch.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pc-bios/s390-ccw/s390-arch.h b/pc-bios/s390-ccw/s390-arch.h index 5f36361c0223..73852029d4e9 100644 --- a/pc-bios/s390-ccw/s390-arch.h +++ b/pc-bios/s390-ccw/s390-arch.h @@ -29,7 +29,7 @@ _Static_assert(sizeof(struct PSWLegacy) =3D=3D 8, "PSWLeg= acy size incorrect"); #define PSW_MASK_WAIT 0x0002000000000000ULL #define PSW_MASK_EAMODE 0x0000000100000000ULL #define PSW_MASK_BAMODE 0x0000000080000000ULL -#define PSW_MASK_ZMODE (PSW_MASK_EAMODE | PSW_MASK_BAMODE) +#define PSW_MASK_64 (PSW_MASK_EAMODE | PSW_MASK_BAMODE) =20 /* Low core mapping */ typedef struct LowCore { --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593771090; cv=none; d=zohomail.com; s=zohoarc; b=izsAk3r9Rjaj7a6S8xJg5on/6rVB1s6oyUe8/ddFmnoOEw5kKzOcmesEVwyEFucUjvh4wfdGMTXxv/zTxCDahrv61HPoCLjtq/XJ3G8o18Xc0OYFMNjOYngDkJuVi1GaCRn7y7TGLDhSdwZ2PglJ5mV5rwG0FGP9GcnB4UcDTO4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593771090; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7jklPsmO80lQwW/INNnakldmejfDrTZhuCe9ORT0qnI=; b=PKz8PcXKbSyif86IrJdLdep9+Nn6QnvRiawC/KIncfINQVhcJY9xW5GmFpiJkWeQ8QChcfdmtniGJk0fq80q/Hzf93DnOXYAAEv0chQ5jiCJTeFS1INgRpWBLY+faFvCaxhC17qP2l9844A004RWY8/KNwxln2BmJQexGtcV6bE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1593771090568939.8779311420773; Fri, 3 Jul 2020 03:11:30 -0700 (PDT) Received: from localhost ([::1]:56136 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIfJ-0003AK-35 for importer@patchew.org; Fri, 03 Jul 2020 06:11:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56610) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIbJ-0003b4-3i for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:21 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:23164 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIbF-0005Z0-7y for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:20 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-349-1IPhdlIoOsWpQHip2ZZ4Gw-1; Fri, 03 Jul 2020 06:07:14 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0AB81107AD92; Fri, 3 Jul 2020 10:07:13 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 96E547C1E8; Fri, 3 Jul 2020 10:07:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770836; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7jklPsmO80lQwW/INNnakldmejfDrTZhuCe9ORT0qnI=; b=Ic4azFmPJGxp0rajks7OCJajkZIFWYmkQFv2mgAq+Vp05O3uPTFLkaQyrUJgK5WF9VZyUV hVWcR5RsiVEUXSmemwyo5vIFet6Rp+xmEU4hghsB/h9gy+XOXV9QBINi4nMuDXXRCTRmMn kVKDXXenEHZKxvUbD8SC4FCVkHUe+QA= X-MC-Unique: 1IPhdlIoOsWpQHip2ZZ4Gw-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 06/14] pc-bios: s390x: Use PSW masks where possible and introduce PSW_MASK_SHORT_ADDR Date: Fri, 3 Jul 2020 12:06:42 +0200 Message-Id: <20200703100650.621212-7-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.120; envelope-from=cohuck@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 02:53:25 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , qemu-s390x@nongnu.org, David Hildenbrand , qemu-devel@nongnu.org, Janosch Frank Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Janosch Frank Let's move some of the PSW mask defines into s390-arch.h and use them in jump2ipl.c. Also let's introduce a new constant for the address mask of 8 byte (short) PSWs. Signed-off-by: Janosch Frank Reviewed-by: David Hildenbrand Reviewed-by: Thomas Huth Message-Id: <20200624075226.92728-8-frankja@linux.ibm.com> Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/jump2ipl.c | 10 ++++------ pc-bios/s390-ccw/s390-arch.h | 2 ++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pc-bios/s390-ccw/jump2ipl.c b/pc-bios/s390-ccw/jump2ipl.c index 4eba2510b045..767012bf0c9f 100644 --- a/pc-bios/s390-ccw/jump2ipl.c +++ b/pc-bios/s390-ccw/jump2ipl.c @@ -8,12 +8,10 @@ =20 #include "libc.h" #include "s390-ccw.h" +#include "s390-arch.h" =20 #define KERN_IMAGE_START 0x010000UL -#define PSW_MASK_64 0x0000000100000000ULL -#define PSW_MASK_32 0x0000000080000000ULL -#define PSW_MASK_SHORTPSW 0x0008000000000000ULL -#define RESET_PSW_MASK (PSW_MASK_SHORTPSW | PSW_MASK_32 | PSW_MASK_64) +#define RESET_PSW_MASK (PSW_MASK_SHORTPSW | PSW_MASK_64) =20 typedef struct ResetInfo { uint64_t ipl_psw; @@ -54,7 +52,7 @@ void jump_to_IPL_code(uint64_t address) =20 current->ipl_psw =3D (uint64_t) &jump_to_IPL_2; current->ipl_psw |=3D RESET_PSW_MASK; - current->ipl_continue =3D address & 0x7fffffff; + current->ipl_continue =3D address & PSW_MASK_SHORT_ADDR; =20 debug_print_int("set IPL addr to", current->ipl_continue); =20 @@ -86,7 +84,7 @@ void jump_to_low_kernel(void) =20 /* Trying to get PSW at zero address */ if (*((uint64_t *)0) & RESET_PSW_MASK) { - jump_to_IPL_code((*((uint64_t *)0)) & 0x7fffffff); + jump_to_IPL_code((*((uint64_t *)0)) & PSW_MASK_SHORT_ADDR); } =20 /* No other option left, so use the Linux kernel start address */ diff --git a/pc-bios/s390-ccw/s390-arch.h b/pc-bios/s390-ccw/s390-arch.h index 73852029d4e9..6da44d4436c7 100644 --- a/pc-bios/s390-ccw/s390-arch.h +++ b/pc-bios/s390-ccw/s390-arch.h @@ -26,9 +26,11 @@ _Static_assert(sizeof(struct PSWLegacy) =3D=3D 8, "PSWLe= gacy size incorrect"); =20 /* s390 psw bit masks */ #define PSW_MASK_IOINT 0x0200000000000000ULL +#define PSW_MASK_SHORTPSW 0x0008000000000000ULL #define PSW_MASK_WAIT 0x0002000000000000ULL #define PSW_MASK_EAMODE 0x0000000100000000ULL #define PSW_MASK_BAMODE 0x0000000080000000ULL +#define PSW_MASK_SHORT_ADDR 0x000000007fffffffULL #define PSW_MASK_64 (PSW_MASK_EAMODE | PSW_MASK_BAMODE) =20 /* Low core mapping */ --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593771177; cv=none; d=zohomail.com; s=zohoarc; b=j1HYOV2FhntrrGfGn6P0lh637CyOWkSS+XP9QKiF4THESOEbPm0uVcBNmdGA0+EhnEeILntD0xWQyKpsaxxC0I8UOtkbECvQeKc0Exjy4StaiesUaGzsc2M8MwJ2w7PZM/3891Gnz8Fzucl2XrDVGswlrdLFGDI1yweAha0FxLs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593771177; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+h8DgdJ/QNhxgIogOI7OC8K+gM1arOnEuxQ/Zp39QDo=; b=b+y4iWvwTKweuzQQxL/RgfxMUTcZkEMZXUgLLg5VM6+bbgylTOJzyH6htAHPXiFjJo23cMKUzJJ/4cH/gx8xqkda6e1swUGFWuzua/L1jDQhpNuVp8CmcnPx8W1ZPaTzxAZoKkLk8Pz017AJCEap7KdO2Bo1L0WqFr2c1Lm8htI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1593771177117326.58767089736796; Fri, 3 Jul 2020 03:12:57 -0700 (PDT) Received: from localhost ([::1]:33856 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIgh-0005bp-TY for importer@patchew.org; Fri, 03 Jul 2020 06:12:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56666) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIbR-0003m8-9T for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:29 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:42001 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIbN-0005cw-6L for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:28 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-465-Ap_CO2XRNP6E7h_U_u9o8Q-1; Fri, 03 Jul 2020 06:07:19 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 170A3186A200; Fri, 3 Jul 2020 10:07:18 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E5C8173FE9; Fri, 3 Jul 2020 10:07:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770843; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+h8DgdJ/QNhxgIogOI7OC8K+gM1arOnEuxQ/Zp39QDo=; b=dxVVgkm1rxmCwjiOyNadDSiS77DGV3nUpcqMx9C+6/w8mtJqtCeFgoaNazECLokWxr6zPw 8CiPfIh57EIiou+msKyGodfS/KqmVCnXFYH4o0EKLNtNkesJuHZ9+awaBg5i9aTZIUAxlr OeYwKKkWv5cbPaErPi0XE3qoFqnmHmI= X-MC-Unique: Ap_CO2XRNP6E7h_U_u9o8Q-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 07/14] pc-bios: s390x: Move panic() into header and add infinite loop Date: Fri, 3 Jul 2020 12:06:43 +0200 Message-Id: <20200703100650.621212-8-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.81; envelope-from=cohuck@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 01:34:15 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , Janosch Frank , Pierre Morel , David Hildenbrand , qemu-devel@nongnu.org, qemu-s390x@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Janosch Frank panic() was defined for the ccw and net bios, i.e. twice, so it's cleaner to rather put it into the header. Also let's add an infinite loop into the assembly of disabled_wait() so the caller doesn't need to take care of it. Signed-off-by: Janosch Frank Reviewed-by: Pierre Morel Reviewed-by: David Hildenbrand Reviewed-by: Thomas Huth Message-Id: <20200624075226.92728-9-frankja@linux.ibm.com> Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/main.c | 7 ------- pc-bios/s390-ccw/netmain.c | 8 -------- pc-bios/s390-ccw/s390-ccw.h | 9 +++++++-- pc-bios/s390-ccw/start.S | 5 +++-- 4 files changed, 10 insertions(+), 19 deletions(-) diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c index 8b912454c940..146a50760bc7 100644 --- a/pc-bios/s390-ccw/main.c +++ b/pc-bios/s390-ccw/main.c @@ -46,13 +46,6 @@ void write_iplb_location(void) lowcore->ptr_iplb =3D ptr2u32(&iplb); } =20 -void panic(const char *string) -{ - sclp_print(string); - disabled_wait(); - while (1) { } -} - unsigned int get_loadparm_index(void) { return atoui(loadparm_str); diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c index f1ee63577ad7..056e93a818fd 100644 --- a/pc-bios/s390-ccw/netmain.c +++ b/pc-bios/s390-ccw/netmain.c @@ -439,14 +439,6 @@ static int net_try_direct_tftp_load(filename_ip_t *fn_= ip) return rc; } =20 -void panic(const char *string) -{ - sclp_print(string); - for (;;) { - disabled_wait(); - } -} - void write_subsystem_identification(void) { SubChannelId *schid =3D (SubChannelId *) 184; diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h index c5820e43aed1..36b884ccedf2 100644 --- a/pc-bios/s390-ccw/s390-ccw.h +++ b/pc-bios/s390-ccw/s390-ccw.h @@ -50,12 +50,11 @@ typedef unsigned long long __u64; #include "iplb.h" =20 /* start.s */ -void disabled_wait(void); +void disabled_wait(void) __attribute__ ((__noreturn__)); void consume_sclp_int(void); void consume_io_int(void); =20 /* main.c */ -void panic(const char *string); void write_subsystem_identification(void); void write_iplb_location(void); extern char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE))); @@ -91,6 +90,12 @@ bool menu_is_enabled_enum(void); =20 #define MAX_BOOT_ENTRIES 31 =20 +static inline void panic(const char *string) +{ + sclp_print(string); + disabled_wait(); +} + static inline void fill_hex(char *out, unsigned char val) { const char hex[] =3D "0123456789abcdef"; diff --git a/pc-bios/s390-ccw/start.S b/pc-bios/s390-ccw/start.S index aa8fceb19da2..ce519300a1f3 100644 --- a/pc-bios/s390-ccw/start.S +++ b/pc-bios/s390-ccw/start.S @@ -47,8 +47,9 @@ memsetxc: */ .globl disabled_wait disabled_wait: - larl %r1,disabled_wait_psw - lpswe 0(%r1) + larl %r1,disabled_wait_psw + lpswe 0(%r1) +1: j 1b =20 =20 /* --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593771288; cv=none; d=zohomail.com; s=zohoarc; b=GzZjhuL2JG2WyEAQWGnko4OmuoIBEQIAnbfJ4TtKvBpicNB9fXZIjnRaTkylFmPcryZNk/91S1OmwDEcCzbt8sYnMyfkc4sqhwT4cz+hI4JxFeIpm53BGtn2wzAfHAps/PZEFi/W4EOw0YjZc70/guIQACiY32MxvoHNxlL22iw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593771288; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=iM/scTxHUTTbuwpBv7Hbb3+LKCnN3+mD532hnZl4PoA=; b=Xa4f/yAs+IdHHH9rtWz8E9HWIy/qvCxdhsH3r7E731weHYd26rQNHJr3LXsAZC373S/BgaBTeBh9IGUSEbVjtGfxCbd4rtGvLeuO3YYq8mRzMd3MMPa0Ue6asNrJJmEbr1kVIwMH6Gdv6dEgIR7MBlz2kU16q0EGIBvYzfVSYBQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1593771288677972.8975411503719; Fri, 3 Jul 2020 03:14:48 -0700 (PDT) Received: from localhost ([::1]:40928 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIiV-0000Qx-CZ for importer@patchew.org; Fri, 03 Jul 2020 06:14:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56688) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIbT-0003t3-UR for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:31 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:45237 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIbS-0005iT-G3 for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:31 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-17-CTGTf8RIOP2DfjgwByVkfw-1; Fri, 03 Jul 2020 06:07:24 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A575110059DE; Fri, 3 Jul 2020 10:07:23 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D13B59CA0; Fri, 3 Jul 2020 10:07:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770849; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=iM/scTxHUTTbuwpBv7Hbb3+LKCnN3+mD532hnZl4PoA=; b=Go8Ey90cy5lo7ecHNhkPGNvtfM0bpt5YMc0RqxiI4TXJ+H4ceRaT1bSVgsoSCYhsLwwh3Q xSJZANNKuYI8mhNhBIIV5ZjO88PYGYiV1WJQWzwPnLNlAO+DLQeOrVUicD0uuCGgm+I2KR XNtnK1ICNDDF0NSMcMRP6ZnCspXW/XU= X-MC-Unique: CTGTf8RIOP2DfjgwByVkfw-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 08/14] pc-bios: s390x: Use ebcdic2ascii table Date: Fri, 3 Jul 2020 12:06:44 +0200 Message-Id: <20200703100650.621212-9-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.120; envelope-from=cohuck@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 02:53:25 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , qemu-s390x@nongnu.org, David Hildenbrand , qemu-devel@nongnu.org, Janosch Frank Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Janosch Frank Why should we do conversion of a ebcdic value if we have a handy table where we could look up the ascii value instead? Signed-off-by: Janosch Frank Reviewed-by: David Hildenbrand Reviewed-by: Thomas Huth Message-Id: <20200624075226.92728-10-frankja@linux.ibm.com> Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/bootmap.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c index d13b7cbd1597..97205674e59a 100644 --- a/pc-bios/s390-ccw/bootmap.c +++ b/pc-bios/s390-ccw/bootmap.c @@ -328,9 +328,7 @@ static void print_eckd_ldl_msg(ECKD_IPL_mode_t mode) msg[0] =3D '2'; break; default: - msg[0] =3D vlbl->LDL_version; - msg[0] &=3D 0x0f; /* convert EBCDIC */ - msg[0] |=3D 0x30; /* to ASCII (digit) */ + msg[0] =3D ebc2asc[vlbl->LDL_version]; msg[1] =3D '?'; break; } --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593770988; cv=none; d=zohomail.com; s=zohoarc; b=C3bIbCOvKDovtUf0XYoXHnkXLKNa10qLaJt9vvNrEYkNlFgvklfPlQ/5poQIcLvnkOxFstrmimNiq3DZMGFpZAImUaHfla50EV31vZ4wV4iu8S053NW1SVFszOZwbYlb9DvUR38XHdbSUoJ00TODaMBRJaCqFjN7DPjkQoCZqaM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593770988; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VfPhg7++LALtQcuj4RlFd74PAl+qNjiUNKW+0vLxOck=; b=TQERQbO07BZIghYdaSjgzaW8UvS0o//VwtMQe4OldiCPZpgNta4E0wvolQ8Tk4qh1SIlJ5hj/ai3NkOcg9DCHZqUrfBqR7JkAfkVB3RF2UeMTFheiwXDPzBDU4Iqx6pk9eE7fHJAvodY3gyVxE8C2G+zP1Pzwi5p4QWoDztc6vg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1593770988072972.7070136640656; Fri, 3 Jul 2020 03:09:48 -0700 (PDT) Received: from localhost ([::1]:48194 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIde-0008Ck-Rc for importer@patchew.org; Fri, 03 Jul 2020 06:09:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56728) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIbX-000434-LQ for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:35 -0400 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:37334 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIbV-0005im-BZ for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:35 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-51-bV-yuSaVMSmmz2Ne42cP_g-1; Fri, 03 Jul 2020 06:07:30 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5782D1883612; Fri, 3 Jul 2020 10:07:29 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 882907BD56; Fri, 3 Jul 2020 10:07:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770852; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VfPhg7++LALtQcuj4RlFd74PAl+qNjiUNKW+0vLxOck=; b=LI3XWahX5HUXlK/CvwZ/JgArQ6bkJoaz5Y+e7XgYaLvqd1rzMQGMf1bLqlGFu426grFxgj T4t4G0MKvCSsrgdj8ZaUvR0h9EAEtnDAmd7owNPilg3OexLPIEfocCIQotRTCf85cEKyqu LjHHM1qhDB5odawg0HVPNIlhMzrii/M= X-MC-Unique: bV-yuSaVMSmmz2Ne42cP_g-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 09/14] pc-bios: s390x: Make u32 ptr check explicit Date: Fri, 3 Jul 2020 12:06:45 +0200 Message-Id: <20200703100650.621212-10-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.81; envelope-from=cohuck@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 01:34:15 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , qemu-s390x@nongnu.org, David Hildenbrand , qemu-devel@nongnu.org, Janosch Frank Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Janosch Frank Let's make it a bit more clear that we check the full 64 bits to fit into the 32 we return. Signed-off-by: Janosch Frank Suggested-by: David Hildenbrand Reviewed-by: David Hildenbrand Reviewed-by: Thomas Huth Message-Id: <20200624075226.92728-11-frankja@linux.ibm.com> Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/helper.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pc-bios/s390-ccw/helper.h b/pc-bios/s390-ccw/helper.h index 32a453b63425..dfcfea0ff0cb 100644 --- a/pc-bios/s390-ccw/helper.h +++ b/pc-bios/s390-ccw/helper.h @@ -19,7 +19,7 @@ /* Avoids compiler warnings when casting a pointer to a u32 */ static inline uint32_t ptr2u32(void *ptr) { - IPL_assert((uint64_t)ptr <=3D 0xffffffff, "ptr2u32: ptr too large"); + IPL_assert((uint64_t)ptr <=3D 0xffffffffull, "ptr2u32: ptr too large"); return (uint32_t)(uint64_t)ptr; } =20 --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593771403; cv=none; d=zohomail.com; s=zohoarc; b=MBHcHiTgQSR0N2oEYicRu2wJ6htllsNnEiTzb8isPrzKNg7U+Vqt8KKXB62yULLE9wa8dyIC+o3vdfgHw3H9+XhXd0576RYdU1pg2m4T/h9xZ0maxM9h8WANpidtkU3P7YYDpJL32NS8sYAibzYaKuCgZZOCKpU1N6j5B6a2RjQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593771403; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=W2TE0dVXJuo8Nfi3+55Bh9Zs+3ZGy1eU1EaJLp9/dcI=; b=hsHd46iIvqDbcs3fyuCJGs3Dua2qw31ZUFuzq0dFdVex2/HsdIQO6xy0PwM9B7kQVCk3Fy1FADE14uZuWvgp9GIxx/Fd+tst3Hr8sDPwhm2k7ACaZzYmxE/8aA6TX4/288Utxo52Ef2cedEDUUrx3AviECfrXWNhkhUX/S3Qnww= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1593771403746982.2084146159635; Fri, 3 Jul 2020 03:16:43 -0700 (PDT) Received: from localhost ([::1]:47998 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIkM-0003yy-Fe for importer@patchew.org; Fri, 03 Jul 2020 06:16:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56746) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIbZ-000472-5S for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:37 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:52806 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIbX-0005kB-6w for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:36 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-319-sA_Yr6u6OjOfX87gjxenGA-1; Fri, 03 Jul 2020 06:07:32 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 79AD2800C64; Fri, 3 Jul 2020 10:07:31 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1D12E73FE9; Fri, 3 Jul 2020 10:07:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770854; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=W2TE0dVXJuo8Nfi3+55Bh9Zs+3ZGy1eU1EaJLp9/dcI=; b=QUcfO/VmAc3/k8xek/55H0Np6O1+4MHZX/PLGQv3/bmh/r+QRN8UB5n8u36v/I5gyj13sg OroXx02DRk5w/BQFiQyzdakvhlzGoG+IrGiRcFe2wiJLaW1oWYXpcKidHw3jN9zQ6RQsPo Ip9XOF8YJtEaOHJ+rnQLw3IfW5nbZgE= X-MC-Unique: sA_Yr6u6OjOfX87gjxenGA-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 10/14] pc-bios/s390-ccw: Generate and include dependency files in the Makefile Date: Fri, 3 Jul 2020 12:06:46 +0200 Message-Id: <20200703100650.621212-11-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.81; envelope-from=cohuck@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 01:34:15 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , qemu-s390x@nongnu.org, Cornelia Huck , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Thomas Huth The Makefile of the s390-ccw bios does not handle dependencies of the *.c files from the headers yet, so that you often have to run a "make clean" to get the build right when one of the headers has been changed. Let's make sure that we generate and include dependency files for all *.c files now to avoid this problem in the future. Acked-by: Cornelia Huck Message-Id: <20200630142955.7662-1-thuth@redhat.com> Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/Makefile | 3 +++ pc-bios/s390-ccw/netboot.mak | 13 +++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile index a048b6b077a9..50bc8802724f 100644 --- a/pc-bios/s390-ccw/Makefile +++ b/pc-bios/s390-ccw/Makefile @@ -38,5 +38,8 @@ s390-netboot.img: @echo "s390-netboot.img not built since roms/SLOF/ is not available." endif =20 +ALL_OBJS =3D $(sort $(OBJECTS) $(NETOBJS) $(LIBCOBJS) $(LIBNETOBJS)) +-include $(ALL_OBJS:%.o=3D%.d) + clean: rm -f *.o *.d *.img *.elf *~ *.a diff --git a/pc-bios/s390-ccw/netboot.mak b/pc-bios/s390-ccw/netboot.mak index 5eefb7c28939..577c023afe3d 100644 --- a/pc-bios/s390-ccw/netboot.mak +++ b/pc-bios/s390-ccw/netboot.mak @@ -1,8 +1,7 @@ =20 SLOF_DIR :=3D $(SRC_PATH)/roms/SLOF =20 -NETOBJS :=3D start.o sclp.o cio.o virtio.o virtio-net.o jump2ipl.o netmain= .o \ - libnet.a libc.a +NETOBJS :=3D start.o sclp.o cio.o virtio.o virtio-net.o jump2ipl.o netmain= .o =20 LIBC_INC :=3D -nostdinc -I$(SLOF_DIR)/lib/libc/include LIBNET_INC :=3D -I$(SLOF_DIR)/lib/libnet @@ -11,15 +10,16 @@ NETLDFLAGS :=3D $(LDFLAGS) -Ttext=3D0x7800000 =20 $(NETOBJS): QEMU_CFLAGS +=3D $(LIBC_INC) $(LIBNET_INC) =20 -s390-netboot.elf: $(NETOBJS) - $(call quiet-command,$(CC) $(NETLDFLAGS) -o $@ $(NETOBJS),"BUILD","$(TARG= ET_DIR)$@") +s390-netboot.elf: $(NETOBJS) libnet.a libc.a + $(call quiet-command,$(CC) $(NETLDFLAGS) -o $@ $^,"BUILD","$(TARGET_DIR)$= @") =20 s390-netboot.img: s390-netboot.elf $(call quiet-command,$(STRIP) --strip-unneeded $< -o $@,"STRIP","$(TARGET= _DIR)$@") =20 # libc files: =20 -LIBC_CFLAGS :=3D $(QEMU_CFLAGS) $(CFLAGS) $(LIBC_INC) $(LIBNET_INC) +LIBC_CFLAGS =3D $(QEMU_CFLAGS) $(CFLAGS) $(LIBC_INC) $(LIBNET_INC) \ + -MMD -MP -MT $@ -MF $(@:%.o=3D%.d) =20 CTYPE_OBJS =3D isdigit.o isxdigit.o toupper.o %.o : $(SLOF_DIR)/lib/libc/ctype/%.c @@ -52,7 +52,8 @@ libc.a: $(LIBCOBJS) =20 LIBNETOBJS :=3D args.o dhcp.o dns.o icmpv6.o ipv6.o tcp.o udp.o bootp.o \ dhcpv6.o ethernet.o ipv4.o ndp.o tftp.o pxelinux.o -LIBNETCFLAGS :=3D $(QEMU_CFLAGS) $(CFLAGS) -DDHCPARCH=3D0x1F $(LIBC_INC) $= (LIBNET_INC) +LIBNETCFLAGS =3D $(QEMU_CFLAGS) $(CFLAGS) $(LIBC_INC) $(LIBNET_INC) \ + -DDHCPARCH=3D0x1F -MMD -MP -MT $@ -MF $(@:%.o=3D%.d) =20 %.o : $(SLOF_DIR)/lib/libnet/%.c $(call quiet-command,$(CC) $(LIBNETCFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR= )$@") --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593771138; cv=none; d=zohomail.com; s=zohoarc; b=e1+ZUVze2QNjYV1INaxLNqEIa8WJdgX/iCy/PwDaxVNhaF2nqoXIzD78JbLhbtcdD+Ou5XSlVNX/qMcyMcsvxP2PhTobGG4tTOsCrAyWjiaKaXOPH+kVRXbzm+SME7HU7FckSguCRS7u1+PNWeohlz6+0Wn+WG18n+6yxlWY/3Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593771138; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qZUUDa6JPaOgCdAUL4wbrIqHOq/rt3XplbCKsjGJeRA=; b=ka0AhrdVdKyxgWXYXfuDKuAqGW752I0U1aC930THj/Tp2HMR4oHUlaKZmpPz13jSuBQZAGwGLEEMlTqTJuTry6OfHRHNiRoJvjOiw6gsslMpDa/s7ssVdYUDOp9dpmN6LftJAcuEkfEmCpVtLskdzW2HXL9EtdrdDApqK6P24rw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1593771138068371.1317395319878; Fri, 3 Jul 2020 03:12:18 -0700 (PDT) Received: from localhost ([::1]:59250 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIg4-0004Qa-JH for importer@patchew.org; Fri, 03 Jul 2020 06:12:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56814) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIbn-0004Ti-Ah for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:51 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:60045 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIbd-0005my-Qc for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:47 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-336-MMrhiU3DP0KBev5_u_vNiA-1; Fri, 03 Jul 2020 06:07:35 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 73A86107ACCA; Fri, 3 Jul 2020 10:07:34 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 52A547BD56; Fri, 3 Jul 2020 10:07:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770861; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qZUUDa6JPaOgCdAUL4wbrIqHOq/rt3XplbCKsjGJeRA=; b=SqO+SomIM5aGBLaCyasccP3Fl+ZRGmmK9yvw+U+Otuwfr7Gtgf717C0LDTheoJeZniCQcL IuxYACL9VVLGakVY2/UClVBagXYUYh9DMOWLlHowp5jW1Pe72BmtOBgynO8ASYKLr7pJcl ThId8L+77OK4gjs/RXZjzh3tmu8FIjw= X-MC-Unique: MMrhiU3DP0KBev5_u_vNiA-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 11/14] pc-bios/s390: Update s390-ccw bios binaries with the latest changes Date: Fri, 3 Jul 2020 12:06:47 +0200 Message-Id: <20200703100650.621212-12-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.61; envelope-from=cohuck@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 03:17:33 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , qemu-s390x@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Thomas Huth ... to make sure that the binaries match the current state of the sources. Signed-off-by: Thomas Huth --- pc-bios/s390-ccw.img | Bin 42608 -> 42608 bytes pc-bios/s390-netboot.img | Bin 67232 -> 67232 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img index b9da9d8ecb10faa484a9a524a202f1f69cb59ad6..3074686a8c7448d943aa62f810d= 88d3e92865ef3 100644 GIT binary patch literal 42608 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 M*2pCE*Bnp$A1vB}761SM literal 42608 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 --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593771479; cv=none; d=zohomail.com; s=zohoarc; b=nbbhiJhqLT24xOeZPjIw3kp+VGaG+sQXnacLmngfiOv/DWNz4iVKKRdX9yyyLMMgPiOaBNfRFG+MC5Kx10WftPf84vUDB9nGrqQsVuC1XJDuvwuoe/I8cko4RSnk9m4ECIc2J8OPebHU5CDcBclq4YrjaE5CisqiDdYrCHs/lJk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593771479; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=QD0N/uKfSfOkfoCWH5z+rUHr3iQlE/62wTPwUfJqJ1w=; b=I4tEfRU0s0wnrq3jMONRPceDSWVqjSRPOWhHHzhko7B1HCZLOcZaxfvVaY2HbYkwazHY8dfOh2ed9umgaAiICBNtSl1TV5bp90LrvURrFP8AQq36qc3Np800X2hrEChH4E7ZRcwDZg6a2YoMQgiV9Seds7vhrQVchVItdKwDoYg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1593771479626173.7748853583605; Fri, 3 Jul 2020 03:17:59 -0700 (PDT) Received: from localhost ([::1]:51066 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIla-0005lR-Az for importer@patchew.org; Fri, 03 Jul 2020 06:17:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56856) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIbo-0004VK-3G for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:52 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:43876 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIbh-0005pC-TY for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:51 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-293-QMGwU6U2NzSK-iXjSBaRjg-1; Fri, 03 Jul 2020 06:07:40 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4A4071883619; Fri, 3 Jul 2020 10:07:39 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3641673FEF; Fri, 3 Jul 2020 10:07:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770865; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QD0N/uKfSfOkfoCWH5z+rUHr3iQlE/62wTPwUfJqJ1w=; b=IwrBsrgvQvQwoaQmOnvVPkVGuO9ChnwQ46YaV3TLdKBrPJPmFYRkO64ILeHu+v8JfkNSzR q4ajrjNb5dpK4j60mNA0WIaUJvnouun7vA3g6q67M2yNfDrlSMe+8lKH/rz1Pn5kNxXBld Be2KruRvV8uGO80zvAlVjaH89B3ijb0= X-MC-Unique: QMGwU6U2NzSK-iXjSBaRjg-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 12/14] target/s390x: Fix SQXBR Date: Fri, 3 Jul 2020 12:06:48 +0200 Message-Id: <20200703100650.621212-13-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.120; envelope-from=cohuck@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 02:53:25 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Cornelia Huck , Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Richard Henderson The output is 128-bit, and thus requires a pair of 64-bit temps. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Buglink: https://bugs.launchpad.net/bugs/1883984 Message-Id: <20200620042140.42070-1-richard.henderson@linaro.org> Signed-off-by: Cornelia Huck --- target/s390x/insn-data.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 91ddaedd8475..d79ae9e3f114 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -798,7 +798,7 @@ /* SQUARE ROOT */ F(0xb314, SQEBR, RRE, Z, 0, e2, new, e1, sqeb, 0, IF_BFP) F(0xb315, SQDBR, RRE, Z, 0, f2, new, f1, sqdb, 0, IF_BFP) - F(0xb316, SQXBR, RRE, Z, x2h, x2l, new, x1, sqxb, 0, IF_BFP) + F(0xb316, SQXBR, RRE, Z, x2h, x2l, new_P, x1, sqxb, 0, IF_BFP) F(0xed14, SQEB, RXE, Z, 0, m2_32u, new, e1, sqeb, 0, IF_BFP) F(0xed15, SQDB, RXE, Z, 0, m2_64, new, f1, sqdb, 0, IF_BFP) =20 --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593770986; cv=none; d=zohomail.com; s=zohoarc; b=nNyzoBG+66CRd1YclgSaCjWEnDWWh7Gdf9bANVcXmtklQyHsRFv4zbEirycKSmIhcn6gYiiLwIpSk8FDnTjqPcc1+egW7u+rYGoFKKa6CoMM+tjbNeI2CkWieTm1sLKtn+X6AmiMlF35bukoIoTrU+KXTC3VK38wKTlkW4jc4Bs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593770986; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=xB9Td40Gom2guvgy4uKWs21zVgcepHvrpo8kia4g794=; b=dm5lW05l3fviH0xw512FdSHlkERbnL8QnkrdkXTvwa9O7FK/e9JwF8HkxoDh7fHKOPqd9bWYx5Ae6tvzTAFEMlIYHeXXvdtNEoDBSFv8lVo62SZmmJ8/OPYBhXflLCz+AAuA298hVuexH4t7tkqZlmU8qv1FmKsQtlJ5dS9J9Ug= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1593770986985944.1590870508468; Fri, 3 Jul 2020 03:09:46 -0700 (PDT) Received: from localhost ([::1]:48048 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrIdd-000897-QJ for importer@patchew.org; Fri, 03 Jul 2020 06:09:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56920) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIbq-0004bx-JF for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:54 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:30627 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIbn-0005q9-Aj for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:54 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-214-4SHSFBp1Pfyas5RK84s6cg-1; Fri, 03 Jul 2020 06:07:42 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 856AB56B29; Fri, 3 Jul 2020 10:07:41 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 27F897923E; Fri, 3 Jul 2020 10:07:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770868; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xB9Td40Gom2guvgy4uKWs21zVgcepHvrpo8kia4g794=; b=DiznWLYcpKMDgcVVi0rZziuGpusnH8cVr0vJnYBLOX6c4+HclMdSrKIddKs45nLJcqpm2Q TmEqfrPR7QVD5IOrvIgaZ+GUOXdSZSlDilFrmnLWry8ZsCvaty1/FAaHshND0WuT+HvMso 0c/vKRj8BEYvPYolyGzMJAp8vG8wSk4= X-MC-Unique: 4SHSFBp1Pfyas5RK84s6cg-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 13/14] virtio-ccw: fix virtio_set_ind_atomic Date: Fri, 3 Jul 2020 12:06:49 +0200 Message-Id: <20200703100650.621212-14-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.61; envelope-from=cohuck@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 03:17:33 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Cornelia Huck , Andre Wild , qemu-devel@nongnu.org, Halil Pasic , Christian Borntraeger , qemu-s390x@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Halil Pasic The atomic_cmpxchg() loop is broken because we occasionally end up with old and _old having different values (a legit compiler can generate code that accessed *ind_addr again to pick up a value for _old instead of using the value of old that was already fetched according to the rules of the abstract machine). This means the underlying CS instruction may use a different old (_old) than the one we intended to use if atomic_cmpxchg() performed the xchg part. Let us use volatile to force the rules of the abstract machine for accesses to *ind_addr. Let us also rewrite the loop so, we that the new old is used to compute the new desired value if the xchg part is not performed. Fixes: 7e7494627f ("s390x/virtio-ccw: Adapter interrupt support.") Reported-by: Andre Wild Signed-off-by: Halil Pasic Reviewed-by: Christian Borntraeger Message-Id: <20200616045035.51641-2-pasic@linux.ibm.com> Signed-off-by: Cornelia Huck --- hw/s390x/virtio-ccw.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index c1f4bb1d331d..3c988a000b5b 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -786,9 +786,10 @@ static inline VirtioCcwDevice *to_virtio_ccw_dev_fast(= DeviceState *d) static uint8_t virtio_set_ind_atomic(SubchDev *sch, uint64_t ind_loc, uint8_t to_be_set) { - uint8_t ind_old, ind_new; + uint8_t expected, actual; hwaddr len =3D 1; - uint8_t *ind_addr; + /* avoid multiple fetches */ + uint8_t volatile *ind_addr; =20 ind_addr =3D cpu_physical_memory_map(ind_loc, &len, true); if (!ind_addr) { @@ -796,14 +797,15 @@ static uint8_t virtio_set_ind_atomic(SubchDev *sch, u= int64_t ind_loc, __func__, sch->cssid, sch->ssid, sch->schid); return -1; } + actual =3D *ind_addr; do { - ind_old =3D *ind_addr; - ind_new =3D ind_old | to_be_set; - } while (atomic_cmpxchg(ind_addr, ind_old, ind_new) !=3D ind_old); - trace_virtio_ccw_set_ind(ind_loc, ind_old, ind_new); - cpu_physical_memory_unmap(ind_addr, len, 1, len); + expected =3D actual; + actual =3D atomic_cmpxchg(ind_addr, expected, expected | to_be_set= ); + } while (actual !=3D expected); + trace_virtio_ccw_set_ind(ind_loc, actual, actual | to_be_set); + cpu_physical_memory_unmap((void *)ind_addr, len, 1, len); =20 - return ind_old; + return actual; } =20 static void virtio_ccw_notify(DeviceState *d, uint16_t vector) --=20 2.25.4 From nobody Fri May 3 15:02:18 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1593771532; cv=none; d=zohomail.com; s=zohoarc; b=cq9CejdCa8JfKyYJ3dutvpIK+Ni3Pfg+gHdui5tY6IBMn1VBIu9re7oZEFn1ggtAcCCxzOhQKnueTTHObtk2YO3c6ZV807yrUT8/Q4d/ahWFHVNrV2Ja929I7kxeRBSxNC9Ua/XCXp3pU27jl7M/p6173vxRYP+/XTTE4Sv9V7U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593771532; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=YfVEVmjau3G6Kev/27aLeUkr71n8IWpHubQtmPsf6WQ=; b=IMRRQtn3VbDmtelq5kvVGd8RWuYv2hcwBk/2B+UsGAerqxWWaqAp/Lrr7Mfy/hv0roMo93oUVEZJzS/A4B/53JGAHla8Qog5gFy04a+E+BRmo8aDXINGWtCkaV9HlAYbtx8GWH2mxuBYH8Y3I8jC1PcdzYglq4WpwUD3LCfIT9E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 159377153281470.35525634247358; Fri, 3 Jul 2020 03:18:52 -0700 (PDT) Received: from localhost ([::1]:53240 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jrImR-0006gU-Ej for importer@patchew.org; Fri, 03 Jul 2020 06:18:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56880) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jrIbp-0004Xk-3M for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:53 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:35874 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jrIbn-0005pc-6A for qemu-devel@nongnu.org; Fri, 03 Jul 2020 06:07:52 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-276-TEqoii_7NXytrLAvgyd-7g-1; Fri, 03 Jul 2020 06:07:44 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A5171188361A; Fri, 3 Jul 2020 10:07:43 +0000 (UTC) Received: from localhost (ovpn-113-54.ams2.redhat.com [10.36.113.54]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 48B1B7BD56; Fri, 3 Jul 2020 10:07:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593770866; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YfVEVmjau3G6Kev/27aLeUkr71n8IWpHubQtmPsf6WQ=; b=Vv2Zrnq3PcgObNtwskWJDLIQWgoZebrQebTF2tXH+m5e8DOQmh3GgUlMWsYd9KGzBK4QOa pn3GclqVSok6AWLUzpTbMdQm/2q7tEAZ/6D7y3xp4BeO4QtT/7gMJc63OWzfMDeJ2bYqoF FFefD2tEhZ04JL6D1mzgebaquBOXFCY= X-MC-Unique: TEqoii_7NXytrLAvgyd-7g-1 From: Cornelia Huck To: Peter Maydell Subject: [PULL 14/14] s390x/pci: fix set_ind_atomic Date: Fri, 3 Jul 2020 12:06:50 +0200 Message-Id: <20200703100650.621212-15-cohuck@redhat.com> In-Reply-To: <20200703100650.621212-1-cohuck@redhat.com> References: <20200703100650.621212-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=cohuck@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.61; envelope-from=cohuck@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/03 03:17:33 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Halil Pasic , Christian Borntraeger , qemu-s390x@nongnu.org, Cornelia Huck , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Halil Pasic The atomic_cmpxchg() loop is broken because we occasionally end up with old and _old having different values (a legit compiler can generate code that accessed *ind_addr again to pick up a value for _old instead of using the value of old that was already fetched according to the rules of the abstract machine). This means the underlying CS instruction may use a different old (_old) than the one we intended to use if atomic_cmpxchg() performed the xchg part. Let us use volatile to force the rules of the abstract machine for accesses to *ind_addr. Let us also rewrite the loop so, we that the new old is used to compute the new desired value if the xchg part is not performed. Fixes: 8cba80c3a0 ("s390: Add PCI bus support") Reported-by: Christian Borntraeger Signed-off-by: Halil Pasic Reviewed-by: Christian Borntraeger Message-Id: <20200616045035.51641-3-pasic@linux.ibm.com> Signed-off-by: Cornelia Huck --- hw/s390x/s390-pci-bus.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 142e52a8ffdd..736965c9287f 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -637,22 +637,24 @@ static AddressSpace *s390_pci_dma_iommu(PCIBus *bus, = void *opaque, int devfn) =20 static uint8_t set_ind_atomic(uint64_t ind_loc, uint8_t to_be_set) { - uint8_t ind_old, ind_new; + uint8_t expected, actual; hwaddr len =3D 1; - uint8_t *ind_addr; + /* avoid multiple fetches */ + uint8_t volatile *ind_addr; =20 ind_addr =3D cpu_physical_memory_map(ind_loc, &len, true); if (!ind_addr) { s390_pci_generate_error_event(ERR_EVENT_AIRERR, 0, 0, 0, 0); return -1; } + actual =3D *ind_addr; do { - ind_old =3D *ind_addr; - ind_new =3D ind_old | to_be_set; - } while (atomic_cmpxchg(ind_addr, ind_old, ind_new) !=3D ind_old); - cpu_physical_memory_unmap(ind_addr, len, 1, len); + expected =3D actual; + actual =3D atomic_cmpxchg(ind_addr, expected, expected | to_be_set= ); + } while (actual !=3D expected); + cpu_physical_memory_unmap((void *)ind_addr, len, 1, len); =20 - return ind_old; + return actual; } =20 static void s390_msi_ctrl_write(void *opaque, hwaddr addr, uint64_t data, --=20 2.25.4