From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D6793C36002 for ; Wed, 9 Apr 2025 15:16:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To: Content-Transfer-Encoding:Content-Type:References:Message-ID:Subject:Cc:To: From:Date:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=QaLKYIZMouB34T+j0qX9MO9Q4afENyDvqNyR6aEnUmQ=; b=HLpFMy8pRIo4+IQwyXQ7YX32At +qAQ0MfWCVraf2vM8lilxGPRUeYN7TIuECn/4+DEbcQC/SlVyPiWVcwrjKnWQEaJnZrPvwRKbaavm 8dyBUoqG86bKGsk4UNEQ1iTOc25S7qa9IDpszrXVGtgDr0NKpGDfOJUQLvyjL6Iha4wXwarmls1hF 3VP+rkZwd+eJpuzu2tg3a7ozDBCJ+ipXWjnEKFqMUcJ1x6JIj1UW13inN+HF8V6pvsBillfym3kO6 hRphH7cCd01DXOTxTXHVgFtnBuWyIfvW+omYwAfhxsXbKAXieZ6urvmTXZ+WBZaWTUf96kTnFJp+i ZxHVkcZQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2XAE-00000007doy-39Kc; Wed, 09 Apr 2025 15:16:30 +0000 Received: from mail-dbaeur03on20628.outbound.protection.outlook.com ([2a01:111:f403:260d::628] helo=EUR03-DBA-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2Wtp-00000007Zya-0PO5 for linux-arm-kernel@lists.infradead.org; Wed, 09 Apr 2025 14:59:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=thr8cnXaN0DVwL+oA26S6s32Rfs4UYM0hOqcWl7AoYySkE7+3ORxy6fIZoF8bjoJ+3cO2WK6U2ugQ1IIE2yBAtx58SKRUSrr/ocVSGs1Gq5qrIl9y8HEB9okeZ4tB5SY4QFLtOedSDJ7NVMiIq+PbjP5ssG1ps5bd6tbX9ZoquIt7LlVCpvK2mifWCmeHmtW6mmUjdFS4pESBfnvaDSC7rjiGjU1XgslsEgItU3nuA0RgD2olDwzyBG00v2Z4718/E+mxAZ24JIlgD4vYlLI2Z9Sd+b6Eqq21OA9MShpPiZtr9N8eWmz7UepoGc+32dW3hLX8RpJ9nKdgt1vTVLyYg== 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=9FOezy0KM0dIzFtWpwdm/GztjcmBOZa4VphcnTA9uM8=; b=TmjmSTkHJKxGpOA/EvdmUsCNCobVEmXHaOs7n8ivzIyJx7QusQAuU5P6QWtAFthmH4u9wqrigbjmlpN7LbdMZy/StF276GxdhVMsehtRWpEpSOfPEAHDoTlL1JGAyZeKhRzN7jIpKMbZCr0vS6KOjx+m3n3JeGkYQLAFFE5q+Yk6VYcW7pN2XsV6piddFYMz+zi26HIniz/JdIQLe55LqmBdBgOLa/WesWF5OhgymbkhDafHCwTzrDpWtih1Kx0pFsUPMJRW7ckIja/6FSPvj8qr9Bh225THG4HelsRhp7R/PGszfxk7hiQ5RIqy3aPbnRRXNRVNdMauvZK7JAdlXA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9FOezy0KM0dIzFtWpwdm/GztjcmBOZa4VphcnTA9uM8=; b=BKkgyq9hzgvTHSbZCEVDNx00Ey/O9jAjv+G9qhY1YxnP9tTimBmIDYrpKvdjDKcd0ew26K6MYxzJCrGLeSNgcjlnPSew+7qVd1y6ufAqc+YKOQOoClSDlOuqd4ujPFQ60OlzCvdUKaXShfmAypsGq0bFd9UpNoZA581y8MEo3JUqb37ldBSjLjcQVyq0Dh9eDkHD33jfa+SU2/zA61LTtw5eCH+I31bazyScrceAqy3GPSb4AwrqJUi0kKUbyAfq7f2uNUCfVQzfkBiZKHgZmUpckybRWh0Uq5Gqq260+VYlgI66iBXYnw70LXRPlAbCChgH9Y9abUZLvbu92Zv//A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by AS8PR04MB9078.eurprd04.prod.outlook.com (2603:10a6:20b:445::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.33; Wed, 9 Apr 2025 14:59:29 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%2]) with mapi id 15.20.8606.029; Wed, 9 Apr 2025 14:59:29 +0000 Date: Wed, 9 Apr 2025 10:59:21 -0400 From: Frank Li To: Alexander Stein Cc: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , "open list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" , "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" , open list , hongxing.zhu@nxp.com Subject: Re: [PATCH 4/5] arm64: dts: imx95: add PCIe's msi-map and iommu-map property Message-ID: References: <20250128211559.1582598-1-Frank.Li@nxp.com> <10643619.nUPlyArG6x@steina-w> Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <10643619.nUPlyArG6x@steina-w> X-ClientProxiedBy: SJ0PR13CA0154.namprd13.prod.outlook.com (2603:10b6:a03:2c7::9) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|AS8PR04MB9078:EE_ X-MS-Office365-Filtering-Correlation-Id: 13719fe6-364b-4752-132f-08dd777720d7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|52116014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?iso-8859-1?Q?8WX85M2h3peSmwUoCcFFeN1tfA4OB95wtfcahTSjrwMNB/Sz4Ba9cj/t4O?= =?iso-8859-1?Q?sZoKopDiMnSal0wYWMRe8HdPAz7q98b6eOzhLFKU5kgN0Hj3AYHVvZh6ug?= =?iso-8859-1?Q?i/vdZWCcJI58vNA1mVLADDKSLNlDnAAMlgjxz9ipU+bx5Pk+ClA9NU0bW4?= =?iso-8859-1?Q?Yp2uTl3RhAYvYyRGdQBFeQOdIp+gRguEWm1+WRDKEm4jNDXMNcXAXCHOMK?= =?iso-8859-1?Q?H9iDg4aUhIqsHmgXtty50g5Ec+1EkoeP37pcJbtVNPZgS9b9/CznGl45ul?= =?iso-8859-1?Q?f/IgUSJWDhFq0y+VdCaykI3ZbNn0CUpNyxz5ZnuMaqYCHVEa7NOBQq+J9j?= =?iso-8859-1?Q?Y7/piUpRk6xs1nP1cXlSoyWaJH2jtEcsqf62NKMmMS+mN9zIyChmf4cQZe?= =?iso-8859-1?Q?FB2M6FqKYdX/NfPugNXHKy2x6l2M6oo/2Z/gAqyeeY9LKMiZTkhfd8C5m9?= =?iso-8859-1?Q?XTUn0j9pZoDCxmabZf5w3H4VMvnOOMrofSZ3/ch4IbeO9wUuQCY1L7oxxe?= =?iso-8859-1?Q?tLLQ8Vih5XJJ6sfb7bZETSbRW3DyrnvQq13cB2UfS9tRf/0+DGbwxlQXCP?= =?iso-8859-1?Q?ck3Rb7yhBn+/6eaYW660LfAlGuAjJEEB3SmLSnh6g7kAKuRg44UdPGtMxn?= =?iso-8859-1?Q?1aQ7RzwNWTpp/HRC3rsmN/JvNxf7V4M3rTBSvhilbqzhdpmIf2mahjy/wP?= =?iso-8859-1?Q?NbaTV9dCyle1NPJNhqfyamnUOV+GyN0GKBn9j/17rsym3K6UU5tznaReEW?= =?iso-8859-1?Q?UGhuaA+UpPiZneI52Jy3DL9LHldV0B64UXVVFTWXQujQeuYf1diQUxI63n?= =?iso-8859-1?Q?NxstJV0uuOOkTqnS3gpMmtbuddg5oyyQiZJcebLGkdbytpkNf6mGDpiqlT?= =?iso-8859-1?Q?Pr7A+Mp1RX469VcUj2SyfsN4ke9nFFOQP0nIMXnJAWyeKeShlU9mDAKBM5?= =?iso-8859-1?Q?nO44MJ+rL5mfLnTmDmwOkzAnFz1nTR8V028NvXVSvfSkxkFQ7uMzjtertQ?= =?iso-8859-1?Q?eGxKBowFwOoPs0+8sNWuR4pvdCleLSaTpwhb6AkSF2aB7LnFFK6XCqECeK?= =?iso-8859-1?Q?Kjd/KSaB2BZ7aTTy3kAxC/moHrLHH6sppRADuM/MKeL+rEN91f5m4kPwKT?= =?iso-8859-1?Q?yoRggRFbxLs7SrSgBkViBeGVCz+4y0t+Zpho8W7Lz1b+at6NqnFAIz7bpK?= =?iso-8859-1?Q?xbwRyeT/1ps1jkG+Yw9Ye3izoaDXCOcE4WeL8v2nJ/RFfCBmY8/JFUJNPf?= =?iso-8859-1?Q?sKRd1WduF766JdSC9aT0f7kaCLUHMKVxVP66OhgD4IK2qM6tK2rOnHqODr?= =?iso-8859-1?Q?zyCcM/77883zxPUuOqpeSfdaTYdRcReiIfzezgjDSxxYGGjzrywu5yj8TE?= =?iso-8859-1?Q?gFAlsn2WyBQB90T7VF4uAVtHWpPCtT9d9P2UK/NI7RVeQQNUglrYEln3FU?= =?iso-8859-1?Q?ZIcuHFn54rNB9RlbiDncksyv48cvYPmw8WEFCxAHlSy7CU38VHcQp6KKVO?= =?iso-8859-1?Q?A=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB9642.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(52116014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?iso-8859-1?Q?4CBFtN4ksUH2BzqKAIs3VXBNp7IV8ynMuhN2ekatk4OFTS1+Hiub8G1pfE?= =?iso-8859-1?Q?mVUcJBlBEQ9FvAt/lcKgH8AzLiuLKwtn4eRbHZeOJnCSHCPpzU2aaXuJUV?= =?iso-8859-1?Q?MFRhgqBoAp2SQ7Eniy+wdUvOIFE8vHTRJFfZdhfvRcE9G69wG+52nbgg5C?= =?iso-8859-1?Q?QUA0pEMCDPBQKDbzkt4+NQp7jbjUlupQUNPTQzgdmhOHDdOj2D3kd9MwJc?= =?iso-8859-1?Q?Bvf9gh6f4Y3ZL8acenE617dqhu9tpZcM8bmCVSWirQBLzx9W3bIlmHWpu1?= =?iso-8859-1?Q?9Y2stpFMOtL7iivHuULHkOtCnpUaKMLoN0thjzEaTvE67OvdRbPq6foZAz?= =?iso-8859-1?Q?wCVYPLsV22OIXkFd3vybvdzOIw4ScSLQe3bfDH46anvhG/Fo6vHWJdIAQE?= =?iso-8859-1?Q?uEtkhzl9CwdUZWe5ufl2A9U2nX2q3eOHjwySU026dYkay6vmK7Cyw4M+ZR?= =?iso-8859-1?Q?X1IpqKk+1wnbquuMXoPx+eaAKEPkk6AufMn1y+3qzNBY2PoxaWkQfE2sZ2?= =?iso-8859-1?Q?hpbPtt+VMJxnHag0j4X2wdxI15qtw6DQssNGe5FIN4Uob+fCeUvlrP8cdJ?= =?iso-8859-1?Q?TqyXr9IefZ5uAk84QHbfE0OjMA/s45+77Q2Tj+D0stJyc1sF0krTD6apCt?= =?iso-8859-1?Q?PlFnze8kQKzB4d50BoLs1rtxpuX8MQLwEeF16r2ypFKOUQiFzumFw/cm07?= =?iso-8859-1?Q?6TNXidhVnxF3UjMYH+0GrNnxtSlaKlMdnddCQEXJXiw8hDfn6JlRdrkdv/?= =?iso-8859-1?Q?ngAxZm8TRKa6pxiXwaiGFYKwsVVC9WKt+9Y/w9iQC4sogT6LrmlXPu+dlI?= =?iso-8859-1?Q?h4IWD6pG4XdcTngCAh8+OXuY+k4x0kqGayESW5gvh0eNTFHoE9rzysBZV8?= =?iso-8859-1?Q?V0ns6Bon3nxxy3f2/iz7lcr724yM/SDucJDHsds4g2vWRDpvLroUrXRN3Y?= =?iso-8859-1?Q?p7I+5zG4E6oR3sOD+wNyBP6dbLyjCw95fywNg1wnhzmsjtTwbu4BCOOlVo?= =?iso-8859-1?Q?gJNRNS/+D34Uj1s2bhzaCK5Vpf4m4Y1z2QTMmlXgvT3OgfNURKtEhvur7G?= =?iso-8859-1?Q?taxBxpRNf6Oj0FV76aUOly6nosSPR25wj/0rrSPtPcv7Rb8PnmsZZ0RK31?= =?iso-8859-1?Q?kLIxFICKMsgT+rykQ9wrnZ2BHzoG5BA8uoZ1xZHQbNT66xRd0GJ9ZkcT+o?= =?iso-8859-1?Q?4PBtc2au7vuq/McQP2bKLq+l/LGco8W07AzjJJH2X/a7aO7DUJqyJ9U621?= =?iso-8859-1?Q?71503Lmpu85KVuDKF3hrMW+a6pin2fB+qn6OxGX94SZZhoAdhakbQIvBn1?= =?iso-8859-1?Q?BdmoEPV5BGUuEfoQCiuPkse8TjJMTJjTq5y+A+EshTPFgnIjE8ubqe2h4I?= =?iso-8859-1?Q?0R3c0UxAnEmXZGsJgA94IrUUDlBJyJ7ed5OVtglRZqds2gY4vovrq9PmHc?= =?iso-8859-1?Q?COLE3hUcAZs+gYmUVjHdr+qwoahdh/nAuyFHMYXdOJIrKauaABxeKmwgjD?= =?iso-8859-1?Q?b7SzZWUHDwtFfq19Bgn/OJBh0ho/A2t3v6UY3+2OyjL5j0InLiJdagn2dC?= =?iso-8859-1?Q?3SaEn9SQs6JKGl/OVpmm5P4PqMBqD3nS41AcubH3ylkHXGPL2LbFBB8NNh?= =?iso-8859-1?Q?FiRocnnSUaVu/ZcSLqtvUXKX4oEB7oSDfq?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 13719fe6-364b-4752-132f-08dd777720d7 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 14:59:29.4600 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: X+80koEK+UpJPC+BD0sjIhdbNFGA9opWD1Nni0WE970R5gW+jZklLk9fNL7CziHwYKyOdbIdOCgQlJ971HY5dQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB9078 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250409_075933_135739_2C103DCA X-CRM114-Status: GOOD ( 23.28 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Wed, Apr 09, 2025 at 12:14:48PM +0200, Alexander Stein wrote: > Hi Frank, > > Am Donnerstag, 27. März 2025, 19:48:33 CEST schrieb Frank Li: > > [snip] > > Finially we get realtek PCI card > > > > it quite complex, there are one PCIe switch to split it to two pci bus. > > > > lspci -t > > -[0000:00]---00.0-[01-ff]----00.0-[02-04]--+-03.0-[03]----00.0 > > \-07.0-[04]----00.0 > > Interesting. Mine looks slightly different: > > $ lspci -t > -[0000:00]---00.0-[01-ff]----00.0-[02-04]--+-01.0-[03]----00.0 > \-02.0-[04]----00.0 > > > > > > > 0000:00:00.0 PCI bridge: Philips Semiconductors Device 0000 > > 0000:01:00.0 PCI bridge: ASMedia Technology Inc. ASM1182e 2-Port PCIe x1 Gen2 Packet Switch > > 0000:02:03.0 PCI bridge: ASMedia Technology Inc. ASM1182e 2-Port PCIe x1 Gen2 Packet Switch > > 0000:02:07.0 PCI bridge: ASMedia Technology Inc. ASM1182e 2-Port PCIe x1 Gen2 Packet Switch > > It seems you have a newer hardware revision. I have > 0000:01:00.0 PCI bridge: Pericom Semiconductor Device a303 (rev 03) > 0000:02:01.0 PCI bridge: Pericom Semiconductor Device a303 (rev 03) > 0000:02:02.0 PCI bridge: Pericom Semiconductor Device a303 (rev 03) > > PCIe bridges. > > > 0000:03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller (rev 09) > > 0000:04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller (rev 09) > > > > It need below change > > > > diff --git a/arch/arm64/boot/dts/freescale/imx95.dtsi b/arch/arm64/boot/dts/freescale/imx95.dtsi > > index 9bb26b466a061..9dbf395b9a67b 100644 > > --- a/arch/arm64/boot/dts/freescale/imx95.dtsi > > +++ b/arch/arm64/boot/dts/freescale/imx95.dtsi > > @@ -1660,10 +1660,18 @@ pcie0: pcie@4c300000 { > > power-domains = <&scmi_devpd IMX95_PD_HSIO_TOP>; > > /* pcie0's Devid(BIT[7:6]) is 0x00, stream id(BIT[5:0]) is 0x10~0x17 */ > > msi-map = <0x0 &its 0x10 0x1>, > > - <0x100 &its 0x11 0x7>; > > + <0x100 &its 0x11 0x1>, > > + <0x218 &its 0x12 0x1>, > > + <0x238 &its 0x13 0x1>, > > + <0x300 &its 0x14 0x1>, > > + <0x400 &its 0x15 0x1>; > > iommu-map = <0x000 &smmu 0x10 0x1>, > > - <0x100 &smmu 0x11 0x7>; > > - iommu-map-mask = <0x1ff>; > > + <0x100 &smmu 0x11 0x1>, > > + <0x218 &smmu 0x12 0x1>, > > + <0x238 &smmu 0x13 0x1>, > > + <0x300 &smmu 0x14 0x1>, > > + <0x400 &smmu 0x15 0x1>; > > + //iommu-map-mask = <0x1ff>; > > fsl,max-link-speed = <3>; > > status = "disabled"; > > > > > > Only 8 stream id assign to PCIe0 device, it is hard to dynamaic alloce one, > > or need extra works > > Uh, this looks awefully complicated. Even worse this doesn't work on > my hardware. I need mappings for IDs 0x208 and 0x210, so I replaced 0x218 > and 0x238 from your diff into my numbers. > > So I take that PCIe bridges are not supported properly. What would be > necessary to support this? I remember bridge use msi to do port power managements. ITS msi-map can distribute difference irq to difference cores beside iommu address protection. It is quite userful for nvme or network devices, which have multi queues. Of course, we need more elegant solution. My card use difference pcie switch chip. But suppose it should work after you update RID information. which kernel version do you base on? Frank > > Best regards, > Alexander > -- > TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany > Amtsgericht München, HRB 105018 > Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider > http://www.tq-group.com/ > >