xen/arm: pci: Add stubs to allow selecting HAS_PCI

In a follow-up we will enable PCI support in Xen on Arm (i.e select
HAS_PCI).

The generic code expects the arch to implement a few functions:
arch_iommu_use_permitted()
arch_pci_clean_pirqs()

Note that this is not yet sufficient to enable HAS_PCI and will be
addressed in follow-ups.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
This commit is contained in:
Rahul Singh authored and Stefano Stabellini committed 2021-09-30 18:22:24 -07:00
1 parent a12ceae85b
commit a3a476fb74
5 files changed
+72 -3

No files matched your search

+1
View File
@@ -2,6 +2,7 @@ obj-$(CONFIG_ARM_32) += arm32/
obj-$(CONFIG_ARM_64) += arm64/
obj-$(CONFIG_ARM_64) += efi/
obj-$(CONFIG_ACPI) += acpi/
obj-$(CONFIG_HAS_PCI) += pci/
ifneq ($(CONFIG_NO_PLAT),y)
obj-y += platforms/
endif
+1
View File
@@ -0,0 +1 @@
obj-y += pci.o
+33
View File
@@ -0,0 +1,33 @@
/*
* 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, see <http://www.gnu.org/licenses/>.
*/
#include <xen/pci.h>
/*
* PIRQ event channels are not supported on Arm, so nothing to do.
*/
int arch_pci_clean_pirqs(struct domain *d)
{
return 0;
}
/*
* Local variables:
* mode: C
* c-file-style: "BSD"
* c-basic-offset: 4
* tab-width: 4
* indent-tabs-mode: nil
* End:
*/
+9
View File
@@ -135,3 +135,12 @@ void arch_iommu_domain_destroy(struct domain *d)
void __hwdom_init arch_iommu_hwdom_init(struct domain *d)
{
}
/*
* Unlike x86, Arm doesn't support mem-sharing, mem-paging and log-dirty (yet).
* So there is no restriction to use the IOMMU.
*/
bool arch_iommu_use_permitted(const struct domain *d)
{
return true;
}
+28 -3
View File
@@ -1,7 +1,32 @@
#ifndef __X86_PCI_H__
#define __X86_PCI_H__
/*
* 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, see <http://www.gnu.org/licenses/>.
*/
#ifndef __ARM_PCI_H__
#define __ARM_PCI_H__
#ifdef CONFIG_HAS_PCI
#define pci_to_dev(pcidev) (&(pcidev)->arch.dev)
/* Arch pci dev struct */
struct arch_pci_dev {
struct device dev;
};
#endif /* __X86_PCI_H__ */
#else /*!CONFIG_HAS_PCI*/
struct arch_pci_dev { };
#endif /*!CONFIG_HAS_PCI*/
#endif /* __ARM_PCI_H__ */
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.