Re: [PATCH] s390: Add support for z13

William Cohen <[email protected]>
Newsgroups gmane.linux.oprofile,gmane.linux.kernel.perf.user
Message-ID <[email protected]>
On 10/13/2016 08:42 AM, Michael Petlan wrote:
> On Wed, 12 Oct 2016, William Cohen wrote:
>> On 10/12/2016 10:01 AM, Michael Petlan wrote:
>>> On Wed, 5 Oct 2016, Andreas Arnez wrote:
>>>>
>>>> IIRC, I just performed a quick smoke test before submitting this patch;
>>>> and oprofile didn't crash.  Other than that, I don't really know what
>>>> works and what doesn't.
>>>>
>>
>> Hi Andreas and Andreas,
>>
>> Is there support for IBM z13 perf counters in the upstream linux kernel?  I didn't see perf support for IBM z13 in the mainline kernel git repository.
>>
>> There is a difference between the kernel and oprofile is the s390 identification.  The kernel is using hex numbers such as 0x2817 and 0x2818 for Z196 identification (http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/s390/kernel/perf_cpum_cf_events.c#n303), but oprofile is reading the numbers as decimal for idenfication (https://sourceforge.net/p/oprofile/oprofile/ci/master/tree/libop/op_cpu_type.c).  oprofile should also be using hex numbers like the kernel.
> 
> I have looked at this and although it is not ideal, it works OK in OProfile,
> since it reads the numbers from string, thus it works with decimals.
> 
> I have also checked that zEC12 detection works correctly with 1.1.
> 
> Michael

Yes, the s390 processor detection in oprofile is not ideal with the kernel outputting the id in hex and the oprofile reading it in as a decimal.  Good thing that none of the s390 id values have a-f in the digits.  Attached is a patch that reads in the values as hex to better line up with the kernel's handling of the s390 identification.  Could one of the IBM people try this patch?

-Will

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot

_______________________________________________
oprofile-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oprofile-list
oprofile-s390-hexid.patch (text/x-patch, 688 B)
diff --git a/libop/op_cpu_type.c b/libop/op_cpu_type.c
index e70e4f6..ea5ff76 100644
--- a/libop/op_cpu_type.c
+++ b/libop/op_cpu_type.c
@@ -668,20 +668,19 @@ static op_cpu _get_s390_cpu_type(void)
 		return CPU_NO_GOOD;
 
 	ptr += sizeof(prefix) - 1;
-	if (sscanf(ptr, "%u", &model) != 1)
-		return CPU_NO_GOOD;
+	model = strtol(ptr, NULL, 16);
 
 	switch (model) {
-	case 2097:
-	case 2098:
+	case 0x2097:
+	case 0x2098:
 		return CPU_S390_Z10;
-	case 2817:
-	case 2818:
+	case 0x2817:
+	case 0x2818:
 		return CPU_S390_Z196;
-	case 2827:
-	case 2828:
+	case 0x2827:
+	case 0x2828:
 		return CPU_S390_ZEC12;
-	case 2964:
+	case 0x2964:
 		return CPU_S390_Z13;
 	}
 	return CPU_NO_GOOD;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.