Driver message cleanups
Joerg Roedel
maintainercover Driver message cleanups
Hi,
here are a couple of patches to clean up the message printing in the AMD IOMMU driver a bit. The patches switch the driver to use pr_fmt() instead of inconsistently open coding the 'AMD-Vi' prefix in error messages. Furhter the Event log messages are fixed and contain no newline anymore. The addresses in the event log messages got rid of the leading 0s to make the messages shorter.
Regards,
Joerg
Joerg Roedel (3):
iommu/amd: Use pr_fmt()
iommu/amd: Fix line-break in error log reporting iommu/amd: Remove leading 0s in error log messages
drivers/iommu/amd_iommu.c | 62 ++++++++++++++++---------------- drivers/iommu/amd_iommu_init.c | 64 ++++++++++++++++++---------------- drivers/iommu/amd_iommu_v2.c | 2 ++ 3 files changed, 66 insertions(+), 62 deletions(-)
Signature · 1 line
2.17.1
Joerg Roedel
maintainerPATCH 1/3 iommu/amd: Use pr_fmt()
From: Joerg Roedel <joro-wPop2wlu/l7Mu/[email protected]>
Make use of pr_fmt instead of having the 'AMD-Vi' prefix added manually at every printk() call.
--- drivers/iommu/amd_iommu.c | 38 ++++++++++---------- drivers/iommu/amd_iommu_init.c | 64 ++++++++++++++++++---------------- drivers/iommu/amd_iommu_v2.c | 2 ++ 3 files changed, 55 insertions(+), 49 deletions(-)
drivers/iommu/amd_iommu.c +20 -18
@@ -17,6 +17,8 @@* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#define pr_fmt (fmt) "AMD-Vi: " fmt +#include <linux/ratelimit.h> #include <linux/pci.h> #include <linux/acpi.h>
@@ -279,7 +281,7 @@ static u16 get_alias(struct device *dev)return pci_alias; } - pr_info("AMD-Vi: Using IVRS reported alias %02x:%02x.%d " + pr_info("Using IVRS reported alias %02x:%02x.%d " "for device %s[%04x:%04x], kernel reported alias " "%02x:%02x.%d\n", PCI_BUS_NUM(ivrs_alias), PCI_SLOT(ivrs_alias), PCI_FUNC(ivrs_alias), dev_name(dev), pdev->vendor, pdev->device,
@@ -293,7 +295,7 @@ static u16 get_alias(struct device *dev)if (pci_alias == devid &&PCI_BUS_NUM (ivrs_alias) == pdev->bus->number) {pci_add_dma_alias (pdev, ivrs_alias &0xff ); -pr_info ("AMD-Vi: Added PCI DMA alias %02x.%d for %s\n" , +pr_info ("Added PCI DMA alias %02x.%d for %s\n" ,PCI_SLOT (ivrs_alias),PCI_FUNC (ivrs_alias),dev_name (dev)); }
@@ -513,7 +515,7 @@ static void dump_dte_entry(u16 devid)int i;for (i =0 ; i <4 ; ++i) -pr_err ("AMD-Vi: DTE[%d]: %016llx\n" , i, +pr_err ("DTE[%d]: %016llx\n" , i, amd_iommu_dev_table[devid].data[i]); }
@@ -523,7 +525,7 @@ static void dump_command(unsigned long phys_addr)int i;for (i =0 ; i <4 ; ++i) -pr_err ("AMD-Vi: CMD[%d]: %08x\n" , i, cmd->data[i]); +pr_err ("CMD[%d]: %08x\n" , i, cmd->data[i]); } static void amd_iommu_report_page_fault(u16 devid, u16 domain_id,
@@ -541,7 +543,7 @@ static void amd_iommu_report_page_fault(u16 devid, u16 domain_id,dev_err (&pdev->dev,"AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x%04x address=0x%016llx flags=0x%04x]\n" , domain_id, address, flags); }else if (printk_ratelimit ()) { -pr_err ("AMD-Vi: Event logged [IO_PAGE_FAULT device=%02x:%02x.%x domain=0x%04x address=0x%016llx flags=0x%04x]\n" , +pr_err ("Event logged [IO_PAGE_FAULT device=%02x:%02x.%x domain=0x%04x address=0x%016llx flags=0x%04x]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), domain_id, address, flags); }
@@ -568,7 +570,7 @@ static void iommu_print_event(struct amd_iommu *iommu, void *__evt)if (type ==0 ) {/* Did we hit the erratum? */ if (++count ==LOOP_TIMEOUT ) { -pr_err ("AMD-Vi: No event written to event log\n" ); +pr_err ("No event written to event log\n" );return ; }udelay (1 );
@@ -654,7 +656,7 @@ static void iommu_handle_ppr_entry(struct amd_iommu *iommu, u64 *raw)struct amd_iommu_fault fault;if (PPR_REQ_TYPE (raw[0 ]) !=PPR_REQ_FAULT ) { -pr_err_ratelimited ("AMD-Vi: Unknown PPR request received\n" ); +pr_err_ratelimited ("Unknown PPR request received\n" );return ; }
@@ -759,12 +761,12 @@ static void iommu_poll_ga_log(struct amd_iommu *iommu)if (!iommu_ga_log_notifier)break ; -pr_debug ("AMD-Vi: %s: devid=%#x, ga_tag=%#x\n" , +pr_debug ("%s: devid=%#x, ga_tag=%#x\n" , __func__,GA_DEVID (log_entry),GA_TAG (log_entry));if (iommu_ga_log_notifier (GA_TAG (log_entry)) !=0 ) -pr_err ("AMD-Vi: GA log notifier failed.\n" ); +pr_err ("GA log notifier failed.\n" );break ;default :break ;
@@ -789,18 +791,18 @@ irqreturn_t amd_iommu_int_thread(int irq, void *data) iommu->mmio_base + MMIO_STATUS_OFFSET);if (status &MMIO_STATUS_EVT_INT_MASK ) { -pr_devel ("AMD-Vi: Processing IOMMU Event Log\n" ); +pr_devel ("Processing IOMMU Event Log\n" );iommu_poll_events (iommu); }if (status &MMIO_STATUS_PPR_INT_MASK ) { -pr_devel ("AMD-Vi: Processing IOMMU PPR Log\n" ); +pr_devel ("Processing IOMMU PPR Log\n" );iommu_poll_ppr_log (iommu); }#ifdef CONFIG_IRQ_REMAP if (status &MMIO_STATUS_GALOG_INT_MASK ) { -pr_devel ("AMD-Vi: Processing IOMMU GA Log\n" ); +pr_devel ("Processing IOMMU GA Log\n" );iommu_poll_ga_log (iommu); }#endif
@@ -844,7 +846,7 @@ static int wait_on_sem(volatile u64 *sem) }if (i ==LOOP_TIMEOUT ) { -pr_alert ("AMD-Vi: Completion-Wait loop timed out\n" ); +pr_alert ("Completion-Wait loop timed out\n" );return -EIO ; }
@@ -1036,7 +1038,7 @@ static int __iommu_queue_command_sync(struct amd_iommu *iommu,/* Skip udelay() the first time around */ if (count++) {if (count ==LOOP_TIMEOUT ) { -pr_err ("AMD-Vi: Command buffer timeout\n" ); +pr_err ("Command buffer timeout\n" );return -EIO ; }
@@ -2790,9 +2792,9 @@ int __init amd_iommu_init_dma_ops(void) dma_ops = &dma_direct_ops;if (amd_iommu_unmap_flush) -pr_info ("AMD-Vi: IO/TLB flush on unmap enabled\n" ); +pr_info ("IO/TLB flush on unmap enabled\n" );else -pr_info ("AMD-Vi: Lazy IO/TLB flushing enabled\n" ); +pr_info ("Lazy IO/TLB flushing enabled\n" );return 0 ;
@@ -2897,7 +2899,7 @@ static struct iommu_domain *amd_iommu_domain_alloc(unsigned type)case IOMMU_DOMAIN_DMA : dma_domain =dma_ops_domain_alloc ();if (!dma_domain) { -pr_err ("AMD-Vi: Failed to allocate\n" ); +pr_err ("Failed to allocate\n" );return NULL ; } pdomain = &dma_domain->domain;
@@ -4318,7 +4320,7 @@ static int amd_ir_set_vcpu_affinity(struct irq_data *data, void *vcpu_info)* legacy mode. So, we force legacy mode instead. */ if (!AMD_IOMMU_GUEST_IR_VAPIC (amd_iommu_guest_ir)) { -pr_debug ("AMD-Vi: %s: Fall back to using intr legacy remap\n" , +pr_debug ("%s: Fall back to using intr legacy remap\n" , __func__); pi_data->is_guest_mode = false; }
drivers/iommu/amd_iommu_init.c +33 -31
229 lines not on this page · raw message
drivers/iommu/amd_iommu_v2.c +2 -0
@@ -16,6 +16,8 @@* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#define pr_fmt (fmt) "AMD-Vi: " fmt +#include <linux/mmu_notifier.h> #include <linux/amd-iommu.h> #include <linux/mm_types.h>
Signature · 1 line
2.17.1
Joerg Roedel
maintainerPATCH 2/3 iommu/amd: Fix line-break in error log reporting
In reply to Joerg RoedelFrom: Joerg Roedel <[email protected]>
With the switch to dev_err for reporting errors from the iommu log there was an unwanted newline introduced. The reason was that the reporting was done in multiple dev_err() calls, and dev_err adds a newline after every call.
Fix it by printing the log messages with only one dev_err() call.
--- drivers/iommu/amd_iommu.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-)
drivers/iommu/amd_iommu.c +10 -12
@@ -540,7 +540,7 @@ static void amd_iommu_report_page_fault(u16 devid, u16 domain_id, dev_data =get_dev_data (&pdev->dev);if (dev_data &&__ratelimit (&dev_data->rs)) { -dev_err (&pdev->dev,"AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x%04x address=0x%016llx flags=0x%04x]\n" , +dev_err (&pdev->dev,"Event logged [IO_PAGE_FAULT domain=0x%04x address=0x%016llx flags=0x%04x]\n" , domain_id, address, flags); }else if (printk_ratelimit ()) { pr_err("Event logged [IO_PAGE_FAULT device=%02x:%02x.%x domain=0x%04x address=0x%016llx flags=0x%04x]\n",
@@ -580,43 +580,41 @@ static void iommu_print_event(struct amd_iommu *iommu, void *__evt)if (type ==EVENT_TYPE_IO_FAULT ) {amd_iommu_report_page_fault (devid, pasid, address, flags);return ; - }else { -dev_err (dev,"AMD-Vi: Event logged [" ); }switch (type) {case EVENT_TYPE_ILL_DEV : -dev_err (dev,"ILLEGAL_DEV_TABLE_ENTRY device=%02x:%02x.%x pasid=0x%05x address=0x%016llx flags=0x%04x]\n" , +dev_err (dev,"Event logged [ILLEGAL_DEV_TABLE_ENTRY device=%02x:%02x.%x pasid=0x%05x address=0x%016llx flags=0x%04x]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), pasid, address, flags);dump_dte_entry (devid);break ;case EVENT_TYPE_DEV_TAB_ERR : -dev_err (dev,"DEV_TAB_HARDWARE_ERROR device=%02x:%02x.%x " +dev_err (dev,"Event logged [DEV_TAB_HARDWARE_ERROR device=%02x:%02x.%x " "address=0x%016llx flags=0x%04x]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), address, flags);break ;case EVENT_TYPE_PAGE_TAB_ERR : -dev_err (dev,"PAGE_TAB_HARDWARE_ERROR device=%02x:%02x.%x domain=0x%04x address=0x%016llx flags=0x%04x]\n" , +dev_err (dev,"Event logged [PAGE_TAB_HARDWARE_ERROR device=%02x:%02x.%x domain=0x%04x address=0x%016llx flags=0x%04x]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), pasid, address, flags);break ;case EVENT_TYPE_ILL_CMD : -dev_err (dev,"ILLEGAL_COMMAND_ERROR address=0x%016llx]\n" , address); +dev_err (dev,"Event logged [ILLEGAL_COMMAND_ERROR address=0x%016llx]\n" , address);dump_command (address);break ;case EVENT_TYPE_CMD_HARD_ERR : -dev_err (dev,"COMMAND_HARDWARE_ERROR address=0x%016llx flags=0x%04x]\n" , +dev_err (dev,"Event logged [COMMAND_HARDWARE_ERROR address=0x%016llx flags=0x%04x]\n" , address, flags);break ;case EVENT_TYPE_IOTLB_INV_TO : -dev_err (dev,"IOTLB_INV_TIMEOUT device=%02x:%02x.%x address=0x%016llx]\n" , +dev_err (dev,"Event logged [IOTLB_INV_TIMEOUT device=%02x:%02x.%x address=0x%016llx]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), address);break ;case EVENT_TYPE_INV_DEV_REQ : -dev_err (dev,"INVALID_DEVICE_REQUEST device=%02x:%02x.%x pasid=0x%05x address=0x%016llx flags=0x%04x]\n" , +dev_err (dev,"Event logged [INVALID_DEVICE_REQUEST device=%02x:%02x.%x pasid=0x%05x address=0x%016llx flags=0x%04x]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), pasid, address, flags);break ;
@@ -624,12 +622,12 @@ static void iommu_print_event(struct amd_iommu *iommu, void *__evt) pasid = ((event[0 ] >>16 ) &0xFFFF ) | ((event[1 ] <<6 ) &0xF0000 ); tag = event[1 ] &0x03FF ; -dev_err (dev,"INVALID_PPR_REQUEST device=%02x:%02x.%x pasid=0x%05x address=0x%016llx flags=0x%04x]\n" , +dev_err (dev,"Event logged [INVALID_PPR_REQUEST device=%02x:%02x.%x pasid=0x%05x address=0x%016llx flags=0x%04x]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), pasid, address, flags);break ;default : -dev_err (dev,"UNKNOWN event[0]=0x%08x event[1]=0x%08x event[2]=0x%08x event[3]=0x%08x\n" , +dev_err (dev,"Event logged [UNKNOWN event[0]=0x%08x event[1]=0x%08x event[2]=0x%08x event[3]=0x%08x\n" , event[0 ], event[1 ], event[2 ], event[3 ]); }
Signature · 1 line
2.17.1
Joerg Roedel
maintainerPATCH 3/3 iommu/amd: Remove leading 0s in error log messages
In reply to Joerg RoedelFrom: Joerg Roedel <joro-wPop2wlu/l7Mu/[email protected]>
Remove the leading 0s in the address field of the error log messages.
--- drivers/iommu/amd_iommu.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/iommu/amd_iommu.c +10 -10
@@ -540,10 +540,10 @@ static void amd_iommu_report_page_fault(u16 devid, u16 domain_id, dev_data =get_dev_data (&pdev->dev);if (dev_data &&__ratelimit (&dev_data->rs)) { -dev_err (&pdev->dev,"Event logged [IO_PAGE_FAULT domain=0x%04x address=0x%016llx flags=0x%04x]\n" , +dev_err (&pdev->dev,"Event logged [IO_PAGE_FAULT domain=0x%04x address=0x%llx flags=0x%04x]\n" , domain_id, address, flags); }else if (printk_ratelimit ()) { -pr_err ("Event logged [IO_PAGE_FAULT device=%02x:%02x.%x domain=0x%04x address=0x%016llx flags=0x%04x]\n" , +pr_err ("Event logged [IO_PAGE_FAULT device=%02x:%02x.%x domain=0x%04x address=0x%llx flags=0x%04x]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), domain_id, address, flags); }
@@ -584,37 +584,37 @@ static void iommu_print_event(struct amd_iommu *iommu, void *__evt)switch (type) {case EVENT_TYPE_ILL_DEV : -dev_err (dev,"Event logged [ILLEGAL_DEV_TABLE_ENTRY device=%02x:%02x.%x pasid=0x%05x address=0x%016llx flags=0x%04x]\n" , +dev_err (dev,"Event logged [ILLEGAL_DEV_TABLE_ENTRY device=%02x:%02x.%x pasid=0x%05x address=0x%llx flags=0x%04x]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), pasid, address, flags);dump_dte_entry (devid);break ;case EVENT_TYPE_DEV_TAB_ERR :dev_err (dev,"Event logged [DEV_TAB_HARDWARE_ERROR device=%02x:%02x.%x " -"address=0x%016llx flags=0x%04x]\n" , +"address=0x%llx flags=0x%04x]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), address, flags);break ;case EVENT_TYPE_PAGE_TAB_ERR : -dev_err (dev,"Event logged [PAGE_TAB_HARDWARE_ERROR device=%02x:%02x.%x domain=0x%04x address=0x%016llx flags=0x%04x]\n" , +dev_err (dev,"Event logged [PAGE_TAB_HARDWARE_ERROR device=%02x:%02x.%x domain=0x%04x address=0x%llx flags=0x%04x]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), pasid, address, flags);break ;case EVENT_TYPE_ILL_CMD : -dev_err (dev,"Event logged [ILLEGAL_COMMAND_ERROR address=0x%016llx]\n" , address); +dev_err (dev,"Event logged [ILLEGAL_COMMAND_ERROR address=0x%llx]\n" , address);dump_command (address);break ;case EVENT_TYPE_CMD_HARD_ERR : -dev_err (dev,"Event logged [COMMAND_HARDWARE_ERROR address=0x%016llx flags=0x%04x]\n" , +dev_err (dev,"Event logged [COMMAND_HARDWARE_ERROR address=0x%llx flags=0x%04x]\n" , address, flags);break ;case EVENT_TYPE_IOTLB_INV_TO : -dev_err (dev,"Event logged [IOTLB_INV_TIMEOUT device=%02x:%02x.%x address=0x%016llx]\n" , +dev_err (dev,"Event logged [IOTLB_INV_TIMEOUT device=%02x:%02x.%x address=0x%llx]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), address);break ;case EVENT_TYPE_INV_DEV_REQ : -dev_err (dev,"Event logged [INVALID_DEVICE_REQUEST device=%02x:%02x.%x pasid=0x%05x address=0x%016llx flags=0x%04x]\n" , +dev_err (dev,"Event logged [INVALID_DEVICE_REQUEST device=%02x:%02x.%x pasid=0x%05x address=0x%llx flags=0x%04x]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), pasid, address, flags);break ;
@@ -622,7 +622,7 @@ static void iommu_print_event(struct amd_iommu *iommu, void *__evt) pasid = ((event[0 ] >>16 ) &0xFFFF ) | ((event[1 ] <<6 ) &0xF0000 ); tag = event[1 ] &0x03FF ; -dev_err (dev,"Event logged [INVALID_PPR_REQUEST device=%02x:%02x.%x pasid=0x%05x address=0x%016llx flags=0x%04x]\n" , +dev_err (dev,"Event logged [INVALID_PPR_REQUEST device=%02x:%02x.%x pasid=0x%05x address=0x%llx flags=0x%04x]\n" ,PCI_BUS_NUM (devid),PCI_SLOT (devid),PCI_FUNC (devid), pasid, address, flags);break ;
Signature · 1 line
2.17.1