From nobody Fri Nov 14 19:23:48 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1589984479; cv=none; d=zohomail.com; s=zohoarc; b=RNkgZ69PM7iVGenpP6+0RScqeyOP2aASuLcexzLVxcTzanxdeqxVsrq7LYKd0kRJUbeDtFKvWgUsJfWRvIcghf/pXOxXfiBuWJwzAU19qQm1AGAJYB5nm12N9a4bJQm4X2LuyBDJuWIjBLCBkg8KiUd6FnZ13DnukxEUY7Ek3Tg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589984479; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=rHM59pAUSOm42VtUYWmdYqMzKcOtdf8xocqdK4LGzn4=; b=RhF6Hx8vb4RvnEfpigUR3trZnBdpYNEpqjdphpOPpGPqDSF3UTabbSyPIk2NYU2f4DVH+V6WymEGtrb787/naaIBr846WvinPnnSZ89vTkGBgc6iFtX6YCMEJFDz8KohKPKkS4Y+Ctr9ztojOqhLBJg7TlPomk+MyXbXJ2HPK/c= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1589984478728495.50526544550326; Wed, 20 May 2020 07:21:18 -0700 (PDT) Received: from localhost ([::1]:60094 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbPav-0002Bj-Ef for importer@patchew.org; Wed, 20 May 2020 10:21:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57118) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbPXm-0004wm-MD for qemu-devel@nongnu.org; Wed, 20 May 2020 10:18:02 -0400 Received: from zero.eik.bme.hu ([152.66.115.2]:49719) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbPXk-0004Pu-Pz for qemu-devel@nongnu.org; Wed, 20 May 2020 10:18:02 -0400 Received: from zero.eik.bme.hu (blah.eik.bme.hu [152.66.115.182]) by localhost (Postfix) with SMTP id 60A93748DDD; Wed, 20 May 2020 16:17:49 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 34630748DD1; Wed, 20 May 2020 16:17:49 +0200 (CEST) Message-Id: <90b2648461d57d384823c90fa700cdd81d0b7254.1589981990.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH 1/6] sm501: Convert printf + abort to qemu_log_mask Date: Wed, 20 May 2020 15:39:50 +0200 To: qemu-devel@nongnu.org X-Spam-Probability: 8% 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=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 10:17:49 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=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: Peter Maydell , Sebastian Bauer , Magnus Damm , Gerd Hoffmann , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Some places already use qemu_log_mask() to log unimplemented features or errors but some others have printf() then abort(). Convert these to qemu_log_mask() and avoid aborting to prevent guests to easily cause denial of service. Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/display/sm501.c | 57 ++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/hw/display/sm501.c b/hw/display/sm501.c index acc692531a..bd3ccfe311 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -727,8 +727,8 @@ static void sm501_2d_operation(SM501State *s) int fb_len =3D get_width(s, crt) * get_height(s, crt) * get_bpp(s, crt= ); =20 if (addressing !=3D 0x0) { - printf("%s: only XY addressing is supported.\n", __func__); - abort(); + qemu_log_mask(LOG_UNIMP, "sm501: only XY addressing is supported.\= n"); + return; } =20 if (rop_mode =3D=3D 0) { @@ -754,8 +754,8 @@ static void sm501_2d_operation(SM501State *s) =20 if ((s->twoD_source_base & 0x08000000) || (s->twoD_destination_base & 0x08000000)) { - printf("%s: only local memory is supported.\n", __func__); - abort(); + qemu_log_mask(LOG_UNIMP, "sm501: only local memory is supported.\n= "); + return; } =20 switch (operation) { @@ -823,9 +823,9 @@ static void sm501_2d_operation(SM501State *s) break; =20 default: - printf("non-implemented SM501 2D operation. %d\n", operation); - abort(); - break; + qemu_log_mask(LOG_UNIMP, "sm501: not implemented 2D operation: %d\= n", + operation); + return; } =20 if (dst_base >=3D get_fb_addr(s, crt) && @@ -892,9 +892,8 @@ static uint64_t sm501_system_config_read(void *opaque, = hwaddr addr, break; =20 default: - printf("sm501 system config : not implemented register read." - " addr=3D%x\n", (int)addr); - abort(); + qemu_log_mask(LOG_UNIMP, "sm501: not implemented system config" + "register read. addr=3D%" HWADDR_PRIx "\n", addr); } =20 return ret; @@ -948,15 +947,15 @@ static void sm501_system_config_write(void *opaque, h= waddr addr, break; case SM501_ENDIAN_CONTROL: if (value & 0x00000001) { - printf("sm501 system config : big endian mode not implemented.= \n"); - abort(); + qemu_log_mask(LOG_UNIMP, "sm501: system config big endian mode= not" + " implemented.\n"); } break; =20 default: - printf("sm501 system config : not implemented register write." - " addr=3D%x, val=3D%x\n", (int)addr, (uint32_t)value); - abort(); + qemu_log_mask(LOG_UNIMP, "sm501: not implemented system config" + "register write. addr=3D%" HWADDR_PRIx + ", val=3D%" PRIx64 "\n", addr, value); } } =20 @@ -1207,9 +1206,8 @@ static uint64_t sm501_disp_ctrl_read(void *opaque, hw= addr addr, break; =20 default: - printf("sm501 disp ctrl : not implemented register read." - " addr=3D%x\n", (int)addr); - abort(); + qemu_log_mask(LOG_UNIMP, "sm501: not implemented disp ctrl registe= r " + "read. addr=3D%" HWADDR_PRIx "\n", addr); } =20 return ret; @@ -1345,9 +1343,9 @@ static void sm501_disp_ctrl_write(void *opaque, hwadd= r addr, break; =20 default: - printf("sm501 disp ctrl : not implemented register write." - " addr=3D%x, val=3D%x\n", (int)addr, (unsigned)value); - abort(); + qemu_log_mask(LOG_UNIMP, "sm501: not implemented disp ctrl registe= r " + "write. addr=3D%" HWADDR_PRIx + ", val=3D%" PRIx64 "\n", addr, value); } } =20 @@ -1433,9 +1431,8 @@ static uint64_t sm501_2d_engine_read(void *opaque, hw= addr addr, ret =3D 0; /* Should return interrupt status */ break; default: - printf("sm501 disp ctrl : not implemented register read." - " addr=3D%x\n", (int)addr); - abort(); + qemu_log_mask(LOG_UNIMP, "sm501: not implemented disp ctrl registe= r " + "read. addr=3D%" HWADDR_PRIx "\n", addr); } =20 return ret; @@ -1520,9 +1517,9 @@ static void sm501_2d_engine_write(void *opaque, hwadd= r addr, /* ignored, writing 0 should clear interrupt status */ break; default: - printf("sm501 2d engine : not implemented register write." - " addr=3D%x, val=3D%x\n", (int)addr, (unsigned)value); - abort(); + qemu_log_mask(LOG_UNIMP, "sm501: not implemented 2d engine registe= r " + "write. addr=3D%" HWADDR_PRIx + ", val=3D%" PRIx64 "\n", addr, value); } } =20 @@ -1670,9 +1667,9 @@ static void sm501_update_display(void *opaque) draw_line =3D draw_line32_funcs[dst_depth_index]; break; default: - printf("sm501 update display : invalid control register value.\n"); - abort(); - break; + qemu_log_mask(LOG_GUEST_ERROR, "sm501: update display" + "invalid control register value.\n"); + return; } =20 /* set up to draw hardware cursor */ --=20 2.21.3 From nobody Fri Nov 14 19:23:48 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1589984899; cv=none; d=zohomail.com; s=zohoarc; b=WmScj5m21wxwDhtcp0J8+YxHpe+CHWlU/wad3XAnuSWiT6vVoj8xsaP/c+pgeYv6oJw0NbJD6ptIHCmHSUhO7Kj0aBcob9aQq95z2iV+Ap+uYQAgb/iC4CLkaKlQFPa4IA2GBaW+behJtGrUIYZO9p1TubGZw1Hf7GXFWuKe9AQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589984899; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=/ewEhEJynpf/wbKcUM21TgNNWiW1sj1s6qeCVhBTV4w=; b=B41lR2phF0HWGf764slLfT6RS9L8atiUoYXyr2RAqljL8i5kw4H9mFgX+ly0y+nnLsH+a+ZCyYOcdht1kRS/yI0DnBPWLNVjNT9Z9XOgx2RW6w3yUqRpLRLbhDJXbwt0G2HCnBtzLJV5TmgbTBT6bM5FjKDiODSgoN69Ap/Xnz8= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1589984899523655.1240058953856; Wed, 20 May 2020 07:28:19 -0700 (PDT) Received: from localhost ([::1]:60164 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbPhi-0006ua-Ah for importer@patchew.org; Wed, 20 May 2020 10:28:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57134) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbPXo-00052M-Pj for qemu-devel@nongnu.org; Wed, 20 May 2020 10:18:04 -0400 Received: from zero.eik.bme.hu ([152.66.115.2]:49756) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbPXm-0004T2-NG for qemu-devel@nongnu.org; Wed, 20 May 2020 10:18:04 -0400 Received: from zero.eik.bme.hu (blah.eik.bme.hu [152.66.115.182]) by localhost (Postfix) with SMTP id BC8F8748DDE; Wed, 20 May 2020 16:17:49 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 38915748DC8; Wed, 20 May 2020 16:17:49 +0200 (CEST) Message-Id: <57104c20bf2838fef58623349b1c8ee7554be7b5.1589981990.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH 2/6] sm501: Shorten long variable names in sm501_2d_operation Date: Wed, 20 May 2020 15:39:50 +0200 To: qemu-devel@nongnu.org X-Spam-Probability: 8% 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=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 10:17:49 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=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: Peter Maydell , Sebastian Bauer , Magnus Damm , Gerd Hoffmann , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This increases readability and cleans up some confusing naming. Signed-off-by: BALATON Zoltan --- hw/display/sm501.c | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/hw/display/sm501.c b/hw/display/sm501.c index bd3ccfe311..f42d05e1e4 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -700,17 +700,16 @@ static inline void hwc_invalidate(SM501State *s, int = crt) static void sm501_2d_operation(SM501State *s) { /* obtain operation parameters */ - int operation =3D (s->twoD_control >> 16) & 0x1f; + int cmd =3D (s->twoD_control >> 16) & 0x1F; int rtl =3D s->twoD_control & 0x8000000; int src_x =3D (s->twoD_source >> 16) & 0x01FFF; int src_y =3D s->twoD_source & 0xFFFF; int dst_x =3D (s->twoD_destination >> 16) & 0x01FFF; int dst_y =3D s->twoD_destination & 0xFFFF; - int operation_width =3D (s->twoD_dimension >> 16) & 0x1FFF; - int operation_height =3D s->twoD_dimension & 0xFFFF; + int width =3D (s->twoD_dimension >> 16) & 0x1FFF; + int height =3D s->twoD_dimension & 0xFFFF; uint32_t color =3D s->twoD_foreground; - int format_flags =3D (s->twoD_stretch >> 20) & 0x3; - int addressing =3D (s->twoD_stretch >> 16) & 0xF; + int format =3D (s->twoD_stretch >> 20) & 0x3; int rop_mode =3D (s->twoD_control >> 15) & 0x1; /* 1 for rop2, else ro= p3 */ /* 1 if rop2 source is the pattern, otherwise the source is the bitmap= */ int rop2_source_is_pattern =3D (s->twoD_control >> 14) & 0x1; @@ -721,12 +720,12 @@ static void sm501_2d_operation(SM501State *s) /* get frame buffer info */ uint8_t *src =3D s->local_mem + src_base; uint8_t *dst =3D s->local_mem + dst_base; - int src_width =3D s->twoD_pitch & 0x1FFF; - int dst_width =3D (s->twoD_pitch >> 16) & 0x1FFF; + int src_pitch =3D s->twoD_pitch & 0x1FFF; + int dst_pitch =3D (s->twoD_pitch >> 16) & 0x1FFF; int crt =3D (s->dc_crt_control & SM501_DC_CRT_CONTROL_SEL) ? 1 : 0; int fb_len =3D get_width(s, crt) * get_height(s, crt) * get_bpp(s, crt= ); =20 - if (addressing !=3D 0x0) { + if ((s->twoD_stretch >> 16) & 0xF) { qemu_log_mask(LOG_UNIMP, "sm501: only XY addressing is supported.\= n"); return; } @@ -758,20 +757,20 @@ static void sm501_2d_operation(SM501State *s) return; } =20 - switch (operation) { + switch (cmd) { case 0x00: /* copy area */ #define COPY_AREA(_bpp, _pixel_type, rtl) { = \ int y, x, index_d, index_s; = \ - for (y =3D 0; y < operation_height; y++) { = \ - for (x =3D 0; x < operation_width; x++) { = \ + for (y =3D 0; y < height; y++) { \ + for (x =3D 0; x < width; x++) { \ _pixel_type val; = \ = \ if (rtl) { = \ - index_s =3D ((src_y - y) * src_width + src_x - x) * _b= pp; \ - index_d =3D ((dst_y - y) * dst_width + dst_x - x) * _b= pp; \ + index_s =3D ((src_y - y) * src_pitch + src_x - x) * _b= pp; \ + index_d =3D ((dst_y - y) * dst_pitch + dst_x - x) * _b= pp; \ } else { = \ - index_s =3D ((src_y + y) * src_width + src_x + x) * _b= pp; \ - index_d =3D ((dst_y + y) * dst_width + dst_x + x) * _b= pp; \ + index_s =3D ((src_y + y) * src_pitch + src_x + x) * _b= pp; \ + index_d =3D ((dst_y + y) * dst_pitch + dst_x + x) * _b= pp; \ } = \ if (rop_mode =3D=3D 1 && rop =3D=3D 5) { = \ /* Invert dest */ = \ @@ -783,7 +782,7 @@ static void sm501_2d_operation(SM501State *s) } = \ } = \ } - switch (format_flags) { + switch (format) { case 0: COPY_AREA(1, uint8_t, rtl); break; @@ -799,15 +798,15 @@ static void sm501_2d_operation(SM501State *s) case 0x01: /* fill rectangle */ #define FILL_RECT(_bpp, _pixel_type) { = \ int y, x; = \ - for (y =3D 0; y < operation_height; y++) { = \ - for (x =3D 0; x < operation_width; x++) { = \ - int index =3D ((dst_y + y) * dst_width + dst_x + x) * _bpp= ; \ + for (y =3D 0; y < height; y++) { \ + for (x =3D 0; x < width; x++) { \ + int index =3D ((dst_y + y) * dst_pitch + dst_x + x) * _bpp= ; \ *(_pixel_type *)&dst[index] =3D (_pixel_type)color; = \ } = \ } = \ } =20 - switch (format_flags) { + switch (format) { case 0: FILL_RECT(1, uint8_t); break; @@ -824,14 +823,14 @@ static void sm501_2d_operation(SM501State *s) =20 default: qemu_log_mask(LOG_UNIMP, "sm501: not implemented 2D operation: %d\= n", - operation); + cmd); return; } =20 if (dst_base >=3D get_fb_addr(s, crt) && dst_base <=3D get_fb_addr(s, crt) + fb_len) { - int dst_len =3D MIN(fb_len, ((dst_y + operation_height - 1) * dst_= width + - dst_x + operation_width) * (1 << format_flags)); + int dst_len =3D MIN(fb_len, ((dst_y + height - 1) * dst_pitch + + dst_x + width) * (1 << format)); if (dst_len) { memory_region_set_dirty(&s->local_mem_region, dst_base, dst_le= n); } --=20 2.21.3 From nobody Fri Nov 14 19:23:48 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1589984685; cv=none; d=zohomail.com; s=zohoarc; b=jU0Fy/uEBdci9o4eq7y+G9PiChrIPuXe41eLZv4BGeiqbWivLHY+6tbI6D7K6TtxnzNoEsKYNxTW8HZn9dGToElMM05izg5xDk8bkkmJzsGGLpdcnjdtQyjxIHKcFjeoPSE2OoukGJZ8VjZkWicRklB9B6XUA5vwrbvEqI8g/Ak= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589984685; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=M7QjIYMYDNIa1jD303LmJOJT56i6GRdldiCABldlEH8=; b=MmkVo8aDTfQ0FYg9ioXHiRI0m0QWajKMnkmLIlQWiNTMZVX2EOfvO/RA8WI+VY1vqAlEWqUw9wbM5NfiZnZI1GCyxQm4F3aAmcdRnb/BKdkIi99R9BxerXQHkywBQ1DsEYpDJBk1vHMWK0jpKwL+oGaU1x9e8qg/lZu26CF68b4= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1589984685468621.6948173557988; Wed, 20 May 2020 07:24:45 -0700 (PDT) Received: from localhost ([::1]:46038 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbPeA-0000Jm-Qs for importer@patchew.org; Wed, 20 May 2020 10:24:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57124) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbPXn-0004yw-Fz for qemu-devel@nongnu.org; Wed, 20 May 2020 10:18:03 -0400 Received: from zero.eik.bme.hu ([152.66.115.2]:49755) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbPXm-0004T0-Lf for qemu-devel@nongnu.org; Wed, 20 May 2020 10:18:03 -0400 Received: from zero.eik.bme.hu (blah.eik.bme.hu [152.66.115.182]) by localhost (Postfix) with SMTP id B4936748DDA; Wed, 20 May 2020 16:17:49 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 3C905748DD0; Wed, 20 May 2020 16:17:49 +0200 (CEST) Message-Id: <6c63555cc4023d05e550d513112f472a2020a117.1589981990.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH 3/6] sm501: Use BIT(x) macro to shorten constant Date: Wed, 20 May 2020 15:39:50 +0200 To: qemu-devel@nongnu.org X-Spam-Probability: 8% 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=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 10:17:49 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=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: Peter Maydell , Sebastian Bauer , Magnus Damm , Gerd Hoffmann , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/display/sm501.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/display/sm501.c b/hw/display/sm501.c index f42d05e1e4..97660090bb 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -701,7 +701,7 @@ static void sm501_2d_operation(SM501State *s) { /* obtain operation parameters */ int cmd =3D (s->twoD_control >> 16) & 0x1F; - int rtl =3D s->twoD_control & 0x8000000; + int rtl =3D s->twoD_control & BIT(27); int src_x =3D (s->twoD_source >> 16) & 0x01FFF; int src_y =3D s->twoD_source & 0xFFFF; int dst_x =3D (s->twoD_destination >> 16) & 0x01FFF; @@ -751,8 +751,7 @@ static void sm501_2d_operation(SM501State *s) } } =20 - if ((s->twoD_source_base & 0x08000000) || - (s->twoD_destination_base & 0x08000000)) { + if (s->twoD_source_base & BIT(27) || s->twoD_destination_base & BIT(27= )) { qemu_log_mask(LOG_UNIMP, "sm501: only local memory is supported.\n= "); return; } --=20 2.21.3 From nobody Fri Nov 14 19:23:48 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1589984593; cv=none; d=zohomail.com; s=zohoarc; b=PiWvSFHUN7Q59NXc5tlnYvHRUELWRDW3SpY6IZfO+tAx3ehevtOUQ++rEgPu5+Bl2EP6MRpKiuOvzXw1GuiLpJBQXP5/4xEgVW6t2T1XIO1/dWZupbt4Se0e4UDHe7xtEspaV5sNDsIKAk188Sn9wdcllKfByNFtB02rWcWRAcU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589984593; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=yIAYXfCN5IeCxzhKmjF0tYnopRMC2mkht2U88lpV95k=; b=GphkOYhnLFSLuoPXz8KAQ5+Qt5czCRd+yi3AeFLElhwDAGNZFuq5Z5q4Dkuhf6+7B8jCpmOUL9dV0k4KkuNwLRPfL5OTZiLmo7iIxqSp0EcUWva2ca6msQkjGOUkC4rPTcQM/XfygUY41JAL30nMQInJfH1GxBKcUbz3NGn4axI= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1589984593442600.7155559834587; Wed, 20 May 2020 07:23:13 -0700 (PDT) Received: from localhost ([::1]:39816 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbPcm-0006Ek-4W for importer@patchew.org; Wed, 20 May 2020 10:23:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57116) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbPXm-0004vk-Co for qemu-devel@nongnu.org; Wed, 20 May 2020 10:18:02 -0400 Received: from zero.eik.bme.hu ([152.66.115.2]:49721) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbPXk-0004Pv-Al for qemu-devel@nongnu.org; Wed, 20 May 2020 10:18:01 -0400 Received: from zero.eik.bme.hu (blah.eik.bme.hu [152.66.115.182]) by localhost (Postfix) with SMTP id 882B2748DD1; Wed, 20 May 2020 16:17:49 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 408FD748DD8; Wed, 20 May 2020 16:17:49 +0200 (CEST) Message-Id: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH 4/6] sm501: Clean up local variables in sm501_2d_operation Date: Wed, 20 May 2020 15:39:50 +0200 To: qemu-devel@nongnu.org X-Spam-Probability: 8% 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=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 10:17:49 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=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: Peter Maydell , Sebastian Bauer , Magnus Damm , Gerd Hoffmann , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Make variables local to the block they are used in to make it clearer which operation they are needed for. Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/display/sm501.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/hw/display/sm501.c b/hw/display/sm501.c index 97660090bb..5ed57703d8 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -699,28 +699,19 @@ static inline void hwc_invalidate(SM501State *s, int = crt) =20 static void sm501_2d_operation(SM501State *s) { - /* obtain operation parameters */ int cmd =3D (s->twoD_control >> 16) & 0x1F; int rtl =3D s->twoD_control & BIT(27); - int src_x =3D (s->twoD_source >> 16) & 0x01FFF; - int src_y =3D s->twoD_source & 0xFFFF; - int dst_x =3D (s->twoD_destination >> 16) & 0x01FFF; - int dst_y =3D s->twoD_destination & 0xFFFF; - int width =3D (s->twoD_dimension >> 16) & 0x1FFF; - int height =3D s->twoD_dimension & 0xFFFF; - uint32_t color =3D s->twoD_foreground; int format =3D (s->twoD_stretch >> 20) & 0x3; int rop_mode =3D (s->twoD_control >> 15) & 0x1; /* 1 for rop2, else ro= p3 */ /* 1 if rop2 source is the pattern, otherwise the source is the bitmap= */ int rop2_source_is_pattern =3D (s->twoD_control >> 14) & 0x1; int rop =3D s->twoD_control & 0xFF; - uint32_t src_base =3D s->twoD_source_base & 0x03FFFFFF; + int dst_x =3D (s->twoD_destination >> 16) & 0x01FFF; + int dst_y =3D s->twoD_destination & 0xFFFF; + int width =3D (s->twoD_dimension >> 16) & 0x1FFF; + int height =3D s->twoD_dimension & 0xFFFF; uint32_t dst_base =3D s->twoD_destination_base & 0x03FFFFFF; - - /* get frame buffer info */ - uint8_t *src =3D s->local_mem + src_base; uint8_t *dst =3D s->local_mem + dst_base; - int src_pitch =3D s->twoD_pitch & 0x1FFF; int dst_pitch =3D (s->twoD_pitch >> 16) & 0x1FFF; int crt =3D (s->dc_crt_control & SM501_DC_CRT_CONTROL_SEL) ? 1 : 0; int fb_len =3D get_width(s, crt) * get_height(s, crt) * get_bpp(s, crt= ); @@ -758,6 +749,13 @@ static void sm501_2d_operation(SM501State *s) =20 switch (cmd) { case 0x00: /* copy area */ + { + int src_x =3D (s->twoD_source >> 16) & 0x01FFF; + int src_y =3D s->twoD_source & 0xFFFF; + uint32_t src_base =3D s->twoD_source_base & 0x03FFFFFF; + uint8_t *src =3D s->local_mem + src_base; + int src_pitch =3D s->twoD_pitch & 0x1FFF; + #define COPY_AREA(_bpp, _pixel_type, rtl) { = \ int y, x, index_d, index_s; = \ for (y =3D 0; y < height; y++) { \ @@ -793,8 +791,11 @@ static void sm501_2d_operation(SM501State *s) break; } break; - + } case 0x01: /* fill rectangle */ + { + uint32_t color =3D s->twoD_foreground; + #define FILL_RECT(_bpp, _pixel_type) { = \ int y, x; = \ for (y =3D 0; y < height; y++) { \ @@ -819,7 +820,7 @@ static void sm501_2d_operation(SM501State *s) break; } break; - + } default: qemu_log_mask(LOG_UNIMP, "sm501: not implemented 2D operation: %d\= n", cmd); --=20 2.21.3 From nobody Fri Nov 14 19:23:48 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1589984705; cv=none; d=zohomail.com; s=zohoarc; b=N55aF6FGvdO+bK67NT+y3nxTWAj4sM27xNrNVJH4RkVboDKiZ+XKgVNz1gRdnR17BW3nox2hYNHrbAL1Pb/5b8OuA2/pkdY+8w5NCKjw8RzwBN0OloP2Q4uU0znbm7VvUi4KrnKA2gZwU+pcnhweTCocIOrRskIDCbfGJKLf5yg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589984705; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=iuIhaYi2SG7g97Gut4hLXKQqrYSVcIT1lsvnltO4haM=; b=NSKIp6cSBpv8luwW7zi5kewINCMfTylZlz4ff7wtboklMMoleAmL3LGXd0EZ7aK5QlJZjaGgbVTplRSbR9rfkUSYxiHWbNvmr5LMnuj94IARSp3RLS7j3d6UQFXkEcNh2zFP+XoUW13A/L1vEktC13WOf/cikjLdxDExKTOVCic= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1589984705366681.6368324423752; Wed, 20 May 2020 07:25:05 -0700 (PDT) Received: from localhost ([::1]:48240 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbPeY-0001P2-Jq for importer@patchew.org; Wed, 20 May 2020 10:25:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57126) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbPXn-0004zt-Ro for qemu-devel@nongnu.org; Wed, 20 May 2020 10:18:03 -0400 Received: from zero.eik.bme.hu ([152.66.115.2]:49725) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbPXk-0004Pw-Ag for qemu-devel@nongnu.org; Wed, 20 May 2020 10:18:03 -0400 Received: from zero.eik.bme.hu (blah.eik.bme.hu [152.66.115.182]) by localhost (Postfix) with SMTP id 940DA748DCF; Wed, 20 May 2020 16:17:49 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 44EFF748DCC; Wed, 20 May 2020 16:17:49 +0200 (CEST) Message-Id: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH 5/6] sm501: Replace hand written implementation with pixman where possible Date: Wed, 20 May 2020 15:39:50 +0200 To: qemu-devel@nongnu.org X-Spam-Probability: 8% 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=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/20 10:17:49 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=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: Peter Maydell , Sebastian Bauer , Magnus Damm , Gerd Hoffmann , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Besides being faster this should also prevent malicious guests to abuse 2D engine to overwrite data or cause a crash. Signed-off-by: BALATON Zoltan --- hw/display/sm501.c | 181 +++++++++++++++++++++++---------------------- 1 file changed, 93 insertions(+), 88 deletions(-) diff --git a/hw/display/sm501.c b/hw/display/sm501.c index 5ed57703d8..13269cc9f4 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -706,13 +706,12 @@ static void sm501_2d_operation(SM501State *s) /* 1 if rop2 source is the pattern, otherwise the source is the bitmap= */ int rop2_source_is_pattern =3D (s->twoD_control >> 14) & 0x1; int rop =3D s->twoD_control & 0xFF; - int dst_x =3D (s->twoD_destination >> 16) & 0x01FFF; - int dst_y =3D s->twoD_destination & 0xFFFF; - int width =3D (s->twoD_dimension >> 16) & 0x1FFF; - int height =3D s->twoD_dimension & 0xFFFF; + unsigned int dst_x =3D (s->twoD_destination >> 16) & 0x01FFF; + unsigned int dst_y =3D s->twoD_destination & 0xFFFF; + unsigned int width =3D (s->twoD_dimension >> 16) & 0x1FFF; + unsigned int height =3D s->twoD_dimension & 0xFFFF; uint32_t dst_base =3D s->twoD_destination_base & 0x03FFFFFF; - uint8_t *dst =3D s->local_mem + dst_base; - int dst_pitch =3D (s->twoD_pitch >> 16) & 0x1FFF; + unsigned int dst_pitch =3D (s->twoD_pitch >> 16) & 0x1FFF; int crt =3D (s->dc_crt_control & SM501_DC_CRT_CONTROL_SEL) ? 1 : 0; int fb_len =3D get_width(s, crt) * get_height(s, crt) * get_bpp(s, crt= ); =20 @@ -721,104 +720,110 @@ static void sm501_2d_operation(SM501State *s) return; } =20 - if (rop_mode =3D=3D 0) { - if (rop !=3D 0xcc) { - /* Anything other than plain copies are not supported */ - qemu_log_mask(LOG_UNIMP, "sm501: rop3 mode with rop %x is not " - "supported.\n", rop); - } - } else { - if (rop2_source_is_pattern && rop !=3D 0x5) { - /* For pattern source, we support only inverse dest */ - qemu_log_mask(LOG_UNIMP, "sm501: rop2 source being the pattern= and " - "rop %x is not supported.\n", rop); - } else { - if (rop !=3D 0x5 && rop !=3D 0xc) { - /* Anything other than plain copies or inverse dest is not - * supported */ - qemu_log_mask(LOG_UNIMP, "sm501: rop mode %x is not " - "supported.\n", rop); - } - } - } - if (s->twoD_source_base & BIT(27) || s->twoD_destination_base & BIT(27= )) { qemu_log_mask(LOG_UNIMP, "sm501: only local memory is supported.\n= "); return; } =20 + if (!dst_pitch) { + qemu_log_mask(LOG_GUEST_ERROR, "sm501: Zero dest pitch.\n"); + return; + } + + if (!width || !height) { + qemu_log_mask(LOG_GUEST_ERROR, "sm501: Zero size 2D op.\n"); + return; + } + + /* Do we need to handle overlapping regions? */ + if (rtl) { + dst_x -=3D width - 1; + dst_y -=3D height - 1; + } + + if (dst_base >=3D get_local_mem_size(s) || + dst_base + (dst_x + width + (dst_y + height) * dst_pitch) * + (1 << format) >=3D get_local_mem_size(s)) { + qemu_log_mask(LOG_GUEST_ERROR, "sm501: 2D op dest is outside vram.= \n"); + return; + } + switch (cmd) { - case 0x00: /* copy area */ + case 0: /* BitBlt */ { - int src_x =3D (s->twoD_source >> 16) & 0x01FFF; - int src_y =3D s->twoD_source & 0xFFFF; + unsigned int src_x =3D (s->twoD_source >> 16) & 0x01FFF; + unsigned int src_y =3D s->twoD_source & 0xFFFF; uint32_t src_base =3D s->twoD_source_base & 0x03FFFFFF; - uint8_t *src =3D s->local_mem + src_base; - int src_pitch =3D s->twoD_pitch & 0x1FFF; - -#define COPY_AREA(_bpp, _pixel_type, rtl) { = \ - int y, x, index_d, index_s; = \ - for (y =3D 0; y < height; y++) { \ - for (x =3D 0; x < width; x++) { \ - _pixel_type val; = \ - = \ - if (rtl) { = \ - index_s =3D ((src_y - y) * src_pitch + src_x - x) * _b= pp; \ - index_d =3D ((dst_y - y) * dst_pitch + dst_x - x) * _b= pp; \ - } else { = \ - index_s =3D ((src_y + y) * src_pitch + src_x + x) * _b= pp; \ - index_d =3D ((dst_y + y) * dst_pitch + dst_x + x) * _b= pp; \ - } = \ - if (rop_mode =3D=3D 1 && rop =3D=3D 5) { = \ - /* Invert dest */ = \ - val =3D ~*(_pixel_type *)&dst[index_d]; = \ - } else { = \ - val =3D *(_pixel_type *)&src[index_s]; = \ - } = \ - *(_pixel_type *)&dst[index_d] =3D val; = \ - } = \ - } = \ - } - switch (format) { - case 0: - COPY_AREA(1, uint8_t, rtl); - break; - case 1: - COPY_AREA(2, uint16_t, rtl); - break; - case 2: - COPY_AREA(4, uint32_t, rtl); - break; + unsigned int src_pitch =3D s->twoD_pitch & 0x1FFF; + + if (!src_pitch) { + qemu_log_mask(LOG_GUEST_ERROR, "sm501: Zero src pitch.\n"); + return; + } + + if (rtl) { + src_x -=3D width - 1; + src_y -=3D height - 1; + } + + if (src_base >=3D get_local_mem_size(s) || + src_base + (src_x + width + (src_y + height) * src_pitch) * + (1 << format) >=3D get_local_mem_size(s)) { + qemu_log_mask(LOG_GUEST_ERROR, + "sm501: 2D op src is outside vram.\n"); + return; + } + + if ((rop_mode && rop =3D=3D 0x5) || (!rop_mode && rop =3D=3D 0x55)= ) { + /* Invert dest, is there a way to do this with pixman? */ + unsigned int x, y, i; + uint8_t *d =3D s->local_mem + dst_base; + + for (y =3D 0; y < height; y++) { + i =3D (dst_x + (dst_y + y) * dst_pitch) * (1 << format); + for (x =3D 0; x < width; x++, i +=3D (1 << format)) { + switch (format) { + case 0: + d[i] =3D ~d[i]; + break; + case 1: + *(uint16_t *)&d[i] =3D ~*(uint16_t *)&d[i]; + break; + case 2: + *(uint32_t *)&d[i] =3D ~*(uint32_t *)&d[i]; + break; + } + } + } + } else if ((rop_mode && rop =3D=3D 0xc && !rop2_source_is_pattern)= || + (!rop_mode && rop =3D=3D 0xcc)) { + /* Do copy src directly */ + pixman_blt((uint32_t *)&s->local_mem[src_base], + (uint32_t *)&s->local_mem[dst_base], + src_pitch * (1 << format) / sizeof(uint32_t), + dst_pitch * (1 << format) / sizeof(uint32_t), + 8 * (1 << format), 8 * (1 << format), + src_x, src_y, dst_x, dst_y, width, height); + } else { + qemu_log_mask(LOG_UNIMP, "sm501: rop%d op %x%s not implemented= \n", + (rop_mode ? 2 : 3), rop, (rop2_source_is_pattern= ? + " with pattern source" : "")); } break; } - case 0x01: /* fill rectangle */ + case 1: /* Rectangle Fill */ { uint32_t color =3D s->twoD_foreground; =20 -#define FILL_RECT(_bpp, _pixel_type) { = \ - int y, x; = \ - for (y =3D 0; y < height; y++) { \ - for (x =3D 0; x < width; x++) { \ - int index =3D ((dst_y + y) * dst_pitch + dst_x + x) * _bpp= ; \ - *(_pixel_type *)&dst[index] =3D (_pixel_type)color; = \ - } = \ - } = \ - } - - switch (format) { - case 0: - FILL_RECT(1, uint8_t); - break; - case 1: - color =3D cpu_to_le16(color); - FILL_RECT(2, uint16_t); - break; - case 2: + if (format =3D=3D 2) { color =3D cpu_to_le32(color); - FILL_RECT(4, uint32_t); - break; + } else if (format =3D=3D 1) { + color =3D cpu_to_le16(color); } + + pixman_fill((uint32_t *)&s->local_mem[dst_base], + dst_pitch * (1 << format) / sizeof(uint32_t), + 8 * (1 << format), dst_x, dst_y, width, height, color); break; } default: --=20 2.21.3 From nobody Fri Nov 14 19:23:48 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1589984522; cv=none; d=zohomail.com; s=zohoarc; b=ObvdobEmDQ7oKy21FM0Sbt9JWXbBzYx5NiX2aE2Voh0s0SVeGkIf0i7Rmj6rr6B+fMe2NtiX/e1vKzNOFV70zFMgqugC6cSRFTFqDG/85ekyiolXbrD7VZ7KLhp+pszn8PEhtyzN959plbHN/T/lVot5chx0rC7eAGL3JWhomJ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589984522; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=OToRZg9GVQbrfmPh48Gf0onJ/V77PtUJUxWD4cssHvM=; b=lBP53NlYC+lIoGwMua0knvrddheiZwIziKN01OJQ3950EnHVrfPR0x+hKnXbgnZ/M8K1uIHQTKj0hxwXEd4HMimcemK1pS4KfULSX9x61miXvK+2rfKrU7OZ5bY4ussBbvi6xdVd+mkGhuKxNTTrbGDoLDdLRzeIklo2qMsKPgs= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1589984521940217.73692089898736; Wed, 20 May 2020 07:22:01 -0700 (PDT) Received: from localhost ([::1]:35424 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbPbc-0004Sd-P0 for importer@patchew.org; Wed, 20 May 2020 10:22:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57110) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbPXm-0004uW-Cz for qemu-devel@nongnu.org; Wed, 20 May 2020 10:18:02 -0400 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]:49737) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbPXk-0004Py-Ah for qemu-devel@nongnu.org; Wed, 20 May 2020 10:18:01 -0400 Received: from zero.eik.bme.hu (blah.eik.bme.hu [152.66.115.182]) by localhost (Postfix) with SMTP id A5125748DD8; Wed, 20 May 2020 16:17:49 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 493B9748DD9; Wed, 20 May 2020 16:17:49 +0200 (CEST) Message-Id: <0edaadbc25f1eeb6eef648816770cbcd6a4efa2e.1589981990.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH 6/6] sm501: Remove obsolete changelog and todo comment Date: Wed, 20 May 2020 15:39:50 +0200 To: qemu-devel@nongnu.org X-Spam-Probability: 8% 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=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=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: Peter Maydell , Sebastian Bauer , Magnus Damm , Gerd Hoffmann , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Also update copyright year for latest changes Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/display/sm501.c | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/hw/display/sm501.c b/hw/display/sm501.c index 13269cc9f4..b76b691674 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -2,7 +2,7 @@ * QEMU SM501 Device * * Copyright (c) 2008 Shin-ichiro KAWASAKI - * Copyright (c) 2016 BALATON Zoltan + * Copyright (c) 2016-2020 BALATON Zoltan * * Permission is hereby granted, free of charge, to any person obtaining a= copy * of this software and associated documentation files (the "Software"), t= o deal @@ -40,23 +40,6 @@ #include "ui/pixel_ops.h" #include "qemu/bswap.h" =20 -/* - * Status: 2010/05/07 - * - Minimum implementation for Linux console : mmio regs and CRT layer. - * - 2D graphics acceleration partially supported : only fill rectangle. - * - * Status: 2016/12/04 - * - Misc fixes: endianness, hardware cursor - * - Panel support - * - * TODO: - * - Touch panel support - * - USB support - * - UART support - * - More 2D graphics engine support - * - Performance tuning - */ - /*#define DEBUG_SM501*/ /*#define DEBUG_BITBLT*/ =20 --=20 2.21.3