From patchwork Sat Aug 29 00:04:25 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 512096 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id E56561401C7 for ; Sat, 29 Aug 2015 10:05:07 +1000 (AEST) Received: from localhost ([::1]:50389 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZVTdp-0000Ua-Ux for incoming@patchwork.ozlabs.org; Fri, 28 Aug 2015 20:05:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38887) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZVTdK-00085u-6l for qemu-devel@nongnu.org; Fri, 28 Aug 2015 20:04:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZVTdG-0006pB-6P for qemu-devel@nongnu.org; Fri, 28 Aug 2015 20:04:34 -0400 Received: from mail-bl2on0067.outbound.protection.outlook.com ([65.55.169.67]:34400 helo=na01-bl2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZVTdG-0006p7-1g for qemu-devel@nongnu.org; Fri, 28 Aug 2015 20:04:30 -0400 Received: from BN1AFFO11FD047.protection.gbl (10.58.52.30) by BN1AFFO11HUB021.protection.gbl (10.58.52.131) with Microsoft SMTP Server (TLS) id 15.1.256.10; Sat, 29 Aug 2015 00:04:28 +0000 Authentication-Results: spf=fail (sender IP is 149.199.60.96) smtp.mailfrom=xilinx.com; redhat.com; dkim=none (message not signed) header.d=none; redhat.com; dmarc=none action=none header.from=xilinx.com; Received-SPF: Fail (protection.outlook.com: domain of xilinx.com does not designate 149.199.60.96 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.96; helo=xsj-tvapsmtpgw01; Received: from xsj-tvapsmtpgw01 (149.199.60.96) by BN1AFFO11FD047.mail.protection.outlook.com (10.58.53.62) with Microsoft SMTP Server (TLS) id 15.1.256.10 via Frontend Transport; Sat, 29 Aug 2015 00:04:28 +0000 Received: from 172-16-1-203.xilinx.com ([172.16.1.203]:32907 helo=xsj-tvapsmtp02.xilinx.com) by xsj-tvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1ZVTdD-0001Ck-8Q; Fri, 28 Aug 2015 17:04:27 -0700 Received: from [127.0.0.1] (port=50554 helo=tsj-smtp-dlp1.xlnx.xilinx.com) by xsj-tvapsmtp02.xilinx.com with esmtp (Exim 4.63) (envelope-from ) id 1ZVTdD-0003yi-1o; Fri, 28 Aug 2015 17:04:27 -0700 Received: from xsj-tvapsmtp02 (xsj-tvapsmtp02.xilinx.com [172.16.1.203]) by tsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id t7SNxeue010940; Fri, 28 Aug 2015 16:59:41 -0700 Received: from [172.19.5.100] (port=44013 helo=xsjengdev1.xilinx.com) by xsj-tvapsmtp02 with esmtp (Exim 4.63) (envelope-from ) id 1ZVTdB-0003yM-Ry; Fri, 28 Aug 2015 17:04:25 -0700 From: Alistair Francis To: , , Date: Fri, 28 Aug 2015 17:04:25 -0700 Message-ID: <3b6ebc85594630a62a0b5972063f87625a44f1d6.1440806501.git.alistair.francis@xilinx.com> X-Mailer: git-send-email 2.1.1 In-Reply-To: References: X-RCIS-Action: ALLOW X-TM-AS-MML: disable X-TM-AS-Product-Ver: IMSS-7.1.0.1679-8.0.0.1202-21776.005 X-TM-AS-Result: No--7.967-7.0-31-10 X-imss-scan-details: No--7.967-7.0-31-10 X-TMASE-MatchedRID: 7u0+lsKKdIrevfRM0DsRxpBOzK6mj2LNKVrLOZD1BXQfEmsQEltHx9lQ tUFiiij6zQCEFcQpqpiTLG0nWqUc0wlA1YvnZYYFA9lly13c/gHt/okBLaEo+Fmc19Us2m2yEH4 rFpPoR0AbS/LaVLRVhGzoyTKCfRDkSSOWVJeuO1AURSScn+QSXt0H8LFZNFG7hqz53n/yPnoL38 4QdkWIBH9kqetvI3wZtwtGv/5z7W0ScU8cheCwYmcjFnImzvyS X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD047; 1:hNjt0BRdmPFC7FsICM6l1V0cuu3sleUb5F4U7DprK6GML252ZhCSqaTQEvwCrDb9WD97cQMMR6WL2UzMkjFaq7sUcdon7ztD/FeJBSykKG5EvyH/lul7lkw55VJ8amFElbksa6d0EO7K75p81Ip6WI3JXDfVLkdmDAlrTetlwIV0bOTggf11IG1FVcYs7U8Sno4mvmpaFGyopXvc9ypjAaPdjcSmHC4kLGqyLWCSt6WXWMmg+X+puU5H4O/qBpiuKZ+xVgG/qkw4Ip6ZbNXlxZzzABGXl9bq8CM8yNqX0gpgehDBloCZhcfFAhn2A7bfrMzQGbN48kx0n3WmbkoVNGcY/pJQawZ027OaTTioP1kdFC52yVNEDcIKIDYkWuVafE4Z7qoq0oU01F/BGLawCA== X-Forefront-Antispam-Report: CIP:149.199.60.96; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(3050300001)(339900001)(189002)(199003)(50986999)(87936001)(19580405001)(76176999)(71366001)(46102003)(2201001)(6806004)(64706001)(47776003)(77156002)(50466002)(77096005)(50226001)(4001540100001)(48376002)(92566002)(5001830100001)(5001770100001)(81156007)(2950100001)(86362001)(118296001)(5007970100001)(64026002)(189998001)(85426001)(5003600100002)(105606002)(19580395003)(33646002)(5001960100002)(5001860100001)(229853001)(62966003)(5003940100001)(36756003)(106466001)(21314002)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1AFFO11HUB021; H:xsj-tvapsmtpgw01; FPR:; SPF:Fail; PTR:unknown-60-96.xilinx.com; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11HUB021; 2:h2f2kDDx3ewhxJN4yWp0yZWStUHodoMUfbUDxm94gWP007jYLB3dJuKpTec5sw1+EKxJb34t+w0fFceAeg48iPejbb54o3EuyEX2FAvUhac7Ax/+b5nzXVNWr6EjHn5IHT6UhgVCWY9CBTwvfsG5F4jUxiXUv76QyH2h9Sv2hNM=; 3:c1EMkdRIWGv33INs8dDJJslEw0Aii5qvNin14TKd6mSkK5AOq5WWExuI5glEkzp4RbVqYSMwhbB/5UMCmYOPPF2shYHjGyFn0KSivFYXGCCq9k54BXDX6l3lxzVITGTG2zF7zjXD1gKyDmKzR+SZgnJwaaNLbECyFcmy//tmorR0ftdOG7Swr/ZT2ibpzWgprVmOpukaqtW4l823ggCLLyJE7Gp/+bcxI6CRQyZY8dA=; 25:SinLg+snPDaQT46zakNrdC70UsQsjBPjmRq81HEkKHoXaULB1lpwiab+rnvto/JHJpm0AM562MFhFpXlEJWGI+Rot/kD9/d2imkIrZIF1F7CBghzaTz9R1jQ9xQOfWnjVwHWlT2rCIflG0+fsPsvpvsPTj6cN000KPjPtUhEij1Tss5yY/BKVMzjUz+c/eZGxhA26pmZun5i/XxnsxHUOalgW17ukbfvNQyRsjs91Dy91CgBJD4yC4TbUhS+kvbnMqEDrZIJ7SM0sirQeyBIsA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1AFFO11HUB021; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11HUB021; 20:v2ikkBBl4u4A/RxRRQhHJSh4y0A5ad8+HfGVzPzWMZpQyFQIAuglWb/P/rI3EgtKrpgMXuCckZ1WKS1tj3Cq7wZ9/81qNgsfPaA4+HGjGjgmJQj+eToDVEmcLCDUaoHN6H4Nfzn6/8/04F5czem4ORCCaPbJD5PeY7Q/OxloCpqds5iAW/QWCiIBoio1HOMdzvwglf19/D1WmbspAglQEvkfKhMhGEjOgX3ULQ6fXwMgbbdkQNHWu6qF8608XGH6IcpHF9h9ALRVHcd3WOBxrem9rXkK0oJ9aIutRcQZjf352jg6ZOBXdvbGl+lkjfMykEg+D2Q6jdjhXHFUY/x0qtge2y2C5ALMEPFLI+jn7PnMaO5ObB77jmduNE27HQ3EPWwJ3ZslNBSXMiVhsyPZEMy+ngx5LOPxPpUEF+IQJD5KAlB/i8GNUhGIabHmSeRNLPufD3GyWnL7mWRm02giHfcyrR262EP7OtcNrDKhJK0mpIMRAnjm0TgbWW8CTp2G; 4:V/xelFCGEo+HCdWCHwWpXHdktcwoHnAmWsHXKkkpun2sP3CO6XhT7VtfuNPOGVnsH4Dk0ZxRAGDZTgOLwDEHMXG5+G5M4cekv8TvTD60zanCxbT5r1nDz9kw+41M9GZnW88HEBx5SKlK+XbNp6mxFhHnzZLKuphxvySjeEJ9tueIq4JZzyc2Ss3vlLcWvFmT+R/Km2m0z5um9LheEzPuRfJZMDOH8y401ZKyWBknxrks3xEZXSGtlm7CNjCNyh4ala/JZ0f5/jkBdkTcHwO7sI+gX4zVZMqZX3gMJqI3CxyR2mQq44yoo+XbfeZjcOMl X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(8121501046)(5005006)(3002001); SRVR:BN1AFFO11HUB021; BCL:0; PCL:0; RULEID:; SRVR:BN1AFFO11HUB021; X-Forefront-PRVS: 06833C6A67 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1AFFO11HUB021; 23:YaQPbqA7hazP2Wvb1aEGB8KpMUqku6w19kVSMjp?= =?us-ascii?Q?XfjGi3ZLt0F/TC5YtcoSczIYTRwe0yRF4zvLENFwHL2Z9l+41iPb1NpGChm+?= =?us-ascii?Q?aNXsVUfRZs7fP+/O8kTD9pJKoL05RnVg6BQS+oBcUgiyIlQ6zqDVoX41Nwle?= =?us-ascii?Q?1TFSiGXdeccVIOTp7hV1UQsZrywJgh3Im3fzcrpZzEgRj8uJrRpwgtP5Garf?= =?us-ascii?Q?GyloODuEpjawkA3RGL4LbYXTRvP91vXGck2tPLRis+r5rjOwg4xONXOiij2t?= =?us-ascii?Q?byOsdjJDqKa4Dyw+A780Fu2vpnKdtTjEvN/oLXLXsVItjP3CyEJdAO7KVpTu?= =?us-ascii?Q?qXCZIch5TqO4R1gnnAOvCq3Tcib32CFUQxd9niBY3nmmKpOY1fuNErCubF7U?= =?us-ascii?Q?rLZdly5hJgynEhbTHm4lQszwrl682eqRJt9aO7/ZrEWUcX7PqcMLfF7jvxdI?= =?us-ascii?Q?GIAEINxu6xobX/0C2S8WDUtDTIEPGjqKiOUA6b2H3KdsJIh8XgJvUn+RE73f?= =?us-ascii?Q?R7dU9k2eDDBLwHOj+Fco4jMDzLKph0rxEdvG7WBaLQlJVLste4YD/KhbIzaM?= =?us-ascii?Q?xrQVFffktXVw2bPjJn4JTnPY7n2mHkObIeK8GecDxTm2iRC5yXXa0PLeNSke?= =?us-ascii?Q?MjDcsX8/FBljetA702Twk+Rt3nxHPOvdJOzGgsNYJjng1cU+xjFBw4nwmOLU?= =?us-ascii?Q?ZlxxxurlYB3k0qd+7YDPEExAG7cnoZgIgmDg86MwqQWX1X7NbSM3H8cGPwJl?= =?us-ascii?Q?6KDXXrqa3kua2n7/wLlxmduWT8o7DOcCn+dPDNmRdpEX2wSi80txXSyV0FKa?= =?us-ascii?Q?7KJDbhYXaEhk8k+NC0A16tjheb62ns5lnYotrletVy9JxthubMwPR+KIRdqH?= =?us-ascii?Q?VP+omeFAOsmrt1znGqT4JpKPz7Ex+V9nzQ85tbQyK7pfhjiaCIyvSHZpF9eB?= =?us-ascii?Q?NzlNumZ95OX1tzXY38ZEf5eJtMo6eJo9x4DCCO+e/yXrNuoXN/OU5zENrY/b?= =?us-ascii?Q?9oBy3FqPzlENRO1zkv9BntzIdIvux+Os4Ksul3VCpbv3w/ywXYxH47hP0AiV?= =?us-ascii?Q?gn4UtgXHPcwajfouYGXRmaUr11FD1KLsK3LRsJznRwN4ZRLBC1GPk8CPl2dp?= =?us-ascii?Q?r/IihIjVdZtRpQ/NgsPoHPrEU59dfL/ZYJYjCQ0NdRGe+FnWB/oTdV2zoksz?= =?us-ascii?Q?p1K5zaxgJ8BYYoVV78pk3lhqB100OkI9npNEXRPbE5nRho1A2VWp2LKKv46j?= =?us-ascii?Q?OdFsPrTku27ZWJ2+bPAw=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11HUB021; 5:7KrcDyDLc9hHImIATAGGjV9ViZbYpeJm8frH7rfg0ZoRcAOJfKtD2SXe8nk7EFhabCLLUQGlMDNM9NnulULP2eYrQxAaf5hq/GAQt3XJ1xayRxRWlpnK76tFwHYZdIqc4CGJyjsEO2hiAj4ElW9Ofg==; 24:7CoFfrb+YVkD8fAavZRcBOP5x4DXv9b86ea4rRGg7OoePFd4O9pezsDzEXkJLIihVGGPuCBGVWE/CaPxaqlj+8nvO4TO3vu/caEf/RSYOHE= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2015 00:04:28.3993 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.96]; Helo=[xsj-tvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1AFFO11HUB021 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 X-Received-From: 65.55.169.67 Cc: saipava@xilinx.com, edgar.iglesias@xilinx.com, jsnow@redhat.com, afaerber@suse.de, alistair.francis@xilinx.com Subject: [Qemu-devel] [PATCH v6 2/4] ahci.c: Don't assume AHCIState's parent is AHCIPCIState X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org The AHCIState struct can either have AHCIPCIState or SysbusAHCIState as a parent. The ahci_irq_lower() and ahci_irq_raise() functions assume that it is always AHCIPCIState, which is not always the case, which causes a seg fault. Verify what the container of AHCIState is before setting the PCIDevice struct. Signed-off-by: Alistair Francis Acked-by: John Snow Reviewed-by: Peter Crosthwaite --- V5: - Remove the return checks when setting PCIDevice V4: - Remove unnesicary casts - Use object_dynamic_cast() instead of object_class_dynamic_cast() hw/ide/ahci.c | 13 +++++++------ hw/ide/ahci.h | 2 ++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 02d85fa..d83efa4 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -121,9 +121,9 @@ static uint32_t ahci_port_read(AHCIState *s, int port, int offset) static void ahci_irq_raise(AHCIState *s, AHCIDevice *dev) { - AHCIPCIState *d = container_of(s, AHCIPCIState, ahci); - PCIDevice *pci_dev = - (PCIDevice *)object_dynamic_cast(OBJECT(d), TYPE_PCI_DEVICE); + DeviceState *dev_state = s->container; + PCIDevice *pci_dev = (PCIDevice *) object_dynamic_cast(OBJECT(dev_state), + TYPE_PCI_DEVICE); DPRINTF(0, "raise irq\n"); @@ -136,9 +136,9 @@ static void ahci_irq_raise(AHCIState *s, AHCIDevice *dev) static void ahci_irq_lower(AHCIState *s, AHCIDevice *dev) { - AHCIPCIState *d = container_of(s, AHCIPCIState, ahci); - PCIDevice *pci_dev = - (PCIDevice *)object_dynamic_cast(OBJECT(d), TYPE_PCI_DEVICE); + DeviceState *dev_state = s->container; + PCIDevice *pci_dev = (PCIDevice *) object_dynamic_cast(OBJECT(dev_state), + TYPE_PCI_DEVICE); DPRINTF(0, "lower irq\n"); @@ -1436,6 +1436,7 @@ void ahci_init(AHCIState *s, DeviceState *qdev, AddressSpace *as, int ports) s->as = as; s->ports = ports; s->dev = g_new0(AHCIDevice, ports); + s->container = qdev; ahci_reg_init(s); /* XXX BAR size should be 1k, but that breaks, so bump it to 4k for now */ memory_region_init_io(&s->mem, OBJECT(qdev), &ahci_mem_ops, s, diff --git a/hw/ide/ahci.h b/hw/ide/ahci.h index c055d6b..c9b3805 100644 --- a/hw/ide/ahci.h +++ b/hw/ide/ahci.h @@ -287,6 +287,8 @@ struct AHCIDevice { }; typedef struct AHCIState { + DeviceState *container; + AHCIDevice *dev; AHCIControlRegs control_regs; MemoryRegion mem;