[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Xen-devel] Re: [PATCH][VTD] pci mmcfg patch for x86-64 - version 3

>>--- a/xen/arch/x86/Makefile   Tue Dec 09 16:28:02 2008 +0000
>>+++ b/xen/arch/x86/Makefile   Tue Dec 09 06:23:29 2008 -0800
>>@@ -54,6 +54,9 @@ obj-y += crash.o
>> obj-y += crash.o
>> obj-y += tboot.o
>> obj-y += hpet.o
>>+obj-y += mmconfig-shared.o
>>+obj-$(CONFIG_X86_64) += mmconfig_64.o
>>+obj-$(CONFIG_X86_32) += mmconfig_32.o
>These should now really go into xen/arch/x86/x86_{32,64}/ rather than
>adding _{32,64} suffixes.

I was trying to maintain the same names as Linux for ease of reference.  You 
are right, it would be more appropriate to follow Xen directory structure here. 
 I also tried to maintain file format of mmconfig_x?? to conform to Linux as 
they are pretty much straight copies of Linux files.  Sounds like these file 
should also be converted to Xen indentation here.

>>+int pci_mmcfg_read(unsigned int seg, unsigned int bus,
>>+                       unsigned int devfn, int reg, int len, 
>u32 *value)
>>+     *value = -1;
>>+     return 0;
>Shouldn't you return -EINVAL (or -ENOSYS, but an error in any 
>case) here?

Yes it should return -EINVAL as in the original Linux code.  The change to 0 
was unintentional.

>And one thing I didn't notice before:
>>+/* used by mmcfg */
>>+static inline unsigned char mmio_config_readb(void __iomem *pos)
>This is preceded by a rather important comment regarding AMD Fam10
>CPUs in Linux. Without that comment, no-one will easily understand why
>you must use eax/ax/al here. I'm also surprised you didn't copy over
>pci_mmcfg_amd_fam10h() from Linux...

OK, I will add the comments back in.  Where is pci_mmcfg_amd_family10h() 
defined?  I'm having trouble finding it.

>Oh, and one more thing I remembered just now: Linux verifies the mmcfg
>values it gets from ACPI against the E820 map - shouldn't Xen 
>do this too?

My original intent was to keep mmconfig-shared.c and mmconfig_64.c as closely 
to Linux as possible.  However, I soon found out including everything in 
mmconfig-shared.c involved pulling in a lot of code from Linux.

As my main goal of this round is enabling ATS, I tried to limited the scope of 
mmconfig work to be somewhat manageable for now and then add more stuff to it 
as needed.  As I'm planning to work on multi-segment PCI support in Q1, this 
stuff will get revisited again.

Other than E820 checking, do you see anything else in mmconfig-shared.c need to 
be included for this round?

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.