From nobody Thu Apr 2 15:44:07 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1774619751; cv=pass; d=zohomail.com; s=zohoarc; b=BKQSdWozRVhAr5962tEuJSJCYcVcPDgGxKEzydb+1UmY/IMotVSWBDGm6kbyqD06yAjLMY8+lRL5pnwfC5gitwhtu365guhf1RjJbCgpTOGuNHQkO5gCd04BR440Cl0IVZoV9WMoP1wtv5uY07Stcz74VdJVYjTW+EGT7kTVvaI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774619751; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bhmHBEQUQsV67sJGN1j2fx0kLUU8zzBp+J69Zw8ktbA=; b=lLRV9LF6p7DDzimxHcKt7T5I+UatjgwWNn7FBgm8oAYAx/Nc2KXBpDgwiwN6CQ80Nx8LeH1AUMEQs8IxN7ZfnpLKuMDqmYsqTj08nffktN9U/AUN6xZBwFcOlUD/8HRuRFTLXEYqDvHhFpmb/WSX4yXrm2Q2AEMZJ9mLYs9k7Kk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1774619751130394.5164325085234; Fri, 27 Mar 2026 06:55:51 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1265692.1556498 (Exim 4.92) (envelope-from ) id 1w67ep-00059H-GS; Fri, 27 Mar 2026 13:55:27 +0000 Received: by outflank-mailman (output) from mailman id 1265692.1556498; Fri, 27 Mar 2026 13:55:27 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w67ep-000598-CI; Fri, 27 Mar 2026 13:55:27 +0000 Received: by outflank-mailman (input) for mailman id 1265692; Fri, 27 Mar 2026 13:55:26 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w67eo-0004vU-2d for xen-devel@lists.xenproject.org; Fri, 27 Mar 2026 13:55:26 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1w67en-00006j-Ef for xen-devel@lists.xenproject.org; Fri, 27 Mar 2026 14:55:25 +0100 Received: from [10.42.69.2] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69c68c44-2eae-0a2a0a5409dd-0a2a4502830e-14 for ; Fri, 27 Mar 2026 14:55:25 +0100 Received: from [52.101.48.23] (helo=MW6PR02CU001.outbound.protection.outlook.com) by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2) (envelope-from ) id 69c68c4a-63bb-0a2a45020019-346530175dc9-4 for ; Fri, 27 Mar 2026 14:55:25 +0100 Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14) by DM6PR03MB5370.namprd03.prod.outlook.com (2603:10b6:5:249::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Fri, 27 Mar 2026 13:55:22 +0000 Received: from CH7PR03MB7860.namprd03.prod.outlook.com ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9745.024; Fri, 27 Mar 2026 13:55:22 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aVhh2QX+IfrMB81zqosvz2AgZ8kClcAdXh+8N8BudTc3ZaPZJ5cUsozEVe/yeGIe+V7eSo240RfUKmzFnfr2SNbCmwuUqp39bfhS9dCUJlaQmQLfvikogv1uj1pFGDHbG9NL3iPPjQHnA/oJna7UdSEwti5AFuAF+o2VY+2Rge8k+Cd+xTGJ5SfXqeDAoRvircIYPB/i2zdngqya1lk8/y2n6dY56ZTnTRXUgAHVfiumM0dYLUmdtuRvhw0hRv7zXv8C5xTDuPQKDsnHJsk0/sq0UTwcvXrbXc3ZxfTAqvNLAmt3sxeOcTUqrs1/a1ATeGPN5B6I4GwiTV5rV/h7mg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=bhmHBEQUQsV67sJGN1j2fx0kLUU8zzBp+J69Zw8ktbA=; b=Ht1/9ru79fgMP5zfyG4oyj93khxvw5MuFXFDfM2nPUR9azKupcdyTWN3MYcNBmtHkMXyKBG1PS5sgBzm2OMuZBbPEpMCICDSaEmbLLpCOFW1VCaSNvhUBJnGYL1VGVAsSJRbK/HMNeuqrNX9l7SKKPE5B8rnFdXzi+44zDz9lNNpnEfEO2xcyt8X+WncolplbNIAraqjWMzEFpvQtchG5WcwRwlUsf5DjYtShZJLMS8/90A3eOZfPmAYEXSdrIFyNhUP26qcS0KRUQ63Kfku35ZIUreBujCWZOgP95jm4R3XrEgfALocXry7HHSok587e2VmJPoWXpb7LtIhBZlL3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bhmHBEQUQsV67sJGN1j2fx0kLUU8zzBp+J69Zw8ktbA=; b=XKI9qy6IZK6WMjvyrpsPLC0Yni1gKJEcl22GXh7sx96ks3sHicK3tuP99ldhGjfrUWyeS5WuirLhnsuu1BU37ayQduZ5L17Bo1s5Fc9sXodeNFxsXQPoTVR6pK5l+yq8gOCe6FSsY+ulNfihrjV8uShXwyvDDxbG2DrhdaFF46k= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , Stefano Stabellini Subject: [PATCH v2 1/3] xen/uart: uniformly set ->ps_bdf_enable for all PCI serial devices Date: Fri, 27 Mar 2026 14:54:18 +0100 Message-ID: <20260327135420.7246-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260327135420.7246-1-roger.pau@citrix.com> References: <20260327135420.7246-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0039.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:46::8) To CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DM6PR03MB5370:EE_ X-MS-Office365-Filtering-Correlation-Id: 83a00c15-36b4-40b7-03e2-08de8c087d70 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: NOwHscqcH+XD5bhZI+aX/sOj7EI8SuBEMJCPnRex+/YIZKvKzxSnVE28jA7Ko8jpeCePZh/3s1dt2c3rq7QXUDlt2amDDuNts7sYs8H0A1Ca/rM2HNrARkSzqHvwJ2dkJwFPfjTcdFTGR6eSZWlMpCKMxlG9Us9vybdr9aEA0+xzy6IKxEybpYmeuL5v9RpDZ19eOQCoyzW19TphdyuHEiKMLyzQlMvS5DwrS4CKJErbirYveoabyZzYmyjfZB5QAMbHjKt+o7hVMX1F7SHtCQ0mGNHwetXmB424nKBCh4Mi9QO2JyY757wDjmJoionKXNjGOrdd7SuilALspQlI/NSHt0Scb5kPuZ8eyvG2aMZ/5BCOULdnqkZB7oTC6s+yHGM/mtvz6bQfI7fWbh6RpPhFLv5pFZM+zmlEo/uVKZU2GDAMGP/Nsi+XZb221cf4lFiSom+SmXv0DZw/A1MrEJZ0iKCB59Ijs//whkeG3TUrmiBWkEtgbNCTtpEvJhIQi+bljWbYjVxOV129GJVcanv1mANqbCFVeLpuDRfOi2UQwhejLLJcV5JvVEqLlzUkb6U6F+TKqkMukA4kA197YaKpSIb2n3qMwuUmQsSy4z0ZxokoaeWG/HGNGjC1MYAyeg8VQyGFd85kGAMRJJIiuBCb/nB/OaAD069+q1flY+OFMu2NwBJ6xlj6oiYI4P7B6QwC2DvkgWaYBRu2wjnSro7JgJZnSlS3KXEbTdazCJU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RWI3UFd6VWFDeDBQSzJnNVZ1ZWtsUXAxakVQYUp3Ujh4Vm5XbVNYUzJWOU5s?= =?utf-8?B?aDlpOGpWdEdiSlRNQ1E4eVZ4MHBPZjdEREg2dmZoRXZBN0N1WmRINmo1ZGE3?= =?utf-8?B?cmZZVE5RazhPMUM5T0RDOXFZR1VUcUZjbm0wM2pSRGI1NlR0TkJlNWUxcmVa?= =?utf-8?B?MHUvRjc3S0tRbzllS0dxQUo0MmRRWmRHWmF0VlhnQW1aUXRNQ1l6a0FKSzJi?= =?utf-8?B?L29aNlBtSnVDOURWWFJrUC9tTmRGUEd5a1RwenJGeHhuOFIreEtqN2VSM2Rj?= =?utf-8?B?c3pleGhyRzd2MXU3UjVQQzZUSjVvcHd4a3FjTHF1RlZaMzB3cnZzR3ZXZW5J?= =?utf-8?B?TnBkdkYybGxjM1lyZWtaeER5am1KSEh5ZEdGd2p0VW1PN2N6NGpJVkRIamU3?= =?utf-8?B?d3BWQ1pBdjZ4eUV0TDY5ejlTTFFmaVIrcmV1S3RlQWloZTJxeDlpcWdrM1ZP?= =?utf-8?B?VU11WDVQNXZwelpNcDBLd1ZDQS9wNUhDUzl3WnlUMURhSGpiL1AvU21XZnU2?= =?utf-8?B?ZjNCbU5CTkxaYllQOHI0YW5kclUzdmtZUXBXRTRja1JNMmVVcmlWSGJla29I?= =?utf-8?B?ZFBmU3RuRmYyd3ZUN2trUXVuaDBKS3JsS05DejJ4U2Qza3hVWjd3WFRJS0U0?= =?utf-8?B?cCttVXl0Q0VyUGhsblptZ24yMGh1alZCTElSWnpJbnFoYUMrVGpMbEtCeVRI?= =?utf-8?B?dWxPYjZTTmRhaTViNUYwS1VRNXJ1WWJvTWozSXNwM3FEZDEyVyt4VHRLa2VE?= =?utf-8?B?TVZ1My9vT1YrTGxRUFUxczR0dmZodnRQdkFydVJhYVB6VXh1YXptUTViVjg1?= =?utf-8?B?KzBPVzY5NjJuOFFUbFVWamZUaDNjOVQrQ21qVUtiY0xJdlcrS2xNZEFVRXVR?= =?utf-8?B?S2R5TXhMZEhvSi8rakk1ZVgwQTlOYjlGd0MvU05Oai9EY01BWHI4NG5qcDlh?= =?utf-8?B?YU8wQ3l2aVhmK0lNREM4eWNPWHVUUnliU2ZsUGxmQi9qMmNxZ3NINFpaeTVs?= =?utf-8?B?ODhSMENIN1JVWEc4dEV4OUFJelNVeFBBRmgwYXhMNmtoMHBQcVlCZjF3T0tE?= =?utf-8?B?OVBWemIzdStpOXphYmlHMW82aHh4Yi96OXJVdXdSN0d1NUUwTlNiZzBsbkEw?= =?utf-8?B?Kzd3aWFPdDlhS2JYcHM2N0tZNzZrakZWbFBHaEJoUm1Lb0kvRXBlQVYzcW8x?= =?utf-8?B?RDFZb3RVM0hVZmxVbUZpMi9pS1ZxR2NjS1B2QXE3THcyeERGcmhpeXdveEdF?= =?utf-8?B?dGV6OER6a3V4bklZOVJpdlYxNlNmNkVrVnZyUCtnandXMVY2RHIxSXFyRyt2?= =?utf-8?B?L29rWkpZb0ZadzRaQXZ1VHE3WEV6d0MvNkM3QW8xaUs1Z1dQWFFoNHl6azYr?= =?utf-8?B?ZGI4QjB0a3JkMUQ1M0FnL0Vwemc1L2F3UVYrWCtOK1JIWXNiejRScW9XQmoz?= =?utf-8?B?YTIxTnVzSE8zRTJ1cldCRHpneURWOVA3bGhwY1Zyby85c2hsYWlONGtOWkpq?= =?utf-8?B?QzljZ2VyVmVKVmY4eFpweElKa0lLTG5lemFHZ1lKeTN4VUh0Y29pWWNCcFRN?= =?utf-8?B?QTRCR21TSXZPT3VvcHhCb0hoY1k5Z0h5S0J2d1dWejY1NlpScFdDV2JHemgz?= =?utf-8?B?b1J6WTJWMlJQeWtXSHJ4aFp4WVY0dXlLZHVlNFNQY0xNOW9lcHBicll1cWov?= =?utf-8?B?MEFIQWFmSGVZVkdIYXJkdzdGd25RNFdhZ1BjMXJGc0o5QlFLcFJVOVhiNXFI?= =?utf-8?B?bkVOMjE5THo1d3ZPelFwdzkzay9ZNSsxbU9ZeDdLaFJ0TEpuSkZyaW5GZlBn?= =?utf-8?B?N0hJVHhOQ3BvaTQzWE52dGhtZ3pwRHdBc01yY0pOd3B5TW9sK1d2UDA3YTNK?= =?utf-8?B?K1d6b2h0L0pkZ2lwMFZJVHVmSEt1L0xvaTRTZXZPYUFUNTF4M29zc2M0YURB?= =?utf-8?B?WFNMQnBObU9BUFZ4ZlZTNFl6eWQ0cCtLY21RU0Z1bFBUblQ5UWh1bmt2bWdk?= =?utf-8?B?TXpOY1owbkQ0N2t1V1ZGRTY5Smw4SGVJckFraW5KZnhsRzU2cGpyRVhydE5s?= =?utf-8?B?U0FXY0laNnVjdWFJWEpXdmJXUWl1UzJVQkYvY21HOW5yZDdJT2hsRXRDbFhh?= =?utf-8?B?N2RaTzc1aDFGdDdmVkg1bjFpMksyQVBLSHI1RGhwbkpvTm1TZVdHd0lTRWtr?= =?utf-8?B?TjFqVjhDTE5kL05wWjhOVnV1MnZkbzBYNzZtMVM3NU9FTko0TlU0ODhSSUJv?= =?utf-8?B?VW5ySXlNM1BibWFiY2lkVDFLOHV6b1M2bERaOExoMVVKRXhUMkNrTkpJcXdQ?= =?utf-8?B?UnhKQUtvV1I4KzV4UndsalBYWVFqRGF1Q1cyTmJuWmtrd0xNcTh6UT09?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 83a00c15-36b4-40b7-03e2-08de8c087d70 X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2026 13:55:22.7281 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PNpSKzt9a3WtLHeIsZM/NpMm2FXkV9+ffuZ08Q4kgc+StoZaDyxu72b1IjdX9SpenJfio/vTKta12JnbzZufnQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB5370 X-purgate-ID: tlsNG-720697/1774619725-6957CDB8-C56201F6/0/0 X-purgate-type: clean X-purgate-size: 2508 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1774619752468158500 Auto-discovered serial PCI devices when using device=3Damt|pci won't get ->ps_bdf_enable, and as such some of the logic (like making sure the respective BARs are enabled) won't be applied to them. Fix by unconditionally setting ->ps_bdf_enable for all PCI serial devices, and removing the special case that was done in some places by checking whether the ->bar was set. This also allows simplifying the logic in pci_serial_early_init(). Fixes: 9738db88f68f ("xen: Automatically find serial port on PCI/PCIe and A= MT devices.") Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Jan Beulich --- Changes since v1: - New in this version. --- xen/drivers/char/ns16550.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index d384f1c69d2c..d05dc506ed9c 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -283,7 +283,10 @@ static int cf_check ns16550_getc(struct serial_port *p= ort, char *pc) static void pci_serial_early_init(struct ns16550 *uart) { #ifdef NS16550_PCI - if ( uart->bar && uart->io_base >=3D 0x10000 ) + if ( !uart->ps_bdf_enable ) + return; + + if ( uart->io_base >=3D 0x10000 ) { pci_conf_write16(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], uart->ps_bdf[2]), @@ -291,9 +294,6 @@ static void pci_serial_early_init(struct ns16550 *uart) return; } =20 - if ( !uart->ps_bdf_enable || uart->io_base >=3D 0x10000 ) - return; - if ( uart->pb_bdf_enable ) pci_conf_write16(PCI_SBDF(0, uart->pb_bdf[0], uart->pb_bdf[1], uart->pb_bdf[2]), @@ -440,7 +440,7 @@ static void __init cf_check ns16550_init_postirq(struct= serial_port *port) unsigned int, 1, (bits * uart->fifo_size * 1000) / uart->baud); =20 #ifdef NS16550_PCI - if ( uart->bar || uart->ps_bdf_enable ) + if ( uart->ps_bdf_enable ) { if ( uart->param && uart->param->mmio && rangeset_add_range(mmio_ro_ranges, PFN_DOWN(uart->io_base), @@ -1335,6 +1335,7 @@ pci_uart_config(struct ns16550 *uart, bool skip_amt, = unsigned int idx) if ( param->fifo_size ) uart->fifo_size =3D param->fifo_size; =20 + uart->ps_bdf_enable =3D true; uart->ps_bdf[0] =3D b; uart->ps_bdf[1] =3D d; uart->ps_bdf[2] =3D f; --=20 2.51.0 From nobody Thu Apr 2 15:44:07 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1774619756; cv=pass; d=zohomail.com; s=zohoarc; b=fmDYS6/uUzuZFZs6Z8XeIX3HVd1Z4uduJ3PzGRe8fzq9YIKvLlY55ns8sIf3N0F+XRstot3AgCjXtFN4iKEwrXiKl8F0+z7wJS6aSngX3NBn1Sx0Cz7BwmSYTxSInb+pJr/KuxSkYjyuckMme47JCD/CROEQV7rjoy6NaW2rN20= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774619756; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FJ0Ji5W2h3aOIBrVtvdFNdAp9lxGhfHtiIvV+ocnmZg=; b=V9k5wKJsZEZdxdmBUU7l3Yu2QhE3jUYOR3xyML+B9yYNV2VeL6iIasmrMEic2zJo8XldWo9iSYM0xavOG+H37COf97/JSx6slv9Ucj/OFEdVGfZHDyKYJDlfkQeta6m70fBlpeO6lXORN8HSLiPmqSkogOOWLSo/dD/4RaNyMwA= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1774619756484957.3924325955898; Fri, 27 Mar 2026 06:55:56 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1265693.1556506 (Exim 4.92) (envelope-from ) id 1w67es-0005Nt-Mc; Fri, 27 Mar 2026 13:55:30 +0000 Received: by outflank-mailman (output) from mailman id 1265693.1556506; Fri, 27 Mar 2026 13:55:30 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w67es-0005Ni-Js; Fri, 27 Mar 2026 13:55:30 +0000 Received: by outflank-mailman (input) for mailman id 1265693; Fri, 27 Mar 2026 13:55:29 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w67er-0005Mk-5i for xen-devel@lists.xenproject.org; Fri, 27 Mar 2026 13:55:29 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1w67eq-002tUt-HM for xen-devel@lists.xenproject.org; Fri, 27 Mar 2026 14:55:28 +0100 Received: from [10.42.69.10] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69c68c4e-bab6-0a2a0a5309dd-0a2a450ae2a4-8 for ; Fri, 27 Mar 2026 14:55:28 +0100 Received: from [40.93.196.2] (helo=SA9PR02CU001.outbound.protection.outlook.com) by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2) (envelope-from ) id 69c68c4f-1772-0a2a450a0019-285dc402f33c-3 for ; Fri, 27 Mar 2026 14:55:28 +0100 Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14) by DM6PR03MB5370.namprd03.prod.outlook.com (2603:10b6:5:249::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Fri, 27 Mar 2026 13:55:25 +0000 Received: from CH7PR03MB7860.namprd03.prod.outlook.com ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9745.024; Fri, 27 Mar 2026 13:55:25 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jXpBxFgmWHq+sRMVRK+Ges0s8czGkBxI5p8JPrpSSn6JD0Iq+dXheDM4iiSZzLdJ6l0XKy8mU2Eh3TNUGx2rj7sXeKdFBB3VO312ZLrXayT+gelLYprMYKDF0B1PoN2ziWaRGRpFvp2ghVC5i9MxYPZMCsN6tgqL3fzYuoohBsfpZtVyDQJc+EviwT70lq43bWKujyDm1rXoArxqvKnm3OfZUqLvVMvaUUupB5vGVCtzFMIbQ5PmQeAgroHNLp0/Ih6QYJdUSSyql53ZpS3Ejc8iKfzQy0F9tW7LntAlCcnSJtv8LasMrCEYz2z4mv/3PMjOzDIbnUBHLj8Rkw0S/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FJ0Ji5W2h3aOIBrVtvdFNdAp9lxGhfHtiIvV+ocnmZg=; b=l/UwnxKfO8sEKlaZAw/GDCB7bNpKcphMcJhm/psk2vB2D0ZMWThsAwFeAFAtxJQagBB8MTnkJ4b1Sb95HHgGWEhJ6ms5ncQn9jZlYsHsbiY4LeATdSWCPrcVzECd80GHgb66zOpE1WoTt5DxildVQvJCCziJJUNS4UW6nttegl+gY3d/kxjBnpun/XNTNdtWyPuSDL8GZjWLmGomS6I2wLNq0u7hJUzqHYaqHmk2rD3LvgWA/tIrxoMQmeMkRGHMglIZ4nReUE+aqNl68n3LXZrLHmKSvxRAB0ixob2P0Sn8a4KaofWHZOStKUPvuytCAvs3VdXWn1jYNEwDpB/sbA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FJ0Ji5W2h3aOIBrVtvdFNdAp9lxGhfHtiIvV+ocnmZg=; b=ukDUlovWCJrGE4StQxqz4WS7LDqMJENBiOCiYTp5yUiJNS6QP5Q0pu9aIt2w8Xk3/lVRtvz2r7HAAmwPy1+0iRJtKFbBpj1OFpXbIzZspaTDwxXILw1pNgnID7m0cQft0N3OwHj4GK8kyw7ipl/SlM2p0r/Xx1wwV7YA+0IPNrw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , Stefano Stabellini Subject: [PATCH v2 2/3] xen/uart: be more careful with changes to the PCI command register Date: Fri, 27 Mar 2026 14:54:19 +0100 Message-ID: <20260327135420.7246-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260327135420.7246-1-roger.pau@citrix.com> References: <20260327135420.7246-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0053.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:48::6) To CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DM6PR03MB5370:EE_ X-MS-Office365-Filtering-Correlation-Id: 4065a55a-1c13-4de4-c334-08de8c087f18 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: ADQm7JzVMIdmKY9qo+YZU2j1GQaqIOfWdFmHPjssSBAno01T0f2mWfPgcG962IcWCZa38yUJQwW2RfuoZKp1GjglbyIeve+alu73LqMW2F14EAI+GXfQc9azDJBuvjeXiSK/BmwXhrGLZMn2CY8Z9OetGSEUim5ihqpgrezf0mMSMzQabwJMslnn8zpXIAHAlVA2yteLHvrrQmxl0T67/yGPa3xTzYhAb7DFmPC+aszC65usbybLsONXLxwxzI7iQjCnHqsN2luRKdEwNM/rJ4szftRXkEFbiDuFxoJ/ei1+u34WFahBkVRicDgZEFPeindYPlCFdD9/bK65whF3ylJ/DLiRHJ74tM7b5XlCBITBXj4TvmxG/WnzzQjFrlno7skIFD4xyjbjUXNK6CHR/r30G8Tw/fFR55kdGyX1GGU2W97K8hQVQOsShSQXILJdVmdEq7eaH0D67rOL5IFaqyDpyxvsjb4ILzM1trgteDt2nlysitO1rRONHObHIMaX2aRcy6bQzZDu7kVrzbb+NcmA1l8e4Bnw2NvHy4LiZyP3OlkvAb2REKkdZlCbgjUXHRfDL+HOfI2O+bsQweq7dA1P2galfUID/p4ONUS0G4IMSVo6tB7YpdL7BY8+LCI1muAS4OB11N6ZJG0RQ/Ax3yJbl8PIZfAa8e3HHKAeBd74D97Tnfsuiz1eW+YjQJG+GOkl7HKLmZKikErWGCWATDIzyKcDaYBK6Iwe9hCOlzI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZmZuWnRGQ3ZvZ0JXYUdxQVZoTzRtb3hPaWh6WUZoaW1qeUhXWC9hSFQ5ejhT?= =?utf-8?B?VDB2VDlkMEpVU09qb2tRQklYT01MM3kwczRmaE1mbDJQbERzayt0bXMyVXAr?= =?utf-8?B?OVJkUzNja0VQQXh2WEZBU2lHTHpqbVUwL2x0UU92TkFOMHU3cFdrNkkzSUpO?= =?utf-8?B?MjU3UzNqdzE1ckdRM0ZqZ2lWbHpUdEZZU3huWDg4dzErV1h4bnM5LzFzdXNP?= =?utf-8?B?SVoyUStqREhwWi9SSXYzTHZ1c0ttMlE0eXhVTWptTE5pS25KYmxkRlJ2emIx?= =?utf-8?B?NGp1UFBWZ3YwNjg3MHBWWUE4cW1rME1QcFhheWFpYjR3clZBVkxUa3pjZklo?= =?utf-8?B?V0EyNzI2VXhqUjFwVEljYXdHVWMvRUd4bzB6YitzQnRzSTRsUXFlQjk1UWpJ?= =?utf-8?B?WkFZOE03NVdqdFlCN01oNmI3YS94a2NhbTArRHFkSnBJWXRUdzhKRGl6UzRQ?= =?utf-8?B?bCtwSnpWMUZYZDZvc2xySk9xaFdwOUxqL0FtbjYvYzFWdzA5d3pZVXVXUEVu?= =?utf-8?B?b0VncVpscy9iN3NOeVJGUUJHSUpvMEdYVFgrS0lFcXZqbnNSRWJtM1ZtbG1U?= =?utf-8?B?OXFQcHZIY1NrQkFPZnNnK1U2ajhicVJyNndMd1AybW5tWXZPeDhDZlRHVXFw?= =?utf-8?B?NGgrZDNPK1ExK1Z4b1ZEcW4zbUlWUUk0cVdVNXkxL1ZjbGNjOVMxMHBydGxP?= =?utf-8?B?cG9DaXlYcmxkTytsMDJnT3RIb3hpdkMrWUluV2lQR0hFZ0lHVTBjZ1RDUDZF?= =?utf-8?B?Sm5wSERDbXVkVEdOdDd2TE9KakxSRFBxQlMrRlJqQThDWVkzaXVQVmhmdEZm?= =?utf-8?B?Wkt3bWR3OE83dGxjZjZHd1VOUVdIbWgxUnR3TXpYdE82eS9kWWpYUDZPMGdT?= =?utf-8?B?NkJNRExLWUdMODlsaDlYRVdhSzFtYXF2ajhtSGplam0yTWliSStEaUpScTdj?= =?utf-8?B?NFhnYVRLT3VRdmZ5TXBnbW92c295TmV5SncyaFJHMWVpcGxmTlZadHg2Vks1?= =?utf-8?B?V0M1Z1FXR1hQc2RKck55bzkxY1JjdURsTUVyNnBVWnBOSkdOVXRUTGZvcnRN?= =?utf-8?B?c1ZpWEJMZGxPK01ETENTNzBoK2JFYnRjS0lDeWhieGJ3N3Zuayt0TTIvbVNT?= =?utf-8?B?QjBEZDJJTG9HYWpMWWpjMnpqWDBKdElnR1hlbThrUEh4SlFrOVoweHFScFRp?= =?utf-8?B?N2Y1RjhvU0g4VTlzTjhLSHFVcTJvVk1KMUtUZlVEMkc0dTJrYnhMM2phNVN5?= =?utf-8?B?WFNEL2JLRVJUNGVmT2hYQ1JhMzJidVl2S2ZtZTJRYjVlN0VRa1FLa292Skhp?= =?utf-8?B?cHpqTGw3SnY0WnZkcnNUbUpKdllFY3RuV1U2QWNxenhiYWpkNjNDcWx0dnlD?= =?utf-8?B?bkxldERLZm5mSW1jMFcvdm91SFVzQVM4Q09KVzNGMnlmYktrZFUybmtac0ZM?= =?utf-8?B?TXdaWEFSUU1BNElVMHJUNmtLTEk4c3BhUnZTYVF4VnpObzB0cHdsZXBEWDMv?= =?utf-8?B?eFdHNHZ6U2VldnNJS2Nvcm0xT3hHNS9BMmVsVGxxRDNMU2xORjRhVEdVK0l0?= =?utf-8?B?c3JvR0hYeXAxdEhPTUhiLzNNbmZHcVJwMzUxazM5bGYrSXF4Ui8yZVIyaHZU?= =?utf-8?B?MWlBZXQzdjBhRkRvTVhVNWFLWWtzc2hXWmpseUNqUFBMQTZMbDc4SStja0pZ?= =?utf-8?B?Ums0b3MvUDkyQXZpTUtIUUkrRzNrUXVKUkJEREtMYWVjQS9SSlNwdFBTL25J?= =?utf-8?B?U0NEUVBNQTdRSENpZ3BxK0RYNmMrT1FZbTNNak5TblFkMVQxa2FWSnl2RzZn?= =?utf-8?B?RXRoSStwQVoxaEFRdjlRQitLYU9JeU1qQlh1YTBNSndBZEtvUDd6M2paZDR4?= =?utf-8?B?YmZ3ZkwxMTJxL0o2NXh3cGR6WG10bHMzM1hLS2FLUGlzL0Ryb3htbGlZcFdB?= =?utf-8?B?aWh1bG11a3J1dmRYS0VUQmJnY2FTZmcrSE5FWHJKaExpZXB5bEZLNTNzSWxq?= =?utf-8?B?MHpuZUtZNS9IRldyOGJjdmRUNW9aMS9BTlNSQk5JVHh1Q2pNbzkvc3puY3Mx?= =?utf-8?B?NnREU2ZXMC9Td3ZiODFyYldUb3VoUnRLNTdFMi84dUc4RDhoZVlNOWc2REFs?= =?utf-8?B?WU5aUHk0Z29WbWJ0QUg2ZkU0elVKL2tNNkpsOHR1NXFPTHNuQXpSby8waXAw?= =?utf-8?B?T0Q1ajdlQWxRcXlRZDNvSTMzeHd2ZnhOUmVQZDF0aE9mTGV0eVZrWkV5dk15?= =?utf-8?B?T3dBQk45OE9NRkhvZUxQVnc0S1p6alVHdVZOMVdmZ3pVZHVuWXhnU2JORCsw?= =?utf-8?B?b1VuKzZwV2YwZnBSZzBzK1FLdzZqTVhINzVqZGp0aWd5eElpVWt6UT09?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4065a55a-1c13-4de4-c334-08de8c087f18 X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2026 13:55:25.4898 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QL9j5cEs4ViaHU19XCp9NOP+G2g15Zkn3mv47XNM4i0sCf6NmZcq9JbeXqycDJ1bvht5ui5Jzw9SLpJV3mS0ZQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB5370 X-purgate-ID: tlsNG-4011c0/1774619728-BDE8D900-87EB11E9/0/0 X-purgate-type: clean X-purgate-size: 1803 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1774619758357158500 Read the existing PCI command register and only add the required bits to it, as to avoid clearing bits that might be possibly set by the firmware already, which might put the device into a non-working state. Fixes: f2ff5d6628b3 ("ns16550: enable PCI serial card usage") Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Jan Beulich --- Changes since v1: - Adjusted over previous fixes. --- xen/drivers/char/ns16550.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index d05dc506ed9c..d16e447c0e76 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -283,14 +283,19 @@ static int cf_check ns16550_getc(struct serial_port *= port, char *pc) static void pci_serial_early_init(struct ns16550 *uart) { #ifdef NS16550_PCI + uint16_t cmd; + if ( !uart->ps_bdf_enable ) return; =20 + cmd =3D pci_conf_read16(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], + uart->ps_bdf[2]), PCI_COMMAND); + if ( uart->io_base >=3D 0x10000 ) { pci_conf_write16(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], uart->ps_bdf[2]), - PCI_COMMAND, PCI_COMMAND_MEMORY); + PCI_COMMAND, cmd | PCI_COMMAND_MEMORY); return; } =20 @@ -307,7 +312,7 @@ static void pci_serial_early_init(struct ns16550 *uart) uart->io_base | PCI_BASE_ADDRESS_SPACE_IO); pci_conf_write16(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], uart->ps_bdf[2]), - PCI_COMMAND, PCI_COMMAND_IO); + PCI_COMMAND, cmd | PCI_COMMAND_IO); #endif } =20 --=20 2.51.0 From nobody Thu Apr 2 15:44:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1774619753; cv=pass; d=zohomail.com; s=zohoarc; b=eYMgN+pItiW0i0iw7PBZD8w2X8OA+XBJ15TlB03rb+ZioMrNe8JJi9eiStL+MllrHeypTCOcbcUwZjTCUPkUWC+3MUhSKP8K6/BqZ/MjH28b3Y36qKqsL6rOtr6PPBeyG/5FT5NmykZUR6mdMs2dPVO6xG6UnEqnGXoHmLh6UGc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774619753; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=X/hgFVUOUeEuadjSINl4NrZjcrgOSJUIv+5SLjSBL9c=; b=ZvEx1xOkAfJZ3peNDTSKLITtnLBlJ31srSpBr/VwpWXdM0RwgqzCHRzIsYt/YzFI6lSQ1BiBL/MgnDkEBFOejCOlpUsi+EyUBbfBgG6/CV1uUx7A9ahtrquRoMweaMU+JMtKuAS40acLO23gk07XbH4dQxCfYAiw1rj9aHFaLVM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1774619753023119.2745135483566; Fri, 27 Mar 2026 06:55:53 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1265694.1556516 (Exim 4.92) (envelope-from ) id 1w67eu-0005d1-Vo; Fri, 27 Mar 2026 13:55:32 +0000 Received: by outflank-mailman (output) from mailman id 1265694.1556516; Fri, 27 Mar 2026 13:55:32 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w67eu-0005cr-SC; Fri, 27 Mar 2026 13:55:32 +0000 Received: by outflank-mailman (input) for mailman id 1265694; Fri, 27 Mar 2026 13:55:32 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w67eu-0005bl-4n for xen-devel@lists.xenproject.org; Fri, 27 Mar 2026 13:55:32 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1w67et-008VBd-Gw for xen-devel@lists.xenproject.org; Fri, 27 Mar 2026 14:55:31 +0100 Received: from [10.42.69.3] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69c68c51-e002-0a2a0a5209dd-0a2a4503b4f6-6 for ; Fri, 27 Mar 2026 14:55:31 +0100 Received: from [40.93.196.8] (helo=SA9PR02CU001.outbound.protection.outlook.com) by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2) (envelope-from ) id 69c68c51-1947-0a2a45030019-285dc408d95a-3 for ; Fri, 27 Mar 2026 14:55:31 +0100 Received: from CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14) by DM6PR03MB5370.namprd03.prod.outlook.com (2603:10b6:5:249::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Fri, 27 Mar 2026 13:55:28 +0000 Received: from CH7PR03MB7860.namprd03.prod.outlook.com ([fe80::f5ba:35df:1c9f:b343]) by CH7PR03MB7860.namprd03.prod.outlook.com ([fe80::f5ba:35df:1c9f:b343%4]) with mapi id 15.20.9745.024; Fri, 27 Mar 2026 13:55:28 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=T3n4JlecW2F3zyvlT/XP74gJIAK8atAb0lHE9Y+gNVjX9sSyIjlGX0igSCvU4a92s1OmTFi6q9uA7xXrqjPzjPBdd30oU2boGi6rZU7rU1XaMjV3aI78En64UvWpZm63/6uBWFLYKFqFakiV4gBZEhGRqvjWjrBn1v1a7RD8/enGvAxOmA5aylGKik+LtZEK0Mirrx4FKQCJy0bQbmg2te2q7Wcha1DHjKgAWeUIKWYH2jdayaxgyipttcIm9OD0sTx9gc4q0hnP6w8muDFD1AWd165DU3I+q9xtlBzbnVhdF0etgKYhTHzizfKake6dUAto5lkmY/UKyq4dMKFNpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=X/hgFVUOUeEuadjSINl4NrZjcrgOSJUIv+5SLjSBL9c=; b=ezVvAKDYe9BJShI1yE3lnRVBvr+AIMLGjzbEEspbLbI/NyLVu+jHARH5ub6pV1hqTbdJX210nGyRvcicB3ZvDkHfNVyaBRdmGXZ099/Z++eNdE1bRt8Pl00uGUt5tb2U+t8BxyCx+KLkzcYkH/NwCQzeSpGlRuDrMGgEHYlgJSHt9VaiklJWFPgp93vLukUWmaHkJ3hFyJSMpe1RM3PXbMV1kvICd7MGJmi+oqVxIKqmXL8Sd2Gawjbg/qLTkS3c5XlhKL69PwmllK/uBzV2M89+j16tosUICHQqZL4ym7VB8ijYK8O/VW/UsaNR062l1csHipnkD8hgUh6pjOFLNA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=X/hgFVUOUeEuadjSINl4NrZjcrgOSJUIv+5SLjSBL9c=; b=SBD+BtjOBGOHAMSpx0MbGZUwS3RzEAy5K2OQh7ODqIuyUUy0AECF2ZneqXMO6BCLMY1G7n/kLlu8lzPE4YEVXZAqyYCp+20KfvZ9w6T4AkBiKjtitIKeYUAQcDnLPwcwkkAGlyOrQUcQ9RfweNKgfdhfEXFJ7C9dO4amWpXIx8I= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , Stefano Stabellini Subject: [PATCH v2 3/3] xen/uart: switch ns16550 to use pci_sbdf_t Date: Fri, 27 Mar 2026 14:54:20 +0100 Message-ID: <20260327135420.7246-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260327135420.7246-1-roger.pau@citrix.com> References: <20260327135420.7246-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0056.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:48::14) To CH7PR03MB7860.namprd03.prod.outlook.com (2603:10b6:610:24e::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH7PR03MB7860:EE_|DM6PR03MB5370:EE_ X-MS-Office365-Filtering-Correlation-Id: 869f2f13-ce33-46d1-ce29-08de8c0880cb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: 7Krex+70GzXMm1jfwAUdiiIyWYecHmYnbOI6sgYd7yayzmnSoFuV3H4EVi0AJDhspiVBkOQkk29/Ln1cLEmpJp8VHp6KgrKsKF8Bdm10IVJILOzGV6Uof+OT+Io0LYaRScXX0d2TsFulAhvjfB34LSnMSQR4wE79xOgAIjqmzm5UO8tJKS4M7d6y5Zmy7/GlYKtSgYKeQKbYdRj9eW9fXThxfOdWE1I16WOzlf/Vt64EtdPlh6NZMsN5Kuook/KePISXEnfmx5x4na+i1Hm1Ku5YYuG3bP7O/AaTskbhyNrO1hSNorz9fxDdFqjUU/tP1hd9XLP3ExRz1eKDyZCaDhWJamfllHd/sKEui2m8Xk9Nmk8WKbU2TSOpng/O8ww0W56ZRASMzds3Mo4/iYZHLb9vrWjYzRvVvNCG9gLD2HNp9PJLJZ9d3Qz8+dPAUxvp/0ps8dRsCWmqnjAOaOjSbF+szGZ4i9OeNqVSD9zdYoRBsmyB8jJr4Zy/dn2jdqxRD8zKpryJWcI2C9/hNi8F6yPIVQkn2Y3UW2sa42BfqVFRneCVUMYy1CLF/THz9F+jlcSkkuSfD65/cYucqpUHshLWsLj42T1PviLHFGyySVjplwL0c8MXnRNR8wabcmaWNl4AISZ849FQoFzrfwthllAKVrPcgrhXXJTF5b9+3+BXfzG8hSWdIEgNbVNw3JB0XCa8O+4FyboR69+C498sZZdOmzeiD0rm4Gjw+7So8D8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH7PR03MB7860.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cWVVK1ZkWndLYkhEQzc3b2Nac1ZvZVNrNmwrdWZqU3hjc3dsNDdvODIzOWJO?= =?utf-8?B?YTM3aFM4QzdJV2poWlV1SlRWdVJXZmp0Z0lkWGlIdkJFZ2x3eE5WUytXZlJ3?= =?utf-8?B?VVJpZ3UwbXJJNDIxTVprUGZuUlZ0OW50enc5ZExEYmRQcXhVL2wyZnEydVVJ?= =?utf-8?B?bWVONzdiSGpBdWRnVWhMQnphZ3JvQUw2MGNmemgzMFFXODlpazdsZXNxTUx1?= =?utf-8?B?TzlsaHEyR3dKcmxRQjBKVUJ4YW4xWmpyVkhtRVduc0hlVkxNRWFFbU9ueWNa?= =?utf-8?B?RThSUThxNy9jV1FBdGdXODIrTmtCVzhOQXRsUDVVS0ZvUStHRTNtZklLOC9v?= =?utf-8?B?MHA1YmdHTTFlUitLTERXc0NyMmtWVkdEczFHT2E0eUhLemZ1ZnlWeE1xMFBV?= =?utf-8?B?U0NKNUFwVzM3dkZoZDZSNUNpWDZVcWE0d1o1VU5zM0FaOWRBb3VETkY2SkpS?= =?utf-8?B?Q0MvN1A3eHhhSHNTTnUxMzV6MGtnMXErbGZtRFZyV2hqRDZCVVcrNFNDWVNJ?= =?utf-8?B?b2JMYnRDVGZlb2ZwNVNmYXhDbjFsV29mdVdnaXphb2k5d3F4a3JGL2tkdFRJ?= =?utf-8?B?a0xZV2dObysrY0tjaXdyK1Jjc20wQVphSGt0dVJJeUp4cVhnN0NCdjFtdmN0?= =?utf-8?B?ZVBKNHZJYUFqbE1aSUJZMWljUmR3QVBwbjBHKzlYYm9lV1RLR3V3RU1JZng4?= =?utf-8?B?UXZiZnJGTTNnT0pyaUpSYlFvUkU3SldINnlVUzNlNFVubUVndm42UGJsRUpJ?= =?utf-8?B?K2FMNlBrblZ4WmFaM1p4aHdCdEh2UXZiaDd1OElXOFM5bUNzSkxCVld0UWlD?= =?utf-8?B?SmdiOGNnMUtvQUhVRkprYXdFUzlSSWoxOFpOWE5iclpsRFhzRGRLaDlwVlZn?= =?utf-8?B?ODJVU1AyVytMMyswVVpubXFQd1cxaER2dTEzT2FwY3RzYjJpakxnanRCNm9p?= =?utf-8?B?akdEd1VYSnlQc2ZqdDgxMzRWaTJ6aldWTmR1clhwaWphVmJ4djBvRXBHSW1a?= =?utf-8?B?Qk53Uitob29kTHMrZndwQzZ2QXdFUkxCb2hNOHpYbEJHTk9QcCtKYllQV2N3?= =?utf-8?B?ZEJFK0lORG1TWUNmNHRtUmVteXV2M2N6RnUzekMxTm8rdzRvempaMzBtK0V6?= =?utf-8?B?TDhmaGJzYlVJL2Rtb1cvdzVudDV6alZ5bi9JWEdlS2pRWVRjVFVSM0Fmdm5u?= =?utf-8?B?L1krTmV5aHB6VGhoTXdnZExUeTVuYUVVUGczZWdyU0laUnRkUitRc0tCTTU0?= =?utf-8?B?VlNxcjhFb1kxLy9zRXcyRHEvbEpGSVYwZVdKQWdHM1pORldOOTdEaXhnM0RU?= =?utf-8?B?TWJXUnJ1K2lOWWxTVG1HYS8yY3VYbWt2TTF0dTZieWY4YURTTm1KUTBUSlk5?= =?utf-8?B?Mmk3MjF4TVNQS1hxeEZzMCtmaU93NzR3SUpvTSs2TGZ2NDVQcEZoS0orSnQy?= =?utf-8?B?aDYyci80bEFEMENRMG50ZXd0MnhUWVlhdlkrWEtvVGJMS2ovTWpOZGtzSmJj?= =?utf-8?B?M0VyNkh5b04rdkd3K3RHV2tMWjNVRzZ3OHdkWXJBTHpzZmtMS3ZwV1NvVyt2?= =?utf-8?B?RlpLaWI0UXIvRkFGQjloTU1zaVZqcTgvQzZZYXFNOEljb0gvWkNXbFlVMkpN?= =?utf-8?B?RDhuQmZDZWpOYm1DL0JrSkpyWFphYTl1WmoyUmJVVVRabDdPNGFpS0FVVkcv?= =?utf-8?B?cVZuZGdoZFYzUVBrZWFGdGRpNFV4ZmlqcnRoVXZKUzgrU1FZeTFnTmdlTWFJ?= =?utf-8?B?ZEd2Vk55b2NTQXZCb2dnMXNjQ1lyc1BVeTZhL1NuUXNvaVpJMThyY3BtMndY?= =?utf-8?B?VTNXNFBZbkx4RFdBVStMMTJvKzk1MVlHRFhHMDNaZUN2S083Z1YzL2RaRFJr?= =?utf-8?B?dW91YWhxRVF3cFZSTzJlOXdVU2ZCQ1B5QmsyMk9XbHVFcndjSlNtQjYvZHF4?= =?utf-8?B?UHFHZ29tN0JCRndlRXlSUzlVakpRN01MblYxNmUzVGdnSWhwRm5xZlJhOURx?= =?utf-8?B?dnJEMXVhcWpVakxublJoMWN4TmY3dkdqNklIZ1I4d1N3ZGtIbi9vcDBMNlpV?= =?utf-8?B?cHMvVmxJclZWektjb1QrSVh3RlN3dnRyT2FBZzNPaEFvYVFUS0xsQytHUUJH?= =?utf-8?B?SGRVSDl4aGI5Z1ZCb1lhOFJLZ1Vqd2dPTXQ4VEJOdnNpK3JoTEhUSTR0TmhU?= =?utf-8?B?UTkxeXZ6VUYyVllJK1dXWGRYcVN3dnd6WjNMN0lzRW9tSHpsVDVtNTBNcEtS?= =?utf-8?B?QnhQL1BwVFFnTFpaVWtNdXRBZU9ldTY2K0EvQ0xvUTZGdHJtR3dZaGptRWVw?= =?utf-8?B?Rk9GUDc2cGJhd3dWUDNhWWYyd0NGRWE4YllFR0VDYngvU1lBNUxzZz09?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 869f2f13-ce33-46d1-ce29-08de8c0880cb X-MS-Exchange-CrossTenant-AuthSource: CH7PR03MB7860.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2026 13:55:28.3085 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: MKobCBEQCTVNgKuKGkrgN7vZrsKAmqoARcAwDT74ch4fNTgP8FjvR8BFrtvMAJJOvYs1U1STkTk+fH4bsrOCUQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB5370 X-purgate-ID: tlsNG-33051d/1774619731-EB88A72C-36E9BB14/0/0 X-purgate-type: clean X-purgate-size: 13801 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1774619754658154100 No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Andrew Cooper --- Not committing this ahead of the bugfixes, as to make those easier to backport. --- xen/drivers/char/ns16550.c | 133 ++++++++++++++++--------------------- 1 file changed, 58 insertions(+), 75 deletions(-) diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index d16e447c0e76..0d780d82f918 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -67,8 +67,8 @@ static struct ns16550 { /* PCI card parameters. */ bool pb_bdf_enable; /* if =3D1, pb-bdf effective, port behind brid= ge */ bool ps_bdf_enable; /* if =3D1, ps_bdf effective, port on pci card= */ - unsigned int pb_bdf[3]; /* pci bridge BDF */ - unsigned int ps_bdf[3]; /* pci serial port BDF */ + pci_sbdf_t pci_bridge; + pci_sbdf_t pci_device; u32 bar; u32 bar64; u16 cr; @@ -288,31 +288,22 @@ static void pci_serial_early_init(struct ns16550 *uar= t) if ( !uart->ps_bdf_enable ) return; =20 - cmd =3D pci_conf_read16(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], - uart->ps_bdf[2]), PCI_COMMAND); + cmd =3D pci_conf_read16(uart->pci_device, PCI_COMMAND); =20 if ( uart->io_base >=3D 0x10000 ) { - pci_conf_write16(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], - uart->ps_bdf[2]), - PCI_COMMAND, cmd | PCI_COMMAND_MEMORY); + pci_conf_write16(uart->pci_device, PCI_COMMAND, cmd | PCI_COMMAND_= MEMORY); return; } =20 if ( uart->pb_bdf_enable ) - pci_conf_write16(PCI_SBDF(0, uart->pb_bdf[0], uart->pb_bdf[1], - uart->pb_bdf[2]), - PCI_IO_BASE, + pci_conf_write16(uart->pci_bridge, PCI_IO_BASE, (uart->io_base & 0xF000) | ((uart->io_base & 0xF000) >> 8)); =20 - pci_conf_write32(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], - uart->ps_bdf[2]), - PCI_BASE_ADDRESS_0, + pci_conf_write32(uart->pci_device, PCI_BASE_ADDRESS_0, uart->io_base | PCI_BASE_ADDRESS_SPACE_IO); - pci_conf_write16(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], - uart->ps_bdf[2]), - PCI_COMMAND, cmd | PCI_COMMAND_IO); + pci_conf_write16(uart->pci_device, PCI_COMMAND, cmd | PCI_COMMAND_IO); #endif } =20 @@ -452,17 +443,16 @@ static void __init cf_check ns16550_init_postirq(stru= ct serial_port *port) PFN_UP(uart->io_base + uart->io_size) - 1)= ) printk(XENLOG_INFO "Error while adding MMIO range of device to= mmio_ro_ranges\n"); =20 - if ( pci_ro_device(0, uart->ps_bdf[0], - PCI_DEVFN(uart->ps_bdf[1], uart->ps_bdf[2])) ) - printk(XENLOG_INFO "Could not mark config space of %02x:%02x.%= u read-only.\n", - uart->ps_bdf[0], uart->ps_bdf[1], - uart->ps_bdf[2]); + if ( pci_ro_device(uart->pci_device.seg, uart->pci_device.bus, + uart->pci_device.devfn) ) + printk(XENLOG_INFO + "Could not mark config space of %pp read-only.\n", + &uart->pci_device); =20 if ( uart->msi ) { struct msi_info msi =3D { - .sbdf =3D PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], - uart->ps_bdf[2]), + .sbdf =3D uart->pci_device, .irq =3D uart->irq, .entry_nr =3D 1 }; @@ -504,9 +494,8 @@ static void __init cf_check ns16550_init_postirq(struct= serial_port *port) } =20 if ( rc ) - printk(XENLOG_WARNING - "MSI setup failed (%d) for %02x:%02x.%o\n", - rc, uart->ps_bdf[0], uart->ps_bdf[1], uart->ps_bdf[= 2]); + printk(XENLOG_WARNING "MSI setup failed (%d) for %pp\n", + rc, &uart->pci_device); } } #endif @@ -533,8 +522,7 @@ static void cf_check ns16550_suspend(struct serial_port= *port) =20 #ifdef NS16550_PCI if ( uart->bar ) - uart->cr =3D pci_conf_read16(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_= bdf[1], - uart->ps_bdf[2]), PCI_COMMAND); + uart->cr =3D pci_conf_read16(uart->pci_device, PCI_COMMAND); #endif } =20 @@ -545,19 +533,15 @@ static void _ns16550_resume(struct serial_port *port) =20 if ( uart->bar ) { - pci_conf_write32(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], - uart->ps_bdf[2]), + pci_conf_write32(uart->pci_device, PCI_BASE_ADDRESS_0 + uart->bar_idx*4, uart->bar); =20 /* If 64 bit BAR, write higher 32 bits to BAR+4 */ if ( uart->bar & PCI_BASE_ADDRESS_MEM_TYPE_64 ) - pci_conf_write32(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], - uart->ps_bdf[2]), + pci_conf_write32(uart->pci_device, PCI_BASE_ADDRESS_0 + (uart->bar_idx+1)*4, uart->ba= r64); =20 - pci_conf_write16(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], - uart->ps_bdf[2]), - PCI_COMMAND, uart->cr); + pci_conf_write16(uart->pci_device, PCI_COMMAND, uart->cr); } #endif =20 @@ -1217,13 +1201,12 @@ pci_uart_config(struct ns16550 *uart, bool skip_amt= , unsigned int idx) uint32_t bar, bar_64 =3D 0, len, len_64; u64 size =3D 0; const struct ns16550_config_param *param =3D uart_param; + pci_sbdf_t sbdf =3D PCI_SBDF(0, b, d, f); =20 - nextf =3D (f || (pci_conf_read16(PCI_SBDF(0, b, d, f), - PCI_HEADER_TYPE) & + nextf =3D (f || (pci_conf_read16(sbdf, PCI_HEADER_TYPE) & 0x80)) ? f + 1 : 8; =20 - switch ( pci_conf_read16(PCI_SBDF(0, b, d, f), - PCI_CLASS_DEVICE) ) + switch ( pci_conf_read16(sbdf, PCI_CLASS_DEVICE) ) { case 0x0700: /* single port serial */ case 0x0702: /* multi port serial */ @@ -1240,10 +1223,8 @@ pci_uart_config(struct ns16550 *uart, bool skip_amt,= unsigned int idx) /* Check for params in uart_config lookup table */ for ( i =3D 0; i < ARRAY_SIZE(uart_config); i++ ) { - u16 vendor =3D pci_conf_read16(PCI_SBDF(0, b, d, f), - PCI_VENDOR_ID); - u16 device =3D pci_conf_read16(PCI_SBDF(0, b, d, f), - PCI_DEVICE_ID); + u16 vendor =3D pci_conf_read16(sbdf, PCI_VENDOR_ID); + u16 device =3D pci_conf_read16(sbdf, PCI_DEVICE_ID); =20 if ( uart_config[i].vendor_id =3D=3D vendor && uart_config[i].dev_id =3D=3D device ) @@ -1266,29 +1247,26 @@ pci_uart_config(struct ns16550 *uart, bool skip_amt= , unsigned int idx) } =20 uart->io_base =3D 0; - bar =3D pci_conf_read32(PCI_SBDF(0, b, d, f), - PCI_BASE_ADDRESS_0 + bar_idx * 4); + bar =3D pci_conf_read32(sbdf, PCI_BASE_ADDRESS_0 + bar_idx= * 4); =20 /* MMIO based */ if ( param->mmio && !(bar & PCI_BASE_ADDRESS_SPACE_IO) ) { - pci_conf_write32(PCI_SBDF(0, b, d, f), - PCI_BASE_ADDRESS_0 + bar_idx*4, ~0u); - len =3D pci_conf_read32(PCI_SBDF(0, b, d, f), + pci_conf_write32(sbdf, PCI_BASE_ADDRESS_0 + bar_idx*4,= ~0u); + len =3D pci_conf_read32(sbdf, PCI_BASE_ADDRESS_0 + bar_idx * 4= ); - pci_conf_write32(PCI_SBDF(0, b, d, f), - PCI_BASE_ADDRESS_0 + bar_idx*4, bar); + pci_conf_write32(sbdf, PCI_BASE_ADDRESS_0 + bar_idx*4,= bar); =20 /* Handle 64 bit BAR if found */ if ( bar & PCI_BASE_ADDRESS_MEM_TYPE_64 ) { - bar_64 =3D pci_conf_read32(PCI_SBDF(0, b, d, f), + bar_64 =3D pci_conf_read32(sbdf, PCI_BASE_ADDRESS_0 + (bar_idx + 1) *= 4); - pci_conf_write32(PCI_SBDF(0, b, d, f), + pci_conf_write32(sbdf, PCI_BASE_ADDRESS_0 + (bar_idx+1)*4, ~0= u); - len_64 =3D pci_conf_read32(PCI_SBDF(0, b, d, f), + len_64 =3D pci_conf_read32(sbdf, PCI_BASE_ADDRESS_0 + (bar_idx + 1) * 4= ); - pci_conf_write32(PCI_SBDF(0, b, d, f), + pci_conf_write32(sbdf, PCI_BASE_ADDRESS_0 + (bar_idx+1)*4, ba= r_64); size =3D ((u64)~0 << 32) | PCI_BASE_ADDRESS_MEM_M= ASK; size &=3D ((u64)len_64 << 32) | len; @@ -1302,12 +1280,9 @@ pci_uart_config(struct ns16550 *uart, bool skip_amt,= unsigned int idx) /* IO based */ else if ( !param->mmio && (bar & PCI_BASE_ADDRESS_SPACE_IO= ) ) { - pci_conf_write32(PCI_SBDF(0, b, d, f), - PCI_BASE_ADDRESS_0 + bar_idx*4, ~0u); - len =3D pci_conf_read32(PCI_SBDF(0, b, d, f), - PCI_BASE_ADDRESS_0); - pci_conf_write32(PCI_SBDF(0, b, d, f), - PCI_BASE_ADDRESS_0 + bar_idx*4, bar); + pci_conf_write32(sbdf, PCI_BASE_ADDRESS_0 + bar_idx*4,= ~0u); + len =3D pci_conf_read32(sbdf, PCI_BASE_ADDRESS_0); + pci_conf_write32(sbdf, PCI_BASE_ADDRESS_0 + bar_idx*4,= bar); size =3D len & PCI_BASE_ADDRESS_IO_MASK; =20 uart->io_base =3D bar & ~PCI_BASE_ADDRESS_SPACE_IO; @@ -1341,18 +1316,14 @@ pci_uart_config(struct ns16550 *uart, bool skip_amt= , unsigned int idx) uart->fifo_size =3D param->fifo_size; =20 uart->ps_bdf_enable =3D true; - uart->ps_bdf[0] =3D b; - uart->ps_bdf[1] =3D d; - uart->ps_bdf[2] =3D f; + uart->pci_device =3D sbdf; uart->bar_idx =3D bar_idx; uart->bar =3D bar; uart->bar64 =3D bar_64; uart->io_size =3D max(8U << param->reg_shift, param->uart_offset); - uart->irq =3D pci_conf_read8(PCI_SBDF(0, b, d, f), - PCI_INTERRUPT_PIN) ? - pci_conf_read8(PCI_SBDF(0, b, d, f), - PCI_INTERRUPT_LINE) : 0; + uart->irq =3D pci_conf_read8(sbdf, PCI_INTERRUPT_PIN) ? + pci_conf_read8(sbdf, PCI_INTERRUPT_LINE) : 0; =20 #ifdef CONFIG_X86 /* @@ -1591,18 +1562,22 @@ static bool __init parse_positional(struct ns16550 = *uart, char **str) #ifdef CONFIG_HAS_PCI if ( *conf =3D=3D ',' && *++conf !=3D ',' ) { - conf =3D parse_pci(conf, NULL, &uart->ps_bdf[0], - &uart->ps_bdf[1], &uart->ps_bdf[2]); + unsigned int b, d, f; + + conf =3D parse_pci(conf, NULL, &b, &d, &f); if ( !conf ) PARSE_ERR_RET("Bad port PCI coordinates"); + uart->pci_device =3D PCI_SBDF(0, b, d, f); uart->ps_bdf_enable =3D true; } =20 if ( *conf =3D=3D ',' && *++conf !=3D ',' ) { - if ( !parse_pci(conf, NULL, &uart->pb_bdf[0], - &uart->pb_bdf[1], &uart->pb_bdf[2]) ) + unsigned int b, d, f; + + if ( !parse_pci(conf, NULL, &b, &d, &f) ) PARSE_ERR_RET("Bad bridge PCI coordinates"); + uart->pci_bridge =3D PCI_SBDF(0, b, d, f); uart->pb_bdf_enable =3D true; } #endif @@ -1685,18 +1660,26 @@ static bool __init parse_namevalue_pairs(char *str,= struct ns16550 *uart) break; =20 case port_bdf: - if ( !parse_pci(param_value, NULL, &uart->ps_bdf[0], - &uart->ps_bdf[1], &uart->ps_bdf[2]) ) + { + unsigned int b, d, f; + + if ( !parse_pci(param_value, NULL, &b, &d, &f) ) PARSE_ERR_RET("Bad port PCI coordinates\n"); + uart->pci_device =3D PCI_SBDF(0, b, d, f); uart->ps_bdf_enable =3D true; break; + } =20 case bridge_bdf: - if ( !parse_pci(param_value, NULL, &uart->pb_bdf[0], - &uart->pb_bdf[1], &uart->pb_bdf[2]) ) + { + unsigned int b, d, f; + + if ( !parse_pci(param_value, NULL, &b, &d, &f) ) PARSE_ERR_RET("Bad bridge PCI coordinates\n"); + uart->pci_bridge =3D PCI_SBDF(0, b, d, f); uart->pb_bdf_enable =3D true; break; + } #endif =20 default: --=20 2.51.0