Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757187AbcJXE5d (ORCPT ); Mon, 24 Oct 2016 00:57:33 -0400 Received: from ni.piap.pl ([195.187.100.4]:39788 "EHLO ni.piap.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752332AbcJXE5a (ORCPT ); Mon, 24 Oct 2016 00:57:30 -0400 From: khalasa@piap.pl (Krzysztof =?utf-8?Q?Ha=C5=82asa?=) To: Andrey Utkin Cc: mchehab@kernel.org, stable@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, maintainers@bluecherrydvr.com, andrey_utkin@fastmail.com, ismael@iodev.co.uk, hverkuil@xs4all.nl, hans.verkuil@cisco.com Subject: Re: [PATCH v2] media: solo6x10: fix lockup by avoiding delayed register write References: <20161022153436.12076-1-andrey.utkin@corp.bluecherry.net> Date: Mon, 24 Oct 2016 06:57:25 +0200 In-Reply-To: <20161022153436.12076-1-andrey.utkin@corp.bluecherry.net> (Andrey Utkin's message of "Sat, 22 Oct 2016 16:34:36 +0100") Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-KLMS-Rule-ID: 1 X-KLMS-Message-Action: clean X-KLMS-AntiSpam-Lua-Profiles: 104635 [Oct 24 2016] X-KLMS-AntiSpam-Version: 5.6.0.28 X-KLMS-AntiSpam-Envelope-From: khalasa@piap.pl X-KLMS-AntiSpam-Rate: 0 X-KLMS-AntiSpam-Status: not_detected X-KLMS-AntiSpam-Method: none X-KLMS-AntiSpam-Info: LuaCore: 129 129 44068d4546983bece33510bc20c7c89b64c477a2, Auth:dkim=none X-KLMS-AntiSpam-Interceptor-Info: scan successful X-KLMS-AntiPhishing: Clean, 2016/10/21 14:33:47 X-KLMS-AntiVirus: Kaspersky Security 8.0 for Linux Mail Server, version 8.0.1.721, bases: 2016/10/24 00:48:00 #8009685 X-KLMS-AntiVirus-Status: Clean, skipped Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 795 Lines: 23 Andrey Utkin writes: > --- a/drivers/media/pci/solo6x10/solo6x10.h > +++ b/drivers/media/pci/solo6x10/solo6x10.h > @@ -284,7 +284,10 @@ static inline u32 solo_reg_read(struct solo_dev *solo_dev, int reg) > static inline void solo_reg_write(struct solo_dev *solo_dev, int reg, > u32 data) > { > + u16 val; > + > writel(data, solo_dev->reg_base + reg); > + pci_read_config_word(solo_dev->pdev, PCI_STATUS, &val); > } > > static inline void solo_irq_on(struct solo_dev *dev, u32 mask) This is ok for now. I hope I will find some to refine this, so not all register writes are done with the penalty - eventually. -- Krzysztof Halasa Industrial Research Institute for Automation and Measurements PIAP Al. Jerozolimskie 202, 02-486 Warsaw, Poland