From: Joerg Roedel <joerg.roedel@amd.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: tglx@linutronix.de, mingo@redhat.com,
linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
bhavna.sarathy@amd.com, Sebastian.Biemueller@amd.com,
robert.richter@amd.com, joro@8bytes.org
Subject: Re: [PATCH 03/34] AMD IOMMU: add defines and structures for ACPI scanning code
Date: Thu, 10 Jul 2008 14:17:52 +0200 [thread overview]
Message-ID: <20080710121752.GI14977@amd.com> (raw)
In-Reply-To: <20080709184141.4f81ae6d.akpm@linux-foundation.org>
On Wed, Jul 09, 2008 at 06:41:41PM -0700, Andrew Morton wrote:
> On Thu, 26 Jun 2008 21:27:39 +0200 Joerg Roedel <joerg.roedel@amd.com> wrote:
>
> > This patch adds the required data structures and constants required to parse
> > the ACPI table for the AMD IOMMU.
> >
> > Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
> > ---
> > arch/x86/kernel/amd_iommu_init.c | 101 ++++++++++++++++++++++++++++++++++++++
> > 1 files changed, 101 insertions(+), 0 deletions(-)
> > create mode 100644 arch/x86/kernel/amd_iommu_init.c
> >
> > diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
> > new file mode 100644
> > index 0000000..6fce5ab
> > --- /dev/null
> > +++ b/arch/x86/kernel/amd_iommu_init.c
> > @@ -0,0 +1,101 @@
> > +/*
> > + * Copyright (C) 2007-2008 Advanced Micro Devices, Inc.
> > + * Author: Joerg Roedel <joerg.roedel@amd.com>
> > + * Leo Duran <leo.duran@amd.com>
> > + *
> > + * This program is free software; you can redistribute it and/or modify it
> > + * under the terms of the GNU General Public License version 2 as published
> > + * by the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > + * GNU General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU General Public License
> > + * along with this program; if not, write to the Free Software
> > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> > + */
> > +
> > +#include <linux/pci.h>
> > +#include <linux/acpi.h>
> > +#include <linux/gfp.h>
> > +#include <linux/list.h>
> > +#include <asm/pci-direct.h>
> > +#include <asm/amd_iommu_types.h>
> > +#include <asm/gart.h>
> > +
> > +/*
> > + * definitions for the ACPI scanning code
> > + */
> > +#define UPDATE_LAST_BDF(x) do {\
> > + if ((x) > amd_iommu_last_bdf) \
> > + amd_iommu_last_bdf = (x); \
> > + } while (0);
>
> Does this need to exist?
>
> If so, it could and should be implemented as a C function, not as a macro.
Yes, this macro is usefull because it makes the code look cleaner. But I
will convert that into a function.
> > +#define DEVID(bus, devfn) (((bus) << 8) | (devfn))
>
> I suspect that a helper function for this already exists.
I have not found one. Macros exist for slot/function of PCI devices. But
nothing which also includes the bus.
> > +#define PCI_BUS(x) (((x) >> 8) & 0xff)
>
> And this. If it doesn't exist, probably it should?
Ok, I move that one to linux/pci.h.
>
> > +#define IVRS_HEADER_LENGTH 48
> > +#define TBL_SIZE(x) (1 << (PAGE_SHIFT + get_order(amd_iommu_last_bdf * (x))))
>
> Can be implemented in C.
Right. I will convert that into a function too.
>
> > +#define ACPI_IVHD_TYPE 0x10
> > +#define ACPI_IVMD_TYPE_ALL 0x20
> > +#define ACPI_IVMD_TYPE 0x21
> > +#define ACPI_IVMD_TYPE_RANGE 0x22
> > +
> > +#define IVHD_DEV_ALL 0x01
> > +#define IVHD_DEV_SELECT 0x02
> > +#define IVHD_DEV_SELECT_RANGE_START 0x03
> > +#define IVHD_DEV_RANGE_END 0x04
> > +#define IVHD_DEV_ALIAS 0x42
> > +#define IVHD_DEV_ALIAS_RANGE 0x43
> > +#define IVHD_DEV_EXT_SELECT 0x46
> > +#define IVHD_DEV_EXT_SELECT_RANGE 0x47
> > +
> > +#define IVHD_FLAG_HT_TUN_EN 0x00
> > +#define IVHD_FLAG_PASSPW_EN 0x01
> > +#define IVHD_FLAG_RESPASSPW_EN 0x02
> > +#define IVHD_FLAG_ISOC_EN 0x03
> > +
> > +#define IVMD_FLAG_EXCL_RANGE 0x08
> > +#define IVMD_FLAG_UNITY_MAP 0x01
> > +
> > +#define ACPI_DEVFLAG_INITPASS 0x01
> > +#define ACPI_DEVFLAG_EXTINT 0x02
> > +#define ACPI_DEVFLAG_NMI 0x04
> > +#define ACPI_DEVFLAG_SYSMGT1 0x10
> > +#define ACPI_DEVFLAG_SYSMGT2 0x20
> > +#define ACPI_DEVFLAG_LINT0 0x40
> > +#define ACPI_DEVFLAG_LINT1 0x80
> > +#define ACPI_DEVFLAG_ATSDIS 0x10000000
> > +
> > +struct ivhd_header {
> > + u8 type;
> > + u8 flags;
> > + u16 length;
> > + u16 devid;
> > + u16 cap_ptr;
> > + u64 mmio_phys;
> > + u16 pci_seg;
> > + u16 info;
> > + u32 reserved;
> > +} __attribute__((packed));
> > +
> > +struct ivhd_entry {
> > + u8 type;
> > + u16 devid;
> > + u8 flags;
> > + u32 ext;
> > +} __attribute__((packed));
> > +
> > +struct ivmd_header {
> > + u8 type;
> > + u8 flags;
> > + u16 length;
> > + u16 devid;
> > + u16 aux;
> > + u64 resv;
> > + u64 range_start;
> > + u64 range_length;
> > +} __attribute__((packed));
>
> I can make a guess as to why these are "packed", but a code comment would
> prevent guesswork.
I am currently preparing patches to add a lot of comments to the code. I
will also add a comment to these structures.
Joerg
--
| AMD Saxony Limited Liability Company & Co. KG
Operating | Wilschdorfer Landstr. 101, 01109 Dresden, Germany
System | Register Court Dresden: HRA 4896
Research | General Partner authorized to represent:
Center | AMD Saxony LLC (Wilmington, Delaware, US)
| General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy
next prev parent reply other threads:[~2008-07-10 12:18 UTC|newest]
Thread overview: 124+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-26 19:27 [PATCH 00/34] AMD IOMMU driver Joerg Roedel
2008-06-26 19:27 ` [PATCH 01/34] AMD IOMMU: add Kconfig entry Joerg Roedel
2008-06-27 14:25 ` Adrian Bunk
2008-06-27 14:47 ` Andi Kleen
2008-06-27 16:39 ` Muli Ben-Yehuda
2008-06-27 16:54 ` Joerg Roedel
2008-06-27 16:59 ` Muli Ben-Yehuda
2008-06-27 17:05 ` Joerg Roedel
2008-06-27 17:12 ` Muli Ben-Yehuda
2008-06-27 17:20 ` Joerg Roedel
2008-06-27 17:31 ` Muli Ben-Yehuda
2008-06-27 17:40 ` Joerg Roedel
2008-06-27 17:44 ` Muli Ben-Yehuda
2008-06-27 17:52 ` Joerg Roedel
2008-07-02 5:45 ` Amit Shah
2008-07-02 8:12 ` Alan Cox
2008-06-27 20:39 ` Duran, Leo
2008-06-27 22:29 ` Muli Ben-Yehuda
2008-06-27 22:47 ` Duran, Leo
2008-06-28 11:04 ` Joerg Roedel
2008-06-28 14:40 ` Duran, Leo
2008-06-28 16:27 ` Joerg Roedel
2008-06-28 14:58 ` Duran, Leo
2008-06-27 18:54 ` Andi Kleen
2008-06-28 10:52 ` Joerg Roedel
2008-06-27 16:40 ` Joerg Roedel
2008-07-08 12:45 ` Pavel Machek
2008-07-09 8:48 ` Ingo Molnar
2008-07-10 0:50 ` FUJITA Tomonori
2008-07-10 8:44 ` Ingo Molnar
2008-06-26 19:27 ` [PATCH 02/34] AMD IOMMU: add header file for driver data structures and defines Joerg Roedel
2008-06-29 15:07 ` FUJITA Tomonori
2008-06-29 15:14 ` Joerg Roedel
2008-06-29 23:11 ` FUJITA Tomonori
2008-06-30 12:22 ` Ingo Molnar
2008-07-10 1:38 ` Andrew Morton
2008-07-10 1:50 ` Arjan van de Ven
2008-07-10 2:36 ` Andrew Morton
2008-07-10 12:12 ` Joerg Roedel
2008-07-10 12:59 ` Andrew Morton
2008-06-26 19:27 ` [PATCH 03/34] AMD IOMMU: add defines and structures for ACPI scanning code Joerg Roedel
2008-07-10 1:41 ` Andrew Morton
2008-07-10 12:17 ` Joerg Roedel [this message]
2008-06-26 19:27 ` [PATCH 04/34] AMD IOMMU: add data structures to manage the IOMMUs in the system Joerg Roedel
2008-07-10 1:43 ` Andrew Morton
2008-07-10 12:25 ` Joerg Roedel
2008-06-26 19:27 ` [PATCH 05/34] AMD IOMMU: add functions to find last possible PCI device for IOMMU Joerg Roedel
2008-06-26 19:27 ` [PATCH 06/34] AMD IOMMU: add amd_iommu_init.c to Makefile Joerg Roedel
2008-06-26 19:27 ` [PATCH 07/34] AMD IOMMU: add functions for mapping/unmapping the MMIO space Joerg Roedel
2008-06-26 19:27 ` [PATCH 08/34] AMD IOMMU: add functions for programming IOMMU " Joerg Roedel
2008-06-26 19:27 ` [PATCH 09/34] AMD IOMMU: add command buffer (de-)allocation Joerg Roedel
2008-07-10 1:47 ` Andrew Morton
2008-06-26 19:27 ` [PATCH 10/34] AMD IOMMU: add device table initialization functions Joerg Roedel
2008-06-26 19:27 ` [PATCH 11/34] AMD IOMMU: add functions for IOMMU hardware initialization from ACPI Joerg Roedel
2008-07-10 1:49 ` Andrew Morton
2008-06-26 19:27 ` [PATCH 12/34] AMD IOMMU: add detect code for AMD IOMMU hardware Joerg Roedel
2008-07-10 1:51 ` Andrew Morton
2008-06-26 19:27 ` [PATCH 13/34] AMD IOMMU: add functions to parse IOMMU memory mapping requirements for devices Joerg Roedel
2008-07-10 1:51 ` Andrew Morton
2008-06-26 19:27 ` [PATCH 14/34] AMD IOMMU: clue initialization code together Joerg Roedel
2008-07-10 1:55 ` Andrew Morton
2008-07-10 12:37 ` Joerg Roedel
2008-07-10 13:03 ` Andrew Morton
2008-07-10 13:31 ` Joerg Roedel
2008-07-10 18:37 ` Joerg Roedel
2008-06-26 19:27 ` [PATCH 15/34] AMD IOMMU: add early detection code Joerg Roedel
2008-06-26 19:27 ` [PATCH 16/34] AMD IOMMU: add kernel command line parameters for AMD IOMMU Joerg Roedel
2008-07-10 1:56 ` Andrew Morton
2008-07-10 4:25 ` FUJITA Tomonori
2008-07-10 4:39 ` Andrew Morton
2008-07-10 6:26 ` Ingo Molnar
2008-07-10 20:42 ` Randy Dunlap
2008-07-14 23:56 ` FUJITA Tomonori
2008-07-10 7:04 ` Yinghai Lu
2008-07-10 12:41 ` Joerg Roedel
2008-06-26 19:27 ` [PATCH 17/34] AMD IOMMU: add generic defines and structures for mapping code Joerg Roedel
2008-07-10 2:01 ` Andrew Morton
2008-07-10 2:38 ` Andrew Morton
2008-07-10 4:25 ` FUJITA Tomonori
2008-07-10 12:44 ` Joerg Roedel
2008-06-26 19:27 ` [PATCH 18/34] AMD IOMMU: add amd_iommu.c to Makefile Joerg Roedel
2008-06-26 19:27 ` [PATCH 19/34] AMD IOMMU: add functions to send IOMMU commands Joerg Roedel
2008-07-10 2:04 ` Andrew Morton
2008-07-10 12:53 ` Joerg Roedel
2008-06-26 19:27 ` [PATCH 20/34] AMD IOMMU: add functions to initialize unity mappings Joerg Roedel
2008-06-26 19:27 ` [PATCH 21/34] AMD IOMMU: add address allocation and deallocation functions Joerg Roedel
2008-06-29 15:07 ` FUJITA Tomonori
2008-06-29 15:17 ` Joerg Roedel
2008-06-29 23:11 ` FUJITA Tomonori
2008-06-26 19:27 ` [PATCH 22/34] AMD IOMMU: add domain " Joerg Roedel
2008-07-10 2:14 ` Andrew Morton
2008-07-10 12:54 ` Joerg Roedel
2008-06-26 19:27 ` [PATCH 23/34] AMD IOMMU: add functions to find IOMMU device resources Joerg Roedel
2008-07-10 2:18 ` Andrew Morton
2008-07-10 16:46 ` Joerg Roedel
2008-07-10 23:59 ` Andrew Morton
2008-06-26 19:28 ` [PATCH 24/34] AMD IOMMU: add generic dma_ops mapping functions Joerg Roedel
2008-06-26 19:28 ` [PATCH 25/34] AMD IOMMU: add dma_ops mapping functions for single mappings Joerg Roedel
2008-07-10 2:26 ` Andrew Morton
2008-07-10 13:20 ` Joerg Roedel
2008-06-26 19:28 ` [PATCH 26/34] AMD IOMMU: add mapping functions for scatter gather lists Joerg Roedel
2008-06-29 15:07 ` FUJITA Tomonori
2008-06-30 13:25 ` Joerg Roedel
2008-06-26 19:28 ` [PATCH 27/34] AMD IOMMU: add mapping functions for coherent mappings Joerg Roedel
2008-06-26 19:28 ` [PATCH 28/34] AMD IOMMU: add pre-allocation of protection domains Joerg Roedel
2008-06-26 19:28 ` [PATCH 29/34] AMD IOMMU: add dma_ops initialization function Joerg Roedel
2008-06-26 19:28 ` [PATCH 30/34] AMD IOMMU: add amd_iommu.h to export functions to the generic x86 dma code Joerg Roedel
2008-06-26 19:28 ` [PATCH 31/34] AMD IOMMU: initialize dma_ops from IOMMU initialization and enable IOMMUs Joerg Roedel
2008-06-26 19:28 ` [PATCH 32/34] AMD_IOMMU: call detect and initialization functions from dma code Joerg Roedel
2008-06-26 19:28 ` [PATCH 33/34] AMD IOMMU: add MAINTAINERS entry Joerg Roedel
2008-06-26 19:28 ` [PATCH 34/34] AMD IOMMU: add documentation for kernel parameters Joerg Roedel
2008-06-29 15:07 ` FUJITA Tomonori
2008-06-30 12:25 ` Ingo Molnar
2008-06-26 20:37 ` [PATCH 00/34] AMD IOMMU driver Rafael J. Wysocki
2008-06-26 20:37 ` Joerg Roedel
2008-06-26 21:02 ` Rafael J. Wysocki
2008-06-27 8:18 ` Ingo Molnar
2008-06-27 10:07 ` Ingo Molnar
2008-06-27 10:15 ` Joerg Roedel
2008-06-27 10:59 ` Joerg Roedel
2008-07-11 10:22 ` Eric W. Biederman
2008-07-11 14:11 ` Joerg Roedel
2008-07-11 16:23 ` Duran, Leo
2008-07-11 17:20 ` Eric W. Biederman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080710121752.GI14977@amd.com \
--to=joerg.roedel@amd.com \
--cc=Sebastian.Biemueller@amd.com \
--cc=akpm@linux-foundation.org \
--cc=bhavna.sarathy@amd.com \
--cc=iommu@lists.linux-foundation.org \
--cc=joro@8bytes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=robert.richter@amd.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.