From nobody Mon Feb 9 14:17:10 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; 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; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1604419234; cv=none; d=zohomail.com; s=zohoarc; b=YnVNVqAGDxTBIWTFxC7qINqhYDp1vq8gPrCoOua2rZSHQHv0LZ34xd+7yxgJqsEPqCIL8X+p8a9K9I6JPJ/Y464tCQ3fKCC0C079jZire+ol7I6wNUI77+ErX/1ATXEC+VbF9E+8o8w9XOAbvgjS4VwgmvHeO0Pz6A4pU1NjRE4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1604419234; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=LnjVmfNJio/odAwuXIk9CBNNN6nrjIVTNnMH74rtBgw=; b=B5AJkw0ssapHK2eBorqsbdeeh3PxwLaejpqeT5DgpD5omNG0rxFPFSbHbtQwhNv4YHa1RYwq9A4wwKerwJYVzwSpVPXDGcy51SwYN8uB7qO6RXrc7/Sv3Jm3VG3/XNhHZQLjWUXLiUNAhBGGEvFi45fZxAldhr3du5/olx87qVc= ARC-Authentication-Results: i=1; mx.zohomail.com; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1604419233961819.5012739969733; Tue, 3 Nov 2020 08:00:33 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.18394.43416 (Exim 4.92) (envelope-from ) id 1kZyjF-0008I3-SJ; Tue, 03 Nov 2020 16:00:13 +0000 Received: by outflank-mailman (output) from mailman id 18394.43416; Tue, 03 Nov 2020 16:00:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kZyjF-0008Hv-On; Tue, 03 Nov 2020 16:00:13 +0000 Received: by outflank-mailman (input) for mailman id 18394; Tue, 03 Nov 2020 16:00:13 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kZyjF-0008Hp-9D for xen-devel@lists.xenproject.org; Tue, 03 Nov 2020 16:00:13 +0000 Received: from foss.arm.com (unknown [217.140.110.172]) by us1-rack-iad1.inumbo.com (Halon) with ESMTP id 507e93cd-939e-458d-936c-960503b38e8e; Tue, 03 Nov 2020 16:00:11 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 644061424; Tue, 3 Nov 2020 08:00:06 -0800 (PST) Received: from scm-wfh-server-rahsin01.stack04.eu02.mi.arm.com (unknown [10.58.246.76]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2CB253F66E; Tue, 3 Nov 2020 08:00:05 -0800 (PST) Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kZyjF-0008Hp-9D for xen-devel@lists.xenproject.org; Tue, 03 Nov 2020 16:00:13 +0000 Received: from foss.arm.com (unknown [217.140.110.172]) by us1-rack-iad1.inumbo.com (Halon) with ESMTP id 507e93cd-939e-458d-936c-960503b38e8e; Tue, 03 Nov 2020 16:00:11 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 644061424; Tue, 3 Nov 2020 08:00:06 -0800 (PST) Received: from scm-wfh-server-rahsin01.stack04.eu02.mi.arm.com (unknown [10.58.246.76]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2CB253F66E; Tue, 3 Nov 2020 08:00:05 -0800 (PST) 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" X-Inumbo-ID: 507e93cd-939e-458d-936c-960503b38e8e From: Rahul Singh To: xen-devel@lists.xenproject.org Cc: Bertrand.Marquis@arm.com, Andrew Cooper , George Dunlap , Ian Jackson , Jan Beulich , Julien Grall , Stefano Stabellini , Wei Liu Subject: [PATCH v2 1/4] xen/ns16550: solve compilation error on ARM with CONFIG_HAS_PCI enabled. Date: Tue, 3 Nov 2020 15:59:12 +0000 Message-Id: <2aa79510731918d78d515a1679cc141fcf16883e.1604417224.git.rahul.singh@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" ARM platforms do not have PCI support available. When CONFIG_HAS_PCI is enabled for ARM a compilation error is observed for ns16550 driver. Fixed compilation error after introducing new kconfig option CONFIG_HAS_NS16550_PCI to support ns16550 PCI for X86. For X86 platforms it is enabled by default. For ARM platforms it is disabled by default, once we have proper support for NS16550 PCI for ARM we can enable it. No functional change. Signed-off-by: Rahul Singh Reviewed-by: Bertrand Marquis --- Changes in v2: - Silently enable the HAS_NS16550_PCI for x86 by default.=20 --- xen/drivers/char/Kconfig | 7 +++++++ xen/drivers/char/ns16550.c | 32 ++++++++++++++++---------------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/xen/drivers/char/Kconfig b/xen/drivers/char/Kconfig index b572305657..12a53607d1 100644 --- a/xen/drivers/char/Kconfig +++ b/xen/drivers/char/Kconfig @@ -4,6 +4,13 @@ config HAS_NS16550 help This selects the 16550-series UART support. For most systems, say Y. =20 +config HAS_NS16550_PCI + def_bool y + depends on X86 && HAS_NS16550 && HAS_PCI + help + This selects the 16550-series UART PCI support.For most systems, + say Y. + config HAS_CADENCE_UART bool "Xilinx Cadence UART driver" default y diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index d8b52eb813..bd1c2af956 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -16,7 +16,7 @@ #include #include #include -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI #include #include #include @@ -54,7 +54,7 @@ enum serial_param_type { reg_shift, reg_width, stop_bits, -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI bridge_bdf, device, port_bdf, @@ -83,7 +83,7 @@ static struct ns16550 { unsigned int timeout_ms; bool_t intr_works; bool_t dw_usr_bsy; -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI /* PCI card parameters. */ bool_t pb_bdf_enable; /* if =3D1, pb-bdf effective, port behind brid= ge */ bool_t ps_bdf_enable; /* if =3D1, ps_bdf effective, port on pci card= */ @@ -117,14 +117,14 @@ static const struct serial_param_var __initconst sp_v= ars[] =3D { {"reg-shift", reg_shift}, {"reg-width", reg_width}, {"stop-bits", stop_bits}, -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI {"bridge", bridge_bdf}, {"dev", device}, {"port", port_bdf}, #endif }; =20 -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI struct ns16550_config { u16 vendor_id; u16 dev_id; @@ -620,7 +620,7 @@ static int ns16550_getc(struct serial_port *port, char = *pc) =20 static void pci_serial_early_init(struct ns16550 *uart) { -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI if ( !uart->ps_bdf_enable || uart->io_base >=3D 0x10000 ) return; =20 @@ -719,7 +719,7 @@ static void __init ns16550_init_preirq(struct serial_po= rt *port) =20 static void __init ns16550_init_irq(struct serial_port *port) { -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI struct ns16550 *uart =3D port->uart; =20 if ( uart->msi ) @@ -761,7 +761,7 @@ static void __init ns16550_init_postirq(struct serial_p= ort *port) uart->timeout_ms =3D max_t( unsigned int, 1, (bits * uart->fifo_size * 1000) / uart->baud); =20 -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI if ( uart->bar || uart->ps_bdf_enable ) { if ( uart->param && uart->param->mmio && @@ -841,7 +841,7 @@ static void ns16550_suspend(struct serial_port *port) =20 stop_timer(&uart->timer); =20 -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_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); @@ -850,7 +850,7 @@ static void ns16550_suspend(struct serial_port *port) =20 static void _ns16550_resume(struct serial_port *port) { -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI struct ns16550 *uart =3D port->uart; =20 if ( uart->bar ) @@ -1013,7 +1013,7 @@ static int __init check_existence(struct ns16550 *uar= t) return 1; /* Everything is MMIO */ #endif =20 -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI pci_serial_early_init(uart); #endif =20 @@ -1044,7 +1044,7 @@ static int __init check_existence(struct ns16550 *uar= t) return (status =3D=3D 0x90); } =20 -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI static int __init pci_uart_config(struct ns16550 *uart, bool_t skip_amt, unsigned int idx) { @@ -1305,7 +1305,7 @@ static bool __init parse_positional(struct ns16550 *u= art, char **str) =20 if ( *conf =3D=3D ',' && *++conf !=3D ',' ) { -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI if ( strncmp(conf, "pci", 3) =3D=3D 0 ) { if ( pci_uart_config(uart, 1/* skip AMT */, uart - ns16550_com= ) ) @@ -1327,7 +1327,7 @@ static bool __init parse_positional(struct ns16550 *u= art, char **str) =20 if ( *conf =3D=3D ',' && *++conf !=3D ',' ) { -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI if ( strncmp(conf, "msi", 3) =3D=3D 0 ) { conf +=3D 3; @@ -1339,7 +1339,7 @@ static bool __init parse_positional(struct ns16550 *u= art, char **str) uart->irq =3D simple_strtol(conf, &conf, 10); } =20 -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI if ( *conf =3D=3D ',' && *++conf !=3D ',' ) { conf =3D parse_pci(conf, NULL, &uart->ps_bdf[0], @@ -1419,7 +1419,7 @@ static bool __init parse_namevalue_pairs(char *str, s= truct ns16550 *uart) uart->reg_width =3D simple_strtoul(param_value, NULL, 0); break; =20 -#ifdef CONFIG_HAS_PCI +#ifdef CONFIG_HAS_NS16550_PCI case bridge_bdf: if ( !parse_pci(param_value, NULL, &uart->ps_bdf[0], &uart->ps_bdf[1], &uart->ps_bdf[2]) ) --=20 2.17.1